XScreenSaver (Русский) - ArchWiki

Jump to content
From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи XScreenSaver. Дата последней синхронизации: 1 декабря 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Ссылки по теме

- Display Power Management Signaling (Русский)
- X resources (Русский)
- Блокировка экрана
- Список приложений/Безопасность#Блокировка экрана

XScreenSaver — реализация хранителя экрана (заставки) и блокировки сеанса для X Window System.

## Установка

Установите пакет xscreensaver.

Пакет xscreensaver-arch-logoAUR предоставляет модифицированную версию с логотипом Arch Linux.

## Настройка

Большинство опций настраиваются для каждого пользователя отдельно через графический интерфейс xscreensaver-settings. Эта программа записывает настройки в `~/.xscreensaver`, отменяя любые ручные изменения этого файла. Глобальные параметры определены в `/usr/share/X11/app-defaults/XScreenSaver`.

С версии 5.22 можно изменять настройки с помощью Xresources, в том числе тему.

### Темы

С версии 6.0 XScreenSaver имеет несколько встроенных тем. Можно переключаться между ними через xscreensaver-settings или с помощью опции `dialogTheme` (`dialogTheme: имятемы` в `~/.xscreensaver` или через X resources: `xscreensaver-auth.dialogTheme: имятемы`).

Вы можете изменять темы с помощью X resources. Пример ниже демонстрирует изменение некоторых цветов и шрифтов. Если вы выбрали тему отличную от стандартной, замените `default` на название выбранной вами темы в нижнем регистре или пропишите вопросительный знак (`?`), чтобы изменение повлияло все темы:

    ~/.Xresources

    ! Шрифт для обычного текста.
    ! Имена шрифтов не чувствительны к регистру.
    ! Можно прописать список через запятую, чтобы задать fallback-шрифт.
    xscreensaver-auth.default.Dialog.bodyFont: times new roman 12, dejavu serif 12

    ! Фоновый цвет окна. Цвета можно задавать с помощью имён.
    xscreensaver-auth.default.Dialog.background: black

    ! Основной цвет текста. Цвета можно задавать также с помощью HEX-кода.
    xscreensaver-auth.default.Dialog.foreground: #ffffff

Посмотреть список всех доступных для изменения ресурсов можно в файле `/usr/share/X11/app-defaults/XScreenSaver`.

Не забудьте перезагрузить файл ресурсов после изменения.

### DPMS и затемнение экрана

