Я имею в виду как в Единице, когда Вы перетаскиваете окно и прикрепляете его к "праву", оно сначала показывает тень, покрывающую правильную половину рабочего стола, и затем окно покрыло бы ту половину на выпуске мыши.
Действительно ли возможно сделать это на LXDE? Нисколько обязательно путем перетаскивания окна; сочетание клавиш было бы большим! Любой способ вообще был бы отличным.
При использовании LXDE он все еще зависит от менеджера окон. Обычным менеджером окон по умолчанию является Openbox. Приемы клавиатуры Openbox перечислены здесь: http://openbox.org/wiki/Help:Actions
Каждый дистрибутив, предлагающий LXDE, идет со своим собственным списком действий. В Lubuntu 13.10, который является разновидностью LXDE с Openbox как менеджер окон, у Вас есть настройки здесь:
/home/user/.config/openbox/lubuntu-rc.xml
И часть которого, возможно, относящийся к Вам является этим:
<!-- Keybindings for window tiling --> <keybind key="W-Left"> # HalfLeftScreen <action name="UnmaximizeFull"/> <action name="MoveResizeTo"> <x>0</x><y>0</y> <height>97%</height> <width>50%</width> </action> </keybind> <keybind key="W-Right"> # HalfRightScreen <action name="UnmaximizeFull"/> <action name="MoveResizeTo"> <x>-0</x><y>0</y> <height>97%</height> <width>50%</width> </action> </keybind> <keybind key="W-Up"> # HalfUpperScreen <action name="UnmaximizeFull"/> <action name="MoveResizeTo"> <x>0</x><y>0</y> <width>100%</width> <height>50%</height> </action> </keybind> <keybind key="W-Down"> # HalfLowerScreen <action name="UnmaximizeFull"/> <action name="MoveResizeTo"> <x>0</x><y>-0</y> <width>100%</width> <height>50%</height> </action> </keybind>
существует также основанный на мыши метод, но я думаю, что это не доступно по умолчанию. Вам будет нужно Opensnap ppa. Проверьте, доступно ли это для Вашего *buntu версия.
я не знаю об эффекте тени.
Я использую LXDE, и я имел успех, изменяющийся ~/.config/openbox/lxde-rc.xml с xml ниже. Это делает полумаксимизирование (слева/справа) для расположения рядом как в MS Windows.
<keybind key="W-Left">
<action name="UnmaximizeFull"/>
<action name="MaximizeVert"/>
<action name="MoveResizeTo">
<x>0</x>
<y>0</y>
<width client="yes">1/2</width>
</action>
</keybind>
<keybind key="W-Right">
<action name="UnmaximizeFull"/>
<action name="MaximizeVert"/>
<action name="MoveResizeTo">
<x>-0</x>
<y>0</y>
<width client="yes">1/2</width>
</action>
</keybind>
Я создал эту штуку, которая является более продвинутой версией полумаксимума влево/вправо/вверх/вниз. Также доступен в виде Gist здесь https://gist.github.com/zrajm/3621cc90d9bc30d06bbe926fc8b2692a
Чтобы приведенный ниже код работал, вставьте его в раздел конфигурации Openbox. В Lubuntu он называется ~/.config/openbox/lubuntu-rc.xml
.Чтобы перезагрузить конфигурацию после ее изменения, вы можете либо выйти из системы и войти снова, либо выполнить команду:
openbox --reconfigure
Клавиша Windows + стрелки: Изменяет размер окна на половину экрана. Комбинации (например, Windows-Up с последующим Windows-Left) можно использовать для изменения размера до четверти экрана. Дважды в одном и том же направлении (например, Windows-Right + Windows-Right) максимизирует окно.
Window-Space: Переключает декорации/границы окна (т.е. включает/выключает строку заголовка, кнопку закрытия и т.д.). Чтобы это действительно максимизировало экран, вы также можете удалить границу в один пиксель вокруг каждого окна, но это можно сделать, только поместив
внутри
вашей конфигурации openbox. (К сожалению, его нельзя переключать для каждого отдельного окна, по крайней мере, не в Openbox 3.6.1.) Даже с отключенными украшениями обычные сочетания клавиш Alt-F4 для закрытия, Alt + мышь для перетаскивания и т. д. все еще работают.
Размеры окон терминала (а может быть и каких-то других?) меняются ступенчато (величина шага зависит от размера шрифта, используемого в окне). Эти окна могут не полностью заполнять ожидаемую часть экрана, оставляя промежутки между окнами. Приведенный ниже код пытается минимизировать проблему двумя способами:
Во-первых, я масштабирую окна терминала до 50,5% экрана, а не до ожидаемых 50%. (Ну, на самом деле я использую дробь '101/200' по причинам синтаксиса, но вы поняли.) Это, кажется, работает для меня (иногда мои терминалы немного выходят за пределы экрана). Найдите `x-terminal-emulator' ниже, чтобы увидеть, как это делается.
Во-вторых: чтобы не раздражать промежутки между окнами, я размещаю окна так, чтобы промежутки появлялись по краям экрана, а не между окнами. Есть надежда, что это вызовет наименьшее отвлечение, если вы настроили оконный менеджер на подъем окон при входе в них указателя мыши. Благодаря отсутствию промежутка между окнами отсутствует риск того, что вы случайно войдете в фоновое окно (в результате чего оно внезапно поднимется вверх) при перемещении указателя между окнами. (Недостаток в том, что если вы привыкли подталкивать указатель к краю экрана, чтобы убрать его с дороги, вместо этого вы можете случайно поднять фоновое окно таким образом.) На самом деле нет никакого способа решить эту проблему. , только компромиссы. Если вам не нравится мое предпочтительное поведение, в приведенном ниже коде есть комментарии, которые помогут вам изменить его. Просто найдите комментарии, содержащие «на краю экрана», и активируйте закомментированный код непосредственно перед этим (изменение необходимо сделать в четырех местах, по одному для каждой клавиши со стрелкой).
<!-- Windows-Space: Toggle window decorations. -->
<keybind key="W-space">
<action name="ToggleDecorations"/>
</keybind>
<!-- Windows-Left: Left half of screen. -->
<keybind key="W-Left">
<action name="Raise"/>
<action name="If"><query target="default">
<maximized>no</maximized>
<maximizedvertical>yes</maximizedvertical>
</query><then>
<!-- Only vertically maximized: Maximize completely. -->
<action name="Maximize"/>
</then><else>
<action name="If"><query target="default">
<maximizedhorizontal>no</maximizedhorizontal>
</query><then>
<!-- Not horizontally maximized: Maximize vertically. -->
<action name="Maximize"><direction>vertical</direction></action>
</then></action>
<!-- Halve window width. -->
<action name="Unmaximize"><direction>horizontal</direction></action>
<action name="If">
<query target="default"><name>x-terminal-emulator</name></query>
<then><action name="MoveResizeTo"><width client="yes">101/200</width></action></then>
<else><action name="MoveResizeTo"><width client="yes">1/2</width></action></else>
</action>
<!-- Put on left half of screen. -->
<action name="MoveResizeTo">
<x client="yes">-50%</x> <!-- right edge at screen midpoint -->
<!--x client="yes">0</x--> <!-- left edge at screen edge -->
</action>
</else></action>
</keybind>
<!-- Windows-Right: Right half screen. -->
<keybind key="W-Right">
<action name="Raise"/>
<action name="If"><query target="default">
<maximized>no</maximized>
<maximizedvertical>yes</maximizedvertical>
</query><then>
<!-- Only vertically maximized: Maximize completely. -->
<action name="Maximize"/>
</then><else>
<action name="If"><query target="default">
<maximizedhorizontal>no</maximizedhorizontal>
</query><then>
<!-- Not horizontally maximized: Maximize vertically. -->
<action name="Maximize"><direction>vertical</direction></action>
</then></action>
<!-- Halve window width. -->
<action name="Unmaximize"><direction>horizontal</direction></action>
<action name="If">
<query target="default"><name>x-terminal-emulator</name></query>
<then><action name="MoveResizeTo"><width client="yes">101/200</width></action></then>
<else><action name="MoveResizeTo"><width client="yes">1/2</width></action></else>
</action>
<!-- Put on right half of screen. -->
<action name="MoveResizeTo">
<x client="yes">50%</x> <!-- left edge at screen midpoint -->
<!--x client="yes">-0</x--> <!-- right edge at screen edge -->
</action>
</else></action>
</keybind>
<!-- Windows-Up: Upper half of screen. -->
<keybind key="W-Up">
<action name="Raise"/>
<action name="If"><query target="default">
<maximized>no</maximized>
<maximizedhorizontal>yes</maximizedhorizontal>
</query><then>
<!-- Only horizontally maximized: Maximize completely. -->
<action name="Maximize"/>
</then><else>
<action name="If"><query target="default">
<maximizedvertical>no</maximizedvertical>
</query><then>
<!-- Not vertically maximized: Maximize horizontally. -->
<action name="Maximize"><direction>horizontal</direction></action>
</then></action>
<!-- Halve window height. -->
<action name="Unmaximize"><direction>vertical</direction></action>
<action name="If">
<query target="default"><name>x-terminal-emulator</name></query>
<then><action name="MoveResizeTo"><height client="yes">101/200</height></action></then>
<else><action name="MoveResizeTo"><height client="yes">1/2</height></action></else>
</action>
<!-- Put on upper half of screen. -->
<action name="MoveResizeTo">
<y client="yes">-50%</y> <!-- bottom edge at screen midpoint -->
<!--x client="yes">0</x--> <!-- top edge at screen edge -->
</action>
</else></action>
</keybind>
<!-- Windows-Down: Lower half of screen. -->
<keybind key="W-Down">
<action name="Raise"/>
<action name="If"><query target="default">
<maximized>no</maximized>
<maximizedhorizontal>yes</maximizedhorizontal>
</query><then>
<!-- Only horizontally maximized: Maximize completely. -->
<action name="Maximize"/>
</then><else>
<action name="If"><query target="default">
<maximizedvertical>no</maximizedvertical>
</query><then>
<!-- Not vertically maximized: Maximize horizontally. -->
<action name="Maximize"><direction>horizontal</direction></action>
</then></action>
<!-- Halve window height. -->
<action name="Unmaximize"><direction>vertical</direction></action>
<action name="If">
<query target="default"><name>x-terminal-emulator</name></query>
<then><action name="MoveResizeTo"><height client="yes">101/200</height></action></then>
<else><action name="MoveResizeTo"><height client="yes">1/2</height></action></else>
</action>
<!-- Put on lower half of screen. -->
<action name="MoveResizeTo">
<y client="yes">50%</y> <!-- top edge at screen midpoint -->
<!--x client="yes">-0</x--> <!-- bottom edge at screen edge -->
</action>
</else></action>
</keybind>