XScreenSaver
XScreenSaver 是一款具有图形效果的屏保和屏幕锁定程序。X Window System 默认具备功能性的屏幕保护(在 电源管理 方面)。
安装
安装 xscreensaver 包。
若要获得 Arch Linux 品牌体验,请安装 xscreensaver-arch-logoAUR 包。
配置
大多数选项是逐用户配置的,通过运行 xscreensaver-settings。xscreensaver-settings 将选择的配置写入 ~/.xscreensaver,并丢弃对该文件的任何手动修改。全局选项定义在 /usr/lib/X11/app-defaults/XScreenSaver。
至少从 XScreenSaver 5.22 版本开始,还有另一种编辑 XScreenSaver 用户配置的方法,即使用 X resources。
主题
从 6.0 版本开始,XScreenSaver 附带了几个预装主题。您可以使用 xscreensaver-settings 选择主题,或通过更改 dialogTheme 选项(在 ~/.xscreensaver 中为 dialogTheme: themename 或使用 X resources:xscreensaver-auth.dialogTheme: themename)来选择主题。
您可以使用 X resources 来自定义主题。下面的示例演示了如何更改某些颜色和字体。如果您使用的是非默认主题,请将 default 替换为您选择的主题名称(小写),或使用问号 (?) 来影响所有主题。
~/.Xresources
! Font for regular texts. ! Font names are case-insensitive. ! You can use a comma-separated list of fonts to set a fallback font. xscreensaver-auth.default.Dialog.bodyFont: times new roman 12, dejavu serif 12 ! Window background color. You can use color names. xscreensaver-auth.default.Dialog.background: black ! Main text color. You can also use HEX color codes. xscreensaver-auth.default.Dialog.foreground: #ffffff
您可以在 /usr/lib/X11/app-defaults/XScreenSaver 中查看可用 X resources 的列表。
更改后请不要忘记 重新加载资源文件。
DPMS 和屏幕空白设置
XScreenSaver 独立于 X 本身管理屏幕空白和显示节能(DPMS)并覆盖它。要配置空白、待机、显示器关闭等设置的计时,请使用 xscreensaver-demo 或手动编辑配置文件,例如 ~/.xscreensaver。
timeout: 1:00:00 cycle: 0:05:00 lock: False lockTimeout: 0:00:00 passwdTimeout: 0:00:30 fade: True unfade: False fadeSeconds: 0:00:03 dpmsEnabled: True dpmsStandby: 2:00:00 dpmsSuspend: 2:00:00 dpmsOff: 4:00:00
可以通过启动 xscreensaver-demo,并在 _Mode_ 设置中选择 _Disable Screen Saver_ 来禁用 DPMS 和屏幕空白。
用法
--no-splash 开关。有关选项的完整列表,请参见 xscreensaver(1)。在 LXDE 和 LXQt 环境中,如果 XScreenSaver 可用,它会自动启动——无需进一步操作。
对于其他环境,请参阅 Autostarting。
在 KDE Plasma 中,屏保和锁定功能由 ksmserver 处理,这与 XScreenSaver 冲突。要禁用它,请 编辑 plasma-ksmserver.service 用户单元。
~/.config/systemd/user/plasma-ksmserver.service.d/override.conf
[Service] ExecStart= ExecStart=/usr/bin/ksmserver --no-lockscreen
同时打开 KDE 系统设置,禁用 _Power Management > Turn off screen_。
然后注销并重新登录,XScreenSaver 现在应该可以正常工作了。有关更多信息,请参阅 xscreensaver(1) § INSTALLING XSCREENSAVER ON KDE。
要立即触发 xscreensaver(如果正在运行)并锁定屏幕,请执行以下命令:
$ xscreensaver-command -lock
挂起时锁定
XScreenSaver 提供了一个名为 xscreensaver-systemd 的小型实用程序,它使用 D-Bus 处理来自 systemd 的信号,并在挂起和休眠时自动锁定屏幕。它会与 xscreensaver 一起自动启动,无需进一步操作。有关更多信息,请参阅 xscreensaver-systemd(6)。
从锁定屏幕切换用户
xscreensaver-command -lock 或 loginctl lock-session,或者 altogether 使用其他屏幕锁定程序——请参阅 List of applications/Security#Screen lockers。默认情况下,XScreenSaver 在锁定屏幕上的 _New Login_ 按钮将调用 gdmflexiserver -ls 来切换用户。除 GDM 之外支持用户切换的 显示管理器 需要不同的命令。
~/.Xresources 中添加 xscreensaver-auth.default.*.newLoginCommand: 并将参数留空,将使 _New Login_ 按钮消失。由于 xscreensaver-settings 会 丢弃 对 ~/.xscreensaver 的修改,因此本节将使用 ~/.Xresources。
LXDM
使用 LXDM 的切换模式
xscreensaver-auth.default.*.newLoginCommand: lxdm -c USER_SWITCH
LightDM
使用 LightDM 的切换模式
xscreensaver-auth.default.*.newLoginCommand: dm-tool switch-to-greeter
SDDM
SDDM 不支持用户切换。[1] 您可以尝试 使用 dbus-send 调用 `SwitchToGreeter` 方法,但这可能无法正常工作。
技巧与提示
媒体播放期间禁用
从 5.45 版本开始,xscreensaver-systemd 实用程序实现了 D-Bus ScreenSaver 接口。它会与 xscreensaver 一起自动启动,因此大多数应用程序无需额外配置即可正确禁用屏保。但是,某些应用程序不支持 D-Bus 或使用其他接口。
mpv
默认情况下,mpv 使用 X11 Screen Saver 扩展 (XSS)。它会在启动时关闭屏保,在退出时重新启用。播放器暂停时,屏保始终会重新启用。可以在位于 ~/.config/mpv/mpv.conf 的 mpv 配置文件中控制此选项。
stop-screensaver = "yes"
并非所有视频输出或平台都支持此功能。如果您遇到问题,可以使用 Lua 脚本手动禁用屏保。在 ~/.config/mpv/scripts/xscreensaver.lua 创建一个文件,内容如下:
local utils = require 'mp.utils'
mp.add_periodic_timer(30, function()
utils.subprocess({args={"xscreensaver-command", "-deactivate"}})
end)
上面的脚本将每 30 秒调用一次 xscreensaver-command -deactivate。
mplayer
将以下内容添加到 ~/.mplayer/config:
heartbeat-cmd="xscreensaver-command -deactivate >&- 2>&- &"
Kodi
Kodi 没有原生支持来禁用 XScreenSaver(它使用自己的屏保)。作为一种解决方法,请 安装 kodi-prevent-xscreensaverAUR 包,或尝试从 https://sourceforge.net/projects/osscreensavermanager/ 获取 Kodi 扩展。
浏览器 HTML5 视频
大多数浏览器(Chromium 和基于 Chromium 的衍生版本、Firefox、GNOME Web、Otter Browser 等)支持 D-Bus ScreenSaver 接口,并且应该在 HTML5 视频播放期间禁用屏保。
其他应用程序
如果您使用的是不禁用屏保的应用程序,您可以尝试一个名为 lightsonplus 的脚本,它会在检测到全屏视频时禁用屏保。某些应用程序(例如 totem、Steam 等)开箱即用,您只需在 lightson+ 脚本中启用它们的检测即可。如果您的应用程序不受支持但有永久窗口名称,您可以将其设置在 window_name 变量中。
动态壁纸
您可以像运行壁纸一样在后台运行 xscreensaver。首先,终止控制背景(根窗口)的任何进程。
然后,找到所需的 XScreenSaver 可执行文件(通常在 /usr/lib/xscreensaver/ 中),并使用 -root 标志运行它,例如:
$ /usr/lib/xscreensaver/glslideshow -root &
$ xwinwrap -b -fs -sp -nf -ov -- /usr/lib/xscreensaver/glslideshow -root -window-id WID &
故障排除
要记录详细的调试信息,请使用 --verbose 命令行选项启动 xscreensaver。您也可以将 verbose: True 添加到 ~/.xscreensaver 文件中以使其持久化。
要将日志保存到文件,您可以使用 --log 选项设置路径。使用此选项也意味着将输出详细信息。(在 ~/.xscreensaver 或 X resources 中没有等效选项)。
解锁屏幕时出现“身份验证失败”
XScreenSaver 在解锁屏幕时依赖 PAM 进行身份验证。当其 PAM 插件 配置错误时,XScreenSaver 可能会认证失败。作为潜在的修复方法,请创建 /etc/pam.d/xscreensaver(如果它不存在),并将文件内容替换为以下内容:
/etc/pam.d/xscreensaver
auth include system-auth account include system-auth
杀死并重新启动 xscreensaver 守护进程以使更改生效。