Lubuntu 19.10 和 20.04 (LTS) 使用 Openbox 作为窗口管理器。
对于 Lubuntu 18.04 和 19.04,允许用户编辑各种 Openbox 设置的文件,lubuntu-rc.xml和rc.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 中使用的相同平铺快捷键,这里有经过修改的形式。我将 键Control与Super键和相关箭头键一起使用,而不仅仅是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 的回答很棒。
一般来说,仅涉及两个步骤:
- 在全局操作管理器 (GAM) 中禁用“Super_L”条目。
- 在 Openbox 配置中添加条目
lxqt-rc.xml
。
禁用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>