我问了一个相关但更具体的问题这里我想知道是否有办法指定程序启动的位置。我基本上想编写一个每次登录时都会启动的 shell 脚本,如下所示
google-chrome www.gmail.com -workspace=1 -monitor=1
google-chrome www.facebook.com -workspace=1 -monitor=2
google-chrome www.youtube.com -workspace=1 -monitor=3
gedit a.txt b.txt c.txt -workspace=2 -monitor=1
gedit d.txt e.txt f.txt -workspace=2 -monitor=2
gedit g.txt h.txt i.txt -workspace=2 -monitor=3
mplayer Terminator1.mkv -workspace=3 -monitor=1
mplayer Terminator2.mkv -workspace=3 -monitor=2
mplayer Terminator3.mkv -workspace=3 -monitor=3
有一个程序叫控制端但它在很多方面都失败了,我甚至不知道从哪里开始。原则上很简单,指定窗口,然后移动它。但指定窗口并不容易,两个浏览器都命名为相同的“Google Chrome”。可以使用它们唯一的窗口 ID,但获取此信息并不是一件容易的事(据我所知,执行时不会返回此信息)。然后有一个:ACTIVE:
选项是最近启动的程序,但不能保证在控制权返回到命令行时启动窗口。更糟糕的是,必须指定全局坐标,而不是工作区/监视器内的可选坐标。
答案1
您可以使用以下命令确定在哪个显示器上启动程序:
$ DISPLAY=":0.1" program_name
有些程序允许你在配置文件中设置其默认显示。mplayer 就是其中之一。将以下内容附加到 ~/.mplayer/config
显示=“:0.1”
您的第一个显示是 0.0。您的第二个显示是 0.1。您的第三个显示是 0.2。
答案2
您可以通过从软件中心安装 CompizConfig 设置管理器来通过 GUI 设置程序启动到哪个工作区。
首先,打开您想要放置的程序实例。
运行 CCSM 并转到“窗口管理”,然后激活“放置窗口”,单击它并选择“固定窗口位置”。
在“固定视口的窗口”下,单击新建。在出现的对话框中,单击“+”按钮。然后在下一个对话框中,单击“抓取”按钮,然后单击启动的程序和“添加”。然后设置视口的值:X=1,Y=1 为左上角,X=1,Y=2 为左下角,X=2,Y=1 为右上角,X=2,Y=2 为右下角。
如果您不执行其他任何操作,这将为窗口类设置它,但还有其他选项,例如 ID、类型等,但 ID 是唯一您无法抓取的选项。
答案3
我实现了一个小的python脚本,用于启动窗口并将其放置到工作区。它依赖于wmctrl。我对这个问题的解决方案是自定义查找窗口ID的函数。它可以基于PID或基于标题。我还做的是记录当前打开的窗口并仅检查新窗口。但我总是将它与title/pid搜索结合起来。此外,当使用title时,我会立即更改它,以便它不会与同一应用程序的下一个窗口发生冲突。
我发现有用的是为需要更复杂处理的应用程序编写一个小脚本。
我计划最终添加不同的显示支持。