我尝试使用 eye of gnome 命令在两个单独的显示器上打开两个图像查看器实例。问题是,如果我使用以下命令:
eog -s --display=DVI-0 image.jpg
它说无法打开显示器(我假设它指的是 X-displays)。有没有办法在每个屏幕上打开一个实例?
答案1
这里有两个问题:
- 拥有两个独立的 eog 实例(或至少是窗口)
- 控制在哪个屏幕上打开
第一个很简单:选择--new-instance
就可以了。
第二个更复杂。 --display 参数指的是X 服务器使用的,而不是屏幕和/或监视器的名称(xorg.conf 术语)。因此 --display 不是正确的选择。
在终端上发布时eog --fullscreen image.jpg
,图像在与终端相同的屏幕上打开。所以我认为有一种方法可以告诉 Gtk 在精确的屏幕上打开。(注意:选项 -s 用于幻灯片放映,即如果您想要一张单张图片,最好全屏显示。)
从 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 替换为您的实际屏幕宽度。还请注意,由于脚本使用窗口名称来标识它们,因此如果您的桌面上存在具有相似名称(“image1”、“image2”)的窗口,则此方法将不起作用。