Можно ли как-нибудь переключить приложение, работающее в одной рабочей области, в другую в командной строке? Я использую Ubuntu 10.04
ОБНОВЛЕНИЕ1
Согласно предложениям ниже
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.
Так как правильно его использовать, в чем ошибка выше?
ОБНОВЛЕНИЕ2
Я пытался
wmctrl -r 0x05000072 -t 2
но окна не имели никакого эффекта, и они остались в том же рабочем пространстве.
command-line
workspaces
зарегистрированный пользователь
источник
источник
Ответы:
Если вы используете совместимый оконный менеджер, такой как Metacity (Unity 2-d), вы можете использовать wmctrl для переключения окна на другой рабочий стол. Синтаксис есть
wmctrl -r :ACTIVE: -t <DESKTOP>
. Вы также можете изменить свой текущий рабочий стол, используяwmctrl -s <DESKTOP>
. Номера рабочего стола начинаются с 0. На одной строке это будет:Если вы хотите переключить окно, отличное от активного, на другой рабочий стол, используйте текст из заголовка в качестве аргумента -r. Например:
В качестве альтернативы вы можете использовать
wmctrl -l
для отображения списка доступных окон и передачи идентификатора -r вместо специальной строки:ACTIVE:
. При передаче идентификатора вам также необходимо добавить -i. Например:(wmctrl может быть установлен в Ubuntu с помощью
sudo apt-get install wmctrl
.) В настоящее время это, похоже, не работает со стандартным Unity, к сожалению.источник
wmctrl -r "Chromium" -t 1
его в качестве ответа, если вы используете совместимый оконный менеджер, например Unity-2d.Вот мой скрипт, который реализует то, что вы просите: https://github.com/norswap/wmov/blob/master/wmov.sh
В своей текущей форме он может отправлять окна (выбранные путем сопоставления строки без учета регистра с заголовком подстроки, как для
wmctrl
-r
параметра) на другие рабочие столы, либо путем выбора явного номера рабочего стола, либо путем указания направления рабочего стола от текущего рабочий стол.Например:
Это действительно работает, как описано в посте Десгуа. Это также возможности отправки окон в другие рабочие пространства.
источник
Это можно сделать с помощью
xdotool
, но если вы используетеcompiz
это решение, оно может быть неприменимо, поэтому имейте это в виду.Чтобы переключить конкретное окно (активное окно) на другое рабочее пространство, вы можете использовать
Или для сценария вы можете захотеть переключить окна конкретной программы на заданную рабочую область с помощью:
Эта команда ищет и находит
firefox
окна и передает их в рабочую область 1, где они будут отображаться свернутыми. Чтобы вернутьсяfirefox
на рабочий стол по умолчанию, просто замените 1 на 0 в конце команды. Чтобы отправить другое окно в другое рабочее пространство, просто замените егоfirefox
на другое имя программы.Крайне важно, чтобы вы использовали
%@
для представления окон, переданных из--search
параметра, как если бы вы не сделали, окна не будут переданы.Для получения дополнительной информации смотрите
man xdotool
и справочные страницы Ubuntu онлайн.источник
Если вы используете compiz, посмотрите здесь на compiz wiki . Там вы найдете несколько примеров. Посмотрите на "поставить" плагин.
пример
источник
Во-первых, двоеточие является частью
:ACTIVE:
магического токена, указывающего на активное окно. Вы не хотите это нормально. Во-вторых, вам нужно заключать строки в кавычки.Вы также можете получить идентификатор окна (
0x...
в начале каждой строки) и использовать его вместо попытки заставить заголовок работать.источник
xwininfo
а затем щелкнуть окно, идентификатор которого вы хотите.wmctrl -m
)wmctrl
не будет работать. (В частности, он должен прослушиватьPropertyChange
события в корневом окне для определенных свойств, а затем воздействовать на содержимое этих свойств.)Немного изменив сценарий, который приведен в качестве решения этого вопроса , следующий «переводит» данное окно в текущее рабочее пространство (в compiz):
Если необходимо произвольное рабочее пространство, то это вопрос добавления / вычитания соответствующего
$SCREEN_W
/$SCREEN_H
, столько раз, сколько рабочих пространств окно отходит от целевого.источник
Пытаться:
позвольте мне объяснить: с помощью wmctrl показывает
wmctrl -d
Можно перечислить все рабочие пространства, на моем компьютере теперь отображается следующее:* означает текущее рабочее пространство
Кстати,
wmctrl -l
это список всех окон (которые вы уже знаете), на моем компьютере теперь они:так как «DESK» должен быть числом, я использую его,
grep “workspace name” | cut -d" " -f1
чтобы получить.Например, если я хочу переместить Firefox в «код» рабочей области, я могу использовать:
или
но
Просто работай со мной один раз, и я не знаю почему!
источник