Avatar

Hund

Linux, textfiler & minimalism
5 Mars 2020

Rofi - En programstartare med många funktioner

Rofi är enklast förklarat en så kallad programstartare, eller “launcher” som det heter på engelska. En programstartare gör just vad det låter som, den startar program åt dig. Man brukar binda sin programstartare till en tangentbordsgenväg, jag har exempelvis Alt+P. Och sedan söker jag bara efter det program jag vill starta, ofta räcker det med att skriva en eller två bokstäver för att komma åt just det program jag vill starta.

Utöver att den kan starta program och köra exekverbara filer kan Rofi också visa och växla mellan öppna fönster, samt köra egna scripts, vilket kan exempelvis vara att man kan lista sina virtuella maskiner för VirtualBox och låta starta dem direkt via Rofi.

Introduktion till Rofi

Rofi är till utseendet en enkel och nästintill en textbaserad programstartare. Vad man tycker om det går det givetvis att ha olika åsikter om, personligen gillar jag det då det låter mig fokusera på det jag ska göra.

Det som (enligt mig) gör Rofi extra intressant och att det också är mitt val av programstartare sedan flera år tillbaka, är att den har stöd för egna scripts och att man har ganska stor frihet när det kommer till att förändra utseendet. Här hittar du deras förråd med olika teman om du vill se vad man kan göra med utseendet.

Utöver det har Rofi en del annan funktionalitet att bjuda på:

  • Helt konfigurationsbar tangentbordsbaserad navigation.
  • Skriva för att filtrera (Ordningen av orden behöver inte vara i rätt ordning).
  • Skiftlägeskänslighet (Valbart).
  • Stöd för fuzzy-, regex-, och glob-matchning.
  • Stöd för UTF-8.
    • Internationellt tangentbordsstöd (Exempelvis “`e” blir “è”).
  • Stöd för vektoriserad grafik och typsnittsrendering via Pango.
  • Inbyggda lägen för:
    • Fönsterväxling
      • EWMH-kompatibel fönsterhantering
    • Programstartning
    • SSH-sessioner
  • Kombinerat läge - Tillåter att flera olika lägen att sammanfogas till en lista.
  • Historiebaserad lista - Senaste 25 valen är sorterad efter antalet användningar (valbart)
  • Levenshteinavstånd-ordning av träffar (Valbart).
  • Enkelt att bygga på med ny funktionalitet via egna script.
  • Stöd för teman.

Jag kommer inte att gå igenom allting, bara det som jag personligen finner mest intressant. Om du vill läsa mer om Rofi finns det en manual och en wiki att tillgå.

Hur man kommer igång

Rofi har totalt fyra olika lägen; run, window, ssh och “script-läget”. För att köra Rofi använder man sig av kommandot:

$ rofi -show <läget>

Fönsterläget

Med Rofi kan man lista och växla mellan öppna fönster. Det bilden nedandför visar är vilket skrivbord fönstret finns på (eller klient som man brukar säga), vad klienten heter och vilken titel den har. För att hoppa till en klient kan man antingen tabba eller bara skriva några bokstäver för att filtrera ut andra klienter.

Script-läget

Script-läget är lite mer komplicerat och mitt kommando för att lista och köra mina script ser ut som följande:

menu=$(find -L $HOME/Scripts/rofi -printf '%P\n' | sort | tail -n +2 | rofi -dmenu -i -p "Scripts: "); $HOME/Scripts/rofi/"${menu}"

Vilket ger mig en meny som ser ut som följande:

Det ska tilläggas att jag har lagt det kommandot i ett script som jag kallar via i3 eftersom att jag inte har fått det att fungera genom att köra kommandot direkt via konfigurationsfilen. Mitt kommando för att starta script-läget är Alt+Shift+P.

Det finns många script att tillgå och man hittar många länkar till olika script på deras wiki-sida. Där hittar du script för hur man kan allt ifrån styra mpd till att söka och infoga emojis i textfält.

Mina script

Jag tänkte först inkludera scripts som jag använder mig av, men insåg snabbt att inlägget skulle bli onödigt långt. Jag har dock redan skrivit om hur man använder Rofi för att visa och starta levande strömmar från Twitch i inlägget “Visa och öppna Twitch-streams med Rofi”. Om du läser det här inlägget längre fram i tiden är det möjligt att det finns fler inlägg under taggen #rofi. Jag har nämligen tänkt att skapa separata inlägg för mina scripts.

Inställningar

Det finns massvis med inställningar Rofi och om man inte vill ange alla inställningar via flaggor går det bra att placera dem i antingen filen ~/.Xresources eller (på senare tid) i filen ~/.config/rofi/config.rasi. Den sistnämnda filen är ett nyare påhitt och fanns inte när jag började använda Rofi. Mina inställningar finns därför i filen ~/.Xresources, en fil som också huserar mina inställningar för min terminalemulator URxvt.

Här är mina inställningar:

! Font
rofi.font: xos4Terminus 12
! Border width
rofi.bw: 3
! Where to place Rofi
rofi.m: -4

rofi.color-enabled: true
rofi.color-window: #002b36, #255662, #0d4350
rofi.color-normal: #002b36, #839496, #002b36, #0d4350, #839496
rofi.color-active: #0d4350, #2aa198, #002b36, #839496, #002B36
rofi.color-urgent: #a83838, #ffffff, #eee8d5, #a83838, #ffffff

Rofi har som sagt många inställningsmöjligheter, du kan exempelvis välja om du alltid ska visa Rofi på en skärm eller kanske på den skärm som har en aktiv klient eller där musen råkar befinna sig. All dokumentation hittar du på deras wiki-sida på GitHub.

Och nu har du fått en liten introduktion till Rofi, vad det är och vilka möjligheter som finns. Jag hoppas att du kommer att gilla Rofi lika mycket som jag gör!

Etiketter: Rofi | Program | Programstartare

Återkoppling

Min blogg saknar för tillfället ett kommentarssystem, om du vill lämna återkoppling, diskutera och/eller har några frågor går det bra att göra det via e-post, XMPP, IRC, Matrix och Mastodon.