как переместить приложения из рабочей области 1 в 2 с помощью команды

Можно ли как-нибудь переключить приложение, запущенное в одном рабочем пространстве, в другое в командной строке? Я использую 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.

Так как правильно его использовать в чем ошибка?

ОБНОВЛЕНИЕ2
Я попытался

wmctrl -r 0x05000072 -t 2 [ 119]

, но окна не имели никакого эффекта, и они остались в том же рабочем пространстве.

9
задан 21 March 2011 в 21:41

7 ответов

Вот мой скрипт, который реализует то, что вы просите: https://github.com/norswap/wmov/blob/master/wmov.sh

В его текущей форме , он может отправлять окна (выбранные путем сопоставления строки без учета регистра с заголовком подстроки, как для опции wmctrl -r) на другие рабочие столы, либо выбрав явный номер рабочего стола, либо указав направление рабочего стола из текущий рабочий стол.

Например:

./wmov.sh mov "Google Chrome" 3 # sends Chrome to desktop 3 (bottom left)
./mov.sh mov Skype right # sends Skype to the desktop to the right of
                         # the current desktop (if any)

Это действительно работает, как описано в посте Десгуа. Это также возможность отправлять окна в другие рабочие пространства.

0
ответ дан 21 March 2011 в 21:41

Если вы используете compiz, посмотрите здесь compiz wiki . Там вы найдете несколько примеров. Посмотрите на плагин "put".

Пример

./compiz-dbus-send.py put put_viewport_right_key
0
ответ дан 21 March 2011 в 21:41

Во-первых, двоеточие является частью магического жетона :ACTIVE:, указывающего на активное окно. Вы не хотите это нормально. Во-вторых, вам нужно заключить строки в кавычки.

Вы также можете получить идентификатор окна (0x... в начале каждой строки) и использовать его вместо попытки заставить заголовок работать.

$ wmctrl -r 'OMG! Ubuntu! | wmctrl - Chromium' -t 2 # wherever it is, move it to 2
$ wmctrl -r 0x0482a380 -t 2 # same thing
0
ответ дан 21 March 2011 в 21:41

Путем небольшого изменения сценария, который задан в качестве решения для этого вопроса , следующее «приводит» данное окно к текущей рабочей области (в compiz): ​​

#!/bin/bash

SCREEN_W=$(xwininfo -root | sed -n 's/^  Width: \(.*\)$/\1/p')
SCREEN_H=$(xwininfo -root | sed -n 's/^  Height: \(.*\)$/\1/p')

NAME="$1"

wmctrl -xlG | awk -v NAME="$NAME" '$7==NAME {print $1}' | while read WINS; do wmctrl -ir "$WINS" -e "0,0,0,$SCREEN_W,$SCREEN_H"; done

exit 0

Если необходимо произвольное рабочее пространство, тогда нужно добавить / вычесть соответствующее $SCREEN_W / $SCREEN_H, так как много раз рабочее пространство окна будет удалено от целевого.

0
ответ дан 21 March 2011 в 21:41

Если вы используете совместимый оконный менеджер, такой как Metacity (Unity 2-d), вы можете использовать wmctrl для переключения окна на другой рабочий стол. Синтаксис wmctrl -r :ACTIVE: -t <DESKTOP>. Вы также можете изменить текущий рабочий стол, используя wmctrl -s <DESKTOP>. Номера рабочего стола начинаются с 0. В одной строке это будет:

wmctrl -r :ACTIVE: -t 1; wmctrl -s 1

Если вы хотите переключить окно, кроме активного, на другой рабочий стол, используйте текст из заголовка в качестве аргумента -r , Например:

wmctrl -r "Chromium" -t 1

В качестве альтернативы вы можете использовать wmctrl -l для вывода списка доступных окон и передачи идентификатора -r вместо специальной строки :ACTIVE:. При передаче идентификатора вам также необходимо добавить -i. Например:

$ wmctrl -l
0x03e00189  0 hostname Ask Ubuntu - Chromium
$ wmctrl -i -r 0x03e00189 -t 2

(wmctrl может быть установлен на Ubuntu с sudo apt-get install wmctrl.) В настоящее время, к сожалению, это не работает со стандартным Unity.

0
ответ дан 21 March 2011 в 21:41

Попытка:

wmctrl -r “window name(or any string in the title)” -t `wmctrl -d | grep “workspace name” | cut -d" " -f1`

позвольте мне объяснить: в справке шоу wmctrl

    -r <WIN> -t <DESK>   Move the window to the specified desktop.
    <DESK>               A desktop number. Desktops are counted from zero.
    <WIN>          This argument specifies the window. By default it's
                   interpreted as a string. The string is matched
                   against the window titles and the first matching
                   window is used. The matching isn't case sensitive
                   and the string may appear in any position
                   of the title.

                   The -i option may be used to interpret the argument
                   as a numerical window ID represented as a decimal
                   number. If it starts with "0x", then
                   it will be interpreted as a hexadecimal number.

wmctrl -d может перечислить все рабочие области, в моем компьютере теперь показывает следующим:

0  - DG: 1600x900  VP: N/A  WA: 0,0 1600x868  code
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 user-LinuxMint Terminal
0x03a0008e  0 user-LinuxMint Mozilla Firefox


так как "СТОЛ" должен быть числом, я использую grep “workspace name” | 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`

Просто работайте меня однажды, и я не знаю почему!

0
ответ дан 21 March 2011 в 21:41

Это можно сделать с помощью xdotool, , но , если вы используете compiz, это решение может быть неприменимо, поэтому имейте это в виду.

Чтобы переключить конкретное окно (активное окно) на другое рабочее пространство, вы можете использовать

xdotool getactivewindow set_desktop_for_window 1

Или для сценария вы можете захотеть переключить окна конкретной программы на заданное рабочее пространство с помощью: [ 1113]

xdotool search --class firefox set_desktop_for_window %@ 1

Эта команда выполняет поиск и находит окна firefox и переносит их в рабочее пространство 1, где они будут отображаться свернутыми. Чтобы вернуть firefox на рабочий стол по умолчанию, просто замените 1 на 0 в конце команды. Чтобы отправить другое окно в другое рабочее пространство, просто замените firefox на другое имя программы.

Очень важно, чтобы вы использовали %@ для представления окон, переданных из параметра --search, как если бы вы не делали, окна не будут перенесены.

Для получения дополнительной информации см. man xdotool и справочные страницы Ubuntu онлайн.

0
ответ дан 21 March 2011 в 21:41

Другие вопросы по тегам:

Похожие вопросы: