J'essaie d'utiliser la commande eye of gnome pour ouvrir deux instances de la visionneuse d'images sur deux écrans distincts. Le problème est, si j'utilise la commande:
eog -s --display=DVI-0 image.jpg
il indique qu'il ne peut pas ouvrir l'écran (mon hypothèse est qu'il se réfère aux écrans X). Existe-t-il un moyen d'ouvrir une instance sur chaque écran?
Il y a deux problèmes ici:
La première est simple: option --new-instance
faire l'affaire.
La seconde est plus compliquée. L'argument --display fait référence au serveur X à utiliser, pas au nom de l'écran et/ou du moniteur (terminologie xorg.conf). Donc --display n'est pas la bonne idée à utiliser.
Lors de l'émission eog --fullscreen image.jpg
sur un terminal, l'image ouverte sur le même écran que le terminal. Je suppose donc qu'il existe un moyen de dire à Gtk de s'ouvrir sur un écran précis. (NB: l'option -s est pour le diaporama, i; e. Si vous voulez une seule image, préférez le plein écran.)
D'après la documentation de GTK/Gdk et le code source d'eog, il semble que eog crée un popup avec l'image et demande à gdk de le mettre en plein écran. Gdk demande alors au gestionnaire de fenêtres de définir la "fenêtre" du popup plein écran. La décision d'ouvrir l'image sur tel ou tel écran appartient donc au gestionnaire de fenêtres.
wmctrl
semble être le bon outil pour communiquer avec le gestionnaire de fenêtres. Voici une ébauche d'un script faisant cela.
#!/bin/bash
#open two fullscreen windows
eog --fullscreen --new-instance image1.jpg&
#wait until windows are actually created
while [ 1 ]; do
found=$(wmctrl -l |grep 'image1.jpg');
if ! [[ -z "$found" ]]; then
break;
fi;
done;
#move first win to the left
wmctrl -r 'image1.jpg' -e 1,0,0,-1,-1
eog --fullscreen --new-instance image2.jpg&
#wait
while [ 1 ]; do
found=$(wmctrl -l |grep 'image2.jpg');
if ! [[ -z "$found" ]]; then
break;
fi;
done;
#move
wmctrl -r 'image2.jpg' -e 1,1280,0,-1,-1
Mais vous devez remplacer 1280 par votre largeur d'écran réelle. Notez également que, comme le script utilise des noms de fenêtre pour les identifier, cela ne fonctionnera pas si des fenêtres portant des noms similaires ('image1', 'image2') existent sur votre bureau.