Zum Inhalt springen

Imv: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Zeile 19: Zeile 19:


=== Bilder anzeigen ===
=== Bilder anzeigen ===
imv liest Bildpfade von der [[Umleitungen#Eingabeumleitung|Standardeingabe]]. Bei verwendung ovn {{ic|imv-dir}} werden auomatisch alle weiteren Bilder im Pfad der Übergebenen Bilddateinamen geladen.
imv liest Bildpfade von der [[Umleitungen#Eingabeumleitung|Standardeingabe]]. Bei verwendung ovn {{ic|imv-dir}} werden auomatisch alle weiteren Bilder im Pfad der übergebenen Bilddateinamen geladen.


  imv bildname.png
  imv bildname.png

Version vom 19. Februar 2025, 10:11 Uhr

„Imv“ wurde von Dirk (Diskussion) als in Bearbeitung markiert. Um Bearbeitungskonflikte zu vermeiden, kontaktiere Dirk (Diskussion) bitte, bevor du den Artikel bearbeitest.


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

Das Programm ist als imv in extra verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S imv

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 ovn imv-dir werden auomatisch alle weiteren Bilder im Pfad der übergebenen Bilddateinamen 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

Zudem 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 anzeigen

Aufgrund seiner Positionierung im Umfeld von Tiling-WMs werden die Fensterdekorationen von imv standardmäßig nicht angezeigt. 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 verwenden, 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.

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
Das im Beispiel konfigurierte Overlay zeigt die Informationen eines Bildes an.

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 ausführen.

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.

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 Wallappers 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. Diesr 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.

Weblinks