我的意思是,就像在 Unity 中,当你拖动一个窗口并将其粘贴到“正确的”,它首先显示一个阴影覆盖桌面的右半部分,然后当鼠标释放时窗口会覆盖该半部分。
在 LXDE 上可以做到这一点吗?不一定非要通过拖动窗口;键盘快捷键就更好了!无论如何都很好。
答案1
如果您使用的是 LXDE,则仍然取决于窗口管理器。通常的默认窗口管理器是 Openbox。Openbox 键盘技巧列在此处: http://openbox.org/wiki/Help:Actions
每个提供 LXDE 的发行版都有自己的操作列表。在 Lubuntu 13.10 中,它是使用 Openbox 作为窗口管理器的 LXDE 版本,您可以在此处进行设置:
/home/用户/.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 版本。
我不知道阴影效果。
答案2
我正在使用 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>
答案3
我创建了这个东西,它是半最大化左/右/上/下的一个更高级版本。也可以在此处查看 Gisthttps://gist.github.com/zrajm/3621cc90d9bc30d06bbe926fc8b2692a
窗口平铺的按键绑定
为了使以下代码正常工作,请将其插入到 Openbox 配置部分。在 Lubuntu 上,它被称为~/.config/openbox/lubuntu-rc.xml
。要在修改配置后重新加载配置,您可以注销并再次登录,或运行以下命令:
openbox --reconfigure
如何使用它
Windows 键 + 箭头:将窗口调整为半屏。组合键(例如 Windows-Up 后跟 Windows-Left)可用于将窗口调整为四分之一屏。同方向按两次(例如 Windows-Right + Windows-Right)可最大化窗口。
窗口空间:切换窗口装饰/边框(即打开/关闭标题栏、关闭按钮等)。为了真正实现屏幕最大化,您可能还想删除每个窗口周围的一个像素边框,但这只能通过将其放入您的 openbox 配置<keepBorder>no</keepBorder>
中来实现<theme>
。(遗憾的是,它无法为每个单独的窗口切换,至少在 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>