Мне удалось получить Aero влево и вправо, работая над metacity Ubuntu 14.10, и теперь я хотел бы придумать правильные команды winctrl, чтобы я мог имитировать тот же эффект на двух настройках экрана, где два экрана расположены горизонтально рядом друг с другом, как показано на изображении ниже. Я хочу, чтобы это работало на Metacity (классика GNOME), я не хочу вообще переходить к другим оконным менеджерам, так как я знаю, что некоторые из них уже имеют эти возможности. Итак, это вопрос, чтобы попытаться найти ответ для классической среды Metacity GNOME:
Я хочу расширить мои текущие команды winctrl. В настоящее время они работают, используя половину общей ширины экрана влево или вправо от общей длины экрана. Ввод Super_L+left заставит активное окно использовать левую половину, а ввод Super_L+right заставит активное окно использовать правый половинный размер всех горизонтальных пикселей.
[hpenvy15 ~] $ cat > ~/bin/left.sh
#!/bin/bash
sleep 0.1 && wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -e 0,0,0,`xwininfo -root | grep Width | awk '{ print (($2/2))}'`,`xwininfo -root | grep Height | awk '{ print $2 }'`
^C
[hpenvy15 ~] $ cat > ~/bin/right.sh
#!/bin/bash
sleep 0.1 && wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -e 0,`xwininfo -root | grep Width | awk '{ print (($2/2)+5) ",0," (($2/2)) }'`,`xwininfo -root | grep Height | awk '{ print $2 }'`
^C
В новой настройке с два экрана, у меня 1920 + 1920 пикселей в ширину. Идеальная ширина окна составляет половину 1920 года, это 1920/2 = 960. Я хотел бы, чтобы новые команды left и right вычисляли, где находится найденное окно, тогда, если набрано left, чтобы перейти к ближайшему 960-пиксельному блоку, в любом из 4 блоков, присутствующих в два экрана, 1920 + 1920 конфигурации, но также работают с ближайшим 960-широкоугольным блоком в конфигурации одного экрана 1920 года. Диаграмма показана ниже:
Это конфигурация, когда у меня есть внешний экран в 1 и 2, а экран ноутбука в 3 и 4. В настоящее время нажатие Super_L+left переместит окно в TotalWidth / 2 левой половины экрана, которая будет слишком большой, перейдя на 1 + 2.
Я бы хотел, чтобы первая команда left переместила ее на панель 3, затем следующую команду left, чтобы переместить ее на 2, затем следующую, чтобы переместить ее в 1.
+-------------------++-------------------++-------------------++-------------------+
| || || || +------------+ |
| || || || | | |
| || || <-------++-+ | |
| || || || | | |
| 1 || 2 || 3 || | 4 | |
| || || || | | |
| || || || +------------+ |
| || || || |
| || || || |
+-------------------++-------------------++-------------------++-------------------+
Это конфигурация, когда у меня есть только экран ноутбука в двух половинах шириной 960 пикселей.
В настоящее время нажатие Super_L+right переместит окно в TotalWidth / 2 правую половину экран, который соответствует номеру 4.
+-------------------++-------------------+
| +------------+ || |
| | | || |
| | | || |
| | |----++---> |
| | 3 | || 4 |
| | | || |
| | | || |
| +------------+ || |
| || |
+-------------------++-------------------+
Это выход wmctrl, когда два экрана включены:
wmctrl -d
0 * DG: 3840x1080 VP: 0,0 WA: 0,0 3840x1080 Workspace 1
1 - DG: 3840x1080 VP: N/A WA: 0,0 3840x1080 Workspace 2
2 - DG: 3840x1080 VP: N/A WA: 0,0 3840x1080 Workspace 3
3 - DG: 3840x1080 VP: N/A WA: 0,0 3840x1080 Workspace 4
И это вывод xrandr также, когда два экрана включены:
[hpenvy15 ~] $ xrandr
Screen 0: minimum 8 x 8, current 3840 x 1080, maximum 32767 x 32767
eDP1 connected primary 1920x1080+1920+0 (normal left inverted right x axis y axis) 344mm x 193mm
1920x1080 60.1*+ 59.9 40.0
1680x1050 60.0 59.9
1600x1024 60.2
1400x1050 60.0
1280x1024 60.0
1440x900 59.9
1280x960 60.0
1360x768 59.8 60.0
1152x864 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 521mm x 293mm
1920x1080 60.0*+ 50.0 59.9 30.0 25.0 24.0 30.0 24.0
1920x1080i 60.1 50.0 60.0
1680x1050 59.9
1600x900 60.0
1280x1024 75.0 60.0
1440x900 59.9
1366x768 59.8
1280x800 59.9
1152x864 75.0
1280x720 60.0 50.0 59.9
1440x576i 50.1
1024x768 75.1 70.1 60.0
1440x480i 60.1 60.1
832x624 74.6
800x600 72.2 75.0 60.3
720x576 50.0
720x480 60.0 59.9
640x480 75.0 72.8 66.7 60.0 59.9
720x400 70.1
VIRTUAL1 disconnected (normal left inverted right x axis y axis)