Skip to content

Disable screensaver for Raspberry Pi

The 7" Raspberry display in the kitchen is nice, but unfortunately by default the installation comes with a screensaver enabled. After a while, the display goes dark. No one wants to stare at a blank display, and touch the screen in order to see crucial information.


The Pi Debian distribution uses "xscreensaver" by default, and can be configured using a config file. The file goes into /home/pi/.xscreensaver. The most important settings are:

timeout:	0:10:00
cycle:		0:10:00
lock:		False
lockTimeout:	0:00:00
passwdTimeout:	0:00:30
visualID:	default
verbose:	False
nice:		10
memoryLimit:	0
dpmsEnabled:	False
dpmsQuickOff:	False
dpmsStandby:	2:00:00
dpmsSuspend:	2:00:00
dpmsOff:	4:00:00
mode:		off
selected:	-1

The full file is attached at the end of this blog post. I'm using Ansible to deploy the file to the Pi:

- name: Copy xscreensaver config to server
    src: '{{ playbook_dir }}/files/xscreensaver'
    dest: '/home/pi/.xscreensaver'
    owner: pi
    group: pi
    mode: 0644
  register: xscreensaver_config_installed

The xscreensaver tool also needs to be started once the system boots. That's a job for systemd, and requires a service file:


ExecStart=/usr/bin/xscreensaver -nosplash -log /dev/null
ExecStop=killall -15 xscreensaver


Finally the service file needs to be copied to the Pi as well, and the service must be enabled for the user. The copy job for the xscreensaver config file stores the status in $xscreensaver_service_installed, therefore running the "enable" task can be limited to cases where anything changed before. That saves time during deployment.

- name: Create systemd user directory
    path: /home/pi/.config/systemd/user/
    state: directory
    owner: pi
    group: pi
    mode: 0700

- name: Copy systemd service file to server
    src: '{{ playbook_dir }}/files/xscreensaver.service'
    dest: '/home/pi/.config/systemd/user/xscreensaver.service'
    owner: pi
    group: pi
    mode: 0600
  register: xscreensaver_service_installed

# this only works for the logged in user
# not for another user, and not if the user is not logged in at all
- name: Enable systemd service for user
  become: true
  become_user: pi
    daemon_reload: yes
    enabled: yes
    scope: user
    state: restarted
    name: xscreensaver.service
  when: xscreensaver_service_installed.changed or xscreensaver_config_installed.changed

After enabling the service, the xscreensaver will no longer switch off the display.


Here is my full .xscreensaver file, as reference:

# XScreenSaver Preferences File
# Written by xscreensaver-demo 5.42 for pi on Mon Jan  6 03:57:42 2020.

timeout:	0:10:00
cycle:		0:10:00
lock:		False
lockTimeout:	0:00:00
passwdTimeout:	0:00:30
visualID:	default
installColormap:    True
verbose:	False
timestamp:	True
splash:		True
splashDuration:	0:00:05
demoCommand:	xscreensaver-demo
prefsCommand:	xscreensaver-demo -prefs
nice:		10
memoryLimit:	0
fade:		False
unfade:		False
fadeSeconds:	0:00:03
fadeTicks:	20
captureStderr:	True
font:		-medium-r-*-140-*-m-
dpmsEnabled:	False
dpmsQuickOff:	False
dpmsStandby:	2:00:00
dpmsSuspend:	2:00:00
dpmsOff:	4:00:00
grabDesktopImages:  False
grabVideoFrames:    False
chooseRandomImages: False

mode:		off
selected:	-1

textMode:	url
textLiteral:	XScreenSaver
textProgram:	fortune

programs:								      \
				maze -root				    \n\
- GL: 				superquadrics -root			    \n\
				attraction -root			    \n\
				blitspin -root				    \n\
				greynetic -root				    \n\
				helix -root				    \n\
				hopalong -root				    \n\
				imsmap -root				    \n\
-				noseguy -root				    \n\
-				pyro -root				    \n\
				qix -root				    \n\
-				rocks -root				    \n\
				rorschach -root				    \n\
				decayscreen -root			    \n\
				flame -root				    \n\
				halo -root				    \n\
				slidescreen -root			    \n\
				pedal -root				    \n\
				bouboule -root				    \n\
-				braid -root				    \n\
				coral -root				    \n\
				deco -root				    \n\
				drift -root				    \n\
