Сценарии Gnome Image Viewer в двухэкранной настройке

Я пытаюсь использовать команду eye of gnome, чтобы открыть два экземпляра программы просмотра изображений на двух отдельных дисплеях. Проблема в том, что, если я использую команду:

eog -s --display=DVI-0 image.jpg

он заявляет, что не может открыть дисплей (я предполагаю, что он имеет в виду X-дисплеи). Есть ли способ открыть по одному экземпляру на каждом экране?

1
задан 13 June 2014 в 00:19

1 ответ

Здесь существует две проблемы:

  1. наличие двух отдельных экземпляров (или по крайней мере окна) управления eog
  2. , на котором экране они открывают

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') будет существовать на рабочем столе.

0
ответ дан 13 June 2014 в 00:19

Другие вопросы по тегам:

Похожие вопросы: