XScreenSaver

来自 Arch Linux 中文维基

XScreenSaver 是 X 窗口系统的屏保和锁屏工具。

安装[编辑 | 编辑源代码]

安装 xscreensaver 包。

如果安装 xscreensaver-arch-logoAUR 包,可以获得有 Arch Linux 标志的外观。

配置[编辑 | 编辑源代码]

大多数选项都可以通过运行 xscreensaver-settings 来逐个用户配置的。xscreensaver-settings 会将所选的配置写入 ~/.xscreensaver,并丢弃对文件的任何手动修改。 全局选项定义在 /usr/share/X11/app-defaults/XScreenSaver 中。

至少从 XScreenSaver 5.22 开始,有了另一种方法来编辑 XScreenSaver 的用户配置:使用 Xresources

主题[编辑 | 编辑源代码]

从 6.0 版本开始,XScreenSaver 预装了一些主题,选择方式:

  • xscreensaver-settings
  • 修改 ~/.xscreensaver 配置文件中的 dialogTheme 选项 (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/share/X11/app-defaults/XScreenSaver 中可以查看 X resources. 修改后请记得 重新加载所有资源文件

DPMS 和挂起设置[编辑 | 编辑源代码]

本文或本章节的语言、语法或风格需要改进。参考:Help:Style

原因:"overrides DPMS" 并不清晰 - xscreensaver 做了相当于 xset s 0 0 的工作,并使用自己的定时器来处理各种动画,但将 DPMS timeout 设置为 Display Power Management 中的值。(在Talk:XScreenSaver讨论)

XScreenSaver 独立于 X 本身进行显示设备的电源管理(DPMS),会覆盖 X 本身的设置。要配置挂起、待机、关闭显示器等的时间,请使用 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 Mode 设置,选择 Disable Screen Saver 禁用 DPMS 和屏幕挂起。

注意: 如果 xscreensaver-demo 中的 Lock Screen After 被勾选并设为 0 分钟,则屏幕将在空白后立即锁定。如果不勾选 Power Manager Enabled,DPMS 将被禁用;这并不意味着 XScreenSaver 会放弃对 DPMS 设置的控制。

使用[编辑 | 编辑源代码]

要启动 XScreenSaver,请使用 -no-splash 选项。有关完整的选项列表,请参阅 1}。

XfceLXDELXQt 环境中, 如果 XScreenSaver 可用,XScreenSaver 就会自动启动 - 且无需进一步操作。对于其他环境,请参阅自动启动

如果要立即触发 xscreensaver,如果它正在运行,并锁定了屏幕,请执行以下命令:

$ xscreensaver-command -lock

KDE Plasma 中的屏保由 ksmserver 控制,这会和 XScreenSaver 产生冲突,要禁用它,需要 在 KDE 中启动服务 并修改 plasma-ksmserver.service 为:

~/.config/systemd/user/plasma-ksmserver.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/ksmserver --no-lockscreen

重新登录, XScreenSaver 就会正常工作,更多信息请参考 xscreensaver(1) § INSTALLING XSCREENSAVER ON KDE

锁定挂起[编辑 | 编辑源代码]

XScreenSaver 提供了一个名为 xscreensaver-systemd 的工具,可以处理来自 systemdD-Bus 信号 PrepareForSleep, 并在挂起和休眠的时候自动锁定屏幕。这个程序会和 xscreensaver 一起启动,无需额外设置。详情请参考 xscreensaver-systemd(6)

这个工具处理不了 loginctl lock-session。要处理这种情况,请参阅 Power management#xss-lock. 请使用 --ignore-sleep 选项,因为 xscreensaver-systemd 已经处理了挂起和休眠事件。

$ xss-lock --ignore-sleep -- xscreensaver-command -lock

请将 XScreenSaver 的淡出时间设置为 0。

从锁屏画面切换登录用户[编辑 | 编辑源代码]

警告: 当使用 GDM 或 LightDM 这样的显示管理器切换用户时,XScreenSaver 不会锁定原始会话,只需将 TTY 切换到相关会话即可,无需密码即可访问。如果你使用的是 LightDM,请安装light-locker,然后与 XScreenSaver 一起运行。另外,也可以使用其他的屏幕锁定程序——参见 List of applications/Security#Screen lockers

By default, XScreenSaver's New Login button in the lock screen will call /usr/bin/gdmflexiserver to switch users. Display managers other than GDM that support user switching require a different command.

默认情况下,XScreenSaver 锁定屏幕中的 New Login 按钮会启动 /usr/bin/gdmflexiserver 进行用户切换。除了 GDM 外,其他支持用户切换的 显示管理器 需要使用不同的命令。

提示:xscreensensaver.newLoginCommand: 添加到 ~/.Xresources,而将参数留空将使 New Login 按钮消失。

由于 ~/.xscreensensaver 中的修改被 xscreensaver-demo 丢弃,故本节中使用了 ~/.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]。可以尝试用 using dbus-send 调用 SwitchToGreeter 方法,目前可能无法正常工作。

提示和技巧[编辑 | 编辑源代码]

在媒体播放时禁用[编辑 | 编辑源代码]

Starting from version 5.45, the xscreensaver-systemd utility implements the D-Bus ScreenSaver interface. It is started automatically with xscreensaver, so most applications should properly disable the screensaver without additional configuration. However, some applications do not support D-Bus or use another interfaces.

mpv[编辑 | 编辑源代码]

默认情况下,mpv 会在启动时关闭屏幕保护程序,并在退出时再次开启。当播放器暂停时,屏幕保护程序总是能被重新启用。该选项可以在 mpv 的配置文件中控制,位于 ~/.config/mpv/mpv/mpv.conf

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 video/Flash[编辑 | 编辑源代码]

Firefox supports the D-Bus ScreenSaver interface and should disable the screensaver during HTML5 video playback.

本文或本章节的事实准确性存在争议。

原因: The chromium exception was added without reference and disputed. Is it reproducible?(在 Talk:XScreenSaver#loginctl, chromium, resources 中讨论)


Chromium also supports it, but uses the GNOME Session interface when available, so XScreenSaver will not be disabled in some desktop environments such as GNOME and MATE.


If you are experiencing problems, you can try a script named lightsonplus with support for Firefox's Flash plugin, Chromium's Flash plugin, HTML5 fullscreen video in Firefox and Chromium, MPlayer, and VLC.

动态壁纸[编辑 | 编辑源代码]

可以在后台运行 xscreensaver,就像壁纸一样。首先,中断一切控制背景的进程(根窗口)。

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

$ /usr/lib/xscreensaver/glslideshow -root &
注意: 如果 xcompmgrpicom 导致问题,请安装 shantz-xwinwrap-bzrAUR 包,然后运行:
$ xwinwrap -b -fs -sp -fs -nf -ov -- /usr/lib/xscreensaver/glslideshow -root -window-id WID &

禁用欢迎屏幕[编辑 | 编辑源代码]

When the program is started a screen appears which shows the program version and the author name. The screen is displayed every time the program starts which may be annoying. To disable this behavior run the program with the option --no-splash:

$ xscreensaver --no-splash &

问题解决[编辑 | 编辑源代码]

要显示详细的调试信息,启动 xscreensaver 时带上 --verbose 命令行选项,修改 ~/.xscreensaver 配置文件,添加 verbose: True 选项,则每次启动都打印详细的调试信息。

--log 选项可以将日志记录到文件,此选项隐含了 verbose 配置。(~/.xscreensaver 或 X resources 中无对应配置)。

参见[编辑 | 编辑源代码]