wmctrl говорит, что у меня есть одно рабочее пространство, когда у меня есть четыре
Я пытаюсь создать один 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 ответ
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 ))