Lubuntu 19.10 & 20.04:如何平铺窗口?lxqt-rc.xml 中缺少窗口平铺部分

Lubuntu 19.10 & 20.04:如何平铺窗口?lxqt-rc.xml 中缺少窗口平铺部分

Lubuntu 19.10 和 20.04 (LTS) 使用 Openbox 作为窗口管理器。

对于 Lubuntu 18.04 和 19.04,允许用户编辑各种 Openbox 设置的文件,lubuntu-rc.xmlrc.xml 文件分别有一个名为“窗口平铺的键绑定”的部分,其中包含用于

  • 左半屏
  • 右半屏
  • HalfUpperScreen 和
  • 半下屏

Lubuntu 19.10 和 20.04 (LTS) 的 ~/.config/openbox/lxqt-rc.xml 中缺少该部分。

我按照发行说明删除

  • ~/.config/lxqt/globalkeyshortcuts.conf
  • ~/.config/lxqt/lxqt-runner.conf 和
  • 〜/ .config / openbox / lxqt-rc.xml

以及注销并重新登录。但是,rc.xml 文件仍然没有窗口平铺部分。

Super我了解到,也称为键的某些功能与 LXQt 存在冲突Meta。(所有窗口平铺键盘快捷键最初都使用该Super键。)

Lubuntu 19.10 和 20.04 的用户可以做什么来恢复“窗口平铺”键盘快捷键?

答案1

编辑日期:20220907: 作为LXQt 0.17.0(2021 年 4 月),“为了与 WM 无关,Openbox 配置已被删除”,并且~/.config/openbox/lxqt-rc.xml不再被识别,而仍然~/.config/openbox/rc.xml可以被识别。

编辑日期:20200526: 谢谢这个问题,我意识到另一个解决方案是将显示/隐藏 LXQt 菜单的快捷方式更改为类似Meta+ 的快捷方式Space。换句话说,如果将Meta+设置Space为显示/隐藏 LXQt 的菜单,则“纯”Super可用于~/.config/openbox/lxqt-rc.xml。无需使用C+W下面详述的组合。您的 18.04lubuntu-rc.xml现在将在 Lubuntu 20.04(和 19.10)中运行。


本答案适用于 Lubuntu 19.10 和 Lubuntu 20.04

并且,为了清楚起见,Lubuntu 会话中使用的文件应该是~/.config/openbox/lxqt-rc.xml,而纯 Openbox 会话中的文件应该命名为~/.config/openbox/rc.xml


如何捕捉窗口?,Lubuntu 团队的一名成员建议在rc.xml 文件带回窗口平铺并解决我在问题中提到的冲突:

... 在 19.04+ 中,您将遇到与使用键打开菜单的 lxqt-globalkeys 冲突,因此请禁用它、重新配置它,或者在此处使用 Windows 键以外的其他键。

请查看Lubuntu 20.04 使用手册其中有默认键盘快捷键列表,但也提到了这一点:

Global-keys 将优先于 openbox 绑定。如果在 Global-keys 中使用了某个键,它将无法在 Openbox 键盘快捷键中使用。例如,如果 W(indows)键在 Global-keys 中打开 LXQT 应用程序菜单(相当于 Windows 开始菜单),Openbox 命令(如窗口调整大小(W + 箭头键))将无法正常工作。使用和编辑键盘快捷键时请记住这一点。


如果想要使用 Lubuntu 19.04 中使用的相同平铺快捷键,这里有经过修改的形式。我将 键ControlSuper键和相关箭头键一起使用,而不仅仅是Super键和相关箭头键。

下面列出的键盘快捷键的一个重要点是用户必须第一的按住Ctrl键,然后按住Super键,再按相关箭头键,最后松开所有键。如果用户先按下Super键,然后再按下Ctrl键,则快捷键将不起作用。

    <!--
        Lubuntu specific.
        Keybindings for window tiling
    -->
    <!--
        # HalfLeftScreen
    -->
  <keybind key="C-W-Left">
    <action name="UnmaximizeFull"/>
    <action name="MoveResizeTo">
      <x>0</x>
      <y>0</y>
      <height>100%</height>
      <width>50%</width>
    </action>
  </keybind>
    <!--
        # HalfRightScreen
    -->
  <keybind key="C-W-Right">
    <action name="UnmaximizeFull"/>
    <action name="MoveResizeTo">
      <x>-0</x>
      <y>0</y>
      <height>100%</height>
      <width>50%</width>
    </action>
  </keybind>
    <!--
        # HalfUpperScreen
    -->
  <keybind key="C-W-Up">
    <action name="UnmaximizeFull"/>
    <action name="MoveResizeTo">
      <x>0</x>
      <y>0</y>
      <width>100%</width>
      <height>50%</height>
    </action>
  </keybind>
    <!--
        # HalfLowerScreen
    -->
  <keybind key="C-W-Down">
    <action name="UnmaximizeFull"/>
    <action name="MoveResizeTo">
      <x>0</x>
      <y>-0</y>
      <width>100%</width>
      <height>50%</height>
    </action>
  </keybind>

编辑完成后,打开终端并运行openbox --reconfigure以使键绑定生效。或者,注销并重新登录。


我没有包含最大化或最小化窗口的键盘快捷键,因为这些操作和许多其他操作都可以通过按Alt+轻松访问Spacebar。请注意,Openbox 更喜欢使用图标化代替最小化

答案2

DK Bose 的回答很棒。