-				fadeplot -root				    \n\
				galaxy -root				    \n\
				goop -root				    \n\
				grav -root				    \n\
				ifs -root				    \n\
				unicode -root				    \n\
- GL: 				jigsaw -root				    \n\
				julia -root				    \n\
-				kaleidescope -root			    \n\
- GL: 				moebius -root				    \n\
				moire -root				    \n\
- GL: 				morph3d -root				    \n\
				mountain -root				    \n\
				munch -root				    \n\
				penrose -root				    \n\
- GL: 				pipes -root				    \n\
				rd-bomb -root				    \n\
- GL: 				rubik -root				    \n\
-				sierpinski -root			    \n\
				slip -root				    \n\
- GL: 				sproingies -root			    \n\
				starfish -root				    \n\
				strange -root				    \n\
				swirl -root				    \n\
				triangle -root				    \n\
				xjack -root				    \n\
				xlyap -root				    \n\
- GL: 				atlantis -root				    \n\
				bsod -root				    \n\
- GL: 				bubble3d -root				    \n\
- GL: 				cage -root				    \n\
-				crystal -root				    \n\
				cynosure -root				    \n\
				discrete -root				    \n\
				distort -root				    \n\
				epicycle -root				    \n\
				flow -root				    \n\
- GL: 				glplanet -root				    \n\
				interference -root			    \n\
				kumppa -root				    \n\
- GL: 				lament -root				    \n\
				moire2 -root				    \n\
- GL: 				sonar -root				    \n\
- GL: 				stairs -root				    \n\
				truchet -root				    \n\
-				vidwhacker -root			    \n\
				blaster -root				    \n\
				bumps -root				    \n\
				ccurve -root				    \n\
				compass -root				    \n\
				deluxe -root				    \n\
-				demon -root				    \n\
- GL: 				extrusion -root				    \n\
-				loop -root				    \n\
				penetrate -root				    \n\
				petri -root				    \n\
				phosphor -root				    \n\
- GL: 				pulsar -root				    \n\
				ripples -root				    \n\
				shadebobs -root				    \n\
- GL: 				sierpinski3d -root			    \n\
				spotlight -root				    \n\
				squiral -root				    \n\
				wander -root				    \n\
-				webcollage -root			    \n\
				xflame -root				    \n\
				xmatrix -root				    \n\
- GL: 				gflux -root				    \n\
-				nerverot -root				    \n\
				xrayswarm -root				    \n\
				xspirograph -root			    \n\
- GL: 				circuit -root				    \n\
- GL: 				dangerball -root			    \n\
- GL: 				engine -root				    \n\
- GL: 				flipscreen3d -root			    \n\
- GL: 				gltext -root				    \n\
- GL: 				menger -root				    \n\
- GL: 				molecule -root				    \n\
				rotzoomer -root				    \n\
				speedmine -root				    \n\
- GL: 				starwars -root				    \n\
- GL: 				stonerview -root			    \n\
				vermiculate -root			    \n\
				whirlwindwarp -root			    \n\
				zoom -root				    \n\
				anemone -root				    \n\
				apollonian -root			    \n\
- GL: 				boxed -root				    \n\
- GL: 				cubenetic -root				    \n\
- GL: 				endgame -root				    \n\
				euler2d -root				    \n\
				fluidballs -root			    \n\
- GL: 				flurry -root				    \n\
- GL: 				glblur -root				    \n\
- GL: 				glsnake -root				    \n\
				halftone -root				    \n\
- GL: 				juggler3d -root				    \n\
- GL: 				lavalite -root				    \n\
-				polyominoes -root			    \n\
- GL: 				queens -root				    \n\
- GL: 				sballs -root				    \n\
- GL: 				spheremonics -root			    \n\
-				thornbird -root				    \n\
				twang -root				    \n\
- GL: 				antspotlight -root			    \n\
				apple2 -root				    \n\
- GL: 				atunnel -root				    \n\
				barcode -root				    \n\
- GL: 				blinkbox -root				    \n\
- GL: 				blocktube -root				    \n\
- GL: 				bouncingcow -root			    \n\
				cloudlife -root				    \n\
- GL: 				cubestorm -root				    \n\
				eruption -root				    \n\
- GL: 				flipflop -root				    \n\
- GL: 				flyingtoasters -root			    \n\
				fontglide -root				    \n\
