Можно ли каким-либо образом переключить приложение, запущенное в одном рабочем пространстве, на другое в командной строке? Я использую Ubuntu 10.04
UPDATE1 В соответствии с предложениями ниже
wmctrl -l
0x02200003 -1 bond Bottom Expanded Edge Panel
0x02200049 -1 bond Top Expanded Edge Panel
0x02000020 0 bond x-nautilus-desktop
0x04e00004 0 bond bond@bond: ~
0x0482a380 0 bond OMG! Ubuntu! | wmctrl - Chromium
0x05000072 0 bond how to shift applications from workspace 1 to 2 using command - Ask Ubuntu - Stack Exchange - Google Chrome
теперь, когда я набираю
wmctrl -r :OMG! Ubuntu! | wmctrl - Chromium: -t 2 No window was specified.
Итак, как правильно использовать его в качестве ошибки в предыдущем?
UPDATE1 Я попробовал
wmctrl -r 0x05000072 -t 2, но окна не имели эффекта, и они оставались в одном рабочем пространстве.
Вот мой сценарий, который реализует то, что вы спрашиваете: https://github.com/norswap/wmov/blob/master/wmov.sh
В нем текущую форму, он может отправлять окна (выбранные путем сопоставления строки без учета регистра с заголовком подстрок, например, для опции wmctrl
-r
) на другие рабочие столы, либо путем выбора явный номер рабочего стола или указав направление рабочего стола с текущего рабочего стола.
Например:
./ wmov.sh mov «Google Chrome» 3 # отправляет Chrome на рабочий стол 3 (внизу слева) ./mov.sh mov Skype справа # отправляет Skype на рабочий стол справа от # текущего рабочего стола (если есть)
Он работает, как описано в сообщении desgua. Это также возможность отправки окон в другие рабочие области.
Если вы используете совместимый оконный менеджер, например Metacity (Unity 2-d), вы можете использовать wmctrl для переключения окна на другой рабочий стол. Синтаксис: wmctrl -r: ACTIVE: -t & lt; DESKTOP & gt;
. Вы также можете изменить текущий рабочий стол, используя wmctrl -s & lt; DESKTOP & gt;
. Номера настольных компьютеров начинаются с 0. В одной строке это будет:
wmctrl -r: ACTIVE: -t 1; wmctrl -s 1
Если вы хотите переключить окно, отличное от активного, на другой рабочий стол, используйте текст из заголовка в качестве аргумента в -r. Например:
wmctrl -r «Chromium» -t 1
В качестве альтернативы вы можете использовать wmctrl -l
, чтобы перечислить доступных окон и передать номер id -r вместо специальной строки : ACTIVE:
. При передаче id вам также нужно добавить -i. Например:
$ wmctrl -l 0x03e00189 0 имя хоста Задайте Ubuntu - Chromium $ wmctrl -i -r 0x03e00189 -t 2
(wmctrl может быть установлен на Ubuntu с sudo apt-get install wmctrl
.) В настоящее время это, похоже, не работает со стандартным Unity, к сожалению.
Во-первых, двоеточие является частью магического токена : ACTIVE:
, указывающего активное окно. Вы не хотите этого нормально. Во-вторых, вам нужно указать строки с пробелами в них.
Вы также можете получить идентификатор окна ( 0x ...
в начале каждой строки) и использовать это вместо попыток заставить название работать.
$ wmctrl -r 'OMG! Ubuntu! | wmctrl - Chromium '-t 2 #, где бы он ни находился, переместите его на 2 $ wmctrl -r 0x0482a380 -t 2 # то же самое
Попробуйте:
wmctrl -r "имя окна (или любая строка в заголовке)" -t `wmctrl -d | grep "имя рабочего пространства" | cut -d "" -f1`
позвольте мне объяснить: в помощи wmctrl показано
-r & lt; WIN & gt; -t & lt; DESK & gt; Переместите окно на указанный рабочий стол. & Lt; & СТОЛ GT; Номер рабочего стола. Настольные компьютеры подсчитываются с нуля. & Л; WIN & GT; Этот аргумент указывает окно. По умолчанию интерпретируется как строка. Строка сопоставляется с названиями окон и используется первое совпадающее окно. Соответствие не чувствительно к регистру, и строка может отображаться в любой позиции заголовка. Параметр -i может использоваться для интерпретации аргумента как числового идентификатора окна, представленного как десятичное число. Если он начинается с «0x», он будет интерпретироваться как шестнадцатеричное число.
wmctrl -d
может отображать все рабочие области, на моем компьютере теперь отображается следующее:
0 - DG: 1600x900 VP: N / A WA: 0,0 1600x868 код 1 * DG: 1600x900 VP: 0,0 WA: 0,0 1600x868 play 2 - DG: 1600x900 VP: N / A WA: 0,01600x868 research
* означает текущую рабочую область
BTW, wmctrl -l
, чтобы перечислить все окна (которые вы уже знаете), на моем компьютере теперь они:
0x05400008 1 пользователь-LinuxMint Terminal 0x03a0008e 0 user-LinuxMint Mozilla Firefox
, так как «DESK» должен быть числом, я использую grep «имя рабочего пространства» | cut -d "" -f1
, чтобы получить его.
Например, если я хочу переместить Firefox в «код» рабочей области, я могу использовать:
wmctrl -r "firefox" -t 0
или
wmctrl -r "moz" -t `wmctrl -d | grep "code" | cut -d "" -f1`
, но
wmctrl -r -i 0x03a0008e -t `wmctrl -d | grep "code" | cut -d "" -f1`
Просто работайте со мной один раз, и я не знаю, почему!
Изменив бит скрипта, который он дал в качестве решения этого вопроса , следующее «приносит» данное окно в текущее рабочее пространство (в compiz):
#! / bin / bash SCREEN_W = $ (xwininfo -root | sed -n 's / ^ Ширина: \ (. * \) $ / \ 1 / p') SCREEN_H = $ (xwininfo -root | sed -n 's / ^ Высота: \ (. * \) $ / \ 1 / p') NAME = "$ 1" wmctrl -xlG | awk -v NAME = "$ NAME" '$ 7 == NAME {print $ 1}' | при чтении WINS; do wmctrl -ir "$ WINS" -e "0,0,0, $ SCREEN_W, $ SCREEN_H"; done exit 0
Если требуется произвольное рабочее пространство, то это вопрос добавления / вычитания соответствующего $ SCREEN_W
/ $ SCREEN_H
, столько раз, сколько рабочих пространств, окно находится далеко от целевого.
Вот мой сценарий, который реализует то, что вы спрашиваете: https://github.com/norswap/wmov/blob/master/wmov.sh
В нем текущую форму, он может отправлять окна (выбранные путем сопоставления строки без учета регистра с заголовком подстрок, например, для опции wmctrl
-r
) на другие рабочие столы, либо путем выбора явный номер рабочего стола или указав направление рабочего стола с текущего рабочего стола.
Например:
./ wmov.sh mov «Google Chrome» 3 # отправляет Chrome на рабочий стол 3 (внизу слева) ./mov.sh mov Skype справа # отправляет Skype на рабочий стол справа от # текущего рабочего стола (если есть)
Он работает, как описано в сообщении desgua. Это также возможность отправки окон в другие рабочие области.
Если вы используете compiz, посмотрите на compiz wiki . Там вы найдете несколько примеров. Посмотрите на плагин «put».
Пример
./ compiz-dbus-send.py put put_viewport_right_key
Это можно сделать с помощью xdotool
, но если вы используете compiz
, это решение может быть неприменимо, поэтому имейте это в виду.
Чтобы переключить конкретное окно (активное окно) в другое рабочее пространство, вы можете использовать
xdotool getactivewindow set_desktop_for_window 1
Или для скрипта вам может потребоваться переключить окна конкретной программы на заданное рабочее пространство с помощью:
xdotool search --class firefox set_desktop_for_window% @ 1
Эта команда выполняет поиск и находит окно firefox
и переносит их в рабочее пространство 1, где они будут отображаться с минимальными значениями. Чтобы вернуть firefox
на рабочий стол по умолчанию, просто замените 1 на 0 в конце команды. Чтобы отправить другое окно в другое рабочее пространство, просто замените firefox
на другое имя программы.
Очень важно, чтобы вы использовали % @
для представления окон, прошедших мимо из параметра - search
, как будто вы не переносите никаких окон.
Для получения дополнительной информации см. man xdotool
и Ubuntu manpages online.
Если вы используете совместимый оконный менеджер, например Metacity (Unity 2-d), вы можете использовать wmctrl для переключения окна на другой рабочий стол. Синтаксис: wmctrl -r: ACTIVE: -t & lt; DESKTOP & gt;
. Вы также можете изменить текущий рабочий стол, используя wmctrl -s & lt; DESKTOP & gt;
. Номера настольных компьютеров начинаются с 0. В одной строке это будет:
wmctrl -r: ACTIVE: -t 1; wmctrl -s 1
Если вы хотите переключить окно, отличное от активного, на другой рабочий стол, используйте текст из заголовка в качестве аргумента в -r. Например:
wmctrl -r «Chromium» -t 1
В качестве альтернативы вы можете использовать wmctrl -l
, чтобы перечислить доступных окон и передать номер id -r вместо специальной строки : ACTIVE:
. При передаче id вам также нужно добавить -i. Например:
$ wmctrl -l 0x03e00189 0 имя хоста Задайте Ubuntu - Chromium $ wmctrl -i -r 0x03e00189 -t 2
(wmctrl может быть установлен на Ubuntu с sudo apt-get install wmctrl
.) В настоящее время это, похоже, не работает со стандартным Unity, к сожалению.
Изменив бит скрипта, который он дал в качестве решения этого вопроса , следующее «приносит» данное окно в текущее рабочее пространство (в compiz):
#! / bin / bash SCREEN_W = $ (xwininfo -root | sed -n 's / ^ Ширина: \ (. * \) $ / \ 1 / p') SCREEN_H = $ (xwininfo -root | sed -n 's / ^ Высота: \ (. * \) $ / \ 1 / p') NAME = "$ 1" wmctrl -xlG | awk -v NAME = "$ NAME" '$ 7 == NAME {print $ 1}' | при чтении WINS; do wmctrl -ir "$ WINS" -e "0,0,0, $ SCREEN_W, $ SCREEN_H"; done exit 0
Если требуется произвольное рабочее пространство, то это вопрос добавления / вычитания соответствующего $ SCREEN_W
/ $ SCREEN_H
, столько раз, сколько рабочих пространств, окно находится далеко от целевого.
Во-первых, двоеточие является частью магического токена : ACTIVE:
, указывающего активное окно. Вы не хотите этого нормально. Во-вторых, вам нужно указать строки с пробелами в них.
Вы также можете получить идентификатор окна ( 0x ...
в начале каждой строки) и использовать это вместо попыток заставить название работать.
$ wmctrl -r 'OMG! Ubuntu! | wmctrl - Chromium '-t 2 #, где бы он ни находился, переместите его на 2 $ wmctrl -r 0x0482a380 -t 2 # то же самое
Попробуйте:
wmctrl -r "имя окна (или любая строка в заголовке)" -t `wmctrl -d | grep "имя рабочего пространства" | cut -d "" -f1`
позвольте мне объяснить: в помощи wmctrl показано
-r & lt; WIN & gt; -t & lt; DESK & gt; Переместите окно на указанный рабочий стол. & Lt; & СТОЛ GT; Номер рабочего стола. Настольные компьютеры подсчитываются с нуля. & Л; WIN & GT; Этот аргумент указывает окно. По умолчанию интерпретируется как строка. Строка сопоставляется с названиями окон и используется первое совпадающее окно. Соответствие не чувствительно к регистру, и строка может отображаться в любой позиции заголовка. Параметр -i может использоваться для интерпретации аргумента как числового идентификатора окна, представленного как десятичное число. Если он начинается с «0x», он будет интерпретироваться как шестнадцатеричное число.
wmctrl -d
может отображать все рабочие области, на моем компьютере теперь отображается следующее:
0 - DG: 1600x900 VP: N / A WA: 0,0 1600x868 код 1 * DG: 1600x900 VP: 0,0 WA: 0,0 1600x868 play 2 - DG: 1600x900 VP: N / A WA: 0,01600x868 research
* означает текущую рабочую область
BTW, wmctrl -l
, чтобы перечислить все окна (которые вы уже знаете), на моем компьютере теперь они:
0x05400008 1 пользователь-LinuxMint Terminal 0x03a0008e 0 user-LinuxMint Mozilla Firefox
, так как «DESK» должен быть числом, я использую grep «имя рабочего пространства» | cut -d "" -f1
, чтобы получить его.
Например, если я хочу переместить Firefox в «код» рабочей области, я могу использовать:
wmctrl -r "firefox" -t 0
или
wmctrl -r "moz" -t `wmctrl -d | grep "code" | cut -d "" -f1`
, но
wmctrl -r -i 0x03a0008e -t `wmctrl -d | grep "code" | cut -d "" -f1`
Просто работайте со мной один раз, и я не знаю, почему!
Это можно сделать с помощью xdotool
, но если вы используете compiz
, это решение может быть неприменимо, поэтому имейте это в виду.
Чтобы переключить конкретное окно (активное окно) в другое рабочее пространство, вы можете использовать
xdotool getactivewindow set_desktop_for_window 1
Или для скрипта вам может потребоваться переключить окна конкретной программы на заданное рабочее пространство с помощью:
xdotool search --class firefox set_desktop_for_window% @ 1
Эта команда выполняет поиск и находит окно firefox
и переносит их в рабочее пространство 1, где они будут отображаться с минимальными значениями. Чтобы вернуть firefox
на рабочий стол по умолчанию, просто замените 1 на 0 в конце команды. Чтобы отправить другое окно в другое рабочее пространство, просто замените firefox
на другое имя программы.
Очень важно, чтобы вы использовали % @
для представления окон, прошедших мимо из параметра - search
, как будто вы не переносите никаких окон.
Для получения дополнительной информации см. man xdotool
и Ubuntu manpages online.
Если вы используете compiz, посмотрите на compiz wiki . Там вы найдете несколько примеров. Посмотрите на плагин «put».
Пример
./ compiz-dbus-send.py put put_viewport_right_key
Вот мой сценарий, который реализует то, что вы спрашиваете: https://github.com/norswap/wmov/blob/master/wmov.sh
В нем текущую форму, он может отправлять окна (выбранные путем сопоставления строки без учета регистра с заголовком подстрок, например, для опции wmctrl
-r
) на другие рабочие столы, либо путем выбора явный номер рабочего стола или указав направление рабочего стола с текущего рабочего стола.
Например:
./ wmov.sh mov «Google Chrome» 3 # отправляет Chrome на рабочий стол 3 (внизу слева) ./mov.sh mov Skype справа # отправляет Skype на рабочий стол справа от # текущего рабочего стола (если есть)
Он работает, как описано в сообщении desgua. Это также возможность отправки окон в другие рабочие области.
Если вы используете совместимый оконный менеджер, например Metacity (Unity 2-d), вы можете использовать wmctrl для переключения окна на другой рабочий стол. Синтаксис: wmctrl -r: ACTIVE: -t & lt; DESKTOP & gt;
. Вы также можете изменить текущий рабочий стол, используя wmctrl -s & lt; DESKTOP & gt;
. Номера настольных компьютеров начинаются с 0. В одной строке это будет:
wmctrl -r: ACTIVE: -t 1; wmctrl -s 1
Если вы хотите переключить окно, отличное от активного, на другой рабочий стол, используйте текст из заголовка в качестве аргумента в -r. Например:
wmctrl -r «Chromium» -t 1
В качестве альтернативы вы можете использовать wmctrl -l
, чтобы перечислить доступных окон и передать номер id -r вместо специальной строки : ACTIVE:
. При передаче id вам также нужно добавить -i. Например:
$ wmctrl -l 0x03e00189 0 имя хоста Задайте Ubuntu - Chromium $ wmctrl -i -r 0x03e00189 -t 2
(wmctrl может быть установлен на Ubuntu с sudo apt-get install wmctrl
.) В настоящее время это, похоже, не работает со стандартным Unity, к сожалению.
Попробуйте:
wmctrl -r "имя окна (или любая строка в заголовке)" -t `wmctrl -d | grep "имя рабочего пространства" | cut -d "" -f1`
позвольте мне объяснить: в помощи wmctrl показано
-r & lt; WIN & gt; -t & lt; DESK & gt; Переместите окно на указанный рабочий стол. & Lt; & СТОЛ GT; Номер рабочего стола. Настольные компьютеры подсчитываются с нуля. & Л; WIN & GT; Этот аргумент указывает окно. По умолчанию интерпретируется как строка. Строка сопоставляется с названиями окон и используется первое совпадающее окно. Соответствие не чувствительно к регистру, и строка может отображаться в любой позиции заголовка. Параметр -i может использоваться для интерпретации аргумента как числового идентификатора окна, представленного как десятичное число. Если он начинается с «0x», он будет интерпретироваться как шестнадцатеричное число.
wmctrl -d
может отображать все рабочие области, на моем компьютере теперь отображается следующее:
0 - DG: 1600x900 VP: N / A WA: 0,0 1600x868 код 1 * DG: 1600x900 VP: 0,0 WA: 0,0 1600x868 play 2 - DG: 1600x900 VP: N / A WA: 0,01600x868 research
* означает текущую рабочую область
BTW, wmctrl -l
, чтобы перечислить все окна (которые вы уже знаете), на моем компьютере теперь они:
0x05400008 1 пользователь-LinuxMint Terminal 0x03a0008e 0 user-LinuxMint Mozilla Firefox
, так как «DESK» должен быть числом, я использую grep «имя рабочего пространства» | cut -d "" -f1
, чтобы получить его.
Например, если я хочу переместить Firefox в «код» рабочей области, я могу использовать:
wmctrl -r "firefox" -t 0
или
wmctrl -r "moz" -t `wmctrl -d | grep "code" | cut -d "" -f1`
, но
wmctrl -r -i 0x03a0008e -t `wmctrl -d | grep "code" | cut -d "" -f1`
Просто работайте со мной один раз, и я не знаю, почему!
Изменив бит скрипта, который он дал в качестве решения этого вопроса , следующее «приносит» данное окно в текущее рабочее пространство (в compiz):
#! / bin / bash SCREEN_W = $ (xwininfo -root | sed -n 's / ^ Ширина: \ (. * \) $ / \ 1 / p') SCREEN_H = $ (xwininfo -root | sed -n 's / ^ Высота: \ (. * \) $ / \ 1 / p') NAME = "$ 1" wmctrl -xlG | awk -v NAME = "$ NAME" '$ 7 == NAME {print $ 1}' | при чтении WINS; do wmctrl -ir "$ WINS" -e "0,0,0, $ SCREEN_W, $ SCREEN_H"; done exit 0
Если требуется произвольное рабочее пространство, то это вопрос добавления / вычитания соответствующего $ SCREEN_W
/ $ SCREEN_H
, столько раз, сколько рабочих пространств, окно находится далеко от целевого.
Во-первых, двоеточие является частью магического токена : ACTIVE:
, указывающего активное окно. Вы не хотите этого нормально. Во-вторых, вам нужно указать строки с пробелами в них.
Вы также можете получить идентификатор окна ( 0x ...
в начале каждой строки) и использовать это вместо попыток заставить название работать.
$ wmctrl -r 'OMG! Ubuntu! | wmctrl - Chromium '-t 2 #, где бы он ни находился, переместите его на 2 $ wmctrl -r 0x0482a380 -t 2 # то же самое
Это можно сделать с помощью xdotool
, но если вы используете compiz
, это решение может быть неприменимо, поэтому имейте это в виду.
Чтобы переключить конкретное окно (активное окно) в другое рабочее пространство, вы можете использовать
xdotool getactivewindow set_desktop_for_window 1
Или для скрипта вам может потребоваться переключить окна конкретной программы на заданное рабочее пространство с помощью:
xdotool search --class firefox set_desktop_for_window% @ 1
Эта команда выполняет поиск и находит окно firefox
и переносит их в рабочее пространство 1, где они будут отображаться с минимальными значениями. Чтобы вернуть firefox
на рабочий стол по умолчанию, просто замените 1 на 0 в конце команды. Чтобы отправить другое окно в другое рабочее пространство, просто замените firefox
на другое имя программы.
Очень важно, чтобы вы использовали % @
для представления окон, прошедших мимо из параметра - search
, как будто вы не переносите никаких окон.
Для получения дополнительной информации см. man xdotool
и Ubuntu manpages online.
Вот мой сценарий, который реализует то, что вы спрашиваете: https://github.com/norswap/wmov/blob/master/wmov.sh
В нем текущую форму, он может отправлять окна (выбранные путем сопоставления строки без учета регистра с заголовком подстрок, например, для опции wmctrl
-r
) на другие рабочие столы, либо путем выбора явный номер рабочего стола или указав направление рабочего стола с текущего рабочего стола.
Например:
./ wmov.sh mov «Google Chrome» 3 # отправляет Chrome на рабочий стол 3 (внизу слева) ./mov.sh mov Skype справа # отправляет Skype на рабочий стол справа от # текущего рабочего стола (если есть)
Он работает, как описано в сообщении desgua. Это также возможность отправки окон в другие рабочие области.
Если вы используете compiz, посмотрите на compiz wiki . Там вы найдете несколько примеров. Посмотрите на плагин «put».
Пример
./ compiz-dbus-send.py put put_viewport_right_key
Во-первых, двоеточие является частью магического токена : ACTIVE:
, указывающего активное окно. Вы не хотите этого нормально. Во-вторых, вам нужно указать строки с пробелами в них.
Вы также можете получить идентификатор окна ( 0x ...
в начале каждой строки) и использовать это вместо попыток заставить название работать.
$ wmctrl -r 'OMG! Ubuntu! | wmctrl - Chromium '-t 2 #, где бы он ни находился, переместите его на 2 $ wmctrl -r 0x0482a380 -t 2 # то же самое
xwininfo
, а затем щелкнуть по окну, идентификатор которого вы хотите.
– geekosaur
21 March 2011 в 21:56
wmctrl
не будет работать. (В частности, он должен прослушивать события PropertyChange
в корневом окне для конкретных свойств, а затем воздействовать на содержимое этих свойств.)
– geekosaur
23 March 2011 в 17:28
Попробуйте:
wmctrl -r "имя окна (или любая строка в заголовке)" -t `wmctrl -d | grep "имя рабочего пространства" | cut -d "" -f1`
позвольте мне объяснить: в помощи wmctrl показано
-r & lt; WIN & gt; -t & lt; DESK & gt; Переместите окно на указанный рабочий стол. & Lt; & СТОЛ GT; Номер рабочего стола. Настольные компьютеры подсчитываются с нуля. & Л; WIN & GT; Этот аргумент указывает окно. По умолчанию интерпретируется как строка. Строка сопоставляется с названиями окон и используется первое совпадающее окно. Соответствие не чувствительно к регистру, и строка может отображаться в любой позиции заголовка. Параметр -i может использоваться для интерпретации аргумента как числового идентификатора окна, представленного как десятичное число. Если он начинается с «0x», он будет интерпретироваться как шестнадцатеричное число.
wmctrl -d
может отображать все рабочие области, на моем компьютере теперь отображается следующее:
0 - DG: 1600x900 VP: N / A WA: 0,0 1600x868 код 1 * DG: 1600x900 VP: 0,0 WA: 0,0 1600x868 play 2 - DG: 1600x900 VP: N / A WA: 0,01600x868 research
* означает текущую рабочую область
BTW, wmctrl -l
, чтобы перечислить все окна (которые вы уже знаете), на моем компьютере теперь они:
0x05400008 1 пользователь-LinuxMint Terminal 0x03a0008e 0 user-LinuxMint Mozilla Firefox
, так как «DESK» должен быть числом, я использую grep «имя рабочего пространства» | cut -d "" -f1
, чтобы получить его.
Например, если я хочу переместить Firefox в «код» рабочей области, я могу использовать:
wmctrl -r "firefox" -t 0
или
wmctrl -r "moz" -t `wmctrl -d | grep "code" | cut -d "" -f1`
, но
wmctrl -r -i 0x03a0008e -t `wmctrl -d | grep "code" | cut -d "" -f1`
Просто работайте со мной один раз, и я не знаю, почему!
Если вы используете совместимый оконный менеджер, например Metacity (Unity 2-d), вы можете использовать wmctrl для переключения окна на другой рабочий стол. Синтаксис: wmctrl -r: ACTIVE: -t & lt; DESKTOP & gt;
. Вы также можете изменить текущий рабочий стол, используя wmctrl -s & lt; DESKTOP & gt;
. Номера настольных компьютеров начинаются с 0. В одной строке это будет:
wmctrl -r: ACTIVE: -t 1; wmctrl -s 1
Если вы хотите переключить окно, отличное от активного, на другой рабочий стол, используйте текст из заголовка в качестве аргумента в -r. Например:
wmctrl -r «Chromium» -t 1
В качестве альтернативы вы можете использовать wmctrl -l
, чтобы перечислить доступных окон и передать номер id -r вместо специальной строки : ACTIVE:
. При передаче id вам также нужно добавить -i. Например:
$ wmctrl -l 0x03e00189 0 имя хоста Задайте Ubuntu - Chromium $ wmctrl -i -r 0x03e00189 -t 2
(wmctrl может быть установлен на Ubuntu с sudo apt-get install wmctrl
.) В настоящее время это, похоже, не работает со стандартным Unity, к сожалению.
wmctrl -r «Chromium» -t 1
, поскольку skyblue упоминает в своем ответе как долго поскольку вы используете совместимый оконный менеджер, например Unity-2d.
– John S Gruber
24 May 2012 в 23:35
Изменив бит скрипта, который он дал в качестве решения этого вопроса , следующее «приносит» данное окно в текущее рабочее пространство (в compiz):
#! / bin / bash SCREEN_W = $ (xwininfo -root | sed -n 's / ^ Ширина: \ (. * \) $ / \ 1 / p') SCREEN_H = $ (xwininfo -root | sed -n 's / ^ Высота: \ (. * \) $ / \ 1 / p') NAME = "$ 1" wmctrl -xlG | awk -v NAME = "$ NAME" '$ 7 == NAME {print $ 1}' | при чтении WINS; do wmctrl -ir "$ WINS" -e "0,0,0, $ SCREEN_W, $ SCREEN_H"; done exit 0
Если требуется произвольное рабочее пространство, то это вопрос добавления / вычитания соответствующего $ SCREEN_W
/ $ SCREEN_H
, столько раз, сколько рабочих пространств, окно находится далеко от целевого.