Я пытаюсь использовать команду eye of gnome, чтобы открыть два экземпляра программы просмотра изображений на двух отдельных дисплеях. Проблема в том, что, если я использую команду:
eog -s --display=DVI-0 image.jpg
он заявляет, что не может открыть дисплей (я предполагаю, что он имеет в виду X-дисплеи). Есть ли способ открыть по одному экземпляру на каждом экране?
Здесь существует две проблемы:
The сначала, каждый прост: опция --new-instance
добивается цели.
scond каждый более сложен. - аргумент дисплея посылает к X-сервер использовать, не название экрана и/или монитора (xorg.conf терминология). Таким образом - дисплей не является правом, думают для использования.
При издании eog --fullscreen image.jpg
на терминале, изображение открывается на том же экране, чем терминал. Таким образом, я предполагаю, что существует способ сказать, что Gtk к открывается на точном экране. (NB: опция-s для слайд-шоу, меня; e., если Вы хотите одно единственное изображение, предпочитают полный экран.)
Из документации GTK/Gdk и исходного кода eog, кажется, что eog создают всплывающее окно с изображением и запрашивают gdk установить его полный экран. Gdk тогда запрашивает менеджер окон установить "окно" всплывающего полного экрана. Так решение открыть изображение на этом или том экране принадлежит менеджеру окон.
wmctrl
, кажется, правильный инструмент для передачи с менеджером окон. Вот проект сценария, делающего это.
#!/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
, Но необходимо заменить 1280 фактическим экраном width. Также обратите внимание, что, потому что имена окна использования сценария для идентификации их это не будет работать, если окна с аналогичными именами ('image1', 'image2') будет существовать на рабочем столе.