XScreenSaver - Arch Linux 中文维基

跳转到内容

# XScreenSaver

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 Xscreensaver，最近一次同步于 2022-05-22，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

相关文章

- DPMS
- Xresources
- Session lock
- List of applications#Screen lockers

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 和挂起设置

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

原因："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}。

在 Xfce， LXDE 和 LXQt 环境中, 如果 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 的工具，可以处理来自 systemd 的 D-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 &

注意：如果 xcompmgr 或 picom 导致问题，请安装 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 中无对应配置)。

## 参见

- XScreenSaver 的主页

分类：​

- X 服务器
- 使用“模板:风格”标记的页面或章节

隐藏分类：​

- 使用“模板:准确性”标记的页面或章节

XScreenSaver
添加话题