我相当确定这是不可能的。原因可能是像GNOME这样的窗口环境希望软件可以处理此问题,而软件制造商希望窗口环境可以处理此问题。
Devilspie是个好主意,但可以进行模式匹配(例如,如果name =='google-chrome')。那么,如果我打开两个浏览器会怎样?他们俩都搬到了同一个工作区?我有6x3 = 18个工作区,每个工作区都有一个特定的chrome实例。如果可以重命名这些程序(即“ google-chrome1”,“ google-chrome2” ...),将会有所帮助,但我找不到解决方法。因此,我们必须使用wmctrl。
wmctrl除了使用窗口标题外,b / c更好一些,您还可以使用窗口ID或仅使用当前突出显示的窗口。窗口ID很难获得b / c,它们不会立即生成。见下文
gedit 1.txt
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
但是直到gedit退出后,控制权才返回命令行。为了解决这个问题,我们要做的只是一个&
标志
gedit 1.txt &
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
但是现在,在窗口管理器启动窗口之前,控件已经有99.999%的时间返回到命令行,并且无法找到窗口ID。必须设置一种非常复杂的循环技术,以测试是否已创建任何新窗口,并猜测是否是我们要查找的窗口。
通过该标志检查活动窗口:ACTIVE:
具有相同的问题,它不等待程序完成运行。
wmctrl
让我觉得这是一个非常奇怪的程序。似乎它是为没有鼠标或无法在工作空间中物理拖动程序的人设计的。