XScreenSaver управляет затемнением экрана и энергосбережением дисплея (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

Отключить затемнение экрана и DPMS можно через xscreensaver-settings, выбрав в списке Режим пункт Disable Screen Saver.

Примечание: Если значение Заблокировать экран через включено и установлено в 0 минут, экран будет заблокирован сразу после включения заставки. Если галочка Управление питанием включено снята, DPMS отключен; это не означает, что XScreenSaver откажется от контроля над настройками DPMS.

## Использование

Совет: Чтобы запустить XScreenSaver без окна приветствия, используйте опцию `--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) § INSTALLING XSCREENSAVER ON KDE для более подробной информации.

Для других сред смотрите статью Автозапуск.

Когда демон XScreenSaver запущен, можно немедленно заблокировать экран с помощью следующей команды:

    $ xscreensaver-command -lock

### Блокировка при переходе в ждущий режим

XScreenSaver имеет в своём составе утилиту xscreensaver-systemd, которая обрабатывает D-Bus сигнал `PrepareForSleep` от systemd и автоматически блокирует экран при переходе в ждущий или спящий режим. Она запускается автоматически вместе с xscreensaver, дополнительные действия не требуются. Смотрите xscreensaver-systemd(6) для более подробной информации.

Однако она не обрабатывает другие сигналы systemd, например `loginctl lock-session`. Для их обработки используйте Power management#xss-lock. Укажите опцию `--ignore-sleep`, потому что события перехода в ждущий и спящий режим уже обрабатывает xscreensaver-systemd.

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

Возможно, стоит выставить время перехода к чёрному в 0.

### Переключение пользователя с экрана блокировки

Важно: При переключении пользователей с помощью экранного менеджера, такого как GDM или LightDM, XScreenSaver не блокирует исходный сеанс — доступ к нему можно получить без пароля, просто переключившись на соответствующий TTY. Если вы используете LightDM, в качестве обходного пути установите light-locker и запустите его вместе с XScreenSaver. В качестве альтернативы используйте другую программу блокировки экрана — смотрите Список приложений/Безопасность#Блокировка экрана.

По умолчанию кнопка New Login выполняет команду `gdmflexiserver -ls` для переключения пользователя. Это работает в GDM, но для других экранных менеджеров нужно прописать правильную команду в настройках.

Совет: Если в `~/.Xresources` добавить `xscreensaver-auth.default.*.newLoginCommand:` с пустым значением, то кнопка New Login исчезнет.

xscreensaver-settings сбрасывает ручные изменения файла `~/.xscreensaver`, поэтому здесь используется `~/.Xresources`.

#### LXDM

    xscreensaver-auth.default.*.newLoginCommand: lxdm -c USER_SWITCH

#### LightDM

    xscreensaver-auth.default.*.newLoginCommand: dm-tool switch-to-greeter

Примечание: Если вы используете это для перехода к уже вошедшему в систему пользователю, возможно, придётся ввести пароль дважды (один раз для LightDM, и один раз для диалога XScreenSaver того пользователя, к которому вы вошли).

#### SDDM

SDDM не поддерживает переключение пользователей. [1] Вы можете попробовать вызвать метод `SwitchToGreeter` с помощью dbus-send, но это может работать некорректно.

## Советы и рекомендации

### Отключение во время просмотра видео

Начиная с версии 5.45, утилита xscreensaver-systemd реализует D-Bus интерфейс ScreenSaver. Она запускается автоматически вместе с xscreensaver, так что большинство приложений должны корректно отключать хранитель экрана без дополнительных настроек. Однако некоторые приложения не поддерживают D-Bus или используют другие интерфейсы.

#### mpv

По умолчанию mpv использует X11 Screen Saver extension (XSS). Он выключает заставку при запуске и включает её снова при выходе. Заставка также включается, когда проигрыватель приостанавлен. Поведение можно настроить в файле `~/.config/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)

Скрипт будет запускать указанную команду каждые полминуты.

#### mplayer

Добавьте в `~/.mplayer/config`:

    heartbeat-cmd="xscreensaver-command -deactivate >&- 2>&- &"

#### Kodi

Kodi не имеет встроенной поддержки XScreenSaver (он использует свой собственный хранитель экрана). Установите пакет kodi-prevent-xscreensaverAUR или используйте расширение OS Screen Saver Manager.

#### HTML5-видео в браузерах

Большинство браузеров (Chromium и основанные на нём, Firefox, GNOME Web, Otter Browser и т.д.) поддерживают интерфейс D-Bus ScreenSaver и должны нормально отключать хранитель экрана при воспроизведении HTML5-видео.

#### Другие приложения

Если вы используете приложения, которые не умеют отключать хранитель эрана, можно попробовать использовать скрипт lightsonplus, который отключает хранитель экрана, когда обнаруживает полноэкранное видео. Некоторые приложения (totem, Steam и другие) поддерживаются из коробки, нужно лишь включить их обнаружение в скрипте `lightson+`. Если используемое вами приложение не поддерживается, но имеет постоянное имя окна, можно прописать его в переменной `window_name`.

### Анимированный фон

Можно поставить заставку на фон рабочего стола. Для этого сперва завершите все процессы, которые контролируют фон (корневое окно), а затем найдите исполняемый файл нужной вам заставки (они обычно лежат в `/usr/lib/xscreensaver/`) и запустите с опцией `-root`, например:

    $ /usr/lib/xscreensaver/glslideshow -root &

Примечание: Если есть проблемы с xcompmgr или picom, установите пакет shantz-xwinwrap-bzrAUR и запускайте заставку так:

    $ xwinwrap -b -fs -sp -nf -ov -- /usr/lib/xscreensaver/glslideshow -root -window-id WID &

## Решение проблем

Для вывода более подробного журнала запустите xscreensaver с опцией `--verbose`. Также можно добавить `verbose: True` в файл `~/.xscreensaver`, чтобы сделать это постоянным.

Для записи журнала в файл можно указать путь к файлу с помощью опции `--log`. Использование этой опции автоматически включает подробный вывод. (Эквивалента данной опции в файле `~/.xscreensaver` или ресурсах X нет.)

## Смотрите также

- Сайт XScreenSaver

Category:

- X server (Русский)