一般来说,仅涉及两个步骤:

  1. 在全局操作管理器 (GAM) 中禁用“Super_L”条目。
  2. 在 Openbox 配置中添加条目lxqt-rc.xml

禁用Super_L

搜索“快捷键”。

查找Super_L条目并禁用它 在此处输入图片描述

配置 Openbox 键盘绑定。

很好的键盘绑定条目在这里openbox 文档,他们称之为“窗口捕捉”:

<keybind key="W-Left">
    <action name="UnmaximizeFull"/>
    <action name="MaximizeVert"/>
    <action name="MoveResizeTo">
        <width>50%</width>
    </action>
    <action name="MoveToEdge"><direction>west</direction></action>
</keybind>
<keybind key="W-Right">
    <action name="UnmaximizeFull"/>
    <action name="MaximizeVert"/>
    <action name="MoveResizeTo">
        <width>50%</width>
    </action>
    <action name="MoveToEdge"><direction>east</direction></action>
</keybind>

然后通过运行重新配置 Openbox openbox --reconfigure

答案3

上面的解决方案很好。:-)

同时我编写了一个脚本来执行相同的操作。您可以将其连接到 lxqt 快捷键 - meta+left 等:

#!/bin/bash 
# -x

offset_lubuntu_panel=50
width=$(wmctrl -d |head -n1 | cut -f5 -d' '|cut -dx -f1) # size of your monitor, say 1600x900
height=$(( $(wmctrl -d |head -n1 | cut -f5 -d' '|cut -dx -f2) - offset_lubuntu_panel))
width_half=$((width/2))
height_half=$((height/2))

case $1 in
    left)
        wmctrl -r :ACTIVE:  -b remove,maximized_vert,maximized_horz # un-maximizing an active window:
        sleep .1
        wmctrl -r :ACTIVE: -e 0,0,0,$width_half,$height # left half
        ;;
    right) 
        wmctrl -r :ACTIVE:  -b remove,maximized_vert,maximized_horz # un-maximizing an active window:
        sleep .1
        wmctrl -r :ACTIVE: -e 0,$width_half,0,$width_half,$height # right half
        ;;
    up)
        wmctrl -r :ACTIVE:  -b remove,maximized_vert,maximized_horz # un-maximizing an active window:
        sleep .1
        wmctrl -r :ACTIVE: -e 0,0,0,$width,$height_half # upper half
        ;;
    down)
        wmctrl -r :ACTIVE:  -b remove,maximized_vert,maximized_horz # un-maximizing an active window:
        sleep .1
        wmctrl -r :ACTIVE: -e 0,0,$height_half,$width,$height_half # lower half
        ;;
    max)
        wmctrl -r :ACTIVE:  -b add,maximized_vert,maximized_horz # maximizing the current  window
        ;;
    *)
        echo -e "\t$(basename $0) [left|right|up|down|max]"
            echo -e "\t\twmctrl -r :ACTIVE: -e 0,0,0,$width,$heightpulka  # gravity,x,y,w,h"
            echo -e "\tRun: lxqt-config-globalkeyshortcuts to add shortcuts to your system"
            echo -e "\tor edit manually this file: ~/.config/lxqt/globalkeyshortcuts.conf"
        echo
        ;;
esac

答案4

您的回答帮助我能够在 Lubuntu 22.04 和 LXQt 0.17.0 中使用窗口平铺。我刚刚在 DK Bose 的代码中添加了四个角落的屏幕、一个最大屏幕和一个中间屏幕。

<!--
    Lubuntu specific.
    Keybindings for window tiling
-->
<!--
    # HalfLeftScreen
-->
<keybind key="C-W-Left">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>0</y>
    <height>100%</height>
    <width>50%</width>
  </action>
</keybind>
<!--
    # HalfRightScreen
-->
<keybind key="C-W-Right">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>-0</x>
    <y>0</y>
    <height>100%</height>
    <width>50%</width>
  </action>
</keybind>
<!--
    # HalfUpperScreen
-->
<keybind key="C-W-Up">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>0</y>
    <width>100%</width>
    <height>50%</height>
  </action>
</keybind>
<!--
    # HalfLowerScreen
-->
<keybind key="C-W-Down">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>-0</y>
    <width>100%</width>
    <height>50%</height>
  </action>
</keybind>
<!--
    # UpperLeftScreen
-->
<keybind key="C-W-A-Prior">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>0</y>
    <height>50%</height>
    <width>50%</width>
  </action>
</keybind>
<!--
    # UpperRightScreen
-->
<keybind key="C-W-A-Next">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>-0</x>
    <y>0</y>
    <height>50%</height>
    <width>50%</width>
  </action>
</keybind>
<!--
    # LowerLeftScreen
-->
<keybind key="C-W-A-Left">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>-0</y>
    <width>50%</width>
    <height>50%</height>
  </action>
</keybind>
<!--
    # LowerRightScreen
-->
<keybind key="C-W-A-Right">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>-0</x>
    <y>-0</y>
    <width>50%</width>
    <height>50%</height>
  </action>
</keybind>
<!--
    # MaxScreen
-->
<keybind key="C-W-A-Up">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>0</y>
    <width>100%</width>
    <height>100%</height>
  </action>
</keybind>
<!--
    # MidScreen
-->
<keybind key="C-W-A-Down">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>25%</x>
    <y>25%</y>
    <width>50%</width>
    <height>50%</height>
  </action>
</keybind>

相关内容