在双屏设置中编写 Gnome 图像查看器脚本

在双屏设置中编写 Gnome 图像查看器脚本

我尝试使用 eye of gnome 命令在两个单独的显示器上打开两个图像查看器实例。问题是,如果我使用以下命令:

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

它说无法打开显示器(我假设它指的是 X-displays)。有没有办法在每个屏幕上打开一个实例?

答案1

这里有两个问题:

  1. 拥有两个独立的 eog 实例(或至少是窗口)
  2. 控制在哪个屏幕上打开

第一个很简单:选择--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”)的窗口,则此方法将不起作用。

相关内容