从命令行启动特定工作区中的窗口程序

从命令行启动特定工作区中的窗口程序

我想知道当我通过命令行启动一个窗口程序时,我是否可以将其“发送”到特定的工作区中。

例如,我想在启动计算机时在不同的工作区中打开一定数量的窗口程序。这可能吗?这背后的一些基本概念是什么?

我在 Ubuntu 14.04 上使用 Unity。

我也尝试过,gdevilspie但似乎受到错误的影响。

谢谢! :)

答案1

使用wmctrl,例如gedit

gedit & sleep 3; wmctrl -i -r `wmctrl -l -p | grep $! | awk '{ print $1 }'` -t 1
  • gedit &在后台运行 gedit
  • sleep 3睡眠 3 秒等待窗口创建(我的机器有点慢)
  • $!返回前一个命令的 PID(例如:gedit pid)
  • wmctrl -l -p | grep PID | awk '{ print $1 }'从 gedit PID 获取 WID
  • wmctrl -i -r WID -t 1使用 WID 将窗口移动到第二个桌面

其他方式:

wmctrl -s 1 ; gedit & sleep 3; wmctrl -s 0;
  • 切换到第二个桌面,启动 gedit,等待 3 秒;切换回第一个桌面

参考:

答案2

它与@user.dz 回答的基本上相同,只是参数化了,并且不是休眠 3 秒来创建窗口处理程序,而是循环直到找到它。

# workspace target
_WS=3
export DISPLAY=:0 

gedit &
_PID="$!" 
_WID=""
while [[ $_WID == "" ]]; do
  _WID=$(wmctrl -l -p 2>/dev/null | grep $_PID | awk '{ print $1 }')
sleep 1
done

wmctrl -i -r $_WID -t $_WS

相关内容