XScreenSaver (Русский)
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.
Использование
--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.
Переключение пользователя с экрана блокировки
По умолчанию кнопка 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
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 &
$ xwinwrap -b -fs -sp -nf -ov -- /usr/lib/xscreensaver/glslideshow -root -window-id WID &
Решение проблем
Для вывода более подробного журнала запустите xscreensaver с опцией --verbose
. Также можно добавить verbose: True
в файл ~/.xscreensaver
, чтобы сделать это постоянным.
Для записи журнала в файл можно указать путь к файлу с помощью опции --log
. Использование этой опции автоматически включает подробный вывод. (Эквивалента данной опции в файле ~/.xscreensaver
или ресурсах X нет.)