XScreenSaver

Related articles
Display Power Management Signaling#Xorg
Xresources
Session lock
List of applications/Security#Screen lockers
XScreenSaver
is a screen saver and screen locker with graphical effects. The X Window System has functional screen-saving (in the
power management
sense) by default.
Installation
Install
the
xscreensaver
package.
For an Arch Linux branded experience, install the
xscreensaver-arch-logo
AUR
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/lib/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 (
dialogTheme:
themename
in
~/.xscreensaver
or using X resources:
xscreensaver-auth.dialogTheme:
themename
).
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
default
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/lib/X11/app-defaults/XScreenSaver
.
Do not forget to
reload the resource file
after changes.
DPMS and blanking settings
This article or section needs language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
"overrides DPMS" is vague—
xscreensaver
does the equivalent of
xset s 0 0
, uses its own timer for the various animations, but sets the DPMS timeout to the values in
Display Power Management
. (Discuss in
Talk:XScreenSaver
)
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
:
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
dpmsEnabled:	True
dpmsStandby:	2:00:00
dpmsSuspend:	2:00:00
dpmsOff:	4:00:00
DPMS and screen blanking can be disabled by starting
xscreensaver-demo
and, for the
Mode
setting, choosing
Disable Screen Saver
.
Note
If
Lock Screen After
in
xscreensaver-demo
is ticked and set to 0 minutes, the screen will be locked immediately upon blanking. If
Power Manager Enabled
is unticked, DPMS is disabled; it does not mean that XScreenSaver will relinquish control of DPMS settings.
Usage
Tip
To start XScreenSaver without the splash screen, use the
--no-splash
switch. See
xscreensaver(1)
for a full list of options.
In the
LXDE
and
LXQt
environments, XScreenSaver is autostarted automatically if it is available - no further action is required.
For other environments, see
Autostarting
.
In
KDE Plasma
, screen saver and locker features are handled by
ksmserver
, which conflicts with XScreenSaver. To disable it,
edit
the
plasma-ksmserver.service
user unit
:
~/.config/systemd/user/plasma-ksmserver.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/ksmserver --no-lockscreen
Also open KDE System Settings and disable
Power Management > Turn off screen
.
Then logout and login again, and XScreenSaver should work properly now. See
xscreensaver(1) § INSTALLING XSCREENSAVER ON KDE
for more information.
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 signals 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
xscreensaver-systemd(6)
for more information.
User switching from the lock screen
Warning
When switching users using a display manager, some display managers such as LXDM do not send the lock signal, so XScreenSaver will not lock the original session — it can be accessed without a password simply by switching TTYs to the session in question. If this is the case for your display manager, run
xscreensaver-command -lock
or
loginctl lock-session
manually or use a different screen locking program altogether — see
List of applications/Security#Screen lockers
.
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.
Tip
Adding
xscreensaver-auth.default.*.newLoginCommand:
to
~/.Xresources
whilst leaving the argument blank will make the
New Login
button disappear.
As modifications in
~/.xscreensaver
are
discarded
by
xscreensaver-settings
,
~/.Xresources
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
Note
If you use this to switch to an already-logged-in user, you might have to enter the password twice (once for LightDM, and once for the XScreenSaver dialog of the user you logged in to).
SDDM
SDDM
does not support user switching.
[1]
You can try to call the
SwitchToGreeter
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
~/.config/mpv/mpv.conf
:
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
~/.config/mpv/scripts/xscreensaver.lua
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
xscreensaver-command -deactivate
every 30 seconds.
mplayer
Add the following to
~/.mplayer/config
:
heartbeat-cmd="xscreensaver-command -deactivate >&- 2>&- &"
Kodi
Kodi
has no native support to disable XScreenSaver (it uses its own screensaver).
Install
the
kodi-prevent-xscreensaver
AUR
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
totem
,
Steam
and others) are supported out of the box, you just need to enable their detection in the
lightson+
script. If your application is unsupported but has a permanent window name, you can set it in the
window_name
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
/usr/lib/xscreensaver/
) and run it with the
-root
flag, for example:
$ /usr/lib/xscreensaver/glslideshow -root &
Note
If
xcompmgr
or
picom
causes problems,
install
the
shantz-xwinwrap-bzr
AUR
package, and run:
$ xwinwrap -b -fs -sp -nf -ov -- /usr/lib/xscreensaver/glslideshow -root -window-id WID &
Troubleshooting
To log verbose debugging information, start
xscreensaver
with the
--verbose
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
--log
option. Using this option also implies verbose output. (There is no equivalent option in
~/.xscreensaver
or X resources).
"Authentication failed" when unlocking the screen
XScreenSaver relies on
PAM
for authentication when unlocking the screen. XScreenSaver might fail to authenticate when its PAM drop-in
is misconfigured
. As a potential fix, create
/etc/pam.d/xscreensaver
if it does not exist and replace the file content with the following:
/etc/pam.d/xscreensaver
auth      include system-auth
account   include system-auth
or possible, if you have faillock configured. compare to /etc/pam.d/login
/etc/pam.d/xscreensaver
#%PAM-1.0
auth       requisite pam_nologin.so
auth       include   system-local-login
account    include   system-local-login
password   include   system-local-login
session    include   system-local-login
Kill and restart the
xscreensaver
daemon for the changes to take effect.
See also
Homepage for XScreenSaver