명령줄에서 특정 작업 공간의 창 프로그램 시작

명령줄에서 특정 작업 공간의 창 프로그램 시작

명령줄을 통해 시작할 때 창 프로그램을 특정 작업 공간으로 "전송"할 수 있는지 궁금합니다.

예를 들어, 다른 작업 공간에 특정 수의 창 프로그램을 열어 놓고 컴퓨터를 시작하고 싶습니다. 이것이 가능한가? 이에 대한 기본 개념은 무엇입니까?

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 33초 동안 잠자기 창 생성을 기다립니다. (내 컴퓨터가 조금 느립니다.)
  • $!이전 명령의 PID 반환(예: gedit pid)
  • wmctrl -l -p | grep PID | awk '{ print $1 }'gedit PID에서 WID 가져오기
  • wmctrl -i -r WID -t 1WID가 있는 창을 두 번째 데스크탑으로 이동

또 다른 방법:

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

관련 정보