我怎样才能让 XAnalogTV xscreensaver 填满我的屏幕?

我怎样才能让 XAnalogTV xscreensaver 填满我的屏幕?

我最近安装了 xscreensaver 以及附加/额外的屏幕保护程序。许多 OpenGL 屏幕保护程序都正常运行,按预期全屏显示。但是,出于某种原因,XAnalogTV 屏幕保护程序在我的屏幕边缘留下了两个“空白”点。

如果我手动启动 XAnalogTV,它会显示一个窗口,并正确填充。当我最大化窗口时,会出现同样的效果:窗口最大化,但屏幕的两个边缘实际上是“透明的”。当屏幕保护程序设置为全屏时也会出现这种效果。

出于这些原因,我认为问题可能与屏幕的宽高比有关。屏幕的边缘实际上被“忽略”,那里什么都没有绘制。具体来说,请注意最大化和全屏屏幕截图之间的过渡(随着垂直高度的增加,未绘制的空白缩小了)。

作为参考,我在一台戴尔 Vostro 1520(Intel P8600、Nvidia 9300M)上运行 Xubuntu 12.04,配有 1440 x 900 显示屏(16:10)。我也设置GetViewPortIsFullOfLies偏好成真。

有什么方法可以强制 XAnalogTV 填满我的整个屏幕吗?或者,由于我认为问题与宽高比有关,有什么方法可以让屏幕保护程序渲染更大比我的显示器更大,然后简单地丢弃多余的像素?


相关截图(分别为窗口、最大化和全屏):

XAnalogTV 正常工作(窗口)

XAnalogTV 边缘截止(最大化)

XAnalogTV 边缘截止(全屏)

您可以在最后两张图中看到,尽管这是一个全屏屏幕保护程序,但 Firefox 的滚动条仍然清晰可见。

答案1

经过一番深思熟虑,我决定自己解决这个问题。我在我的博客上发表了一篇文章,其中详细介绍了我修复该问题所采取的步骤。基本流程如下:

  1. 下载 XScreenSaver 源代码。
  2. 获取所有构建依赖项,并./configure在您的系统上运行。
  3. analogtv.c在源代码分发版中,找到目录中的文件file hacks。在该文件中,注释掉(或删除)第 328 行和第 338 行。这两行分别包含代码wlim = hlim * max_ratiohlim = wlim / min_ratio,它们负责防止屏幕保护程序从典型的 4:3 模拟显示器中拉伸得太远。
  4. 运行make以构建XScreenSaver 和XAnalogTV。
  5. 用刚刚构建的二进制文件替换 XAnalogTV 二进制文件(在我的系统目录中找到/usr/lib/xscreensaver/)。首先备份旧文件。

重新启动 XScreenSaver 守护程序后,您现在应该有一个可以正常运行的 XAnalogTV 屏幕保护程序:

在此处输入图片描述

有关更多详细信息(包括特定命令),请参阅我的博客文章在这里

相关内容