1XScreenSaver(1) General Commands Manual XScreenSaver(1)
2
3
4
6 xscreensaver - extensible screen saver and screen locking framework
7
9 xscreensaver [--display host:display.screen] [--verbose] [--no-splash]
10 [--log filename]
11
13 XScreenSaver waits until the user is idle, and then runs graphics demos
14 chosen at random. It can also lock your screen, and provides configu‐
15 ration and control of display power management.
16
17 XScreenSaver is also available on macOS, iOS and Android.
18
20 XScreenSaver is a daemon that runs in the background. You configure it
21 with the xscreensaver-settings(1) program.
22
23 xscreensaver &
24 xscreensaver-settings
25
26
27
29 When it is time to activate the screensaver, a full-screen black window
30 is created that covers each monitor. A sub-process is launched for
31 each one running a graphics demo, pointed at the appropriate window.
32 Because of this, any program which can draw on a provided window can be
33 used as a screensaver. The various graphics demos are, in fact, just
34 standalone programs that do that.
35
36 When the user becomes active again, the screensaver windows are un‐
37 mapped, and the running subprocesses are killed.
38
39 The display modes are run at a low process priority, and spend most of
40 their time sleeping/idle by default, so they should not consume signif‐
41 icant system resources.
42
43
45 --display host:display.screen
46 The X display to use. For displays with multiple screens,
47 XScreenSaver will manage all screens on the display simultane‐
48 ously.
49
50 --verbose
51 Print diagnostics to stderr.
52
53 --log filename
54 Append all diagnostic output to the given file. This also im‐
55 plies --verbose. Use this when reporting bugs.
56
57 --no-splash
58 Don't display the splash screen at startup.
59
60
62 The xscreensaver-settings(1) program is where you configure if and when
63 your monitor should power off. It saves the settings in your
64 ~/.xscreensaver file.
65
66 If the power management section is grayed out in the xscreensaver-set‐
67 tings(1) window, then that means that your X server does not support
68 the XDPMS extension, and so control over the monitor's power state is
69 not available.
70
71 When the monitor is powered down, the display hacks are stopped (though
72 it may take a minute or two for XScreenSaver to notice).
73
74 Note: if you use xset(1) to change the power management settings,
75 XScreenSaver will override those changes. Whatever is in the
76 ~/.xscreensaver file takes precedence.
77
78
80 If your system has systemd(1) 221 or newer, or elogind(8), then closing
81 the lid of your laptop will cause the screen to lock immediately.
82
83 If not, then the screen might not lock until a few seconds after you
84 re-open the lid. Which is less than ideal. So if you don't use sys‐
85 temd, you might want to get in the habit of doing xscreensaver-command
86 --lock before closing the lid.
87
88
90 Likewise, if you have systemd(1) 221 or newer, or elogind(8), then all
91 of the popular video players and web browsers will prevent XScreenSaver
92 from blanking the screen while video is playing.
93
94 Both of these features require that xscreensaver-systemd(6) be able
95 connect to the systemd bus. Parts of KDE and GNOME may need to be dis‐
96 abled first for that to work; see below.
97
98
100 Each desktop environment has its own system for launching long-running
101 daemons like XScreenSaver, and since many of them come bundled with
102 their own (buggy, insecure, inferior) screen-locking frameworks, it is
103 also necessary to disable those other frameworks before XScreenSaver
104 can work.
105
106
107 INSTALLING XSCREENSAVER ON GNOME OR UNITY
108 For many years, GNOME shipped XScreenSaver as-is, and everything just
109 worked. In 2005, however, they decided to needlessly re-invent the
110 wheel and ship their own replacement for the xscreensaver daemon called
111 gnome-screensaver(1) rather than improving XScreenSaver and contribut‐
112 ing their changes back. As a result, the gnome-screensaver program is
113 insecure, bug-ridden, and missing many features of XScreenSaver. In
114 fact, in 2011 it lost the ability to run display modes at all.
115
116 In 2012 some distros forked and renamed it as both mate-screensaver(1)
117 and cinnamon-screensaver(1), which seem to be basically the same.
118
119 To replace gnome-screensaver with XScreenSaver:
120
121 1: Fully uninstall the other screen saver packages:
122
123 sudo apt-get remove gnome-screensaver
124 sudo apt-get remove mate-screensaver
125 sudo apt-get remove cinnamon-screensaver
126 or
127 sudo rpm -e gnome-screensaver
128 sudo rpm -e mate-screensaver
129 sudo rpm -e cinnamon-screensaver
130
131 Be careful that it doesn't try to uninstall all of GNOME.
132
133
134 2: Launch XScreenSaver at login.
135
136 Select "Startup Applications" from the menu (or manually launch
137 "gnome-session-properties") and add "xscreensaver".
138
139 Do this as your normal user account, not as root. (This should
140 go without saying, because you should never, ever, ever be
141 logged in to the graphical desktop as user "root".)
142
143 3: Make GNOME's "Lock Screen" use XScreenSaver.
144
145 sudo ln -sf /usr/bin/xscreensaver-command \
146 /usr/bin/gnome-screensaver-command
147
148 That doesn't work under Unity, though. Apparently it has its
149 own built-in screen locker which is not gnome-screensaver, and
150 cannot be removed, and yet still manages to be bug-addled and
151 insecure. Keep reinventing that wheel, guys! (If you have fig‐
152 ured out how to replace Unity's locking "feature" with XScreen‐
153 Saver, let me know.)
154
155
156 4: Turn off Unity's built-in blanking.
157
158 Open "System Settings / Brightness & Lock";
159 Un-check "Start Automatically";
160 Set "Turn screen off when inactive for" to "Never".
161 Or possibly that has been randomly renamed again:
162 Set "Settings / Power / Power Settings" to "Never".
163
164 5: Stop GNOME from blocking XScreenSaver's "systemd" integration:
165
166 sudo systemctl --user mask gsd-screensaver-proxy.service
167
168 Without the above, video players will not be able to tell
169 XScreenSaver not to blank the screen while videos are playing,
170 and the screen will not auto-lock when you close your laptop's
171 lid.
172
173 After running that command, reboot. Yes, you have to reboot; it
174 won't let you simply stop the service. Logging out won't do it
175 either.
176
177
178 INSTALLING XSCREENSAVER ON KDE
179 Like GNOME, KDE also decided to invent their own screen saver framework
180 from scratch instead of simply using XScreenSaver. To replace the KDE
181 screen saver with XScreenSaver, do the following:
182
183 1: Turn off KDE's screen saver.
184 Open the "Control Center" and select the "Appearance & Themes /
185 Screensaver" page. Un-check "Start Automatically".
186
187 Or possibly: Open "System Settings" and select "Screen Locking".
188 Un-check "Lock Screen Automatically".
189
190 2: Find your Autostart directory.
191 Open the "System Administration / Paths" page, and see what your
192 "Autostart path" is set to: it will probably be something like
193 ~/.kde/Autostart/ or ~/.config/autostart/
194
195 If that doesn't work, then try this:
196
197 Open "System Settings / Startup/Shutdown / Autostart", and then
198 add "/usr/bin/xscreensaver".
199
200 If you are lucky, that will create a "xscreensaver.desktop" file
201 for you in ~/.config/autostart/ or ~/.kde/Autostart/.
202
203 3: Make XScreenSaver be an Autostart program.
204 If it does not already exist, create a file in your autostart
205 directory called xscreensaver.desktop that contains the follow‐
206 ing six lines:
207
208 [Desktop Entry]
209 Exec=xscreensaver
210 Name=XScreenSaver
211 Type=Application
212 StartupNotify=false
213 X-KDE-StartupNotify=false
214
215
216 4: Make the various "lock session" buttons call XScreenSaver.
217 The file you want to replace next has moved around over the
218 years. It might be called /usr/libexec/kde4/kscreenlocker, or it
219 might be called "kdesktop_lock" or "krunner_lock" or "kscreen‐
220 locker_greet", and it might be in /usr/lib/kde4/libexec/ or in
221 /usr/kde/3.5/bin/ or even in /usr/bin/, depending on the distro
222 and phase of the moon. Replace the contents of that file with
223 these two lines:
224
225 #!/bin/sh
226 xscreensaver-command --lock
227
228 Make sure the file is executable (chmod a+x).
229
230 5: Stop KDE from blocking XScreenSaver's "systemd" integration:
231 You must arrange for KDE's ksmserver(1) daemon to be launched
232 with the command line switch --no-lockscreen.
233
234 One way to accomplish that is to edit the startkde(1) script in
235 /usr/bin/ by hand, then log out and log back in. Another way
236 would be to wrap the ksmserver program:
237
238 mv /usr/bin/ksmserver /usr/bin/ksmserver-orig
239
240 and replace /usr/bin/ksmserver with:
241
242 #!/bin/sh
243 ksmserver-orig --no-lockscreen
244
245 Either change will, of course, get blown away the next time your
246 system upgrades KDE.
247
248 Instead of being in /usr/bin/, the ksmserver program might be in
249 /usr/lib/ or usr/lib*/libexec/ or usr/lib/*/libexec/ or some‐
250 where else, depending on your distro.
251
252 But without this, video players will not be able to tell
253 XScreenSaver not to blank the screen while videos are playing,
254 and the screen will not auto-lock when you close your laptop's
255 lid.
256
257 It seems that KDE 5.17 replaced startkde with startplasma-x11,
258 and I don't know how to change how that launches ksmserver. Let
259 me know if you figure it out.
260
261
262 LAUNCHING XSCREENSAVER FROM SYSTEMD
263 If the above didn't do it, and your system has systemd(1), maybe this
264 is how it works:
265
266 1: Create a service.
267 Create the file ~/.config/systemd/user/xscreensaver.service con‐
268 taining:
269
270 [Unit]
271 Description=XScreenSaver
272 [Service]
273 ExecStart=/usr/bin/xscreensaver
274 Restart=on-failure
275 [Install]
276 WantedBy=default.target
277
278
279 2. Enable it.
280
281 systemctl --user enable xscreensaver
282
283 Then restart X11.
284
285
286 LAUNCHING XSCREENAVER FROM UPSTART
287 If your system has upstart(7) instead of systemd(1), maybe this will
288 work: launch the "Startup Applications" applet, click "Add", enter
289 these lines, then restart X11:
290
291 Name: XScreenSaver
292 Command: xscreensaver
293 Comment: XScreenSaver
294
295
296
297 LAUNCHING XSCREENSAVER FROM GDM
298 You can run xscreensaver from your gdm(1) session, so that the screen‐
299 saver will run even when nobody is logged in on the console. To do
300 this, run gdmconfig(1).
301
302 On the General page set the Local Greeter to Standard Greeter.
303
304 On the Background page, type the command "xscreensaver --nosplash" into
305 the Background Program field. That will cause gdm to run XScreenSaver
306 while nobody is logged in, and kill it as soon as someone does log in.
307 (The user will then be responsible for starting XScreenSaver on their
308 own, if they want.)
309
310 If that doesn't work, you can edit the config file directly. Edit
311 /etc/X11/gdm/gdm.conf to include:
312
313 Greeter=/usr/bin/gdmlogin
314 BackgroundProgram=xscreensaver --nosplash
315 RunBackgroundProgramAlways=true
316
317 In this situation, the xscreensaver process will probably be running as
318 user gdm instead of as root. You can configure the settings for this
319 nobody-logged-in state (timeouts, DPMS, etc.) by editing the
320 ~gdm/.xscreensaver file.
321
322 It is safe to run xscreensaver as root (as xdm or gdm may do). If run
323 as root, xscreensaver changes its effective user and group ids to some‐
324 thing safe (like "nobody") before connecting to the X server or launch‐
325 ing user-specified programs.
326
327 An unfortunate side effect of this (important) security precaution is
328 that it may conflict with cookie-based authentication.
329
330 If you get "connection refused" errors when running xscreensaver from
331 gdm, then this probably means that you have xauth(1) or some other se‐
332 curity mechanism turned on. For information on the X server's access
333 control mechanisms, see the man pages for X(1), Xsecurity(1), xauth(1),
334 and xhost(1).
335
336
337 LAPTOP LIDS WITHOUT SYSTEMD
338 BSD systems or other systems without systemd(1) or elogind(8) might
339 have luck by adding xscreensaver-command --suspend to some appropriate
340 spot in /etc/acpi/events/anything or in /etc/acpi/handler.sh, if those
341 files exist.
342
343
345 XScreenSaver has a decades-long track record of securely locking your
346 screen. However, there are many things that can go wrong. X11 is a
347 very old system, and has a number of design flaws that make it suscep‐
348 tible to foot-shooting.
349
350
351 MAGIC BACKDOOR KEYSTROKES
352 The XFree86 and Xorg X servers, as well as the Linux kernel, both trap
353 certain magic keystrokes before X11 client programs ever see them. If
354 you care about keeping your screen locked, this is a big problem.
355
356
357 Ctrl+Alt+Backspace
358 This keystroke kills the X server, and on some systems, leaves you
359 at a text console. If the user launched X11 manually, that text
360 console will still be logged in. To disable this keystroke globally
361 and permanently, you need to set the DontZap flag in your xorg.conf
362 or XF86Config or XF86Config-4 file, depending which is in use on
363 your system. See XF86Config(5) for details.
364
365
366 Ctrl-Alt-F1, Ctrl-Alt-F2, etc.
367 These keystrokes will switch to a different virtual console, while
368 leaving the console that X11 is running on locked. If you left a
369 shell logged in on another virtual console, it is unprotected. So
370 don't leave yourself logged in on other consoles. You can disable
371 VT switching globally and permanently by setting DontVTSwitch in
372 your xorg.conf, but that might make your system harder to use, since
373 VT switching is an actual useful feature.
374
375 There is no way to disable VT switching only when the screen is
376 locked. It's all or nothing.
377
378
379 Ctrl-Alt-KP_Multiply
380 This keystroke kills any X11 app that holds a lock, so typing this
381 will kill XScreenSaver and unlock the screen. You can disable it by
382 turning off AllowClosedownGrabs in xorg.conf.
383
384
385 Alt-SysRq-F
386 This is the Linux kernel "OOM-killer" keystroke. It shoots down
387 random long-running programs of its choosing, and so might target
388 and kill XScreenSaver. You can disable this keystroke globally
389 with:
390
391 echo 176 > /proc/sys/kernel/sysrq
392
393 There's little that I can do to make the screen locker be secure so
394 long as the kernel and X11 developers are actively working against
395 security like this. The strength of the lock on your front door
396 doesn't matter much so long as someone else in the house insists on
397 leaving a key under the welcome mat.
398
399 THE OOM-KILLER
400 Even if you have disabled the Alt-SysRq-F OOM-killer keystroke, the
401 OOM-killer might still decide to assassinate XScreenSaver at random,
402 which will unlock your screen. If the xscreensaver-auth(6) program is
403 installed setuid, it attempts to tell the OOM-killer to leave the
404 XScreenSaver daemon alone, but that may or may not work.
405
406 You would think that the OOM-killer would pick the process using the
407 most memory, but most of the time it seems to pick the process that
408 would be most comically inconvenient, such as your screen locker, or
409 crond(8). You can disable the OOM-killer entirely with:
410
411 echo 2 > /proc/sys/vm/overcommit_memory
412 echo vm.overcommit_memory = 2 >> /etc/sysctl.conf
413
414
415
416 X SERVER ACCESS IS GAME OVER
417 X11's security model is all-or-nothing. If a program can connect to
418 your X server at all, either locally or over the network, it can log
419 all of your keystrokes, simulate keystrokes, launch arbitrary programs,
420 and change the settings of other programs. Assume that anything that
421 can connect to your X server can execute arbitrary code as the logged-
422 in user. See Xsecurity(1) and xauth(1).
423
424
425 PAM PASSWORDS
426 If your system uses PAM (Pluggable Authentication Modules), then PAM
427 must be configured for XScreenSaver. If it is not, then you might be
428 in a situation where you can't unlock. Probably the file you need is
429 /etc/pam.d/xscreensaver.
430
431
432 DON'T LOG IN AS ROOT
433 In order for it to be safe for XScreenSaver to be launched by xdm, cer‐
434 tain precautions had to be taken, among them that XScreenSaver never
435 runs as root. In particular, if it is launched as root (as xdm is
436 likely to do), XScreenSaver will disavow its privileges, and switch it‐
437 self to a safe user id (such as nobody).
438
439 An implication of this is that if you log in as root on the console,
440 XScreenSaver will refuse to lock the screen (because it can't tell the
441 difference between root being logged in on the console, and a normal
442 user being logged in on the console but XScreenSaver having been
443 launched by the xdm(1) Xsetup file).
444
445 Proper Unix hygiene dictates that you should log in as yourself, and
446 sudo(1) to root as necessary. People who spend their day logged in as
447 root are just begging for disaster.
448
449
451 For a single user, the proper way to configure XScreenSaver is to sim‐
452 ply run the xscreensaver-settings(1) program, and change the settings
453 through the GUI. The rest of this manual describes lower-level ways of
454 changing settings. You shouldn't need to know any of the stuff de‐
455 scribed below unless you are trying to do something complicated.
456
457 Options to XScreenSaver are stored in one of two places: in a file
458 called .xscreensaver in your home directory; or in the X resource
459 database. If the .xscreensaver file exists, it overrides any settings
460 in the resource database.
461
462 The syntax of the .xscreensaver file is similar to that of the .Xde‐
463 faults file; for example, to set the timeout parameter n the .xscreen‐
464 saver file, you would write the following:
465
466 timeout: 5
467
468 whereas, in the .Xdefaults file, you would write
469
470 xscreensaver.timeout: 5
471
472 If you change a setting in the .xscreensaver file while XScreenSaver is
473 already running, it will notice this, and reload the file as needed.
474
475 If you change a setting in your X resource database, or if you want
476 XScreenSaver to notice your changes immediately instead of the next
477 time it wakes up, then you will need to reload your .Xdefaults file,
478 and then tell the running xscreensaver process to restart itself, like
479 so:
480
481 xrdb < ~/.Xdefaults
482 xscreensaver-command --restart
483
484 If you want to set the system-wide defaults, then make your edits to
485 the XScreenSaver app-defaults file, which should have been installed
486 when XScreenSaver itself was installed. The app-defaults file will
487 usually be named /etc/X11/app-defaults/XScreenSaver, but different sys‐
488 tems might keep it in a different place.
489
490 When settings are changed in the Preferences dialog box, those settings
491 are written to the .xscreensaver file. The .Xdefaults file and the
492 app-defaults file will never be written by XScreenSaver itself.
493
494
496 These are the X resources use by XScreenSaver program. You probably
497 won't need to change these manually: that's what the xscreensaver-set‐
498 tings(1) program is for.
499
500
501 timeout (class Time)
502 The screensaver will activate (blank the screen) after the key‐
503 board and mouse have been idle for this many minutes. Default
504 10 minutes.
505
506
507 cycle (class Time)
508 After the screensaver has been running for this many minutes,
509 the currently running graphics-hack sub-process will be killed
510 (with SIGTERM), and a new one started. If this is 0, then the
511 graphics hack will never be changed: only one demo will run un‐
512 til the screensaver is deactivated by user activity. Default
513 10 minutes.
514
515 If there are multiple screens, the savers are staggered
516 slightly so that while they all change every cycle minutes,
517 they don't all change at the same time.
518
519
520 lock (class Boolean)
521 Enable locking: before the screensaver will turn off, it will
522 require you to type the password of the logged-in user.
523
524
525 lockTimeout (class Time)
526 If locking is enabled, this controls the length of the "grace
527 period" between when the screensaver activates, and when the
528 screen becomes locked. For example, if this is 5, and timeout
529 is 10, then after 10 minutes, the screen would blank. If there
530 was user activity at 12 minutes, no password would be required
531 to un-blank the screen. But, if there was user activity at 15
532 minutes or later (that is, lockTimeout minutes after activa‐
533 tion) then a password would be required. The default is 0,
534 meaning that if locking is enabled, then a password will be re‐
535 quired as soon as the screen blanks.
536
537
538 passwdTimeout (class Time)
539 If the screen is locked, then this is how many seconds the
540 password dialog box should be left on the screen before giving
541 up (default 30 seconds). A few seconds are added each time you
542 type a character.
543
544
545 dpmsEnabled (class Boolean)
546 Whether power management is enabled.
547
548
549 dpmsStandby (class Time)
550 If power management is enabled, how long until the monitor goes
551 solid black.
552
553
554 dpmsSuspend (class Time)
555 If power management is enabled, how long until the monitor goes
556 into power-saving mode.
557
558
559 dpmsOff (class Time)
560 If power management is enabled, how long until the monitor pow‐
561 ers down completely. Note that these settings will have no ef‐
562 fect unless both the X server and the display hardware support
563 power management; not all do. See the Power Management sec‐
564 tion, below, for more information.
565
566
567 dpmsQuickOff (class Boolean)
568 If mode is blank and this is true, then the screen will be pow‐
569 ered down immediately upon blanking, regardless of other power-
570 management settings.
571
572
573 verbose (class Boolean)
574 Whether to print diagnostics. Default false.
575
576
577 splash (class Boolean)
578 Whether to display a splash screen at startup. Default true.
579
580
581 splashDuration (class Time)
582 How long the splash screen should remain visible; default 5
583 seconds.
584
585
586 helpURL (class URL)
587 The splash screen has a Help button on it. When you press it,
588 it will display the web page indicated here in your web
589 browser.
590
591
592 loadURL (class LoadURL)
593 This is the shell command used to load a URL into your web
594 browser. The default setting will load it into Mozilla/Net‐
595 scape if it is already running, otherwise, will launch a new
596 browser looking at the helpURL.
597
598
599 demoCommand (class DemoCommand)
600 This is the shell command run when the Demo button on the
601 splash window is pressed. It defaults to xscreensaver-set‐
602 tings(1).
603
604
605 newLoginCommand (class NewLoginCommand)
606 If set, this is the shell command that is run when the "New Lo‐
607 gin" button is pressed on the unlock dialog box, in order to
608 create a new desktop session without logging out the user who
609 has locked the screen. Typically this will be some variant of
610 gdmflexiserver(1), kdmctl(1), lxdm(1) or dm-tool(1).
611
612
613 nice (class Nice)
614 The sub-processes launched by XScreenSaver will be "niced" to
615 this level, so that they are given lower priority than other
616 processes on the system, and don't increase the load unneces‐
617 sarily. The default is 10. (Higher numbers mean lower prior‐
618 ity; see nice(1) for details.)
619
620
621 fade (class Boolean)
622 If this is true, then when the screensaver activates, the cur‐
623 rent contents of the screen will fade to black instead of sim‐
624 ply winking out. Default: true.
625
626
627 unfade (class Boolean)
628 If this is true, then when the screensaver deactivates, the
629 original contents of the screen will fade in from black instead
630 of appearing immediately. This is only done if fade is true as
631 well. Default: true.
632
633
634 fadeSeconds (class Time)
635 If fade is true, this is how long the fade will be in seconds.
636 Default 3 seconds.
637
638
639 ignoreUninstalledPrograms (class Boolean)
640 There may be programs in the list that are not installed on the
641 system, yet are marked as "enabled". If this preference is
642 true, then such programs will simply be ignored. If false,
643 then a warning will be printed if an attempt is made to run the
644 nonexistent program. Also, the xscreensaver-settings(1) pro‐
645 gram will suppress the non-existent programs from the list if
646 this is true. Default: false.
647
648
649 authWarningSlack (class Integer)
650 After you successfully unlock the screen, a dialog may pop up
651 informing you of previous failed login attempts. If all of
652 those login attemps were within this amount of time, they are
653 ignored. The assumption is that incorrect passwords entered
654 within a few seconds of a correct one are user error, rather
655 than hostile action. Default 20 seconds.
656
657
658 mode (class Mode)
659 Controls the screen-saving behavior. Valid values are:
660
661
662 random When blanking the screen, select a random display mode
663 from among those that are enabled and applicable. This
664 is the default.
665
666
667 random-same
668 Like random, but if there are multiple screens, each
669 screen will run the same random display mode, instead
670 of each screen running a different one.
671
672
673 one When blanking the screen, only ever use one particular
674 display mode (the one indicated by the selected set‐
675 ting).
676
677
678 blank When blanking the screen, just go black: don't run any
679 graphics hacks.
680
681
682 off Don't ever blank the screen, and don't ever allow the
683 monitor to power down.
684
685
686 selected (class Integer)
687 When mode is set to one, this is the one, indicated by its in‐
688 dex in the programs list. You're crazy if you count them and
689 set this number by hand: let xscreensaver-settings(1) do it for
690 you!
691
692
693 programs (class Programs)
694 The graphics hacks which XScreenSaver runs when the user is
695 idle. The value of this resource is a multi-line string, one
696 sh-syntax command per line. Each line must contain exactly one
697 command: no semicolons, no ampersands.
698
699 When the screensaver starts up, one of these is selected (ac‐
700 cording to the mode setting), and run. After the cycle period
701 expires, it is killed, and another is selected and run.
702
703 If a line begins with a dash (-) then that particular program
704 is disabled: it won't be selected at random (though you can
705 still select it explicitly using the xscreensaver-settings(1)
706 program).
707
708 If all programs are disabled, then the screen will just be made
709 blank, as when mode is set to blank.
710
711 To disable a program, you must mark it as disabled with a dash
712 instead of removing it from the list. This is because the sys‐
713 tem-wide (app-defaults) and per-user (.xscreensaver) settings
714 are merged together, and if a user just deletes an entry from
715 their programs list, but that entry still exists in the system-
716 wide list, then it will come back. However, if the user dis‐
717 ables it, then their setting takes precedence.
718
719 If the display has multiple screens, then a different program
720 will be run for each screen. (All screens are blanked and un‐
721 blanked simultaneously.)
722
723 Note that you must escape the newlines; here is an example of
724 how you might set this in your ~/.xscreensaver file:
725
726 programs: \
727 qix -root \n\
728 ico -r -faces -sleep 1 -obj ico \n\
729 xdaliclock -builtin2 -root \n\
730 xv -root -rmode 5 image.gif -quit \n
731
732 Make sure your $PATH environment variable is set up correctly
733 before XScreenSaver is launched, or it won't be able to find
734 the programs listed in the programs resource.
735
736 To use a program as a screensaver, it must be able to render
737 onto the window provided to it in the $XSCREENSAVER_WINDOW en‐
738 vironment variable. If it creates and maps its own window in‐
739 stead, it won't work. It must render onto the provided window.
740
741 Visuals:
742
743 Because XScreenSaver was created back when dinosaurs roamed the
744 earth, it still contains support for some things you've proba‐
745 bly never seen, such as 1-bit monochrome monitors, grayscale
746 monitors, and monitors capable of displaying only 8-bit col‐
747 ormapped images.
748
749 If there are some programs that you want to run only when using
750 a color display, and others that you want to run only when us‐
751 ing a monochrome display, you can specify that like this:
752
753 mono: mono-program -root \n\
754 color: color-program -root \n\
755
756 More generally, you can specify the kind of visual that should
757 be used for the window on which the program will be drawing.
758 For example, if one program works best if it has a colormap,
759 but another works best if it has a 24-bit visual, both can be
760 accommodated:
761
762 PseudoColor: cmap-program -root \n\
763 TrueColor: 24bit-program -root \n\
764
765 In addition to the symbolic visual names described above (in
766 the discussion of the visualID resource) one other visual name
767 is supported in the programs list:
768
769 default-n
770 This is like default, but also requests the use of the de‐
771 fault colormap, instead of a private colormap.
772
773 If you specify a particular visual for a program, and that vis‐
774 ual does not exist on the screen, then that program will not be
775 chosen to run. This means that on displays with multiple
776 screens of different depths, you can arrange for appropriate
777 hacks to be run on each. For example, if one screen is color
778 and the other is monochrome, hacks that look good in mono can
779 be run on one, and hacks that only look good in color will show
780 up on the other.
781
782
783 visualID (class VisualID)
784 This is an historical artifact left over from when 8-bit dis‐
785 plays were still common. You should probably ignore this.
786
787 Specify which X visual to use by default. (Note carefully that
788 this resource is called visualID, not merely visual; if you set
789 the visual resource instead, things will malfunction in obscure
790 ways for obscure reasons.)
791
792 Valid values for the VisualID resource are:
793
794 default Use the screen's default visual (the visual of the root
795 window). This is the default.
796
797 best Use the visual which supports the most colors. Note,
798 however, that the visual with the most colors might be
799 a TrueColor visual, which does not support colormap an‐
800 imation. Some programs have more interesting behavior
801 when run on PseudoColor visuals than on TrueColor.
802
803 mono Use a monochrome visual, if there is one.
804
805 gray Use a grayscale or staticgray visual, if there is one
806 and it has more than one plane (that is, it's not mono‐
807 chrome).
808
809 color Use the best of the color visuals, if there are any.
810
811 GL Use the visual that is best for OpenGL programs.
812 (OpenGL programs have somewhat different requirements
813 than other X programs.)
814
815 class where class is one of StaticGray, StaticColor, True‐
816 Color, GrayScale, PseudoColor, or DirectColor. Selects
817 the deepest visual of the given class.
818
819 N where number (decimal or hex) is interpreted as a vis‐
820 ual id number, as reported by the xdpyinfo(1) program;
821 in this way you can have finer control over exactly
822 which visual gets used, for example, to select a shal‐
823 lower one than would otherwise have been chosen.
824
825 Note that this option specifies only the default visual that
826 will be used: the visual used may be overridden on a program-
827 by-program basis. See the description of the programs re‐
828 source, above.
829
830
831 installColormap (class Boolean)
832 This is an historical artifact left over from when 8-bit dis‐
833 plays were still common. On PseudoColor (8-bit) displays, in‐
834 stall a private colormap while the screensaver is active, so
835 that the graphics hacks can get as many colors as possible.
836 This is the default. (This only applies when the screen's de‐
837 fault visual is being used, since non-default visuals get their
838 own colormaps automatically.) This can also be overridden on a
839 per-hack basis: see the discussion of the default-n name in the
840 section about the programs resource.
841
842 This does nothing if you have a TrueColor (16-bit or deeper)
843 display. (Which, in this century, you do.)
844
845
846 pointerHysteresis (class Integer)
847 If the mouse moves less than this-many pixels in a second, ig‐
848 nore it (do not consider that to be "activity"). This is so
849 that the screen doesn't un-blank (or fail to blank) just be‐
850 cause you bumped the desk. Default: 10 pixels.
851
852
854 https://www.jwz.org/xscreensaver/bugs.html explains how to write the
855 most useful bug reports. If you find a bug, please let me know!
856
857
859 DISPLAY to get the default host and display number, and to inform the
860 sub-programs of the screen on which to draw.
861
862 XSCREENSAVER_WINDOW
863 Passed to sub-programs to indicate the ID of the window on
864 which they should draw. This is necessary on Xinerama/RANDR
865 systems where multiple physical monitors share a single X11
866 "Screen".
867
868 PATH to find the sub-programs to run, including the display modes.
869
870 HOME for the directory in which to read the .xscreensaver file.
871
872 XENVIRONMENT
873 to get the name of a resource file that overrides the global
874 resources stored in the RESOURCE_MANAGER property.
875
877 The latest version of XScreenSaver, an online version of this manual,
878 and a FAQ can always be found at https://www.jwz.org/xscreensaver/
879
881 X(1), Xsecurity(1), xauth(1), xdm(1), gdm(1), xhost(1), systemd(1), el‐
882 ogind(8), xscreensaver-settings(1), xscreensaver-command(1), xscreen‐
883 saver-systemd(6), xscreensaver-gl-helper(6), xscreensaver-getimage(6),
884 xscreensaver-text(6).
885
887 Copyright © 1991-2021 by Jamie Zawinski. Permission to use, copy, mod‐
888 ify, distribute, and sell this software and its documentation for any
889 purpose is hereby granted without fee, provided that the above copy‐
890 right notice appear in all copies and that both that copyright notice
891 and this permission notice appear in supporting documentation. No rep‐
892 resentations are made about the suitability of this software for any
893 purpose. It is provided "as is" without express or implied warranty.
894
896 Jamie Zawinski <jwz@jwz.org>. Written in late 1991; version 1.0 posted
897 to comp.sources.x on 17-Aug-1992.
898
899 Please let me know if you find any bugs or make any improvements.
900
901 And a huge thank you to the hundreds of people who have contributed, in
902 large ways and small, to the XScreenSaver collection over the past
903 three decades!
904
905
906
907X Version 11 6.00-4.fc34 (05-May-2021) XScreenSaver(1)