
명령줄을 통해 시작할 때 창 프로그램을 특정 작업 공간으로 "전송"할 수 있는지 궁금합니다.
예를 들어, 다른 작업 공간에 특정 수의 창 프로그램을 열어 놓고 컴퓨터를 시작하고 싶습니다. 이것이 가능한가? 이에 대한 기본 개념은 무엇입니까?
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가 답변한 것과 동일하며 매개변수화되었으며 Windows 핸들러가 생성될 때까지 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