This repository packages the Mystify display hack independently from the full
XScreenSaver source package.
It is intended for users who want Mystify on an existing XScreenSaver
installation without replacing their distribution's complete XScreenSaver
package or waiting for the next upstream release.
Current standalone release: 0.2.0
mystify.c, config/mystify.xml, and mystify.6x are copied from the
authoritative XScreenSaver implementation.
Current synchronized source commit:
f1a60a3ab34d70e76749e24ff48fadd4598d03bd
mystify: allocate colors through XScreenSaver utilities
The standalone-only files screenhack.h, screenhack-standalone.c,
colors.h, and colors-standalone.c provide the small parts of the
XScreenSaver module lifecycle, resource handling, and color allocation needed
to compile the unmodified hack as an independent executable.
The display-hack source should remain byte-for-byte identical to
hacks/mystify.c at the recorded XScreenSaver commit.
This generic build path can be used on any Unix-like distribution with the
required development tools and X11 libraries.
Build requirements:
make;pkg-config;On Debian or Ubuntu:
sudo apt update
sudo apt install build-essential pkgconf libx11-dev xscreensaver
On Fedora, RHEL, Rocky Linux, or AlmaLinux with EPEL enabled:
sudo dnf install gcc make pkgconf-pkg-config libX11-devel xscreensaver-base
On another distribution, install the equivalent compiler, make,
pkg-config, Xlib development package, and XScreenSaver runtime package.
Compile and test Mystify from the top-level source directory:
make
make check
Run the compiled program directly without installing it:
./mystify -window
Install the executable and XML configuration directly, without creating a
distribution package:
sudo make install
The default manual installation paths are:
/usr/libexec/xscreensaver/mystify
/usr/share/xscreensaver/config/mystify.xml
Distributions with a different XScreenSaver filesystem layout can override
PREFIX, LIBEXECDIR, and SYSCONFDIR when running make install.
Install the Debian packaging dependencies:
sudo apt update
sudo apt install build-essential debhelper pkgconf libx11-dev
Build an unsigned binary package from the top-level source directory:
dpkg-buildpackage -b -us -uc
The generated .deb package and related build artifacts are written to the
parent directory.
On Enterprise Linux, enable EPEL first so the resulting package can use the
EPEL xscreensaver-base runtime dependency.
Install the RPM build tools and build dependencies:
sudo dnf install gcc make pkgconf-pkg-config libX11-devel \
desktop-file-utils rpm-build rpmdevtools xscreensaver-base
Create the standard RPM build tree, download the tagged source archive declared
by the spec, and build both the source and binary RPMs:
rpmdev-setuptree
spectool -g -R xscreensaver-mystify.spec
rpmbuild -ba xscreensaver-mystify.spec
The generated packages are written beneath:
~/rpmbuild/SRPMS/
~/rpmbuild/RPMS/<architecture>/
The RPM spec follows Fedora and EPEL's non-OpenGL XScreenSaver hack layout.
It installs a modular hacks.conf.d fragment and refreshes XScreenSaver's
generated hack list when the package is installed or removed.
The RPM package also installs a GNOME-only desktop entry under
/usr/share/applications/screensavers. The entry is marked with
OnlyShowIn=GNOME;, allowing GNOME-compatible desktop tools to discover
Mystify without exposing it as an ordinary application in KDE Plasma, Xfce,
or other desktop environments. XScreenSaver itself registers Mystify
separately through the installed hacks.conf.d fragment.
Both the Debian and RPM packages install the Mystify executable, XML
configuration, manual page, and screensaver desktop entry.
The RPM package additionally installs Fedora and EPEL's modular
hacks.conf.d registration fragment and refreshes XScreenSaver's generated
hack list when the package is installed or removed.
The Fedora and Enterprise Linux RPM registers Mystify automatically. Debian
package and package-less installations currently require a per-user entry in
~/.xscreensaver before Mystify appears in xscreensaver-settings and can be
selected by the XScreenSaver daemon.
Run xscreensaver-settings once if ~/.xscreensaver does not yet exist. Then
back up the configuration and add Mystify to the programs resource:
test -e ~/.xscreensaver.before-mystify ||
cp -a ~/.xscreensaver ~/.xscreensaver.before-mystify
grep -Eq \
'^[[:space:]]*-?[[:space:]]*mystify[[:space:]]+--?root([[:space:]]|$)' \
~/.xscreensaver ||
sed -i \
'/^programs:/a\ mystify --root \\n\\' \
~/.xscreensaver
XScreenSaver normally reloads ~/.xscreensaver automatically. To reload it
immediately and verify that Mystify appears in the settings dialog:
xscreensaver-command --restart
xscreensaver-settings
When Mystify has been installed under a nonstandard LIBEXECDIR, replace
mystify in the inserted entry with the full path to the executable.
Mystify and its standalone compatibility host are distributed under the X11
License. See LICENSE.