Переместить приложение на нужный рабочий стол в x=0:y=0 и нажать кнопку


romy4 аватар

romy4 - Posted on 27 Ноябрь 2015

Автоматизируя рабочий стол наткнулся на то, что FF с установленным session manager не хочет нормально запускаться. Точнее, он запускается и ждёт нажатия кнопки выбора сессии. Даже если каким-то образом удастся его запустить, оно всё равно открывается на правом мониторе, а нужно на левом. Как решить?

Есть два варианта: переключиться на другой workspace и там запустить или запустить на текущем, а потом переместить окна на другой workspace.

Под катом решение.

Мне первый вариант удобнее.

И так, нам нужны будут две софтины: wmctrl, которая идёт в стандартной поставке ubuntu/linux mint, и xdotool.

Переключение на другой рабочий стол:

wmctrl -s 1

Далее, запускаем FF и ждём некоторое время его открытия. Момент Х — как переместить его на монитор слева?
Приходит на помощь wmctrl, но он требует получить id окна сперва. Ок

wmctrl -l | grep "Mozilla Firefox" | tail -1 | cut -f1 -d" "

На самом деле, он может вернуть несколько айдишников с одним заголовком окна, но так как запускается первым основное окно, то берём первое.
Окно FF открыто на максимум, то переместить его не получится, сперва надо снять максимизацию, затем переместить и опять максимизировать.

wmctrl -i -r "$id" -b remove,maximized_vert,maximized_horz
wmctrl -i -r "$id" -e 0,0,0,-1,-1
wmctrl -i -r "$id" -b add,maximized_vert,maximized_horz

Вся фишка в строке №2. Там задаётся <gravity>,<x>,<y>,<width>,<height>
Гравитацию не трогаем. x и y это верхний угол, а -1 для размеров — оставить их не такими же.
Дальше проделываем то же самое для Session Manager.

Остаётся нажать на дефолтную клавишу. Для этого посылаем в окно клавишу <Return>

xdotool search --name "Session Manager" key --window %1 Return

xdotool сама ищет окно search --name, поэтому передаём ему название окна, далее key - симулировать нажатие клавиши (--window %1 отдаёт команду к первому найденному окну предыдущей командой search) Return.

Почти всё.
FF открывается в том окне, где находится курсор, поэтому сперва перепроверим, чтобы курсор находился на левом экране. И если нет, то переместим его в центр экрана слева, а уже после того надо нажимать клавишу.

mousex=$(xdotool getmouselocation | cut -d" " -f1 | cut -d: -f2)
mousey=$(xdotool getmouselocation | cut -d" " -f2 | cut -d: -f2)
if [ $mousex -gt 1920 ]; then
    xdotool mousemove 860 $mousey
fi

Весь скрипт прикреплён.

Здесь можно было бы поступить немного иначе: нажать клавишу и подождать, пока запустятся все FF окна, после его переместить их на левый монитор. Это уже кому как удобнее.

ВложениеРазмер
firefox-move-1-display.txt748 байтов
0
Ваша оценка: Ничего

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.