XScreenSaver
XScreenSaver 是一个带有图形效果的屏幕保护程序和屏幕锁。X Window 系统默认具有功能性的屏幕保护(在电源管理意义上)。
安装
安装 xscreensaver 软件包。
为了获得 Arch Linux 品牌体验,请安装 xscreensaver-arch-logoAUR 软件包。
配置
大多数选项都在用户基础上通过运行 xscreensaver-settings 进行配置。xscreensaver-settings 将选择的配置写入 ~/.xscreensaver
,丢弃对该文件的任何手动修改。全局选项在 /usr/lib/X11/app-defaults/XScreenSaver
中定义。
至少从 XScreenSaver 5.22 开始,还有另一种编辑 XScreenSaver 用户配置的方法,即使用 X 资源。
主题
从 6.0 版本开始,XScreenSaver 带有几个预装主题。您可以使用 xscreensaver-settings 选择主题,或者通过更改 dialogTheme
选项(~/.xscreensaver
中的 dialogTheme: 主题名称
或使用 X 资源:xscreensaver-auth.dialogTheme: 主题名称
)。
您可以使用 X 资源自定义主题。下面的示例演示了更改一些颜色和字体。如果您使用的是非默认主题,请将 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/share/X11/app-defaults/XScreenSaver
中查看可用 X 资源的列表。
不要忘记在更改后重新加载资源文件。
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 fadeTicks: 20 dpmsEnabled: True dpmsStandby: 2:00:00 dpmsSuspend: 2:00:00 dpmsOff: 4:00:00
可以通过启动 xscreensaver-demo 并为模式设置选择禁用屏幕保护程序来禁用 DPMS 和屏幕空白。
用法
--no-splash
开关。有关完整选项列表,请参阅 xscreensaver(1)。在 Xfce、LXDE 和 LXQt 环境中,如果 XScreenSaver 可用,则会自动启动 - 无需进一步操作。
在 KDE Plasma 中,屏幕保护程序和锁定器功能由 ksmserver 处理,这与 XScreenSaver 冲突。要禁用它,您需要为 KDE 启用 systemd 启动,然后编辑 plasma-ksmserver.service
用户单元
~/.config/systemd/user/plasma-ksmserver.service.d/override.conf
[Service] ExecStart= ExecStart=/usr/bin/ksmserver --no-lockscreen
然后注销并重新登录,XScreenSaver 现在应该可以正常工作了。有关更多信息,请参阅 xscreensaver(1) § 在 KDE 上安装 XSCREENSAVER。
对于其他环境,请参阅 自动启动。
要立即触发 xscreensaver(如果正在运行)并锁定屏幕,请执行以下命令
$ xscreensaver-command -lock
挂起时锁定
XScreenSaver 附带一个名为 xscreensaver-systemd 的小程序,它使用 D-Bus 处理来自 systemd 的 PrepareForSleep
信号,并在挂起和休眠时自动锁定屏幕。它与 xscreensaver 一起自动启动,无需进一步操作。有关更多信息,请参阅 xscreensaver-systemd(6)。
但是,它不处理其他 systemd 信号,例如 loginctl lock-session
。要处理它,您可以使用 xss-lock。使用 --ignore-sleep
选项,因为挂起/休眠事件已由 xscreensaver-systemd 处理。
$ xss-lock --ignore-sleep -- xscreensaver-command -lock
您可能希望将 XScreenSaver 的淡出时间设置为 0。
从锁屏切换用户
默认情况下,XScreenSaver 锁屏中的新登录按钮将调用 gdmflexiserver -ls
来切换用户。支持用户切换的 显示管理器(GDM 除外)需要不同的命令。
xscreensaver-auth.default.*.newLoginCommand:
添加到 ~/.Xresources
,同时将参数留空,将使新登录按钮消失。由于 ~/.xscreensaver
中的修改会被 xscreensaver-settings 丢弃,因此本节中使用 ~/.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] 您可以尝试调用 SwitchToGreeter
方法 使用 dbus-send,但这可能无法正常工作。
技巧与窍门
在媒体播放期间禁用
从 5.45 版本开始,xscreensaver-systemd 实用程序实现了 D-Bus ScreenSaver 接口。它与 xscreensaver 一起自动启动,因此大多数应用程序应该无需额外配置即可正确禁用屏幕保护程序。但是,某些应用程序不支持 D-Bus 或使用其他接口。
mpv
默认情况下,mpv 使用 X11 屏幕保护程序扩展 (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 资源中没有等效选项)。