XScreenSaver
XScreenSaver is a screen saver and locker for the X Window System.
Installation
Install the xscreensaver package.
For an Arch Linux branded experience, install the xscreensaver-arch-logoAUR package.
Configuration
Most options are configured on a user-by-user basis by running xscreensaver-settings. xscreensaver-settings writes the chosen configuration to ~/.xscreensaver
, discarding any manual modifications to the file. Global options are defined in /usr/share/X11/app-defaults/XScreenSaver
.
Since at least XScreenSaver 5.22, there is another way to edit XScreenSaver's user configuration, using X resources.
Theming
Starting from version 6.0, XScreenSaver comes with several pre-installed themes. You can select a theme using xscreensaver-settings or by changing the dialogTheme
option ( in ~/.xscreensaver
or using X resources: ).
You can customize themes using X resources. The example below demonstrates changing some colors and fonts. If you are using a non-default theme, replace with the name of your chosen theme in lower case, or use question mark () to affect all themes:
~/.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
You can view a list of the available X resources in /usr/share/X11/app-defaults/XScreenSaver
.
Do not forget to reload the resource file after changes.
DPMS and blanking settings
XScreenSaver manages screen blanking and display energy saving (DPMS) independently of X itself and overrides it. To configure the timings for blanking, standby, display poweroff and such, use xscreensaver-demo or edit the configuration file manually, e.g. ~/.xscreensaver
:
DPMS and screen blanking can be disabled by starting xscreensaver-demo and, for the Mode setting, choosing Disable Screen Saver.
Usage
In the Xfce, LXDE and LXQt environments, XScreenSaver is autostarted automatically if it is available - no further action is required.
In KDE Plasma, screen saver and locker features are handled by ksmserver, which conflicts with XScreenSaver. To disable it, you need to enable systemd startup for KDE and then edit the user unit:
Then logout and login again, and XScreenSaver should work properly now. See for more information.
For other environments, see Autostarting.
To immediately trigger xscreensaver, if it is running, and lock the screen, execute the following command:
$ xscreensaver-command -lock
Lock on suspend
XScreenSaver ships with a small utility named xscreensaver-systemd, which handles the signal from systemd using D-Bus and automatically locks the screen on suspend and hibernate. It is started automatically with xscreensaver, no further action required. See for more information.
However, it does not handle other systemd signals such as loginctl lock-session
. To handle it, you can use xss-lock. Use the option because the suspend/hibernate events are already handled by xscreensaver-systemd.
$ xss-lock --ignore-sleep -- xscreensaver-command -lock
You may want to set XScreenSaver's fade out time to 0.
User switching from the lock screen
By default, XScreenSaver's New Login button in the lock screen will call gdmflexiserver -ls
to switch users. Display managers other than GDM that support user switching require a different command.
As modifications in ~/.xscreensaver
are discarded by xscreensaver-settings, is used in this section.
LXDM
To use LXDM's switching mode:
xscreensaver-auth.default.*.newLoginCommand: lxdm -c USER_SWITCH
LightDM
To use LightDM's switching mode:
xscreensaver-auth.default.*.newLoginCommand: dm-tool switch-to-greeter
SDDM
SDDM does not support user switching. You can try to call the method using dbus-send, but it may not work properly.
Tips and tricks
Disable during media playback
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
By default mpv uses the X11 Screen Saver extension (XSS). It turns off the screensaver at startup and turns it on again on exit. The screensaver is always re-enabled when the player is paused. The option can be controlled in mpv's configuration file located in :
stop-screensaver = "yes"
This is not supported on all video outputs or platforms. If you face some issues you might use a Lua script to manually disable the screensaver. Create a file at with the following contents:
local utils = require 'mp.utils' mp.add_periodic_timer(30, function() utils.subprocess({args={"xscreensaver-command", "-deactivate"}}) end)
The above script will call every 30 seconds.
mplayer
Add the following to :
heartbeat-cmd="xscreensaver-command -deactivate >&- 2>&- &"
Kodi
Kodi has no native support to disable XScreenSaver (it uses its own screensaver). Install the kodi-prevent-xscreensaverAUR package as a workaround or try Kodi extension from https://sourceforge.net/projects/osscreensavermanager/.
Browser HTML5 video
Most browsers (Chromium and Chromium-based spin-offs, Firefox, GNOME Web, Otter Browser etc.) support the D-Bus ScreenSaver interface and should disable the screensaver during HTML5 video playback.
Other applications
If you are using applications that do not disable the screensaver, you can try a script named lightsonplus, which disables the screensaver when a fullscreen video is detected. Some applications (such as , Steam and others) are supported out of the box, you just need to enable their detection in the script. If your application is unsupported but has a permanent window name, you can set it in the variable.
Animated wallpaper
One can run xscreensaver
in the background, just like a wallpaper. First, kill any process that is controlling the background (the root window).
Then, locate the desired XScreenSaver executable (typically in ) and run it with the flag, for example:
$ /usr/lib/xscreensaver/glslideshow -root &
Troubleshooting
To log verbose debugging information, start xscreensaver with the command line option. You can also add verbose: True
to the ~/.xscreensaver
file to make it persistent.
To save the log to a file, you can set the path using the option. Using this option also implies verbose output. (There is no equivalent option in ~/.xscreensaver
or X resources).