
我想知道當我透過命令列啟動視窗程式時是否可以將其“發送”到特定的工作區。
例如,我想在啟動電腦時在不同的工作區中開啟一定數量的視窗程式。這可能嗎?這背後有哪些基本概念?
我在 Ubuntu 14.04 上使用 Unity。
我也嘗試過開始gdevilspie
,但似乎是受錯誤影響。
謝謝! :)
答案1
使用wmctrl
,例如gedit
:
gedit & sleep 3; wmctrl -i -r `wmctrl -l -p | grep $! | awk '{ print $1 }'` -t 1
gedit &
在背景運行 geditsleep 3
睡眠 3 秒等待視窗創建(我的機器有點慢)$!
傳回上一個指令的 PID(即:gedit pid)wmctrl -l -p | grep PID | awk '{ print $1 }'
從 gedit PID 取得 WIDwmctrl -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