How to add Folding@Home Screensaver (FAHScreensaver) to XScreenSaver
I found myself wanting to put FAHScreensaver in as a proper screensaver in Linux, partially because it looks nice but mostly because the idle detection in Linux by Folding@Home seems to be broken. So here are some steps to make that happen. These steps assume you have root or otherwise privileged access to the machine in question:
Step 1) Download FAHScreensaver.
Preferably a version matching your FAHClient version from here: https://fah-web.stanford.edu/file-releases/beta/release/fahcontrol/debian-testing-64bit/. I recommend using the .tar.bz2 to avoid all the distro-specific packaging, particularly if like me you use Gentoo or some other non-deb-or-rpm distro. Inside the .tar.bz2 you’ll find an already compiled FAHScreensaver executable. Copy it to the folder of executables for XScreenSaver. In my case the folder was /usr/lib64/misc/xscreensaver … if you cannot find it try running on a shell as root: locate glmatrix
Step 2) Copy an appropriate config file to the xscreensaver config file directory.
In my case the directory was /usr/share/xscreensaver/config. If you cannot find it try running on a shell as root: locate glmatrix.xml
Here is my own bare bones config file which I created by blatantly copying zoom’s xml file and gutting it. http://www.jeremysands.com/linux/foldingathome/FAHScreensaver.xml
Step 3) Modify the .xscreensaver file in your home directory.
Using an editor of your choice (sudo gedit ~/.xscreensaver if you want the Ubuntu/Mint-ized command) open ~/.xscreensaver
A few dozen lines down it will start to list all the different screensavers. You will need to add a line for FAHScreensaver in this section. Since I copied my xml file after zoom … I simply found the line for zoom, copied it over again, but renamed it FAHScreensaver and saved the file.
Alternatively, make the above change to /usr/share/X11/app-defaults/XScreenSaver for it to be the global default.
(Optional) Step 4) KDE Integration
Add the following file to the /usr/share/kde4/services/ScreenSavers directory: http://www.jeremysands.com/linux/foldingathome/FAHScreensaver.desktop
After you have done these steps you should be able to run xscreensaver-demo or open up the screensaver options in KDE and have FAHScreensaver as an option. Presto!
Suggestions or distro specific things to watch out for? Leave a comment below.
If you found this particularly useful and don’t have a team home for your Folding@Home machines yet, I humbly suggest Team 33100, particularly if you are a college sports fan and want to talk sports on the webbernets with other people at CSNbbs.
FAHScreensaver doesn’t seem to be included in the 7.4.4 packages, and the idle detection is still broken. Do you know of any other way to force the client to pause/unpause from the command line so that I could add it to the script monitoring xscreensaver with “xscreensaver-command -watch” ?