5

Я пытаюсь создать один gvim для каждой рабочей области, используя этот сценарий в качестве отправной точки: http://www.openhex.org/notes/2011/1/27/one-vim-server-per-desktops.

Я знаю, когда я впервые нашел этот скрипт несколько месяцев назад, wmctrl -d перечислил четыре рабочих пространства. Но теперь, когда я пытаюсь это сделать, он показывает только одно:

$ wmctrl -d
0  * DG: 7208x1003  VP: 0,0  WA: 0,0 1802x976  Workspace 1

Список окон показывает, что все они находятся на одном рабочем столе, но разнесены по ширине экрана:

$ wmctrl -lGx
0x02200003  0 0    1952 1802 27   gnome-panel.Gnome-panel  ned-vbox Bottom Expanded Edge Panel
0x0260001e  0 0    0    1802 1003 desktop_window.Nautilus  ned-vbox x-nautilus-desktop
0x04600004  0 332  140  1169 722  gnome-terminal.Gnome-terminal  ned-vbox Terminal
0x046000c6  0 116  288  1433 512  gnome-terminal.Gnome-terminal  ned-vbox Terminal
0x0480001e  0 388  48   1604 948  gvim.Gvim             ned-vbox .bashrc (~) - GVIM
0x04604c55  0 784  48   1214 948  gnome-terminal.Gnome-terminal  ned-vbox Terminal

Это Ubuntu 10.10, запускающий compiz в виртуальной коробке (именно поэтому экран имеет ширину 1802 пикселя).

Почему мои рабочие пространства не видны в wmctrl? Они работают правильно в графическом интерфейсе, все сочетания клавиш работают так, как должны, и элементы меню для перемещения окон между рабочими пространствами - это нормально. Как мне заставить wmctrl показать мне, что я хочу? Есть ли другой способ получить точную информацию о рабочем месте?

1 ответ1

8

Compiz реализует окна просмотра вместо рабочих столов. Вы можете рассчитать количество видов на основе ширины рабочего стола:

$ wmctrl -d
0  * DG: 7680x1200  VP: 0,0  WA: 0,0 1920x1175  Workspace 1

Это говорит о том, что у меня четыре видовых экрана (7680/1920 = 4), и я сейчас смотрю на первый. (К сожалению, я не вижу способа в wmctrl надежно извлечь ширину области просмотра, потому что рабочая область будет уменьшаться, если у вас есть панель, занимающая место по краю. Вы можете использовать жесткие числа или использовать xdpyinfo, чтобы найти размеры в пикселях вашего экрана.)

Чтобы переключиться на второй видовой экран:

$ wmctrl -o 1920,0

Если вы хотите разобрать этот материал в bash, вот пример:

$ dimensions=$(xdpyinfo | awk '$1=="dimensions:"{print $2}')
$ screen_width=${dimensions%x*}
$ info=( $(wmctrl -d | awk '{print $4, $6}') )
$ desktop_width=${info[0]%x*}
$ viewports=$(( desktop_width / screen_width ))
$ current_vp=$(( ${info[1]%,*} / screen_width ))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .