Met het handige en lichte menu "Rofi" bouw je zelf een handige starter om zeer efficiënt bestanden te zoeken en te openen. Met een druk op een sneltoets, bijvoorbeeld Ctrl+spatie, verschijnt het rofi menu.
Je tikt delen van de bestandsnaam in, en de keuzes beperken zich tot alleen de bestanden die aan je criterium voldoen. Je kiest een bestand met de pijltjestoets, of drukt meteen op de <enter> toets om het opgelichte bestand in de bijhorende toepassing op te starten. Handig is dat rofi in de ganse padnaam zoekt, en dat de volgorde van je zoektermen geen rol speelt. Je kan zo systematisch je lijst inkorten.
Dat opzetten houdt een beetje knutselwerk op zondagnamiddag in. rofi is flexibel en wordt heel veel gebruikt door linux gebruikers die graag zelf hun systeem volledig naar hun hand willen zetten, en daarom enkel lichte windowmanagers gebruiken zoals i3wm en openbox. Het scheelt al veel dat je nu zelf het "hoe" niet meer moet opzoeken
.
1)
Installatie: je hebt (enkel) rofi nodig. Installeer het via synaptic of via de terminal
sudo apt install rofi
2)
Zoekfunctie voor rofi aanmaken:We maken onze eigen "modus" voor rofi, een script dat rofi in staat stelt een lijst met je bestanden te tonen. Dat tekstbestand mag in principe eerder waar staan, maar willen we het netjes plaatsen, dan kan dat bijvoorbeeld in een folder .local/share/rofi.
Open je favoriete texteditor (bijvoorbeeld nautilus):
gedit ~/.local/share/rofi/findfiles.sh
en plak daarin onderstaand script
#!/bin/bash
DOCUMENTS=Documenten # Vervang "Documenten" door "Documents" als je op een Engelstalige Ubuntu werkt
CACHED=Y # Vervang Y door N als je wil dat de bestandslijst telkens aangemaakt wordt bij opstart - vertraagt de werking
if [[ -z "$@" ]]; then
if [ $CACHED == N ]; then
find ~/$DOCUMENTS -iname '*' -type f | sed "s|^$HOME/$DOCUMENTS/||" | grep -v -e '/\.' -e '~$' -e '\.bk$' -e '\.bak$'
else
cat ~/.local/share/rofi/findfiles.cache
fi
else
coproc ( xdg-open "$HOME"/$DOCUMENTS/"$@" )
exec 1>&-
exit;
fi
# Start rofi op met
# rofi -show find -modi find:~/.local/share/rofi/findfiles.sh
# Om via Ctrl+Tab te kunnen schakelen naar een programmamenu:
# rofi -modi drun,find:~/.local/share/rofi/findfiles.sh -show find
#
# Geïnspireerd op rofi-finder, https://github.com/carnager/rofi-scripts/tree/master/rofi-finder. Dat script begint met een leeg scherm,
# laat de gebruiker een zoekterm ingeven, en gebruikt dan find om de gezochte bestanden te tonen. Mijn aangepaste script
# toont rofi met alle bestanden geladen, zodat je zoektermen de lijst steeds meer inperken. Vlugger en handiger!
#
# Vanadium van Ubuntu nl.
Maak in de tweede en derde lijn indien nodig aanpassingen. Op een Nederlandstalig systeem heb je de folder Documenten. Wijzig naar "Documents" op een Engelstalig systeem.
Vervang in de derde lijn Y door N als je wil dat het script telkens bij aanroep een nieuwe bestandslijst aanmaakt. Dit heeft al voordeel dat ook de allernieuwste bestanden gevonden worden, maar vertraagt de opstart (enkele ms op een ssd, maar mogelijk enkele seconden op een oudere PC met klassieke harde schijf).
Maak nu het script uitvoerbaar:
chmod +x ~/.local/share/rofi/findfiles.sh
3)
Bestandslijst maken: Plaats volgend script in een folder "bin" in je home folder. Dit script maakt de lijst van bestanden op je harde schijf aan, die in het menu getoond wordt. Als je hierboven CACHE op N (niet) hebt gezet, dan is deze stap niet nodig.
gedit ~/bin/roficache
Plak hierin volgende code:
#!/bin/bash
DOCUMENTS=Documenten # Vervang "Documenten" door "Documents" als je op een Engelstalige Ubuntu werkt
ROFIFOLDER=~/.local/share/rofi
find ~/$DOCUMENTS -iname '*' -type f | sed "s|^$HOME/$DOCUMENTS/||" | grep -v -e '/\.' -e '~$' -e '\.bk$' -e '\.bak$' > $ROFIFOLDER/findfiles.cache
Maak uitvoerbaar:
chmod +x ~/bin/roficache
4)
Testen:Probeer eerst: voer het volgende commando uit in de terminal: rofi zou moeten verschijnen. Zoek een bestand door een deel van de naam te typen, en start het op met de enter toets.
rofi -show find -modi find:~/.local/share/rofi/findfiles.sh
5)
Binden aan een sneltoets.
Werkt het goed, wijs dan het commando toe aan een sneltoets. Dan roep je met één toetsencombinatie het menu op om razendsnel een bestand te openen.
In standaard Ubuntu 17.10 en 18.04 (gnome shell) gaat dat als volgt: Instellingen - Apparatuur - Toetsenbord. Ga helemaal onderin de lijst sneltoeten en klik op het + tekentje. Een dialoog verschijnt: Vul de naam in: dat kan eender wat zijn, bijvoorbeeld "Rofi bestandszoeker". Onder commando voeg je het commando toe waarmee je rofi wil opstarten: "rofi -show find -modi find:~/.local/share/rofi/findfiles.sh". Klik dan op het veldje "sneltoets": druk nu op de toetsencombinatie die je hieraan wil toewijzen, bijvoorbeeld Ctrl+Enter. Sluit de dialoog. Het menu zal nu verschijnen van zodra je de gekozen sneltoets indrukt.
6)
Regelmatig de cache bijwerkenHet bestand met de bestandsnamen moet regelmatig worden bijgewerkt. Je kan dat handmatig doen door aan de terminal eens "roficache" in te geven, maar je laat dat beter ook automatisch gebeuren, bijvoorbeeld door het script toe te voegen aan je opstartbestanden. Beter nog is een cronjob aan te maken, zodat het script automatisch op regelmatige tijdstippen wordt uitgevoerd.
crontab -e
De eerste keer dat je dit commando uitvoet, wordt gevraagt welke editor je wil gebruiken. Kies als je het niet zeker weet, nano: dit is de eenvoudigste editor.
Voeg op het einde van het bestand een lijn toe die definieert hoe vaak je het script wil laten lopen
0 * * * * /home/$USER/bin/roficache
Belangrijk: vervang hier $USER door je login naam! Variabelen werken niet in een crontab bestand.
Hier wordt roficache om het uur (op h:00) uitgevoerd. Wil je bijvoorbeeld dat het commando pas elke twee uur wordt uitgevoerd, dan maak je ervan: 0 */2 * * * /home/$USER/bin/roficache
En verder:
- Je kan het uiterlijk van rofi aanpassen. Om van thema te veranderen kan je gebruik maken van rofi-theme-selector. Je kan ook je eigen thema maken. Ook hoe rofi verschijnt, centraal op je scherm, andere breedte of hoogte, of als een paneel dat links, rechts of van bovenaf te voren komnt, kan je aanpassen.
- Het script werkt enkel voor de bestanden onder je Documenten folder. Het kan aangepast worden om gans je home folder te doorzoeken. Een andere mogelijkheid is met verschillende scripts te werken, één wat Documenten opzoekt, een ander bijvoorbeeld "Muziek". Dan maak je twee sneltoetsen aan. Rofi kan ook zo ingesteld worden, dat het de twee scripts tegelijk inlaad. Met Ctrl+tab ga je dan van de éne naar de andere lijst.
- Hier wordt het script opgezet als een "rofi-modus". Dat houdt in dat je het menu kan combineren met andere menus, bijvoorbeeld de ingebouwde programmalauncher (drun). Zo kan je rofi starten met het commando "rofi -modi drun,find:~/.local/share/rofi/findfiles.sh -show find". Rofi start nu net als voorheen met de lijst van je bestanden, maar met Ctrl+tab schakel je naar een menu om programma's op te starten. Zelf heb ik het menu zo opgezet met een tweede script, dat een druk op de Ctrl+tab toets alle folders toont. Handig om heel vlug een specifieke folder te openen. De zoekterm die je ingegeven had, blijft behouden, zodat onmiddellijk enkel de relevante folders getoont worden.
Je ziet, de sky is the limit met rofi.