跳转至内容

XScreenSaver

来自 ArchWiki

XScreenSaver 是一款具有图形效果的屏保和屏幕锁定程序。X Window System 默认具备功能性的屏幕保护(在 电源管理 方面)。

安装

安装 xscreensaver 包。

若要获得 Arch Linux 品牌体验,请安装 xscreensaver-arch-logoAUR 包。

配置

大多数选项是逐用户配置的,通过运行 xscreensaver-settingsxscreensaver-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 和屏幕空白设置

本文或本节需要在语言、wiki 语法或风格方面进行改进。请参阅 Help:Style 获取参考。

原因:“覆盖 DPMS”含糊不清——xscreensaver 执行 xset s 0 0 的等效操作,使用自己的计时器进行各种动画,但将 DPMS 超时设置为 _Display Power Management_ 中的值。(在 Talk:XScreenSaver 中讨论)

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 和屏幕空白。

注意 如果 _xscreensaver-demo_ 中的 _Lock Screen After_ 被勾选且设置为 0 分钟,屏幕将在空白后立即锁定。如果 _Power Manager Enabled_ 未勾选,DPMS 将被禁用;但这并不意味着 XScreenSaver 会放弃对 DPMS 设置的控制。

用法

提示 要在没有启动画面(splash screen)的情况下启动 XScreenSaver,请使用 --no-splash 开关。有关选项的完整列表,请参见 xscreensaver(1)

LXDELXQt 环境中,如果 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)

从锁定屏幕切换用户

警告 使用显示管理器切换用户时,某些显示管理器(如 LXDM)不会发送锁定信号,因此 XScreenSaver 不会锁定原始会话——只需切换到相应的 TTY 即可在不输入密码的情况下访问它。如果您的显示管理器是这种情况,请手动运行 xscreensaver-command -lockloginctl 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
注意 如果您使用此方法切换到已登录用户,您可能需要输入两次密码(一次用于 LightDM,一次用于您登录的用户的 XScreenSaver 对话框)。

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.confmpv 配置文件中控制此选项。

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 的衍生版本、FirefoxGNOME WebOtter Browser 等)支持 D-Bus ScreenSaver 接口,并且应该在 HTML5 视频播放期间禁用屏保。

其他应用程序

如果您使用的是不禁用屏保的应用程序,您可以尝试一个名为 lightsonplus 的脚本,它会在检测到全屏视频时禁用屏保。某些应用程序(例如 totemSteam 等)开箱即用,您只需在 lightson+ 脚本中启用它们的检测即可。如果您的应用程序不受支持但有永久窗口名称,您可以将其设置在 window_name 变量中。

动态壁纸

您可以像运行壁纸一样在后台运行 xscreensaver。首先,终止控制背景(根窗口)的任何进程。

然后,找到所需的 XScreenSaver 可执行文件(通常在 /usr/lib/xscreensaver/ 中),并使用 -root 标志运行它,例如:

$ /usr/lib/xscreensaver/glslideshow -root &
注意 如果 xcompmgrpicom 导致问题,请 安装 shantz-xwinwrap-bzrAUR 包,然后运行:
$ 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 守护进程以使更改生效。

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.