- GL: 				gleidescope -root			    \n\
- GL: 				glknots -root				    \n\
- GL: 				glmatrix -root				    \n\
- GL: 				glslideshow -root			    \n\
- GL: 				hypertorus -root			    \n\
- GL: 				jigglypuff -root			    \n\
				metaballs -root				    \n\
- GL: 				mirrorblob -root			    \n\
				piecewise -root				    \n\
- GL: 				polytopes -root				    \n\
				pong -root				    \n\
				popsquares -root			    \n\
- GL: 				surfaces -root				    \n\
				xanalogtv -root				    \n\
				abstractile -root			    \n\
				anemotaxis -root			    \n\
- GL: 				antinspect -root			    \n\
				fireworkx -root				    \n\
				fuzzyflakes -root			    \n\
				interaggregate -root			    \n\
				intermomentary -root			    \n\
				memscroller -root			    \n\
- GL: 				noof -root				    \n\
				pacman -root				    \n\
- GL: 				pinion -root				    \n\
- GL: 				polyhedra -root				    \n\
- GL: 				providence -root			    \n\
				substrate -root				    \n\
				wormhole -root				    \n\
- GL: 				antmaze -root				    \n\
- GL: 				boing -root				    \n\
				boxfit -root				    \n\
- GL: 				carousel -root				    \n\
				celtic -root				    \n\
- GL: 				crackberg -root				    \n\
- GL: 				cube21 -root				    \n\
				fiberlamp -root				    \n\
- GL: 				fliptext -root				    \n\
- GL: 				glhanoi -root				    \n\
- GL: 				tangram -root				    \n\
- GL: 				timetunnel -root			    \n\
- GL: 				glschool -root				    \n\
- GL: 				topblock -root				    \n\
- GL: 				cubicgrid -root				    \n\
				cwaves -root				    \n\
- GL: 				gears -root				    \n\
- GL: 				glcells -root				    \n\
- GL: 				lockward -root				    \n\
				m6502 -root				    \n\
- GL: 				moebiusgears -root			    \n\
- GL: 				voronoi -root				    \n\
- GL: 				hypnowheel -root			    \n\
- GL: 				klein -root				    \n\
-				lcdscrub -root				    \n\
- GL: 				photopile -root				    \n\
- GL: 				skytentacles -root			    \n\
- GL: 				rubikblocks -root			    \n\
- GL: 				companioncube -root			    \n\
- GL: 				hilbert -root				    \n\
- GL: 				tronbit -root				    \n\
- GL: 				geodesic -root				    \n\
				hexadrop -root				    \n\
- GL: 				kaleidocycle -root			    \n\
- GL: 				quasicrystal -root			    \n\
- GL: 				unknownpleasures -root			    \n\
				binaryring -root			    \n\
- GL: 				cityflow -root				    \n\
- GL: 				geodesicgears -root			    \n\
- GL: 				projectiveplane -root			    \n\
- GL: 				romanboy -root				    \n\
				tessellimage -root			    \n\
- GL: 				winduprobot -root			    \n\
- GL: 				splitflap -root				    \n\
- GL: 				cubestack -root				    \n\
- GL: 				cubetwist -root				    \n\
- GL: 				discoball -root				    \n\
- GL: 				dymaxionmap -root			    \n\
- GL: 				energystream -root			    \n\
- GL: 				hexstrut -root				    \n\
- GL: 				hydrostat -root				    \n\
- GL: 				raverhoop -root				    \n\
- GL: 				splodesic -root				    \n\
- GL: 				unicrud -root				    \n\
- GL: 				esper -root				    \n\
- GL: 				vigilance -root				    \n\
- GL: 				crumbler -root				    \n\
				filmleader -root			    \n\
				glitchpeg -root				    \n\
- GL: 				handsy -root				    \n\
- GL: 				maze3d -root				    \n\
- GL: 				peepers -root				    \n\
- GL: 				razzledazzle -root			    \n\
				vfeedback -root				    \n\

pointerPollTime:    0:00:05
pointerHysteresis:  10
initialDelay:	0:00:00
procInterrupts:	True
xinputExtensionDev: False
overlayStderr:	True
authWarningSlack:   20



No Trackbacks


Display comments as Linear | Threaded

No comments

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.
Form options