TL;DR

sudo sed -i '/zoom -root/d' /usr/share/X11/app-defaults/XScreenSaver

.. and restart xscreensaver

The Problem

I switched job recently. My new employer is using Zoom for video conferencing. All internal meetings are on Zoom, as well as any peer-to-peer talks.

Zoom is also quite resource hungry. It will stay in tray unless you exit it explicitly. I decided to start Zoom only when needed and shutdown after the meeting.

What I noticed early on, is that Zoom did auto-restart every time I left computer for a while. Zoom login screen was greeting me every time I unlocked my screen.

Dead Ends

Skip this section. It's my ramblings on why it took me hours to figure it out.

First, I was looking for configuration in Zoom itself. Their Settings UI, and ~/.config/zoomus.conf. Nothing. Hmm.. maybe they insert a file at the right place to be auto-executed at certain events. I checked zoom rpm content, all pre/post-install scripts. Nothing.

Then, I focused on find who is executing Zoom. It had parent id 1, so no hint there. I greped my whole /etc and $HOME for certain unique strings from zoom command-line. Nothing.

Then I had a brilliant idea: switch to text console after locking the computer. There, I noticed that zoom was forked-off from xscreensaver process.

Aaaaa.. ha!

xscreensaver

At this point, I should mention that I like my OS to be small and lean. I ditched KDE when it became too bloated for my taste and switched to Fedora LXDE. LXDE is by default using xscreensaver for screen locking/unlocking. I don't need any fancy screensavers, so I have none installed, just black screen is fine.

So, why would xscreensaver run zoom app ? Is there some post-unlock hook, where Zoom has injected itself ?

Then I found xscreensaver-demo and it hit me. Zoom is a screensaver app.

zoom-screensaver

For a while I was wandering if Zoom developers needed to be notified of lock/unlock events to resume some long-running meetings or such. Maybe not..

Then, I check xscreensaver documentation on how to configure screen-saver apps. There is a file /usr/share/X11/app-defaults/XScreenSaver, which among other things lists all available screen-saver apps

! You can use the `xscreensaver-demo' program to edit the current list of
! screen savers interactively.
!
*programs:                                                                    \
                                maze -root                                  \n\
  GL:                           superquadrics -root                         \n\
                                attraction -root                            \n\
                                blitspin -root                              \n\
...
                                vermiculate -root                           \n\
                                whirlwindwarp -root                         \n\
                                zoom -root                                  \n\
                                anemone -root                               \n\
                                apollonian -root                            \n\
...

Well, apparent, in those ancient times there was a screensaver app called zoom !!

Is that a list of apps that are searched on some xscreensaver-specific directory ? No! They are searched on your $PATH as well.

stat("/usr/libexec/xscreensaver/maze", 0x7ffd28e36920) = -1 ENOENT (No such file or directory)
stat("/home/zarnovic/bin/maze", 0x7ffd28e36920) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/qt-3.3/bin/maze", 0x7ffd28e36920) = -1 ENOENT (No such file or directory)
stat("/usr/local/bin/maze", 0x7ffd28e36920) = -1 ENOENT (No such file or directory)
stat("/bin/maze", 0x7ffd28e36920)       = -1 ENOENT (No such file or directory)
stat("/usr/bin/maze", 0x7ffd28e36920)   = -1 ENOENT (No such file or directory)
stat("/usr/local/sbin/maze", 0x7ffd28e36920) = -1 ENOENT (No such file or directory)
stat("/usr/sbin/maze", 0x7ffd28e36920)  = -1 ENOENT (No such file or directory)
stat("/sbin/maze", 0x7ffd28e36920)      = -1 ENOENT (No such file or directory)
stat("/bin/maze", 0x7ffd28e36920)       = -1 ENOENT (No such file or directory)

Because Zoom has installed zoom to my PATH, it became the one and only screensaver app (remember, I have no other screensavers installed).

The Fix

You can do several things to disable Zoom screensaver app:

  • explicitly set blank screen, disabling screensaver apps
  • disable zoom by prepending "-" in the XScreenSaver
! If you want to disable a screensaver, DO NOT remove it from this list:
! instead, mark it as inactive by placing a "-" at the beginning of the line.
  • or just delete the line altogether
sudo sed -i '/zoom -root/d' /usr/share/X11/app-defaults/XScreenSaver