Запуск оконной программы в определенном рабочем пространстве из командной строки

Запуск оконной программы в определенном рабочем пространстве из командной строки

Интересно, можно ли «отправить» оконную программу в определенное рабочее пространство, если я запущу ее через командную строку.

Например, я хотел бы запустить свой компьютер с определенным количеством оконных программ, открытых в разных рабочих пространствах. Возможно ли это? Какие основные концепции стоят за этим?

Я использую Unity на Ubuntu 14.04.

Я тоже пытался начать, 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 }'получить WID из gedit PID
  • wmctrl -i -r WID -t 1переместить окно с WID на второй рабочий стол

Другой путь:

wmctrl -s 1 ; gedit & sleep 3; wmctrl -s 0;
  • Переключиться на второй рабочий стол, запустить gedit, подождать 3 секунды; переключиться обратно на первый рабочий стол.

Ссылка:

решение2

По сути, это тот же ответ, на который ответил @user.dz, просто параметризованный, и вместо того, чтобы ждать 3 секунды, пока не будет создан обработчик Windows, этот зацикливается, пока не найдет его.

# 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

Связанный контент