Imv: Unterschied zwischen den Versionen
Dirk (Diskussion | Beiträge) Die Seite wurde neu angelegt: „{{SEITENTITEL:imv}}{{inuse|~~~}} imv ist ein sehr minimalistisch gehaltener Bildbetrachter, der sich konzeptionell primär über die Befehlszeile bedienen lässt, und sich als Tool im Umfeld von Tiling-WMs positioniert, aber selbstverständlich überall eingesetzt werden kann. {{installation|imv}} Mittels {{ic|imv}} wir der Bildbetrachter gestartet. Optional kann man mit {{ic|imv-wayland}} bzw. {{ic|imv…“ |
Dirk (Diskussion | Beiträge) |
||
(47 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{SEITENTITEL:imv | {{SEITENTITEL:imv}} | ||
imv ist ein sehr minimalistisch gehaltener Bildbetrachter, der sich konzeptionell primär über die [[:kategorie:Shell|Befehlszeile]] bedienen lässt, und sich als Tool im Umfeld von | imv ist ein sehr minimalistisch gehaltener Bildbetrachter, der sich konzeptionell primär über die [[:kategorie:Shell|Befehlszeile]] bedienen lässt, und sich als Tool im Umfeld von Tiling-WMs positioniert, aber selbstverständlich überall eingesetzt werden kann. imv unterstützt neben ''klassischen Rastergrafiken'' auch SVG-Dateien und animierte GIFs, sowie Bilddateien mit Alphakanal (Transparenz). | ||
{{installation|imv}} | {{installation|imv}} | ||
Mittels {{ic|imv}} wir der Bildbetrachter gestartet. Optional kann man mit {{ic|imv-wayland}} bzw. {{ic|imv-x11}} explizit die gewünschte Version starten. {{ic|imv-msg}} dient zur IPC-Steuerung. Mittels {{ic|imv-dir}} kann man imv im Verzeichnismodus starten. | Mittels {{ic|imv}} wir der Bildbetrachter gestartet. Optional kann man mit {{ic|imv-wayland}} bzw. {{ic|imv-x11}} explizit die gewünschte Version starten. {{ic|imv-msg}} dient zur {{Wikipedia|Interprozesskommunikation|IPC-Steuerung}}. Mittels {{ic|imv-dir}} kann man imv im Verzeichnismodus starten. | ||
== Verwendung und Konfiguration == | == Verwendung und Konfiguration == | ||
Beim starten prüft imv in dieser Reihenfolge ab, ob die Datei existiert, und lädt bei | Beim starten prüft imv in dieser Reihenfolge ab, ob die Datei existiert, und lädt bei Vorhandensein aus dieser die Konfiguration. | ||
* {{ic|$XDG_CONFIG_HOME/imv/config}} | * {{ic|$XDG_CONFIG_HOME/imv/config}} | ||
Zeile 16: | Zeile 16: | ||
* {{ic|/etc/imv_config}} | * {{ic|/etc/imv_config}} | ||
Zudem kann imv beim Starten mittels des beliebig oft wiederholbaren Parameters {{ic|-c}} in der angegebenen | Zudem kann imv beim Starten mittels des beliebig oft wiederholbaren Parameters {{ic|-c}} in der angegebenen Reihenfolge weitere Konfigurationsoptionen („Commands“) übergeben werden, die nach dem Laden der gefundenen Konfigurationsdatei angewendet werden. | ||
=== Bilder anzeigen === | |||
imv liest Bildpfade von der [[Umleitungen#Eingabeumleitung|Standardeingabe]]. Bei Verwendung von {{ic|imv-dir}} werden automatisch alle weiteren Bilder im Pfad des übergebenen Bilddateinamens geladen. | |||
imv bildname.png | |||
echo bildname.png | imv | |||
imv {{taste|enter}} bildname.png | |||
Dies führt alles gleichermaßen dazu, dass die Bilddatei {{ic|bildname.png}} angezeigt wird. Die letzte Methode erlaubt zudem, einfach weitere Pfade einzutippen, die Bilder werden dann in der aktuellen Instanz von imv eingereiht. | |||
Zudem können mittels {{ic|imv-msg}} (siehe Abschnitt [[#Fernsteuerung_mittels_IPC|Fernsteuerung mittels IPC]]) ebenfalls Bilder an die jeweilige imv-Isntanz übergeben werden. | |||
imv-msg 11361 open bildname.png | |||
Es können natürlich auch über die Befehlszeile ({{taste|doppelpunkt}}) per {{ic|open bildname.png}} Bilder geladen werden. | |||
Allen genannten Methoden kann zudem ein Verzeichnis übergeben werden, woraus dann alle Bilder geladen werden. | |||
=== Fensterdekorationen aktivieren === | |||
Aufgrund seiner Positionierung im Umfeld von Tiling-WMs ist die Fensterdekoration von imv standardmäßig deaktiviert. Dies liegt darin begründet, dass die meisten Tiling-WMs entweder genrell keine Fensterdekorationen anzeigen, oder aber selbständig eigene Lösungen verwenden, und die Konfiguration von Programmen diesbezüglich sowieso ignorieren. | |||
Will man Fensterdekorationen haben, so muss man diese explizit in der Konfiguration des [[:Kategorie:Compositor|Compositors]] oder [[:Kategorie:Fenstermanager|Fenstermanagers]] aktivieren. imv lässt sich sowohl unter [[Wayland]] als auch unter [[X]] über die ID, bzw. Fensterklasse {{ic|imv}} konfigurieren. | |||
Bei Verwendung von [[labwc]] (Wayland) kann man zum Beispiel diese Fensterregel benutzen. Dadurch wird für alle imv-Fenster der Status der Fensterdekoration umgeschaltet. | |||
<windowrules> | |||
<windowRule identifier="imv"> | |||
<action name="ToggleDecorations" /> | |||
</windowRule> | |||
</windowrules> | |||
Bei Nutzung von [[Openbox]] (X11) kann man die Dekoration ebenfalls umschalten. Auch hier gilt dies dann für alle Fenster. | |||
<application class="imv"> | |||
<decor>yes</decor> | |||
</application> | |||
Es sei auf die Konfiguration der Compositoren oder Fenstermanager verwiesen. | |||
=== Tastenkombinationen === | |||
imv verfügt standardmäßig über diverse Tastenkombinationen, die sich grob an den [[Vim]]-Tastenkombinationen orientieren. | |||
* {{taste|G}}, {{taste|G}} springt bei Ansicht merherer Bilder zum ersten Bild | |||
* {{taste|Shift}} + {{taste|G}} springt bei Ansicht merherer Bilder zum letzten Bild | |||
* {{taste|X}} schließt das Aktuelle Bild (aber nicht imv) | |||
* {{taste|Q}} schließt imv und damit alle geöffneten Bilder | |||
* {{taste|rauf}}/{{taste|runter}} zoomt in das Bild hinein, bzw. wieder heraus | |||
* {{taste|H}}/{{taste|J}}/{{taste|K}}/{{taste|L}} verschiebt ein Bild in die jeweilige Richtung | |||
* {{taste|doppelpunkt}} aktiviert die Befehlseingabezeile | |||
Viele weitere Tastenkombinationen lassen sich in der [[Manpage]] nachlesen. | |||
In der Konfiguration kann man im Abschnitt {{ic|[binds]}} eigene Tastenkombinationen anlegen. | |||
{{hc|1=~/.config/imv/config|2= | |||
[binds] | |||
<KP_Add> = zoom 10 | |||
<KP_Substract> = zoom -10 | |||
}} | |||
Dies fügt Zoom in 10-Prozent-Schritten über die Tasten {{taste|plus}} und {{taste|minus}} auf dem Nummernblock hinzu. | |||
Will man die Standardtastenkombinationen nicht benutzen, so kann man dies ebenfalls konfigurieren | |||
{{hc|1=~/.config/imv/config|2= | |||
[options] | |||
suppress_default_binds = true | |||
}} | |||
Dadurch werden die meisten Standard-Tasten(kombinationen) deaktiviert. | |||
=== Informationsoverlay anpassen === | |||
Mittels {{taste|D}} lässt sich ein einfaches Informationsoverlay anzeigen, dass einige Details zum aktuell angezeigten Bild ausgeben kann. Da das Overlay das einzige GUI-Element vom imv ist, lässt es sich umfangreich mittels mehrerer Konfigurationsoption anpassen. | |||
{{hc|1=~/.config/imv/config|2= | |||
overlay = false # Overlay beim starten anzeigen | |||
overlay_font = 'Monospace:24' # Schritart des Overlays | |||
overlay_text = '...' # Overlaytext mit Variablen | |||
overlay_text_color = ffffff # Textfarbe | |||
overlay_text_alpha = ff # Transparenz des Textes | |||
overlay_background_color = 000000 # Hintergrundfarbe | |||
overlay_background_alpha = c3 # Transparenz des Hintergrundes | |||
overlay_position_bottom = false # Overlay unten statt oben anzeigen | |||
}} | |||
[[Datei:Imv overlay example.png|thumbnail|Das im Beispiel konfigurierte Overlay zeigt die Informationen eines Bildes an.]] | |||
Der {{ic|overlay_text}} ist ''shell expanded'', das bedeutet, dass die gängigen Möglichkeiten einer Shell benutzt werden können, die umfasst jegliche Variablen und Subshells, sowie alle von imv für Scripte bereitgestellten Umgebungsvariablen. Zeilenumbrüche mittels {{ic|\n}} sind nicht direkt möglich, hier kann man aber mittels {{ic|$(echo -e oben\nunten)}} einen Zeilenumbruch zwischen {{ic|oben}} und {{ic|unten}} erreichen. Die folgende Konfiguration verdeutlicht dies. | |||
{{hc|1=~/.config/imv/config|2= | |||
overlay_text = $(echo -e "Bildindex: ${imv_current_index}\nBilder total: ${imv_file_count}\nDateiname: ${imv_current_file##*/}\nDimensionen: ${imv_width}x${imv_height}\nSkalierung: ${imv_scale}%") | |||
}} | |||
Wenn man das Overlay direkt konfiguriert gibt imv ab einer gewissen Länge (beim Erstellen dieses Wikiartikels insgesamt bei 186 Zeichen inklusive aller Shell-Zeichen) eine Fehlermeldung beim Starten aus, die auf einen Fehler in der Zeile nach der Definition von {{ic|overlay_text}} hinweist. Dies kann man umgehen, indem man das Overlay durch ein Script generieren lässt. | |||
{{hc|1=~/.config/imv/config|2= | |||
overlay_text = $(/pfad/zum/script.sh) | |||
}} | |||
Das Script wird mit entsprechenden Umgebungsvariablen gestartet, die die Informationen zum jeweiligen Bild und dessen Eigenschaften und Formatierung enthalten. Siehe auch Abschnitt [[#Scripts_und_Programme_ausführen|Scripts und Programme ausführen]]. Die Rückgabe des Scripts auf [[Umleitungen#Bezeichnungen|STDOUT]] wird dabei als Overlaytext benutzt. Da das Script bei jeder Aktion in imv neu ausgeführt wird, sollte man keine all zu umfangreichen Befehle im Script verwenden. | |||
=== Scripts und Programme ausführen === | |||
Scripts oder generell Programme lassen sich innerhalb von imv mittels des Befehls {{ic|exec}} ausführen. Hierzu kann man entweder die Befehlseingabezeile mittels {{taste|doppelpunkt}} öffnen, oder im Abschnitt {{ic|[binds]}} eine Tastenkombination festlegen. | |||
Sowohl die Scripts, als auch die Programmaufrufe haben dabei Zugriff auf diverse von imv erstellte [[Umgebungsvariablen]]. | |||
* {{ic|$imv_current_file}} beinhaltet den Pfad der aktuell angezeigten Bilddatei | |||
* {{ic|$imv_pid}} ist die Prozess-ID der aktuellen imv-Instanz (für die IPC-Steuerung relevant) | |||
* {{ic|$imv_width}} und {{ic|$imv_height}} beschreiben die Dimensionen des Bildes in Pixeln | |||
* {{ic|$imv_file_count}} ist die Anzahl der aktuell in dieser Instanz geladenen Bilder | |||
In der Manpage sind noch einige weitere Umgebungsvariablen zu finden. | |||
==== Beispielscript ==== | |||
Dieses POSIX-konforme Beispielscript benutzt einige der verfügbaren Umgebungsvariablen, um das aktuelle Bild mittels {{paket|swaybg}} als Hintergrundbild zu setzen, es zuvor aber noch in ein Wallpaper-Verzeichnis zu kopieren. | |||
{{hc|1=~/wp.sh|2= | |||
#!/bin/sh | |||
_name=$(basename "${imv_current_file}") | |||
_wpdir="${HOME}/.wallpapers" | |||
echo "Benutze ${_name} (Bild ${imv_current_index} von ${imv_file_count}) als Hintergrundbild" | |||
cp "${imv_current_file}" "${_wpdir}/${_name}" | |||
echo " -> ${_name} ins Wallpaper-Verzeichnis kopiert" | |||
echo " -> Führe swaybg zum setzen aus" | |||
exec swaybg -m fill -i "${_wpdir}/${_name}" >/dev/null 2>&1 & | |||
}} | |||
Wenn man das Script nun zum Beispiel aus imv-dir heraus ausführt, mit dem man sich die Bilder eines Verzeichnisses ansieht, werden die per {{ic|echo}} ausgegebenen Texte angezeigt, und die anderen Befehle ausgeführt. | |||
{{hc|1=imv-dir /home/user/bildersammlung|2= | |||
Setze mein_bild.png (Bild 2 von 6) als Hintergrundbild | |||
-> mein_bild.png ins Wallpaper-Verzeichnis kopiert | |||
-> Führe swaybg zum setzen aus | |||
}} | |||
Im Beispiel wird {{ic|mein_bild.png}}, das zweite von sechs Bildern, also erst in das im Script konfigurierte Verzeichnis kopiert. | |||
Wenn das Script nicht „sauber beendet“ wird, bleibt imv am Ende hängen, und lässt sich nicht mehr bedienen, da das Script die Eingaben empfängt, mittels {{ic|exec swaybg ... >/dev/null 2>&1 &}} wird das Script durch swaybg ersetzt, und zudem von der Shell gelöst, damit bleibt imv nach dem setzen des Wallpapers durch dieses Script bedienbar. | |||
=== Fernsteuerung mittels IPC === | === Fernsteuerung mittels IPC === | ||
Für die IPC-Steuerung wird beim starten einer imv-Instanz ein [[Gerätedatei#Socketorientiert|Socket]] unter {{ic|$XDG_RUNTIME_DIR/imv-$PID.sock}} erstellt. Dieser Socket kann direkt verwendet werden. Einfacher ist es allerdings, das mitgelieferte Tool {{ic|imv-msg}} zu verwenden, das die Benutzung des Sockets vereinfacht, da man lediglich die Prozess-ID (PID) der imv-Instanz angeben muss, die man „fernsteuern“ möchte. Im Beispiel wird {{ic|11361}} als PID einer {{ic|imv-dir}}-Instanz angenommen. | |||
imv-msg 11361 overlay # Befehl | |||
imv-msg 11361 background checks # Option setzen | |||
imv-msg 11361 exec ./wp.sh # Script ausführen | |||
imv-msg 11361 exec 'echo $imv_file_count' # Programm ausführen | |||
imv-msg 11361 quit # Befehl | |||
Die Bedienung entspricht dem, was auch über die eingebaute Befehlszeile möglich ist. Im Beispiel wird zuerst ein einfacher Befehl (das Textoverlay mit den Bildinformationen umschalten) ausgeführt, dann wird eine Option gesetzt (Hintergrund von Transparenten Bildern auf ''Schachbrettmuster'' umschalten), dann wird mittels {{ic|exec}} ein Script ausgeführt. Der Programmaufruf von {{ic|echo}} gibt die Anzahl der aktuell geladenen Bilder nicht an die Shell zurück, aus der man {{ic|imv-msg}} aufgerufen hat, sondern an die, in der {{ic|imv-dir}} läuft. Sum Schluss imv noch sauber beendet. | |||
Wenn man {{ic|imv-msg}} innerhalb eines aus imv heraus aufgerufenen Scripts verwenden möchte, so geht dies mittels {{ic|imv-msg $imv_pid ...}}, ohne dass man selbst erst die PID ermitteln muss. | |||
== Weblinks == | == Weblinks == |
Aktuelle Version vom 19. Februar 2025, 10:48 Uhr
imv ist ein sehr minimalistisch gehaltener Bildbetrachter, der sich konzeptionell primär über die Befehlszeile bedienen lässt, und sich als Tool im Umfeld von Tiling-WMs positioniert, aber selbstverständlich überall eingesetzt werden kann. imv unterstützt neben klassischen Rastergrafiken auch SVG-Dateien und animierte GIFs, sowie Bilddateien mit Alphakanal (Transparenz).
Installation
Das Programm ist als
imv
in extra
verfügbar, und kann von dort
mittels Pacman
installiert werden.
Mittels imv
wir der Bildbetrachter gestartet. Optional kann man mit imv-wayland
bzw. imv-x11
explizit die gewünschte Version starten. imv-msg
dient zur IPC-Steuerung. Mittels
imv-dir
kann man imv im Verzeichnismodus starten.
Verwendung und Konfiguration
Beim starten prüft imv in dieser Reihenfolge ab, ob die Datei existiert, und lädt bei Vorhandensein aus dieser die Konfiguration.
$XDG_CONFIG_HOME/imv/config
$HOME/.config/imv/config
$HOME/.imv_config
$HOME/.imv/config
/usr/local/etc/imv_config
/etc/imv_config
Zudem kann imv beim Starten mittels des beliebig oft wiederholbaren Parameters -c
in der angegebenen Reihenfolge weitere Konfigurationsoptionen („Commands“) übergeben werden, die nach dem Laden der gefundenen Konfigurationsdatei angewendet werden.
Bilder anzeigen
imv liest Bildpfade von der Standardeingabe. Bei Verwendung von imv-dir
werden automatisch alle weiteren Bilder im Pfad des übergebenen Bilddateinamens geladen.
imv bildname.png echo bildname.png | imv imv ↵ Enter bildname.png
Dies führt alles gleichermaßen dazu, dass die Bilddatei bildname.png
angezeigt wird. Die letzte Methode erlaubt zudem, einfach weitere Pfade einzutippen, die Bilder werden dann in der aktuellen Instanz von imv eingereiht.
Zudem können mittels imv-msg
(siehe Abschnitt Fernsteuerung mittels IPC) ebenfalls Bilder an die jeweilige imv-Isntanz übergeben werden.
imv-msg 11361 open bildname.png
Es können natürlich auch über die Befehlszeile ( : ) per open bildname.png
Bilder geladen werden.
Allen genannten Methoden kann zudem ein Verzeichnis übergeben werden, woraus dann alle Bilder geladen werden.
Fensterdekorationen aktivieren
Aufgrund seiner Positionierung im Umfeld von Tiling-WMs ist die Fensterdekoration von imv standardmäßig deaktiviert. Dies liegt darin begründet, dass die meisten Tiling-WMs entweder genrell keine Fensterdekorationen anzeigen, oder aber selbständig eigene Lösungen verwenden, und die Konfiguration von Programmen diesbezüglich sowieso ignorieren.
Will man Fensterdekorationen haben, so muss man diese explizit in der Konfiguration des Compositors oder Fenstermanagers aktivieren. imv lässt sich sowohl unter Wayland als auch unter X über die ID, bzw. Fensterklasse imv
konfigurieren.
Bei Verwendung von labwc (Wayland) kann man zum Beispiel diese Fensterregel benutzen. Dadurch wird für alle imv-Fenster der Status der Fensterdekoration umgeschaltet.
<windowrules> <windowRule identifier="imv"> <action name="ToggleDecorations" /> </windowRule> </windowrules>
Bei Nutzung von Openbox (X11) kann man die Dekoration ebenfalls umschalten. Auch hier gilt dies dann für alle Fenster.
<application class="imv"> <decor>yes</decor> </application>
Es sei auf die Konfiguration der Compositoren oder Fenstermanager verwiesen.
Tastenkombinationen
imv verfügt standardmäßig über diverse Tastenkombinationen, die sich grob an den Vim-Tastenkombinationen orientieren.
- G, G springt bei Ansicht merherer Bilder zum ersten Bild
- ⇧ Shift + G springt bei Ansicht merherer Bilder zum letzten Bild
- X schließt das Aktuelle Bild (aber nicht imv)
- Q schließt imv und damit alle geöffneten Bilder
- ↑/↓ zoomt in das Bild hinein, bzw. wieder heraus
- H/J/K/L verschiebt ein Bild in die jeweilige Richtung
- : aktiviert die Befehlseingabezeile
Viele weitere Tastenkombinationen lassen sich in der Manpage nachlesen.
In der Konfiguration kann man im Abschnitt [binds]
eigene Tastenkombinationen anlegen.
~/.config/imv/config
[binds] <KP_Add> = zoom 10 <KP_Substract> = zoom -10
Dies fügt Zoom in 10-Prozent-Schritten über die Tasten + und − auf dem Nummernblock hinzu.
Will man die Standardtastenkombinationen nicht benutzen, so kann man dies ebenfalls konfigurieren
~/.config/imv/config
[options] suppress_default_binds = true
Dadurch werden die meisten Standard-Tasten(kombinationen) deaktiviert.
Informationsoverlay anpassen
Mittels D lässt sich ein einfaches Informationsoverlay anzeigen, dass einige Details zum aktuell angezeigten Bild ausgeben kann. Da das Overlay das einzige GUI-Element vom imv ist, lässt es sich umfangreich mittels mehrerer Konfigurationsoption anpassen.
~/.config/imv/config
overlay = false # Overlay beim starten anzeigen overlay_font = 'Monospace:24' # Schritart des Overlays overlay_text = '...' # Overlaytext mit Variablen overlay_text_color = ffffff # Textfarbe overlay_text_alpha = ff # Transparenz des Textes overlay_background_color = 000000 # Hintergrundfarbe overlay_background_alpha = c3 # Transparenz des Hintergrundes overlay_position_bottom = false # Overlay unten statt oben anzeigen

Der overlay_text
ist shell expanded, das bedeutet, dass die gängigen Möglichkeiten einer Shell benutzt werden können, die umfasst jegliche Variablen und Subshells, sowie alle von imv für Scripte bereitgestellten Umgebungsvariablen. Zeilenumbrüche mittels \n
sind nicht direkt möglich, hier kann man aber mittels $(echo -e oben\nunten)
einen Zeilenumbruch zwischen oben
und unten
erreichen. Die folgende Konfiguration verdeutlicht dies.
~/.config/imv/config
overlay_text = $(echo -e "Bildindex: ${imv_current_index}\nBilder total: ${imv_file_count}\nDateiname: ${imv_current_file##*/}\nDimensionen: ${imv_width}x${imv_height}\nSkalierung: ${imv_scale}%")
Wenn man das Overlay direkt konfiguriert gibt imv ab einer gewissen Länge (beim Erstellen dieses Wikiartikels insgesamt bei 186 Zeichen inklusive aller Shell-Zeichen) eine Fehlermeldung beim Starten aus, die auf einen Fehler in der Zeile nach der Definition von overlay_text
hinweist. Dies kann man umgehen, indem man das Overlay durch ein Script generieren lässt.
~/.config/imv/config
overlay_text = $(/pfad/zum/script.sh)
Das Script wird mit entsprechenden Umgebungsvariablen gestartet, die die Informationen zum jeweiligen Bild und dessen Eigenschaften und Formatierung enthalten. Siehe auch Abschnitt Scripts und Programme ausführen. Die Rückgabe des Scripts auf STDOUT wird dabei als Overlaytext benutzt. Da das Script bei jeder Aktion in imv neu ausgeführt wird, sollte man keine all zu umfangreichen Befehle im Script verwenden.
Scripts und Programme ausführen
Scripts oder generell Programme lassen sich innerhalb von imv mittels des Befehls exec
ausführen. Hierzu kann man entweder die Befehlseingabezeile mittels : öffnen, oder im Abschnitt [binds]
eine Tastenkombination festlegen.
Sowohl die Scripts, als auch die Programmaufrufe haben dabei Zugriff auf diverse von imv erstellte Umgebungsvariablen.
$imv_current_file
beinhaltet den Pfad der aktuell angezeigten Bilddatei$imv_pid
ist die Prozess-ID der aktuellen imv-Instanz (für die IPC-Steuerung relevant)$imv_width
und$imv_height
beschreiben die Dimensionen des Bildes in Pixeln$imv_file_count
ist die Anzahl der aktuell in dieser Instanz geladenen Bilder
In der Manpage sind noch einige weitere Umgebungsvariablen zu finden.
Beispielscript
Dieses POSIX-konforme Beispielscript benutzt einige der verfügbaren Umgebungsvariablen, um das aktuelle Bild mittels swaybg als Hintergrundbild zu setzen, es zuvor aber noch in ein Wallpaper-Verzeichnis zu kopieren.
~/wp.sh
#!/bin/sh _name=$(basename "${imv_current_file}") _wpdir="${HOME}/.wallpapers" echo "Benutze ${_name} (Bild ${imv_current_index} von ${imv_file_count}) als Hintergrundbild" cp "${imv_current_file}" "${_wpdir}/${_name}" echo " -> ${_name} ins Wallpaper-Verzeichnis kopiert" echo " -> Führe swaybg zum setzen aus" exec swaybg -m fill -i "${_wpdir}/${_name}" >/dev/null 2>&1 &
Wenn man das Script nun zum Beispiel aus imv-dir heraus ausführt, mit dem man sich die Bilder eines Verzeichnisses ansieht, werden die per echo
ausgegebenen Texte angezeigt, und die anderen Befehle ausgeführt.
imv-dir /home/user/bildersammlung
Setze mein_bild.png (Bild 2 von 6) als Hintergrundbild -> mein_bild.png ins Wallpaper-Verzeichnis kopiert -> Führe swaybg zum setzen aus
Im Beispiel wird mein_bild.png
, das zweite von sechs Bildern, also erst in das im Script konfigurierte Verzeichnis kopiert.
Wenn das Script nicht „sauber beendet“ wird, bleibt imv am Ende hängen, und lässt sich nicht mehr bedienen, da das Script die Eingaben empfängt, mittels exec swaybg ... >/dev/null 2>&1 &
wird das Script durch swaybg ersetzt, und zudem von der Shell gelöst, damit bleibt imv nach dem setzen des Wallpapers durch dieses Script bedienbar.
Fernsteuerung mittels IPC
Für die IPC-Steuerung wird beim starten einer imv-Instanz ein Socket unter $XDG_RUNTIME_DIR/imv-$PID.sock
erstellt. Dieser Socket kann direkt verwendet werden. Einfacher ist es allerdings, das mitgelieferte Tool imv-msg
zu verwenden, das die Benutzung des Sockets vereinfacht, da man lediglich die Prozess-ID (PID) der imv-Instanz angeben muss, die man „fernsteuern“ möchte. Im Beispiel wird 11361
als PID einer imv-dir
-Instanz angenommen.
imv-msg 11361 overlay # Befehl imv-msg 11361 background checks # Option setzen imv-msg 11361 exec ./wp.sh # Script ausführen imv-msg 11361 exec 'echo $imv_file_count' # Programm ausführen imv-msg 11361 quit # Befehl
Die Bedienung entspricht dem, was auch über die eingebaute Befehlszeile möglich ist. Im Beispiel wird zuerst ein einfacher Befehl (das Textoverlay mit den Bildinformationen umschalten) ausgeführt, dann wird eine Option gesetzt (Hintergrund von Transparenten Bildern auf Schachbrettmuster umschalten), dann wird mittels exec
ein Script ausgeführt. Der Programmaufruf von echo
gibt die Anzahl der aktuell geladenen Bilder nicht an die Shell zurück, aus der man imv-msg
aufgerufen hat, sondern an die, in der imv-dir
läuft. Sum Schluss imv noch sauber beendet.
Wenn man imv-msg
innerhalb eines aus imv heraus aufgerufenen Scripts verwenden möchte, so geht dies mittels imv-msg $imv_pid ...
, ohne dass man selbst erst die PID ermitteln muss.