從命令列在特定工作區啟動視窗程序

從命令列在特定工作區啟動視窗程序

我想知道當我透過命令列啟動視窗程式時是否可以將其“發送”到特定的工作區。

例如,我想在啟動電腦時在不同的工作區中開啟一定數量的視窗程式。這可能嗎?這背後有哪些基本概念?

我在 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

相關內容