Rofi Wallpaper-Auswahl

Linux

Für die Auswahl von Hintergrundbildern für meinen Linux-Desktop verwende ich mittlerweile das Tool rofi (davatorium.github.io/rofi), das vor allem als Anwendungsstarter unter Linux bekannt sein dürfte. Als dmenu-Ersatz kann rofi über ein Shell-Skript ein Listen-Auswahlfenster erzeugen, der die Auswahl aus einer Liste von Elementen zurückliefert.

Vorteile von Rofi

  • Rofi ist in den meisten Linux-Distributionen enthalten
  • Rofi ist unter X11 und Wayland1 einsetzbar
  • Rofi ist vielseitig und flexibel einsetzbar
  • Suchfunktion und Unterstützung von Thumbnails

Das Setup

Die Hintergrundbilder befinden sich in einem einzelnen Verzeichnis, zum Beispiel Bilder/Wallpapers im Benutzer-Ordner. Abgesehen von rofi benötigen wir ein Programm, welches die ausgewählte Bilddatei als Hintergrund setzt. Für X11 bietet sich feh an.

Wir lassen uns den Inhalt des Verzeichnisses WPDIR auflisten, übergeben die Liste der Dateinamen an rofi im dmenu-Modus. Der Anwender wählt dann über den Rofi-Auswahldialog ein Bild aus, das wir als Rückgabewert $wallpaper von Rofi erhalten. Die zurückgelieferte Bilddatei setzen wir dann über feh als Hintergrundbild:

#!/bin/bash

WPDIR=~/Bilder/Wallpapers

wallpaper=$(for a in "$WPDIR"/*.*; do
    echo -en "$(basename -- "$a")\n" ; done |
    rofi -dmenu -show-icons -p "Select a wallpaper" )

if [[ $wallpaper == "" ]]; then
    exit
else
    feh --bg-scale "$WPDIR/$wallpaper"
fi

Das Ergebnis sieht dann zum Beispiel so aus:

Abbildung 1: Rofi Auswahldialog

Abbildung 1: Rofi Auswahldialog

Vorschaubilder

Mit der ersten Version des Skriptes können wir eine Bilddatei auswählen und als Hintergrundbild setzen. Was noch fehlt, ist die Anzeige von Vorschaubildern der einzelnen Bilddateien im Auswahldialog. Rofi kann über -show-icons nicht nur Symbole von Applikationen anzeigen, sondern auch mit Bilddateien umgehen.

Die Kombination aus \x1f (ASCII Unit Separator) und dem Präfix thumbnail:// in rofi ermöglicht es, Thumbnail-Vorschaubilder für beliebte Dateitypen anzuzeigen. Dabei wird das Format Name\x00icon\x1fthumbnail://Pfad/zur/Datei verwendet, um rofi anzuweisen, ein passendes XDG-kompatibles Thumbnailer-Programm aufzurufen oder ein bereits im Cache gespeichertes Bild zu laden. Der angepasste rofi-Aufruf sieht dann wie folgt aus:

wallpaper=$(for a in "$WPDIR"/*.*; do
  echo -en "$(basename -- "$a")\0icon\x1fthumbnail://$a\n" ; done |
  rofi -dmenu -theme preview -show-icons -p "Select a wallpaper" )

Ähnlich zu den Anwendungssymbolen werden kleine Vorschaubilder vor den Dateinamen angezeigt:

Abbildung 2: Rofi Auswahldialog mit Vorschaubildern

Abbildung 2: Rofi Auswahldialog mit Vorschaubildern

Layout und Thema

Der letzte Schritt besteht darin, den Auswahldialog von rofi anzupassen. Ein Startpunkt ist die Verwendung des mitgelieferten fullscreen-preview.rasi. Rasi-Dateien dienen zur Konfiguration und zum Theming von rofi und können beim Aufruf über den Parameter -theme übergeben werden.

Das fertige Skript sieht dann so aus:

#!/bin/bash

WPDIR=~/Bilder/Wallpapers

wallpaper=$(for a in "$WPDIR"/*.*; do
  echo -en "$(basename -- "$a")\0icon\x1fthumbnail://$a\n" ; done |
  rofi -dmenu -show-icons -p "Select a wallpaper" -theme fullscreen-preview)

if [[ $wallpaper == "" ]]; then
  exit
else
  echo "feh --bg-scale $WPDIR/$wallpaper" > "~/.fehbg"
  feh --bg-scale "$WPDIR/$wallpaper"
fi

Die Auswahl wird in der Datei ~/.fehbg gespeichert. Über einen Aufruf der Datei kann das letzte gewählte Hintergrundbild-Auswahl wieder gesetzt werden.

Weitere Beispiele und Inspirationen für rasi-Dateien finden sich auf Plattformen wie GitHub, wo Nutzer Konfigurationen wie config.rasi und diverse Theme-Varianten zur Verfügung stellen.

Abbildung 3: Rofi mit fullscreen-preview und Vorschaubildern

Abbildung 3: Rofi mit fullscreen-preview und Vorschaubildern

Referenzen


  1. Wayland-Unterstützung seit 2025 Version 2.0.0 ↩︎