Действительно ли возможно “полумаксимизировать левый или правый” в LXDE всегда?

Я имею в виду как в Единице, когда Вы перетаскиваете окно и прикрепляете его к "праву", оно сначала показывает тень, покрывающую правильную половину рабочего стола, и затем окно покрыло бы ту половину на выпуске мыши.

Действительно ли возможно сделать это на LXDE? Нисколько обязательно путем перетаскивания окна; сочетание клавиш было бы большим! Любой способ вообще был бы отличным.

1
задан 24 March 2014 в 04:00

3 ответа

При использовании 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 версия.

я не знаю об эффекте тени.

1
ответ дан 11 November 2019 в 12:49

Я использую 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>
0
ответ дан 11 November 2019 в 12:49

Я создал эту штуку, которая является более продвинутой версией полумаксимума влево/вправо/вверх/вниз. Также доступен в виде 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: Переключает декорации/границы окна (т.е. включает/выключает строку заголовка, кнопку закрытия и т.д.). Чтобы это действительно максимизировало экран, вы также можете удалить границу в один пиксель вокруг каждого окна, но это можно сделать, только поместив no внутри вашей конфигурации 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>
0
ответ дан 15 May 2020 в 23:34

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

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