我最近安装了 xscreensaver 以及附加/额外的屏幕保护程序。许多 OpenGL 屏幕保护程序都正常运行,按预期全屏显示。但是,出于某种原因,XAnalogTV 屏幕保护程序在我的屏幕边缘留下了两个“空白”点。
如果我手动启动 XAnalogTV,它会显示一个窗口,并正确填充。当我最大化窗口时,会出现同样的效果:窗口最大化,但屏幕的两个边缘实际上是“透明的”。当屏幕保护程序设置为全屏时也会出现这种效果。
出于这些原因,我认为问题可能与屏幕的宽高比有关。屏幕的边缘实际上被“忽略”,那里什么都没有绘制。具体来说,请注意最大化和全屏屏幕截图之间的过渡(随着垂直高度的增加,未绘制的空白缩小了)。
作为参考,我在一台戴尔 Vostro 1520(Intel P8600、Nvidia 9300M)上运行 Xubuntu 12.04,配有 1440 x 900 显示屏(16:10)。我也设置GetViewPortIsFullOfLies
偏好成真。
有什么方法可以强制 XAnalogTV 填满我的整个屏幕吗?或者,由于我认为问题与宽高比有关,有什么方法可以让屏幕保护程序渲染更大比我的显示器更大,然后简单地丢弃多余的像素?
相关截图(分别为窗口、最大化和全屏):
您可以在最后两张图中看到,尽管这是一个全屏屏幕保护程序,但 Firefox 的滚动条仍然清晰可见。
答案1
经过一番深思熟虑,我决定自己解决这个问题。我在我的博客上发表了一篇文章,其中详细介绍了我修复该问题所采取的步骤。基本流程如下:
- 下载 XScreenSaver 源代码。
- 获取所有构建依赖项,并
./configure
在您的系统上运行。 analogtv.c
在源代码分发版中,找到目录中的文件filehacks
。在该文件中,注释掉(或删除)第 328 行和第 338 行。这两行分别包含代码wlim = hlim * max_ratio
和hlim = wlim / min_ratio
,它们负责防止屏幕保护程序从典型的 4:3 模拟显示器中拉伸得太远。- 运行
make
以构建XScreenSaver 和XAnalogTV。 - 用刚刚构建的二进制文件替换 XAnalogTV 二进制文件(在我的系统目录中找到
/usr/lib/xscreensaver/
)。首先备份旧文件。
重新启动 XScreenSaver 守护程序后,您现在应该有一个可以正常运行的 XAnalogTV 屏幕保护程序:
有关更多详细信息(包括特定命令),请参阅我的博客文章在这里。