From badef32037f52f79abc1f1440b786cd71afdf270 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 6 Sep 2024 14:42:37 +0200 Subject: 6.09 --- driver/.gdbinit | 27 - driver/Makefile.in | 263 +- driver/XScreenSaver.ad.in | 514 +-- driver/XScreenSaver_Xm_ad.h | 108 + driver/XScreenSaver_ad.h | 551 +++ driver/atoms.c | 9 +- driver/atoms.h | 5 +- driver/atomswm.c | 20 +- driver/auth.h | 4 +- driver/blurb.c | 27 +- driver/clientmsg.c | 108 +- driver/compile_axp.com | 15 - driver/compile_decc.com | 15 - driver/demo-Gtk-conf.c | 524 +-- driver/demo-Gtk-conf.h | 54 +- driver/demo-Gtk.c | 6228 +++++++++++++++--------------- driver/demo-Xm.c | 19 +- driver/demo.ui | 2630 +++++++++++++ driver/dialog.c | 385 +- driver/dpms.c | 117 +- driver/exts.c | 15 +- driver/fade.c | 108 +- driver/fade.h | 8 + driver/gresource.xml | 7 + driver/link_axp.com | 15 - driver/link_decc.com | 15 - driver/lock.c | 2276 ----------- driver/mlstring.c | 229 -- driver/mlstring.h | 57 - driver/passwd-helper.c | 158 - driver/passwd-pam.c | 18 +- driver/passwd-pwent.c | 7 +- driver/pdf2jpeg.m | 152 - driver/pdf2jpeg.man | 43 - driver/prefs.ui | 518 +++ driver/prefsw.c | 276 +- driver/remote.c | 9 +- driver/screens.c | 249 +- driver/screensaver-properties.desktop.in | 8 - driver/stderr.c | 560 --- driver/subprocs.c | 105 +- driver/test-grab.c | 11 +- driver/test-randr.c | 112 +- driver/test-screens.c | 2 +- driver/test-xinput.c | 708 +++- driver/types.h | 12 +- driver/vms_axp.opt | 5 - driver/vms_axp_12.opt | 5 - driver/vms_decc.opt | 5 - driver/vms_decc_12.opt | 5 - driver/windows.c | 77 +- driver/xinput.c | 186 +- driver/xinput.h | 2 +- driver/xscreensaver-auth.c | 92 +- driver/xscreensaver-auth.man | 4 +- driver/xscreensaver-command.c | 47 +- driver/xscreensaver-command.man | 47 +- driver/xscreensaver-demo.glade2.in | 3136 --------------- driver/xscreensaver-demo.glade2p | 19 - driver/xscreensaver-demo.man | 402 -- driver/xscreensaver-getimage-desktop | 174 - driver/xscreensaver-getimage-desktop.man | 55 - driver/xscreensaver-getimage-file | 1317 ------- driver/xscreensaver-getimage-file.man | 66 - driver/xscreensaver-getimage-video | 144 - driver/xscreensaver-getimage-video.man | 51 - driver/xscreensaver-getimage.man | 73 - driver/xscreensaver-gfx.c | 47 +- driver/xscreensaver-gfx.man | 5 +- driver/xscreensaver-settings.desktop.in | 9 + driver/xscreensaver-settings.man | 145 +- driver/xscreensaver-systemd.c | 1406 +++++-- driver/xscreensaver-systemd.man | 69 +- driver/xscreensaver-text | 899 ----- driver/xscreensaver-text.man | 85 - driver/xscreensaver.c | 214 +- driver/xscreensaver.desktop.in | 9 + driver/xscreensaver.man | 605 ++- driver/xscreensaver.service.in | 18 + driver/xscreensaver.ui | 2994 -------------- 80 files changed, 11273 insertions(+), 18445 deletions(-) delete mode 100644 driver/.gdbinit create mode 100644 driver/XScreenSaver_Xm_ad.h create mode 100644 driver/XScreenSaver_ad.h delete mode 100644 driver/compile_axp.com delete mode 100644 driver/compile_decc.com create mode 100644 driver/demo.ui create mode 100644 driver/gresource.xml delete mode 100644 driver/link_axp.com delete mode 100644 driver/link_decc.com delete mode 100644 driver/lock.c delete mode 100644 driver/mlstring.c delete mode 100644 driver/mlstring.h delete mode 100644 driver/passwd-helper.c delete mode 100644 driver/pdf2jpeg.m delete mode 100644 driver/pdf2jpeg.man create mode 100644 driver/prefs.ui delete mode 100644 driver/screensaver-properties.desktop.in delete mode 100644 driver/stderr.c delete mode 100644 driver/vms_axp.opt delete mode 100644 driver/vms_axp_12.opt delete mode 100644 driver/vms_decc.opt delete mode 100644 driver/vms_decc_12.opt delete mode 100644 driver/xscreensaver-demo.glade2.in delete mode 100644 driver/xscreensaver-demo.glade2p delete mode 100644 driver/xscreensaver-demo.man delete mode 100755 driver/xscreensaver-getimage-desktop delete mode 100644 driver/xscreensaver-getimage-desktop.man delete mode 100755 driver/xscreensaver-getimage-file delete mode 100644 driver/xscreensaver-getimage-file.man delete mode 100755 driver/xscreensaver-getimage-video delete mode 100644 driver/xscreensaver-getimage-video.man delete mode 100644 driver/xscreensaver-getimage.man create mode 100755 driver/xscreensaver-settings.desktop.in delete mode 100755 driver/xscreensaver-text delete mode 100644 driver/xscreensaver-text.man create mode 100755 driver/xscreensaver.desktop.in create mode 100644 driver/xscreensaver.service.in delete mode 100644 driver/xscreensaver.ui (limited to 'driver') diff --git a/driver/.gdbinit b/driver/.gdbinit deleted file mode 100644 index a585259..0000000 --- a/driver/.gdbinit +++ /dev/null @@ -1,27 +0,0 @@ -# If you're debugging xscreensaver and you are running a virtual root window -# manager, you'd better let the process handle these signals: it remaps the -# virtual root window when they arrive. If you don't do this, your window -# manager will be hosed. -# -# Also, gdb copes badly with breakpoints in functions that are called on the -# other side of a fork(). The Trace/BPT traps cause the spawned process to -# die. -# -#handle 1 pass nostop -#handle 3 pass nostop -#handle 4 pass nostop -#handle 6 pass nostop -#handle 7 pass nostop -#handle 8 pass nostop -#handle 9 pass nostop -#handle 10 pass nostop -#handle 11 pass nostop -#handle 12 pass nostop -#handle 13 pass nostop -#handle 15 pass nostop -#handle 19 pass nostop -set env MallocGuardEdges 1 -set env MallocPreScribble 1 -set env MallocScribble 1 -b exit -set args -debug diff --git a/driver/Makefile.in b/driver/Makefile.in index 0e986a9..4b3c1cb 100644 --- a/driver/Makefile.in +++ b/driver/Makefile.in @@ -1,9 +1,9 @@ -# driver/Makefile.in --- xscreensaver, Copyright © 1997-2021 Jamie Zawinski. +# driver/Makefile.in --- xscreensaver, Copyright © 1997-2023 Jamie Zawinski. # the `../configure' script generates `driver/Makefile' from this file. @SET_MAKE@ .SUFFIXES: -.SUFFIXES: .c .m .o .desktop .desktop.in +.SUFFIXES: .c .m .o .desktop .desktop.in .service .service.in srcdir = @srcdir@ VPATH = @srcdir@ @@ -29,7 +29,9 @@ mansuffixB = 6 GTK_DATADIR = @GTK_DATADIR@ GTK_APPDIR = $(GTK_DATADIR)/applications GTK_ICONDIR = $(GTK_DATADIR)/pixmaps -GTK_UIDIR = $(GTK_DATADIR)/xscreensaver/ui +GTK_SHAREDIR = $(GTK_DATADIR)/xscreensaver +UPDATE_ICON_CACHE = gtk-update-icon-cache +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ HACKDIR = @HACKDIR@ HACK_CONF_DIR = @HACK_CONF_DIR@ @@ -51,6 +53,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SETUID = $(INSTALL_PROGRAM) $(SUID_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIRS = @INSTALL_DIRS@ +HACKDIR = @HACKDIR@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ @@ -81,8 +84,7 @@ PAM_DIR = $(PAM_ROOT)/pam.d PAM_CONF = $(PAM_ROOT)/pam.conf ICON_SRC = $(UTILS_SRC)/images -LOGO = $(ICON_SRC)/logo-50.xpm -GTK_ICONS = $(ICON_SRC)/screensaver-*.png +LOGO = $(ICON_SRC)/logo-512.png UTILS_SRC = $(srcdir)/../utils UTILS_BIN = ../utils @@ -94,7 +96,7 @@ LIBS_PRE = $(LIBS) $(X_LIBS) $(X_PRE_LIBS) LIBS_POST = $(X_EXTRA_LIBS) XDPMS_LIBS = @XDPMS_LIBS@ -XINERAMA_LIBS = @XINERAMA_LIBS@ $(FIXME) +XINERAMA_LIBS = @XINERAMA_LIBS@ XINPUT_LIBS = -lXi XML_LIBS = @XML_LIBS@ @@ -118,6 +120,7 @@ GFX_OBJS = xscreensaver-gfx.o screens.o windows.o subprocs.o \ $(UTILS_BIN)/font-retry.o \ $(UTILS_BIN)/logo.o \ $(UTILS_BIN)/minixpm.o \ + $(UTILS_BIN)/screenshot.o \ $(UTILS_BIN)/xft.o \ $(UTILS_BIN)/utf8wc.o \ $(UTILS_BIN)/xshm.o \ @@ -134,9 +137,6 @@ KERBEROS_OBJS = passwd-kerberos.o PAM_SRCS = passwd-pam.c PAM_OBJS = passwd-pam.o -PWHELPER_SRCS = passwd-helper.c -PWHELPER_OBJS = passwd-helper.o - PASSWD_SRCS = @PASSWD_SRCS@ PASSWD_OBJS = @PASSWD_OBJS@ @@ -160,7 +160,7 @@ AUTH_OBJS_1 = dialog.o passwd.o setuid.o \ $(UTILS_BIN)/logo.o \ $(UTILS_BIN)/minixpm.o AUTH_LIBS = $(LIBS_PRE) $(XFT_LIBS) $(XINPUT_LIBS) $(XINERAMA_LIBS) \ - @SAVER_LIBS@ -lXt -lX11 -lXext -lXi \ + $(XDPMS_LIBS) @SAVER_LIBS@ -lXt -lX11 -lXext -lXi \ @PASSWD_LIBS@ $(LIBS_POST) $(INTL_LIBS) SYSTEMD_DEFS = @@ -175,16 +175,16 @@ CMD_LIBS = $(LIBS_PRE) $(XINPUT_LIBS) -lX11 -lXext $(LIBS_POST) GTK_DEFS = -DHACK_CONFIGURATION_PATH='"$(HACK_CONF_DIR)"' \ -DDEFAULT_PATH_PREFIX='"@HACKDIR@"' \ - -DDEFAULT_ICONDIR='"$(GTK_UIDIR)"' \ -DLOCALEDIR=\"$(localedir)\" \ -I$(ICON_SRC) GTK_SRCS = demo-Gtk.c demo-Gtk-conf.c -GTK_OBJS = demo-Gtk.o demo-Gtk-conf.o \ - blurb.o exec.o prefs.o prefsw.o dpms.o remote.o \ +GTK_OBJS = demo-Gtk.o demo-Gtk-conf.o demo-Gtk-resources.o \ + blurb.o exec.o prefs.o prefsw.o dpms.o remote.o screens.o \ clientmsg.o atoms.o \ $(UTILS_BIN)/xmu.o \ $(UTILS_BIN)/resources.o \ $(UTILS_BIN)/visual.o \ + $(UTILS_BIN)/screenshot.o \ $(UTILS_BIN)/usleep.o GTK_LIBS = $(LIBS_PRE) $(INTL_LIBS) $(XDPMS_LIBS) \ $(XINERAMA_LIBS) $(XML_LIBS) @GTK_LIBS@ \ @@ -217,6 +217,7 @@ UTIL_EXES = xscreensaver-gfx @EXES_SYSTEMD@ SETUID_EXES = xscreensaver-auth DEMO_EXES = @ALL_DEMO_PROGRAMS@ EXES_SYSTEMD = xscreensaver-systemd +DESKS = xscreensaver.desktop xscreensaver.service HDRS = XScreenSaver_ad.h XScreenSaver_Xm_ad.h \ xscreensaver.h prefs.h remote.h exec.h \ @@ -225,22 +226,25 @@ HDRS = XScreenSaver_ad.h XScreenSaver_Xm_ad.h \ MENA = xscreensaver.man xscreensaver-settings.man \ xscreensaver-command.man MENB = xscreensaver-gfx.man xscreensaver-auth.man \ - xscreensaver-command.man xscreensaver-systemd.man + xscreensaver-systemd.man EXTRAS = README Makefile.in \ XScreenSaver.ad.in XScreenSaver-Xm.ad xscreensaver.pam.in \ - xscreensaver.ui screensaver-properties.desktop.in \ - .gdbinit + demo.ui prefs.ui gresource.xml xscreensaver.desktop.in \ + xscreensaver-settings.desktop.in xscreensaver.service.in TARFILES = $(DAEMON_SRCS) $(GFX_SRCS) $(AUTH_SRCS) $(SYSTEMD_SRCS) \ $(CMD_SRCS) $(GTK_SRCS) $(MOTIF_SRCS) $(PWENT_SRCS) \ - $(PWHELPER_SRCS) $(KERBEROS_SRCS) $(PAM_SRCS) \ + $(KERBEROS_SRCS) $(PAM_SRCS) \ $(HDRS) $(MENA) $(MENB) $(TEST_SRCS) $(EXTRAS) -default: $(EXES) $(UTIL_EXES) $(SETUID_EXES) -all: $(EXES) $(UTIL_EXES) $(SETUID_EXES) $(DEMO_EXES) -tests: $(TEST_EXES) +# Using $(MAKE) directly means the shell executes things even with "make -n" +MAKE2 = $(MAKE) +MAKE2CC = $(MAKE2) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" +default:: $(EXES) $(UTIL_EXES) $(SETUID_EXES) $(DESKS) +all:: default $(DEMO_EXES) +tests:: $(TEST_EXES) ############################################################################## # @@ -254,7 +258,7 @@ uninstall: uninstall-program uninstall-ad uninstall-man uninstall-xml \ uninstall-gnome install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE2) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install install-program:: $(EXES) @if [ ! -d $(install_prefix)$(bindir) ]; then \ @@ -389,8 +393,8 @@ install-man:: echo ln -sf $$F1 $$D/$$F2 ; \ ln -sf $$F1 $$D/$$F2 -# These used to be in driver/ and installed into $(bindir) -# Now they are in hacks/ and are installed into ${libexecdir}/xscreensaver/ +# These used to be in driver/ and installed into /usr/bin/ +# Now they are in hacks/ and are installed into /usr/libexec/xscreensaver/ OLD_EXES = xscreensaver-getimage xscreensaver-getimage-file \ xscreensaver-getimage-video xscreensaver-text \ xscreensaver-systemd @@ -511,23 +515,45 @@ install-pam: xscreensaver.pam $$e "" ;\ fi -# screensaver-properties.desktop + +# xscreensaver.desktop +# xscreensaver-settings.desktop # into /usr/share/applications/ -install-gnome:: screensaver-properties.desktop +install-gnome:: xscreensaver.desktop xscreensaver-settings.desktop @if [ "$(GTK_DATADIR)" != "" ]; then \ if [ ! -d "$(install_prefix)$(GTK_APPDIR)" ]; then \ echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_APPDIR)" ;\ $(INSTALL_DIRS) "$(install_prefix)$(GTK_APPDIR)" ;\ fi ;\ - name2=xscreensaver-properties.desktop ;\ - echo $(INSTALL_DATA) screensaver-properties.desktop \ - $(install_prefix)$(GTK_APPDIR)/$$name2 ;\ - $(INSTALL_DATA) screensaver-properties.desktop \ - $(install_prefix)$(GTK_APPDIR)/$$name2 ;\ + old=xscreensaver-properties.desktop ;\ + if [ -f "$(install_prefix)$(GTK_APPDIR)/$$old" ]; then \ + echo rm -f "$(install_prefix)$(GTK_APPDIR)/$$old" ;\ + rm -f "$(install_prefix)$(GTK_APPDIR)/$$old" ;\ + fi ;\ + for name in xscreensaver.desktop xscreensaver-settings.desktop ; do\ + echo $(INSTALL_DATA) $$name $(install_prefix)$(GTK_APPDIR)/$$name;\ + $(INSTALL_DATA) $$name $(install_prefix)$(GTK_APPDIR)/$$name;\ + echo chmod a+x $(install_prefix)$(GTK_APPDIR)/$$name ;\ + chmod a+x $(install_prefix)$(GTK_APPDIR)/$$name ;\ + done ;\ fi - -# xscreensaver.xpm +# xscreensaver.service +# into /usr/share/xscreensaver/ +# But maybe it should instead be installed as: +# $(prefix)/share/dbus-1/system-services/org.jwz.xscreensaver.service +# Or would that make it be enabled by default? +# +install-gnome:: xscreensaver.service + @if [ ! -d "$(install_prefix)$(GTK_SHAREDIR)" ]; then \ + echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_SHAREDIR)" ;\ + $(INSTALL_DIRS) "$(install_prefix)$(GTK_SHAREDIR)" ;\ + fi ;\ + name=xscreensaver.service ;\ + echo $(INSTALL_DATA) $$name $(install_prefix)$(GTK_SHAREDIR)/$$name ;\ + $(INSTALL_DATA) $$name $(install_prefix)$(GTK_SHAREDIR)/$$name + +# xscreensaver.png # into /usr/share/pixmaps/ install-gnome:: $(LOGO) @if [ "$(GTK_DATADIR)" != "" ]; then \ @@ -535,70 +561,47 @@ install-gnome:: $(LOGO) echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_ICONDIR)" ;\ $(INSTALL_DIRS) "$(install_prefix)$(GTK_ICONDIR)" ;\ fi ;\ - target=xscreensaver.xpm ;\ + target=xscreensaver.png ;\ echo $(INSTALL_DATA) $(LOGO) \ $(install_prefix)$(GTK_ICONDIR)/$$target ;\ $(INSTALL_DATA) $(LOGO) \ $(install_prefix)$(GTK_ICONDIR)/$$target ;\ fi -# ../utils/images/screensaver-*.png -# into /usr/share/xscreensaver/ui/ -install-gnome:: - @if [ "$(GTK_DATADIR)" != "" ]; then \ - if [ ! -d "$(install_prefix)$(GTK_UIDIR)" ]; then \ - echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)" ;\ - $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)" ;\ - fi ;\ - for target in $(GTK_ICONS) ; do \ - dest=`echo $$target | sed 's@^.*/@@'` ;\ - echo $(INSTALL_DATA) $$target \ - $(install_prefix)$(GTK_UIDIR)/$$dest ;\ - $(INSTALL_DATA) $$target \ - $(install_prefix)$(GTK_UIDIR)/$$dest ;\ - done ;\ - fi - -# xscreensaver.ui -# into /usr/share/xscreensaver/ui/ -install-gnome:: xscreensaver.ui - @if [ "$(GTK_DATADIR)" != "" ]; then \ - if [ ! -d "$(install_prefix)$(GTK_UIDIR)" ]; then \ - echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)" ;\ - $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)" ;\ - fi ;\ - target=xscreensaver.ui ;\ - echo $(INSTALL_DATA) $(srcdir)/$$target \ - $(install_prefix)$(GTK_UIDIR)/$$target ;\ - if $(INSTALL_DATA) $(srcdir)/$$target \ - $(install_prefix)$(GTK_UIDIR)/$$target ;\ - then true ;\ - else \ - e=echo ; \ - $$e "" ;\ - $$e " ####################################################################";\ - $$e " Warning: unable to install $$target into" ;\ - $$e " $(install_prefix)$(GTK_UIDIR)/." ;\ - $$e " Without this file, xscreensaver-settings will not" ;\ - $$e " be able to run properly." ;\ - $$e " ####################################################################";\ - $$e "" ;\ - exit 1 ; \ - fi ; \ - fi - +install-gnome:: uninstall-old-gnome-icons +install-gnome:: update-icon-caches + +update-icon-caches:: + @for f in /usr/share/icons/index.theme \ + /usr/share/icons/*/index.theme \ + /usr/share/pixmaps/index.theme \ + /usr/share/pixmaps/*/index.theme \ + ; do \ + if [ -f $$f ]; then \ + f=`dirname $$f` ;\ + echo $(UPDATE_ICON_CACHE) --force --quiet $$f ;\ + $(UPDATE_ICON_CACHE) --force --quiet $$f ;\ + fi ;\ + done -# screensaver-properties.desktop +# xscreensaver.desktop +# xscreensaver-settings.desktop # into /usr/share/applications/ uninstall-gnome:: @if [ "$(GTK_DATADIR)" != "" ]; then \ - f=xscreensaver-properties.desktop ;\ - echo rm -f $(install_prefix)$(GTK_APPDIR)/$$f ;\ - rm -f $(install_prefix)$(GTK_APPDIR)/$$f ;\ - fi + old=xscreensaver-properties.desktop ;\ + if [ -f "$old" ]; then \ + echo rm -f $(install_prefix)$(GTK_APPDIR)/$$old ;\ + rm -f $(install_prefix)$(GTK_APPDIR)/$$old ;\ + fi ;\ + for f in xscreensaver.desktop xscreensaver-settings.desktop; do \ + echo rm -f $(install_prefix)$(GTK_APPDIR)/$$f ;\ + rm -f $(install_prefix)$(GTK_APPDIR)/$$f ;\ + done ;\ + fi -# xscreensaver.xpm -# into /usr/share/pixmaps/ +# xscreensaver.xpm (pre-2022) +# from /usr/share/pixmaps/ uninstall-gnome:: @if [ "$(GTK_ICONDIR)" != "" ]; then \ target=xscreensaver.xpm ;\ @@ -606,31 +609,31 @@ uninstall-gnome:: rm -f $(install_prefix)$(GTK_ICONDIR)/$$target ;\ fi -# ../utils/images/screensaver-*.png -# into /usr/share/xscreensaver/ui/ -uninstall-gnome:: - @if [ "$(GTK_DATADIR)" != "" ]; then \ - for target in $(GTK_ICONS) ; do \ - dest=`echo $$target | sed 's@^.*/@@'` ;\ - echo rm -f $(install_prefix)$(GTK_UIDIR)/$$dest ;\ - rm -f $(install_prefix)$(GTK_UIDIR)/$$dest ;\ - done ;\ - fi - -# xscreensaver.ui -# into /usr/share/xscreensaver/ui/ +# /usr/share/xscreensaver/ui/*.png and *.ui no longer used as of 2022, 6.05. uninstall-gnome:: - @if [ "$(GTK_DATADIR)" != "" ]; then \ - for target in xscreensaver.ui xscreensaver-demo.ui ; do \ - echo rm -f $(install_prefix)$(GTK_UIDIR)/$$target ;\ - rm -f $(install_prefix)$(GTK_UIDIR)/$$target ;\ - done ;\ - rmdir "$(GTK_UIDIR)" ;\ - rmdir "$(GTK_DATADIR)/xscreensaver" ;\ - exit 0 ;\ + @if [ "$(GTK_ICONDIR)" != "" ]; then \ + echo rm -rf $(install_prefix)$(GTK_SHAREDIR)/ui ;\ + rm -rf $(install_prefix)$(GTK_SHAREDIR)/ui ;\ fi -# /usr/share/xscreensaver/glade/ no longer used +# What is all this crap with the wrong logo? +# /usr/share/icons/nuoveXT2/16x16/apps/xscreensaver.png through +# /usr/share/icons/gnome-colors-common/32x32/apps/xscreensaver.png +uninstall-gnome:: uninstall-old-gnome-icons +uninstall-old-gnome-icons:: + @for f in \ + "$(install_prefix)$(GTK_DATADIR)/icons"/*/*/apps/xscreensaver.png \ + "$(install_prefix)$(GTK_DATADIR)/icons"/*/*/apps/xscreensaver.svg \ + "$(install_prefix)$(GTK_ICONDIR)/xscreensaver.xpm" \ + "$(install_prefix)$(GTK_ICONDIR)/xscreensaver.svg" ;\ + do \ + if [ -f "$$f" ]; then \ + echo rm -f "$$f" ;\ + rm -f "$$f" ;\ + fi ;\ + done + +# /usr/share/xscreensaver/glade/ no longer used as of 2022. uninstall-gnome:: -rm -rf $(GTK_DATADIR)/xscreensaver/glade @@ -667,7 +670,6 @@ distclean: clean TAGS *~ "#"* *.rej *.orig \ Makefile \ XScreenSaver.ad \ - screensaver-properties.desktop \ xscreensaver.pam # Adds all current dependencies to Makefile @@ -687,7 +689,7 @@ distdepend: check_men update_ad_version XScreenSaver_ad.h XScreenSaver_Xm_ad.h -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \ $(INCLUDES_1) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) -- \ $(SAVER_SRCS_1) $(SYSTEMD_SRCS) $(MOTIF_SRCS) $(GTK_SRCS) \ - $(PWENT_SRCS) $(PWHELPER_SRCS) $(KERBEROS_SRCS) $(PAM_SRCS) \ + $(PWENT_SRCS) $(KERBEROS_SRCS) $(PAM_SRCS) \ $(LOCK_SRCS_1) $(DEMO_SRCS_1) $(CMD_SRCS) \ $(TEST_SRCS) 2>/dev/null | \ sort -d | \ @@ -735,7 +737,7 @@ tags: find $(srcdir) -name '*.[chly]' -print | xargs etags -a list_tarfiles: - @$(MAKE) XScreenSaver_ad.h XScreenSaver_Xm_ad.h 2>&1 >/dev/null + @$(MAKE2) XScreenSaver_ad.h XScreenSaver_Xm_ad.h 2>&1 >/dev/null @find $(TARFILES) -type f -print | sort check_men: @@ -773,7 +775,7 @@ $(UTILS_BIN)/yarandom.o: $(UTILS_SRC)/yarandom.c $(UTILS_BIN)/colorbars.o: $(UTILS_SRC)/colorbars.c $(UTILS_BIN)/hsv.o: $(UTILS_SRC)/hsv.c $(UTILS_BIN)/colors.o: $(UTILS_SRC)/colors.c -$(UTILS_BIN)/grabscreen.o: $(UTILS_SRC)/grabscreen.c +$(UTILS_BIN)/grabclient.o: $(UTILS_SRC)/grabclient.c $(UTILS_BIN)/utf8wc.o: $(UTILS_SRC)/utf8wc.c $(UTILS_BIN)/xftwrap.o: $(UTILS_SRC)/xftwrap.c $(UTILS_BIN)/font-retry.o: $(UTILS_SRC)/font-retry.c @@ -792,7 +794,7 @@ UTIL_OBJS = $(UTILS_BIN)/overlay.o \ $(UTILS_BIN)/colorbars.o \ $(UTILS_BIN)/hsv.o \ $(UTILS_BIN)/colors.o \ - $(UTILS_BIN)/grabscreen.o \ + $(UTILS_BIN)/grabclient.o \ $(UTILS_BIN)/xft.o \ $(UTILS_BIN)/xftwrap.o \ $(UTILS_BIN)/utf8wc.o \ @@ -801,8 +803,7 @@ UTIL_OBJS = $(UTILS_BIN)/overlay.o \ $(UTILS_BIN)/aligned_malloc.o $(UTIL_OBJS): - cd $(UTILS_BIN) ; \ - $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" + $(MAKE2CC) -C $(UTILS_BIN) $(@F) ############################################################################## @@ -862,6 +863,14 @@ demo-Gtk.o: demo-Gtk.c demo-Gtk-conf.o: demo-Gtk-conf.c $(CC) -c $(CC_ALL) $(GTK_DEFS) $< +GCRARGS = --sourcedir=$(srcdir) --sourcedir=$(ICON_SRC) --generate-source +demo-Gtk-resources.c: gresource.xml demo.ui prefs.ui + $(GLIB_COMPILE_RESOURCES) $(srcdir)/gresource.xml --target=$@ $(GCRARGS) + +GTK_WARNINGS = -Wno-long-long -Wno-c99-extensions -Wno-pedantic +demo-Gtk-resources.o: demo-Gtk-resources.c + $(CC) -c $(CC_ALL) $(GTK_DEFS) $(GTK_WARNINGS) $< + xscreensaver-settings-Gtk: $(GTK_OBJS) $(CC) $(LDFLAGS) -o $@ $(GTK_OBJS) $(GTK_LIBS) @@ -912,13 +921,8 @@ XScreenSaver_Xm_ad.h:: mv $$TMP $$OUT ; \ fi - -# Replace this with @INTLTOOL_DESKTOP_RULE@ once -# https://bugs.launchpad.net/intltool/+bug/1749904 is fixed. -.desktop.in.desktop: $(INTLTOOL_MERGE) $(top_srcdir)/po/*.po - $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) \ - $(INTLTOOL_V_MERGE_OPTIONS) -d -u \ - -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +@INTLTOOL_DESKTOP_RULE@ +@INTLTOOL_SERVICE_RULE@ ############################################################################## @@ -992,6 +996,7 @@ xdpyinfo: xdpyinfo.o # # DO NOT DELETE: updated by make distdepend +demo-Gtk-conf.o: $(srcdir)/blurb.h demo-Gtk-conf.o: ../config.h demo-Gtk-conf.o: $(srcdir)/demo-Gtk-conf.h demo-Gtk-conf.o: $(UTILS_SRC)/xscreensaver-intl.h @@ -1001,28 +1006,17 @@ demo-Gtk.o: $(srcdir)/blurb.h demo-Gtk.o: ../config.h demo-Gtk.o: $(srcdir)/demo-Gtk-conf.h demo-Gtk.o: $(srcdir)/remote.h +demo-Gtk.o: $(srcdir)/screens.h demo-Gtk.o: $(srcdir)/types.h demo-Gtk.o: $(UTILS_SRC)/resources.h +demo-Gtk.o: $(UTILS_SRC)/screenshot.h demo-Gtk.o: $(UTILS_SRC)/usleep.h demo-Gtk.o: $(UTILS_SRC)/version.h demo-Gtk.o: $(UTILS_SRC)/visual.h demo-Gtk.o: $(UTILS_SRC)/xmu.h demo-Gtk.o: $(UTILS_SRC)/xscreensaver-intl.h -demo-Xm.o: XScreenSaver_Xm_ad.h -demo-Xm.o: XScreenSaver_ad.h -demo-Xm.o: $(srcdir)/atoms.h -demo-Xm.o: $(srcdir)/blurb.h demo-Xm.o: ../config.h -demo-Xm.o: $(srcdir)/remote.h -demo-Xm.o: $(srcdir)/types.h -demo-Xm.o: $(UTILS_SRC)/resources.h -demo-Xm.o: $(UTILS_SRC)/version.h -demo-Xm.o: $(UTILS_SRC)/visual.h -demo-Xm.o: $(UTILS_SRC)/xmu.h demo-Xm-widgets.o: ../config.h -passwd-helper.o: $(srcdir)/auth.h -passwd-helper.o: $(srcdir)/blurb.h -passwd-helper.o: ../config.h passwd-kerberos.o: $(srcdir)/auth.h passwd-kerberos.o: $(srcdir)/blurb.h passwd-kerberos.o: ../config.h @@ -1063,7 +1057,6 @@ test-xdpms.o: $(srcdir)/blurb.h test-xdpms.o: ../config.h test-xinerama.o: $(srcdir)/blurb.h test-xinerama.o: ../config.h -test-xinput.o: $(srcdir)/blurb.h test-xinput.o: ../config.h test-xinput.o: $(srcdir)/xinput.h test-xkb.o: $(srcdir)/blurb.h diff --git a/driver/XScreenSaver.ad.in b/driver/XScreenSaver.ad.in index bfc6414..d3e89f5 100644 --- a/driver/XScreenSaver.ad.in +++ b/driver/XScreenSaver.ad.in @@ -4,8 +4,8 @@ ! a screen saver and locker for the X window system ! by Jamie Zawinski ! -! version 6.00 -! 01-Apr-2021 +! version 6.09 +! 07-Jun-2024 ! ! See "man xscreensaver" for more info. The latest version is always ! available at https://www.jwz.org/xscreensaver/ @@ -58,7 +58,7 @@ *ignoreUninstalledPrograms: False *authWarningSlack: 20 -*textMode: file +*textMode: url *textLiteral: XScreenSaver *textFile: @DEFAULT_TEXT_FILE@ *textProgram: fortune @@ -98,7 +98,7 @@ ! non-Gnome systems: ! @NOGNOME@*loadURL: x-www-browser '%s' || firefox '%s' || chromium-browser '%s' -@NOGNOME@*manualCommand: xterm -sb -fg black -bg gray75 -T '%s manual' \ +@NOGNOME@*manualCommand: lxterminal -T '%s manual' \ @NOGNOME@ -e /bin/sh -c 'man "%s" ; read foo' @@ -324,248 +324,260 @@ XScreenSaver.bourneShell: /bin/sh !============================================================================= *programs: \ - maze -root \n\ -@GL_KLUDGE@ 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\ -@GL_KLUDGE@ GL: jigsaw -root \n\ - julia -root \n\ -- kaleidescope -root \n\ -@GL_KLUDGE@ GL: moebius -root \n\ - moire -root \n\ -@GL_KLUDGE@ GL: morph3d -root \n\ - mountain -root \n\ - munch -root \n\ - penrose -root \n\ -@GL_KLUDGE@ GL: pipes -root \n\ - rd-bomb -root \n\ -@GL_KLUDGE@ GL: rubik -root \n\ -- sierpinski -root \n\ - slip -root \n\ -@GL_KLUDGE@ GL: sproingies -root \n\ - starfish -root \n\ - strange -root \n\ - swirl -root \n\ - triangle -root \n\ - xjack -root \n\ - xlyap -root \n\ -@GL_KLUDGE@ GL: atlantis -root \n\ - bsod -root \n\ -@GL_KLUDGE@ GL: bubble3d -root \n\ -@GL_KLUDGE@ GL: cage -root \n\ -- crystal -root \n\ - cynosure -root \n\ - discrete -root \n\ - distort -root \n\ - epicycle -root \n\ - flow -root \n\ -@GL_KLUDGE@ GL: glplanet -root \n\ - interference -root \n\ - kumppa -root \n\ -@GL_KLUDGE@ GL: lament -root \n\ - moire2 -root \n\ -@GL_KLUDGE@ GL: sonar -root \n\ -@GL_KLUDGE@ 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\ -@GLE_KLUDGE@ GL: extrusion -root \n\ -- loop -root \n\ - penetrate -root \n\ - petri -root \n\ - phosphor -root \n\ -@GL_KLUDGE@ GL: pulsar -root \n\ - ripples -root \n\ - shadebobs -root \n\ -@GL_KLUDGE@ GL: sierpinski3d -root \n\ - spotlight -root \n\ - squiral -root \n\ - wander -root \n\ -- webcollage -root \n\ - xflame -root \n\ - xmatrix -root \n\ -@GL_KLUDGE@ GL: gflux -root \n\ -- nerverot -root \n\ - xrayswarm -root \n\ - xspirograph -root \n\ -@GL_KLUDGE@ GL: circuit -root \n\ -@GL_KLUDGE@ GL: dangerball -root \n\ -- GL: dnalogo -root \n\ -@GL_KLUDGE@ GL: engine -root \n\ -@GL_KLUDGE@ GL: flipscreen3d -root \n\ -@GL_KLUDGE@ GL: gltext -root \n\ -@GL_KLUDGE@ GL: menger -root \n\ -@GL_KLUDGE@ GL: molecule -root \n\ - rotzoomer -root \n\ - scooter -root \n\ - speedmine -root \n\ -@GL_KLUDGE@ GL: starwars -root \n\ -@GL_KLUDGE@ GL: stonerview -root \n\ - vermiculate -root \n\ - whirlwindwarp -root \n\ - zoom -root \n\ - anemone -root \n\ - apollonian -root \n\ -@GL_KLUDGE@ GL: boxed -root \n\ -@GL_KLUDGE@ GL: cubenetic -root \n\ -@GL_KLUDGE@ GL: endgame -root \n\ - euler2d -root \n\ - fluidballs -root \n\ -@GL_KLUDGE@ GL: flurry -root \n\ -- GL: glblur -root \n\ -@GL_KLUDGE@ GL: glsnake -root \n\ - halftone -root \n\ -@GL_KLUDGE@ GL: juggler3d -root \n\ -@GL_KLUDGE@ GL: lavalite -root \n\ -- polyominoes -root \n\ -@GL_KLUDGE@ GL: queens -root \n\ -- GL: sballs -root \n\ -@GL_KLUDGE@ GL: spheremonics -root \n\ -- thornbird -root \n\ - twang -root \n\ -- GL: antspotlight -root \n\ - apple2 -root \n\ -@GL_KLUDGE@ GL: atunnel -root \n\ - barcode -root \n\ -@GL_KLUDGE@ GL: blinkbox -root \n\ -@GL_KLUDGE@ GL: blocktube -root \n\ -@GL_KLUDGE@ GL: bouncingcow -root \n\ - cloudlife -root \n\ -@GL_KLUDGE@ GL: cubestorm -root \n\ - eruption -root \n\ -@GL_KLUDGE@ GL: flipflop -root \n\ -@GL_KLUDGE@ GL: flyingtoasters -root \n\ - fontglide -root \n\ -@GL_KLUDGE@ GL: gleidescope -root \n\ -@GL_KLUDGE@ GL: glknots -root \n\ -@GL_KLUDGE@ GL: glmatrix -root \n\ -- GL: glslideshow -root \n\ -@GL_KLUDGE@ GL: hypertorus -root \n\ -- GL: jigglypuff -root \n\ - metaballs -root \n\ -@GL_KLUDGE@ GL: mirrorblob -root \n\ - piecewise -root \n\ -@GL_KLUDGE@ GL: polytopes -root \n\ - pong -root \n\ - popsquares -root \n\ -@GL_KLUDGE@ 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_KLUDGE@ GL: noof -root \n\ - pacman -root \n\ -@GL_KLUDGE@ GL: pinion -root \n\ -@GL_KLUDGE@ GL: polyhedra -root \n\ -- GL: providence -root \n\ - substrate -root \n\ - wormhole -root \n\ -- GL: antmaze -root \n\ -@GL_KLUDGE@ GL: boing -root \n\ - boxfit -root \n\ -@GL_KLUDGE@ GL: carousel -root \n\ - celtic -root \n\ -@GL_KLUDGE@ GL: crackberg -root \n\ -@GL_KLUDGE@ GL: cube21 -root \n\ - fiberlamp -root \n\ -@GL_KLUDGE@ GL: fliptext -root \n\ -@GL_KLUDGE@ GL: glhanoi -root \n\ -@GL_KLUDGE@ GL: tangram -root \n\ -@GL_KLUDGE@ GL: timetunnel -root \n\ -@GL_KLUDGE@ GL: glschool -root \n\ -@GL_KLUDGE@ GL: topblock -root \n\ -@GL_KLUDGE@ GL: cubicgrid -root \n\ - cwaves -root \n\ -@GL_KLUDGE@ GL: gears -root \n\ -@GL_KLUDGE@ GL: glcells -root \n\ -@GL_KLUDGE@ GL: lockward -root \n\ - m6502 -root \n\ -@GL_KLUDGE@ GL: moebiusgears -root \n\ -@GL_KLUDGE@ GL: voronoi -root \n\ -@GL_KLUDGE@ GL: hypnowheel -root \n\ -@GL_KLUDGE@ GL: klein -root \n\ -- lcdscrub -root \n\ -@GL_KLUDGE@ GL: photopile -root \n\ -@GL_KLUDGE@ GL: skytentacles -root \n\ -@GL_KLUDGE@ GL: rubikblocks -root \n\ -@GL_KLUDGE@ GL: companioncube -root \n\ -@GL_KLUDGE@ GL: hilbert -root \n\ -@GL_KLUDGE@ GL: tronbit -root \n\ -@GL_KLUDGE@ GL: geodesic -root \n\ - hexadrop -root \n\ -@GL_KLUDGE@ GL: kaleidocycle -root \n\ -@GL_KLUDGE@ GL: quasicrystal -root \n\ -@GL_KLUDGE@ GL: unknownpleasures -root \n\ - binaryring -root \n\ -@GL_KLUDGE@ GL: cityflow -root \n\ -@GL_KLUDGE@ GL: geodesicgears -root \n\ -@GL_KLUDGE@ GL: projectiveplane -root \n\ -@GL_KLUDGE@ GL: romanboy -root \n\ - tessellimage -root \n\ -@GL_KLUDGE@ GL: winduprobot -root \n\ -@GL_KLUDGE@ GL: splitflap -root \n\ -@GL_KLUDGE@ GL: cubestack -root \n\ -@GL_KLUDGE@ GL: cubetwist -root \n\ -@GL_KLUDGE@ GL: discoball -root \n\ -@GL_KLUDGE@ GL: dymaxionmap -root \n\ -@GL_KLUDGE@ GL: energystream -root \n\ -@GL_KLUDGE@ GL: hexstrut -root \n\ -@GL_KLUDGE@ GL: hydrostat -root \n\ -@GL_KLUDGE@ GL: raverhoop -root \n\ -@GL_KLUDGE@ GL: splodesic -root \n\ -@GL_KLUDGE@ GL: unicrud -root \n\ -@GL_KLUDGE@ GL: esper -root \n\ -@GL_KLUDGE@ GL: vigilance -root \n\ -@GL_KLUDGE@ GL: crumbler -root \n\ - filmleader -root \n\ - glitchpeg -root \n\ -@GL_KLUDGE@ GL: handsy -root \n\ -@GL_KLUDGE@ GL: maze3d -root \n\ -@GL_KLUDGE@ GL: peepers -root \n\ -@GL_KLUDGE@ GL: razzledazzle -root \n\ - vfeedback -root \n\ -@GL_KLUDGE@ GL: deepstars -root \n\ -@GL_KLUDGE@ GL: gravitywell -root \n\ -@GL_KLUDGE@ GL: beats -root \n\ -@GL_KLUDGE@ GL: covid19 -root \n\ -@GL_KLUDGE@ GL: etruscanvenus -root \n\ -@GL_KLUDGE@ GL: gibson -root \n\ -@GL_KLUDGE@ GL: headroom -root \n\ -@GL_KLUDGE@ GL: sphereeversion -root \n + maze --root \n\ +@GL_KLUDGE@ 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\ +@GL_KLUDGE@ GL: jigsaw --root \n\ + julia --root \n\ +- kaleidescope --root \n\ +@GL_KLUDGE@ GL: moebius --root \n\ + moire --root \n\ +@GL_KLUDGE@ GL: morph3d --root \n\ + mountain --root \n\ + munch --root \n\ + penrose --root \n\ +@GL_KLUDGE@ GL: pipes --root \n\ + rdbomb --root \n\ +@GL_KLUDGE@ GL: rubik --root \n\ +- sierpinski --root \n\ + slip --root \n\ +@GL_KLUDGE@ GL: sproingies --root \n\ + starfish --root \n\ + strange --root \n\ + swirl --root \n\ + triangle --root \n\ + xjack --root \n\ + xlyap --root \n\ +@GL_KLUDGE@ GL: atlantis --root \n\ + bsod --root \n\ +@GL_KLUDGE@ GL: bubble3d --root \n\ +@GL_KLUDGE@ GL: cage --root \n\ +- crystal --root \n\ + cynosure --root \n\ + discrete --root \n\ + distort --root \n\ + epicycle --root \n\ + flow --root \n\ +@GL_KLUDGE@ GL: glplanet --root \n\ + interference --root \n\ + kumppa --root \n\ +@GL_KLUDGE@ GL: lament --root \n\ + moire2 --root \n\ +@GL_KLUDGE@ GL: sonar --root \n\ +@GL_KLUDGE@ GL: stairs --root \n\ + truchet --root \n\ +- vidwhacker --root \n\ +- webcollage --root \n\ + blaster --root \n\ + bumps --root \n\ + ccurve --root \n\ + compass --root \n\ + deluxe --root \n\ +- demon --root \n\ +@GLE_KLUDGE@ GL: extrusion --root \n\ +- loop --root \n\ + penetrate --root \n\ + petri --root \n\ + phosphor --root \n\ +@GL_KLUDGE@ GL: pulsar --root \n\ + ripples --root \n\ + shadebobs --root \n\ +@GL_KLUDGE@ GL: sierpinski3d --root \n\ + spotlight --root \n\ + squiral --root \n\ + wander --root \n\ + xflame --root \n\ + xmatrix --root \n\ +@GL_KLUDGE@ GL: gflux --root \n\ +- nerverot --root \n\ + xrayswarm --root \n\ + xspirograph --root \n\ +@GL_KLUDGE@ GL: circuit --root \n\ +@GL_KLUDGE@ GL: dangerball --root \n\ +- GL: dnalogo --root \n\ +@GL_KLUDGE@ GL: engine --root \n\ +@GL_KLUDGE@ GL: flipscreen3d --root \n\ +@GL_KLUDGE@ GL: gltext --root \n\ +@GL_KLUDGE@ GL: menger --root \n\ +@GL_KLUDGE@ GL: molecule --root \n\ + rotzoomer --root \n\ + scooter --root \n\ + speedmine --root \n\ +@GL_KLUDGE@ GL: starwars --root \n\ +@GL_KLUDGE@ GL: stonerview --root \n\ + vermiculate --root \n\ + whirlwindwarp --root \n\ + zoom --root \n\ + anemone --root \n\ + apollonian --root \n\ +@GL_KLUDGE@ GL: boxed --root \n\ +@GL_KLUDGE@ GL: cubenetic --root \n\ +@GL_KLUDGE@ GL: endgame --root \n\ + euler2d --root \n\ + fluidballs --root \n\ +@GL_KLUDGE@ GL: flurry --root \n\ +- GL: glblur --root \n\ +@GL_KLUDGE@ GL: glsnake --root \n\ + halftone --root \n\ +@GL_KLUDGE@ GL: juggler3d --root \n\ +@GL_KLUDGE@ GL: lavalite --root \n\ +- polyominoes --root \n\ +@GL_KLUDGE@ GL: queens --root \n\ +- GL: sballs --root \n\ +@GL_KLUDGE@ GL: spheremonics --root \n\ + twang --root \n\ +- GL: antspotlight --root \n\ + apple2 --root \n\ +@GL_KLUDGE@ GL: atunnel --root \n\ + barcode --root \n\ +@GL_KLUDGE@ GL: blinkbox --root \n\ +@GL_KLUDGE@ GL: blocktube --root \n\ +@GL_KLUDGE@ GL: bouncingcow --root \n\ + cloudlife --root \n\ +@GL_KLUDGE@ GL: cubestorm --root \n\ + eruption --root \n\ +@GL_KLUDGE@ GL: flipflop --root \n\ +@GL_KLUDGE@ GL: flyingtoasters --root \n\ + fontglide --root \n\ +@GL_KLUDGE@ GL: gleidescope --root \n\ +@GL_KLUDGE@ GL: glknots --root \n\ +@GL_KLUDGE@ GL: glmatrix --root \n\ +- GL: glslideshow --root \n\ +@GL_KLUDGE@ GL: hypertorus --root \n\ +- GL: jigglypuff --root \n\ + metaballs --root \n\ +@GL_KLUDGE@ GL: mirrorblob --root \n\ + piecewise --root \n\ +@GL_KLUDGE@ GL: polytopes --root \n\ + pong --root \n\ + popsquares --root \n\ +@GL_KLUDGE@ 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_KLUDGE@ GL: noof --root \n\ + pacman --root \n\ +@GL_KLUDGE@ GL: pinion --root \n\ +@GL_KLUDGE@ GL: polyhedra --root \n\ +- GL: providence --root \n\ + substrate --root \n\ + wormhole --root \n\ +- GL: antmaze --root \n\ +@GL_KLUDGE@ GL: boing --root \n\ + boxfit --root \n\ +@GL_KLUDGE@ GL: carousel --root \n\ + celtic --root \n\ +@GL_KLUDGE@ GL: crackberg --root \n\ +@GL_KLUDGE@ GL: cube21 --root \n\ + fiberlamp --root \n\ +@GL_KLUDGE@ GL: fliptext --root \n\ +@GL_KLUDGE@ GL: glhanoi --root \n\ +@GL_KLUDGE@ GL: tangram --root \n\ +@GL_KLUDGE@ GL: timetunnel --root \n\ +@GL_KLUDGE@ GL: glschool --root \n\ +@GL_KLUDGE@ GL: topblock --root \n\ +@GL_KLUDGE@ GL: cubicgrid --root \n\ + cwaves --root \n\ +@GL_KLUDGE@ GL: gears --root \n\ +@GL_KLUDGE@ GL: glcells --root \n\ +@GL_KLUDGE@ GL: lockward --root \n\ + m6502 --root \n\ +@GL_KLUDGE@ GL: moebiusgears --root \n\ +@GL_KLUDGE@ GL: voronoi --root \n\ +@GL_KLUDGE@ GL: hypnowheel --root \n\ +@GL_KLUDGE@ GL: klein --root \n\ +- lcdscrub --root \n\ +@GL_KLUDGE@ GL: photopile --root \n\ +@GL_KLUDGE@ GL: skytentacles --root \n\ +@GL_KLUDGE@ GL: rubikblocks --root \n\ +@GL_KLUDGE@ GL: companioncube --root \n\ +@GL_KLUDGE@ GL: hilbert --root \n\ +@GL_KLUDGE@ GL: tronbit --root \n\ +@GL_KLUDGE@ GL: geodesic --root \n\ + hexadrop --root \n\ +@GL_KLUDGE@ GL: kaleidocycle --root \n\ +@GL_KLUDGE@ GL: quasicrystal --root \n\ +@GL_KLUDGE@ GL: unknownpleasures --root \n\ + binaryring --root \n\ +@GL_KLUDGE@ GL: cityflow --root \n\ +@GL_KLUDGE@ GL: geodesicgears --root \n\ +@GL_KLUDGE@ GL: projectiveplane --root \n\ +@GL_KLUDGE@ GL: romanboy --root \n\ + tessellimage --root \n\ +@GL_KLUDGE@ GL: winduprobot --root \n\ +@GL_KLUDGE@ GL: splitflap --root \n\ +@GL_KLUDGE@ GL: cubestack --root \n\ +@GL_KLUDGE@ GL: cubetwist --root \n\ +@GL_KLUDGE@ GL: discoball --root \n\ +@GL_KLUDGE@ GL: dymaxionmap --root \n\ +@GL_KLUDGE@ GL: energystream --root \n\ +@GL_KLUDGE@ GL: hexstrut --root \n\ +@GL_KLUDGE@ GL: hydrostat --root \n\ +@GL_KLUDGE@ GL: raverhoop --root \n\ +@GL_KLUDGE@ GL: splodesic --root \n\ +@GL_KLUDGE@ GL: unicrud --root \n\ +@GL_KLUDGE@ GL: esper --root \n\ +@GL_KLUDGE@ GL: vigilance --root \n\ +@GL_KLUDGE@ GL: crumbler --root \n\ + filmleader --root \n\ + glitchpeg --root \n\ +@GL_KLUDGE@ GL: handsy --root \n\ +@GL_KLUDGE@ GL: maze3d --root \n\ +@GL_KLUDGE@ GL: peepers --root \n\ +@GL_KLUDGE@ GL: razzledazzle --root \n\ + vfeedback --root \n\ +@GL_KLUDGE@ GL: deepstars --root \n\ +@GL_KLUDGE@ GL: gravitywell --root \n\ +@GL_KLUDGE@ GL: beats --root \n\ +@GL_KLUDGE@ GL: covid19 --root \n\ +@GL_KLUDGE@ GL: etruscanvenus --root \n\ +@GL_KLUDGE@ GL: gibson --root \n\ +@GL_KLUDGE@ GL: headroom --root \n\ +@GL_KLUDGE@ GL: sphereeversion --root \n\ + binaryhorizon --root \n\ + marbling --root \n\ +@GL_KLUDGE@ GL: chompytower --root \n\ +@GL_KLUDGE@ GL: hextrail --root \n\ +@GL_KLUDGE@ GL: mapscroller --root \n\ +@GL_KLUDGE@ GL: nakagin --root \n\ +@GL_KLUDGE@ GL: squirtorus --root \n\ +@GL_KLUDGE@ GL: cubocteversion --root \n\ + droste --root \n\ +@GL_KLUDGE@ GL: papercube --root \n\ +@GL_KLUDGE@ GL: skulloop --root \n\ +@GL_KLUDGE@ GL: highvoltage --root \n\ +@GL_KLUDGE@ GL: kallisti --root \n @@ -580,6 +592,7 @@ XScreenSaver.bourneShell: /bin/sh *hacks.antmaze.name: Ant Maze *hacks.antspotlight.name: Ant Spotlight *hacks.apple2.name: Apple ][ +*hacks.binaryhorizon.name: Binary Horizon *hacks.binaryring.name: Binary Ring *hacks.blinkbox.name: Blink Box *hacks.blitspin.name: Blit Spin @@ -589,6 +602,7 @@ XScreenSaver.bourneShell: /bin/sh *hacks.bsod.name: BSOD *hacks.bubble3d.name: Bubble 3D *hacks.ccurve.name: C Curve +*hacks.chompytower.name: Chompy Tower *hacks.cityflow.name: City Flow *hacks.cloudlife.name: Cloud Life *hacks.companioncube.name: Companion Cube @@ -598,6 +612,7 @@ XScreenSaver.bourneShell: /bin/sh *hacks.cubestorm.name: Cube Storm *hacks.cubetwist.name: Cube Twist *hacks.cubicgrid.name: Cubic Grid +*hacks.cubocteversion.name: Cuboctahedron Eversion *hacks.cwaves.name: C Waves *hacks.dangerball.name: Danger Ball *hacks.decayscreen.name: Decay Screen @@ -634,6 +649,8 @@ XScreenSaver.bourneShell: /bin/sh *hacks.gltext.name: GL Text *hacks.gravitywell.name: Gravity Well *hacks.hexstrut.name: Hex Strut +*hacks.hextrail.name: Hex Trail +*hacks.highvoltage.name: High Voltage *hacks.ifs.name: IFS *hacks.imsmap.name: IMS Map *hacks.jigglypuff.name: Jiggly Puff @@ -641,6 +658,7 @@ XScreenSaver.bourneShell: /bin/sh *hacks.lcdscrub.name: LCD Scrub *hacks.lmorph.name: LMorph *hacks.m6502.name: m6502 +*hacks.mapscroller.name: Map Scroller *hacks.maze3d.name: Maze 3D *hacks.memscroller.name: Mem Scroller *hacks.metaballs.name: Meta Balls @@ -653,14 +671,14 @@ XScreenSaver.bourneShell: /bin/sh *hacks.nerverot.name: Nerve Rot *hacks.noseguy.name: Nose Guy *hacks.pacman.name: Pac-Man +*hacks.papercube.name: Paper Cube *hacks.photopile.name: Photo Pile *hacks.popsquares.name: Pop Squares *hacks.projectiveplane.name:Projective Plane *hacks.quasicrystal.name: Quasi-Crystal *hacks.raverhoop.name: Raver Hoop *hacks.razzledazzle.name: Razzle Dazzle -*hacks.rd-bomb.name: RD-Bomb -*hacks.rd-bomb.name: RD-Bomb +*hacks.rdbomb.name: RD-Bomb *hacks.romanboy.name: Roman Boy *hacks.rotzoomer.name: Rot Zoomer *hacks.rubikblocks.name: Rubik Blocks diff --git a/driver/XScreenSaver_Xm_ad.h b/driver/XScreenSaver_Xm_ad.h new file mode 100644 index 0000000..371e0a2 --- /dev/null +++ b/driver/XScreenSaver_Xm_ad.h @@ -0,0 +1,108 @@ +"*fontList: *-helvetica-medium-r-*-*-*-120-*-*-*-iso8859-1", +"*demoDialog*label1.fontList: *-helvetica-medium-r-*-*-*-140-*-*-*-iso8859-1", +"*cmdText.fontList: *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1", +"*label0.fontList: *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1", +"XScreenSaver*doc.fontList: *-helvetica-medium-r-*-*-*-100-*-*-*-iso8859-1", +"*foreground: #000000", +"*background: #C0C0C0", +"*XmTextField.foreground: #000000", +"*XmTextField.background: #FFFFFF", +"*list.foreground: #000000", +"*list.background: #FFFFFF", +"*ApplicationShell.title: XScreenSaver", +"*warning.title: XScreenSaver", +"*warning_popup.title: XScreenSaver", +"*allowShellResize: True", +"*autoUnmanage: False", +"*menubar*file.labelString: File", +"*menubar*file.mnemonic: F", +"*file.blank.labelString: Blank Screen Now", +"*file.blank.mnemonic: B", +"*file.lock.labelString: Lock Screen Now", +"*file.lock.mnemonic: L", +"*file.kill.labelString: Kill Daemon", +"*file.kill.mnemonic: K", +"*file.restart.labelString: Restart Daemon", +"*file.restart.mnemonic: R", +"*file.exit.labelString: Exit", +"*file.exit.mnemonic: E", +"*menubar*edit.labelString: Edit", +"*menubar*edit.mnemonic: E", +"*edit.cut.labelString: Cut", +"*edit.cut.mnemonic: u", +"*edit.copy.labelString: Copy", +"*edit.copy.mnemonic: C", +"*edit.paste.labelString: Paste", +"*edit.paste.mnemonic: P", +"*menubar*help.labelString: Help", +"*menubar*help.mnemonic: H", +"*help.about.labelString: About...", +"*help.about.mnemonic: A", +"*help.docMenu.labelString: Documentation...", +"*help.docMenu.mnemonic: D", +"*demoTab.marginWidth: 10", +"*optionsTab.marginWidth: 10", +"*XmScrolledWindow.topOffset: 10", +"*XmScrolledWindow.leftOffset: 10", +"*demoTab.topOffset: 4", +"*form1.bottomOffset: 10", +"*form3.leftOffset: 10", +"*form3.rightOffset: 10", +"*frame.topOffset: 10", +"*frame.bottomOffset: 10", +"*enabled.topOffset: 10", +"*visLabel.topOffset: 10", +"*combo.topOffset: 10", +"*form4.bottomOffset: 4", +"*hr.bottomOffset: 4", +"*XmComboBox.marginWidth: 0", +"*XmComboBox.marginHeight: 0", +"*demo.marginWidth: 30", +"*demo.marginHeight: 4", +"*man.marginWidth: 10", +"*man.marginHeight: 4", +"*down.leftOffset: 40", +"*down.marginWidth: 4", +"*down.marginHeight: 4", +"*up.marginWidth: 4", +"*up.marginHeight: 4", +"*frame.traversalOn: False", +"*list.automaticSelection: True", +"*list.visibleItemCount: 20", +"*doc.columns: 60", +"*combo.columns: 11", +"*demoTab.labelString: Graphics Demos", +"*optionsTab.labelString: Screensaver Options", +"*down.labelString: \\\\/ ", +"*up.labelString: /\\\\ ", +"*frameLabel.labelString: ", +"*cmdLabel.labelString: Command Line:", +"*cmdLabel.alignment: ALIGNMENT_BEGINNING", +"*enabled.labelString: Enabled", +"*visLabel.labelString: Visual:", +"*visLabel.alignment: ALIGNMENT_END", +"*visLabel.leftOffset: 20", +"*demo.labelString: Demo", +"*man.labelString: Documentation...", +"*done.labelString: Quit", +"*preferencesLabel.labelString: XScreenSaver Parameters", +"*timeoutLabel.labelString: Saver Timeout", +"*cycleLabel.labelString: Cycle Timeout", +"*fadeSecondsLabel.labelString: Fade Duration", +"*fadeTicksLabel.labelString: Fade Ticks", +"*lockLabel.labelString: Lock Timeout", +"*passwdLabel.labelString: Password Timeout", +"*preferencesForm*XmTextField.columns: 8", +"*verboseToggle.labelString: Verbose", +"*cmapToggle.labelString: Install Colormap", +"*fadeToggle.labelString: Fade Colormap", +"*unfadeToggle.labelString: Unfade Colormap", +"*lockToggle.labelString: Require Password", +"*OK.marginWidth: 30", +"*OK.marginHeight: 4", +"*OK.leftOffset: 10", +"*OK.bottomOffset: 10", +"*Cancel.marginWidth: 30", +"*Cancel.marginHeight: 4", +"*Cancel.rightOffset: 10", +"*Cancel.bottomOffset: 10", diff --git a/driver/XScreenSaver_ad.h b/driver/XScreenSaver_ad.h new file mode 100644 index 0000000..c469a3e --- /dev/null +++ b/driver/XScreenSaver_ad.h @@ -0,0 +1,551 @@ +"#error Do not run app-defaults files through xrdb!", +"#error That does not do what you might expect.", +"#error Put this file in /usr/lib/X11/app-defaults/XScreenSaver instead.", +"*mode: random", +"*timeout: 0:10:00", +"*cycle: 0:10:00", +"*lockTimeout: 0:00:00", +"*passwdTimeout: 0:00:30", +"*dpmsEnabled: False", +"*dpmsQuickoffEnabled: False", +"*dpmsStandby: 2:00:00", +"*dpmsSuspend: 2:00:00", +"*dpmsOff: 4:00:00", +"*grabDesktopImages: True", +"*grabVideoFrames: False", +"*chooseRandomImages: True", +"*imageDirectory: /Library/Desktop Pictures/", +"*nice: 10", +"*memoryLimit: 0", +"*lock: False", +"*verbose: False", +"*fade: True", +"*unfade: True", +"*fadeSeconds: 0:00:03", +"*fadeTicks: 20", +"*splash: True", +"*splashDuration: 0:00:05", +"*visualID: default", +"*installColormap: True", +"*ignoreUninstalledPrograms: False", +"*authWarningSlack: 20", +"*textMode: url", +"*textLiteral: XScreenSaver", +"*textFile: ", +"*textProgram: fortune", +"*textURL: https://en.wikipedia.org/w/index.php?title=Special:NewPages&feed=rss", +"*demoCommand: xscreensaver-settings", +"*helpURL: https://www.jwz.org/xscreensaver/man.html", +"*loadURL: x-www-browser '%s' || firefox '%s' || chromium-browser '%s'", +"*manualCommand: lxterminal -T '%s manual' \ + -e /bin/sh -c 'man \"%s\" ; read foo'", +"*dateFormat: %I:%M %p, %a %b %e", +"*newLoginCommand: no-such-login-manager", +"XScreenSaver.pointerHysteresis: 10", +"XScreenSaver.bourneShell: /bin/sh", +"*dialogTheme: default", +"*themeNames: Default, Borderless, Dark Gray, Borderless Black, \ + Green Black, White, Blue, Aqua Black, Wine", +"*Dialog.headingFont: sans-serif bold 16", +"*Dialog.bodyFont: sans-serif 14", +"*Dialog.errorFont: sans-serif bold 14", +"*Dialog.labelFont: sans-serif bold 14", +"*Dialog.unameFont: sans-serif 12", +"*Dialog.buttonFont: sans-serif bold 14", +"*Dialog.dateFont: sans-serif 9", +"*passwd.uname: True", +"*passwd.asterisks: True", +"*default.Dialog.foreground: #000000", +"*default.Dialog.background: #E6E6E6", +"*default.Dialog.button.foreground: #000000", +"*default.Dialog.button.background: #F5F5F5", +"*default.Dialog.logo.background: #BBBBBB", +"*default.Dialog.text.foreground: #000000", +"*default.Dialog.error.foreground: #FF0000", +"*default.Dialog.text.background: #FFFFFF", +"*default.Dialog.topShadowColor: #FFFFFF", +"*default.Dialog.bottomShadowColor: #CECECE", +"*default.Dialog.shadowWidth: 2", +"*default.Dialog.logo.width: 210", +"*default.Dialog.logo.height: 210", +"*default.Dialog.thermometer.foreground: #4464AC", +"*default.Dialog.thermometer.background: #FFFFFF", +"*default.Dialog.thermometer.width: 8", +"*default.Dialog.borderColor: #CECECE", +"*default.Dialog.borderWidth: 0", +"*default.Dialog.internalPadding: 24", +"*borderless.Dialog.topShadowColor: #E6E6E6", +"*borderless.Dialog.button.background: #FFFFFF", +"*borderless.Dialog.bottomShadowColor: #E6E6E6", +"*borderless.Dialog.logo.background: #E6E6E6", +"*borderless.Dialog.borderColor: #888888", +"*borderless.Dialog.thermometer.width: 6", +"*borderless.Dialog.borderWidth: 1", +"*darkgray.Dialog.foreground: #CCCCCC", +"*darkgray.Dialog.background: #333333", +"*darkgray.Dialog.topShadowColor: #444444", +"*darkgray.Dialog.bottomShadowColor: #111111", +"*darkgray.Dialog.borderColor: #111111", +"*darkgray.Dialog.text.foreground: #DDDDDD", +"*darkgray.Dialog.text.background: #666666", +"*darkgray.Dialog.button.foreground: #CCCCCC", +"*darkgray.Dialog.button.background: #666666", +"*darkgray.Dialog.logo.background: #444444", +"*darkgray.Dialog.thermometer.foreground: #4464AC", +"*darkgray.Dialog.thermometer.background: #666666", +"*darkgray.Dialog.borderWidth: 0", +"*borderlessblack.Dialog.foreground: #CCCCCC", +"*borderlessblack.Dialog.background: #000000", +"*borderlessblack.Dialog.topShadowColor: #000000", +"*borderlessblack.Dialog.bottomShadowColor: #000000", +"*borderlessblack.Dialog.text.foreground: #CCCCCC", +"*borderlessblack.Dialog.text.background: #000000", +"*borderlessblack.Dialog.button.foreground: #CCCCCC", +"*borderlessblack.Dialog.button.background: #333333", +"*borderlessblack.Dialog.logo.background: #000000", +"*borderlessblack.Dialog.thermometer.foreground: #CCCCCC", +"*borderlessblack.Dialog.thermometer.background: #333333", +"*borderlessblack.Dialog.thermometer.width: 3", +"*borderlessblack.Dialog.borderColor: #333333", +"*borderlessblack.Dialog.borderWidth: 1", +"*greenblack.Dialog.foreground: #00FF00", +"*greenblack.Dialog.background: #000000", +"*greenblack.Dialog.topShadowColor: #000000", +"*greenblack.Dialog.bottomShadowColor: #000000", +"*greenblack.Dialog.shadowWidth: 1", +"*greenblack.Dialog.text.foreground: #00FF00", +"*greenblack.Dialog.text.background: #006600", +"*greenblack.Dialog.button.foreground: #00FF00", +"*greenblack.Dialog.button.background: #006600", +"*greenblack.Dialog.logo.background: #000000", +"*greenblack.Dialog.thermometer.foreground: #00CC00", +"*greenblack.Dialog.thermometer.background: #006600", +"*greenblack.Dialog.borderColor: #006600", +"*greenblack.Dialog.borderWidth: 1", +"*white.Dialog.foreground: #000000", +"*white.Dialog.background: #FFFFFF", +"*white.Dialog.topShadowColor: #CCCCCC", +"*white.Dialog.bottomShadowColor: #CCCCCC", +"*white.Dialog.shadowWidth: 1", +"*white.Dialog.borderColor: #CCCCCC", +"*white.Dialog.text.foreground: #000000", +"*white.Dialog.text.background: #FFFFFF", +"*white.Dialog.button.foreground: #000000", +"*white.Dialog.button.background: #FFFFFF", +"*white.Dialog.logo.background: #FFFFFF", +"*white.Dialog.borderWidth: 0", +"*blue.Dialog.foreground: #000000", +"*blue.Dialog.background: #BBCCDD", +"*blue.Dialog.topShadowColor: #CCDDEE", +"*blue.Dialog.bottomShadowColor: #AABBCC", +"*blue.Dialog.borderColor: #AABBCC", +"*blue.Dialog.text.foreground: #000000", +"*blue.Dialog.text.background: #DDEEFF", +"*blue.Dialog.button.foreground: #000000", +"*blue.Dialog.button.background: #DDEEFF", +"*blue.Dialog.logo.background: #BBCCDD", +"*blue.Dialog.thermometer.foreground: #5566AA", +"*blue.Dialog.thermometer.background: #BBCCDD", +"*blue.Dialog.borderWidth: 0", +"*aquablack.Dialog.foreground: #00EFEF", +"*aquablack.Dialog.background: #000000", +"*aquablack.Dialog.topShadowColor: #000000", +"*aquablack.Dialog.bottomShadowColor: #000000", +"*aquablack.Dialog.shadowWidth: 2", +"*aquablack.Dialog.button.foreground: #000000", +"*aquablack.Dialog.button.background: #2244EE", +"*aquablack.Dialog.logo.background: #000000", +"*aquablack.Dialog.text.foreground: #2244EE", +"*aquablack.Dialog.text.background: #EEEEEE", +"*aquablack.Dialog.thermometer.foreground: #2244EE", +"*aquablack.Dialog.thermometer.background: #000088", +"*aquablack.Dialog.borderColor: #000066", +"*aquablack.Dialog.borderWidth: 1", +"*aquablack.Dialog.internalPadding: 36", +"*wine.Dialog.foreground: #AD8FA6", +"*wine.Dialog.background: #2C041E", +"*wine.Dialog.topShadowColor: #2C041E", +"*wine.Dialog.bottomShadowColor: #2C041E", +"*wine.Dialog.text.foreground: #706B70", +"*wine.Dialog.text.background: #F9F9F8", +"*wine.Dialog.button.foreground: #5F585B", +"*wine.Dialog.logo.background: #2C041E", +"*wine.Dialog.thermometer.foreground: #AD8FA6", +"*wine.Dialog.thermometer.background: #4D2946", +"*wine.Dialog.borderColor: #4D2946", +"*wine.Dialog.thermometer.width: 6", +"*wine.Dialog.borderWidth: 1", +"*errorFont: sans-serif bold 18", +"*errorColor: #FF0000", +"*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\ + 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\ + rdbomb --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\ +- webcollage --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\ + 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: dnalogo --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\ + scooter --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\ + 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\ + GL: deepstars --root \\n\ + GL: gravitywell --root \\n\ + GL: beats --root \\n\ + GL: covid19 --root \\n\ + GL: etruscanvenus --root \\n\ + GL: gibson --root \\n\ + GL: headroom --root \\n\ + GL: sphereeversion --root \\n\ + binaryhorizon --root \\n\ + marbling --root \\n\ + GL: chompytower --root \\n\ + GL: hextrail --root \\n\ + GL: mapscroller --root \\n\ + GL: nakagin --root \\n\ + GL: squirtorus --root \\n\ + GL: cubocteversion --root \\n\ + droste --root \\n\ + GL: papercube --root \\n\ + GL: skulloop --root \\n\ + GL: highvoltage --root \\n\ + GL: kallisti --root \\n", +"*hacks.antinspect.name: Ant Inspect", +"*hacks.antmaze.name: Ant Maze", +"*hacks.antspotlight.name: Ant Spotlight", +"*hacks.apple2.name: Apple ][", +"*hacks.binaryhorizon.name: Binary Horizon", +"*hacks.binaryring.name: Binary Ring", +"*hacks.blinkbox.name: Blink Box", +"*hacks.blitspin.name: Blit Spin", +"*hacks.blocktube.name: Block Tube", +"*hacks.bouncingcow.name: Bouncing Cow", +"*hacks.boxfit.name: Box Fit", +"*hacks.bsod.name: BSOD", +"*hacks.bubble3d.name: Bubble 3D", +"*hacks.ccurve.name: C Curve", +"*hacks.chompytower.name: Chompy Tower", +"*hacks.cityflow.name: City Flow", +"*hacks.cloudlife.name: Cloud Life", +"*hacks.companioncube.name: Companion Cube", +"*hacks.covid19.name: COVID19", +"*hacks.cube21.name: Cube 21", +"*hacks.cubestack.name: Cube Stack", +"*hacks.cubestorm.name: Cube Storm", +"*hacks.cubetwist.name: Cube Twist", +"*hacks.cubicgrid.name: Cubic Grid", +"*hacks.cubocteversion.name: Cuboctahedron Eversion", +"*hacks.cwaves.name: C Waves", +"*hacks.dangerball.name: Danger Ball", +"*hacks.decayscreen.name: Decay Screen", +"*hacks.deepstars.name: Deep Stars", +"*hacks.dnalogo.name: DNA Logo", +"*hacks.dymaxionmap.name: Dymaxion Map", +"*hacks.energystream.name: Energy Stream", +"*hacks.etruscanvenus.name: Etruscan Venus", +"*hacks.euler2d.name: Euler 2D", +"*hacks.fadeplot.name: Fade Plot", +"*hacks.fiberlamp.name: Fiber Lamp", +"*hacks.filmleader.name: Film Leader", +"*hacks.flipflop.name: Flip Flop", +"*hacks.flipscreen3d.name: Flip Screen 3D", +"*hacks.fliptext.name: Flip Text", +"*hacks.fluidballs.name: Fluid Balls", +"*hacks.flyingtoasters.name: Flying Toasters", +"*hacks.fontglide.name: Font Glide", +"*hacks.fuzzyflakes.name: Fuzzy Flakes", +"*hacks.geodesicgears.name: Geodesic Gears", +"*hacks.gflux.name: GFlux", +"*hacks.glblur.name: GL Blur", +"*hacks.glcells.name: GL Cells", +"*hacks.gleidescope.name: Gleidescope", +"*hacks.glforestfire.name: GL Forest Fire", +"*hacks.glhanoi.name: GL Hanoi", +"*hacks.glitchpeg.name: GlitchPEG", +"*hacks.glknots.name: GL Knots", +"*hacks.glmatrix.name: GL Matrix", +"*hacks.glplanet.name: GL Planet", +"*hacks.glschool.name: GL School", +"*hacks.glslideshow.name: GL Slideshow", +"*hacks.glsnake.name: GL Snake", +"*hacks.gltext.name: GL Text", +"*hacks.gravitywell.name: Gravity Well", +"*hacks.hexstrut.name: Hex Strut", +"*hacks.hextrail.name: Hex Trail", +"*hacks.highvoltage.name: High Voltage", +"*hacks.ifs.name: IFS", +"*hacks.imsmap.name: IMS Map", +"*hacks.jigglypuff.name: Jiggly Puff", +"*hacks.juggler3d.name: Juggler 3D", +"*hacks.lcdscrub.name: LCD Scrub", +"*hacks.lmorph.name: LMorph", +"*hacks.m6502.name: m6502", +"*hacks.mapscroller.name: Map Scroller", +"*hacks.maze3d.name: Maze 3D", +"*hacks.memscroller.name: Mem Scroller", +"*hacks.metaballs.name: Meta Balls", +"*hacks.mirrorblob.name: Mirror Blob", +"*hacks.moebius.name: Möbius", +"*hacks.moebiusgears.name: Möbius Gears", +"*hacks.moire.name: Moiré", +"*hacks.moire2.name: Moiré 2", +"*hacks.morph3d.name: Morph 3D", +"*hacks.nerverot.name: Nerve Rot", +"*hacks.noseguy.name: Nose Guy", +"*hacks.pacman.name: Pac-Man", +"*hacks.papercube.name: Paper Cube", +"*hacks.photopile.name: Photo Pile", +"*hacks.popsquares.name: Pop Squares", +"*hacks.projectiveplane.name:Projective Plane", +"*hacks.quasicrystal.name: Quasi-Crystal", +"*hacks.raverhoop.name: Raver Hoop", +"*hacks.razzledazzle.name: Razzle Dazzle", +"*hacks.rdbomb.name: RD-Bomb", +"*hacks.romanboy.name: Roman Boy", +"*hacks.rotzoomer.name: Rot Zoomer", +"*hacks.rubikblocks.name: Rubik Blocks", +"*hacks.sballs.name: SBalls", +"*hacks.shadebobs.name: Shade Bobs", +"*hacks.sierpinski3d.name: Sierpinski 3D", +"*hacks.skytentacles.name: Sky Tentacles", +"*hacks.slidescreen.name: Slide Screen", +"*hacks.speedmine.name: Speed Mine", +"*hacks.sphereeversion.name: Sphere Eversion", +"*hacks.splitflap.name: Split-Flap", +"*hacks.starwars.name: Star Wars", +"*hacks.stonerview.name: Stoner View", +"*hacks.t3d.name: T3D", +"*hacks.testx11.name: Test X11", +"*hacks.timetunnel.name: Time Tunnel", +"*hacks.topblock.name: Top Block", +"*hacks.tronbit.name: Tron Bit", +"*hacks.unknownpleasures.name:Unknown Pleasures", +"*hacks.vfeedback.name: VFeedback", +"*hacks.vidwhacker.name: Vid Whacker", +"*hacks.webcollage.name: Web Collage", +"*hacks.whirlwindwarp.name: Whirlwind Warp", +"*hacks.winduprobot.name: Windup Robot", +"*hacks.xanalogtv.name: XAnalogTV", +"*hacks.xrayswarm.name: XRaySwarm", diff --git a/driver/atoms.c b/driver/atoms.c index e8b6add..fc34707 100644 --- a/driver/atoms.c +++ b/driver/atoms.c @@ -1,4 +1,4 @@ -/* xscreensaver-command, Copyright © 1991-2021 Jamie Zawinski +/* xscreensaver-command, Copyright © 1991-2023 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -25,9 +25,10 @@ Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_RESPONSE, XA_SCREENSAVER_ID, XA_SCREENSAVER_STATUS, XA_SELECT, XA_DEMO, XA_EXIT, XA_BLANK, XA_LOCK, XA_ACTIVATE, XA_SUSPEND, XA_NEXT, XA_PREV, - XA_DEACTIVATE, XA_CYCLE, XA_RESTART, XA_PREFS, + XA_DEACTIVATE, XA_CYCLE, XA_RESTART, XA_NET_WM_PID, XA_NET_WM_STATE, XA_NET_WM_STATE_ABOVE, XA_NET_WM_STATE_FULLSCREEN, XA_NET_WM_BYPASS_COMPOSITOR, + XA_NET_WM_STATE_STAYS_ON_TOP, XA_KDE_NET_WM_WINDOW_TYPE_OVERRIDE, XA_NET_WM_WINDOW_TYPE, XA_NET_WM_WINDOW_TYPE_SPLASH, XA_NET_WM_WINDOW_TYPE_DIALOG, XA_NET_WM_WINDOW_TYPE_NOTIFICATION, XA_NET_WM_WINDOW_TYPE_NORMAL; @@ -52,7 +53,6 @@ init_xscreensaver_atoms (Display *dpy) XA_SELECT = A("SELECT"); XA_EXIT = A("EXIT"); XA_DEMO = A("DEMO"); - XA_PREFS = A("PREFS"); XA_LOCK = A("LOCK"); XA_BLANK = A("BLANK"); @@ -66,5 +66,8 @@ init_xscreensaver_atoms (Display *dpy) XA_NET_WM_WINDOW_TYPE_DIALOG = A("_NET_WM_WINDOW_TYPE_DIALOG"); XA_NET_WM_WINDOW_TYPE_NOTIFICATION = A("_NET_WM_WINDOW_TYPE_NOTIFICATION"); XA_NET_WM_WINDOW_TYPE_NORMAL = A("_NET_WM_WINDOW_TYPE_NORMAL"); + XA_NET_WM_STATE_STAYS_ON_TOP = A("_NET_WM_STATE_STAYS_ON_TOP"); + XA_KDE_NET_WM_WINDOW_TYPE_OVERRIDE = A("_KDE_NET_WM_WINDOW_TYPE_OVERRIDE"); + # undef A } diff --git a/driver/atoms.h b/driver/atoms.h index b5a7b7c..3f65d81 100644 --- a/driver/atoms.h +++ b/driver/atoms.h @@ -1,4 +1,4 @@ -/* xscreensaver-command, Copyright © 1991-2021 Jamie Zawinski +/* xscreensaver-command, Copyright © 1991-2023 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -15,9 +15,10 @@ extern Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_RESPONSE, XA_SCREENSAVER_ID, XA_SCREENSAVER_STATUS, XA_SELECT, XA_DEMO, XA_EXIT, XA_BLANK, XA_LOCK, XA_ACTIVATE, XA_SUSPEND, XA_NEXT, XA_PREV, - XA_DEACTIVATE, XA_CYCLE, XA_RESTART, XA_PREFS, + XA_DEACTIVATE, XA_CYCLE, XA_RESTART, XA_NET_WM_PID, XA_NET_WM_STATE, XA_NET_WM_STATE_ABOVE, XA_NET_WM_STATE_FULLSCREEN, XA_NET_WM_BYPASS_COMPOSITOR, + XA_NET_WM_STATE_STAYS_ON_TOP, XA_KDE_NET_WM_WINDOW_TYPE_OVERRIDE, XA_NET_WM_WINDOW_TYPE, XA_NET_WM_WINDOW_TYPE_SPLASH, XA_NET_WM_WINDOW_TYPE_DIALOG, XA_NET_WM_WINDOW_TYPE_NOTIFICATION, XA_NET_WM_WINDOW_TYPE_NORMAL; diff --git a/driver/atomswm.c b/driver/atomswm.c index 887dc2c..1ddf47a 100644 --- a/driver/atomswm.c +++ b/driver/atomswm.c @@ -43,6 +43,7 @@ xscreensaver_set_wm_atoms (Display *dpy, Window window, int width, int height, # endif Atom va[10]; long vl[10]; + int i; class_hints.res_name = "xscreensaver"; /* not progname */ class_hints.res_class = "XScreenSaver"; size_hints.flags = PMinSize | PMaxSize; @@ -73,22 +74,27 @@ xscreensaver_set_wm_atoms (Display *dpy, Window window, int width, int height, grubby paws off of our windows. */ - vl[0] = 1; /* _NET_WM_BYPASS_COMPOSITOR = 1 */ + i = 0; + vl[i++] = 1; /* _NET_WM_BYPASS_COMPOSITOR = 1 */ XChangeProperty (dpy, window, XA_NET_WM_BYPASS_COMPOSITOR, XA_CARDINAL, 32, - PropModeReplace, (unsigned char *) vl, 1); + PropModeReplace, (unsigned char *) vl, i); /* _NET_WM_STATE = [ _NET_WM_STATE_ABOVE, _NET_WM_STATE_FULLSCREEN ] */ - va[0] = XA_NET_WM_STATE_ABOVE; - va[1] = XA_NET_WM_STATE_FULLSCREEN; + i = 0; + va[i++] = XA_NET_WM_STATE_ABOVE; + va[i++] = XA_NET_WM_STATE_FULLSCREEN; + va[i++] = XA_NET_WM_STATE_STAYS_ON_TOP; /* Does this do anything? */ XChangeProperty (dpy, window, XA_NET_WM_STATE, XA_ATOM, 32, - PropModeReplace, (unsigned char *) va, 2); + PropModeReplace, (unsigned char *) va, i); /* As there is no _NET_WM_WINDOW_TYPE_SCREENSAVER, which property is most likely to effectively communicate "on top always" to the WM? _NET_WM_WINDOW_TYPE = NORMAL, SPLASH, DIALOG or NOTIFICATION? */ - va[0] = XA_NET_WM_WINDOW_TYPE_NOTIFICATION; + i = 0; + va[i++] = XA_NET_WM_WINDOW_TYPE_NOTIFICATION; + va[i++] = XA_KDE_NET_WM_WINDOW_TYPE_OVERRIDE; /* Does this do anything? */ XChangeProperty (dpy, window, XA_NET_WM_WINDOW_TYPE, XA_ATOM, 32, - PropModeReplace, (unsigned char *) va, 1); + PropModeReplace, (unsigned char *) va, i); if (for_window) /* This is the error dialog for a saver window */ { diff --git a/driver/auth.h b/driver/auth.h index 40594ea..80a49ba 100644 --- a/driver/auth.h +++ b/driver/auth.h @@ -1,5 +1,5 @@ /* auth.h --- Providing authentication mechanisms. - * Copyright © 1993-2021 Jamie Zawinski + * Copyright © 1993-2022 Jamie Zawinski * (c) 2007, Quest Software, Inc. All rights reserved. * This file is part of XScreenSaver. * @@ -85,7 +85,7 @@ extern Bool xscreensaver_auth_conv (void *closure, const auth_message *msg, auth_response **resp); extern void xscreensaver_auth_finished (void *closure, Bool authenticated_p); -extern void xscreensaver_splash (void *root_widget); +extern void xscreensaver_splash (void *root_widget, Bool disable_settings_p); #endif /* __XSCREENSAVER_AUTH_H__ */ diff --git a/driver/blurb.c b/driver/blurb.c index d732a9b..ddb8b18 100644 --- a/driver/blurb.c +++ b/driver/blurb.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright © 1991-2021 Jamie Zawinski +/* xscreensaver, Copyright © 1991-2022 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -17,20 +17,29 @@ #include #include +#include const char *progname = ""; int verbose_p = 0; +/* #define BLURB_CENTISECONDS */ + const char * blurb (void) { static char buf[255] = { 0 }; struct tm tm; - time_t now; + struct timeval now; int i; - now = time ((time_t *) 0); - localtime_r (&now, &tm); +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday (&now, &tzp); +# else + gettimeofday (&now); +# endif + + localtime_r (&now.tv_sec, &tm); i = strlen (progname); if (i > 40) i = 40; memcpy (buf, progname, i); @@ -44,6 +53,16 @@ blurb (void) buf[i++] = ':'; buf[i++] = '0' + (tm.tm_sec >= 10 ? tm.tm_sec/10 : 0); buf[i++] = '0' + (tm.tm_sec % 10); + +# ifdef BLURB_CENTISECONDS + { + int c = now.tv_usec / 10000; + buf[i++] = '.'; + buf[i++] = '0' + (c >= 10 ? c/10 : 0); + buf[i++] = '0' + (c % 10); + } +# endif + buf[i] = 0; return buf; } diff --git a/driver/clientmsg.c b/driver/clientmsg.c index f3d9d71..475d72b 100644 --- a/driver/clientmsg.c +++ b/driver/clientmsg.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright © 1991-2021 Jamie Zawinski +/* xscreensaver, Copyright © 1991-2023 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -36,59 +36,68 @@ error_handler (Display *dpy, XErrorEvent *error) Window find_screensaver_window (Display *dpy, char **version) { - int i; - Window root = RootWindowOfScreen (DefaultScreenOfDisplay (dpy)); - Window root2, parent, *kids; - unsigned int nkids; - XErrorHandler old_handler; + int nscreens = ScreenCount (dpy); + int screen; Window ret = 0; + XErrorHandler old_handler; XSync (dpy, False); old_handler = XSetErrorHandler (error_handler); if (version) *version = 0; - if (! XQueryTree (dpy, root, &root2, &parent, &kids, &nkids)) - abort (); - if (root != root2) - abort (); - if (parent) - abort (); - if (! (kids && nkids)) - goto DONE; - for (i = 0; i < nkids; i++) + for (screen = 0; screen < nscreens; screen++) { - Atom type; - int format; - unsigned long nitems, bytesafter; - unsigned char *v = 0; - int status; - - /* We're walking the list of root-level windows and trying to find - the one that has a particular property on it. We need to trap - BadWindows errors while doing this, because it's possible that - some random window might get deleted in the meantime. (That - window won't have been the one we're looking for.) - */ - status = XGetWindowProperty (dpy, kids[i], - XA_SCREENSAVER_VERSION, - 0, 200, False, XA_STRING, - &type, &format, &nitems, &bytesafter, - &v); - if (status == Success && type != None) - { - ret = kids[i]; - if (version) - *version = (char *) v; - else - XFree (v); - goto DONE; - } - if (v) XFree (v); + Window root = RootWindow (dpy, screen); + Window root2, parent, *kids; + unsigned int nkids; + int i = 0; + + if (! XQueryTree (dpy, root, &root2, &parent, &kids, &nkids)) + abort (); + if (root != root2) + abort (); + if (parent) + abort (); + if (! (kids && nkids)) + goto DONE; + for (i = 0; i < nkids; i++) + { + Atom type; + int format; + unsigned long nitems, bytesafter; + unsigned char *v = 0; + int status; + + /* We're walking the list of root-level windows and trying to find + the one that has a particular property on it. We need to trap + BadWindows errors while doing this, because it's possible that + some random window might get deleted in the meantime. (That + window won't have been the one we're looking for.) + */ + status = XGetWindowProperty (dpy, kids[i], + XA_SCREENSAVER_VERSION, + 0, 200, False, XA_STRING, + &type, &format, &nitems, &bytesafter, + &v); + if (status == Success && type != None) + { + ret = kids[i]; + if (version) + *version = (char *) v; + else + XFree (v); + goto DONE; + } + if (v) XFree (v); + + DONE: + if (ret) break; + } + if (kids) XFree (kids); + if (ret) break; } - DONE: - if (kids) XFree (kids); XSetErrorHandler (old_handler); return ret; } @@ -104,8 +113,15 @@ clientmessage_response (Display *dpy, XEvent *xev, Bool ok, const char *msg) { Atom cmd = xev->xclient.data.l[0]; char *name = XGetAtomName (dpy, cmd); - fprintf (stderr, "%s: ClientMessage %s: %s\n", blurb(), - (name ? name : "???"), msg); + pid_t caller = (cmd == XA_DEACTIVATE + ? (pid_t) xev->xclient.data.l[1] + : 0); + if (caller) + fprintf (stderr, "%s: ClientMessage %s: %s (from pid %lu)\n", blurb(), + (name ? name : "???"), msg, (unsigned long) caller); + else + fprintf (stderr, "%s: ClientMessage %s: %s\n", blurb(), + (name ? name : "???"), msg); } L = strlen (msg); diff --git a/driver/compile_axp.com b/driver/compile_axp.com deleted file mode 100644 index d6ed0e8..0000000 --- a/driver/compile_axp.com +++ /dev/null @@ -1,15 +0,0 @@ -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) DEMO.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) DIALOGS-XM.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) LOCK.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) PASSWD.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) STDERR.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,NO_SETUID)/INCL=([],[-],[-.UTILS]) SUBPROCS.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) TIMERS.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) WINDOWS.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) XSCREENSAVER-COMMAND.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,NO_SETUID)/INCL=([],[-],[-.UTILS]) XSCREENSAVER.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) XSET.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-GETPWNAM.C -$!!! CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) GETPWUID.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-HPWD.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-VALIDATE.C diff --git a/driver/compile_decc.com b/driver/compile_decc.com deleted file mode 100644 index d6ed0e8..0000000 --- a/driver/compile_decc.com +++ /dev/null @@ -1,15 +0,0 @@ -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) DEMO.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) DIALOGS-XM.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) LOCK.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) PASSWD.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) STDERR.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,NO_SETUID)/INCL=([],[-],[-.UTILS]) SUBPROCS.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) TIMERS.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) WINDOWS.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) XSCREENSAVER-COMMAND.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,NO_SETUID)/INCL=([],[-],[-.UTILS]) XSCREENSAVER.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) XSET.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-GETPWNAM.C -$!!! CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) GETPWUID.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-HPWD.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-VALIDATE.C diff --git a/driver/demo-Gtk-conf.c b/driver/demo-Gtk-conf.c index 6d04215..86acea2 100644 --- a/driver/demo-Gtk-conf.c +++ b/driver/demo-Gtk-conf.c @@ -1,5 +1,5 @@ /* demo-Gtk-conf.c --- implements the dynamic configuration dialogs. - * xscreensaver, Copyright (c) 2001-2020 Jamie Zawinski + * xscreensaver, Copyright © 2001-2022 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -14,7 +14,7 @@ # include "config.h" #endif -#if defined(HAVE_GTK) && defined(HAVE_XML) /* whole file */ +#ifdef HAVE_GTK /* whole file */ #include @@ -28,36 +28,7 @@ #include #include -/* - * Both of these workarounds can be removed when support for ancient - * libxml versions is dropped. versions 1.8.11 and 2.3.4 provide the - * correct fixes. - */ - -/* - * Older libxml polluted the global headerspace, while libxml2 fixed - * this. To support both old and recent libxmls, we have this - * workaround. - */ -#ifdef HAVE_OLD_XML_HEADERS -# include -#else /* ! HAVE_OLD_XML_HEADERS */ -# include -#endif /* HAVE_OLD_XML_HEADERS */ - -/* - * handle non-native spelling mistakes in earlier versions and provide - * the source-compat fix for this that may not be in older versions. - */ -#ifndef xmlChildrenNode -# if LIBXML_VERSION >= 20000 -# define xmlChildrenNode children -# define xmlRootNode children -# else -# define xmlChildrenNode childs -# define xmlRootNode root -# endif /* LIBXML_VERSION */ -#endif /* xmlChildrenNode */ +#include #if (__GNUC__ >= 4) /* Ignore useless warnings generated by gtk.h */ # undef inline @@ -66,6 +37,7 @@ # pragma GCC diagnostic ignored "-Wlong-long" # pragma GCC diagnostic ignored "-Wvariadic-macros" # pragma GCC diagnostic ignored "-Wpedantic" +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif #include @@ -74,6 +46,7 @@ # pragma GCC diagnostic pop #endif +#include "blurb.h" #include "demo-Gtk-conf.h" /* Deal with deprecation of direct access to struct fields on the way to GTK3 @@ -92,12 +65,7 @@ #endif -extern const char *blurb (void); - - -const char *hack_configuration_path = HACK_CONFIGURATION_PATH; - -static gboolean debug_p = FALSE; +static gboolean debug_p = FALSE; /* Copied from s->debug_p in parent */ #define MIN_SLIDER_WIDTH 150 @@ -120,6 +88,11 @@ typedef enum { } parameter_type; +typedef enum { + NONE, INVERT, RATIO +} convert_t; + + typedef struct { parameter_type type; @@ -140,8 +113,9 @@ typedef struct { float value; /* default value */ gboolean integer_p; /* whether the range is integral, or real */ xmlChar *arg; /* command-line option to set (substitute "%") */ - gboolean invert_p; /* whether to flip the value and pretend the - range goes from hi-low instead of low-hi. */ + convert_t convert; /* invert: whether to flip the value and pretend the + range goes from hi-low instead of low-hi. + ratio: position 1.0 at the center. */ /* boolean, select-option */ @@ -161,7 +135,9 @@ typedef struct { static parameter *make_select_option (const char *file, xmlNodePtr); static void make_parameter_widget (const char *filename, - parameter *, GtkWidget *); + parameter *, GtkWidget *, + void (*changed_cb) (GtkWidget *, gpointer), + gpointer changed_data); static void browse_button_cb (GtkButton *button, gpointer user_data); @@ -221,7 +197,14 @@ describe_parameter (FILE *out, parameter *p) if (p->high) fprintf (out, " high=\"%.2f\"", p->high); if (p->value) fprintf (out, " default=\"%.2f\"", p->value); if (p->arg) fprintf (out, " arg=\"%s\"", p->arg); - if (p->invert_p) fprintf (out, " convert=\"invert\""); + + switch (p->convert) { + case NONE: break; + case INVERT: fprintf (out, " convert=\"invert\""); break; + case RATIO: fprintf (out, " convert=\"ratio\""); break; + default: abort(); break; + } + if (p->arg_set) fprintf (out, " arg-set=\"%s\"", p->arg_set); if (p->arg_unset) fprintf (out, " arg-unset=\"%s\"", p->arg_unset); fprintf (out, ">\n"); @@ -366,7 +349,11 @@ make_parameter (const char *filename, xmlNodePtr node) p->value = xml_get_float (node, (xmlChar *) "default", &floatp); p->integer_p = !floatp; convert = (char *) xmlGetProp (node, (xmlChar *) "convert"); - p->invert_p = (convert && !strcmp (convert, "invert")); + + if (convert && !strcmp (convert, "invert")) p->convert = INVERT; + else if (convert && !strcmp (convert, "ratio")) p->convert = RATIO; + else p->convert = NONE; + p->arg = xmlGetProp (node, (xmlChar *) "arg"); p->arg_set = xmlGetProp (node, (xmlChar *) "arg-set"); p->arg_unset = xmlGetProp (node, (xmlChar *) "arg-unset"); @@ -461,7 +448,7 @@ sanity_check_parameter (const char *filename, const xmlChar *node_name, gboolean high; gboolean value; gboolean arg; - gboolean invert_p; + gboolean convert; gboolean arg_set; gboolean arg_unset; } allowed, require; @@ -511,7 +498,7 @@ sanity_check_parameter (const char *filename, const xmlChar *node_name, /* require.high = TRUE; -- may be 0 */ allowed.value = TRUE; /* require.value = TRUE; -- may be 0 */ - allowed.invert_p = TRUE; + allowed.convert = TRUE; break; case SPINBUTTON: allowed.id = TRUE; @@ -525,7 +512,7 @@ sanity_check_parameter (const char *filename, const xmlChar *node_name, /* require.high = TRUE; -- may be 0 */ allowed.value = TRUE; /* require.value = TRUE; -- may be 0 */ - allowed.invert_p = TRUE; + allowed.convert = FALSE; break; case BOOLEAN: allowed.id = TRUE; @@ -571,9 +558,15 @@ sanity_check_parameter (const char *filename, const xmlChar *node_name, CHECK (high, "high"); CHECK (value, "default"); CHECK (arg, "arg"); - CHECK (invert_p, "convert"); + CHECK (convert, "convert"); CHECK (arg_set, "arg-set"); CHECK (arg_unset, "arg-unset"); + + if (p->convert == RATIO) + { + if (p->low <= 0) WARN ("low must be > 0"); + if (p->high <= 1) WARN ("high must be > 1"); + } # undef CHECK # undef WARN @@ -587,16 +580,13 @@ sanity_check_menu_options (const char *filename, const xmlChar *node_name, parameter *p) { GList *opts; - int noptions = 0; int nulls = 0; char *prefix = 0; -/* fprintf (stderr, "\n## %s\n", p->id);*/ for (opts = p->options; opts; opts = opts->next) { parameter *s = (parameter *) opts->data; if (!s->arg_set) nulls++; - noptions++; if (s->arg_set) { @@ -605,10 +595,12 @@ sanity_check_menu_options (const char *filename, const xmlChar *node_name, if (spc) *spc = 0; if (prefix) { +# if 0 if (strcmp (a, prefix)) fprintf (stderr, "%s: %s: both \"%s\" and \"%s\" used in