更新的问题
根据@mosvy的出色评论,实际上是窗口管理器尊重或忽略了窗口的传播大小提示。不幸的是,我找不到不发送大小提示urxvt
或忽略发送的方法的方法OpenBox
。
所以我想我的问题真的是:有没有办法urxvt
停止发送大小提示?或者有没有办法配置OpenBox
为忽略特定应用程序的发送大小提示?
原始问题:'urxvt 无缝窗口大小'
我使用 OpenBox 作为我的窗口管理器,并且我配置了一些热键以将窗口移动到具有指定窗口大小的屏幕的某些区域。所有窗口都尊重这一点,除了urxvt
根据它显示的字符的字体大小来计算它的大小。但是,如果urxvt
处于全屏模式†,它能够无间隙地填充屏幕。 (我假设它只是使用配置的 X 背景并填充窗口周围的剩余空间——但我可能错了。)
所以我的问题是:是否有一个内置的配置选项或者可能是一个 perl 扩展,urxvt
当它不处于全屏模式时,它可以填充窗口管理器给它的所有空间而没有间隙?
†可能值得一提的是,我已经在使用perl 扩展以获得适当的全屏体验。
修复它的最简单方法是修改源代码
rxvt
或源代码openbox
并重新编译——在这个答案的底部查看两个非常简单的补丁。另一种方法是使用
LD_PRELOAD
hack,在获取窗口属性时关闭PResizeInc
标志WM_NORMAL_HINTS
,并在设置该属性时阻止它被打开。这只会影响width_inc
和height_inc
属性——设置最小窗口大小或其纵横比的程序将继续正常工作。然后
urxvt
或openbox
将必须与在他们的环境中变化。例子:
这有两个问题:
1)
urxvt
通常安装为 utmp setgid 二进制文件,并且在LD_PRELOAD
执行 set[gu]id 二进制文件时会清除该变量。查看手册页了解为什么(不需要)需要 utmp 权限。因此,您必须将urxvt
可执行文件复制到其他地方(这将关闭 setgid 位)。例子:2) 窗口管理器通常在许多系统上通过脚本调用
ssh-agent
,/etc/X11/Xsession.d
并且ssh-agent
还会LD_PRELOAD
从环境中擦除变量。所以可能需要这样的东西:可能的补丁
openbox-3.6.1
:和
rxvt-unicode-9.22
:两者都反对 debian 9.5 的版本;它们只适用于
patch -l
——我不知道如何让这该死的东西保留标签。