XScreenSaver (Русский)

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

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 нет.)

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