我经常希望只在屏幕上显示窗口的顶部或底部。我不想让一个程序占据整个屏幕。例如,我需要引用显示在大窗口底部的计算。要引用该计算,然后在另一个窗口中写入它,我想重新定位该计算,以便只显示计算窗口的最底部。(我不需要看到它的标题栏或下拉菜单,甚至不需要看到计算面板的前 2/3)。
目前,据我所知,所有 Linux 的“桌面”都强制执行一项限制,使得窗口无法重新定位,以致于无法在顶部或底部超出屏幕的一半。
在窗口管理器的黄金时代(WindowMaker 太棒了!),这不是一个问题。据我所知,没有强制“边界”保护面板不被覆盖。我记得,问题始于 Gnome 和 KDE。当 Compiz 出现时,它强制执行一项策略,即窗口不能重新定位,以至于其标题栏不在屏幕上,但 ccsm 有一个选项允许热切的用户更改这一点(我记得称为“constrain-Y”)。当我开始使用基于 OpenBox 和 XFWM4 的系统时,我很怀念这种能力。
在我看来,面板的作者过于积极地保护其产品的首要地位。当我忙着写东西时,我根本不需要看到 Gnome 或 XFCE4 面板。
答案1
前段时间,我找到了一个解决方案,想与大家分享一下。它使用了wmctrl
一个适用于 Debian/Ubuntu 的程序,可以与任何兼容 EWMH/NetWM 的 X 窗口管理器交互。我在 OpenBox、XFWM4 和任何其他兼容 NetWM 标准的窗口管理器中都成功使用了它。
下面是一个两行 bash 脚本,我称之为“togglePanelBelow.sh”
#!/bin/bash
wmctrl -l | grep panel | awk '{print "wmctrl -v -i -r " $1 " -b remove,above"}' | bash
wmctrl -l | grep panel | awk '{print "wmctrl -v -i -r " $1 " -b add,below"}' | bash
这样就可以重新定位普通窗口,使它们与面板重叠。
它用于wmctl
列出现有窗口,过滤名称中带有“面板”的窗口,然后wmctrl
再次用于告诉这些面板进入窗口堆栈下方。有两个步骤,因为在 2015 年的某个时候,脚本停止工作,因为无法更改属性。必须删除它们然后重新设置。
如果您决定想要像以前一样在普通窗口顶部看到面板,请运行togglePanelAbove.sh
。
#!/bin/bash
wmctrl -l | grep panel | awk '{print "wmctrl -v -i -r " $1 " -b remove,below"}' | bash
wmctrl -l | grep panel | awk '{print "wmctrl -v -i -r " $1 " -b add,above"}' | bash
如果将窗口一半放置在屏幕上,然后运行 togglePanelAbove,则面板将与窗口重叠。
我为此配置了快捷键,并且从未造成任何麻烦。
这实际上不是一个问题,只是一篇“看看我发现的这个好东西”的帖子。也许可以问一下:这在您选择的窗口管理器中可以正常工作吗?您能确认它在 OpenBox 和 XFWM4 中可以正常工作吗?其他的呢?例如,我没有热情在 Enlightenment 中测试它。