ftp://ftp.krokus.ru/pub/OpenBSD/distfiles/xscreensaver-4.22.tar.gz
authorZygo Blaxell <zblaxell@hungrycats.org>
Mon, 2 Mar 2009 05:43:32 +0000 (00:43 -0500)
committerZygo Blaxell <zblaxell@faye.furryterror.org>
Fri, 8 Feb 2013 17:54:27 +0000 (12:54 -0500)
-rw-r--r-- 1 zblaxell zblaxell 4620066 Sep  4  2005 xscreensaver-4.22.tar.gz
f40db41ef221f7ed42c39e77007ce05b4f846306  xscreensaver-4.22.tar.gz

169 files changed:
Makefile.in
README
config.h.in
configure
configure.in
driver/Makefile.in
driver/XScreenSaver.ad.in
driver/XScreenSaver_ad.h
driver/dpms.c
driver/lock.c
driver/passwd-helper.c
driver/passwd-kerberos.c
driver/prefs.c
driver/setuid.c
driver/subprocs.c
driver/test-uid.c
driver/timers.c
driver/windows.c
driver/xscreensaver-command.c
driver/xscreensaver-command.man
driver/xscreensaver-demo.glade2
driver/xscreensaver-demo.man
driver/xscreensaver-text
driver/xscreensaver.c
driver/xscreensaver.man
driver/xset.c
hacks/Makefile.in
hacks/analogtv.c
hacks/anemotaxis.man
hacks/attraction.man
hacks/bsod.c
hacks/bsod.man
hacks/bumps.man
hacks/cloudlife.c
hacks/compile_axp.com
hacks/compile_decc.com
hacks/config/README
hacks/config/antmaze.xml [new file with mode: 0644]
hacks/config/blinkbox.xml
hacks/config/boxed.xml
hacks/config/bsod.xml
hacks/config/bubble3d.xml
hacks/config/cage.xml
hacks/config/cloudlife.xml
hacks/config/crackberg.xml [new file with mode: 0644]
hacks/config/fireworkx.xml
hacks/config/flipflop.xml
hacks/config/glblur.xml
hacks/config/hyperball.xml
hacks/config/hypertorus.xml
hacks/config/interaggregate.xml [new file with mode: 0644]
hacks/config/lmorph.xml
hacks/config/penrose.xml
hacks/config/polytopes.xml
hacks/config/providence.xml
hacks/config/queens.xml
hacks/config/tangram.xml [new file with mode: 0644]
hacks/decayscreen.man
hacks/demon.man
hacks/discrete.c
hacks/drift.man
hacks/fiberlamp.c
hacks/fiberlamp.man
hacks/fireworkx.c
hacks/fireworkx.man
hacks/fireworkx_mmx.S [new file with mode: 0644]
hacks/flow.c
hacks/fuzzyflakes.man
hacks/glx/Makefile.in
hacks/glx/antinspect.c
hacks/glx/antmaze.c [new file with mode: 0644]
hacks/glx/antmaze.man [new file with mode: 0644]
hacks/glx/b_draw.c
hacks/glx/b_lockglue.c
hacks/glx/blinkbox.c
hacks/glx/blinkbox.man
hacks/glx/boxed.c
hacks/glx/bubble3d.c
hacks/glx/bubble3d.h
hacks/glx/bubble3d.man
hacks/glx/cage.c
hacks/glx/cage.man
hacks/glx/crackberg.c [new file with mode: 0644]
hacks/glx/crackberg.man [new file with mode: 0644]
hacks/glx/endgame.c
hacks/glx/endgame.man
hacks/glx/extrusion.c
hacks/glx/extrusion.man
hacks/glx/flipscreen3d.man
hacks/glx/fliptext.c
hacks/glx/gflux.c
hacks/glx/gflux.man
hacks/glx/glblur.c
hacks/glx/glblur.man
hacks/glx/glmatrix.man
hacks/glx/glsnake.man
hacks/glx/gltext.man
hacks/glx/hypertorus.c
hacks/glx/hypertorus.man
hacks/glx/klein.c
hacks/glx/moebius.c
hacks/glx/molecule.man
hacks/glx/morph3d.man
hacks/glx/pinion.man
hacks/glx/polyhedra-gl.c
hacks/glx/polyhedra.man
hacks/glx/polytopes.c
hacks/glx/polytopes.man
hacks/glx/providence.c
hacks/glx/providence.man
hacks/glx/queens.man
hacks/glx/sphere.c
hacks/glx/stairs.c
hacks/glx/tangram.c [new file with mode: 0644]
hacks/glx/tangram.man [new file with mode: 0644]
hacks/glx/tangram_shapes.c [new file with mode: 0644]
hacks/glx/tangram_shapes.h [new file with mode: 0644]
hacks/hyperball.man
hacks/ifs.c
hacks/interaggregate.c [new file with mode: 0644]
hacks/interaggregate.man [new file with mode: 0644]
hacks/intermomentary.c
hacks/juggle.c
hacks/lisa.man
hacks/lmorph.man
hacks/loop.c
hacks/maze.c
hacks/munch.man
hacks/pacman_level.c
hacks/penetrate.man
hacks/phosphor.c
hacks/qix.man
hacks/rd-bomb.c
hacks/rotzoomer.man
hacks/slidescreen.c
hacks/slidescreen.man
hacks/sonar.c
hacks/sonar.man
hacks/speedmine.c
hacks/starfish.man
hacks/substrate.c
hacks/t3d.man
hacks/thornbird.c
hacks/truchet.man
hacks/vidwhacker
hacks/vidwhacker.man
hacks/webcollage
hacks/webcollage.man
hacks/whirlwindwarp.c
hacks/whirlwindwarp.man
hacks/whirlygig.man
hacks/xlyap.man
hacks/xml2man.pl
hacks/xscreensaver-sgigl.c
hacks/xteevee.man
hacks/zoom.c
hacks/zoom.man
install-sh [changed mode: 0755->0644]
po/Makefile.in.in
po/POTFILES.in
po/de.po
po/hu.po
po/it.po
po/nb.po [new file with mode: 0644]
setup.com
utils/ad2c [changed mode: 0755->0644]
utils/fade.c
utils/version.h
xscreensaver.spec

index 24e9cb724c327f8da894c51cf23a74fb891413dc..2ae53cafda62955b2dfc6a692aba0b986097ead3 100644 (file)
@@ -41,6 +41,8 @@ depend::
 distdepend::
        @$(MAKE) update_spec_version
        @$(MAKE_SUBDIR)
+       @cd po ; $(MAKE) generate_potfiles_in
+
 TAGS:: tags
 tags::
        @$(MAKE_SUBDIR)
@@ -60,7 +62,7 @@ tar::
   $(MAKE) configure ;                                                      \
   $(MAKE) distdepend ;                                                     \
   NAME=`sed -n                                                             \
-  's/[^0-9]*\([0-9]\.[0-9][0-9]*b\?[0-9]*\).*/xscreensaver-\1/p'           \
+  's/[^0-9]*\([0-9]\.[0-9][0-9]*[0-9]*\).*/xscreensaver-\1/p'              \
        utils/version.h` ;                                                  \
   rm -rf $$NAME ; ln -s . $$NAME ;                                         \
   FILES= ;                                                                 \
@@ -88,6 +90,7 @@ tar::
 #
 configure::
        autoconf
+       autoheader
        @TMP=configure.$$$$ ;                                                \
        echo "munging configure's --help message..." ;                       \
        ( perl -e '                                                          \
@@ -112,6 +115,8 @@ configure::
  --x-includes=DIR        X include files are in DIR\n \
  --x-libraries=DIR       X library files are in DIR/m; \
                                                                             \
+               s@mandir=.\$${prefix}/man.@mandir=\\\$${datadir}/man@;       \
+                                                                            \
                print;'                                                      \
        < configure                                                          \
        > $$TMP &&                                                           \
diff --git a/README b/README
index e8221ecafdd0f6a510784b437bf7eb024e6927c7..beac235b174825362409a12ee30eb955eca4e8ed 100644 (file)
--- a/README
+++ b/README
@@ -76,6 +76,17 @@ the XScreenSaver FAQ about that: http://www.jwz.org/xscreensaver/faq.html
 
                               ============
 
+Changes since 4.21:   * Fixed a bug in the new mouse-motion code that caused
+                        the screen to never blank on multi-head non-Xinerama
+                        systems.  Oops.
+                      * New hacks, `interaggregate', `antmaze', `tangram',
+                        and `crackberg'.
+                      * Minor tweaks to `fiberlamp', `ifs', `slidescreen',
+                        `zoom', `sonar', `fireworkx', `whirlwindwarp',
+                        `bubble3d', and `rd-bomb'.
+                      * Added motion blur to `blinkbox'.
+                      * `bsod' now includes Longhorn's "RSOD", and OS/2.
+                      * Fixed `-wireframe' usage in most hacks and man pages.
 Changes since 4.20:   * New hack: `fliptext'.
                       * Changed default configure installation directories:
                         /usr/bin/ for xscreensaver, etc.;
index 0a62ee15c0f6c9757b55032f454b6e09c281f5b9..59a6ccf995253a48d9e34b91df023125c5a34f92 100644 (file)
@@ -1,3 +1,6 @@
+/* config.h.in.  Generated from configure.in by autoheader.  */
+
+
 /* config.h.in --- xscreensaver, Copyright (c) 1998-2000 Jamie Zawinski.
  *
  *  The best way to set these parameters is by running the included `configure'
  */
 
 
-/* *************************************************************************
-                          CONFIGURING SERVER EXTENSIONS
-   ************************************************************************* */
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#undef CRAY_STACKSEG_END
 
-/* Define this if you have the XReadDisplay extension (I think this is an
-   SGI-only thing; it's in <X11/extensions/readdisplay.h>.)  A few of the
-   screenhacks will take advantage of this if it's available.
- */
-#undef HAVE_READ_DISPLAY_EXTENSION
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
 
-/* Define this if you have the XHPDisableReset function (an HP only thing
-   which allows the Ctrl-Sh-Reset key sequence to be temporarily disabled.)
- */
-#undef HAVE_XHPDISABLERESET
+/* always defined to indicate that i18n is enabled */
+#undef ENABLE_NLS
 
-/*  First, some background: there are three distinct server extensions which
- *  are useful to a screen saver program: they are XIDLE, MIT-SCREEN-SAVER, 
- *  and SCREEN_SAVER.
- *
- *  The XIDLE extension resides in .../contrib/extensions/xidle/ on the X11R5
- *  contrib tape.  This extension lets the client get accurate idle-time 
- *  information from the X server in a potentially more reliable way than by
- *  simply watching for keyboard and mouse activity.  However, the XIDLE 
- *  extension has apparently not been ported to X11R6.
- *
- *  The SCREEN_SAVER extension is found (as far as I know) only in the SGI
- *  X server, and it exists in all releases since (at least) Irix 5.  The
- *  relevant header file is /usr/include/X11/extensions/XScreenSaver.h.
- *
- *  The similarly-named MIT-SCREEN-SAVER extension came into existence long
- *  after the SGI SCREEN_SAVER extension was already in use, and resides in
- *  .../contrib/extensions/screensaver/ on the X11R6 contrib tape.  It is
- *  also found in certain recent X servers built in to NCD X terminals.
- *
- *     The MIT extension does basically the same thing that the XIDLE extension
- *     does, but there are two things wrong with it: first, because of the way
- *     the extension was designed, the `fade' option to XScreenSaver will be
- *     uglier: just before the screen fades out, there will be an unattractive
- *     flicker to black, because this extension blanks the screen *before*
- *     telling us that it is time to do so.  Second, this extension is known to
- *     be buggy; on the systems I use, it works, but some people have reported
- *     X server crashes as a result of using it.  XScreenSaver uses this
- *     extension rather conservatively, because when I tried to use any of its
- *     more complicated features, I could get it to crash the server at the
- *     drop of a hat.
- *
- *     In short, the MIT-SCREEN-SAVER extension is a piece of junk.  The older
- *     SGI SCREEN_SAVER extension works great, as does XIDLE.  It would be nice
- *     If those two existed on more systems, that is, would be adopted by the
- *     X Consortium in favor of their inferior "not-invented-here" entry.
- */
+/* Some screenhacks like to run an external program to generate random pieces
+   of text; set this to the one you like. Note that this is just the default;
+   X resources can be used to override it. */
+#undef FORTUNE_PROGRAM
 
-/*  Define this if you have the XIDLE extension installed. If you have the
- *  XIDLE extension, this is recommended.  (You have this extension if the
- *  file /usr/include/X11/extensions/xidle.h exists.)  Turning on this flag
- *  lets XScreenSaver work better with servers which support this extension; 
- *  but it will still work with servers which do not suport it, so it's a good
- *  idea to compile in support for it if you can.
- */
-#undef HAVE_XIDLE_EXTENSION
+/* This is the name of the gettext package to use. */
+#undef GETTEXT_PACKAGE
 
-/*  Define this if you have the SGI SCREEN_SAVER extension.  This is standard
- *  on Irix systems, and not available elsewhere.
- */
-#undef HAVE_SGI_SAVER_EXTENSION
+/* Define this if gettimeofday() takes two arguments. */
+#undef GETTIMEOFDAY_TWO_ARGS
 
-/*  Define this if you have the SGI-VIDEO-CONTROL extension.  This is standard
- *  on Irix systems, and not available elsewhere.
- */
-#undef HAVE_SGI_VC_EXTENSION
+/* Define this if your system is Solaris with ``adjunct'' passwords (this is
+   the version where one gets at the passwords with getpwanam() instead of
  getpwnam().) I haven't tested this one, let me know if it works. */
+#undef HAVE_ADJUNCT_PASSWD
 
-/*  Define this if you have the XDPMS extension.  This is standard on
- *  sufficiently-recent XFree86 systems, and possibly elsewhere.  (It's
- *  available if the file /usr/include/X11/extensions/dpms.h exists.)
- */
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <argz.h> header file. */
+#undef HAVE_ARGZ_H
+
+/* Define this if you have Gnome and want to build support for the
+   xscreensaver control panel in the Gnome Control Center (gnomecc). (This is
+   needed only with Gtk 1.x.) */
+#undef HAVE_CRAPPLET
+
+/* Define this if HAVE_CRAPPLET is defined, and the function
+   capplet_widget_changes_are_immediate() is available. */
+#undef HAVE_CRAPPLET_IMMEDIATE
+
+/* Define to 1 if you have the <crypt.h> header file. */
+#undef HAVE_CRYPT_H
+
+/* Define to 1 if you have the `dcgettext' function. */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#undef HAVE_DIRENT_H
+
+/* Define this if you have the X Double Buffer Extension. */
+#undef HAVE_DOUBLE_BUFFER_EXTENSION
+
+/* Define this if you have the XDPMS extension. This is standard on
+   sufficiently-recent XFree86 systems, and possibly elsewhere. (It's
+   available if the file /usr/include/X11/extensions/dpms.h exists.) */
 #undef HAVE_DPMS_EXTENSION
 
-/*  Define this if you have the functions XF86VidModeGetModeLine() and
- *  XF86VidModeGetViewPort(), in support of virtual desktops where the
- *  X server's root window is bigger than the actual screen.  This is
- *  an XFree86 thing, and probably doesn't exist elsewhere.  (It's
- *  available if the file /usr/include/X11/extensions/xf86vmode.h exists.)
- */
-#undef HAVE_XF86VMODE
+/* Define this if your system is Digital or SCO Unix with so-called ``Enhanced
+   Security'', that is, the passwords live in /tcb/files/auth/<x>/<xyz>
+   instead of in /etc/passwd, and one reads them with getprpwnam() instead of
+   getpwnam(). */
+#undef HAVE_ENHANCED_PASSWD
 
-/*  Define this if you have the functions XF86VidModeGetGamma() and
- *  XF86VidModeSetGamma(), which allow clients to change the gamma
- *  response of the monitor.  This is an XFree86 4.0.x thing, and
- *  probably doesn't exist elsewhere.  (It's available if the file
- *  /usr/include/X11/extensions/xf86vmode.h exists and has stuff about
- *  gamma in it.)
- */
-#undef HAVE_XF86VMODE_GAMMA
+/* Define to 1 if you have the `fcntl' function. */
+#undef HAVE_FCNTL
 
-/*  Define this if you have the functions XF86VidModeGetGammaRamp() and
- *  XF86VidModeSetGammaRamp(), which provide finer-grained control than
- *  XF86VidMode[GS]etGamma().  These appeared in XFree86 4.1.0.
- */
-#undef HAVE_XF86VMODE_GAMMA_RAMP
+/* Define this if you have the 'forkpty' function: This allows 'phosphor' and
+   'apple2' to run curses-based programs, or be used as terminal windows. */
+#undef HAVE_FORKPTY
 
-/*  Define this if you have the Xinerama extension.  This is standard on
- *  sufficiently-recent XFree86 systems, and possibly elsewhere.  (It's
- *  available if the file /usr/include/X11/extensions/Xinerama.h exists.)
- */
-#undef HAVE_XINERAMA
+/* Define this if you have the GDK_Pixbuf library installed. Some of the demos
+   can make use of this if it is available. */
+#undef HAVE_GDK_PIXBUF
 
-/*  Define this if you have the Resize and Rotate extension.  This is standard
- *  on sufficiently-recent XFree86 systems, and possibly elsewhere.  (It's
- *  available if the file /usr/include/X11/extensions/Xrandr.h exists.)
- */
-#undef HAVE_RANDR
+/* Define to 1 if you have the `getcwd' function. */
+#undef HAVE_GETCWD
 
-/* Define this if you have the XF86MiscSetGrabKeysState function (which allows
-   the Ctrl-Alt-KP_star and Ctrl-Alt-KP_slash key sequences to be temporarily
-   disabled.  Sadly, it doesn't affect Ctrl-Alt-BS or Ctrl-Alt-F1.)
- */
-#undef HAVE_XF86MISCSETGRABKEYSSTATE
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
 
-/*  Define this if you have a Linux-like /proc/interrupts file which can be
- *  examined to determine when keyboard activity has occurred.
- */
-#undef HAVE_PROC_INTERRUPTS
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
 
+/* Define this if you have the gettimeofday function. */
+#undef HAVE_GETTIMEOFDAY
 
+/* Define to 1 if you have the `getwd' function. */
+#undef HAVE_GETWD
 
-/* *************************************************************************
-                          CONFIGURING GRAPHICS TOOLKITS
-   ************************************************************************* */
+/* Define this if you have OpenGL. Some of the demos require it, so if you
+   don't have it, then those particular demos won't be built. (This won't
+   affect the screen saver as a whole.) */
+#undef HAVE_GL
 
-/*  Define this if you have Motif.
- */
-#undef HAVE_MOTIF
+/* Define this if your version of OpenGL has the glBindTexture() routine. This
  is the case for OpenGL 1.1, but not for OpenGL 1.0. */
+#undef HAVE_GLBINDTEXTURE
 
-/*  Define this if you have the XmComboBox Motif widget (Motif 2.0.)
- */
-#undef HAVE_XMCOMBOBOX
+/* Define this if you have the -lgle and -lmatrix libraries (GL extrusion.) */
+#undef HAVE_GLE
 
-/*  Define this if you have Gtk (any version.)
- */
+/* Define this if you have the -lgle from GLE version 3 */
+#undef HAVE_GLE3
+
+/* Define this if you have Gtk (any version.) */
 #undef HAVE_GTK
 
-/* Define this if you have Gtk 2.x.
- */
+/* Define this if you have Gtk 2.x. */
 #undef HAVE_GTK2
 
-/*  Define this if you have Gnome and want to build support for the 
-    xscreensaver control panel in the Gnome Control Center (gnomecc).
-    (This is needed only with Gtk 1.x.)
- */
-#undef HAVE_CRAPPLET
+/* Define this if you are running HPUX with so-called ``Secure Passwords'' (if
+   you have /usr/include/hpsecurity.h, you probably have this.) I haven't
+   tested this one, let me know if it works. */
+#undef HAVE_HPUX_PASSWD
 
-/*  Define this if HAVE_CRAPPLET is defined, and the function
-    capplet_widget_changes_are_immediate() is available.
- */
-#undef HAVE_CRAPPLET_IMMEDIATE
+/* Define this if you do pings with a `struct icmp' and an `icmp_id' slot. */
+#undef HAVE_ICMP
 
-/*  Define this if you have the XML library.
- */
-#undef HAVE_XML
+/* Define this if you do pings with a `struct icmphdr' and an `un.echo.id'
  slot. */
+#undef HAVE_ICMPHDR
 
-/* Define this if you have the XML library headers in their old,
- * non-namespaced location (you lack the gnome-xml/libxml symlink)
- */
-#undef HAVE_OLD_XML_HEADERS
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
 
-/*  Define this if you have the XPM library installed.  Some of the demos can
- *  make use of this if it is available.
- */
-#undef HAVE_XPM
+/* Define this if you have the Independent JPEG Group's JPEG library
+   installed. Some of the demos can make use of this if it is available. */
+#undef HAVE_JPEGLIB
 
-/*  Define this if you have the GDK_Pixbuf library installed.  Some of the
- *  demos can make use of this if it is available.
- */
-#undef HAVE_GDK_PIXBUF
+/* Define this if you want to use Kerberos authentication to lock/unlock the
+   screen instead of your local password. This currently uses Kerberos V4, but
+   a V5 server with V4 compatibility will work. WARNING: DO NOT USE AFS
+   string-to-key passwords with this option. This option currently *only*
+   works with standard Kerberos des_string_to_key. If your password is an AFS
+   password and not a kerberos password, it will not authenticate properly.
+   See the comments in driver/kpasswd.c for more information if you need it.
+   */
+#undef HAVE_KERBEROS
 
-/*  Define this if you have the Independent JPEG Group's JPEG library
- *  installed.  Some of the demos can make use of this if it is available.
- */
-#undef HAVE_JPEGLIB
+/* Define this if you have Kerberos 5, meaning we need to use the Kerberos 4
+   compatibility layer. */
+#undef HAVE_KERBEROS5
 
-/*  Define this if you have the Xmu library.  This is standard part of X, and
- *  if your vendor doesn't ship it, you should report that as a bug.
- */
-#undef HAVE_XMU
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
 
-/*  Define this if you have OpenGL.  Some of the demos require it, so if you
- *  don't have it, then those particular demos won't be built.  (This won't
- *  affect the screen saver as a whole.)
- */
-#undef HAVE_GL
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
 
-/*  Define this if you have OpenGL, but it's the MesaGL variant.  (The 
-    libraries have different names.)  (HAVE_GL should be defined too.)
- */
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define this if you have OpenGL, but it's the MesaGL variant. (The libraries
+   have different names.) (HAVE_GL should be defined too.) */
 #undef HAVE_MESA_GL
 
-/*  Define this if your version of OpenGL has the glBindTexture() routine.
-    This is the case for OpenGL 1.1, but not for OpenGL 1.0.
- */
-#undef HAVE_GLBINDTEXTURE
+/* Define this if you have the MIT-SCREEN-SAVER extension installed. See the
+   caveats about this extension, above. (It's available if
  /usr/include/X11/extensions/scrnsaver.h exists.) */
+#undef HAVE_MIT_SAVER_EXTENSION
 
-/*  Define this if you have the -lgle and -lmatrix libraries (GL extrusion.)
- */
-#undef HAVE_GLE
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
 
-/*  Define this if you have the -lgle from GLE version 3
- */
-#undef HAVE_GLE3
+/* Define this if you have Motif. */
+#undef HAVE_MOTIF
 
-/*  Define this if you have the X Shared Memory Extension.
- */
-#undef HAVE_XSHM_EXTENSION
+/* Define to 1 if you have the `munmap' function. */
+#undef HAVE_MUNMAP
 
-/*  Define this if you have the X Double Buffer Extension.
- */
-#undef HAVE_DOUBLE_BUFFER_EXTENSION
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
 
-/*  Set the name of the password helper program, if any
- */
-#undef PASSWD_HELPER_PROGRAM
+/* Define to 1 if you have the `nice' function. */
+#undef HAVE_NICE
 
+/* Define to 1 if you have the <nl_types.h> header file. */
+#undef HAVE_NL_TYPES_H
 
+/* Define this if you have the XML library headers in their old,
+   non-namespaced location (you lack the gnome-xml/libxml symlink) */
+#undef HAVE_OLD_XML_HEADERS
 
-/* *************************************************************************
-                       CONFIGURING PASSWORD AUTHENTICATION
-   ************************************************************************* */
+/* Define this if you want to use PAM (Pluggable Authentication Modules) to
+   lock/unlock the screen, instead of standard /etc/passwd authentication. */
+#undef HAVE_PAM
 
-/* Define this to remove the option of locking the screen at all.
- */
-#undef NO_LOCKING
+/* Define this if you have a Linux-like /proc/interrupts file which can be
  examined to determine when keyboard activity has occurred. */
+#undef HAVE_PROC_INTERRUPTS
 
-/*  Define this if you want to use Kerberos authentication to lock/unlock the
- *  screen instead of your local password.  This currently uses Kerberos V4, 
- *  but a V5 server with V4 compatibility will work.  WARNING: DO NOT USE AFS
- *  string-to-key passwords with this option. This option currently *only* 
- *  works with standard Kerberos des_string_to_key.  If your password is an
- *  AFS password and not a kerberos password, it will not authenticate 
- *  properly. See the comments in driver/kpasswd.c for more information if you
- *  need it. 
- */
-#undef HAVE_KERBEROS
+/* Define to 1 if you have the <pty.h> header file. */
+#undef HAVE_PTY_H
 
-/* Define this if you have Kerberos 5, meaning we need to use the Kerberos 4
- * compatibility layer.
- */
-#undef HAVE_KERBEROS5
+/* Define to 1 if you have the `putenv' function. */
+#undef HAVE_PUTENV
 
-/*  Define this if you want to use PAM (Pluggable Authentication Modules)
- *  to lock/unlock the screen, instead of standard /etc/passwd authentication.
- */
-#undef HAVE_PAM
+/* Define this if you have the Resize and Rotate extension. This is standard
+   on sufficiently-recent XFree86 systems, and possibly elsewhere. (It's
  available if the file /usr/include/X11/extensions/Xrandr.h exists.) */
+#undef HAVE_RANDR
 
-/*  If PAM is being used, this is the name of the PAM service that xscreensaver
- *  will authenticate as.  The default is "xscreensaver", which means that the
- *  PAM library will look for an "xscreensaver" line in /etc/pam.conf, or (on
- *  recent Linux systems) will look for a file called /etc/pam.d/xscreensaver.
- *  Some systems might already have a PAM installation that is configured for
- *  xlock, so setting this to "xlock" would also work in that case.
- */
-#define PAM_SERVICE_NAME "xscreensaver"
+/* Define this if you have the XReadDisplay extension (I think this is an
+   SGI-only thing; it's in <X11/extensions/readdisplay.h>.) A few of the
+   screenhacks will take advantage of this if it's available. */
+#undef HAVE_READ_DISPLAY_EXTENSION
 
-/* Define if you have PAM and pam_strerror() requires two arguments.  */
-#undef PAM_STRERROR_TWO_ARGS
+/* Define to 1 if you have the `realpath' function. */
+#undef HAVE_REALPATH
 
-/*  Define this if your system uses `shadow' passwords, that is, the passwords
- *  live in /etc/shadow instead of /etc/passwd, and one reads them with
- *  getspnam() instead of getpwnam().  (Note that SCO systems do some random
- *  other thing; others might as well.  See the ifdefs in driver/passwd-pwent.c
- *  if you're having trouble related to reading passwords.)
- */
+/* Define to 1 if you have the `sbrk' function. */
+#undef HAVE_SBRK
+
+/* Define to 1 if you have the `select' function. */
+#undef HAVE_SELECT
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define to 1 if you have the `setlocale' function. */
+#undef HAVE_SETLOCALE
+
+/* Define to 1 if you have the `setpriority' function. */
+#undef HAVE_SETPRIORITY
+
+/* Define to 1 if you have the `setrlimit' function. */
+#undef HAVE_SETRLIMIT
+
+/* Define this if you have the SGI SCREEN_SAVER extension. This is standard on
+   Irix systems, and not available elsewhere. */
+#undef HAVE_SGI_SAVER_EXTENSION
+
+/* Define this if you have the SGI-VIDEO-CONTROL extension. This is standard
+   on Irix systems, and not available elsewhere. */
+#undef HAVE_SGI_VC_EXTENSION
+
+/* Define this if your system uses 'shadow' passwords, that is, the passwords
+   live in /etc/shadow instead of /etc/passwd, and one reads them with
+   getspnam() instead of getpwnam(). (Note that SCO systems do some random
+   other thing; others might as well. See the ifdefs in driver/passwd-pwent.c
+   if you're having trouble related to reading passwords.) */
 #undef HAVE_SHADOW_PASSWD
 
-/*  Define this if your system is Digital or SCO Unix with so-called ``Enhanced
-    Security'', that is, the passwords live in /tcb/files/auth/<x>/<xyz> 
-    instead of in /etc/passwd, and one reads them with getprpwnam() instead 
-    of getpwnam().
- */
-#undef HAVE_ENHANCED_PASSWD
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
 
-/*  Define this if your system is Solaris with ``adjunct'' passwords (this is
-    the version where one gets at the passwords with getpwanam() instead of
-    getpwnam().)  I haven't tested this one, let me know if it works.
- */
-#undef HAVE_ADJUNCT_PASSWD
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
 
-/*  Define this if you are running HPUX with so-called ``Secure Passwords'' 
-    (if you have /usr/include/hpsecurity.h, you probably have this.)  I
-    haven't tested this one, let me know if it works.
- */
-#undef HAVE_HPUX_PASSWD
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
 
-/*  Define this if you are on a system that supports the VT_LOCKSWITCH and
-    VT_UNLOCKSWITCH ioctls.  If this is defined, then when the screen is
-    locked, switching to another virtual terminal will also be prevented.
-    That is, the whole console will be locked, rather than just the VT on
-    which X is running.  (Well, that's the theory anyway -- in practice,
-    I haven't yet figured out how to make that work.)
- */
-#undef HAVE_VT_LOCKSWITCH
+/* Define to 1 if you have the `strcasecmp' function. */
+#undef HAVE_STRCASECMP
 
+/* Define to 1 if you have the `strchr' function. */
+#undef HAVE_STRCHR
 
-/* Define this if you the openlog(), syslog(), and closelog() functions.
-   This is used for logging failed login attempts.
- */
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `syslog' function. */
 #undef HAVE_SYSLOG
 
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+#undef HAVE_SYS_DIR_H
 
-/* *************************************************************************
-                            OTHER C ENVIRONMENT JUNK
-   ************************************************************************* */
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+#undef HAVE_SYS_NDIR_H
 
-/* Define this to void* if you're using X11R4 or earlier.  */
-#undef XPointer
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
 
-/* Define if you have the nice function.  */
-#undef HAVE_NICE
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
 
-/* Define if you have the setpriority function.  */
-#undef HAVE_SETPRIORITY
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
 
-/* Define to empty if the keyword does not work.  */
-#undef const
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
 
-/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
 #undef HAVE_SYS_WAIT_H
 
-/* Define as __inline if that's what the C compiler calls it.  */
-#undef inline
+/* Define to 1 if you have the `uname' function. */
+#undef HAVE_UNAME
 
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef mode_t
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
 
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef pid_t
+/* Define to 1 if you have the <util.h> header file. */
+#undef HAVE_UTIL_H
 
-/* Define as the return type of signal handlers (int or void).  */
-#undef RETSIGTYPE
+/* Define this if you are on a system that supports the VT_LOCKSWITCH and
+   VT_UNLOCKSWITCH ioctls. If this is defined, then when the screen is locked,
+   switching to another virtual terminal will also be prevented. That is, the
+   whole console will be locked, rather than just the VT on which X is
+   running. (Well, that's the theory anyway -- in practice, I haven't yet
+   figured out how to make that work.) */
+#undef HAVE_VT_LOCKSWITCH
 
-/* Define to `unsigned' if <sys/types.h> doesn't define.  */
-#undef size_t
+/* Define this if you have the XF86MiscSetGrabKeysState function (which allows
+   the Ctrl-Alt-KP_star and Ctrl-Alt-KP_slash key sequences to be temporarily
+   disabled. Sadly, it doesn't affect Ctrl-Alt-BS or Ctrl-Alt-F1.) */
+#undef HAVE_XF86MISCSETGRABKEYSSTATE
 
-/* Define if you have the ANSI C header files.  */
-#undef STDC_HEADERS
+/* Define this if you have the functions XF86VidModeGetModeLine() and
+   XF86VidModeGetViewPort(), in support of virtual desktops where the X
+   server's root window is bigger than the actual screen. This is an XFree86
+   thing, and probably doesn't exist elsewhere. (It's available if the file
+   /usr/include/X11/extensions/xf86vmode.h exists.) */
+#undef HAVE_XF86VMODE
 
-/* Define if you can safely include both <sys/time.h> and <time.h>.  */
-#undef TIME_WITH_SYS_TIME
+/* Define this if you have the functions XF86VidModeGetGamma() and
+   XF86VidModeSetGamma(), which allow clients to change the gamma response of
+   the monitor. This is an XFree86 4.0.x thing, and probably doesn't exist
+   elsewhere. (It's available if the file
+   /usr/include/X11/extensions/xf86vmode.h exists and has stuff about gamma in
+   it.) */
+#undef HAVE_XF86VMODE_GAMMA
 
-/* Define if you have the gettimeofday function.  */
-#undef HAVE_GETTIMEOFDAY
+/* Define this if you have the functions XF86VidModeGetGammaRamp() and
+   XF86VidModeSetGammaRamp(), which provide finer-grained control than
+   XF86VidMode[GS]etGamma(). These appeared in XFree86 4.1.0. */
+#undef HAVE_XF86VMODE_GAMMA_RAMP
 
-/* Define if gettimeofday requires two arguments.  */
-#undef GETTIMEOFDAY_TWO_ARGS
+/* Define this if you have the XHPDisableReset function (an HP only thing
+   which allows the Ctrl-Sh-Reset key sequence to be temporarily disabled.) */
+#undef HAVE_XHPDISABLERESET
 
-/* Define if you have the putenv function.  */
-#undef HAVE_PUTENV
+/* Define this if you have the XIDLE extension installed. If you have the
+   XIDLE extension, this is recommended. (You have this extension if the file
+   /usr/include/X11/extensions/xidle.h exists.) Turning on this flag lets
+   XScreenSaver work better with servers which support this extension; but it
+   will still work with servers which do not suport it, so it's a good idea to
+   compile in support for it if you can. */
+#undef HAVE_XIDLE_EXTENSION
 
-/* Define if you have the select function.  */
-#undef HAVE_SELECT
+/* Define this if you have the Xinerama extension. This is standard on
+   sufficiently-recent XFree86 systems, and possibly elsewhere. (It's
+   available if the file /usr/include/X11/extensions/Xinerama.h exists.) */
+#undef HAVE_XINERAMA
 
-/* Define if you have the getcwd function.  */
-#undef HAVE_GETCWD
+/* Define this if you have the XmComboBox Motif widget (Motif 2.0.) */
+#undef HAVE_XMCOMBOBOX
 
-/* Define if you have the getcwd function.  */
-#undef HAVE_GETWD
+/* Define this if you have the XML library. */
+#undef HAVE_XML
 
-/* Define if you have the realpath function.  */
-#undef HAVE_REALPATH
+/* Define this if you have the Xmu library. This is standard part of X, and if
+   your vendor doesn't ship it, you should report that as a bug. */
+#undef HAVE_XMU
 
-/* Define if you have the uname function.  */
-#undef HAVE_UNAME
+/* Define this if you have the XPM library installed. Some of the demos can
+   make use of this if it is available. */
+#undef HAVE_XPM
 
-/* Define if you have the fcntl function.  */
-#undef HAVE_FCNTL
+/* Define this if you have the X Shared Memory Extension. */
+#undef HAVE_XSHM_EXTENSION
 
-/* Define if you have the sigaction function.  */
-#undef HAVE_SIGACTION
+/* Define to 1 if you have the `__argz_count' function. */
+#undef HAVE___ARGZ_COUNT
 
-/* Define this if you have the setrlimit function. */
-#undef HAVE_SETRLIMIT
+/* Define to 1 if you have the `__argz_next' function. */
+#undef HAVE___ARGZ_NEXT
 
-/* Define if you have the sbrk function.  */
-#undef HAVE_SBRK
+/* Define to 1 if you have the `__argz_stringify' function. */
+#undef HAVE___ARGZ_STRINGIFY
 
-/* Define if you have the forkpty function.  */
-#undef HAVE_FORKPTY
+/* Define this to remove the option of locking the screen at all. */
+#undef NO_LOCKING
 
-/* Define if you have the <pty.h> header file.  */
-#undef HAVE_PTY_H
+/* This is the same as GETTEXT_PACKAGE, but for the glade generated code. */
+#undef PACKAGE
 
-/* Define if you have the <util.h> header file.  */
-#undef HAVE_UTIL_H
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
 
-/* Define if you have the <unistd.h> header file.  */
-#undef HAVE_UNISTD_H
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
 
-/* Define if you have the <locale.h> header file.  */
-#undef HAVE_LOCALE_H
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
 
-/* Define if you have the setlocale function.  */
-#undef HAVE_SETLOCALE
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
 
-/* Define if you have the <crypt.h> header file.  */
-#undef HAVE_CRYPT_H
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
 
-/* Define if you have <sys/select.h> that defines fd_set and FD_SET.  */
-#undef HAVE_SYS_SELECT_H
+/* If PAM is being used, this is the name of the PAM service that xscreensaver
+   will authenticate as. The default is "xscreensaver", which means that the
+   PAM library will look for an "xscreensaver" line in /etc/pam.conf, or (on
+   recent Linux systems) will look for a file called /etc/pam.d/xscreensaver.
+   Some systems might already have a PAM installation that is configured for
+   xlock, so setting this to "xlock" would also work in that case. */
+#undef PAM_SERVICE_NAME
 
-/* Define this if you do pings with a `struct icmp' and  a `icmp_id' slot.
- */
-#undef HAVE_ICMP
+/* Define if you have PAM and pam_strerror() requires two arguments. */
+#undef PAM_STRERROR_TWO_ARGS
 
-/* Define this if you do pings with a `struct icmphdr' and a `un.echo.id' slot.
- */
-#undef HAVE_ICMPHDR
+/* Set the name of the password helper program, if any */
+#undef PASSWD_HELPER_PROGRAM
 
-/* This is the name of the gettext package to use.
- */
-#undef GETTEXT_PACKAGE
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
 
-/* This is the same as GETTEXT_PACKAGE, but for the glade generated
- * code.
- */
-#undef PACKAGE
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at run-time.
+       STACK_DIRECTION > 0 => grows toward higher addresses
+       STACK_DIRECTION < 0 => grows toward lower addresses
+       STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
 
-/* Define this if you want to build with NLS support
- */
-#undef ENABLE_NLS
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Define this to void* if you're using X11R4 or earlier. */
+#undef XPointer
+
+/* Define to 1 if the X Window System is missing or not being used. */
+#undef X_DISPLAY_MISSING
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef mode_t
+
+/* Define to `long' if <sys/types.h> does not define. */
+#undef off_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
index 8e0fb05488fb58b2d01e3d449cdc55c7a9f09052..9873d74b8e52092117cba40d67cda11d34faed23 100755 (executable)
--- a/configure
+++ b/configure
@@ -309,7 +309,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA SET_MAKE EGREP PERL X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XML_RULE INTLTOOL_CAVES_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL GETTEXT_PACKAGE RANLIB ac_ct_RANLIB ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB MKINSTALLDIRS login_manager_tmp pkg_config gnome_open_program gnome_url_show_program INCLUDES PREFERRED_DEMO_PROGRAM ALL_DEMO_PROGRAMS SAVER_LIBS MOTIF_LIBS GTK_LIBS XML_LIBS JPEG_LIBS HACK_LIBS XPM_LIBS PTY_LIBS GL_LIBS GLE_LIBS XDPMS_LIBS XINERAMA_LIBS PASSWD_LIBS INSTALL_SETUID SETUID_HACKS INSTALL_DIRS NEED_SETUID INSTALL_PAM NEW_LOGIN_COMMAND NEW_LOGIN_COMMAND_P DEFAULT_IMAGES_P DEFAULT_IMAGE_DIRECTORY OBJCC EXES_OSX SCRIPTS_OSX MEN_OSX PASSWD_SRCS PASSWD_OBJS XMU_SRCS XMU_OBJS XMU_LIBS SAVER_GL_SRCS SAVER_GL_OBJS SAVER_GL_LIBS LOCK_SRCS LOCK_OBJS JPEG_EXES GL_EXES GL_UTIL_EXES GL_MEN GL_KLUDGE GLE_EXES GLE_KLUDGE GNOME24 GNOME22 NOGNOME HACKDIR GTK_DATADIR PO_DATADIR HACK_CONF_DIR GTK_EXTRA_OBJS APPDEFAULTS DEPEND DEPEND_FLAGS DEPEND_DEFINES LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA SET_MAKE EGREP PERL X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XML_RULE INTLTOOL_CAVES_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL GETTEXT_PACKAGE RANLIB ac_ct_RANLIB ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB MKINSTALLDIRS login_manager_tmp pkg_config gnome_open_program gnome_url_show_program INCLUDES PREFERRED_DEMO_PROGRAM ALL_DEMO_PROGRAMS SAVER_LIBS MOTIF_LIBS GTK_LIBS XML_LIBS JPEG_LIBS HACK_LIBS XPM_LIBS PTY_LIBS GL_LIBS GLE_LIBS XDPMS_LIBS XINERAMA_LIBS PASSWD_LIBS INSTALL_SETUID SETUID_HACKS INSTALL_DIRS NEED_SETUID INSTALL_PAM NEW_LOGIN_COMMAND NEW_LOGIN_COMMAND_P DEFAULT_IMAGES_P DEFAULT_IMAGE_DIRECTORY DEFAULT_TEXT_FILE OBJCC EXES_OSX SCRIPTS_OSX MEN_OSX PASSWD_SRCS PASSWD_OBJS XMU_SRCS XMU_OBJS XMU_LIBS SAVER_GL_SRCS SAVER_GL_OBJS SAVER_GL_LIBS LOCK_SRCS LOCK_OBJS JPEG_EXES GL_EXES GL_UTIL_EXES GL_MEN GL_KLUDGE GLE_EXES GLE_KLUDGE GNOME24 GNOME22 NOGNOME HACKDIR GTK_DATADIR PO_DATADIR HACK_CONF_DIR GTK_EXTRA_OBJS APPDEFAULTS DEPEND DEPEND_FLAGS DEPEND_DEFINES LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -348,7 +348,7 @@ libdir='${exec_prefix}/lib'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 infodir='${prefix}/info'
-mandir='${prefix}/man'
+mandir=\${datadir}/man
 
 ac_prev=
 for ac_option
@@ -857,7 +857,7 @@ Optional Packages:
 
 Installation options:
   --with-hackdir=DIR      Where to install the hundreds of demo executables.
-                          Default: `EPREFIX/lib/xscreensaver/'
+                          Default: `PREFIX/libexec/xscreensaver/'
   --with-configdir=DIR    Where to install the data files that describe each
                           of the display modes to the GUI.
                           Default: `PREFIX/share/xscreensaver/config/'
@@ -886,6 +886,9 @@ Screen blanking and idle-detection options:
   --with-proc-interrupts  Include support for consulting the /proc/interrupts
                           file to notice keyboard activity.
   --with-pam              Include support for PAM (Pluggable Auth Modules.)
+  --with-pam-service-name=NAME
+                          NAME is the name of the PAM service that
+                          xscreensaver will authenticate as.
   --with-kerberos         Include support for Kerberos authentication.
   --with-shadow           Include support for shadow password authentication.
   --with-passwd-helper    Include support for an external password
@@ -913,8 +916,9 @@ Graphics options:
   --with-xshm-ext         Include support for the Shared Memory extension.
   --with-xdbe-ext         Include support for the DOUBLE-BUFFER extension.
   --with-readdisplay      Include support for the XReadDisplay extension.
-  --with-image-directory=DIR  By default, some screen savers may load
-                          random images out of this directory.
+  --with-image-directory=DIR  By default, some demos may display random images
+                          from this directory.
+  --with-text-file=FILE   By default, some demos may display this file.
   --with-setuid-hacks     Allow some demos to be installed `setuid root'
                           (which is needed in order to ping other hosts.)
 
@@ -1371,6 +1375,172 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 echo "current directory: `pwd`"
 echo "command line was: $0 $@"
+
+###############################################################################
+#
+#       Autoheader stuff
+#
+###############################################################################
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 # After checking to see that --srcdir is correct (which AC_INIT does)
@@ -7125,17 +7295,19 @@ fi
 
 
 GETTEXT_PACKAGE=xscreensaver
+
 cat >>confdefs.h <<_ACEOF
 #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
 _ACEOF
 
+
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE "$GETTEXT_PACKAGE"
 _ACEOF
 
 
 
-ALL_LINGUAS="ca da de es et fi fr hu it ja ko nl no pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
+ALL_LINGUAS="ca da de es et fi fr hu it ja ko nb nl no pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
@@ -12110,6 +12282,15 @@ else
 fi;
 
 
+# Check whether --with-pam_service_name or --without-pam_service_name was given.
+if test "${with_pam_service_name+set}" = set; then
+  withval="$with_pam_service_name"
+  pam_service_name="$withval"
+else
+  pam_service_name="xscreensaver"
+fi;
+
+
    case "$with_pam" in
     yes) ;;
     no)  ;;
@@ -12221,6 +12402,11 @@ echo "${ECHO_T}$ac_cv_pam" >&6
 #define HAVE_PAM 1
 _ACEOF
 
+    cat >>confdefs.h <<_ACEOF
+#define PAM_SERVICE_NAME "$pam_service_name"
+_ACEOF
+
+
     PASSWD_LIBS="${PASSWD_LIBS} -lpam"
 
     # libpam typically requires dlopen and dlsym.  On FreeBSD,
@@ -15926,7 +16112,7 @@ if test "${ac_cv_mesagl_version_string+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15933 "configure"
+#line 16119 "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
 #ifndef MESA_MAJOR_VERSION
@@ -17952,7 +18138,8 @@ fi
 
 ###############################################################################
 #
-#       Check for pty support for 'phosphor'
+#       Check for pty support: this allows 'phosphor' and 'apple2'
+#      to run curses-based programs, or be used as terminal windows.
 #
 ###############################################################################
 
@@ -19106,6 +19293,79 @@ if test -z "$DEFAULT_IMAGE_DIRECTORY" ; then
 fi
 
 
+###############################################################################
+#
+#       Pick a text file to use as the default of the "textFile" preference.
+#      Any old file will do, but preferably one that will make interesting
+#      shapes when displayed by "starwars" and "fontglide".
+#
+###############################################################################
+
+have_textfile=no
+with_textfile_req=unspecified
+
+
+# Check whether --with-text-file or --without-text-file was given.
+if test "${with_text_file+set}" = set; then
+  withval="$with_text_file"
+  with_textfile="$withval"; with_textfile_req="$withval"
+else
+  with_textfile=yes
+fi;
+# no HANDLE_X_PATH_ARG for this one
+
+case "$with_textfile" in
+  /*)
+    # absolute path
+    echo "$as_me:$LINENO: checking for image directory $with_textfile" >&5
+echo $ECHO_N "checking for image directory $with_textfile... $ECHO_C" >&6
+    if test -d "$with_textfile" ; then
+      echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+    else
+      echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+      with_textfile=""
+    fi
+  ;;
+  yes)
+    with_textfile=""
+
+    #### Could use some more defaults here...
+    for f in \
+      "/usr/X11R6/lib/X11/doc/README"          \
+      "/usr/share/doc/xserver-common/copyright"        \
+      "/usr/X11R6/README"                      \
+    ; do
+      if test -z "$with_textfile"; then
+        echo "$as_me:$LINENO: checking for text file $f" >&5
+echo $ECHO_N "checking for text file $f... $ECHO_C" >&6
+        if test -f "$f" ; then
+          echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+          with_textfile="$f"
+        else
+          echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+        fi
+      fi
+    done
+
+  ;;
+  no)
+    with_textfile=""
+  ;;
+
+  *)
+    echo "error: must be an absolute path: --with-image-directory=$with_textfile_req"
+    exit 1
+  ;;
+esac
+ac_cv_textfile="$with_textfile"
+
+DEFAULT_TEXT_FILE="$ac_cv_textfile"
+
+
 ###############################################################################
 #
 #       Check whether it's ok to install some hacks as setuid (e.g., "sonar")
@@ -19405,6 +19665,7 @@ INCLUDES=`echo "$INCLUDES" | sed 's@ -I${prefix}/include@@g;'`
 
 
 
+
 
 
 APPDEFAULTS=$ac_x_app_defaults
@@ -20143,6 +20404,7 @@ s,@NEW_LOGIN_COMMAND@,$NEW_LOGIN_COMMAND,;t t
 s,@NEW_LOGIN_COMMAND_P@,$NEW_LOGIN_COMMAND_P,;t t
 s,@DEFAULT_IMAGES_P@,$DEFAULT_IMAGES_P,;t t
 s,@DEFAULT_IMAGE_DIRECTORY@,$DEFAULT_IMAGE_DIRECTORY,;t t
+s,@DEFAULT_TEXT_FILE@,$DEFAULT_TEXT_FILE,;t t
 s,@OBJCC@,$OBJCC,;t t
 s,@EXES_OSX@,$EXES_OSX,;t t
 s,@SCRIPTS_OSX@,$SCRIPTS_OSX,;t t
index d9b88620782cc9cdc7c5a57591570eb96582d78f..7889de45e9d4af2f13b630688f2caa84773db59c 100644 (file)
@@ -8,6 +8,282 @@ AC_CONFIG_HEADER(config.h)
 echo "current directory: `pwd`"
 echo "command line was: $0 $@"
 
+###############################################################################
+#
+#       Autoheader stuff
+#
+###############################################################################
+
+AH_TOP([
+/* config.h.in --- xscreensaver, Copyright (c) 1998-2000 Jamie Zawinski.
+ *
+ *  The best way to set these parameters is by running the included `configure'
+ *  script.  That examines your system, and generates `config.h' from 
+ *  `config.h.in'.
+ *
+ *  If something goes very wrong, you can edit `config.h' directly, but beware
+ *  that your changes will be lost if you ever run `configure' again.
+ */
+])
+
+AH_TEMPLATE([HAVE_READ_DISPLAY_EXTENSION],
+           [Define this if you have the XReadDisplay extension (I think
+             this is an SGI-only thing; it's in
+             <X11/extensions/readdisplay.h>.) A few of the screenhacks will
+             take advantage of this if it's available.])
+
+AH_TEMPLATE([HAVE_XHPDISABLERESET],
+           [Define this if you have the XHPDisableReset function (an HP only
+           thing which allows the Ctrl-Sh-Reset key sequence to be
+           temporarily disabled.)])
+
+AH_TEMPLATE([HAVE_XIDLE_EXTENSION],
+           [Define this if you have the XIDLE extension installed. If you
+           have the XIDLE extension, this is recommended.  (You have this
+           extension if the file /usr/include/X11/extensions/xidle.h
+           exists.) Turning on this flag lets XScreenSaver work better with
+           servers which support this extension; but it will still work
+           with servers which do not suport it, so it's a good idea to
+           compile in support for it if you can.])
+
+AH_TEMPLATE([HAVE_MIT_SAVER_EXTENSION],
+           [Define this if you have the MIT-SCREEN-SAVER extension
+            installed.  See the caveats about this extension, above.
+            (It's available if /usr/include/X11/extensions/scrnsaver.h
+            exists.)])
+
+AH_TEMPLATE([HAVE_SGI_SAVER_EXTENSION],
+           [Define this if you have the SGI SCREEN_SAVER extension.  This is
+           standard on Irix systems, and not available elsewhere.])
+
+AH_TEMPLATE([HAVE_SGI_VC_EXTENSION],
+           [Define this if you have the SGI-VIDEO-CONTROL extension.  This
+           is standard on Irix systems, and not available elsewhere.])
+
+AH_TEMPLATE([HAVE_DPMS_EXTENSION],
+           [Define this if you have the XDPMS extension.  This is standard
+           on sufficiently-recent XFree86 systems, and possibly elsewhere. 
+           (It's available if the file /usr/include/X11/extensions/dpms.h
+           exists.)])
+
+AH_TEMPLATE([HAVE_XF86VMODE],
+           [Define this if you have the functions XF86VidModeGetModeLine()
+           and XF86VidModeGetViewPort(), in support of virtual desktops
+           where the X server's root window is bigger than the actual
+           screen.  This is an XFree86 thing, and probably doesn't exist
+           elsewhere.  (It's available if the file
+           /usr/include/X11/extensions/xf86vmode.h exists.)])
+
+AH_TEMPLATE([HAVE_XF86VMODE_GAMMA],
+           [Define this if you have the functions XF86VidModeGetGamma() and
+           XF86VidModeSetGamma(), which allow clients to change the gamma
+           response of the monitor.  This is an XFree86 4.0.x thing, and
+           probably doesn't exist elsewhere.  (It's available if the file
+           /usr/include/X11/extensions/xf86vmode.h exists and has stuff about
+           gamma in it.)])
+
+AH_TEMPLATE([HAVE_XF86VMODE_GAMMA_RAMP],
+           [Define this if you have the functions XF86VidModeGetGammaRamp()
+           and XF86VidModeSetGammaRamp(), which provide finer-grained
+           control than XF86VidMode[GS]etGamma().  These appeared in
+           XFree86 4.1.0.])
+
+AH_TEMPLATE([HAVE_XINERAMA],
+           [Define this if you have the Xinerama extension.  This is
+           standard on sufficiently-recent XFree86 systems, and possibly
+           elsewhere.  (It's available if the file
+           /usr/include/X11/extensions/Xinerama.h exists.)])
+
+AH_TEMPLATE([HAVE_XF86MISCSETGRABKEYSSTATE],
+           [Define this if you have the XF86MiscSetGrabKeysState function
+           (which allows the Ctrl-Alt-KP_star and Ctrl-Alt-KP_slash key
+           sequences to be temporarily disabled.  Sadly, it doesn't affect
+           Ctrl-Alt-BS or Ctrl-Alt-F1.)])
+
+AH_TEMPLATE([HAVE_RANDR],
+           [Define this if you have the Resize and Rotate extension.
+           This is standard on sufficiently-recent XFree86 systems, and
+           possibly elsewhere.  (It's available if the file
+           /usr/include/X11/extensions/Xrandr.h exists.)])
+
+AH_TEMPLATE([HAVE_PROC_INTERRUPTS],
+           [Define this if you have a Linux-like /proc/interrupts file which
+           can be examined to determine when keyboard activity has
+           occurred.])
+
+AH_TEMPLATE([HAVE_MOTIF],[Define this if you have Motif.])
+
+AH_TEMPLATE([HAVE_XMCOMBOBOX],
+           [Define this if you have the XmComboBox Motif widget (Motif 2.0.)])
+
+AH_TEMPLATE([HAVE_GTK],[Define this if you have Gtk (any version.)])
+AH_TEMPLATE([HAVE_GTK2],[Define this if you have Gtk 2.x.])
+
+AH_TEMPLATE([HAVE_CRAPPLET],
+           [Define this if you have Gnome and want to build support for the
+           xscreensaver control panel in the Gnome Control Center
+           (gnomecc).  (This is needed only with Gtk 1.x.)])
+
+AH_TEMPLATE([HAVE_CRAPPLET_IMMEDIATE],
+           [Define this if HAVE_CRAPPLET is defined, and the function
+           capplet_widget_changes_are_immediate() is available.])
+
+AH_TEMPLATE([HAVE_XML],[Define this if you have the XML library.])
+
+AH_TEMPLATE([HAVE_OLD_XML_HEADERS],
+           [Define this if you have the XML library headers in their old,
+           non-namespaced location (you lack the gnome-xml/libxml symlink)])
+
+AH_TEMPLATE([HAVE_XPM],
+           [Define this if you have the XPM library installed.  Some of the
+           demos can make use of this if it is available.])
+
+AH_TEMPLATE([HAVE_GDK_PIXBUF],
+           [Define this if you have the GDK_Pixbuf library installed.  Some
+           of the demos can make use of this if it is available.])
+
+AH_TEMPLATE([HAVE_JPEGLIB],
+           [Define this if you have the Independent JPEG Group's JPEG
+           library installed.  Some of the demos can make use of this if it
+           is available.])
+
+AH_TEMPLATE([HAVE_XMU],
+           [Define this if you have the Xmu library.  This is standard part
+           of X, and if your vendor doesn't ship it, you should report that
+           as a bug.])
+
+AH_TEMPLATE([HAVE_GL],
+           [Define this if you have OpenGL.  Some of the demos require it,
+           so if you don't have it, then those particular demos won't be
+           built.  (This won't affect the screen saver as a whole.)])
+
+AH_TEMPLATE([HAVE_MESA_GL],
+           [Define this if you have OpenGL, but it's the MesaGL variant. 
+           (The libraries have different names.) (HAVE_GL should be defined
+           too.)])
+
+AH_TEMPLATE([HAVE_GLBINDTEXTURE],
+           [Define this if your version of OpenGL has the glBindTexture()
+           routine.  This is the case for OpenGL 1.1, but not for OpenGL
+           1.0.])
+
+AH_TEMPLATE([HAVE_GLE],
+           [Define this if you have the -lgle and -lmatrix libraries (GL 
+           extrusion.)])
+
+AH_TEMPLATE([HAVE_GLE3],[Define this if you have the -lgle from GLE version 3])
+
+AH_TEMPLATE([HAVE_XSHM_EXTENSION],
+           [Define this if you have the X Shared Memory Extension.])
+
+AH_TEMPLATE([HAVE_DOUBLE_BUFFER_EXTENSION],
+           [Define this if you have the X Double Buffer Extension.])
+
+AH_TEMPLATE([FORTUNE_PROGRAM],
+           [Some screenhacks like to run an external program to generate
+           random pieces of text; set this to the one you like.  Note that
+           this is just the default; X resources can be used to override
+           it.])
+
+AH_TEMPLATE([PASSWD_HELPER_PROGRAM],
+           [Set the name of the password helper program, if any])
+
+AH_TEMPLATE([NO_LOCKING],
+           [Define this to remove the option of locking the screen at all.])
+
+AH_TEMPLATE([HAVE_KERBEROS],
+           [Define this if you want to use Kerberos authentication to
+           lock/unlock the screen instead of your local password.  This
+           currently uses Kerberos V4, but a V5 server with V4
+           compatibility will work.  WARNING: DO NOT USE AFS string-to-key
+           passwords with this option. This option currently *only* works
+           with standard Kerberos des_string_to_key.  If your password is
+           an AFS password and not a kerberos password, it will not
+           authenticate properly. See the comments in driver/kpasswd.c for
+           more information if you need it.])
+
+AH_TEMPLATE([HAVE_KERBEROS5],
+           [Define this if you have Kerberos 5, meaning we need to use the
+           Kerberos 4 compatibility layer.])
+
+AH_TEMPLATE([HAVE_PAM],
+           [Define this if you want to use PAM (Pluggable Authentication
+           Modules) to lock/unlock the screen, instead of standard
+           /etc/passwd authentication.])
+
+AH_TEMPLATE([PAM_SERVICE_NAME],
+           [If PAM is being used, this is the name of the PAM service that
+           xscreensaver will authenticate as.  The default is
+           "xscreensaver", which means that the PAM library will look for
+           an "xscreensaver" line in /etc/pam.conf, or (on recent Linux
+           systems) will look for a file called /etc/pam.d/xscreensaver. 
+           Some systems might already have a PAM installation that is
+           configured for xlock, so setting this to "xlock" would also work
+           in that case.])
+
+AH_TEMPLATE([PAM_STRERROR_TWO_ARGS],
+           [Define if you have PAM and pam_strerror() requires two
+           arguments.])
+
+AH_TEMPLATE([HAVE_SHADOW_PASSWD],
+           [Define this if your system uses 'shadow' passwords, that is, the
+           passwords live in /etc/shadow instead of /etc/passwd, and one
+           reads them with getspnam() instead of getpwnam().  (Note that
+           SCO systems do some random other thing; others might as well. 
+           See the ifdefs in driver/passwd-pwent.c if you're having trouble
+           related to reading passwords.)])
+
+AH_TEMPLATE([HAVE_ENHANCED_PASSWD],
+           [Define this if your system is Digital or SCO Unix with so-called
+           ``Enhanced Security'', that is, the passwords live in
+           /tcb/files/auth/<x>/<xyz> instead of in /etc/passwd, and one
+           reads them with getprpwnam() instead of getpwnam().])
+
+AH_TEMPLATE([HAVE_ADJUNCT_PASSWD],
+           [Define this if your system is Solaris with ``adjunct'' passwords
+           (this is the version where one gets at the passwords with
+           getpwanam() instead of getpwnam().) I haven't tested this one,
+           let me know if it works.])
+
+AH_TEMPLATE([HAVE_HPUX_PASSWD],
+           [Define this if you are running HPUX with so-called ``Secure
+           Passwords'' (if you have /usr/include/hpsecurity.h, you probably
+           have this.) I haven't tested this one, let me know if it works.])
+
+AH_TEMPLATE([HAVE_VT_LOCKSWITCH],
+           [Define this if you are on a system that supports the
+           VT_LOCKSWITCH and VT_UNLOCKSWITCH ioctls.  If this is defined,
+           then when the screen is locked, switching to another virtual
+           terminal will also be prevented.  That is, the whole console
+           will be locked, rather than just the VT on which X is running. 
+           (Well, that's the theory anyway -- in practice, I haven't yet
+           figured out how to make that work.)])
+
+AH_TEMPLATE([HAVE_SYSLOG],
+           [Define this if you the openlog(), syslog(), and closelog()
+           functions.  This is used for logging failed login attempts.])
+
+AH_TEMPLATE([HAVE_ICMP],
+           [Define this if you do pings with a `struct icmp' and an
+            `icmp_id' slot.])
+
+AH_TEMPLATE([HAVE_ICMPHDR],
+           [Define this if you do pings with a `struct icmphdr' and an
+            `un.echo.id' slot.])
+
+AH_TEMPLATE([HAVE_FORKPTY],
+           [Define this if you have the 'forkpty' function:
+            This allows 'phosphor' and 'apple2' to run curses-based
+            programs, or be used as terminal windows.])
+
+AH_TEMPLATE([HAVE_GETTIMEOFDAY],
+           [Define this if you have the gettimeofday function.])
+
+AH_TEMPLATE([GETTIMEOFDAY_TWO_ARGS],
+           [Define this if gettimeofday() takes two arguments.])
+
+AH_TEMPLATE([XPointer],
+           [Define this to void* if you're using X11R4 or earlier.])
 
 # After checking to see that --srcdir is correct (which AC_INIT does)
 # check for some random other files that come later in the tar file,
@@ -877,11 +1153,14 @@ AC_MSG_RESULT($ac_macosx)
 
 AC_PROG_INTLTOOL
 GETTEXT_PACKAGE=xscreensaver
-AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
-AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE")
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
+                  [This is the name of the gettext package to use.])
+AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE",
+                  [This is the same as GETTEXT_PACKAGE, but for the glade
+                  generated code.])
 AC_SUBST(GETTEXT_PACKAGE)
 
-ALL_LINGUAS="ca da de es et fi fr hu it ja ko nl no pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
+ALL_LINGUAS="ca da de es et fi fr hu it ja ko nb nl no pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
 AM_GLIB_GNU_GETTEXT
 MKINSTALLDIRS="$INSTALL_DIRS"
 
@@ -964,7 +1243,7 @@ AC_ARG_WITH(hackdir,[
 
 Installation options:
   --with-hackdir=DIR      Where to install the hundreds of demo executables.
-                          Default: `EPREFIX/lib/xscreensaver/'],
+                          Default: `PREFIX/libexec/xscreensaver/'],
   [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
 
 if test x"$with_hackdir" = xyes; then
@@ -1550,6 +1829,12 @@ AC_ARG_WITH(pam,
 [  --with-pam              Include support for PAM (Pluggable Auth Modules.)],
   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=$with_pam_default])
 
+AC_ARG_WITH([pam_service_name],
+           AC_HELP_STRING([--with-pam-service-name=NAME],
+                          [NAME is the name of the PAM service that
+                          xscreensaver will authenticate as.]),
+           [pam_service_name="$withval"],[pam_service_name="xscreensaver"])
+
 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
 
 if test "$enable_locking" = yes -a "$with_pam" = yes; then
@@ -1560,6 +1845,8 @@ if test "$enable_locking" = yes -a "$with_pam" = yes; then
   if test "$ac_cv_pam" = yes ; then
     have_pam=yes
     AC_DEFINE(HAVE_PAM)
+    AC_DEFINE_UNQUOTED(PAM_SERVICE_NAME,"$pam_service_name")
+    
     PASSWD_LIBS="${PASSWD_LIBS} -lpam"
 
     # libpam typically requires dlopen and dlsym.  On FreeBSD,
@@ -2811,7 +3098,8 @@ fi
 
 ###############################################################################
 #
-#       Check for pty support for 'phosphor'
+#       Check for pty support: this allows 'phosphor' and 'apple2'
+#      to run curses-based programs, or be used as terminal windows.
 #
 ###############################################################################
 
@@ -2950,8 +3238,8 @@ have_imagedir=no
 with_imagedir_req=unspecified
 
 AC_ARG_WITH(image-directory,
-[  --with-image-directory=DIR  By default, some screen savers may load
-                          random images out of this directory.],
+[  --with-image-directory=DIR  By default, some demos may display random images
+                          from this directory.],
   [with_imagedir="$withval"; with_imagedir_req="$withval"],
   [with_imagedir=yes])
 # no HANDLE_X_PATH_ARG for this one
@@ -3007,6 +3295,69 @@ if test -z "$DEFAULT_IMAGE_DIRECTORY" ; then
 fi
 
 
+###############################################################################
+#
+#       Pick a text file to use as the default of the "textFile" preference.
+#      Any old file will do, but preferably one that will make interesting
+#      shapes when displayed by "starwars" and "fontglide".
+#
+###############################################################################
+
+have_textfile=no
+with_textfile_req=unspecified
+
+AC_ARG_WITH(text-file,
+[  --with-text-file=FILE   By default, some demos may display this file.],
+  [with_textfile="$withval"; with_textfile_req="$withval"],
+  [with_textfile=yes])
+# no HANDLE_X_PATH_ARG for this one
+
+case "$with_textfile" in
+  /*)
+    # absolute path
+    AC_MSG_CHECKING([for image directory $with_textfile])
+    if test -d "$with_textfile" ; then
+      AC_MSG_RESULT(yes)
+    else
+      AC_MSG_RESULT(no)
+      with_textfile=""
+    fi
+  ;;
+  yes)
+    with_textfile=""
+
+    #### Could use some more defaults here...
+    for f in \
+      "/usr/X11R6/lib/X11/doc/README"          \
+      "/usr/share/doc/xserver-common/copyright"        \
+      "/usr/X11R6/README"                      \
+    ; do
+      if test -z "$with_textfile"; then
+        AC_MSG_CHECKING([for text file $f])
+        if test -f "$f" ; then
+          AC_MSG_RESULT(yes)
+          with_textfile="$f"
+        else
+          AC_MSG_RESULT(no)
+        fi
+      fi
+    done
+
+  ;;
+  no)
+    with_textfile=""
+  ;;
+
+  *)
+    echo "error: must be an absolute path: --with-image-directory=$with_textfile_req"
+    exit 1
+  ;;
+esac
+ac_cv_textfile="$with_textfile"
+
+DEFAULT_TEXT_FILE="$ac_cv_textfile"
+
+
 ###############################################################################
 #
 #       Check whether it's ok to install some hacks as setuid (e.g., "sonar")
@@ -3228,6 +3579,7 @@ AC_SUBST(NEW_LOGIN_COMMAND)
 AC_SUBST(NEW_LOGIN_COMMAND_P)
 AC_SUBST(DEFAULT_IMAGES_P)
 AC_SUBST(DEFAULT_IMAGE_DIRECTORY)
+AC_SUBST(DEFAULT_TEXT_FILE)
 
 AC_SUBST(OBJCC)
 AC_SUBST(EXES_OSX)
index aba8fd87bd2ea68c0ad84c521208f30dfbadaa53..aa02e51b48bf70ced9a4fb0dca200c8fbf0a105a 100644 (file)
@@ -350,24 +350,42 @@ munge-scripts: $(SCRIPTS)
          if cmp -s $(srcdir)/$$program $$tmp ; then                    \
            true ;                                                      \
          else                                                          \
-           echo "$$program: setting interpreter to $$perl" ;           \
+           echo "$$program: setting interpreter to $$perl" >&2 ;       \
            cat $$tmp > ./$$program ;                                   \
          fi ;                                                          \
        done ;                                                          \
        rm -f $$tmp
 
+# When installing man pages, we install "foo.man" as "foo.N" and update
+# the .TH line in the installed file with one like
+#
+#     .TH XScreenSaver N "V.VV (DD-MMM-YYYY)" "X Version 11"
+#
+# where N is the manual section suffix.
+#
 install-man: $(MEN)
        @men="$(MEN)" ;                                                 \
+       U=$(UTILS_SRC)/version.h ;                                      \
+       V=`sed -n 's/.*\([0-9]\.[^)]*)\).*/\1/p' < $$U` ;               \
+       T=/tmp/xs$$$$.$(mansuffix) ;                                    \
+       TH=".TH XScreenSaver $(mansuffix) \"$$V\" \"X Version 11\"" ;   \
+       echo "installing man pages: $$TH" ;                             \
+                                                                       \
        if [ ! -d $(install_prefix)$(manNdir) ]; then                   \
          $(INSTALL_DIRS) $(install_prefix)$(manNdir) ;                 \
         fi ;                                                           \
+                                                                       \
        for man in $$men; do                                            \
          instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
+         sed -e "s/^\.TH.*/$$TH/"                                      \
+             -e 's/^\(\.BR xscr.*(\)[^()]\(.*\)/\1$(mansuffix)\2/'     \
+           < $(srcdir)/$$man > $$T ;                                   \
          echo $(INSTALL_DATA) $(srcdir)/$$man                          \
           $(install_prefix)$(manNdir)/$$instname ;                     \
-         $(INSTALL_DATA) $(srcdir)/$$man                               \
+         $(INSTALL_DATA) $$T                                           \
            $(install_prefix)$(manNdir)/$$instname ;                    \
-       done
+       done ;                                                          \
+       rm -f $$T
 
 uninstall-program:
        @for program in $(EXES) $(SCRIPTS); do                          \
@@ -382,8 +400,8 @@ uninstall-man:
        @men="$(MEN)" ;                                                 \
        for man in $$men; do                                            \
          instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
-         echo rm -f $(install_prefix)$(manNdir)/$$instname ;           \
-         rm -f $(install_prefix)$(manNdir)/$$instname ;                \
+         echo rm -f $(install_prefix)$(manNdir)/$$instname* ;          \
+              rm -f $(install_prefix)$(manNdir)/$$instname* ;          \
        done
 
 install-pam:
@@ -543,7 +561,7 @@ install-gnome:: xscreensaver-demo.glade2
 # into /usr/share/applications/
 uninstall-gnome::
        @if [ "$(GTK_DATADIR)" != "" ]; then                                  \
-          f=screensaver-properties.desktop                                   ;\
+          f=gnome-screensaver-properties.desktop                             ;\
           echo rm -f $(install_prefix)$(GTK_APPDIR)/$$f                      ;\
                rm -f $(install_prefix)$(GTK_APPDIR)/$$f                      ;\
         fi
@@ -611,7 +629,7 @@ depend: XScreenSaver_ad.h XScreenSaver_Xm_ad.h
 # close.  This excludes dependencies on files in /usr/include, etc.  It tries
 # to include only dependencies on files which are themselves a part of this
 # package.
-distdepend: check_men update_ad_version update_man_version XScreenSaver_ad.h XScreenSaver_Xm_ad.h
+distdepend: check_men update_ad_version XScreenSaver_ad.h XScreenSaver_Xm_ad.h
        @echo updating dependencies in `pwd`/Makefile.in... ;               \
        $(DEPEND) -w 0 -f -                                                 \
        -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \
@@ -658,23 +676,6 @@ update_ad_version::
        done ;                                                              \
        rm $$T
 
-update_man_version::
-       @for S in $(MEN); do                                                \
-       U=$(UTILS_SRC)/version.h ;                                          \
-       V=`sed -n 's/.*\([0-9][0-9]*\.[0-9]*\).*/\1/p' < $$U` ;             \
-       V="`date '+%d-%b-%Y'` ($$V)" ;                                      \
-       T=/tmp/xs.$$$$ ;                                                    \
-       sed "s/^\(\.TH[^\"]*\)\"[^\"]*\"\(.*\)/\1\"$$V\"\2/"                \
-         < $$S > $$T ;                                                     \
-       if cmp -s $$S $$T ; then                                            \
-         true ;                                                            \
-       else                                                                \
-         cat $$T > $$S ;                                                   \
-         echo "updated $$S to \"$$V\"" ;                                   \
-       fi ;                                                                \
-       rm $$T ;                                                            \
-       done
-
 TAGS: tags
 tags:
        find $(srcdir) -name '*.[chly]' -print | xargs etags -a
@@ -782,6 +783,9 @@ xscreensaver-demo-Gtk: $(DEMO_OBJS) $(GTK_OBJS)
        $(GTK_LIBS) $(XPM_LIBS) $(XML_LIBS) $(INTL_LIBS) $(X_PRE_LIBS) \
        -lXt -lX11 $(XDPMS_LIBS) $(XINERAMA_LIBS) -lXext $(X_EXTRA_LIBS)
 
+demo-Gtk.o: XScreenSaver_ad.h
+demo-Xm.o:  XScreenSaver_ad_Xm.h
+
 xscreensaver-getimage: $(GETIMG_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(GETIMG_OBJS) $(GETIMG_LIBS) -lm
 
@@ -843,13 +847,13 @@ xdpyinfo: xdpyinfo.o
 
 demo-Gtk-conf.o: ../config.h
 demo-Gtk-conf.o: $(srcdir)/demo-Gtk-conf.h
+demo-Gtk.o: XScreenSaver_ad.h
 demo-Gtk.o: ../config.h
 demo-Gtk.o: $(srcdir)/demo-Gtk-conf.h
 demo-Gtk.o: $(srcdir)/demo-Gtk-support.h
 demo-Gtk.o: $(srcdir)/demo-Gtk-widgets.h
 demo-Gtk.o: $(srcdir)/prefs.h
 demo-Gtk.o: $(srcdir)/remote.h
-demo-Gtk.o: XScreenSaver_ad.h
 demo-Gtk-support.o: ../config.h
 demo-Gtk-support.o: $(srcdir)/demo-Gtk-support.h
 demo-Gtk-widgets.o: ../config.h
@@ -888,9 +892,9 @@ test-fade.o: ../config.h
 test-fade.o: $(srcdir)/prefs.h
 test-fade.o: $(srcdir)/xscreensaver.h
 test-grab.o: ../config.h
+test-passwd.o: XScreenSaver_ad.h
 test-passwd.o: ../config.h
 test-passwd.o: $(srcdir)/prefs.h
-test-passwd.o: XScreenSaver_ad.h
 test-passwd.o: $(srcdir)/xscreensaver.h
 test-randr.o: ../config.h
 test-uid.o: ../config.h
@@ -908,9 +912,9 @@ xscreensaver-command.o: $(srcdir)/remote.h
 xscreensaver-getimage.o: ../config.h
 xscreensaver-getimage.o: XScreenSaver_ad.h
 xscreensaver-getimage.o: $(srcdir)/prefs.h
+xscreensaver.o: XScreenSaver_ad.h
 xscreensaver.o: ../config.h
 xscreensaver.o: $(srcdir)/prefs.h
-xscreensaver.o: XScreenSaver_ad.h
 xscreensaver.o: $(srcdir)/xscreensaver.h
 xset.o: ../config.h
 xset.o: $(srcdir)/prefs.h
index 113f6bfbef02bfc1b1a3291114d5de5c86530071..807892d81afa1407de8b83746f26998cee30a2f3 100644 (file)
@@ -4,8 +4,8 @@
 !            a screen saver and locker for the X window system
 !                            by Jamie Zawinski
 !
-!                              version 4.21
-!                              20-Mar-2005
+!                              version 4.22
+!                              22-Jun-2005
 !
 ! See "man xscreensaver" for more info.  The latest version is always
 ! available at http://www.jwz.org/xscreensaver/
@@ -59,7 +59,7 @@
 
 *textMode:             file
 *textLiteral:          XScreenSaver
-*textFile:             /usr/X11R6/lib/X11/doc/README
+*textFile:             @DEFAULT_TEXT_FILE@
 *textProgram:          fortune
 *textURL:              http://www.livejournal.com/stats/latest-rss.bml
 
@@ -314,6 +314,7 @@ GetViewPortIsFullOfLies: False
                                substrate -root                             \n\
         "Substrate (circles)"  substrate -root -circle-percent 33          \n\
                                intermomentary -root                        \n\
+                               interaggregate -root                        \n\
                                fireworkx -root                             \n\
                                fiberlamp -root                             \n\
                                boxfit -root                                \n\
@@ -396,6 +397,10 @@ GetViewPortIsFullOfLies: False
 @GL_KLUDGE@ GL:                        boing -root -lighting -smooth               \n\
 -         GL:                  carousel -root                              \n\
 @GL_KLUDGE@ GL:                        fliptext -root                              \n\
+-         GL:                  antmaze -root                               \n\
+@GL_KLUDGE@ GL:                        tangram -root                               \n\
+@GL_KLUDGE@ GL:                        crackberg -root -flat -lit -crack             \
+                                -color random                              \n\
                                                                              \
 -                              xdaliclock -root -builtin3 -cycle           \n\
 - default-n:                   xearth -nofork -nostars -ncolors 50           \
@@ -468,6 +473,7 @@ XScreenSaver.bourneShell:           /bin/sh
 *passwd.user.label:            Username:
 *passwd.passwd.label:          Password:
 *passwd.thermometer.width:     8
+*passwd.asterisks:              True
 
 *splash.heading.label:         XScreenSaver %s
 *splash.body.label:            Copyright © 1991-2005 by
index 86afe18be424099606f2922da3987af6400f8ec5..663c37e0a36f158d0ecedc111aefdaf64e6bbaee 100644 (file)
@@ -13,7 +13,7 @@
 "*grabDesktopImages:   True",
 "*grabVideoFrames:     False",
 "*chooseRandomImages:  True",
-"*imageDirectory:      /usr/share/backgrounds/images/",
+"*imageDirectory:      /Library/Desktop Pictures/",
 "*nice:                        10",
 "*memoryLimit:         0",
 "*lock:                        False",
@@ -31,7 +31,7 @@
 "*ignoreUninstalledPrograms: False",
 "*textMode:            file",
 "*textLiteral:         XScreenSaver",
-"*textFile:            /usr/X11R6/lib/X11/doc/README",
+"*textFile:            /usr/X11R6/README",
 "*textProgram:         fortune",
 "*textURL:             http://www.livejournal.com/stats/latest-rss.bml",
 "*overlayTextForeground:       #FFFF00",
 "*demoCommand: xscreensaver-demo",
 "*prefsCommand: xscreensaver-demo -prefs",
 "*helpURL: http://www.jwz.org/xscreensaver/man.html",
-"*loadURL: gnome-open '%s'",
-"*manualCommand: gnome-terminal --title '%s manual' \
-               --command '/bin/sh -c \"man %s; read foo\"'",
+"*loadURL: firefox '%s' || mozilla '%s' || netscape '%s'",
+"*manualCommand: xterm -sb -fg black -bg gray75 -T '%s manual' \
+                   -e /bin/sh -c 'man \"%s\" ; read foo'",
 "*dateFormat:          %d-%b-%y (%a); %I:%M %p",
-"*newLoginCommand:     /bin/false",
 "*installColormap:     True",
 "*programs:                                                                  \
                 \"Qix (solid)\"        qix -root -solid -segments 100              \\n\
                                substrate -root                             \\n\
         \"Substrate (circles)\"  substrate -root -circle-percent 33          \\n\
                                intermomentary -root                        \\n\
+                               interaggregate -root                        \\n\
                                fireworkx -root                             \\n\
                                fiberlamp -root                             \\n\
                                boxfit -root                                \\n\
           GL:                  boing -root -lighting -smooth               \\n\
 -         GL:                  carousel -root                              \\n\
           GL:                  fliptext -root                              \\n\
+-         GL:                  antmaze -root                               \\n\
+          GL:                  tangram -root                               \\n\
+          GL:                  crackberg -root -flat -lit -crack             \
+                                -color random                              \\n\
                                                                              \
 -                              xdaliclock -root -builtin3 -cycle           \\n\
 - default-n:                   xearth -nofork -nostars -ncolors 50           \
 "*passwd.user.label:           Username:",
 "*passwd.passwd.label:         Password:",
 "*passwd.thermometer.width:    8",
+"*passwd.asterisks:              True",
 "*splash.heading.label:                XScreenSaver %s",
 "*splash.body.label:           Copyright © 1991-2005 by",
 "*splash.body2.label:          Jamie Zawinski <jwz@jwz.org>",
index 5d678f8c1bfbca892629a808058a526ff857d122..b45f4d2f2e130bb60174753cd945457eb37cb7c6 100644 (file)
@@ -1,5 +1,5 @@
 /* dpms.c --- syncing the X Display Power Management values
- * xscreensaver, Copyright (c) 2001 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 2001, 2005 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  * implied warranty.
  */
 
+/* Display Power Management System (DPMS.)
+
+   On XFree86 systems, "man xset" reports:
+
+       -dpms    The -dpms option disables DPMS (Energy Star) features.
+       +dpms    The +dpms option enables DPMS (Energy Star) features.
+
+       dpms flags...
+                The dpms option allows the DPMS (Energy Star)
+                parameters to be set.  The option can take up to three
+                numerical values, or the `force' flag followed by a
+                DPMS state.  The `force' flags forces the server to
+                immediately switch to the DPMS state specified.  The
+                DPMS state can be one of `standby', `suspend', or
+                `off'.  When numerical values are given, they set the
+                inactivity period before the three modes are activated.
+                The first value given is for the `standby' mode, the
+                second is for the `suspend' mode, and the third is for
+                the `off' mode.  Setting these values implicitly
+                enables the DPMS features.  A value of zero disables a
+                particular mode.
+
+   However, note that the implementation is more than a little bogus,
+   in that there is code in /usr/X11R6/lib/libXdpms.a to implement all
+   the usual server-extension-querying utilities -- but there are no
+   prototypes in any header file!  Thus, the prototypes here.  (The
+   stuff in X11/extensions/dpms.h and X11/extensions/dpmsstr.h define
+   the raw X protcol, they don't define the API to libXdpms.a.)
+
+   Some documentation:
+   Library:  ftp://ftp.x.org/pub/R6.4/xc/doc/specs/Xext/DPMSLib.ms
+   Protocol: ftp://ftp.x.org/pub/R6.4/xc/doc/specs/Xext/DPMS.ms
+ */
+
 #ifdef HAVE_CONFIG_H
 # include "config.h"
 #endif
@@ -17,7 +51,7 @@
 #include <stdio.h>
 #include <X11/Xlib.h>
 
-#ifdef HAVE_DPMS_EXTENSION
+#ifdef HAVE_DPMS_EXTENSION   /* almost the whole file */
 
 # include <X11/Xproto.h>
 # include <X11/extensions/dpms.h>
 
   /* Why this crap is not in a header file somewhere, I have no idea.  Losers!
    */
-  extern Bool DPMSQueryExtension (Display *dpy, int *event_ret, int *err_ret);
-  extern Bool DPMSCapable (Display *dpy);
-  extern Status DPMSInfo (Display *dpy, CARD16 *power_level, BOOL *state);
-  extern Status DPMSSetTimeouts (Display *dpy,
-                                 CARD16 standby, CARD16 suspend, CARD16 off);
-  extern Bool DPMSGetTimeouts (Display *dpy,
-                               CARD16 *standby, CARD16 *suspend, CARD16 *off);
+  extern Bool   DPMSQueryExtension (Display *, int *event_ret, int *err_ret);
+  extern Status DPMSGetVersion (Display *, int *major_ret, int *minor_ret);
+  extern Bool   DPMSCapable (Display *);
+  extern Status DPMSInfo (Display *, CARD16 *power_level, BOOL *state);
   extern Status DPMSEnable (Display *dpy);
   extern Status DPMSDisable (Display *dpy);
+  extern Status DPMSForceLevel (Display *, CARD16 level);
+  extern Status DPMSSetTimeouts (Display *, CARD16 standby, CARD16 suspend,
+                                 CARD16 off);
+  extern Bool   DPMSGetTimeouts (Display *, CARD16 *standby,
+                                 CARD16 *suspend, CARD16 *off);
 
 #endif /* HAVE_DPMS_EXTENSION */
 
 
 #include "xscreensaver.h"
 
+#ifdef HAVE_DPMS_EXTENSION
+
 void
 sync_server_dpms_settings (Display *dpy, Bool enabled_p,
                            int standby_secs, int suspend_secs, int off_secs,
                            Bool verbose_p)
 {
-# ifdef HAVE_DPMS_EXTENSION
-
   int event = 0, error = 0;
   BOOL o_enabled = False;
   CARD16 o_power = 0;
@@ -73,6 +109,13 @@ sync_server_dpms_settings (Display *dpy, Bool enabled_p,
 
   if (bogus_p) enabled_p = False;
 
+  /* X protocol sends these values in a CARD16, so truncate them to 16 bits.
+     This means that the maximum timeout is 18:12:15.
+   */
+  if (standby_secs > 0xFFFF) standby_secs = 0xFFFF;
+  if (suspend_secs > 0xFFFF) suspend_secs = 0xFFFF;
+  if (off_secs     > 0xFFFF) off_secs     = 0xFFFF;
+
   if (! DPMSQueryExtension (dpy, &event, &error))
     {
       if (verbose_p)
@@ -136,11 +179,78 @@ sync_server_dpms_settings (Display *dpy, Bool enabled_p,
         fprintf (stderr, "%s: set DPMS timeouts: %d %d %d.\n", blurb(),
                  standby_secs, suspend_secs, off_secs);
     }
+}
+
+Bool
+monitor_powered_on_p (saver_info *si)
+{
+  Bool result;
+  int event_number, error_number;
+  BOOL onoff = False;
+  CARD16 state;
 
-# else  /* !HAVE_DPMS_EXTENSION */
+  if (!DPMSQueryExtension(si->dpy, &event_number, &error_number))
+    /* Server doesn't know -- assume the monitor is on. */
+    result = True;
 
+  else if (!DPMSCapable(si->dpy))
+    /* Server says the monitor doesn't do power management -- so it's on. */
+    result = True;
+
+  else
+    {
+      DPMSInfo(si->dpy, &state, &onoff);
+      if (!onoff)
+       /* Server says DPMS is disabled -- so the monitor is on. */
+       result = True;
+      else
+       switch (state) {
+       case DPMSModeOn:      result = True;  break;  /* really on */
+       case DPMSModeStandby: result = False; break;  /* kinda off */
+       case DPMSModeSuspend: result = False; break;  /* pretty off */
+       case DPMSModeOff:     result = False; break;  /* really off */
+       default:              result = True;  break;  /* protocol error? */
+       }
+    }
+
+  return result;
+}
+
+void
+monitor_power_on (saver_info *si)
+{
+  if (!monitor_powered_on_p (si))
+    {
+      DPMSForceLevel(si->dpy, DPMSModeOn);
+      XSync(si->dpy, False);
+      if (!monitor_powered_on_p (si))
+       fprintf (stderr,
+       "%s: DPMSForceLevel(dpy, DPMSModeOn) did not power the monitor on?\n",
+                blurb());
+    }
+}
+
+#else  /* !HAVE_DPMS_EXTENSION */
+
+void
+sync_server_dpms_settings (Display *dpy, Bool enabled_p,
+                           int standby_secs, int suspend_secs, int off_secs,
+                           Bool verbose_p)
+{
   if (verbose_p)
     fprintf (stderr, "%s: DPMS support not compiled in.\n", blurb());
+}
+
+Bool
+monitor_powered_on_p (saver_info *si) 
+{
+  return True; 
+}
 
-# endif /* HAVE_DPMS_EXTENSION */
+void
+monitor_power_on (saver_info *si)
+{
+  return; 
 }
+
+#endif /* !HAVE_DPMS_EXTENSION */
index 8d61981f9da4e1829e08032de66dea8a377b419a..169880b1b6a993f7ead31e3206406a7150241d00 100644 (file)
@@ -97,6 +97,9 @@ struct passwd_dialog_data {
   Dimension height;
   Dimension border_width;
 
+  Bool show_stars_p; /* "I regret that I have but one asterisk for my country."
+                        -- Nathan Hale, 1776. */
+
   char *heading_label;
   char *body_label;
   char *user_label;
@@ -191,6 +194,8 @@ make_passwd_window (saver_info *si)
 
   pw->ratio = 1.0;
 
+  pw->show_stars_p = get_boolean_resource("passwd.asterisks", "Boolean");
+  
   pw->heading_label = get_string_resource ("passwd.heading.label",
                                           "Dialog.Label.Label");
   pw->body_label = get_string_resource ("passwd.body.label",
@@ -1384,6 +1389,10 @@ handle_passwd_key (saver_info *si, XKeyEvent *event)
 
   s[1] = 0;
 
+  /* Add 10% to the time remaining every time a key is pressed. */
+  pw->ratio += 0.1;
+  if (pw->ratio > 1) pw->ratio = 1;
+
   switch (*s)
     {
     case '\010': case '\177':                          /* Backspace */
@@ -1426,12 +1435,19 @@ handle_passwd_key (saver_info *si, XKeyEvent *event)
       break;
     }
 
-  i = strlen(typed_passwd);
-  stars = (char *) malloc(i+1);
-  memset (stars, '*', i);
-  stars[i] = 0;
-  update_passwd_window (si, stars, pw->ratio);
-  free (stars);
+  if (pw->show_stars_p)
+    {
+      i = strlen(typed_passwd);
+      stars = (char *) malloc(i+1);
+      memset (stars, '*', i);
+      stars[i] = 0;
+      update_passwd_window (si, stars, pw->ratio);
+      free (stars);
+    }
+  else
+    {
+      update_passwd_window (si, "", pw->ratio);
+    }
 }
 
 
index 7b23f05ab8daca018cd2f4036c0330f99da17df9..7d41d6285c9174559ff491cb13ae53e4e928a15e 100644 (file)
@@ -1,6 +1,6 @@
 /* passwd-helper.c --- verifying typed passwords with external helper program
  * written by Olaf Kirch <okir@suse.de>
- * xscreensaver, Copyright (c) 1993-2004 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1993-2005 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
 
 #ifndef NO_LOCKING  /* whole file */
 
+#include <X11/Xlib.h>          /* not used for much... */
+
+/* This file doesn't need the Xt headers, so stub these types out... */
+#undef XtPointer
+#define XtAppContext void*
+#define XrmDatabase  void*
+#define XtIntervalId void*
+#define XtPointer    void*
+#define Widget       void*
+
+#include "xscreensaver.h"
+
 #include <stdlib.h>
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif
 
-extern char *blurb(void);
-
-
 #include <stdio.h>
 #include <string.h>
 #include <sys/types.h>
@@ -51,9 +60,6 @@ extern char *blurb(void);
 
 #include <sys/wait.h>
 
-extern void block_sigchld (void);
-extern void unblock_sigchld (void);
-
 static int
 ext_run (const char *user, const char *typed_passwd, int verbose_p)
 {
index 398fc3c29e5112d7fa35cc467f19f395cdf6b39d..bb8d99265eb6379debf527f852cd73ba4067eb10 100644 (file)
@@ -75,7 +75,7 @@
  static char realm[REALM_SZ];
  static char  name[ANAME_SZ];
  static char  inst[INST_SZ];
- static char *tk_file;
+ static const char *tk_file;
 #endif /* !HAVE_DARWIN */
 
 
@@ -222,7 +222,7 @@ kerberos_passwd_valid_p (const char *typed_passwd, Bool verbose_p)
     des_string_to_key(typed_passwd, mitkey);
 
     if (krb_get_in_tkt(name, inst, realm, "krbtgt", realm, DEFAULT_TKT_LIFE,
-                      key_to_key, NULL, mitkey) != 0) {
+                      key_to_key, NULL, (char *) mitkey) != 0) {
        success = False;
     } else {
        success = True;
index a4d8103ca37db5b213c8dc9baa869b5ab57f97d3..d34d2935083470d59a65e78b99ce3c1a178ff819 100644 (file)
@@ -1590,8 +1590,8 @@ stop_the_insanity (saver_preferences *p)
 
 
   p->watchdog_timeout = p->cycle * 0.6;
-  if (p->watchdog_timeout < 30000) p->watchdog_timeout = 30000;          /* 30 secs */
-  if (p->watchdog_timeout > 3600000) p->watchdog_timeout = 3600000; /*  1 hr */
+  if (p->watchdog_timeout < 27000) p->watchdog_timeout = 27000;          /* 27 secs */
+  if (p->watchdog_timeout > 57000) p->watchdog_timeout = 57000;   /* 57 secs */
 
   if (p->pointer_hysteresis < 0)   p->pointer_hysteresis = 0;
   if (p->pointer_hysteresis > 100) p->pointer_hysteresis = 100;
index 72228a5244c7d4a2691f1bea99b7aca05777cebc..74d8318b8ea1860b7119949f5b2b861c77e69592 100644 (file)
@@ -74,6 +74,42 @@ describe_uids (saver_info *si, FILE *out)
 }
 
 
+/* Returns true if we need to call setgroups().
+
+   Without calling setgroups(), the process will retain any supplementary
+   gids associated with the uid, e.g.:
+
+       % groups root
+       root : root bin daemon sys adm disk wheel
+
+   However, setgroups() can only be called by root, and returns EPERM
+   for other users even if the call would be a no-op (e.g., setting the
+   group list to the current list.)  So, to avoid that spurious error,
+   before calling setgroups() we first check whether the current list
+   of groups contains only one element, our target group.  If so, we
+   don't need to call setgroups().
+ */
+static int
+setgroups_needed_p (uid_t target_group)
+{
+  gid_t groups[1024];
+  int n = getgroups (sizeof(groups)-1, groups);
+  if (n < 0)
+    {
+      char buf [1024];
+      sprintf (buf, "%s: getgroups(%d, ...)", blurb(), sizeof(groups)-1);
+      perror (buf);
+      return 1;
+    }
+  else if (n == 0)            /* an empty list means only egid is in effect. */
+    return 0;
+  else if (n == 1 && groups[0] == target_group)   /* one element, the target */
+    return 0;
+  else                        /* more than one, or the wrong one. */
+    return 1;
+}
+
+
 static int
 set_ids_by_number (uid_t uid, gid_t gid, char **message_ret)
 {
@@ -98,7 +134,8 @@ set_ids_by_number (uid_t uid, gid_t gid, char **message_ret)
   if (uid == (uid_t) -1) uid = (uid_t) -2;
 
   errno = 0;
-  if (setgroups (1, &gid) < 0)
+  if (setgroups_needed_p (gid) &&
+      setgroups (1, &gid) < 0)
     sgs_errno = errno ? errno : -1;
 
   errno = 0;
@@ -123,6 +160,9 @@ set_ids_by_number (uid_t uid, gid_t gid, char **message_ret)
   else
     {
       char buf [1024];
+      gid_t groups[1024];
+      int n;
+
       if (sgs_errno)
        {
          sprintf (buf, "%s: couldn't setgroups to %.100s (%ld)",
@@ -136,7 +176,25 @@ set_ids_by_number (uid_t uid, gid_t gid, char **message_ret)
               errno = sgs_errno;
               perror(buf);
             }
-       }
+
+         fprintf (stderr, "%s: effective group list: ", blurb());
+          n = getgroups (sizeof(groups)-1, groups);
+          if (n < 0)
+            fprintf (stderr, "unknown!\n");
+          else
+            {
+              int i;
+              fprintf (stderr, "[");
+              for (i = 0; i < n; i++)
+                {
+                  g = getgrgid (groups[i]);
+                  if (i > 0) fprintf (stderr, ", ");
+                  if (g && g->gr_name) fprintf (stderr, "%s", g->gr_name);
+                  else fprintf (stderr, "%ld", (long) groups[i]);
+                }
+              fprintf (stderr, "]\n");
+            }
+        }
 
       if (gid_errno)
        {
index bef3beda263d0286666f1427a72c5202919a5943..ffabe483f3b2936697e7262dc3749156c39a3ea8 100644 (file)
@@ -775,7 +775,7 @@ spawn_screenhack_1 (saver_screen_info *ssi, Bool first_time_p)
          /* Use the same hack that's running on screen 0.
              (Assumes this function was called on screen 0 first.)
            */
-          ssi->current_hack = si->screens[0].current_hack;
+          new_hack = si->screens[0].current_hack;
        }
       else  /* (p->mode == RANDOM_HACKS) */
        {
index 0a75fcf43f91bf6899c0422d8cd29f8c5037a1c2..dd4893e8de071f64d6ecc259b68a3d4b0a72f4f5 100644 (file)
@@ -1,5 +1,5 @@
 /* test-uid.c --- playing with setuid.
- * xscreensaver, Copyright (c) 1998 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1998, 2005 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -36,6 +36,8 @@ print(void)
   int egid = getegid();
   struct passwd *p = 0;
   struct group *g = 0;
+  gid_t groups[1024];
+  int n;
 
   p = getpwuid (uid);
   g = getgrgid (gid);
@@ -48,6 +50,23 @@ print(void)
   fprintf(stderr, "eff. user/group: %ld/%ld (%s/%s)\n", (long)euid, (long)egid,
          (p && p->pw_name ? p->pw_name : "???"),
          (g && g->gr_name ? g->gr_name : "???"));
+
+  n = getgroups(sizeof(groups)-1, groups);
+  if (n < 0)
+    perror("getgroups failed");
+  else
+    {
+      int i;
+      fprintf (stderr, "eff. group list: [");
+      for (i = 0; i < n; i++)
+        {
+          g = getgrgid (groups[i]);
+          fprintf(stderr, "%s%s=%ld", (i == 0 ? "" : ", "),
+                  (g->gr_name ? g->gr_name : "???"),
+                  groups[i]);
+        }
+      fprintf (stderr, "]\n");
+    }
 }
 
 int
@@ -114,6 +133,15 @@ main (int argc, char **argv)
                }
            }
 
+         fprintf(stderr, "setgroups(1, [%ld]) \"%s\"", gid, group);
+          {
+            gid_t g2 = gid;
+            if (setgroups(1, &g2) == 0)
+              fprintf(stderr, " succeeded.\n");
+            else
+              perror(" failed");
+          }
+
          fprintf(stderr, "setgid(%ld) \"%s\"", gid, group);
          if (setgid(gid) == 0)
            fprintf(stderr, " succeeded.\n");
index c9244f735e7655b29c8a968a7175d7885e364b78..1f4321425bcc07617aad44f4e025c3dcb4d721d6 100644 (file)
@@ -386,11 +386,17 @@ pointer_moved_p (saver_screen_info *ssi, Bool mods_p)
       distance > 0)
     moved_p = True;
 
-  if (ssi->poll_mouse_last_root_x == -1 ||
-      ssi->poll_mouse_last_root_y == -1 ||
-      root_x == -1 ||
-      root_y == -1)
-    moved_p = True;
+  /* If the mouse is not on this screen but used to be, that's motion.
+     If the mouse was not on this screen, but is now, that's motion.
+   */
+  {
+    Bool on_screen_p  = (root_x != -1 && root_y != -1);
+    Bool was_on_screen_p = (ssi->poll_mouse_last_root_x != -1 &&
+                            ssi->poll_mouse_last_root_y != -1);
+
+    if (on_screen_p != was_on_screen_p)
+      moved_p = True;
+  }
 
   if (p->debug_p && (distance != 0 || moved_p))
     {
@@ -404,7 +410,7 @@ pointer_moved_p (saver_screen_info *ssi, Bool mods_p)
                  ssi->poll_mouse_last_root_y);
       fprintf (stderr, " -> ");
       if (root_x == -1)
-        fprintf (stderr, "off screen.");
+        fprintf (stderr, "off screen");
       else
         fprintf (stderr, "%d,%d", root_x, root_y);
       if (ssi->poll_mouse_last_root_x != -1 && root_x != -1)
index 60de0a92fa2a51dd7069a995caf5c0f4a2618481..e9891af746c849426db40907da6ea2a8abb03cbb 100644 (file)
@@ -1978,7 +1978,7 @@ unblank_screen (saver_info *si)
 
   /* If the focus window does has a non-default colormap, then install
      that colormap as well.  (On SGIs, this will cause both the root map
-     and the focus map to be installed simultaniously.  It'd be nice to
+     and the focus map to be installed simultaneously.  It'd be nice to
      pick up the other colormaps that had been installed, too; perhaps
      XListInstalledColormaps could be used for that?)
    */
index fe08d2ea640a8efbe005a9576f4d688853c26055..6c039fb27d1c0173bdc2c91f40a4d1af5d6a9653 100644 (file)
@@ -95,9 +95,8 @@ usage: %s -<option>\n\
                 with a particular graphics demo.  (The first element in the\n\
                 list is numbered 1, not 0.)\n\
 \n\
-  -exit         Causes the xscreensaver process to exit gracefully.  This is\n\
-                roughly the same as killing the process with `kill', but it\n\
-                is easier, since you don't need to first figure out the pid.\n\
+  -exit         Causes the xscreensaver process to exit gracefully.\n\
+                This does nothing if the display is currently locked.\n\
                 (Note that one must *never* kill xscreensaver with -9!)\n\
 \n\
   -restart      Causes the screensaver process to exit and then restart with\n\
index ad417b38a8984165d0814d4ba95e229de0884ad1..1d0c24128d99fca1508753749fa5aba0bbc35cb2 100644 (file)
@@ -117,10 +117,8 @@ this to activate the screensaver with a particular graphics demo.  (The first
 element in the list is numbered 1, not 0.)
 .TP 8
 .B \-exit
-Causes the xscreensaver process to exit gracefully.  This is roughly the same
-as killing the process with
-.BR kill (1),
-but it is easier, since you don't need to first figure out the pid.  
+Causes the xscreensaver process to exit gracefully.  
+This does nothing if the display is currently locked.
 
 .B Warning:
 never use \fIkill -9\fP with \fIxscreensaver\fP while the screensaver is
@@ -210,7 +208,7 @@ while (<IN>) {
     }
 }
 .EE
-Note that LOCK might come either with or without a preceeding BLANK
+Note that LOCK might come either with or without a preceding BLANK
 (depending on whether the lock-timeout is non-zero), so the above program
 keeps track of both of them.
 .SH STOPPING GRAPHICS
index 76e223ec1919f67b24def0ee05dd38cdbd860a77..07861e586e53fdc92ee02d201e3ffb1382d8652b 100644 (file)
                          <property name="update_policy">GTK_UPDATE_ALWAYS</property>
                          <property name="snap_to_ticks">True</property>
                          <property name="wrap">False</property>
-                         <property name="adjustment">1 1 720 1 15 15</property>
+                         <property name="adjustment">0 0 720 1 15 15</property>
                          <signal name="activate" handler="pref_changed_cb"/>
                          <signal name="focus_out_event" handler="pref_changed_event_cb"/>
                          <signal name="value_changed" handler="pref_changed_cb"/>
index baa125d40183a9237905f5332b8d82a884ef0767..9673f714d1af7373af2aa3dfc572caaf2360946d 100644 (file)
@@ -133,7 +133,7 @@ After the user has been idle this long, the \fIxscreensaver\fP daemon
 will blank the screen.
 .TP 4
 .B Cycle After
-jAfter the screensaver has been running for this long, the currently
+After the screensaver has been running for this long, the currently
 running graphics demo will be killed, and a new one started.  
 If this is 0, then the graphics demo will never be changed:
 only one demo will run until the screensaver is deactivated by user 
index 52be88b73d3643a9e2dccd35ca5946b106036752..52f9f577b16562a82321686b6ecee4197f3f11e2 100755 (executable)
@@ -24,7 +24,7 @@ use Text::Wrap qw(wrap);
 use bytes;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.3 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.5 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
 
 my $verbose = 0;
 my $http_proxy = undef;
@@ -108,7 +108,7 @@ my %unicode_latin1_table = (
 
 # Convert any HTML entities to Latin1 characters.
 #
-sub de_entify {
+sub de_entify($) {
   my ($text) = @_;
   $text =~ s/(&(\#)?([[:alpha:]\d]+);?)/
     {
@@ -130,7 +130,7 @@ sub de_entify {
 # Convert any Unicode characters to Latin1 if possible.
 # Unconvertable bytes are left alone.
 #
-sub de_unicoddle {
+sub de_unicoddle($) {
   my ($text) = @_;
   foreach my $key (keys (%unicode_latin1_table)) {
     my $val = $unicode_latin1_table{$key};
@@ -142,7 +142,7 @@ sub de_unicoddle {
 
 # Reads the prefs we use from ~/.xscreensaver
 #
-sub get_prefs {
+sub get_prefs() {
 
   my $got_any_p = 0;
   local *IN;
@@ -181,7 +181,7 @@ sub get_prefs {
 }
 
 
-sub get_prefs_1 {
+sub get_prefs_1($) {
   my ($body) = @_;
 
   my $got_any_p = 0;
@@ -210,7 +210,7 @@ sub get_prefs_1 {
 
 # like system() but checks errors.
 #
-sub safe_system {
+sub safe_system(@) {
   my (@cmd) = @_;
 
   print STDERR "$progname: executing " . join(' ', @cmd) . "\n"
@@ -226,7 +226,7 @@ sub safe_system {
 }
 
 
-sub which {
+sub which($) {
   my ($cmd) = @_;
 
   if ($cmd =~ m@^\./|^/@) {
@@ -243,7 +243,7 @@ sub which {
 }
 
 
-sub output {
+sub output() {
 
   # Do some basic sanity checking (null text, null file names, etc.)
   #
@@ -317,7 +317,7 @@ sub output {
 
 # Loads the given URL, returns: $http, $head, $body.
 #
-sub get_url_1 {
+sub get_url_1($;$) {
   my ($url, $referer) = @_;
   
   if (! ($url =~ m@^http://@i)) {
@@ -418,7 +418,7 @@ sub get_url_1 {
 
 # Loads the given URL, processes redirects, returns (content-type, body).
 #
-sub get_url {
+sub get_url($;$) {
   my ($url, $referer) = @_;
 
   print STDERR "$progname: loading $url\n" if ($verbose > 2);
@@ -479,7 +479,7 @@ sub get_url {
 # We don't necessarily take the Content-Type header at face value.
 # Returns 'html', 'rss', or 'text';
 #
-sub guess_content_type {
+sub guess_content_type($$) {
   my ($ct, $body) = @_;
 
   $body =~ s/^(.{512}).*/$1/s;  # only look in first half K of file
@@ -502,7 +502,7 @@ sub guess_content_type {
   return 'text';
 }
 
-sub reformat_html {
+sub reformat_html($$) {
   my ($body, $rss_p) = @_;
   $_ = $body;
 
@@ -544,11 +544,15 @@ sub reformat_html {
 }
 
 
-sub reformat_rss {
+sub reformat_rss($) {
   my ($body) = @_;
 
   $body =~ s/(<(ITEM|ENTRY)\b)/\001\001$1/gsi;
   my @items = split (/\001\001/, $body);
+
+  print STDERR "$progname: converting RSS ($#items items)...\n"
+    if ($verbose > 2);
+
   shift @items;
 
   # Let's skip forward in the stream by a random amount, so that if
@@ -556,32 +560,48 @@ sub reformat_rss {
   # multi-headed machine), they get different text.  (Put the items
   # that we take off the front back on the back.)
   #
-  if ($#items > 10) {
+  if ($#items > 7) {
     my $n = int (rand ($#items - 5));
+    print STDERR "$progname: rotating by $n items...\n" if ($verbose > 2);
     while ($n-- > 0) {
       push @items, (shift @items);
     }
   }
 
-  my $i = 0;
+  my $i = -1;
   foreach (@items) {
+    $i++;
 
-    my ($title, $body1, $body2);
+    my ($title, $body1, $body2, $body3);
     
-    $title = $2 if (m@<(TITLE            [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
-    $body1 = $3 if (m@<((DESCRIPTION)    [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
-    $body2 = $3 if (m@<((CONTENT)        [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
+    $title = $3 if (m@<((TITLE)       [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
+    $body1 = $3 if (m@<((DESCRIPTION) [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
+    $body2 = $3 if (m@<((CONTENT)     [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
+    $body3 = $3 if (m@<((SUMMARY)     [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
 
     # If there are both <description> and <content> or <content:encoded>,
     # use whichever one contains more text.
     #
-    if ($body1 && $body2 && length($body2) >= length($body1)) {
+    if ($body3 && length($body3) >= length($body2 || '')) {
+      $body2 = $body3;
+    }
+    if ($body2 && length($body2) >= length($body1 || '')) {
       $body1 = $body2;
     }
 
-    next unless defined ($body1);
-    $title = rss_field_to_html ($title);
-    $body1 = rss_field_to_html ($body1);
+    if (! $body1) {
+      if ($title) {
+        print STDERR "$progname: no body in item $i (\"$title\")\n"
+          if ($verbose > 2);
+      } else {
+        print STDERR "$progname: no body or title in item $i\n"
+          if ($verbose > 2);
+        next;
+      }
+    }
+
+    $title = rss_field_to_html ($title || '');
+    $body1 = rss_field_to_html ($body1 || '');
 
     reformat_html ("$title<P>$body1", 1);
     print "\n";
@@ -589,7 +609,7 @@ sub reformat_rss {
 }
 
 
-sub rss_field_to_html {
+sub rss_field_to_html($) {
   my ($body) = @_;
 
   # Assume that if <![CDATA[...]]> is present, everything inside that.
@@ -605,7 +625,7 @@ sub rss_field_to_html {
 }
 
 
-sub reformat_text {
+sub reformat_text($) {
   my ($body) = @_;
 
   # only re-wrap if --cols was specified.  Otherwise, dump it as is.
@@ -621,7 +641,7 @@ sub reformat_text {
 }
 
 
-sub get_url_text {
+sub get_url_text($) {
   my ($url) = @_;
 
   # historical suckage: the environment variable name is lower case.
@@ -639,7 +659,6 @@ sub get_url_text {
     print STDERR "$progname: converting HTML...\n" if ($verbose > 2);
     reformat_html ($body, 0);
   } elsif ($ct eq 'rss')  {
-    print STDERR "$progname: converting RSS...\n" if ($verbose > 2);
     reformat_rss ($body);
   } else {
     print STDERR "$progname: plain text...\n" if ($verbose > 2);
@@ -649,13 +668,13 @@ sub get_url_text {
 
 
 
-sub error {
+sub error($) {
   my ($err) = @_;
   print STDERR "$progname: $err\n";
   exit 1;
 }
 
-sub usage {
+sub usage() {
   print STDERR "usage: $progname [ --options ... ]\n" .
    ("\n" .
     "       Prints out some text for use by various screensavers,\n" .
@@ -686,7 +705,7 @@ sub usage {
   exit 1;
 }
 
-sub main {
+sub main() {
 
   my $load_p = 1;
 
@@ -717,5 +736,5 @@ sub main {
   output();
 }
 
-main;
+main();
 exit 0;
index 9b285fb5aebf81d7318cfbde2f90c0b65f9bc97a..058dd86c091b9c52b84387046785b4778cc9122e 100644 (file)
@@ -2267,7 +2267,7 @@ display_is_on_console_p (saver_info *si)
 void
 check_for_leaks (const char *where)
 {
-#ifdef HAVE_SBRK
+#if defined(HAVE_SBRK) && defined(LEAK_PARANOIA)
   static unsigned long last_brk = 0;
   int b = (unsigned long) sbrk(0);
   if (last_brk && last_brk < b)
index 5271a144abe5ce56f48de22aa926c7f4303678b7..26e9808a32fbe4cf7f653d918c95593d9c5acf82 100644 (file)
@@ -377,7 +377,7 @@ exists in the system-wide list, then it will come back.  However, if the
 user \fIdisables\fP it, then their setting takes precedence.
 
 If the display has multiple screens, then a different program will be run
-for each screen.  (All screens are blanked and unblanked simultaniously.)
+for each screen.  (All screens are blanked and unblanked simultaneously.)
 
 Note that you must escape the newlines; here is an example of how you
 might set this in your \fI~/.xscreensaver\fP file:
@@ -1033,7 +1033,7 @@ because X (really, ICCCM) does not provide a way for an OverrideRedirect
 window to have its own colormap, short of grabbing the server (which is 
 neither a good idea, nor really possible with the current design.)  What 
 happens is that, as soon as xscreensaver installs its colormap, \fBtwm\fP 
-responds to the resultant \fBColormapNotify\fP event by re-instaling the 
+responds to the resultant \fBColormapNotify\fP event by re-installing the 
 default colormap.  Apparently, \fBtwm\fP doesn't \fIalways\fP do this; it 
 seems to do it regularly if the screensaver is activated from a menu item, 
 but seems to not do it if the screensaver comes on of its own volition, or 
@@ -1114,7 +1114,7 @@ property of the (mis-) design of this server extension.
 
 It sure would be nice if someone would implement the \fBSGI SCREEN_SAVER\fP
 extension in XFree86; it's dead simple, and works far better than the
-overengineered and broken \fBMIT-SCREEN-SAVER\fP extension.
+over-engineered and broken \fBMIT-SCREEN-SAVER\fP extension.
 .TP 8
 .B Keyboard LEDs
 If \fIprocInterrupts\fP is on (which is the default on Linux systems) and
@@ -1163,177 +1163,14 @@ and a FAQ can always be found at http://www.jwz.org/xscreensaver/
 .BR X (1),
 .BR Xsecurity (1),
 .BR xauth (1),
+.BR xdm (1),
+.BR gdm (1),
+.BR xhost (1),
 .BR xscreensaver\-demo (1),
 .BR xscreensaver\-command (1),
 .BR xscreensaver\-gl\-helper (1),
 .BR xscreensaver\-getimage (1),
-.BR xdm (1),
-.BR gdm (1),
-.BR xset (1),
-.BR xhost (1).
-.BR anemone (1),
-.BR ant (1),
-.BR apollonian (1),
-.BR atlantis (1),
-.BR attraction (1),
-.BR barcode (1),
-.BR blaster (1),
-.BR blitspin (1),
-.BR bouboule (1),
-.BR boxed (1),
-.BR braid (1),
-.BR bsod (1),
-.BR bubble3d (1),
-.BR bubbles (1),
-.BR bumps (1),
-.BR cage (1),
-.BR ccurve (1),
-.BR circuit (1),
-.BR compass (1),
-.BR coral (1),
-.BR cosmos (1),
-.BR critical (1),
-.BR crystal (1),
-.BR cubenetic (1),
-.BR cynosure (1),
-.BR dangerball (1),
-.BR decayscreen (1),
-.BR deco (1),
-.BR deluxe (1),
-.BR demon (1),
-.BR discrete (1),
-.BR distort (1),
-.BR drift (1),
-.BR electricsheep (1),
-.BR endgame (1),
-.BR engine (1),
-.BR epicycle (1),
-.BR eruption (1),*
-.BR euler2d (1),
-.BR extrusion (1),
-.BR fadeplot (1),
-.BR flag (1),
-.BR flame (1),
-.BR flipscreen3d (1),
-.BR flow (1),
-.BR fluidballs (1),
-.BR flurry (1),
-.BR forest (1),
-.BR galaxy (1),
-.BR gears (1),
-.BR gflux (1),
-.BR glblur (1),
-.BR glforestfire (1),
-.BR glplanet (1),
-.BR glsnake (1),
-.BR gltext (1),
-.BR goban (1),
-.BR goop (1),
-.BR grav (1),
-.BR greynetic (1),
-.BR halftone (1),
-.BR halo (1),
-.BR helix (1),
-.BR hopalong (1),
-.BR hyperball (1),
-.BR hypercube (1),
-.BR ifs (1),
-.BR imsmap (1),
-.BR interference (1),
-.BR jigsaw (1),
-.BR juggle (1),
-.BR julia (1),
-.BR kaleidescope (1),
-.BR kumppa (1),
-.BR lament (1),
-.BR laser (1),
-.BR lavalite (1),
-.BR lightning (1),
-.BR lisa (1),
-.BR lissie (1),
-.BR lmorph (1),
-.BR loop (1),
-.BR maze (1),
-.BR menger (1),
-.BR metaballs (1),
-.BR moebius (1),
-.BR moire (1),
-.BR moire2 (1),
-.BR molecule (1),
-.BR morph3d (1),
-.BR mountain (1),
-.BR munch (1),
-.BR nerverot (1),
-.BR noseguy (1),
-.BR pedal (1),
-.BR penetrate (1),
-.BR penrose (1),
-.BR petri (1),
-.BR phosphor (1),
-.BR pipes (1),
-.BR polyominoes (1),
-.BR popsquares (1),
-.BR pulsar (1),
-.BR pyro (1),
-.BR qix (1),
-.BR queens (1),
-.BR rd-bomb (1),
-.BR ripples (1),
-.BR rocks (1),
-.BR rorschach (1),
-.BR rotor (1),
-.BR rotzoomer (1),
-.BR rubik (1),
-.BR sballs (1),
-.BR shadebobs (1),
-.BR sierpinski (1),
-.BR sierpinski3d (1),
-.BR slidescreen (1),
-.BR slip (1),
-.BR sonar (1),
-.BR speedmine (1),
-.BR sphere (1),
-.BR sphereEversion (1),
-.BR spheremonics (1),
-.BR spiral (1),
-.BR spotlight (1),
-.BR sproingies (1),
-.BR squiral (1),
-.BR ssystem (1),
-.BR stairs (1),
-.BR starfish (1),
-.BR starwars (1),
-.BR stonerview (1),
-.BR strange (1),
-.BR superquadrics (1),
-.BR swirl (1),
-.BR t3d (1),
-.BR thornbird (1),
-.BR triangle (1),
-.BR truchet (1),
-.BR twang (1),
-.BR vermiculate (1),
-.BR vidwhacker (1),
-.BR vines (1),
-.BR wander (1),
-.BR webcollage (1),
-.BR whirlwindwarp (1),
-.BR whirlygig (1),
-.BR worm (1),
-.BR xaos (1),
-.BR xdaliclock (1),
-.BR xearth (1),
-.BR xfishtank (1),
-.BR xflame (1),
-.BR xjack (1),
-.BR xlyap (1),
-.BR xmatrix (1),
-.BR xmountains (1),
-.BR xrayswarm (1),
-.BR xsnow (1),
-.BR xspirograph (1),
-.BR xteevee (1),
-.BR zoom (1)
+.BR xscreensaver\-text (1).
 .SH COPYRIGHT
 Copyright \(co 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
 2000, 2001, 2002, 2003, 2004, 2005 by Jamie Zawinski.  Permission to use,
index 677a8c0a2dc5b3f8082bf84513f11932746035b9..99d11c2f96a18ae79a65428cbbed2ba36a6adec6 100644 (file)
@@ -1,5 +1,5 @@
 /* xset.c --- interacting with server extensions and the builtin screensaver.
- * xscreensaver, Copyright (c) 1991-2004 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1991-2005 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -303,125 +303,3 @@ disable_builtin_screensaver (saver_info *si, Bool unblank_screen_p)
     /* Turn off the server builtin saver if it is now running. */
     XForceScreenSaver (si->dpy, ScreenSaverReset);
 }
-
-\f
-/* Display Power Management System (DPMS.)
-
-   On XFree86 systems, "man xset" reports:
-
-       -dpms    The -dpms option disables DPMS (Energy Star) features.
-       +dpms    The +dpms option enables DPMS (Energy Star) features.
-
-       dpms flags...
-                The dpms option allows the DPMS (Energy Star)
-                parameters to be set.  The option can take up to three
-                numerical values, or the `force' flag followed by a
-                DPMS state.  The `force' flags forces the server to
-                immediately switch to the DPMS state specified.  The
-                DPMS state can be one of `standby', `suspend', or
-                `off'.  When numerical values are given, they set the
-                inactivity period before the three modes are activated.
-                The first value given is for the `standby' mode, the
-                second is for the `suspend' mode, and the third is for
-                the `off' mode.  Setting these values implicitly
-                enables the DPMS features.  A value of zero disables a
-                particular mode.
-
-   However, note that the implementation is more than a little bogus,
-   in that there is code in /usr/X11R6/lib/libXdpms.a to implement all
-   the usual server-extension-querying utilities -- but there are no
-   prototypes in any header file!  Thus, the prototypes here.  (The
-   stuff in X11/extensions/dpms.h and X11/extensions/dpmsstr.h define
-   the raw X protcol, they don't define the API to libXdpms.a.)
-
-   Some documentation:
-   Library:  ftp://ftp.x.org/pub/R6.4/xc/doc/specs/Xext/DPMSLib.ms
-   Protocol: ftp://ftp.x.org/pub/R6.4/xc/doc/specs/Xext/DPMS.ms
- */
-
-#ifdef HAVE_DPMS_EXTENSION
-
-#include <X11/Xproto.h>                        /* for CARD16 */
-#include <X11/extensions/dpms.h>
-#include <X11/extensions/dpmsstr.h>
-
-extern Bool DPMSQueryExtension (Display *dpy, int *event_ret, int *error_ret);
-extern Bool DPMSCapable (Display *dpy);
-extern Status DPMSForceLevel (Display *dpy, CARD16 level);
-extern Status DPMSInfo (Display *dpy, CARD16 *power_level, BOOL *state);
-
-#if 0 /* others we don't use */
-extern Status DPMSGetVersion (Display *dpy, int *major_ret, int *minor_ret);
-extern Status DPMSSetTimeouts (Display *dpy,
-                              CARD16 standby, CARD16 suspend, CARD16 off);
-extern Bool DPMSGetTimeouts (Display *dpy,
-                            CARD16 *standby, CARD16 *suspend, CARD16 *off);
-extern Status DPMSEnable (Display *dpy);
-extern Status DPMSDisable (Display *dpy);
-#endif /* 0 */
-
-
-Bool
-monitor_powered_on_p (saver_info *si)
-{
-  Bool result;
-  int event_number, error_number;
-  BOOL onoff = False;
-  CARD16 state;
-
-  if (!DPMSQueryExtension(si->dpy, &event_number, &error_number))
-    /* Server doesn't know -- assume the monitor is on. */
-    result = True;
-
-  else if (!DPMSCapable(si->dpy))
-    /* Server says the monitor doesn't do power management -- so it's on. */
-    result = True;
-
-  else
-    {
-      DPMSInfo(si->dpy, &state, &onoff);
-      if (!onoff)
-       /* Server says DPMS is disabled -- so the monitor is on. */
-       result = True;
-      else
-       switch (state) {
-       case DPMSModeOn:      result = True;  break;  /* really on */
-       case DPMSModeStandby: result = False; break;  /* kinda off */
-       case DPMSModeSuspend: result = False; break;  /* pretty off */
-       case DPMSModeOff:     result = False; break;  /* really off */
-       default:              result = True;  break;  /* protocol error? */
-       }
-    }
-
-  return result;
-}
-
-void
-monitor_power_on (saver_info *si)
-{
-  if (!monitor_powered_on_p (si))
-    {
-      DPMSForceLevel(si->dpy, DPMSModeOn);
-      XSync(si->dpy, False);
-      if (!monitor_powered_on_p (si))
-       fprintf (stderr,
-       "%s: DPMSForceLevel(dpy, DPMSModeOn) did not power the monitor on?\n",
-                blurb());
-    }
-}
-
-#else  /* !HAVE_DPMS_EXTENSION */
-
-Bool
-monitor_powered_on_p (saver_info *si) 
-{
-  return True; 
-}
-
-void
-monitor_power_on (saver_info *si)
-{
-  return; 
-}
-
-#endif /* !HAVE_DPMS_EXTENSION */
index 9127723b007991f551891800cc849de469aa9be9..18d031b4fe573985c452565418bb0871edefc316 100644 (file)
@@ -107,7 +107,8 @@ SRCS                = attraction.c blitspin.c bouboule.c braid.c bubbles.c \
                  apple2-main.c analogtv.c xanalogtv.c pong.c wormhole.c \
                  mismunch.c pacman.c pacman_ai.c pacman_level.c \
                  fuzzyflakes.c anemotaxis.c memscroller.c substrate.c \
-                 intermomentary.c fireworkx.c fiberlamp.c boxfit.c
+                 intermomentary.c fireworkx.c fireworkx_mmx.S fiberlamp.c \
+                 boxfit.c interaggregate.c
 SCRIPTS                = vidwhacker webcollage ljlatest
 
 OBJS           = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
@@ -136,7 +137,8 @@ OBJS                = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
                  apple2-main.o analogtv.o xanalogtv.o pong.o wormhole.o \
                  mismunch.o pacman.o pacman_ai.o pacman_level.o \
                  fuzzyflakes.o anemotaxis.o memscroller.o substrate.o \
-                 intermomentary.o fireworkx.o fiberlamp.o boxfit.o
+                 intermomentary.o fireworkx.o fiberlamp.o boxfit.o \
+                 interaggregate.o
 
 NEXES          = attraction blitspin bouboule braid bubbles decayscreen deco \
                  drift flag flame forest vines galaxy grav greynetic halo \
@@ -156,7 +158,7 @@ NEXES               = attraction blitspin bouboule braid bubbles decayscreen deco \
                  metaballs eruption popsquares barcode piecewise cloudlife \
                  fontglide apple2 xanalogtv pong  wormhole mismunch \
                  pacman fuzzyflakes anemotaxis memscroller substrate \
-                 intermomentary fireworkx fiberlamp boxfit \
+                 intermomentary fireworkx fiberlamp boxfit interaggregate \
                  @JPEG_EXES@
 SEXES          = sonar
 JPEG_EXES      = webcollage-helper
@@ -203,7 +205,8 @@ MEN         = anemone.man ant.man apollonian.man attraction.man \
                  fontglide.man apple2.man xanalogtv.man pong.man \
                  wormhole.man mismunch.man pacman.man fuzzyflakes.man \
                  anemotaxis.man memscroller.man substrate.man \
-                 intermomentary.man fireworkx.man fiberlamp.man boxfit.man
+                 intermomentary.man fireworkx.man fiberlamp.man boxfit.man \
+                 interaggregate.man
 STAR           = *
 EXTRAS         = README Makefile.in xlock_23.h xml2man.pl .gdbinit \
                  euler2d.tex \
@@ -292,24 +295,40 @@ munge-scripts: $(SCRIPTS)
          sed "s@^\(#!\)\(/[^ ]*/perl[^ ]*\)\(.*\)\$$@\1$$perl\3@"      \
              < $(srcdir)/$$program > $$tmp ;                           \
          if ! cmp -s $(srcdir)/$$program $$tmp ; then                  \
-           echo "$$program: setting interpreter to $$perl" ;           \
+           echo "$$program: setting interpreter to $$perl" >&2 ;       \
            cat $$tmp > ./$$program ;                                   \
          fi ;                                                          \
        done ;                                                          \
        rm -f $$tmp
 
+# When installing man pages, we install "foo.man" as "foo.N" and update
+# the .TH line in the installed file with one like
+#
+#     .TH XScreenSaver N "V.VV (DD-MMM-YYYY)" "X Version 11"
+#
+# where N is the manual section suffix.
+#
 install-man: $(MEN)
        @men="$(MEN)" ;                                                 \
+       U=$(UTILS_SRC)/version.h ;                                      \
+       V=`sed -n 's/.*\([0-9]\.[^)]*)\).*/\1/p' < $$U` ;               \
+       T=/tmp/xs$$$$.$(mansuffix) ;                                    \
+       TH=".TH XScreenSaver $(mansuffix) \"$$V\" \"X Version 11\"" ;   \
+       echo "installing man pages: $$TH" ;                             \
+                                                                       \
        if [ ! -d $(install_prefix)$(manNdir) ]; then                   \
          $(INSTALL_DIRS) $(install_prefix)$(manNdir) ;                 \
         fi ;                                                           \
+                                                                       \
        for man in $$men; do                                            \
          instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
+         sed "s/^\.TH.*/$$TH/" < $(srcdir)/$$man > $$T ;               \
          echo $(INSTALL_DATA) $(srcdir)/$$man                          \
           $(install_prefix)$(manNdir)/$$instname ;                     \
-         $(INSTALL_DATA) $(srcdir)/$$man                               \
+         $(INSTALL_DATA) $$T                                           \
            $(install_prefix)$(manNdir)/$$instname ;                    \
-       done
+       done ;                                                          \
+       rm -f $$T
 
 install-xml:
        @dest=$(install_prefix)$(HACK_CONF_DIR) ;                       \
@@ -334,8 +353,8 @@ uninstall-man:
        @men="$(MEN)" ;                                                 \
        for man in $$men; do                                            \
          instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
-         echo rm -f $(install_prefix)$(manNdir)/$$instname ;           \
-         rm -f $(install_prefix)$(manNdir)/$$instname ;                \
+         echo rm -f $(install_prefix)$(manNdir)/$$instname* ;          \
+         rm -f $(install_prefix)$(manNdir)/$$instname* ;               \
        done
 
 uninstall-xml:
@@ -811,6 +830,9 @@ substrate:  substrate.o     $(HACK_OBJS)
 intermomentary:        intermomentary.o $(HACK_OBJS) $(COL)
        $(CC_HACK) -o $@ $@.o    $(HACK_OBJS) $(COL) $(HACK_LIBS)
 
+interaggregate:        interaggregate.o $(HACK_OBJS) $(COL)
+       $(CC_HACK) -o $@ $@.o    $(HACK_OBJS) $(COL) $(HACK_LIBS)
+
 fireworkx:     fireworkx.o     $(HACK_OBJS) $(COL)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
 
@@ -964,12 +986,12 @@ anemotaxis.o: $(srcdir)/screenhack.h
 ant.o: $(srcdir)/automata.h
 ant.o: ../config.h
 ant.o: $(srcdir)/screenhack.h
-ant.o: $(srcdir)/xlockmore.h
 ant.o: $(srcdir)/xlockmoreI.h
+ant.o: $(srcdir)/xlockmore.h
 apollonian.o: ../config.h
 apollonian.o: $(srcdir)/screenhack.h
-apollonian.o: $(srcdir)/xlockmore.h
 apollonian.o: $(srcdir)/xlockmoreI.h
+apollonian.o: $(srcdir)/xlockmore.h
 apple2-main.o: $(srcdir)/analogtv.h
 apple2-main.o: $(srcdir)/apple2.h
 apple2-main.o: ../config.h
@@ -990,15 +1012,15 @@ blitspin.o: $(srcdir)/screenhack.h
 blitspin.o: $(srcdir)/xpm-pixmap.h
 bouboule.o: ../config.h
 bouboule.o: $(srcdir)/screenhack.h
-bouboule.o: $(srcdir)/xlockmore.h
 bouboule.o: $(srcdir)/xlockmoreI.h
+bouboule.o: $(srcdir)/xlockmore.h
 boxfit.o: ../config.h
 boxfit.o: $(srcdir)/screenhack.h
 boxfit.o: $(srcdir)/xpm-pixmap.h
 braid.o: ../config.h
 braid.o: $(srcdir)/screenhack.h
-braid.o: $(srcdir)/xlockmore.h
 braid.o: $(srcdir)/xlockmoreI.h
+braid.o: $(srcdir)/xlockmore.h
 bsod.o: $(srcdir)/analogtv.h
 bsod.o: $(srcdir)/apple2.h
 bsod.o: ../config.h
@@ -1074,8 +1096,8 @@ critical.o: ../config.h
 critical.o: $(srcdir)/screenhack.h
 crystal.o: ../config.h
 crystal.o: $(srcdir)/screenhack.h
-crystal.o: $(srcdir)/xlockmore.h
 crystal.o: $(srcdir)/xlockmoreI.h
+crystal.o: $(srcdir)/xlockmore.h
 cynosure.o: ../config.h
 cynosure.o: $(srcdir)/screenhack.h
 decayscreen.o: ../config.h
@@ -1087,68 +1109,68 @@ deluxe.o: $(srcdir)/screenhack.h
 demon.o: $(srcdir)/automata.h
 demon.o: ../config.h
 demon.o: $(srcdir)/screenhack.h
-demon.o: $(srcdir)/xlockmore.h
 demon.o: $(srcdir)/xlockmoreI.h
+demon.o: $(srcdir)/xlockmore.h
 discrete.o: ../config.h
 discrete.o: $(srcdir)/screenhack.h
-discrete.o: $(srcdir)/xlockmore.h
 discrete.o: $(srcdir)/xlockmoreI.h
+discrete.o: $(srcdir)/xlockmore.h
 distort.o: ../config.h
 distort.o: $(srcdir)/screenhack.h
 drift.o: ../config.h
 drift.o: $(srcdir)/screenhack.h
-drift.o: $(srcdir)/xlockmore.h
 drift.o: $(srcdir)/xlockmoreI.h
+drift.o: $(srcdir)/xlockmore.h
 epicycle.o: ../config.h
 epicycle.o: $(srcdir)/screenhack.h
 eruption.o: ../config.h
 eruption.o: $(srcdir)/screenhack.h
 euler2d.o: ../config.h
 euler2d.o: $(srcdir)/screenhack.h
-euler2d.o: $(srcdir)/xlockmore.h
 euler2d.o: $(srcdir)/xlockmoreI.h
+euler2d.o: $(srcdir)/xlockmore.h
 fadeplot.o: ../config.h
 fadeplot.o: $(srcdir)/screenhack.h
-fadeplot.o: $(srcdir)/xlockmore.h
 fadeplot.o: $(srcdir)/xlockmoreI.h
+fadeplot.o: $(srcdir)/xlockmore.h
 fiberlamp.o: ../config.h
 fiberlamp.o: $(srcdir)/screenhack.h
-fiberlamp.o: $(srcdir)/xlockmore.h
 fiberlamp.o: $(srcdir)/xlockmoreI.h
+fiberlamp.o: $(srcdir)/xlockmore.h
 fireworkx.o: ../config.h
 fireworkx.o: $(srcdir)/screenhack.h
 flag.o: ../config.h
 flag.o: $(srcdir)/images/bob.xbm
 flag.o: $(srcdir)/screenhack.h
-flag.o: $(srcdir)/xlockmore.h
 flag.o: $(srcdir)/xlockmoreI.h
+flag.o: $(srcdir)/xlockmore.h
 flag.o: $(srcdir)/xpm-pixmap.h
 flame.o: ../config.h
 flame.o: $(srcdir)/screenhack.h
 flow.o: ../config.h
 flow.o: $(srcdir)/screenhack.h
-flow.o: $(srcdir)/xlockmore.h
 flow.o: $(srcdir)/xlockmoreI.h
+flow.o: $(srcdir)/xlockmore.h
 fluidballs.o: ../config.h
 fluidballs.o: $(srcdir)/screenhack.h
 fontglide.o: ../config.h
 fontglide.o: $(srcdir)/screenhack.h
 forest.o: ../config.h
 forest.o: $(srcdir)/screenhack.h
-forest.o: $(srcdir)/xlockmore.h
 forest.o: $(srcdir)/xlockmoreI.h
+forest.o: $(srcdir)/xlockmore.h
 fuzzyflakes.o: ../config.h
 fuzzyflakes.o: $(srcdir)/screenhack.h
 galaxy.o: ../config.h
 galaxy.o: $(srcdir)/screenhack.h
-galaxy.o: $(srcdir)/xlockmore.h
 galaxy.o: $(srcdir)/xlockmoreI.h
+galaxy.o: $(srcdir)/xlockmore.h
 goop.o: ../config.h
 goop.o: $(srcdir)/screenhack.h
 grav.o: ../config.h
 grav.o: $(srcdir)/screenhack.h
-grav.o: $(srcdir)/xlockmore.h
 grav.o: $(srcdir)/xlockmoreI.h
+grav.o: $(srcdir)/xlockmore.h
 greynetic.o: ../config.h
 greynetic.o: $(srcdir)/screenhack.h
 halftone.o: ../config.h
@@ -1159,8 +1181,8 @@ helix.o: ../config.h
 helix.o: $(srcdir)/screenhack.h
 hopalong.o: ../config.h
 hopalong.o: $(srcdir)/screenhack.h
-hopalong.o: $(srcdir)/xlockmore.h
 hopalong.o: $(srcdir)/xlockmoreI.h
+hopalong.o: $(srcdir)/xlockmore.h
 hyperball.o: ../config.h
 hyperball.o: $(srcdir)/screenhack.h
 hypercube.o: ../config.h
@@ -1169,6 +1191,8 @@ ifs.o: ../config.h
 ifs.o: $(srcdir)/screenhack.h
 imsmap.o: ../config.h
 imsmap.o: $(srcdir)/screenhack.h
+interaggregate.o: ../config.h
+interaggregate.o: $(srcdir)/screenhack.h
 interference.o: ../config.h
 interference.o: $(srcdir)/screenhack.h
 intermomentary.o: ../config.h
@@ -1213,39 +1237,39 @@ jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_w_h.xbm
 jigsaw.o: $(srcdir)/screenhack.h
 juggle.o: ../config.h
 juggle.o: $(srcdir)/screenhack.h
-juggle.o: $(srcdir)/xlockmore.h
 juggle.o: $(srcdir)/xlockmoreI.h
+juggle.o: $(srcdir)/xlockmore.h
 julia.o: ../config.h
 julia.o: $(srcdir)/screenhack.h
-julia.o: $(srcdir)/xlockmore.h
 julia.o: $(srcdir)/xlockmoreI.h
+julia.o: $(srcdir)/xlockmore.h
 kaleidescope.o: ../config.h
 kaleidescope.o: $(srcdir)/screenhack.h
 kumppa.o: ../config.h
 kumppa.o: $(srcdir)/screenhack.h
 laser.o: ../config.h
 laser.o: $(srcdir)/screenhack.h
-laser.o: $(srcdir)/xlockmore.h
 laser.o: $(srcdir)/xlockmoreI.h
+laser.o: $(srcdir)/xlockmore.h
 lightning.o: ../config.h
 lightning.o: $(srcdir)/screenhack.h
-lightning.o: $(srcdir)/xlockmore.h
 lightning.o: $(srcdir)/xlockmoreI.h
+lightning.o: $(srcdir)/xlockmore.h
 lisa.o: ../config.h
 lisa.o: $(srcdir)/screenhack.h
-lisa.o: $(srcdir)/xlockmore.h
 lisa.o: $(srcdir)/xlockmoreI.h
+lisa.o: $(srcdir)/xlockmore.h
 lissie.o: ../config.h
 lissie.o: $(srcdir)/screenhack.h
-lissie.o: $(srcdir)/xlockmore.h
 lissie.o: $(srcdir)/xlockmoreI.h
+lissie.o: $(srcdir)/xlockmore.h
 lmorph.o: ../config.h
 lmorph.o: $(srcdir)/screenhack.h
 loop.o: $(srcdir)/automata.h
 loop.o: ../config.h
 loop.o: $(srcdir)/screenhack.h
-loop.o: $(srcdir)/xlockmore.h
 loop.o: $(srcdir)/xlockmoreI.h
+loop.o: $(srcdir)/xlockmore.h
 maze.o: ../config.h
 maze.o: $(srcdir)/screenhack.h
 memscroller.o: ../config.h
@@ -1260,8 +1284,8 @@ moire.o: ../config.h
 moire.o: $(srcdir)/screenhack.h
 mountain.o: ../config.h
 mountain.o: $(srcdir)/screenhack.h
-mountain.o: $(srcdir)/xlockmore.h
 mountain.o: $(srcdir)/xlockmoreI.h
+mountain.o: $(srcdir)/xlockmore.h
 munch.o: ../config.h
 munch.o: $(srcdir)/screenhack.h
 nerverot.o: ../config.h
@@ -1329,8 +1353,8 @@ pacman.o: $(srcdir)/pacman_ai.h
 pacman.o: $(srcdir)/pacman.h
 pacman.o: $(srcdir)/pacman_level.h
 pacman.o: $(srcdir)/screenhack.h
-pacman.o: $(srcdir)/xlockmore.h
 pacman.o: $(srcdir)/xlockmoreI.h
+pacman.o: $(srcdir)/xlockmore.h
 pacman.o: $(srcdir)/xpm-pixmap.h
 pedal.o: ../config.h
 pedal.o: $(srcdir)/screenhack.h
@@ -1338,8 +1362,8 @@ penetrate.o: ../config.h
 penetrate.o: $(srcdir)/screenhack.h
 penrose.o: ../config.h
 penrose.o: $(srcdir)/screenhack.h
-penrose.o: $(srcdir)/xlockmore.h
 penrose.o: $(srcdir)/xlockmoreI.h
+penrose.o: $(srcdir)/xlockmore.h
 petri.o: ../config.h
 petri.o: $(srcdir)/screenhack.h
 phosphor.o: ../config.h
@@ -1348,8 +1372,8 @@ piecewise.o: ../config.h
 piecewise.o: $(srcdir)/screenhack.h
 polyominoes.o: ../config.h
 polyominoes.o: $(srcdir)/screenhack.h
-polyominoes.o: $(srcdir)/xlockmore.h
 polyominoes.o: $(srcdir)/xlockmoreI.h
+polyominoes.o: $(srcdir)/xlockmore.h
 pong.o: $(srcdir)/analogtv.h
 pong.o: ../config.h
 pong.o: $(srcdir)/screenhack.h
@@ -1369,8 +1393,8 @@ rorschach.o: ../config.h
 rorschach.o: $(srcdir)/screenhack.h
 rotor.o: ../config.h
 rotor.o: $(srcdir)/screenhack.h
-rotor.o: $(srcdir)/xlockmore.h
 rotor.o: $(srcdir)/xlockmoreI.h
+rotor.o: $(srcdir)/xlockmore.h
 rotzoomer.o: ../config.h
 rotzoomer.o: $(srcdir)/screenhack.h
 screenhack.o: ../config.h
@@ -1379,26 +1403,26 @@ shadebobs.o: ../config.h
 shadebobs.o: $(srcdir)/screenhack.h
 sierpinski.o: ../config.h
 sierpinski.o: $(srcdir)/screenhack.h
-sierpinski.o: $(srcdir)/xlockmore.h
 sierpinski.o: $(srcdir)/xlockmoreI.h
+sierpinski.o: $(srcdir)/xlockmore.h
 slidescreen.o: ../config.h
 slidescreen.o: $(srcdir)/screenhack.h
 slip.o: ../config.h
 slip.o: $(srcdir)/screenhack.h
-slip.o: $(srcdir)/xlockmore.h
 slip.o: $(srcdir)/xlockmoreI.h
+slip.o: $(srcdir)/xlockmore.h
 sonar.o: ../config.h
 sonar.o: $(srcdir)/screenhack.h
 speedmine.o: ../config.h
 speedmine.o: $(srcdir)/screenhack.h
 sphere.o: ../config.h
 sphere.o: $(srcdir)/screenhack.h
-sphere.o: $(srcdir)/xlockmore.h
 sphere.o: $(srcdir)/xlockmoreI.h
+sphere.o: $(srcdir)/xlockmore.h
 spiral.o: ../config.h
 spiral.o: $(srcdir)/screenhack.h
-spiral.o: $(srcdir)/xlockmore.h
 spiral.o: $(srcdir)/xlockmoreI.h
+spiral.o: $(srcdir)/xlockmore.h
 spotlight.o: ../config.h
 spotlight.o: $(srcdir)/screenhack.h
 squiral.o: ../config.h
@@ -1407,24 +1431,24 @@ starfish.o: ../config.h
 starfish.o: $(srcdir)/screenhack.h
 strange.o: ../config.h
 strange.o: $(srcdir)/screenhack.h
-strange.o: $(srcdir)/xlockmore.h
 strange.o: $(srcdir)/xlockmoreI.h
+strange.o: $(srcdir)/xlockmore.h
 substrate.o: ../config.h
 substrate.o: $(srcdir)/screenhack.h
 swirl.o: ../config.h
 swirl.o: $(srcdir)/screenhack.h
-swirl.o: $(srcdir)/xlockmore.h
 swirl.o: $(srcdir)/xlockmoreI.h
+swirl.o: $(srcdir)/xlockmore.h
 t3d.o: ../config.h
 t3d.o: $(srcdir)/screenhack.h
 thornbird.o: ../config.h
 thornbird.o: $(srcdir)/screenhack.h
-thornbird.o: $(srcdir)/xlockmore.h
 thornbird.o: $(srcdir)/xlockmoreI.h
+thornbird.o: $(srcdir)/xlockmore.h
 triangle.o: ../config.h
 triangle.o: $(srcdir)/screenhack.h
-triangle.o: $(srcdir)/xlockmore.h
 triangle.o: $(srcdir)/xlockmoreI.h
+triangle.o: $(srcdir)/xlockmore.h
 truchet.o: ../config.h
 truchet.o: $(srcdir)/screenhack.h
 twang.o: ../config.h
@@ -1433,8 +1457,8 @@ vermiculate.o: ../config.h
 vermiculate.o: $(srcdir)/screenhack.h
 vines.o: ../config.h
 vines.o: $(srcdir)/screenhack.h
-vines.o: $(srcdir)/xlockmore.h
 vines.o: $(srcdir)/xlockmoreI.h
+vines.o: $(srcdir)/xlockmore.h
 wander.o: ../config.h
 wander.o: $(srcdir)/screenhack.h
 webcollage-helper.o: ../config.h
@@ -1446,8 +1470,8 @@ wormhole.o: ../config.h
 wormhole.o: $(srcdir)/screenhack.h
 worm.o: ../config.h
 worm.o: $(srcdir)/screenhack.h
-worm.o: $(srcdir)/xlockmore.h
 worm.o: $(srcdir)/xlockmoreI.h
+worm.o: $(srcdir)/xlockmore.h
 xanalogtv.o: $(srcdir)/analogtv.h
 xanalogtv.o: ../config.h
 xanalogtv.o: $(srcdir)/screenhack.h
index 31fe02f3b1f8bc8655aa5eb9e62b6a47375f5a2f..3bd9d46085aebdaab049663aa24b5be075a33034 100644 (file)
@@ -887,7 +887,7 @@ analogtv_sync(analogtv *it)
 {
   int cur_hsync=it->cur_hsync;
   int cur_vsync=it->cur_vsync;
-  int lineno;
+  int lineno = 0;
   int i,j;
   double osc,filt;
   double *sp;
index 0ea7fa4060162a71c3f4786a707a9ef15344ad22..388260827b3a236f0fb5cfb23927c113034c71bb 100644 (file)
@@ -25,7 +25,7 @@ source releases particles that drift with constant velocity in one
 direction and walk randomly in the other direction. The searcher knows
 if it hit a particle, and if so, particle's position one time step
 earlier (local wind direction). The program paints sources and
-particles released by them as well as trajectories of serchers who are
+particles released by them as well as trajectories of searchers who are
 trying to capture the sources.
 .SH OPTIONS
 .TP 8
index f49257863d82ccb2b1e8881435993b7a9c8d6245..5e19f757e216f5f7d026309fc891473d7c2626ea 100644 (file)
@@ -159,7 +159,7 @@ and influence the images being created.
 Turns off \fB\-mouse\fP.
 .TP 8
 .B \-mouse-size integer
-In \fB\-mouse\fP mode, this sets the mass of the mouse (analagously to the
+In \fB\-mouse\fP mode, this sets the mass of the mouse (analogously to the
 \fB\-size\fP parameter.)
 .TP 8
 .B \-nowalls
@@ -174,7 +174,7 @@ to the edge of the screen or window.  This is the default behavior.
 Imposes a maximum speed (default).  If a ball ends up going faster than
 this, it will be treated as though there were .9  viscosity until it is
 under the limit. This stops the balls from continually accelerating (which
-they have a tendancy to do), but also causes balls moving very fast to
+they have a tendency to do), but also causes balls moving very fast to
 tend to clump in the lower right corner.
 .TP 8
 .B \-nomaxspeed
index dd4cf54c074aa3d416e9b9a7ee14711a853e1001..680475d5b8cd2233ecf5b5dbe52cc052473a827f 100644 (file)
@@ -336,12 +336,42 @@ windows (Display *dpy, Window window, int delay, int which)
      "assitance.\n"
      );
 
+  /* The "RSOD" that appeared with "Windows Longhorn 5048.050401-0536_x86fre"
+     As reported by http://joi.ito.com/RedScreen.jpg
+   */
+  const char *wlha =
+    ("_Windows Boot Error\n");
+  const char *wlhb =
+    ("\n"
+     "Windows Boot Manager has experienced a problem.\n"
+     "\n"
+     "\n"
+     "    Status: 0xc000000f\n"
+     "\n"
+     "\n"
+     "\n"
+     "    Info: An error occurred transferring exectuion."  /* (sic) */
+     "\n"
+     "\n"
+     "\n"
+     "You can try to recover the system with the Microsoft Windows "
+     "System Recovery\n"
+     "Tools. (You might need to restart the system manually.)\n"
+     "\n"
+     "If the problem continues, please contact your system administrator "
+     "or computer\n"
+     "manufacturer.\n"
+     );
+  const char *wlhc =
+    (" SPACE=Continue\n"
+     );
+
   if (which < 0 || which > 2) abort();
 
   /* kludge to lump Win2K, WinME, and WinXP together; seems silly to add
      another preference/command line option just for these little ones. */
   if (which == 2 && (random() % 2))
-    which = 3 + (random() % 2);
+    which = 3 + (random() % 3);
 
   XGetWindowAttributes (dpy, window, &xgwa);
 
@@ -366,12 +396,14 @@ windows (Display *dpy, Window window, int delay, int which)
   gcv.foreground = get_pixel_resource((which == 0 ? "windows95.foreground" :
                                       which == 1 ? "windowsNT.foreground" :
                                       which == 2 ? "windows2K.foreground" :
+                                      which == 5 ? "windowsLH.foreground" :
                                                     "windowsME.foreground"),
                                      "Windows.Foreground",
                                      dpy, xgwa.colormap);
   gcv.background = get_pixel_resource((which == 0 ? "windows95.background" :
                                       which == 1 ? "windowsNT.background" :
                                       which == 2 ? "windows2K.background" :
+                                       which == 5 ? "windowsLH.background" :
                                                     "windowsME.background"),
                                      "Windows.Background",
                                      dpy, xgwa.colormap);
@@ -429,6 +461,33 @@ windows (Display *dpy, Window window, int delay, int which)
             delay--;
         }
     }
+  else if (which == 5)
+    {
+      int line_height = font->ascent + font->descent;
+      int x = 0;
+      int y = 0;
+      unsigned long p0 = gcv.background;
+      unsigned long p1 = gcv.foreground;
+      unsigned long p2 = get_pixel_resource("windowsLH.background2",
+                                            "Windows.Background",
+                                            dpy, xgwa.colormap);
+      XSetBackground (dpy, gc, p2);
+      XSetForeground (dpy, gc, p2);
+      XFillRectangle (dpy, window, gc, 0, 0, xgwa.width, line_height+2);
+      XSetForeground (dpy, gc, p0);
+      draw_string (dpy, window, gc, &gcv, font, x, y, xgwa.width, 10, wlha, 0);
+      y += line_height;
+      XSetForeground (dpy, gc, p1);
+      XSetBackground (dpy, gc, p0);
+      draw_string (dpy, window, gc, &gcv, font, x, y, 10, 10, wlhb, 0);
+
+      y = xgwa.height - (line_height+2);
+      XSetBackground (dpy, gc, p2);
+      XSetForeground (dpy, gc, p2);
+      XFillRectangle (dpy, window, gc, 0, y, xgwa.width, line_height+2);
+      XSetForeground (dpy, gc, p0);
+      draw_string (dpy, window, gc, &gcv, font, x, y, 10, 10, wlhc, 0);
+    }
   else
     abort();
 
@@ -2455,7 +2514,7 @@ hppa_linux (Display *dpy, Window window, int delay)
      { -1, "Soft power switch enabled, polling @ 0xf0400804.\n" },
      { -1, "pty: 256 Unix98 ptys configured\n" },
      { -1, "Generic RTC Driver v1.07\n" },
-     { -1, "Serial: 8250/16550 driver $Revision: 1.64 $ 13 ports, "
+     { -1, "Serial: 8250/16550 driver $Revision: 1.66 $ 13 ports, "
            "IRQ sharing disabled\n" },
      { -1, "ttyS0 at I/O 0x3f8 (irq = 0) is a 16550A\n" },
      { -1, "ttyS1 at I/O 0x2f8 (irq = 0) is a 16550A\n" },
@@ -3496,6 +3555,224 @@ msdos (Display *dpy, Window window, int delay)
 }
 
 
+/*
+ * OS/2 panics, by Knut St. Osmundsen <bird-xscreensaver@anduin.net>
+ *
+ * All but one messages are real ones, some are from my test machines
+ * and system dumps, others are reconstructed from google results.
+ * Please, don't be to hard if the formatting of the earlier systems
+ * aren't 100% correct.
+ */
+static void
+os2 (Display *dpy, Window window, int delay)
+{
+  XGCValues gcv;
+  XWindowAttributes xgwa;
+  XFontStruct *font;
+  GC gc;
+  char *fontname;
+  const char *def_font = "fixed";
+  const char *str;
+  const char *panic_msg;
+  time_t start;
+  int line_height;
+  int i;
+  int y;
+
+# ifdef __GNUC__
+  __extension__   /* don't warn about "string length is greater than the
+                     length ISO C89 compilers are required to support"
+                     in the following string constant... */
+# endif
+
+  static const char *os2_panics[] =
+    { /* OS/2 2.0 trap - details are bogus (CR0++). */
+      "TRAP 0002       ERRCD=0000  ERACC=****  ERLIM=********\n"
+      "EAX=7d240a58  EBX=ff202fdc  ECX=00064423  EDX=00003624\n"
+      "ESI=fff3272c  EDI=7d240004  EBP=00004a44  FLG=00003202\n"
+      "CS:EIP=0160:fff702a6  CSACC=c09d  CSLIM=ffffffff\n"
+      "SS:ESP=0030:00004a38  SSACC=1097  SSLIM=00003fff\n"
+      "DS=0158  DSACC=c0f3  DSLIM=ffffffff  CR0=fffffffb\n"
+      "ES=0158  ESACC=c0f3  ESLIM=ffffffff  CR2=1a060014\n"
+      "FS=0000  FSACC=****  FSLIM=********\n"
+      "GS=0000  GSACC=****  GSLIM=********\n"
+      "\n"
+      "The system detected an internal processing error\n"
+      "at location ##0160:fff6453f - 000d:a53f\n"
+      "60000, 9084\n"
+      "\n"
+      "038600d1\n"
+      "Internal revision 6.307, 92/03/01\n"
+      "\n",
+
+      /* warp 3 (early) */
+      "TRAP 000e       ERRCD=0000  ERACC=****  ERLIM=********\n"
+      "EAX=ff050c20  EBX=000000bb  ECX=ffff00c1  EDx=fff379b8\n"
+      "ESI=ffe55a3c  EDI=00000000  EBP=00004eb8  FLG=00013282\n"
+      "CS:EIP=0160:fff8dbb8  CSACC=c09b  CSLIM=ffffffff\n"
+      "SS:EIP=0030:00004eb4  SSACC=1097  SSLIM=00003fff\n"
+      "DS=0158  DSACC=c0f3  DSLIM=ffffffff  CR0=8001001b\n"
+      "ES=0158  DSACC=c0f3  DSLIM=ffffffff  CR2=000000c7\n"
+      "FS=0000  FSACC=****  FSLIM=********\n"
+      "GS=0000  GSACC=****  GSLIM=********\n"
+      "\n"
+      "The system detected an internal processing error\n"
+      "at location ##0160:fff66bf0 - 000d:9bf0.\n"
+      "60000, 9084\n"
+      "\n"
+      "048600b4\n"
+      "Internal revision 8.125, 94/02/16\n"
+      "\n"
+      "The system is stopped.  Record the location number of the error\n"
+      "and contact your service representative.\n",
+
+      /* warp 3 */
+      "TRAP 000e       ERRCD=0002  ERACC=****  ERLIM=********\n"
+      "EAX=00000000  EBX=fdef1e0c  ECX=00003824  EDX=0000edf9\n"
+      "ESI=fdf30e80  EDI=fc8b0000  EBP=00005658  FLG=00012246\n"
+      "CS:EIP=0160:fff8ada3  CSACC=c09b  CSLIM=ffffffff\n"
+      "SS:ESP=0030:000055d4  SSACC=1097  SSLIM=0000480f\n"
+      "DS=0158  DSACC=c093  DSLIM=ffffffff  CR0=8001001b\n"
+      "ES=0158  ESACC=c093  ESLIM=ffffffff  CR2=fc8b0000\n"
+      "FS=03b8  FSACC=0093  FSLIM=00000023\n"
+      "GS=0000  GSACC=****  GSLIM=********\n"
+      "\n"
+      "The system detected an internal processing error\n"
+      "at location ##0160:fff5c364 - 000d:a364.\n"
+      "60000, 9084\n"
+      "\n"
+      "05860526\n"
+      "Internal revision 8200,94/11/07\n"
+      "\n"
+      "The system is stopped. Record all of the above information and\n"
+      "contact your service representative.\n",
+
+      /* warp 3 (late) */
+      "TRAP 000d       ERRCD=2200  ERACC=1092  ERLIM=00010fff\n"
+      "EAX=0000802e  EBX=fff001c8  ECX=9bd80000  EDX=00000000\n"
+      "ESI=fff09bd8  EDI=fdeb001b  EBP=00000000  FLG=00012012\n"
+      "CS:EIP=0168:fff480a2  CSACC=c09b  CSLIM=ffffffff\n"
+      "SS:ESP=00e8:00001f32  SSACC=0093  SSLIM=00001fff\n"
+      "DS=0940  DSACC=0093  DSLIM=00000397  CR0=8001001b\n"
+      "ES=00e8  ESACC=0093  ESLIM=00001fff  CR2=15760008\n"
+      "FS=0000  FSACC=****  FSLIM=****\n"
+      "GS=0000  GSACC=****  GSLIM=****\n"
+      "\n"
+      "The system detected an internal processing error\n"
+      "at location ##0168:fff4b06e - 000e:c06e\n"
+      "60000, 9084\n"
+      "\n"
+      "06860652\n"
+      "Internal revision 8.259_uni,98/01/07\n"
+      "\n"
+      "The system is stopped. Record all of the above information and\n"
+      "contact your service representative.\n",
+
+      /* Warp 4.52+ - the official r0trap.exe from the debugging classes */
+      "Exception in module: OS2KRNL\n"
+      "TRAP 000e       ERRCD=0002  ERACC=****  ERLIM=********\n"
+      "EAX=00000001  EBX=80010002  ECX=ffed4638  EDX=0003f17b\n"
+      "ESI=00000001  EDI=00000002  EBP=00005408  FLG=00012202\n"
+      "CS:EIP=0168:fff3cd2e  CSACC=c09b  CSLIM=ffffffff\n"
+      "SS:ESP=0030:000053ec  SSACC=1097  SSLIM=000044ff\n"
+      "DS=0160  DSACC=c093  DSLIM=ffffffff  CR0=8001001b\n"
+      "ES=0160  ESACC=c093  ESLIM=ffffffff  CR2=00000001\n"
+      "FS=0000  FSACC=****  FSLIM=********\n"
+      "GS=0000  GSACC=****  GSLIM=********\n"
+      "\n"
+      "The system detected an internal processing error at\n"
+      "location ##0168:fff1e3f3 - 000e:c3f3.\n"
+      "60000, 9084\n"
+      "\n"
+      "068606a0\n"
+      "Internal revision 14.097_UNI\n"
+      "\n"
+      "The system is stopped. Record all of the above information and\n"
+      "contact your service representative.\n",
+
+      /* Warp 4.52+, typical JFS problem. */
+      "Exeption in module: JFS\n"
+      "TRAP 0003       ERRCD=0000  ERACC=****  ERLIM=********\n"
+      "EAX=00000000  EBX=ffffff05  ECX=00000001  EDX=f5cd8010\n"
+      "ESI=000000e6  EDI=000000e7  EBP=f9c7378e  FLG=00002296\n"
+      "CS:EIP=0168:f8df3250  CSACC=c09b  CSLIM=ffffffff\n"
+      "SS:ESP=1550:fdc73778  SSACC=c093  SSLIM=ffffffff\n"
+      "DS=0160  DSACC=c093  DSLIM=ffffffff  CR0=80010016\n"
+      "ES=0160  ESACC=c093  DSLIM=ffffffff  CR2=05318000\n"
+      "FS=03c0  FSACC=0093  DSLIM=00000023\n"
+      "GS=0160  GSACC=c093  DSLIM=ffffffff\n"
+      "\n"
+      "The system detected an internal processing error\n"
+      "at location ##0168:fff1e2ab - 000e:c2ab.\n"
+      "60000, 9084\n"
+      "\n"
+      "07860695\n"
+      "\n"
+      "Internal revision 14.100c_UNI\n"
+      "\n"
+      "The system is stopped. Record all of the above information and\n"
+      "contact your service representative.\n"
+    };
+
+  i = random() % countof(os2_panics);
+  panic_msg = os2_panics[i];
+
+  XGetWindowAttributes(dpy, window, &xgwa);
+  fontname = get_string_resource((xgwa.height > 1000 
+                                  ? "OS2.font3" : xgwa.height > 600
+                                  ? "OS2.font2" : "OS2.font"),
+                                 "OS2.Font");
+  if (!fontname || !*fontname) 
+    fontname = (char *)def_font;
+  font = XLoadQueryFont(dpy, fontname);
+  if (!font) 
+    font = XLoadQueryFont(dpy, def_font);
+  if (!font) 
+    exit(-1);
+  if (fontname && fontname != def_font)
+    free(fontname);
+
+  gcv.font = font->fid;
+  gcv.foreground = get_pixel_resource("OS2.foreground",
+                                      "OS2.Foreground",
+                                      dpy, xgwa.colormap);
+  gcv.background = get_pixel_resource("OS2.background",
+                                      "OS2.Background",
+                                      dpy, xgwa.colormap);
+  XSetWindowBackground(dpy, window, gcv.background);
+  XClearWindow(dpy, window);
+
+  gc = XCreateGC(dpy, window, GCFont|GCForeground|GCBackground, &gcv);
+
+  /* draw the text, calc the cursor location and make it blink. */
+  line_height = font->ascent + font->descent;
+  draw_string(dpy, window, gc, &gcv, font, 0, 0, 10, 10, panic_msg, 0);
+
+  y = line_height * 2;
+  str = panic_msg - 1;
+  while ((str = strchr(str + 1, '\n')) != NULL)
+    y += line_height;
+
+  start = time((time_t *) 0);
+  while (start + delay > time((time_t *) 0))
+    {
+      XDrawImageString(dpy, window, gc, 0, y, "_", 1);
+      XSync(dpy, False);
+      usleep(200000L);
+      XDrawImageString(dpy, window, gc, 0, y, "  ", 2);
+      XSync(dpy, False);
+      usleep(200000L);
+      if (bsod_sleep(dpy, 0))
+        break;
+    }
+
+  XFreeGC(dpy, gc);
+  XSync(dpy, False);
+  XClearWindow(dpy, window);
+  XFreeFont(dpy, font);
+}
+
+
 
 \f
 char *progclass = "BSOD";
@@ -3527,11 +3804,14 @@ char *defaults [] = {
   "*doVMS:                True",
   "*doHVX:                True",
   "*doMSDOS:              True",
+  "*doOS2:                True",
 
   ".Windows.font:         -*-courier-bold-r-*-*-*-120-*-*-m-*-*-*",
   ".Windows.font2:        -*-courier-bold-r-*-*-*-180-*-*-m-*-*-*",
   ".Windows.foreground:           White",
   ".Windows.background:           #0000AA",    /* EGA color 0x01. */
+  ".windowsLH.background:  #AA0000",    /* EGA color 0x04. */
+  ".windowsLH.background2: #AAAAAA",    /* EGA color 0x07. */
 
   ".Amiga.font:                   -*-courier-bold-r-*-*-*-120-*-*-m-*-*-*",
   ".Amiga.font2:          -*-courier-bold-r-*-*-*-180-*-*-m-*-*-*",
@@ -3631,6 +3911,12 @@ char *defaults [] = {
   ".MSDOS.foreground:     White",
   ".MSDOS.background:     Black",
 
+  ".OS2.font:             -*-courier-bold-r-*-*-*-120-*-*-m-*-*-*",
+  ".OS2.font2:            -*-courier-bold-r-*-*-*-180-*-*-m-*-*-*",
+  ".OS2.font3:            -*-courier-bold-r-*-*-*-240-*-*-m-*-*-*",
+  ".OS2.foreground:       White",
+  ".OS2.background:       Black",
+
   ANALOGTV_DEFAULTS
 
 #ifdef HAVE_XSHM_EXTENSION
@@ -3690,6 +3976,8 @@ XrmOptionDescRec options [] = {
   { "-no-vms",         ".doVMS",               XrmoptionNoArg,  "False" },
   { "-msdos",          ".doMSDOS",             XrmoptionNoArg,  "True"  },
   { "-no-msdos",       ".doMSDOS",             XrmoptionNoArg,  "False" },
+  { "-os2",            ".doOS2",               XrmoptionNoArg,  "True"  },
+  { "-no-os2",         ".doOS2",               XrmoptionNoArg,  "False" },
   ANALOGTV_OPTIONS
   { 0, 0, 0, 0 }
 };
@@ -3722,6 +4010,7 @@ static struct {
   { "Tru64",           tru64 },
   { "Apple2",          apple2crash },
   { "VMS",             vms },
+  { "OS2",             os2 },
   { "MSDOS",           msdos },
 };
 
@@ -3768,7 +4057,7 @@ screenhack (Display *dpy, Window window)
       int count = countof(all_modes);
       char name[100], class[100];
 
-      if (only > 0)
+      if (only >= 0)
         i = only;
       else
         do {  i = (random() & 0xFF) % count; } while (i == j);
index d04456d55e13e75b56622c1c64e9474a80f73296..49588088878f5910b9d641c4fdfbfe640ffa325c 100644 (file)
@@ -28,7 +28,7 @@ program is the finest in personal computer emulation.
 steps through a set of screens, each one a recreation of a different failure
 mode of an operating system.  Systems depicted include
 Windows 3.1, Windows 95, Windows NT, MS-DOS, AmigaDOS 1.3, Linux,
-SCO UNIX, BSD UNIX, HPUX, Solaris, Tru64, VMS, HVX/GCOS6, IBM OS/390, 
+SCO UNIX, BSD UNIX, HPUX, Solaris, Tru64, VMS, HVX/GCOS6, IBM OS/390, OS/2,
 MacOS (MacsBug, Bomb, Sad Mac, and OSX), Atari ST, Apple ][+, and
 NCD X Terminals.
 .PP
@@ -91,6 +91,7 @@ hacks are displayed and which aren't.
 .BR doTru64 ,
 .BR doVMS ,
 .BR doMSDOS ,
+.BR doOS2 ,
 and
 .BR doHVX .
 Each of these is a Boolean resource, they all default to true, except
@@ -118,7 +119,8 @@ registered trademarks of Microsoft Corporation.  Apple Macintosh is a
 registered trademark of Apple Computer.  Amiga is a registered trademark of
 Amiga International, Inc.  Atari ST is probably a trademark, too, but it's
 hard to tell who owns it.  Linux is a registered trademark of Linus Torvalds,
-but it isn't his fault.
+but it isn't his fault. OS/2 is a registered trademark of International 
+Business Machines Corporation.
 .SH COPYRIGHT
 Copyright \(co 1998-2003 by Jamie Zawinski.  Permission to use, copy, modify, 
 distribute, and sell this software and its documentation for any purpose is 
index 35f68147ad2b21e6d5b22a3d4a273e499346c40a..fe551ca714833a0a2205f2de36ef16b20211a220 100644 (file)
@@ -3,9 +3,15 @@
 bumps - move distorting spotlight around desktop
 .SH SYNOPSIS
 .B bumps
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-radius \fIpixels\fP]
+[\-display \fIhost:display.screen\fP]
+[\-foreground \fIcolor\fP]
+[\-background \fIcolor\fP]
+[\-window]
+[\-root]
+[\-mono]
+[\-install]
+[\-visual \fIvisual\fP]
+[\-delay \fIusecs\fP]
 .SH DESCRIPTION
 The \fIbumps\fP program takes an image and exposes small, distorted
 sections of it as if through an odd wandering spotlight beam.
@@ -40,9 +46,6 @@ or the id number (decimal or hex) of a specific visual.
 .TP 8
 .B \-delay \fImicroseconds\fP
 Slow it down.
-.TP 8
-.B \-radius \fIpixels\fP
-Radius of the spotlight in pixels.
 .SH ENVIRONMENT
 .PP
 .TP 8
index a799bde4ae01b8f49198d728d9fcdb214c73223a..099ddee3241c124fbba05078ca6e83f2fd5bef9f 100644 (file)
@@ -73,6 +73,13 @@ struct field
     f->width = 0;
     f->cell_size = get_integer_resource("cellSize", "Integer");
     f->max_age = get_integer_resource("maxAge", "Integer");
+
+    if (f->max_age > 255) {
+      fprintf (stderr, "%s: max-age must be < 256 (not %d)\n", progname,
+               f->max_age);
+      exit (1);
+    }
+
     f->cells = NULL;
     f->new_cells = NULL;
     return f;
@@ -81,15 +88,14 @@ struct field
 void 
 resize_field(struct field * f, unsigned int w, unsigned int h)
 {
+    int s = w * h * sizeof(unsigned char);
     f->width = w;
     f->height = h;
 
-    f->cells = xrealloc(f->cells,
-                       w * sizeof(unsigned char) * 
-                        h * sizeof(unsigned char));
-    f->new_cells =
-       xrealloc(f->new_cells,
-                w * sizeof(unsigned char) * h * sizeof(unsigned char));
+    f->cells = xrealloc(f->cells, s);
+    f->new_cells = xrealloc(f->new_cells, s);
+    memset(f->cells, 0, s);
+    memset(f->new_cells, 0, s);
 }
 
 inline unsigned char 
@@ -202,8 +208,8 @@ do_tick(struct field * f)
            count += *new_cell_at(f, x, y) = is_alive(f, x, y);
        }
     }
-    memcpy(f->cells, f->new_cells, f->width * sizeof(unsigned char) *
-          f->height * sizeof(unsigned char));
+    memcpy(f->cells, f->new_cells, f->width * f->height *
+           sizeof(unsigned char));
     return count;
 }
 
index 28723d04e90d0bf7dd9e000b05bd22200e62ba8f..5c9cdb2ee4b6712e471b093a7b008511fae80a94 100644 (file)
@@ -36,6 +36,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FADEPLOT.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FIBERLAMP.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FIREWORKX.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FIREWORKX_MMX.S
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAG.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAME.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLOW.C
@@ -55,6 +56,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HYPERCUBE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) IFS.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) IMSMAP.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) INTERAGGREGATE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) INTERFERENCE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) INTERMOMENTARY.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) JIGSAW.C
index 28723d04e90d0bf7dd9e000b05bd22200e62ba8f..5c9cdb2ee4b6712e471b093a7b008511fae80a94 100644 (file)
@@ -36,6 +36,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FADEPLOT.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FIBERLAMP.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FIREWORKX.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FIREWORKX_MMX.S
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAG.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAME.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLOW.C
@@ -55,6 +56,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HYPERCUBE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) IFS.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) IMSMAP.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) INTERAGGREGATE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) INTERFERENCE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) INTERMOMENTARY.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) JIGSAW.C
index 9071263320ed4fb5887116267fd4781d9546d5fd..ce3626ffec88bd96afb12234e90182dd367fa6b9 100644 (file)
@@ -4,8 +4,8 @@
             a screen saver and locker for the X window system
                             by Jamie Zawinski
 
-                              version 4.21
-                               20-Mar-2005
+                              version 4.22
+                               22-Jun-2005
 
                      http://www.jwz.org/xscreensaver/
 
diff --git a/hacks/config/antmaze.xml b/hacks/config/antmaze.xml
new file mode 100644 (file)
index 0000000..f9ee2b8
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="antmaze" _label="AntMaze">
+
+  <command arg="-root"/>
+
+  <number id="delay" type="slider" arg="-delay %"
+          _label="Speed" _low-label="Slow" _high-label="Fast"
+          low="0" high="50000" default="20000"
+          convert="invert"/>
+
+  <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
+
+  <_description>
+Antmaze draws a few views of a few ants walking around in a simple
+maze. Written by Blair Tennessy.
+  </_description>
+</screensaver>
index 7bc0211e368d49ab9a904a98806684c3e1025a18..0d7c61822626b5c9f43764790ba1dba76a387394 100644 (file)
           _label="Box Size" low="1" high="8" default="1"/>
 
   <hgroup>
-   <boolean id="fade"      _label="Fade"       arg-unset="-no-fade"/>
-   <boolean id="dissolve"  _label="Dissolve"   arg-set="-dissolve"/>
-   <boolean id="wire"      _label="Wireframe"  arg-set="-wireframe"/>
+   <boolean id="fade"      _label="Fade"        arg-unset="-no-fade"/>
+   <boolean id="blur"      _label="Motion Blur" arg-unset="-no-blur"/>
+  </hgroup>
+  <hgroup>
+   <boolean id="dissolve"  _label="Dissolve"    arg-set="-dissolve"/>
+   <boolean id="wire"      _label="Wireframe"   arg-set="-wireframe"/>
   </hgroup>
 
   <_description>
index 50256015869ac880996681b1a138e1fab90eb7a9..f3eda0950fb84197a6e81da15f7867df5244a165 100644 (file)
           _label="Motion Speed" _low-label="Slow" _high-label="Fast"
           low="0.001" high="4.0" default="0.5"/>
 
-  <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
+  <hgroup>
+   <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
+   <boolean id="wire"    _label="Wireframe" arg-set="-wireframe"/>
+  </hgroup>
 
   <_description>
 Draws a box full of 3D bouncing balls that explode.
index 17d2d02fd8c4d2580070255674dd733da21ed7e9..0853ec0eb74cc236574fad96b2cbf6a06a8c973f 100644 (file)
@@ -18,6 +18,7 @@
      <boolean id="atari"      _label="Atari"        arg-set="-atari"/>
      <boolean id="apple2"     _label="Apple II"     arg-unset="-no-apple2"/>
      <boolean id="nvidia"     _label="Nvidia"       arg-unset="-no-nvidia"/>
+     <boolean id="os2"      _label="OS/2"        arg-unset="-no-os2"/>
    </vgroup>
    <vgroup>
      <boolean id="mac"        _label="Sad Mac"      arg-unset="-no-mac"/>
index 19bf40ab98ba6935f686e530a18516f98d57a582..89b1078440908c9ea5d0de7b876d75c3942d8820 100644 (file)
@@ -9,8 +9,9 @@
           low="0" high="20000" default="15000"
           convert="invert"/>
 
+  <boolean id="transp" _label="Transparent Bubbles" arg-set="-transparent"/>
+  <string id="color"    _label="Bubble Color"      arg="-color %"/>
   <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
-
   <_description>
 Draws a stream of rising, undulating 3D bubbles, rising toward the
 top of the screen, with nice specular reflections. Written by Richard
index e77026a43a2c020ccd1d4a74b14835695b6c7fab..71070ca68b4af727e1eaa97bfc31c0a1d85e26f7 100644 (file)
@@ -9,12 +9,11 @@
           low="0" high="30000" default="25000"
           convert="invert"/>
 
-<!--
   <select id="render">
+    <option id="tex"   _label="Textured"/>
+    <option id="solid" _label="Solid"     arg-set="-mono"/>
     <option id="wire"  _label="Wireframe" arg-set="-wireframe"/>
-    <option id="solid" _label="Solid"/>
   </select>
--->
 
   <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
 
index a33479b7aa265aa8097985ccf5996147ccd9f2f9..dfa2294e644449fdd954968ca6d1833d33342134 100644 (file)
@@ -11,7 +11,7 @@
 
   <number id="maxage" type="slider" arg="-max-age %"
           _label="Max Age" _low-label="Young" _high-label="Old"
-          low="2" high="200" default="64"/>
+          low="2" high="255" default="64"/>
 
   <number id="density" type="slider" arg="-initial-density %"
           _label="Initial Density" _low-label="Low" _high-label="High"
diff --git a/hacks/config/crackberg.xml b/hacks/config/crackberg.xml
new file mode 100644 (file)
index 0000000..1e301b1
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="crackberg" _label="Crackberg">
+
+  <command arg="-root"/>
+
+  <number id="delay" type="slider" arg="-delay %"
+          _label="Frame Delay" _low-label="Short" _high-label="Long"
+          low="0" high="50000" default="20000" />
+
+  <number id="visibility" type="slider" arg="-visibility %"
+          _label="Visibility" _low-label="Mouse Hole" _high-label="Eagle Nest"
+          low="0.2" high="1.0" default="0.6" />
+  <number id="nsubdivs" type="spinbutton" arg="-nsubdivs %"
+          _label="Subdivisions"
+          low="2" high="9" default="4" />
+
+  <boolean id="flat" _label="Flat Shading" arg-set="-flat"/>
+  <boolean id="lit" _label="Lighting" arg-set="-lit"/>
+  <boolean id="water" _label="Water" arg-unset="-nowater"/>
+  <boolean id="letter" _label="Letterbox" arg-set="-letterbox"/>
+  <boolean id="wire" _label="Wireframe" arg-set="-wire"/>
+  <boolean id="fps" _label="Display FPS" arg-set="-fps"/>
+
+  <hgroup>
+      <select id="init">
+        <option id="crack" _label="Confused" arg-set="-crack"/>
+        <option id="growing" _label="Growing"/>
+        <option id="boring" _label="Immediate" arg-set="-boring"/>
+      </select>  
+
+      <select id="color">
+        <option id="random" _label="Random" arg-set="-color random"/>
+        <option id="plain" _label="Plain"/>
+        <option id="ice" _label="Ice" arg-set="-color ice"/>
+        <option id="magma" _label="Swampy" arg-set="-color magma"/>
+        <option id="vomit" _label="Vomit" arg-set="-color vomit"/>
+      </select>  
+  </hgroup>    
+    
+
+  <_description>
+Flies through height maps, optionally animating the creation and
+destruction of generated tiles; tiles `grow' into place.
+  </_description>
+</screensaver>
index b99e9a13a8209c6bdf46af38a3a809bd91d06750..0032e4eabfe58c0f6094c588b20e815951e038e8 100644 (file)
@@ -6,18 +6,22 @@
 
   <number id="Delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
-          low="0" high="50000" default="10000"
+          low="0" high="50000" default="1000"
           convert="invert"/>
 
   <number id="maxlife" type="slider" arg="-maxlife %"
           _label="Activity" _low-label="Dense" _high-label="Sparse"
-          low="250" high="5000" default="1200"/>
+          low="250" high="5000" default="2000"/>
 
-  <boolean id="light" _label="Light effect" arg-unset="-nolight"/>
-  <boolean id="fade"  _label="Fast Fade (more realistic)" arg-set="-fade"/>
-  <boolean id="shoot" _label="Shoot" arg-set="-shoot"/>
+  <boolean id="flash" _label="Light Flash" arg-unset="-noflash"/>
+  <boolean id="glow"  _label="Self Glowing Smoke!" arg-unset="-noglow"/>
+  <boolean id="shoot" _label="Shoot The Shells up" arg-set="-shoot"/>
 
   <_description>
-Pyrotechnics simulation eye-candy. Written by Rony B. Chandran.
+Pyrotechnics simulation eye-candy, MMX optimized. 
+Turn off Light for speed. Clicks on the preview window Explodes..!
+
+Written by Rony B Chandran. 
+http://www.ronybc.8k.com
   </_description>
 </screensaver>
index 5cfdd9de9fd66ea4519b8e73aaaf78a6518a9e5a..951ddd79d51461ba1cc2d738d9f14521dd2adced 100644 (file)
@@ -10,7 +10,7 @@
           convert="invert"/>
 
   <select id="render">
-    <option id="solid"    _label="Solid Tiles" arg-set="-no-texture"/>
+    <option id="solid"    _label="Solid Tiles"/>
     <option id="wire"     _label="Wireframe" arg-set="-wireframe"/>
   </select>
 
index 7ccc12771ea8e490b6d528a580af05ef1137145f..c600757acd7a608ebecb266be9662211ca56ab3a 100644 (file)
     <option id="xyz" _label="Rotate around all three axes"/>
   </select>
 
-  <select id="render">
-    <option id="wire"  _label="Wireframe" arg-set="-wireframe"/>
-    <option id="solid" _label="Solid"/>
-  </select>
-
   <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
 
   <_description>
index 2b393b2c6292aa07796da5510014c06154c19580..4dfeb459215fa15c3d923ac4ff7e152eb8c49fae 100644 (file)
@@ -9,9 +9,11 @@
           low="0" high="20000" default="20000"
           convert="invert"/>
 
+<!--
   <number id="z" type="slider" arg="-observer-z %"
           _label="Zoom" _low-label="Near" _high-label="Far"
           low="1.125" high="10.0" default="3.0"/>
+-->
 
   <hgroup>
     <vgroup>
index ed4a0dedb017ad0868754812405990386ea41c20..1dff4d646d0d55588dbfd2d702a74a5575bee1ad 100644 (file)
@@ -5,8 +5,8 @@
   <command arg="-root"/>
 
   <select id="display-mode">
-    <option id="mesh" _label="Wireframe Mesh"
-            arg-set="-mesh"/>
+    <option id="wire" _label="Wireframe Mesh"
+            arg-set="-wireframe"/>
     <option id="surface" _label="Solid Surface"
             arg-set="-surface"/>
     <option id="transparent" _label="Transparent Surface"
diff --git a/hacks/config/interaggregate.xml b/hacks/config/interaggregate.xml
new file mode 100644 (file)
index 0000000..71ace19
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="interaggregate" _label="Interaggregate">
+
+  <command arg="-root"/>
+
+  <number id="init" type="spinbutton" arg="-num-discs %"
+          _label="Number of Discs" low="50" high="400" default="85"/>
+
+  <number id="speed" type="slider" arg="-draw-delay %"
+          _label="Speed" _low-label="Slow" _high-label="Fast"
+          low="0" high="60000" default="30000" convert="invert"/>
+
+  <_description>
+The Intersection Aggregate is a fun visualization defining the relationships 
+between objects with Casey Reas, William Ngan, and Robert Hodgin. Commissioned 
+for display at the Whitney Museum of American Art.
+
+A surface filled with 100 medium to small sized circles. Each circle has a 
+different size and direction, but moves at the same slow rate. Display:
+    A. The instantaneous intersections of the circles.
+    B. The aggregate intersections of the circles.
+
+Ported to XScreensaver from the art project "InterAggregate" at
+http://www.complexification.net
+  </_description>
+</screensaver>
index b27d02b5868bf4b85e1d75e0dbb675e9e74b9054..043aada9af662c122895aff8efe731dc9d4a0492 100644 (file)
@@ -29,6 +29,6 @@
 
   <_description>
 This generates random spline-ish line drawings and morphs between
-them.  Written by Sverre H.  Huseby and Glenn T.  Lines.
+them.  Written by Sverre H. Huseby and Glenn T. Lines.
   </_description>
 </screensaver>
index ca3d1242500a7806c6318837699fac23e0cee393..eaf4d2ed2737b7b53b8328be00fbef7171cf3029 100644 (file)
@@ -9,10 +9,6 @@
           low="0" high="20000" default="10000"
           convert="invert"/>
 
-  <number id="speed" type="slider" arg="-redoDelay %"
-          _label="Duration" _low-label="1 Second" _high-label="30 Seconds"
-          low="1" high="30" default="3"/>
-
   <number id="ncolors" type="slider" arg="-ncolors %"
             _label="Number of Colors" _low-label="Two" _high-label="Many"
             low="1" high="255" default="64"/>
index a6c691e3cc00b9eba977faa4002fbbafcb4861ec..34e5a2f7917611abc6d0171d159e21956cf67647 100644 (file)
@@ -5,8 +5,8 @@
   <command arg="-root"/>
 
   <select id="display-mode">
-    <option id="mesh" _label="Wireframe Mesh"
-            arg-set="-mesh"/>
+    <option id="wire" _label="Wireframe Mesh"
+            arg-set="-wireframe"/>
     <option id="surface" _label="Solid Surface"
             arg-set="-surface"/>
     <option id="transparent" _label="Transparent Surface"/>
index c8d384ba3df61d96468ee493c47ead1e17e9b3a3..4558e1bb811595c80f378fa80454ce279f673442 100644 (file)
@@ -9,10 +9,15 @@
           low="0" high="50000" default="20000"
           convert="invert"/>
 
-  <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
+  <select id="render">
+    <option id="wire"  _label="Wireframe" arg-set="-wireframe"/>
+    <option id="solid" _label="Solid"/>
+  </select>
 
   <boolean id="eye" _label="Draw Eye" arg-unset="-no-eye"/>
 
+  <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
+
   <_description>
 The providence code displays an eye, shrouded in glory, set upon the
 base of a pyramid.
index e07f92fbc1ba5f1f4db3aec6db344d5deb42a037..d90028460d9bae39909b31b3266f990bdc94881e 100644 (file)
@@ -9,7 +9,10 @@
           low="0" high="50000" default="20000"
           convert="invert"/>
 
-  <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
+  <hgroup>
+   <boolean id="wire"    _label="Wireframe" arg-set="-wireframe"/>
+   <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
+  </hgroup>
 
   <_description>
 Solves the N-Queens problem (where, in this program, N is between 5 and
diff --git a/hacks/config/tangram.xml b/hacks/config/tangram.xml
new file mode 100644 (file)
index 0000000..da9fc84
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="tangram" _label="Tangram">
+
+  <command arg="-root"/>
+
+  <number id="delay" type="slider" arg="-delay %"
+          _label="Speed" _low-label="Fast" _high-label="Slow"
+          low="0" high="50000" default="30000"/>
+
+  <number id="viewing_time" type="spinbutton" arg="-viewing_time %"
+          _label="Viewing Time" low="0" high="30" default="5" />
+
+  <hgroup>
+   <boolean id="wire"      _label="Wireframe"  arg-set="-wireframe"/>
+  </hgroup>
+
+  <_description>
+Watch the computer solve Tangram puzzles.
+Written by Jeremy English.
+  </_description>
+</screensaver>
index fe1477bd5ef98895b7fa7ebe4c70e5fe941a0a40..17f43329df5af0767e3956a8d70b5c0352e57a9a 100644 (file)
@@ -44,7 +44,7 @@ Slow it down.
 The direction in which the image should tend to slide.  Legal values are
 \fIrandom\fP (meaning pick one), \fIup\fP, \fIleft\fP, \fIright\fP, 
 \fIdown\fP, \fIupleft\fP, \fIdownleft\fP, \fIupright\fP, \fIdownright\fP, 
-\fIshuffle\fP (meaning perfer no particular direction), \fIin\fP (meaning
+\fIshuffle\fP (meaning prefer no particular direction), \fIin\fP (meaning
 move things toward the center), \fIout\fP (meaning move things away
 from the center), \fImelt\fP (meaning melt straight 
 downward),  \fIstretch\fP (meaning stretch the screen downward),
index 9115655d1e4ab86e7ad18afaf1d32bdcc2998f75..2439c2856484e7ca90af5e33107e7b08ad04f094 100644 (file)
@@ -1,6 +1,6 @@
 .TH XScreenSaver 1 "" "X Version 11"
 .SH NAME
-demon - celular automaton.
+demon - cellular automaton.
 .SH SYNOPSIS
 .B demon
 [\-display \fIhost:display.screen\fP]
index 66c0a3ed89463eac409c30a9431dc458b8a239b7..870d23743ebc1be9ab142b93ad9579285c6e3a1c 100644 (file)
@@ -6,7 +6,7 @@ static const char sccsid[] = "@(#)discrete.c    5.00 2000/11/01 xlockmore";
 #endif
 
 /*-
- * Copyright (c) 1996 by Tim Auckland <Tim.Auckland@Procket.com>
+ * Copyright (c) 1996 by Tim Auckland <tda10.geo@yahoo.com>
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation for any purpose and without fee is hereby granted,
index 407f06a39dd4fd9467ad5a8affb3ac6264552564..a1cf05b7ea4479b6ca6520264165e8a6a782a561 100644 (file)
@@ -44,7 +44,7 @@ Whether fractals should grow; otherwise, they are animated.
 .B \-liss
 .TP 8
 .B \-no\-liss
-Whether we should use lissojous figures to get points.
+Whether we should use lissajous figures to get points.
 
 .SH ENVIRONMENT
 .PP
index 9e27e7ead3c51cda30e8d56cc52e04ddfa73a62d..b2d6185d7d6b00a71029fd055e58f976e095f67c 100644 (file)
@@ -7,7 +7,7 @@ static const char sccsid[] = "@(#)fiberlamp.c   5.00 2000/11/01 xlockmore";
 #endif
 
 /*-
- * Copyright (c) 2005 by Tim Auckland <Tim.Auckland@Procket.com>
+ * Copyright (c) 2005 by Tim Auckland <tda10.geo@yahoo.com>
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation for any purpose and without fee is hereby granted,
@@ -280,6 +280,22 @@ reshape_fiberlamp(ModeInfo * mi, int width, int height)
 }
 #endif
 
+/* sort fibers so they get drawn back-to-front, one bubble pass is
+   enough as the order only changes slowly */
+static void
+sort_fibers(fiberlampstruct *fl)
+{
+       int i;
+
+       for(i = 1; i < fl->nfibers; i++) {
+               if (fl->fiber[i - 1].node[NODES - 1].z > fl->fiber[i].node[NODES - 1].z) {
+                       fiberstruct tmp = fl->fiber[i - 1];
+                       fl->fiber[i - 1] = fl->fiber[i];
+                       fl->fiber[i] = tmp;
+               }
+       }
+}
+
 void
 draw_fiberlamp(ModeInfo * mi)
 {
@@ -304,6 +320,7 @@ draw_fiberlamp(ModeInfo * mi)
   XTranslateCoordinates(MI_DISPLAY(mi), MI_WINDOW(mi),
                                                RootWindow(MI_DISPLAY(mi),MI_SCREEN(mi)),
                                                cx, cy, &x, &y, &unused);
+  sort_fibers(fl);
 
   for(f = 0; f < fl->nfibers; f++) {
        fiberstruct *fs = fl->fiber + f;
@@ -377,6 +394,10 @@ draw_fiberlamp(ModeInfo * mi)
        XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_BLACK_PIXEL(mi));
        XDrawLines(MI_DISPLAY(mi), fl->buffer, MI_GC(mi),
                           fs->erase, NODES-1, CoordModeOrigin);
+  }
+
+  for(f = 0; f < fl->nfibers; f++) {
+       fiberstruct *fs = fl->fiber + f;
 
        {
          double x = fs->node[1].x - fl->cx + 0.025;
index a270a4799fd7e33f64c19f982d33cebb9eb37a70..c8d960ad270ec33866567de54b0693b377e3733e 100644 (file)
@@ -29,7 +29,7 @@ Draw on the root window.
 Number of Fibers.  10 - 500.  Default: 500.
 .TP 8
 .B \-cycles \fInumber\fP
-Number of cycles before the lamp is knowcked sideways.  100 - 10000.
+Number of cycles before the lamp is knocked sideways.  100 - 10000.
 Default: 10000.
 .TP 8
 .B \-delay \fInumber\fP
index 78a4e9017c7bf08674cafe5a0d930eb4a3cabb83..e8c27b5dc4604f2a03b9eda2295cec7611ddfe1e 100644 (file)
@@ -1,7 +1,9 @@
 /*
- * Fireworkx 1.3 - pyrotechnics simulation program
- * Copyright (c) 1999-2004 Rony B Chandran <ronybc@asia.com>
+ * Fireworkx 1.5 - pyrotechnics simulation program
+ * Copyright (c) 1999-2005 Rony B Chandran <ronybc@asia.com>
  *
+ * From Kerala, INDIA
+ * 
  * url: http://www.ronybc.8k.com
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * Fixed array access problems by beating on it with a large hammer.
  * Nicholas Miell <nmiell@gmail.com>
  *
+ * Freed 'free'ing up of memory by adding the forgotten 'XSync's
+ * Renuka S <renuka@local.net>
+ *
  */
 
 #include <math.h>
 #include "screenhack.h"
 #include <X11/Xutil.h>
 
-#define FWXVERSION "1.3"
+#define FWXVERSION "1.5"
 
-#define WIDTH 640
-#define HEIGHT 480
-#define SHELLCOUNT 3
+#define SHELLCOUNT 3                   /* 3 or 5  */
 #define PIXCOUNT 500                   /* 500     */
-#define RNDLIFE0 250                   /* violent */
-#define RNDLIFE1 1200                  /* 1200    */
-#define MINLIFE0 50                    /* violent */
-#define MINLIFE1 500                   /* 500     */
 #define POWER 5                        /* 5       */
 #define FTWEAK 12                      /* 12      */
 
+#if HAVE_X86_MMX
+void mmx_blur(char *a, int b, int c, int d); 
+void mmx_glow(char *a, int b, int c, int d, char *e);
+#endif
+
+#define rnd(x) ((int)(random() % (x)))
+
 static int depth;
 static int bigendian;
-static Bool light_on = True;
-static Bool fade_on  = False;
-static Bool shoot    = False;
-static Bool verbose  = False;
-static int delay     = 0;
-static int fsc_width = 0;
-static int fsc_height= 0;
-static int rndlife = RNDLIFE1;
-static int minlife = MINLIFE1;
-static float light_fade = 0.99;
-static unsigned char *real_palaka1 = NULL;
-static unsigned char *real_palaka2 = NULL;
+static Bool flash_on   = True;
+static Bool glow_on    = True;
+static Bool verbose    = False;
+static Bool shoot      = False;
+static int width;
+static int height;
+static int rndlife;
+static int minlife;
+static int delay = 0;
+static float flash_fade = 0.99;
 static unsigned char *palaka1=NULL;
 static unsigned char *palaka2=NULL;
 static XImage *xim=NULL;
@@ -67,49 +71,43 @@ typedef struct {
   float yv;}firepix;
 
 typedef struct {
+  unsigned int cx,cy;
   unsigned int life;
   unsigned int color;
-  unsigned int cx,cy;
   unsigned int special;
   unsigned int cshift;
   unsigned int vgn,shy;
-  float air,lum;
+  float air,flash;
   firepix *fpix; }fireshell;
 
-int seed = 2387776;
-int rnd(int x)
-{   /* xscreensaver */
-  if ((seed = seed % 44488 * 48271 - seed / 44488 * 3399) < 0)
-  seed += 2147483647;
-  return (seed-1) % x;
-}
-
 int explode(fireshell *fs)
 {
-  float air,adg = 0.001;     /* gravity */
+  float air,adg = 0.001;         /* gravity */
   unsigned int n,c;
-  unsigned int h = fsc_height;
-  unsigned int w = fsc_width;
+  unsigned int h = height;
+  unsigned int w = width;
   unsigned int *prgb;
   unsigned char *palaka = palaka1;
   firepix *fp = fs->fpix;
   if(fs->vgn){
     if(--fs->cy == fs->shy){  
-      fs->vgn = 0;
-      fs->lum = 20000;}    /* millions of jouls..! */
+      fs->vgn   = 0;
+      fs->flash = rnd(30000)+15000;}
     else{  
-      fs->lum = 50+(fs->cy - fs->shy)*2;
+      fs->flash = 50+(fs->cy - fs->shy)*2;
+      prgb=(unsigned int *)(palaka + (fs->cy * w + fs->cx + rnd(5)-2)*4);
+     *prgb=(rnd(8)+8)*0x000f0f10;
       return(1);}}    
   if(fs->cshift) --fs->cshift;
   if((fs->cshift+1)%50==0) fs->color = ~fs->color;
   c = fs->color;
   air = fs->air;
-  fs->lum *= light_fade;
+  fs->flash *= flash_fade;
   for(n=PIXCOUNT;n;n--){
   if(fp->burn){ --fp->burn; 
   if(fs->special){
   fp->x += fp->xv = fp->xv * air + (float)(rnd(200)-100)/2000;
-  fp->y += fp->yv = fp->yv * air + (float)(rnd(200)-100)/2000 +adg; }
+  fp->y += fp->yv = fp->yv * air + (float)(rnd(200)-100)/2000 + adg; }
   else{
   fp->x += fp->xv = fp->xv * air + (float)(rnd(200)-100)/20000;
   fp->y += fp->yv = fp->yv * air + adg; }
@@ -120,8 +118,7 @@ int explode(fireshell *fs)
      prgb = (unsigned int *)(palaka + ((int)fp->y * w + (int)fp->x)*4);
     *prgb = c; }
   } fp++;
-  } return(--(fs->life));
-}
+  } return(--fs->life); }
 
 void recycle(fireshell *fs,int x,int y)
 {
@@ -130,15 +127,17 @@ void recycle(fireshell *fs,int x,int y)
   fs->vgn = shoot;
   fs->shy = y;
   fs->cx = x;
-  fs->cy = shoot ? fsc_height : y ;
+  fs->cy = shoot ? height : y ;
   fs->color = (rnd(155)+100) <<16 |
               (rnd(155)+100) <<8  |
                rnd(255);
   fs->life = rnd(rndlife)+minlife;
   fs->air  = 1-(float)(rnd(200))/10000;
-  fs->lum  = 20000;
+  fs->flash   = rnd(30000)+15000;        /* million jouls */
   fs->cshift  = !rnd(5) ? 120:0; 
   fs->special = !rnd(10) ? 1:0; 
+  if(verbose)
+  printf("recycle(): color = %x air = %f life = %d \n",fs->color,fs->air,fs->life);
   pixlife = rnd(fs->life)+fs->life/10+1;    /* ! */
   for(n=0;n<PIXCOUNT;n++){
   fp->burn = rnd(pixlife)+32;
@@ -147,55 +146,76 @@ void recycle(fireshell *fs,int x,int y)
                (float)(rnd(20000)-10000)/10000;
   fp->x = x;
   fp->y = y; 
-  fp++;             }
-}
+  fp++;             }}
 
-void blur_best(void)
+void glow(void)
 {
-  int n;
-  unsigned int w = fsc_width;
-  unsigned int h = fsc_height;
-  unsigned char *pa, *pb, *pm;
+  unsigned int n,q;
+  unsigned int w = width;
+  unsigned int h = height;
+  unsigned char *pa, *pb, *pm, *po;
   pm = palaka1;
-  for(n=0;n<w*4;n++) pm[n]=0;    /* clean first line */
-  pm+=n;
-  h-=2; 
+  po = palaka2;
+  for(n=0;n<w*4;n++) 
+  {pm[n]=0; po[n]=0;}    /* clean first line */
+  pm+=n; po+=n; h-=2; 
   pa = pm-(w*4);
   pb = pm+(w*4);
-  if(fade_on){
-  for(n=0;n<w*h*4;n++){
-  pm[n]=(pm[n-4] + pm[n] + pm[n+4] + 
+  for(n=4;n<w*h*4-4;n++){
+  q    = pm[n-4] + (pm[n]*8) + pm[n+4] + 
          pa[n-4] + pa[n] + pa[n+4] + 
-         pb[n-4] + pb[n] + pb[n+4] +
-         pm[n] + pm[n] + (pm[n]<<2))/ 16;}}
-  else{
-  for(n=0;n<w*h*4;n++){
-  pm[n]=(pm[n-4] + pm[n] + pm[n+4] + 
+         pb[n-4] + pb[n] + pb[n+4];
+  q    -= q>8 ? 8:q;
+  pm[n] = q/16;
+  q     = q/8;
+  if(q>255) q=255;
+  po[n] = q;}
+  pm+=n; po+=n;
+  for(n=0;n<w*4;n++)
+  {pm[n]=0; po[n]=0;}}   /* clean last line */
+
+void blur(void)
+{
+  unsigned int n,q;
+  unsigned int w = width;
+  unsigned int h = height;
+  unsigned char *pa, *pb, *pm;
+  pm = palaka1;
+  pm += w*4; h-=2;  /* line 0&h */
+  pa = pm-(w*4);
+  pb = pm+(w*4);
+  for(n=4;n<w*h*4-4;n++){
+  q    = pm[n-4] + (pm[n]*8) + pm[n+4] + 
          pa[n-4] + pa[n] + pa[n+4] + 
-         pb[n-4] + pb[n] + pb[n+4])/ 9;}}
-  pm+=n;
-  for(n=0;n<w*4;n++) pm[n]=0;    /* clean last line */
-}
+         pb[n-4] + pb[n] + pb[n+4];
+  q    -= q>8 ? 8:q;
+  pm[n] = q>>4;}
+  pm += n-4;    /* last line */
+  for(n=0;n<w*4+4;n++) pm[n]=0;
+  pm = palaka1; /* first line */
+  for(n=0;n<w*4+4;n++) pm[n]=pm[n+w*4]; }
 
 void light_2x2(fireshell *fss)
 {
   unsigned int l,t,n,x,y;
   float s;
-  int w = fsc_width;
-  int h = fsc_height;
+  int w = width;
+  int h = height;
   unsigned char *dim = palaka2;
   unsigned char *sim = palaka1;
   int nl = w*4;
   fireshell *f;
+  if(glow_on) sim=dim;
   for(y=0;y<h;y+=2){
   for(x=0;x<w;x+=2){
   f = fss; s = 0;
   for(n=SHELLCOUNT;n;n--,f++){
-  s += f->lum / ( 1 + sqrt((f->cx - x)*(f->cx - x)+(f->cy - y)*(f->cy - y))); }
+  s += f->flash/(sqrt(1+(f->cx - x)*(f->cx - x)+
+                        (f->cy - y)*(f->cy - y)));}
   l = s;
 
   t = l + sim[0];
-  dim[0] = (t > 255 ? 255 : t);         /* cmov's */
+  dim[0] = (t > 255 ? 255 : t);        
   t = l + sim[1];
   dim[1] = (t > 255 ? 255 : t);
   t = l + sim[2];
@@ -222,42 +242,40 @@ void light_2x2(fireshell *fss)
   t = l + sim[nl+6];
   dim[nl+6] = (t > 255 ? 255 : t);
 
-  sim += 8; dim += 8; } sim += nl; dim += nl;}
-}
+  sim += 8; dim += 8; } sim += nl; dim += nl;}}
 
 void resize(Display *display, Window win)
 {
   XWindowAttributes xwa;
   XGetWindowAttributes (display, win, &xwa);
-  xwa.width  -= xwa.width % 4;
-  xwa.height -= xwa.height % 4;
-  if(xwa.height != fsc_height || xwa.width != fsc_width) {
-  fsc_width  = xwa.width;
-  fsc_height = xwa.height;
+  xwa.width  -= xwa.width % 2;
+  xwa.height -= xwa.height % 2;
+  if(xwa.height != height || xwa.width != width) {
+  width  = xwa.width;
+  height = xwa.height;
+  if (verbose)
+  printf("sky size: %dx%d ------------------------------\n",width,height);
+  XSync(display,0);
   if (xim) {
   if (xim->data==(char *)palaka2) xim->data=NULL;  
   XDestroyImage(xim);
-  if (palaka2!=palaka1) free(real_palaka2);
-  free(real_palaka1); 
+  XSync(display,0);
+  if (palaka2!=palaka1) free(palaka2 - 8);
+  free(palaka1 - 8); 
   }
-  palaka1 = NULL;     
-  palaka2 = NULL; 
+  palaka1 = NULL;
+  palaka2 = NULL;
   xim = XCreateImage(display, xwa.visual, xwa.depth, ZPixmap, 0, 0,
-                    fsc_width, fsc_height, 32, 0);
-  real_palaka1 = calloc(xim->height + 4,xim->width*4);
-  palaka1 = real_palaka1 + xim->width * 4 * 2;
-  if(light_on) {
-       real_palaka2 = calloc(xim->height + 4,xim->width*4);
-       palaka2 = real_palaka2 + xim->width * 4 * 2;
-  } else {
-       palaka2 = palaka1;
-  }
+                    width, height, 8, 0);
+  palaka1 = (unsigned char *) calloc(xim->height+1,xim->width*4) + 8;
+  if(flash_on|glow_on)
+  palaka2 = (unsigned char *) calloc(xim->height+1,xim->width*4) + 8;
+  else
+  palaka2 = palaka1;
   if (depth>=24)
   xim->data = (char *)palaka2;
   else
-  xim->data = calloc(xim->height,xim->bytes_per_line);       
- }
-}
+  xim->data = calloc(xim->height,xim->bytes_per_line); }}
 
 void put_image(Display *display, Window win, GC gc, XImage *xim)
 {
@@ -319,8 +337,7 @@ void put_image(Display *display, Window win, GC gc, XImage *xim)
      xim->data[i++] = (((7*g)/256)*36)+(((6*r)/256)*6)+((6*b)/256);
      }
   }
-  XPutImage(display,win,gc,xim,0,0,0,0,xim->width,xim->height); 
-}
+  XPutImage(display,win,gc,xim,0,0,0,0,xim->width,xim->height); }
 
 void sniff_events(Display *dis, Window win, fireshell *fss)
 {
@@ -329,8 +346,7 @@ void sniff_events(Display *dis, Window win, fireshell *fss)
   XNextEvent (dis, &e);
   if (e.type == ConfigureNotify) resize(dis,win);
   if (e.type == ButtonPress)     recycle(fss,e.xbutton.x, e.xbutton.y);
-  screenhack_handle_event(dis,&e);}
-}
+  screenhack_handle_event(dis,&e); }}
 
 
 char *progclass = "Fireworkx";
@@ -338,10 +354,10 @@ char *progclass = "Fireworkx";
 char *defaults [] = {
   ".background:        black",
   ".foreground:        white",
-  "*delay:     5000",
-  "*maxlife:   1200",
-  "*light:     True",
-  "*fade:      False",
+  "*delay:     10000",  /* never default to zero! */
+  "*maxlife:   2000",
+  "*flash:     True",
+  "*glow:      True",
   "*shoot:     False",
   "*verbose:   False",
   0
@@ -350,8 +366,8 @@ char *defaults [] = {
 XrmOptionDescRec options [] = {
   { "-delay",          ".delay",       XrmoptionSepArg, 0 },
   { "-maxlife",                ".maxlife",     XrmoptionSepArg, 0 },
-  { "-nolight",                ".light",       XrmoptionNoArg, "False" },
-  { "-fade",           ".fade",        XrmoptionNoArg, "True" },
+  { "-noflash",                ".flash",       XrmoptionNoArg, "False" },
+  { "-noglow",         ".glow",        XrmoptionNoArg, "False" },
   { "-shoot",          ".shoot",       XrmoptionNoArg, "True" },
   { "-verbose",                ".verbose",     XrmoptionNoArg, "True" },
   { 0, 0, 0, 0 }
@@ -367,21 +383,20 @@ screenhack (Display *display, Window win)
   XWindowAttributes xwa;
   GC gc;
   XGCValues gcv;
-  firepix *fpixs, *fpix;
-  fireshell *fshells, *fshell;
-  fade_on  = get_boolean_resource("fade"    , "Boolean");
-  light_on = get_boolean_resource("light"   , "Boolean");
+  firepix *fpix, *ffpix;
+  fireshell *fshell, *ffshell;
+  glow_on  = get_boolean_resource("glow"    , "Boolean");
+  flash_on = get_boolean_resource("flash"   , "Boolean");
   shoot    = get_boolean_resource("shoot"   , "Boolean");
   verbose  = get_boolean_resource("verbose" , "Boolean");
   rndlife  = get_integer_resource("maxlife" , "Integer");
   delay    = get_integer_resource("delay"   , "Integer");
   minlife  = rndlife/4;
-  if(rndlife<1000) light_fade=0.98;
-  if(rndlife<500) light_fade=0.97;
-  if(fade_on) light_fade=0.97;
+  if(rndlife<1000) flash_fade=0.98;
+  if(rndlife<500) flash_fade=0.97;
   if(verbose){
   printf("Fireworkx %s - pyrotechnics simulation program \n", FWXVERSION);
-  printf("Copyright (c) 1999-2004 Rony B Chandran <ronybc@asia.com> \n\n");
+  printf("Copyright (c) 1999-2005 Rony B Chandran <ronybc@asia.com> \n\n");
   printf("url: http://www.ronybc.8k.com \n\n");}
 
   XGetWindowAttributes(display,win,&xwa);
@@ -392,7 +407,7 @@ screenhack (Display *display, Window win)
  
   if(depth==8){
   if(verbose){
-  printf("Pseudocolor color: use '-fade' & '-nolight' for better results.\n");}
+  printf("Pseudocolor color: use '-noflash' for better results.\n");}
   colors = (XColor *) calloc(sizeof(XColor),ncolors+1);
   writable = False;
   make_smooth_colormap(display, vi, cmap, colors, &ncolors,
@@ -401,30 +416,38 @@ screenhack (Display *display, Window win)
   gc = XCreateGC(display, win, 0, &gcv);
 
   resize(display,win);   /* initialize palakas */ 
-  seed += time(0);
   
-  fpixs = malloc(sizeof(firepix) * PIXCOUNT * SHELLCOUNT);
-  fshells = malloc(sizeof(fireshell) * SHELLCOUNT);
-  fshell = fshells;
-  fpix = fpixs;
+  ffpix = malloc(sizeof(firepix) * PIXCOUNT * SHELLCOUNT);
+  ffshell = malloc(sizeof(fireshell) * SHELLCOUNT);
+  fshell = ffshell;
+  fpix = ffpix;
   for (n=0;n<SHELLCOUNT;n++){
   fshell->fpix = fpix;
-  recycle (fshell,rnd(fsc_width),rnd(fsc_height));
+  recycle (fshell,rnd(width),rnd(height));
   fshell++; 
   fpix += PIXCOUNT; }
   
   while(1) {
   for(q=FTWEAK;q;q--){
-  fshell=fshells;
+  fshell=ffshell;
   for(n=SHELLCOUNT;n;n--){
   if (!explode(fshell)){
-       recycle(fshell,rnd(fsc_width),rnd(fsc_height)); }
+       recycle(fshell,rnd(width),rnd(height)); }
        fshell++; }}
-  if(light_on) light_2x2(fshells);
+#if HAVE_X86_MMX
+  if(glow_on) mmx_glow(palaka1,width,height,8,palaka2);
+#else
+  if(glow_on) glow();
+#endif
+  if(flash_on) light_2x2(ffshell);
   put_image(display,win,gc,xim);
   usleep(delay);
   XSync(display,0);
-  sniff_events(display, win, fshells);
-  blur_best();}
+  sniff_events(display, win, ffshell);
+#if HAVE_X86_MMX
+  if(!glow_on) mmx_blur(palaka1,width,height,8);
+#else
+  if(!glow_on) blur();
+#endif
 
-}
+}}
index a66dfda3b19697eed431e93a59e968151b9ebe5d..55be254faad2510747b7504d14f247311a5071ac 100644 (file)
@@ -8,8 +8,8 @@ fireworkx - pyrotechnics simulation eye-candy.
 [\-window]
 [\-root]
 [\-verbose]
-[\-fade]
-[\-nolight]
+[\-noflash]
+[\-noglow]
 [\-shoot]
 [\-delay \fInumber\fP]
 [\-maxlife \fInumber\fP]
@@ -27,23 +27,23 @@ Draw on a newly-created window.  This is the default.
 .B \-root
 Draw on the root window.
 .TP 8
-.B \-nolight
-Turns off light effect; runs faster.
+.B \-noflash 
+Turn off light effect (runs faster)
 .TP 8
-.B \-fade
-Cuts the extra blur; looks more realistic.
+.B \-noglow
+Turn off self glow (dull blasts..!)
 .TP 8
 .B \-shoot
-Shows shooting of the shells.
+Shoot the shells.
 .TP 8
 .B \-delay \fInumber\fP
-Delay between frames. In microseconds. 
+Delay between frames. In microseconds. (Default: 1000)
 .TP 8
 .B \-maxlife \fInumber\fP
-Maximum decay period for an explosion. (Default: 1200)
+Maximum decay period for an explosion. (Default: 2000)
 .TP 8
 .B \-verbose
-Listen what the program have to say, via console.
+for scientific purposes..!
 .SH ENVIRONMENT
 .PP
 .TP 8
@@ -57,7 +57,7 @@ stored in the RESOURCE_MANAGER property.
 .BR X (1),
 .BR xscreensaver (1)
 .SH COPYRIGHT
-Copyright \(co 1999-2004 by Rony B Chandran.  Permission to use, copy, modify, 
+Copyright \(co 1999-2005 by Rony B Chandran.  Permission to use, copy, modify, 
 distribute, and sell this software and its documentation for any purpose is 
 hereby granted without fee, provided that the above copyright notice appear 
 in all copies and that both that copyright notice and this permission notice
@@ -65,10 +65,21 @@ appear in supporting documentation.  No representations are made about the
 suitability of this software for any purpose.  It is provided "as is" without
 express or implied warranty.
 .SH AUTHOR
+.br
 Written by Rony B Chandran <ronybc@asia.com>
-
-Added support for different display color modes
-by Jean-Pierre Demailly <Jean-Pierre.Demailly@ujf-grenoble.fr>
+.br
+.br
+Additional programming: 
+.br
+------------------------
+.br
+Renuka S <renuka@local.net>
+.br
+Jean-Pierre Demailly <Jean-Pierre.Demailly@ujf-grenoble.fr>
+.br
+Nicholas Miell <nmiell@gmail.com>
 
 .SH URL 
 http://www.ronybc.8k.com
diff --git a/hacks/fireworkx_mmx.S b/hacks/fireworkx_mmx.S
new file mode 100644 (file)
index 0000000..039b60a
--- /dev/null
@@ -0,0 +1,226 @@
+/*
+ * Fast MMX blur code for Fireworkx
+ * Copyright (c) 1999-2005 Rony B Chandran <ronybc@asia.com>
+ *
+ * From Kerala, INDIA
+ * 
+ * url: http://www.ronybc.8k.com
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or 
+ * implied warranty.
+ *
+ */
+.data
+
+.text
+
+.align 8       
+
+.global mmx_blur
+.global mmx_glow
+
+mmx_blur:      /* void mmx_blur( int *palaka,
+                                 int width,
+                                 int height)
+                                 int fade_lvl) */
+       pushl %ebp
+       pushl %edi
+       pushl %esi
+       pushl %ebx
+       
+       movl 32(%esp),%eax
+       imull $0x00010001,%eax
+       movd %eax,%mm0
+       movq %mm0,%mm1
+       psllq $32,%mm0
+       por %mm0,%mm1
+       movq %mm1,40(%esp)
+       
+       movl 20(%esp), %eax
+       movl 24(%esp), %edx
+       shll $2, %edx
+       addl %eax, %edx
+       pxor %mm0,%mm0
+.fline:
+       movq %mm0,(%eax)
+       addl $8,%eax
+       cmp %edx,%eax
+       jbe .fline
+       
+       movl 24(%esp),%eax
+       shll $2,%eax
+       movl %eax,%edi
+       movl 28(%esp),%edi
+       subl $2,%edi
+       imull %eax,%edi
+       
+       movl 20(%esp),%ecx
+       movl %ecx,%ebx
+       addl %eax,%ebx
+       addl %ebx,%eax
+       xorl %esi,%esi
+.align 32
+.renuKa:
+       pxor %mm7,%mm7
+       movq %mm0,%mm6
+       movq %mm1,%mm0
+       paddw %mm1,%mm6
+       movd 8(%esi,%ecx),%mm1
+       punpcklbw %mm7,%mm1
+       paddw %mm1,%mm6
+
+       paddw %mm2,%mm6
+       movq %mm3,%mm2
+       movd 8(%esi,%ebx),%mm3
+       punpcklbw %mm7,%mm3
+       paddw %mm3,%mm6
+
+       paddw %mm4,%mm6
+       movq %mm5,%mm4
+       paddw %mm5,%mm6
+       movd 8(%esi,%eax),%mm5
+       punpcklbw %mm7,%mm5
+       paddw %mm5,%mm6
+       
+       psllw $3,%mm2
+       paddw %mm2,%mm6
+       psrlw $3,%mm2
+       movq 40(%esp),%mm7
+       psubusw %mm7,%mm6 
+       psrlw $4,%mm6
+       
+       packuswb %mm6,%mm6
+       movd %mm6, 4(%esi,%ebx)
+       addl $4,%esi
+       cmp %edi,%esi
+       jbe .renuKa
+       
+       addl %esi,%eax
+       addl %esi,%ebx
+       xorl %ecx,%ecx
+.lline:
+       movl %ecx,(%ebx)
+       addl $4,%ebx
+       cmpl %eax,%ebx
+       jbe .lline
+       
+       emms
+       popl %ebx
+       popl %esi
+       popl %edi
+       popl %ebp
+       ret
+
+/*  Add Glycerine to 
+    Potassium permanganite... (DANGER-FIRE) */
+
+mmx_glow:      /* void mmx_glow( int *palaka1,
+                                 int width,
+                                 int height,
+                                 int fade_lvl,
+                                 int *palaka2)  */
+       pushl %ebp
+       pushl %edi
+       pushl %esi
+       pushl %ebx
+       
+       movl 32(%esp),%eax
+       imull $0x00010001,%eax
+       movd %eax,%mm0
+       movq %mm0,%mm1
+       psllq $32,%mm0
+       por %mm0,%mm1
+       movq %mm1,40(%esp)
+       
+       movl 20(%esp), %eax
+       movl 36(%esp), %ebx
+       movl 24(%esp), %edx
+       shll $2,%edx
+       add %eax, %edx
+       pxor %mm7,%mm7
+.flineGlow:
+       movq %mm7,(%eax)
+       movq %mm7,(%ebx)
+       addl $8,%eax
+       addl $8,%ebx
+       cmp %edx,%eax
+       jbe .flineGlow
+
+       movl 24(%esp),%eax
+       shll $2,%eax
+       movl %eax,%edi
+       movl 28(%esp),%edi
+       subl $2,%edi
+       imull %eax,%edi
+       
+       movl 20(%esp),%ecx
+       movl 36(%esp),%edx
+       movl %ecx,%ebx
+       addl %eax,%edx
+       addl %eax,%ebx
+       addl %ebx,%eax
+       xorl %esi,%esi
+.align 32
+.renuGa:
+       pxor %mm7,%mm7
+       movq %mm0,%mm6
+       movq %mm1,%mm0
+       paddw %mm1,%mm6
+       movd 8(%esi,%ecx),%mm1
+       punpcklbw %mm7,%mm1
+       paddw %mm1,%mm6
+
+       paddw %mm2,%mm6
+       movq %mm3,%mm2
+       movd 8(%esi,%ebx),%mm3
+       punpcklbw %mm7,%mm3
+       paddw %mm3,%mm6
+
+       paddw %mm4,%mm6
+       movq %mm5,%mm4
+       paddw %mm5,%mm6
+       movd 8(%esi,%eax),%mm5
+       punpcklbw %mm7,%mm5
+       paddw %mm5,%mm6
+       
+       psllw $3,%mm2
+       paddw %mm2,%mm6
+       psrlw $3,%mm2
+       movq 40(%esp),%mm7
+       psubusw %mm7,%mm6 
+       movq %mm6,%mm7
+       psrlw $4,%mm6
+       psrlw $3,%mm7
+       
+       packuswb %mm7,%mm7
+       movd %mm7, 4(%esi,%edx)
+       packuswb %mm6,%mm6
+       movd %mm6, 4(%esi,%ebx)
+       addl $4,%esi
+       cmp %edi,%esi
+       jbe .renuGa
+
+       addl %esi,%eax
+       addl %esi,%ebx
+       addl %esi,%edx
+       xorl %ecx,%ecx
+.llineGlow:
+       movl %ecx,(%ebx)
+       movl %ecx,(%edx)
+       addl $4,%ebx
+       addl $4,%edx
+       cmpl %eax,%ebx
+       jbe .llineGlow
+
+       emms
+       popl %ebx
+       popl %esi
+       popl %edi
+       popl %ebp
+       ret
index f5dfa3da91b1cb2aa23ebaadd98e0754bae3f560..d69a7cc659c21dd30f10891579abf7e75ac16e45 100644 (file)
@@ -8,7 +8,7 @@ static const char sccsid[] = "@(#)flow.c        5.00 2000/11/01 xlockmore";
 #endif
 
 /*-
- * Copyright (c) 1996 by Tim Auckland <Tim.Auckland@Procket.com>
+ * Copyright (c) 1996 by Tim Auckland <tda10.geo@yahoo.com>
  * Incorporating some code from Stephen Davies Copyright (c) 2000
  *
  * Search code based on techniques described in "Strange Attractors:
index 07c3b0f245bfe72944da10c507411dca8faae589..9e625fc26ae3b5111afbb9b37f9b2ca7a4fd8b72 100644 (file)
@@ -72,7 +72,7 @@ Disable double-buffering.
 .B \-color \fIstring\fP
 The base color for the color scheme.  Typed as a hexadecimal triplet
 with or with out the leading #. ie. fa4563 & #43cd12 are both acceptable.
-If the satration of you color is too low (<0.03) the random color
+If the saturation of you color is too low (<0.03) the random color
 generator will kick in.
 The default color is #efbea5
 .TP 8
@@ -105,4 +105,4 @@ Barry Dmytro <badcherry@mailc.net>
 .SH CREDITS
 The color generation algorithm was borrowed from a friend <ZoeB>
 from #vegans@irc.blitzed.org.  Her site is http://beautifulfreak.net/.
-To see her original code in action visit her site.
\ No newline at end of file
+To see her original code in action visit her site.
index 020072869a0fa893ae4e312f12cae27deecad44c..ba30f691b7b1c4d47ba655ac64ba23d7e0ae763b 100644 (file)
@@ -100,8 +100,8 @@ SRCS                = xscreensaver-gl-helper.c normals.c glxfonts.c \
                  flipflop.c antspotlight.c polytopes.c gleidescope.c \
                  mirrorblob.c blinkbox.c noof.c polyhedra.c polyhedra-gl.c \
                  antinspect.c providence.c pinion.c boing.c texfont.c \
-                 carousel.c fliptext.c
-
+                 carousel.c fliptext.c antmaze.c tangram.c tangram_shapes.c \
+                 crackberg.c
 
 OBJS           = xscreensaver-gl-helper.o normals.o glxfonts.o \
                  atlantis.o b_draw.o b_lockglue.o b_sphere.o bubble3d.o \
@@ -131,7 +131,8 @@ OBJS                = xscreensaver-gl-helper.o normals.o glxfonts.o \
                  flipflop.o antspotlight.o polytopes.o gleidescope.o \
                  mirrorblob.o blinkbox.o noof.o polyhedra.o polyhedra-gl.o \
                  antinspect.o providence.o pinion.o boing.o texfont.o \
-                 carousel.o fliptext.o
+                 carousel.o fliptext.o antmaze.o tangram.o tangram_shapes.o \
+                 crackberg.o
 
 GL_EXES                = cage gears moebius pipes sproingies stairs superquadrics \
                  morph3d rubik atlantis lament bubble3d glplanet pulsar \
@@ -142,7 +143,8 @@ GL_EXES             = cage gears moebius pipes sproingies stairs superquadrics \
                  glslideshow jigglypuff klein hypertorus glmatrix cubestorm \
                  glknots blocktube flipflop antspotlight polytopes \
                  gleidescope mirrorblob blinkbox noof polyhedra \
-                 antinspect providence pinion boing carousel fliptext
+                 antinspect providence pinion boing carousel fliptext \
+                 antmaze tangram crackberg
 GLE_EXES       = extrusion
 GL_UTIL_EXES   = xscreensaver-gl-helper
 HACK_EXES      = @GL_EXES@ @GLE_EXES@
@@ -161,7 +163,8 @@ HDRS                = atlantis.h bubble3d.h buildlwo.h e_textures.h xpm-ximage.h \
                  stonerview-move.h stonerview-osc.h glutstroke.h \
                  glut_roman.h marching.h rotator.h trackball.h gltrackball.h \
                  chessmodels.h chessgames.h gllist.h flurry.h tunnel_draw.h \
-                 ants.h polyhedra.h normals.h glxfonts.h texfont.h
+                 ants.h polyhedra.h normals.h glxfonts.h texfont.h \
+                 tangram_shapes.h
 GL_MEN         = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
                  cubenetic.man dangerball.man engine.man extrusion.man \
                  flipscreen3d.man gears.man gflux.man glforestfire.man \
@@ -177,7 +180,8 @@ GL_MEN              = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
                  antspotlight.man polytopes.man gleidescope.man \
                  mirrorblob.man blinkbox.man noof.man polyhedra.man \
                  antinspect.man providence.man pinion.man boing.man \
-                 carousel.man fliptext.man
+                 carousel.man fliptext.man antmaze.man tangram.man \
+                 crackberg.man
 MEN            = @GL_MEN@
 EXTRAS         = README Makefile.in dxf2gl.pl starwars.txt
 
@@ -221,17 +225,34 @@ install-program:: $(EXES)
           done ;                                                       \
         fi
 
+# When installing man pages, we install "foo.man" as "foo.N" and update
+# the .TH line in the installed file with one like
+#
+#     .TH XScreenSaver N "V.VV (DD-MMM-YYYY)" "X Version 11"
+#
+# where N is the manual section suffix.
+#
 install-man: $(MEN)
        @men="$(MEN)" ;                                                 \
-        idir="$(install_prefix)$(manNdir)" ;                           \
-        if [ ! -d $$idir ]; then                                       \
-         $(INSTALL_DIRS) $$idir ;                                      \
+       U=$(UTILS_SRC)/version.h ;                                      \
+       V=`sed -n 's/.*\([0-9]\.[^)]*)\).*/\1/p' < $$U` ;               \
+       T=/tmp/xs$$$$.$(mansuffix) ;                                    \
+       TH=".TH XScreenSaver $(mansuffix) \"$$V\" \"X Version 11\"" ;   \
+       echo "installing man pages: $$TH" ;                             \
+                                                                       \
+       if [ ! -d $(install_prefix)$(manNdir) ]; then                   \
+         $(INSTALL_DIRS) $(install_prefix)$(manNdir) ;                 \
         fi ;                                                           \
-        for man in $$men; do                                           \
-          instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;    \
-          echo $(INSTALL_DATA) $(srcdir)/$$man $$idir/$$instname ;     \
-               $(INSTALL_DATA) $(srcdir)/$$man $$idir/$$instname ;     \
-        done
+                                                                       \
+       for man in $$men; do                                            \
+         instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
+         sed "s/^\.TH.*/$$TH/" < $(srcdir)/$$man > $$T ;               \
+         echo $(INSTALL_DATA) $(srcdir)/$$man                          \
+          $(install_prefix)$(manNdir)/$$instname ;                     \
+         $(INSTALL_DATA) $$T                                           \
+           $(install_prefix)$(manNdir)/$$instname ;                    \
+       done ;                                                          \
+       rm -f $$T
 
 install-xml:
        @dest=$(install_prefix)$(HACK_CONF_DIR) ;                       \
@@ -266,11 +287,10 @@ uninstall-program::
 
 uninstall-man:
        @men="$(MEN)" ;                                                 \
-        idir="$(install_prefix)$(manNdir)" ;                           \
-        for man in $$men; do                                           \
-          instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;    \
-          echo rm -f $$idir/$$instname ;                               \
-               rm -f $$idir/$$instname ;                               \
+       for man in $$men; do                                            \
+         instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
+         echo rm -f $(install_prefix)$(manNdir)/$$instname* ;          \
+              rm -f $(install_prefix)$(manNdir)/$$instname* ;          \
        done
 
 uninstall-xml:
@@ -646,6 +666,15 @@ carousel:  carousel.o      texfont.o $(HACK_TRACK_GRAB_OBJS)
 fliptext:      fliptext.o      texfont.o $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   texfont.o $(HACK_OBJS) $(HACK_LIBS)
 
+antmaze:       antmaze.o       $(HACK_TRACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+tangram:       tangram.o       tangram_shapes.o $(HACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   tangram_shapes.o $(HACK_OBJS) $(HACK_LIBS)
+
+crackberg:     crackberg.o     $(HACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
+
 dnalogo:       dnalogo.o      tube.o normals.o $(HACK_TRACK_OBJS)
        $(CC_HACK) -o $@ $@.o  tube.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
 
@@ -655,6 +684,10 @@ dnalogo:   dnalogo.o      tube.o normals.o $(HACK_TRACK_OBJS)
 
 antinspect.o: ../../config.h
 antinspect.o: $(srcdir)/gltrackball.h
+antmaze.o: $(srcdir)/ants.h
+antmaze.o: ../../config.h
+antmaze.o: $(srcdir)/gltrackball.h
+antmaze.o: $(srcdir)/rotator.h
 antspotlight.o: $(srcdir)/ants.h
 antspotlight.o: ../../config.h
 antspotlight.o: $(srcdir)/gltrackball.h
@@ -712,6 +745,7 @@ cow_hoofs.o: $(srcdir)/gllist.h
 cow_horns.o: $(srcdir)/gllist.h
 cow_tail.o: $(srcdir)/gllist.h
 cow_udder.o: $(srcdir)/gllist.h
+crackberg.o: ../../config.h
 cubenetic.o: ../../config.h
 cubenetic.o: $(srcdir)/gltrackball.h
 cubenetic.o: $(srcdir)/rotator.h
@@ -931,15 +965,17 @@ stonerview-move.o: ../../config.h
 stonerview-move.o: $(srcdir)/stonerview-move.h
 stonerview-move.o: $(srcdir)/stonerview-osc.h
 stonerview.o: ../../config.h
+stonerview.o: $(srcdir)/stonerview-move.h
 stonerview-osc.o: ../../config.h
 stonerview-osc.o: $(srcdir)/stonerview-osc.h
-stonerview.o: $(srcdir)/stonerview-move.h
 stonerview-view.o: ../../config.h
 stonerview-view.o: $(srcdir)/stonerview-move.h
 stonerview-view.o: $(srcdir)/stonerview-osc.h
 superquadrics.o: ../../config.h
 swim.o: $(srcdir)/atlantis.h
 swim.o: ../../config.h
+tangram.o: ../../config.h
+tangram.o: $(srcdir)/tangram_shapes.h
 texfont.o: ../../config.h
 texfont.o: $(srcdir)/texfont.h
 toast2.o: $(srcdir)/gllist.h
index 3f3dc9ebcd5feff65b0f07b43d3a382c58e17593..99784b2fb689356679c7954fd3cd52a9b8f7a3a6 100644 (file)
@@ -26,8 +26,7 @@
 #define EVENT_MASK         PointerMotionMask
 #define antinspect_opts            xlockmore_opts
 #define DEFAULTS           "*delay:   20000   \n" \
-                           "*showFPS: False   \n" \
-                           "*wireframe: False \n"
+                           "*showFPS: False   \n"
 
 #include "xlockmore.h"
 #else
diff --git a/hacks/glx/antmaze.c b/hacks/glx/antmaze.c
new file mode 100644 (file)
index 0000000..4ce5087
--- /dev/null
@@ -0,0 +1,1512 @@
+/*
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind.  The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof.  In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * Copyright 2004 Blair Tennessy
+ * tennessy@cs.ubc.ca
+ */
+
+#if !defined( lint ) && !defined( SABER )
+static const char sccsid[] = "@(#)moebius.c    5.01 2001/03/01 xlockmore";
+#endif
+
+#ifdef VMS
+#include <X11/Intrinsic.h>
+#endif
+
+#ifdef STANDALONE
+# define MODE_moebius
+# define PROGCLASS                     "AntMaze2"
+# define HACK_INIT                     init_moebius
+# define HACK_DRAW                     draw_moebius
+# define HACK_RESHAPE          reshape_moebius
+# define HACK_HANDLE_EVENT     moebius_handle_event
+# define EVENT_MASK                    PointerMotionMask
+# define moebius_opts          xlockmore_opts
+# define DEFAULTS                      "*delay:                20000   \n"                     \
+                                                       "*showFPS:      False   \n"                     \
+                                                       "*wireframe:    False   \n"
+# include "xlockmore.h"                /* from the xscreensaver distribution */
+#else /* !STANDALONE */
+# include "xlock.h"            /* from the xlockmore distribution */
+
+#endif /* !STANDALONE */
+
+#ifdef MODE_moebius
+
+
+#include <GL/glu.h>
+#include "rotator.h"
+#include "gltrackball.h"
+
+#define DEF_SOLIDMOEBIUS  "False"
+#define DEF_NOANTS  "False"
+
+static int  solidmoebius;
+static int  noants;
+
+static XrmOptionDescRec opts[] =
+{
+  {(char *) "-solidmoebius", (char *) ".moebius.solidmoebius", XrmoptionNoArg, (caddr_t) "on"},
+  {(char *) "+solidmoebius", (char *) ".moebius.solidmoebius", XrmoptionNoArg, (caddr_t) "off"},
+  {(char *) "-noants", (char *) ".moebius.noants", XrmoptionNoArg, (caddr_t) "on"},
+  {(char *) "+noants", (char *) ".moebius.noants", XrmoptionNoArg, (caddr_t) "off"}
+};
+static argtype vars[] =
+{
+  {(caddr_t *) & solidmoebius, (char *) "solidmoebius", (char *) "Solidmoebius", (char *) DEF_SOLIDMOEBIUS, t_Bool},
+  {(caddr_t *) & noants, (char *) "noants", (char *) "Noants", (char *) DEF_NOANTS, t_Bool}
+
+};
+static OptionStruct desc[] =
+{
+       {(char *) "-/+solidmoebius", (char *) "select between a SOLID or a NET Moebius Strip"},
+       {(char *) "-/+noants", (char *) "turn on/off walking ants"}
+};
+
+ModeSpecOpt moebius_opts =
+{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
+
+#ifdef USE_MODULES
+ModStruct   moebius_description =
+{"moebius", "init_moebius", "draw_moebius", "release_moebius",
+ "draw_moebius", "change_moebius", (char *) NULL, &moebius_opts,
+ 1000, 1, 1, 1, 4, 1.0, "",
+ "draws some ants", 0, NULL};
+
+#endif
+
+#define Scale4Window               0.3
+#define Scale4Iconic               0.4
+
+#define sqr(A)                     ((A)*(A))
+
+#ifndef Pi
+#define Pi                         M_PI
+#endif
+
+#define ObjMoebiusStrip 0
+#define ObjAntBody      1
+#define MaxObj          2
+
+/*************************************************************************/
+
+typedef struct {
+  GLint       WindH, WindW;
+  GLfloat     step;
+  GLfloat     ant_position;
+  GLXContext *glx_context;
+  rotator    *rot;
+  trackball_state *trackball;
+  Bool        button_down_p;
+} moebiusstruct;
+
+#include "ants.h"
+
+static GLfloat MaterialRed[] = {0.6, 0.0, 0.0, 1.0};
+static GLfloat MaterialMagenta[] = {0.6, 0.2, 0.5, 1.0};
+static GLfloat MaterialGray8[] = {0.8, 0.8, 0.8, 1.0};
+static GLfloat MaterialGray35[] = {0.30, 0.30, 0.30, 1.0};
+static GLfloat MaterialGray4[] = {0.40, 0.40, 0.40, 1.0};
+static GLfloat MaterialOrange[] = {1.0, 0.69, 0.00, 1.0};
+static GLfloat MaterialGreen[] = {0.1, 0.4, 0.2, 1.0};
+
+/* lighting variables */
+GLfloat front_shininess[] = {60.0};
+GLfloat front_specular[] = {0.8, 0.8, 0.8, 1.0};
+GLfloat ambient[] = {0.1, 0.1, 0.1, 1.0};
+GLfloat ambient2[] = {0.0, 0.0, 0.0, 0.0};
+GLfloat diffuse[] = {0.8, 0.8, 0.8, 1.0};
+GLfloat position0[] = {1.0, 5.0, 1.0, 1.0};
+GLfloat position1[] = {-1.0, -5.0, 1.0, 1.0};
+GLfloat lmodel_ambient[] = {0.8, 0.8, 0.8, 1.0};
+GLfloat lmodel_twoside[] = {GL_TRUE};
+GLfloat spotlight_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
+GLfloat spotlight_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
+
+static moebiusstruct *moebius = (moebiusstruct *) NULL;
+
+#define NUM_SCENES      2
+
+/* filled sphere */
+static Bool mySphere(float radius) {
+  GLUquadricObj *quadObj;
+
+  if((quadObj = gluNewQuadric()) == 0)
+       return False;
+  gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
+  gluSphere(quadObj, radius, 16, 16);
+  gluDeleteQuadric(quadObj);
+
+  return True;
+}
+
+/* silhouette sphere */
+static Bool mySphere2(float radius) {
+  GLUquadricObj *quadObj;
+
+  if((quadObj = gluNewQuadric()) == 0)
+       return False;
+  gluQuadricDrawStyle(quadObj, (GLenum) GLU_SILHOUETTE);
+  gluSphere(quadObj, radius, 16, 8);
+  gluDeleteQuadric(quadObj);
+
+  return True;
+}
+
+/* textured sphere */
+static Bool mySphereTex(float radius) {
+  GLUquadricObj *quadObj;
+  
+  if((quadObj = gluNewQuadric()) == 0)
+       return False;
+  gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
+  gluQuadricTexture(quadObj, GL_TRUE);
+  gluQuadricNormals(quadObj, GLU_SMOOTH);
+  gluSphere(quadObj, radius, 32, 16);
+  gluDeleteQuadric(quadObj);
+
+  return True;
+}
+
+/* filled cone */
+static Bool myCone(float radius) {
+  GLUquadricObj *quadObj;
+  
+  if ((quadObj = gluNewQuadric()) == 0)
+    return False;
+  gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
+  gluCylinder(quadObj, radius, 0, radius * 2, 8, 1);
+  gluDeleteQuadric(quadObj);
+  return True;
+}
+
+/* no cone */
+static Bool myCone2(float radius) { return True; }
+
+#define ANTCOUNT 4
+#define PI 3.14157
+
+static int focus = 0;
+
+#define MATERIALS 4
+static float* antmaterial[ANTCOUNT] = 
+  {MaterialRed, MaterialGray35, MaterialGray4, MaterialOrange, MaterialGreen};
+
+static float* materials[MATERIALS] = 
+  {MaterialRed, MaterialGray35, MaterialGray4, MaterialOrange};
+
+static double antdirection[ANTCOUNT] = {PI/2.0, PI/2.0, 0.0, PI/2.0, PI/2.0};
+
+static double antposition[ANTCOUNT][3] = {{-4.0, 5.0, 0.15},
+                                         {-4.0, 3.0, 0.15},
+                                         {-1.0, -2.0, 0.15},
+                                         {-3.9, 6.0, 0.15}, 
+                                         {2.0, -2.0, 0.15}};
+
+static int anton[ANTCOUNT] = {1, 0, 0, 0};
+
+static double antvelocity[ANTCOUNT] = {0.02,
+                                      0.02,
+                                      0.02,
+                                      0.02};
+
+static double antsize[ANTCOUNT] = {1.0,
+                                  1.0,
+                                  1.0,
+                                  1.0};
+
+#define EPSILON 0.01
+#define BOARDSIZE 10
+
+int bposition[ANTCOUNT][2] = {{0, 8},
+                             {9, 1},
+                             {1, 1},
+                             {4, 8},
+                             {2, 1},};
+
+#define BOARDCOUNT 2
+int currentboard = 0;
+
+int board[BOARDCOUNT][10][10];/*  = {1, 1, 1, 1, 1, 1, 1, 1, 0, 1, */
+/*                  1, 0, 1, 0, 1, 0, 1, 1, 0, 1, */
+/*                  1, 0, 0, 0, 1, 0, 0, 0, 0, 1, */
+/*                  1, 0, 1, 1, 0, 0, 1, 1, 0, 1, */
+/*                  1, 0, 1, 1, 0, 1, 1, 0, 0, 1, */
+/*                  1, 0, 1, 0, 0, 1, 0, 0, 1, 1, */
+/*                  1, 0, 0, 0, 1, 1, 0, 1, 0, 1, */
+/*                  1, 0, 1, 0, 1, 1, 0, 0, 0, 1, */
+/*                  1, 0, 1, 0, 0, 0, 1, 0, 1, 1, */
+/*                  1, 0, 1, 1, 1, 1, 1, 1, 1, 1,}; */
+
+#define PARTS 20
+int part[ANTCOUNT] = {0, 1, 5, 1, 3};
+double antpath[ANTCOUNT][PARTS][2];/*  = {{-4.0, 5.0}, */
+int antpathlength[ANTCOUNT];
+/*                                   {-4.0, 1.0}, */
+/*                                   {-2.0, 1.0}, */
+/*                                   {-2.0, 0.0}, */
+/*                                   {-1.0, 0.0}, */
+/*                                   {-1.0, -2.0}, */
+/*                                   { 0.0, -2.0}, */
+/*                                   { 0.0, -3.0}, */
+/*                                   { 3.0, -3.0}, */
+/*                                   { 3.0, -6.0},}; */
+
+#define checkImageWidth 64
+#define checkImageHeight 64
+GLubyte checkers[checkImageWidth][checkImageHeight][3];
+GLuint checktexture, brushedtexture;
+double elevator = 0.0;
+
+void makeCheckImage(void) {
+  int i, j, r, c, k;
+  
+  for (i = 0; i < checkImageWidth; i++) {
+    for (j = 0; j < checkImageHeight; j++) {
+      if((((i&0x8)==0)^((j&0x8))==0)) {
+       int c = 102 + random()%32;
+       checkers[i][j][0] = c;
+       checkers[i][j][1] = c;
+       checkers[i][j][2] = c;
+      }
+      else {
+       int c = 153 + random()%32;
+       checkers[i][j][0] = c;/*153;*/
+       checkers[i][j][1] = c;/*c;*//*0;*/
+       checkers[i][j][2] = c;/*c;*//*0;*/
+      }
+    }
+  }
+
+  glGenTextures(1, &checktexture);
+  glBindTexture(GL_TEXTURE_2D, checktexture);
+
+  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
+  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
+  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
+  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
+  glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth, 
+              checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, 
+              &checkers[0][0]);
+  glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+}
+
+void makeBrushedImage(void) {
+  int i, j, r, c, k;
+
+  for(i = 0; i < checkImageWidth; ++i)
+    for(j = 0; j < checkImageHeight; ++j) {
+
+      c = 102+102*fabs(sin(2.0*i / Pi)*sin(2.0*j/Pi)) + random()%51;
+
+/*       c = (i+j)%8==0 || (i+j+5)%8==0 ? 153 : 102; */
+
+      checkers[i][j][0] = c;
+      checkers[i][j][1] = c;
+      checkers[i][j][2] = c;
+    }
+  
+/*   for (i = 0; i < checkImageWidth; i++) { */
+/*     for (j = 0; j < checkImageHeight; j++) { */
+/*       int c = 102 + pow((random()%1000)/1000.0, 4)*103; */
+/*       checkers[i][j][0] = c; */
+/*       checkers[i][j][1] = c; */
+/*       checkers[i][j][2] = c; */
+/*     } */
+/*   } */
+
+/*   /\* smooth *\/ */
+/*   for (i = 0; i < checkImageWidth; i++) { */
+/*     for (j = 0; j < checkImageHeight; j++) { */
+/*       int a = checkers[(i+checkImageWidth+1)%checkImageWidth][j][0] +  */
+/*     4*checkers[i][j][0] + checkers[(i+1)%checkImageWidth][j][0]; */
+/*       a /= 6; */
+/*       checkers[i][j][0] = a; */
+/*       checkers[i][j][1] = a; */
+/*       checkers[i][j][2] = a; */
+/*     } */
+/*   } */
+
+  glGenTextures(1, &brushedtexture);
+  glBindTexture(GL_TEXTURE_2D, brushedtexture);
+
+  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
+  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
+  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
+  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
+  glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth, 
+              checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, 
+              &checkers[0][0]);
+  glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+}
+
+void draw_wall(double x1, double z1, double x2, double z2) {
+  float x = fabs(x2 - x1)/2.0;
+
+  glBegin(GL_QUADS);
+
+  /* draw top */
+  glNormal3f(0.0, 1.0, 0.0);
+  glTexCoord2f(0.0, 0.0);
+  glVertex3f(x1, 1.0, z1+0.25);
+  glTexCoord2f(x, 0.0);
+  glVertex3f(x2, 1.0, z2+0.25);
+  glTexCoord2f(x, 0.25);
+  glVertex3f(x2, 1.0, z2-0.25);
+  glTexCoord2f(0.0, 0.25);
+  glVertex3f(x1, 1.0, z1-0.25);
+
+  /* draw sides */
+  glNormal3f(0.0, 0.0, 1.0);
+  glTexCoord2f(0.0, 0.0);
+  glVertex3f(x1, 0.0, z1+0.25);
+  glTexCoord2f(x, 0.0);
+  glVertex3f(x2, 0.0, z2+0.25);
+  glTexCoord2f(x, 0.5);
+  glVertex3f(x2, 1.0, z2+0.25);
+  glTexCoord2f(0.0, 0.5);
+  glVertex3f(x1, 1.0, z1+0.25);
+
+  glNormal3f(0.0, 0.0, -1.0);
+  glTexCoord2f(0.0, 0.0);
+  glVertex3f(x1, 0.0, z1-0.25);
+  glTexCoord2f(x, 0.0);
+  glVertex3f(x2, 0.0, z2-0.25);
+  glTexCoord2f(x, 0.5);
+  glVertex3f(x2, 1.0, z2-0.25);
+  glTexCoord2f(0.0, 0.5);
+  glVertex3f(x1, 1.0, z1-0.25);
+
+  /* draw ends */
+  glNormal3f(1.0, 0.0, 0.0);
+  glTexCoord2f(0.0, 0.0);
+  glVertex3f(x2, 0.0, z2+0.25);
+  glTexCoord2f(0.25, 0.0);
+  glVertex3f(x2, 0.0, z2-0.25);
+  glTexCoord2f(0.25, 0.5);
+  glVertex3f(x2, 1.0, z2-0.25);
+  glTexCoord2f(0.0, 0.5);
+  glVertex3f(x2, 1.0, z2+0.25);
+
+  glNormal3f(-1.0, 0.0, 0.0);
+  glTexCoord2f(0.0, 0.0);
+  glVertex3f(x1, 0.0, z1-0.25);
+  glTexCoord2f(0.25, 0.0);
+  glVertex3f(x1, 0.0, z1+0.25);
+  glTexCoord2f(0.25, 0.5);
+  glVertex3f(x1, 1.0, z1+0.25);
+  glTexCoord2f(0.0, 0.5);
+  glVertex3f(x1, 1.0, z1-0.25);
+
+  glEnd();
+}
+
+int pastfirst = 0;
+
+void draw_board(void) {
+
+  int i, j;
+  double h = 0.5;
+  double stf = 0.0625;
+
+  glBindTexture(GL_TEXTURE_2D, checktexture);
+
+  glBegin(GL_QUADS);
+
+  for(i = 0; i < BOARDSIZE; ++i)
+    for(j = 0; j < BOARDSIZE; ++j) {
+      if(board[currentboard][j][i]) {
+
+/*     /\* draw top *\/ */
+/*     glNormal3f(0.0, 1.0, 0.0); */
+/*     glTexCoord2f(0.0 + stf, 0.0 + stf); */
+/*     glVertex3f(i-0.5, h, j+0.5); */
+/*     glTexCoord2f(1.0 + stf, 0.0 + stf); */
+/*     glVertex3f(i+0.5, h, j+0.5); */
+/*     glTexCoord2f(1.0 + stf, 1.0 + stf); */
+/*     glVertex3f(i+0.5, h, j-0.5); */
+/*     glTexCoord2f(0.0 + stf, 1.0 + stf); */
+/*     glVertex3f(i-0.5, h, j-0.5); */
+
+       /* draw top */
+       glNormal3f(0.0, 1.0, 0.0);
+       glTexCoord2f(0.0 + stf, 0.0 + stf);
+       glVertex3f(i-0.5, h, j+0.5);
+       glTexCoord2f(1.0 + stf, 0.0 + stf);
+       glVertex3f(i+0.5, h, j+0.5);
+       glTexCoord2f(1.0 + stf, 1.0 + stf);
+       glVertex3f(i+0.5, h, j-0.5);
+       glTexCoord2f(0.0 + stf, 1.0 + stf);
+       glVertex3f(i-0.5, h, j-0.5);
+
+       /* draw south face */
+       if(j == 9 || !board[currentboard][j+1][i]) {
+         glNormal3f(0.0, 0.0, 1.0);
+         glTexCoord2f(0.0 + stf, 0.0 + stf);
+         glVertex3f(i-0.5, 0.0, j+0.5);
+         glTexCoord2f(1.0 + stf, 0.0 + stf);
+         glVertex3f(i+0.5, 0.0, j+0.5);
+         glTexCoord2f(1.0 + stf, h + stf);
+         glVertex3f(i+0.5, h, j+0.5);
+         glTexCoord2f(0.0 + stf, h + stf);
+         glVertex3f(i-0.5, h, j+0.5);
+       }
+
+       /* draw north face */
+       if(j == 0 || !board[currentboard][j-1][i]) {
+         glNormal3f(0.0, 0.0, -1.0);
+         glTexCoord2f(0.0 + stf, 0.0 + stf);
+         glVertex3f(i+0.5, 0.0, j-0.5);
+         glTexCoord2f(1.0 + stf, 0.0 + stf);
+         glVertex3f(i-0.5, 0.0, j-0.5);
+         glTexCoord2f(1.0 + stf, h + stf);
+         glVertex3f(i-0.5, h, j-0.5);
+         glTexCoord2f(0.0 + stf, h + stf);
+         glVertex3f(i+0.5, h, j-0.5);
+       }
+
+       /* draw east face */
+       if(i == 9 || !board[currentboard][j][i+1]) {
+         glNormal3f(1.0, 0.0, 0.0);
+         glTexCoord2f(0.0 + stf, 0.0 + stf);
+         glVertex3f(i+0.5, 0.0, j+0.5);
+         glTexCoord2f(1.0 + stf, 0.0 + stf);
+         glVertex3f(i+0.5, 0.0, j-0.5);
+         glTexCoord2f(1.0 + stf, h + stf);
+         glVertex3f(i+0.5, h, j-0.5);
+         glTexCoord2f(0.0 + stf, h + stf);
+         glVertex3f(i+0.5, h, j+0.5);
+       }
+
+       /* draw west face */
+       if(i == 0 || !board[currentboard][j][i-1]) {
+         glNormal3f(-1.0, 0.0, 0.0);
+         glTexCoord2f(0.0 + stf, 0.0 + stf);
+         glVertex3f(i-0.5, 0.0, j-0.5);
+         glTexCoord2f(1.0 + stf, 0.0 + stf);
+         glVertex3f(i-0.5, 0.0, j+0.5);
+         glTexCoord2f(1.0 + stf, h + stf);
+         glVertex3f(i-0.5, h, j+0.5);
+         glTexCoord2f(0.0 + stf, h + stf);
+         glVertex3f(i-0.5, h, j-0.5);
+       }
+      }
+      else {
+       double tx = 2.0;
+       glNormal3f(0.0, 1.0, 0.0);
+       glTexCoord2f(0.0, 0.0);
+       glVertex3f(i-0.5, 0.0, j+0.5);
+       glTexCoord2f(tx, 0.0);
+       glVertex3f(i+0.5, 0.0, j+0.5);
+       glTexCoord2f(tx, tx);
+       glVertex3f(i+0.5, 0.0, j-0.5);
+       glTexCoord2f(0.0, tx);
+       glVertex3f(i-0.5, 0.0, j-0.5);
+      }
+    }
+  glEnd();
+
+/*   /\* draw elevator *\/ */
+/*   glBindTexture(GL_TEXTURE_2D, brushedtexture); */
+
+/*   glBegin(GL_QUADS); */
+
+/*   glNormal3f(0.0, 1.0, 0.0); */
+
+/*   if(pastfirst) { */
+/*       /\* source *\/ */
+/*       glTexCoord2f(0.0, 0.0); */
+/*       glVertex3f(0.5, 0.0, BOARDSIZE - 0.5 + 0.2); */
+/*       glTexCoord2f(1.0, 0.0); */
+/*       glVertex3f(1.5, 0.0, BOARDSIZE - 0.5 + 0.2); */
+/*       glTexCoord2f(1.0, 1.5); */
+/*       glVertex3f(1.5, 0.0, BOARDSIZE + 1.0 + 0.2); */
+/*       glTexCoord2f(0.0, 1.5); */
+/*       glVertex3f(0.5, 0.0, BOARDSIZE + 1.0 + 0.2); */
+/*   } */
+
+/*   /\* destination *\/ */
+/*   glTexCoord2f(0.0, 0.0); */
+/*   glVertex3f(BOARDSIZE - 2.5, elevator, -2.0 - 0.2); */
+/*   glTexCoord2f(1.0, 0.0); */
+/*   glVertex3f(BOARDSIZE - 1.5, elevator, -2.0 - 0.2); */
+/*   glTexCoord2f(1.0, 1.5); */
+/*   glVertex3f(BOARDSIZE - 1.5, elevator, -0.5 - 0.2); */
+/*   glTexCoord2f(0.0, 1.5); */
+/*   glVertex3f(BOARDSIZE - 2.5, elevator, -0.5 - 0.2); */
+
+/*   glEnd(); */
+
+/*   for(i = 0; i < BOARDSIZE; ++i) */
+/*     for(j = 0; j < BOARDSIZE; ++j) { */
+/*       if(board[j][i]) { */
+
+/*     /\* draw brushed boxtop *\/ */
+/*     glNormal3f(0.0, 1.0, 0.0); */
+/*     glTexCoord2f(0.0 + stf, 0.0 + stf); */
+/*     glVertex3f(i-0.5 + stf, h+0.001, j+0.5 - stf); */
+/*     glTexCoord2f(1.0 + stf, 0.0 + stf); */
+/*     glVertex3f(i+0.5 - stf, h+0.001, j+0.5 - stf); */
+/*     glTexCoord2f(1.0 + stf, 1.0 + stf); */
+/*     glVertex3f(i+0.5 - stf, h+0.001, j-0.5 + stf); */
+/*     glTexCoord2f(0.0 + stf, 1.0 + stf); */
+/*     glVertex3f(i-0.5 + stf, h+0.001, j-0.5 + stf); */
+/*       } */
+/*     } */
+  
+/*   glEnd(); */
+}
+
+void build_board(int b) {
+  int i, j;
+
+  for(i = 0; i < BOARDSIZE; ++i)
+    for(j = 0; j < BOARDSIZE; ++j)
+      board[b][i][j] = 1;
+  
+/*   for(i = 0; i < BOARDSIZE; ++i) { */
+/*     board[0][i] = 1; */
+/*     board[i][0] = 1; */
+/*     board[BOARDSIZE-1][BOARDSIZE-i] = 1; */
+/*     board[BOARDSIZE-i][BOARDSIZE-1] = 1; */
+/*   } */
+
+/*   board[0][BOARDSIZE-2] = 0; */
+/*   board[BOARDSIZE-1][1] = 0; */
+
+
+  board[b][BOARDSIZE-1][1] = 0;
+  board[b][0][BOARDSIZE-2] = 0;
+
+  /* build the ant paths */
+  if(currentboard == b) {
+    for(i = 0; i < ANTCOUNT; ++i) {
+      int sx = BOARDSIZE-2;
+      int sy = 1;
+      
+      for(j = 0; ; ++j) {
+       board[b][sx][sy] = 0;
+       antpath[i][j][0] = sy - 5.0;
+       antpath[i][j][1] = sx - 5.0;
+       
+       if(random()%2) {
+         if(sx > 1)
+           sx -= 1;
+         else if(sy < BOARDSIZE-2)
+           sy += 1;
+         else
+           break;
+       }
+       else {
+         if(sy < BOARDSIZE-2)
+           sy += 1;
+         else if(sx > 1)
+           sx -= 1;
+         else
+           break;
+       }
+      }
+      
+      ++j;
+      antpath[i][j][0] = BOARDSIZE-7.0;
+      antpath[i][j][1] = -7.0;
+      antpathlength[i] = j;
+    }
+  }
+
+/*   for(i = 0; i < 20; ++i) { */
+/*     int x = 1 + random()%(BOARDSIZE-2); */
+/*     int y = 1 + random()%(BOARDSIZE-2); */
+/*     board[x][y] = 1; */
+/*   } */
+}
+
+/* compute nearness */
+int near(double a[2], double b[2]) {
+  return fabs(a[0] - b[0]) < 0.5 && fabs(a[1] - b[1]) < 0.5;
+}
+
+double sign(double d) {
+  return d < 0.0 ? -1.0 : 1.0;
+}
+
+double min(double a, double b) {
+  return a < b ? a : b;
+}
+
+/* draw method for ant */
+Bool draw_ant(float *Material, int mono, int shadow,
+             float ant_step, Bool (*sphere)(float), Bool (*cone)(float)) {
+  
+  float cos1 = cos(ant_step);
+  float cos2 = cos(ant_step + 2 * Pi / 3);
+  float cos3 = cos(ant_step + 4 * Pi / 3);
+  float sin1 = sin(ant_step);
+  float sin2 = sin(ant_step + 2 * Pi / 3);
+  float sin3 = sin(ant_step + 4 * Pi / 3);
+  
+  glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mono ? MaterialGray5 : Material);
+
+/*   glEnable(GL_CULL_FACE); */
+
+  glPushMatrix();
+  glScalef(1, 1.3, 1);
+  if(!((*sphere)(0.18)))
+    return False;
+  glScalef(1, 1 / 1.3, 1);
+  glTranslatef(0.00, 0.30, 0.00);
+  if(!((*sphere)(0.2)))
+    return False;
+  
+  glTranslatef(-0.05, 0.17, 0.05);
+  glRotatef(-90, 1, 0, 0);
+  glRotatef(-25, 0, 1, 0);
+  if(!((*cone)(0.05)))
+    return False;
+  glTranslatef(0.00, 0.10, 0.00);
+  if(!((*cone)(0.05)))
+    return False;
+  glRotatef(25, 0, 1, 0);
+  glRotatef(90, 1, 0, 0);
+  
+  glScalef(1, 1.3, 1);
+  glTranslatef(0.15, -0.65, 0.05);
+  if(!((*sphere)(0.25)))
+    return False;
+  glScalef(1, 1 / 1.3, 1);
+  glPopMatrix();
+
+/*   glDisable(GL_CULL_FACE); */
+  
+  glDisable(GL_LIGHTING);
+
+  /* ANTENNAS */
+  glBegin(GL_LINES);
+  glColor3fv(mono ? MaterialGray5 : Material);
+  glVertex3f(0.00, 0.30, 0.00);
+  glColor3fv(MaterialGray);
+  glVertex3f(0.40, 0.70, 0.40);
+  glColor3fv(mono ? MaterialGray5 : Material);
+  glVertex3f(0.00, 0.30, 0.00);
+  glColor3fv(MaterialGray);
+  glVertex3f(0.40, 0.70, -0.40);
+  glEnd();
+
+  if(!shadow) {
+    glBegin(GL_POINTS);
+    glColor3fv(mono ? MaterialGray6 : MaterialRed);
+    glVertex3f(0.40, 0.70, 0.40);
+    glVertex3f(0.40, 0.70, -0.40);
+    glEnd();
+  }
+
+  /* LEFT-FRONT ARM */
+  glBegin(GL_LINE_STRIP);
+  glColor3fv(mono ? MaterialGray5 : Material);
+  glVertex3f(0.00, 0.05, 0.18);
+  glVertex3f(0.35 + 0.05 * cos1, 0.15, 0.25);
+  glColor3fv(MaterialGray);
+  glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45);
+  glEnd();
+
+  /* LEFT-CENTER ARM */
+  glBegin(GL_LINE_STRIP);
+  glColor3fv(mono ? MaterialGray5 : Material);
+  glVertex3f(0.00, 0.00, 0.18);
+  glVertex3f(0.35 + 0.05 * cos2, 0.00, 0.25);
+  glColor3fv(MaterialGray);
+  glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45);
+  glEnd();
+
+  /* LEFT-BACK ARM */
+  glBegin(GL_LINE_STRIP);
+  glColor3fv(mono ? MaterialGray5 : Material);
+  glVertex3f(0.00, -0.05, 0.18);
+  glVertex3f(0.35 + 0.05 * cos3, -0.15, 0.25);
+  glColor3fv(MaterialGray);
+  glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45);
+  glEnd();
+
+  /* RIGHT-FRONT ARM */
+  glBegin(GL_LINE_STRIP);
+  glColor3fv(mono ? MaterialGray5 : Material);
+  glVertex3f(0.00, 0.05, -0.18);
+  glVertex3f(0.35 - 0.05 * sin1, 0.15, -0.25);
+  glColor3fv(MaterialGray);
+  glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45);
+  glEnd();
+
+  /* RIGHT-CENTER ARM */
+  glBegin(GL_LINE_STRIP);
+  glColor3fv(mono ? MaterialGray5 : Material);
+  glVertex3f(0.00, 0.00, -0.18);
+  glVertex3f(0.35 - 0.05 * sin2, 0.00, -0.25);
+  glColor3fv(MaterialGray);
+  glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45);
+  glEnd();
+
+  /* RIGHT-BACK ARM */
+  glBegin(GL_LINE_STRIP);
+  glColor3fv(mono ? MaterialGray5 : Material);
+  glVertex3f(0.00, -0.05, -0.18);
+  glVertex3f(0.35 - 0.05 * sin3, -0.15, -0.25);
+  glColor3fv(MaterialGray);
+  glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45);
+  glEnd();
+
+  if(!shadow) {
+    glBegin(GL_POINTS);
+    glColor3fv(mono ? MaterialGray8 : MaterialGray35);
+    glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45);
+    glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45);
+    glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45);
+    glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45);
+    glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45);
+    glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45);
+    glEnd();
+  }
+
+  glEnable(GL_LIGHTING);
+
+  return True;
+}
+
+double ant_step = 0.0;
+double first_ant_step = 0.0;
+int started = 0;
+int introduced = 300;
+int fir = 0;
+int makenew = 1;
+int entroducing = 12;
+
+static Bool draw_moebius_strip(ModeInfo * mi) {
+  moebiusstruct *mp = &moebius[MI_SCREEN(mi)];
+  int i;
+  int mono = MI_IS_MONO(mi);
+
+/*   glMatrixMode(GL_MODELVIEW); */
+/*   glLoadIdentity(); */
+/*   glPushMatrix(); */
+
+  glEnable(GL_LIGHTING);
+/*   glDisable(GL_BLEND); */
+  glEnable(GL_LIGHT0);
+  glEnable(GL_LIGHT1);
+
+  /* set light */
+/*   double l1 = 1.0 - (elevator < 1.0 ? elevator : 2.0 - elevator); */
+/*   GLfloat df[4] = {0.8*l1, 0.8*l1, 0.8*l1, 1.0}; */
+/*   glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */
+/*   glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */
+
+  /* draw board */
+  if(elevator < 1.0) {
+    glEnable(GL_TEXTURE_2D);
+    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray6);
+    glTranslatef(-(BOARDSIZE-1)/2.0, 0.0, -(BOARDSIZE-1)/2.0);
+    draw_board();
+    glTranslatef(BOARDSIZE/2.0, 0.0, BOARDSIZE/2.0);
+    glDisable(GL_TEXTURE_2D);
+  }
+
+  introduced--;
+
+  glTranslatef(0.0, -0.1, 0.0);
+
+  for(i = 0; i < ANTCOUNT; ++i) {
+
+/*     glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */
+/*     glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */
+
+    if(!anton[i]) { continue; }
+
+    /* determine location, move to goal */
+    glPushMatrix();
+    glTranslatef(0.0, 0.01, 0.0);
+    glTranslatef(antposition[i][0], antposition[i][2], antposition[i][1]);
+/*     glScalef(1.0, 0.01, 1.0); */
+    glScalef(0.6, 0.01, 0.6);
+    glRotatef(180.0 + antdirection[i]*180.0/PI, 0.0, 1.0, 0.0);
+    glRotatef(90.0, 0.0, 0.0, 1.0);
+    glDisable(GL_LIGHTING);
+    glEnable(GL_BLEND);
+    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+    glColor4fv(MaterialGrayB);
+
+    glScalef(antsize[i], antsize[i], antsize[i]);
+
+    /* slow down first ant */
+    if(i == 0 && part[i] == antpathlength[i])
+      draw_ant(MaterialGrayB, mono, 1, first_ant_step, mySphere, myCone);
+    else
+      draw_ant(MaterialGrayB, mono, 1, ant_step, mySphere, myCone);
+
+    glPopMatrix();
+
+    glDisable(GL_BLEND);
+    glEnable(GL_LIGHTING);
+    
+    glPushMatrix();
+/*     glTranslatef(0.0, 0.18, 0.0); */
+    glTranslatef(0.0, 0.12, 0.0);
+    glTranslatef(antposition[i][0], antposition[i][2], antposition[i][1]);
+    glRotatef(180.0 + antdirection[i]*180.0/PI, 0.0, 1.0, 0.0);
+    glRotatef(90.0, 0.0, 0.0, 1.0);
+    glScalef(0.6, 0.6, 0.6);
+
+    glScalef(antsize[i], antsize[i], antsize[i]);
+
+/*     glEnable(GL_TEXTURE_2D); */
+/*     glBindTexture(GL_TEXTURE_2D, brushedtexture); */
+
+/*     glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed); */
+
+    /* slow down first ant */    
+    if(i == 0 && part[i] == antpathlength[i] && elevator > 0.0) {
+      glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+      glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
+      draw_ant(antmaterial[i], mono, 1, first_ant_step, mySphere, myCone);
+    }
+    else {
+/*       glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */
+/*       glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */
+
+      glEnable(GL_TEXTURE_2D);
+      glBindTexture(GL_TEXTURE_2D, brushedtexture);
+      draw_ant(antmaterial[i], mono, 1, ant_step, mySphereTex, myCone);
+      glDisable(GL_TEXTURE_2D);
+    }
+
+
+/*     draw_ant(antmaterial[i], mono, 0, ant_step, mySphereTex, myCone); */
+/*     glDisable(GL_TEXTURE_2D); */
+    glPopMatrix();
+  }
+
+/*   glPopMatrix(); */
+
+/*   /\* now draw overlay *\/ */
+/*   glDisable(GL_LIGHTING); */
+/*   glDisable(GL_BLEND); */
+
+/*   /\* go to ortho mode *\/ */
+/*   glMatrixMode(GL_PROJECTION); */
+/*   glPushMatrix(); */
+/*   glLoadIdentity(); */
+/*   glOrtho(-4.0, 4.0, -3.0, 3.0, -100.0, 100.0); */
+  
+/*   /\* translate to corner *\/ */
+/*   glTranslatef(4.0-1.2, 3.0-1.2, 0.0); */
+
+/*   glDisable(GL_LIGHTING); */
+/*   glEnable(GL_BLEND); */
+
+/*   /\* draw the 2d board *\/ */
+/*   glBegin(GL_QUADS); */
+/*   { */
+/*     int i, j; */
+/*     double sz = 1.0; */
+/*     for(i = 0; i < BOARDSIZE; ++i) */
+/*       for(j = 0; j < BOARDSIZE; ++j) { */
+/*     int par = board[i][j]; */
+/*     glColor4f(par ? 0.4 : 0.6, */
+/*               par ? 0.4 : 0.6, */
+/*               par ? 0.4 : 0.6, */
+/*               0.5); */
+/*     glNormal3f(0.0, 0.0, 1.0); */
+/*     glVertex3f((sz*(i+1))/BOARDSIZE,     (sz*(j+1))/BOARDSIZE, 0.0); */
+/*     glVertex3f((sz*i)/BOARDSIZE, (sz*(j+1))/BOARDSIZE, 0.0); */
+/*     glVertex3f((sz*i)/BOARDSIZE, (sz*j)/BOARDSIZE, 0.0); */
+/*     glVertex3f((sz*(i+1))/BOARDSIZE, (sz*j)/BOARDSIZE, 0.0); */
+/*       } */
+/*   } */
+/*   glEnd(); */
+  
+/*   glPopMatrix(); */
+
+
+  /* but the step size is the same! */
+  ant_step += 0.18;
+/*   if(ant_step > 2*Pi) { */
+/*     ant_step = 0.0; */
+/*   } */
+
+  if(ant_step > 5*Pi)
+    started = 1;
+
+  mp->ant_position += 1;
+  return True;
+}
+#undef MoebiusDivisions
+#undef MoebiusTransversals
+
+void reshape_moebius(ModeInfo * mi, int width, int height) {
+  double h = (GLfloat) height / (GLfloat) width;  
+  int size = (width / 512) + 1;
+  moebiusstruct *mp = &moebius[MI_SCREEN(mi)];
+
+  glViewport(0, 0, mp->WindW = (GLint) width, mp->WindH = (GLint) height);
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+
+  gluPerspective(45, 1/h, 0.001, 25.0);
+
+  glMatrixMode(GL_MODELVIEW);
+/*   glLineWidth(3.0); */
+   glLineWidth(size);
+  glPointSize(size);
+}
+
+double fadeout = 1.0;
+double fadeoutspeed = 0.0;
+
+void update_ants(void) {
+  int i;
+
+  /* fade out */
+  if(fadeoutspeed < -0.00001) {
+
+    if(fadeout <= 0.0) {
+      /* switch boards: rebuild old board, increment current */
+      currentboard = (currentboard+1)%BOARDCOUNT;
+      build_board(currentboard);
+      fadeoutspeed = 0.02;
+    }
+    
+    fadeout += fadeoutspeed;
+
+    GLfloat df[4] = {0.8*fadeout, 0.8*fadeout, 0.8*fadeout, 1.0};
+    glLightfv(GL_LIGHT0, GL_DIFFUSE, df);
+    glLightfv(GL_LIGHT1, GL_DIFFUSE, df);
+  }
+
+  /* fade in */
+  if(fadeoutspeed > 0.0001) {
+    fadeout += fadeoutspeed;
+    if(fadeout >= 1.0) {
+      fadeout = 1.0;
+      fadeoutspeed = 0.0;
+      entroducing = 12;
+    }
+    GLfloat df[4] = {0.8*fadeout, 0.8*fadeout, 0.8*fadeout, 1.0};
+    glLightfv(GL_LIGHT0, GL_DIFFUSE, df);
+    glLightfv(GL_LIGHT1, GL_DIFFUSE, df);    
+  }
+
+  for(i = 0; i < ANTCOUNT; ++i) {
+
+    if(!anton[i] && elevator < 1.0) {
+
+      /* turn on ant */
+      if(entroducing > 0 && introduced <= 0 && random()%100 == 0) {
+       anton[i] = 1;
+       part[i] = 0;
+       antsize[i] = 0.0;
+       antposition[i][0] = -4.0;
+       antposition[i][1] = 5.0;
+       antdirection[i] = PI/2.0;
+       bposition[i][0] = 0;
+       bposition[i][1] = 8;
+       introduced = 300;
+       entroducing--;
+      }
+
+      continue;
+    }
+
+    if(part[i] == 0 && antsize[i] < 1.0) {
+      antsize[i] += 0.02;
+      continue;
+    }
+
+    if(part[i] > antpathlength[i] && antsize[i] > 0.0) {
+      antsize[i] -= 0.02;
+      if(antvelocity[i] > 0.0) {
+       antvelocity[i] -= 0.02;
+      }
+      else { antvelocity[i] = 0.0; }
+
+      continue;
+    }
+
+    if(part[i] > antpathlength[i] && antsize[i] <= 0.0) {
+      antvelocity[i] = 0.02;
+      
+      /*       if(i != 0) { */
+      antmaterial[i] = materials[random()%MATERIALS];
+      /*       } */
+      
+      antdirection[i] = PI/2.0;
+      bposition[i][0] = 0;
+      bposition[i][1] = 8;
+      part[i] = 0;
+      
+      antsize[i] = 0.0;
+      
+      anton[i] = 0;
+      
+      antposition[i][0] = -4.0;
+      antposition[i][1] = 5.0;
+      
+      /*       /\* reset camera *\/ */
+      /*       if(i == focus) { */
+      /*         started = 0; */
+      /*         ant_step = 0.0; */
+      /*       } */
+      
+      /* check for the end */
+      if(entroducing <= 0) {
+       int ao = 0, z = 0;
+       for(z = 0; z < ANTCOUNT; ++z) {
+         if(anton[z]) { ao = 1; break; }
+       }
+
+       if(ao == 0) {
+         fadeoutspeed = -0.02;
+       }
+      }
+
+    }
+    
+    /* near goal, bend path towards next step */
+    if(near(antposition[i], antpath[i][part[i]])) {
+      
+      ++part[i];
+
+/*       /\* special first ant *\/ */
+/*       if(i == 0 && part[i] > antpathlength[i]) { */
+/*     if(fir) */
+/*       first_ant_step = ant_step; */
+
+/*     antvelocity[i] = 0.0; */
+/* /\*         antposition[i][2] += 0.025; *\/ */
+/*     elevator += 0.025; */
+
+/*     /\* set light *\/ */
+/*     double l1 = 1.0 - (elevator < 1.0 ? elevator : 2.0 - elevator); */
+/*     GLfloat df[4] = {0.8*l1, 0.8*l1, 0.8*l1, 1.0}; */
+/*     glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */
+/*     glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */
+
+/*     /\* draw next board *\/ */
+/*     if(elevator > 1.0) { */
+
+/*       if(makenew == 1) { */
+/*         int re; */
+         
+/*         /\* switch boards: rebuild old board, increment current *\/ */
+/*         currentboard = (currentboard+1)%BOARDCOUNT; */
+/*         build_board(currentboard); */
+
+/*         for(re = 1; re < ANTCOUNT; ++re) { */
+/*           anton[re] = 0; */
+/*           antmaterial[re] = materials[random()%MATERIALS]; */
+/*         } */
+
+/*         makenew = 0; */
+
+/*       } */
+
+/*       /\* draw the other board *\/ */
+/*       glEnable(GL_TEXTURE_2D); */
+/*       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray6); */
+
+/*       glPushMatrix(); */
+/*       glTranslatef(-(-(BOARDSIZE-3.5)+(BOARDSIZE-1)/2.0), 0.0,  */
+/*                    -(2.4+BOARDSIZE+(BOARDSIZE-1)/2.0)); */
+/*       draw_board(); */
+/*       glPopMatrix(); */
+/*       glDisable(GL_TEXTURE_2D); */
+/*     } */
+/*     /\* reset *\/ */
+/*     if(elevator > 2.0) { */
+/*       antposition[i][0] = -4.0;/\*-= -(-(BOARDSIZE-3.5)+(BOARDSIZE-1)/2.0);*\//\*= -4.0;*\/ */
+/*       antposition[i][1] = 5.5;/\*-(2.4+BOARDSIZE+(BOARDSIZE-1)/2.0);*\/ */
+/* /\*           antposition[i][2] = 0.15; *\/ */
+/*       antdirection[i] = PI/2.0; */
+/*       bposition[i][0] = 0; */
+/*       bposition[i][1] = 8; */
+/*       part[i] = 0; */
+/*       antvelocity[i] = 0.02; */
+/*       fir = 0; */
+/*       antmaterial[i] = MaterialRed; */
+
+/*       makenew = 1; */
+
+/*       elevator = 0.0; */
+/*       introduced = 200; */
+/*     } */
+/*     else { */
+/*       part[i]--; */
+/*     } */
+/*       } */
+    
+    }
+    
+    /* move toward goal, correct ant direction if required */
+    else {
+      
+      /* difference */
+      double dx = antpath[i][part[i]][0] - antposition[i][0];
+      double dz = - antpath[i][part[i]][1] + antposition[i][1];
+      double theta, ideal;
+
+      if(dz > EPSILON)
+       theta = atan(dz/dx);
+      else
+       theta = dx > EPSILON ? 0.0 : PI;
+      
+      ideal = theta - antdirection[i];
+      if(ideal < -Pi/2.0)
+       ideal += Pi;
+
+      /* compute correction */
+      double dt = sign(ideal) * min(fabs(ideal), PI/90.0);
+      antdirection[i] += dt;
+      if(antdirection[i] > 2.0*PI)
+       antdirection[i] = 0.0;
+    }
+    
+    antposition[i][0] += antvelocity[i] * cos(antdirection[i]);
+    antposition[i][1] += antvelocity[i] * sin(-antdirection[i]);
+  }
+}
+
+static void pinit(void) {
+  int status;
+  glClearDepth(1.0);
+  glClearColor(0.0, 0.0, 0.0, 1.0);
+  
+  glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
+  glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+  glLightfv(GL_LIGHT0, GL_POSITION, position0);
+  glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
+  glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
+  glLightfv(GL_LIGHT1, GL_POSITION, position1);
+
+  glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05);
+  glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.001);
+  glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1);
+
+  glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.05);
+  glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.001);
+  glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 0.1);
+
+
+/*   glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); */
+/*   glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); */
+  glEnable(GL_LIGHTING);
+  glEnable(GL_LIGHT0);
+  glEnable(GL_LIGHT1);
+  glEnable(GL_NORMALIZE);
+  glFrontFace(GL_CCW);
+  glCullFace(GL_BACK);
+  
+  /* moebius */
+  glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
+  glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
+
+  glShadeModel(GL_SMOOTH);
+  glEnable(GL_DEPTH_TEST);
+  glDisable(GL_TEXTURE_2D);
+
+  /* setup textures */
+  makeCheckImage();
+  makeBrushedImage();
+
+  build_board(0);
+  build_board(1);
+
+/*   makeCheckImage(); */
+/*   glPixelStorei(GL_UNPACK_ALIGNMENT, 1); */
+/*   glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth,  */
+/*            checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, checkers); */
+/*   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); */
+/*   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); */
+
+/*   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); */
+/*   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); */
+/*   glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); */
+  glEnable(GL_TEXTURE_2D);
+    
+/*   glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); */
+/*   glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); */
+}
+
+void release_moebius(ModeInfo * mi) {
+  if(moebius) {
+       free((void *) moebius);
+       moebius = (moebiusstruct *) NULL;
+  }
+  FreeAllGL(mi);
+}
+
+int mag = 4.0;
+#define MAX_MAGNIFICATION 10
+#define max(a, b) a < b ? b : a
+#define min(a, b) a < b ? a : b
+
+Bool moebius_handle_event (ModeInfo *mi, XEvent *event) {
+  moebiusstruct *mp = &moebius[MI_SCREEN(mi)];
+
+  switch(event->xany.type) {
+  case ButtonPress:
+
+    switch(event->xbutton.button) {
+
+    case Button1:
+      mp->button_down_p = True;
+      gltrackball_start(mp->trackball, 
+                       event->xbutton.x, event->xbutton.y,
+                       MI_WIDTH (mi), MI_HEIGHT (mi));
+      break;
+
+    case Button3:
+      focus = (focus + 1) % ANTCOUNT;
+      break;
+      
+    case Button4:
+      mag = max(mag-1, 1);
+      break;
+
+    case Button5:
+      mag = min(mag+1, MAX_MAGNIFICATION);
+      break;
+    }
+
+    break;
+    
+  case ButtonRelease:
+
+    switch(event->xbutton.button) {
+    case Button1:
+      mp->button_down_p = False;
+      break;
+    }
+
+    break;
+
+  case MotionNotify:
+    if(mp->button_down_p)
+      gltrackball_track(mp->trackball,
+                       event->xmotion.x, event->xmotion.y,
+                       MI_WIDTH (mi), MI_HEIGHT (mi));
+    break;
+    
+  default:
+    return False;
+  }
+
+  return True;
+}
+
+void init_moebius(ModeInfo * mi) {
+  double rot_speed = 0.3;
+
+  moebiusstruct *mp;
+  
+  if (moebius == NULL) {
+       if ((moebius = (moebiusstruct *) calloc(MI_NUM_SCREENS(mi),
+                                               sizeof (moebiusstruct))) == NULL)
+         return;
+  }
+  mp = &moebius[MI_SCREEN(mi)];
+  mp->step = NRAND(90);
+  mp->ant_position = NRAND(90);
+
+  mp->rot = make_rotator (rot_speed, rot_speed, rot_speed, 1, 0, True);
+  mp->trackball = gltrackball_init ();
+  
+  if ((mp->glx_context = init_GL(mi)) != NULL) {
+    reshape_moebius(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+    glDrawBuffer(GL_BACK);
+    pinit();
+  } 
+  else
+    MI_CLEARWINDOW(mi);
+}
+
+void draw_moebius(ModeInfo * mi) {
+  double h = (GLfloat) MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+
+  moebiusstruct *mp;
+  
+  Display    *display = MI_DISPLAY(mi);
+  Window      window = MI_WINDOW(mi);
+  
+  if(!moebius)
+       return;
+  mp = &moebius[MI_SCREEN(mi)];
+  
+  MI_IS_DRAWN(mi) = True;
+  
+  if(!mp->glx_context)
+       return;
+  
+  glXMakeCurrent(display, window, *(mp->glx_context));
+
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+  /* first panel */
+  glPushMatrix();
+/*   h = ((GLfloat) MI_HEIGHT(mi)/2) / (3*(GLfloat)MI_WIDTH(mi)/4); */
+  glViewport(MI_WIDTH(mi)/32, MI_HEIGHT(mi)/8, (9*MI_WIDTH(mi))/16, 3*MI_HEIGHT(mi)/4);
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+
+/*   h = (3*MI_HEIGHT(mi)/4) / (3*MI_WIDTH(mi)/4); */
+  gluPerspective(45, 1/h, 0.001, 25.0);
+
+  glMatrixMode(GL_MODELVIEW);
+  glLoadIdentity();
+
+  glPushMatrix();
+
+  /* follow focused ant */
+  glTranslatef(0.0, 0.0, -mag - 5.0);
+  glRotatef(20.0+5.0*sin(ant_step/40.0), 1.0, 0.0, 0.0);
+/*   glTranslatef(0.0,  */
+/*            started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0)),  */
+/*            started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0))); */
+
+  gltrackball_rotate(mp->trackball);
+
+  glRotatef(ant_step*0.6, 0.0, 1.0, 0.0);
+
+/*   glRotatef(90.0, 0.0, 0.0, 1.0); */
+
+/*   glTranslatef(-antposition[0][0]-0.5, 0.0, -antposition[focus][1]); */
+  /*-elevator*/
+
+  /* sync */
+  if(!draw_moebius_strip(mi)) {
+    release_moebius(mi);
+    return;
+  }
+
+  glPopMatrix();
+  glPopMatrix();
+
+  h = (GLfloat) (3*MI_HEIGHT(mi)/8) / (GLfloat) (MI_WIDTH(mi)/2);
+
+  /* draw overhead */
+  glPushMatrix();
+  glViewport((17*MI_WIDTH(mi))/32, MI_HEIGHT(mi)/2, MI_WIDTH(mi)/2, 3*MI_HEIGHT(mi)/8);
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+  gluPerspective(45, 1/h, 0.001, 25.0);
+  glMatrixMode(GL_MODELVIEW);
+    
+  /* twist scene */
+  glTranslatef(0.0, 0.0, -16.0);
+  glRotatef(60.0, 1.0, 0.0, 0.0);
+  glRotatef(-15.0 + ant_step/10.0, 0.0, 1.0, 0.0);
+  gltrackball_rotate(mp->trackball);
+
+  /* sync */
+  if(!draw_moebius_strip(mi)) {
+    release_moebius(mi);
+    return;
+  }
+
+  glPopMatrix();
+
+  /* draw ant display */
+  glPushMatrix();
+  glViewport((5*MI_WIDTH(mi))/8, MI_HEIGHT(mi)/8, (11*MI_WIDTH(mi))/32, 3*MI_HEIGHT(mi)/8);
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+  gluPerspective(45, 1/h, 0.001, 25.0);
+  glMatrixMode(GL_MODELVIEW);
+    
+  /* twist scene */
+  glTranslatef(0.0, 0.0, -1.6);
+  glRotatef(30.0, 1.0, 0.0, 0.0);
+  glRotatef(ant_step, 0.0, 1.0, 0.0);
+  glRotatef(90.0, 0.0, 0.0, 1.0);
+  
+/*   /\* draw ant shadow *\/ */
+/*   glPushMatrix(); */
+/*   glScalef(1.0, 0.01, 1.0); */
+/*   glRotatef(90.0, 0.0, 0.0, 1.0); */
+/*   glRotatef(90.0, 0.0, 1.0, 0.0); */
+/*   glDisable(GL_LIGHTING); */
+/*   glColor4fv(MaterialGray6); */
+  
+/*   /\* slow down first ant *\/ */
+/*   draw_ant(MaterialGrayB, 0, 1, first_ant_step, mySphere, myCone); */
+/*   glPopMatrix(); */
+
+  /* draw ant body */
+  glEnable(GL_TEXTURE_2D);
+  glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+  glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
+  glBindTexture(GL_TEXTURE_2D, brushedtexture);
+  draw_ant(MaterialGray35, 0, 1, ant_step/2.0, mySphereTex, myCone2);
+  glDisable(GL_TEXTURE_2D);
+
+  glPopMatrix();
+
+/*   /\* draw overlay *\/ */
+/*   glPushMatrix(); */
+
+/*   /\* go to ortho mode *\/ */
+/*   glViewport(MI_WIDTH(mi)/2, MI_HEIGHT(mi)/8, MI_WIDTH(mi)/2, 3*MI_HEIGHT(mi)/8); */
+
+/*   glMatrixMode(GL_PROJECTION); */
+/*   glLoadIdentity(); */
+
+/*   glPushMatrix (); */
+/*   glOrtho(-4.0, 4.0, -3.0, 3.0, -100.0, 100.0); */
+
+/*   glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGrayB); */
+/*   glColor4fv(MaterialGrayB); */
+
+/*   glDisable(GL_LIGHTING); */
+/*   glEnable(GL_BLEND); */
+
+/*   glBegin(GL_QUADS); */
+/*   glNormal3f(0.0, 0.0, 1.0); */
+/*   glVertex3f(4.0, 3.0, 0.0); */
+/*   glVertex3f(2.0, 3.0, 0.0); */
+/*   glVertex3f(2.0, -3.0, 0.0); */
+/*   glVertex3f(4.0, -3.0, 0.0); */
+/*   glEnd(); */
+
+/*   glEnable(GL_LIGHTING); */
+/*   glDisable(GL_BLEND); */
+
+/*   glPopMatrix(); */
+/*   glPopMatrix(); */
+  
+  if (MI_IS_FPS(mi)) do_fps (mi);
+  glFlush();
+  
+  glXSwapBuffers(display, window);
+  
+  update_ants();
+
+  mp->step += 0.025;
+}
+
+void change_moebius(ModeInfo * mi) {
+  moebiusstruct *mp = &moebius[MI_SCREEN(mi)];
+  
+  if (!mp->glx_context)
+       return;
+  
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+  pinit();
+}
+
+#endif
diff --git a/hacks/glx/antmaze.man b/hacks/glx/antmaze.man
new file mode 100644 (file)
index 0000000..bfeb815
--- /dev/null
@@ -0,0 +1,57 @@
+.TH XScreenSaver 1 "May 2005"
+.SH NAME
+antmaze \- ant maze walker
+.SH SYNOPSIS
+.B antinspect
+[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
+[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+.SH DESCRIPTION
+The \fIantmaze\fP code displays ants finding their way through a maze.
+.SH OPTIONS
+.I antmaze
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window.  This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-shadows
+Draw shadows on ground
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use.  Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.B \-fps
+Display a running tally of how many frames per second are being rendered.
+In conjunction with \fB\-delay 0\fP, this can be a useful benchmark of 
+your GL performance.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.BR xscreensaver\-demo (1),
+.BR xscreensaver\-getimage (1)
+.SH COPYRIGHT
+Copyright \(co 2005 by Blair Tennessy.  Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation.  No representations are made about the
+suitability of this software for any purpose.  It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Blair Tennessy <tennessy@cs.ubc.ca>, 8-May-2005.
index 0986156df04b722164eb54ac4b8c60951a520932..36b5d73b45528dd2e4141fc00806891536d96d8d 100644 (file)
@@ -62,54 +62,31 @@ glb_draw_init(void)
                     glb_config.bg_colour[1],
                     glb_config.bg_colour[2],
                     glb_config.bg_colour[3]);
-#if 0
+
        glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, glb_config.bubble_colour);
-#else
-       {
-               /* 
-                * E. Lassauge - 98/06/29
-                * Yeahh, cool ! Now that I know how to have random colors I 
-                * patch this pretty beautiful mode too !!
-                */
-               GLfloat     fred, fgreen, fblue;
-               GLfloat     params[4];
-
-               fred = ((float) (NRAND(100)) / 100.0);
-               fgreen = ((float) (NRAND(100)) / 100.0);
-               /* I keep more blue */
-               fblue = ((float) (NRAND(50)) / 100.0) + 0.50;
-
-               params[0] = fred;
-               params[1] = fgreen;
-               params[2] = fblue;
-               /* For the moment don't play with ALPHA channel */
-               params[3] = glb_config.bubble_colour[3];
-               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, params);
-       }
-#endif
        glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
        glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, mat_emission);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
 
-#if GLB_USE_BLENDING
-       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-#endif
+        if (glb_config.transparent_p)
+          glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
        glEnable(GL_LIGHTING);
        glEnable(GL_LIGHT0);
        glEnable(GL_LIGHT1);
        glEnable(GL_LIGHT2);
-#if GLB_USE_BLENDING
-       glEnable(GL_BLEND);
-#else
-       glEnable(GL_DEPTH_TEST);
-#endif
+
+        if (glb_config.transparent_p)
+          glEnable(GL_BLEND);
+        else
+          glEnable(GL_DEPTH_TEST);
+
        glEnable(GL_AUTO_NORMAL);
        glEnable(GL_NORMALIZE);
 
-#if GLB_USE_BLENDING
-       glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
-#endif
+        if (glb_config.transparent_p)
+          glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
+
        glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
        glLightfv(GL_LIGHT0, GL_POSITION, light_position[0]);
        glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse[0]);
index c85e3500d810c83ad8348122e019cc8e448c9cde..4f24c53f117c32e3913ef373b6646b45ea333386 100644 (file)
@@ -14,6 +14,7 @@ static const char sccsid[] = "@(#)b_lockglue.c  4.11 98/06/16 xlockmore";
  */
 struct glb_config glb_config =
 {
+        0,                     /* transparent_p */
 #if GLB_SLOW_GL
        2,                      /* subdivision_depth */
 #else
@@ -55,6 +56,9 @@ struct glb_config glb_config =
 # define DEFAULTS      "*delay:        10000   \n"     \
                        "*showFPS:      False   \n"
 
+#define DEF_TRANSPARENT "False"
+#define DEF_COLOR "random"
+
 #include "xlockmore.h"
 #else
 #include "xlock.h"
@@ -63,8 +67,24 @@ struct glb_config glb_config =
 
 #ifdef USE_GL
 
-ModeSpecOpt bubble3d_opts =
-{0, NULL, 0, NULL, NULL};
+static Bool transparent_p;
+static char *bubble_color_str;
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+static XrmOptionDescRec opts[] = {
+  { "-transparent",  ".transparent",   XrmoptionNoArg, "True" },
+  { "+transparent",  ".transparent",   XrmoptionNoArg, "False" },
+  { "-color",    ".bubble3d.bubblecolor", XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+  {&transparent_p,   "transparent", "Transparent", DEF_TRANSPARENT, t_Bool},
+  {&bubble_color_str,        "bubblecolor", "BubbleColor", DEF_COLOR, t_String},
+};
+
+ModeSpecOpt bubble3d_opts = {countof(opts), opts, countof(vars), vars, NULL};
 
 #ifdef USE_MODULES
 ModStruct   bubbles3d_description =
@@ -91,9 +111,40 @@ struct context {
 
 static struct context *contexts = 0;
 
+static void
+parse_color (ModeInfo *mi, const char *name, const char *s, GLfloat *a)
+{
+  XColor c;
+
+  if (! XParseColor (MI_DISPLAY(mi), MI_COLORMAP(mi), s, &c))
+    {
+      fprintf (stderr, "%s: can't parse %s color %s", progname, name, s);
+      exit (1);
+    }
+  a[0] = c.red   / 65536.0;
+  a[1] = c.green / 65536.0;
+  a[2] = c.blue  / 65536.0;
+}
+
+static void
+init_colors(ModeInfo *mi)
+{
+       if (strncasecmp(bubble_color_str, "auto", strlen("auto")) == 0) {
+               glb_config.bubble_colour[0] = ((float) (NRAND(100)) / 100.0);
+               glb_config.bubble_colour[1] = ((float) (NRAND(100)) / 100.0);
+               /* I keep more blue */
+               glb_config.bubble_colour[2] = ((float) (NRAND(50)) / 100.0) + 0.50;
+       } else if (strncasecmp(bubble_color_str, "random", strlen("random")) == 0) {
+           glb_config.bubble_colour[0] = -1.0;
+       } else {
+               parse_color(mi, "bubble", bubble_color_str, glb_config.bubble_colour);
+       }
+}
+
 static void
 init(struct context *c)
 {
+        glb_config.transparent_p = transparent_p;
        glb_sphere_init();
        c->draw_context = glb_draw_init();
 }
@@ -132,6 +183,7 @@ init_bubble3d(ModeInfo * mi)
        }
        c = &contexts[screen];
        c->glx_context = init_GL(mi);
+       init_colors(mi);
        if (c->glx_context != 0) {
                init(c);
                reshape_bubble3d(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
@@ -156,7 +208,9 @@ draw_bubble3d(ModeInfo * mi)
 
        glXMakeCurrent(display, window, *(c->glx_context));
 
+        glb_config.polygon_count = 0;
        do_display(c);
+        mi->polygon_count = glb_config.polygon_count;
 
         if (mi->fps_p) do_fps (mi);
        glFinish();
index 9e635b5a65b578cb59cabf79e93d29cc55f2a5cd..bcacb37230b896c3fe3111fcf0c46dbdda3ed364 100644 (file)
@@ -9,6 +9,9 @@
  * implied warranty.
  */
 
+/* motion blur added March 2005 by John Boero <jlboero@cs.uwm.edu>
+ */
+
 #include <X11/Intrinsic.h>
 
 extern XtAppContext app;
@@ -25,6 +28,7 @@ extern XtAppContext app;
 #define DEF_WH       "2"
 #define DEF_DISSOLVE "False"
 #define DEF_FADE     "True"
+#define DEF_BLUR     "True"
 
 #define DEFAULTS       "*delay:        30000            \n" \
                        "*wireframe:    False            \n" \
@@ -94,6 +98,7 @@ static float LightPosition[]=  { 20.0f, 100.0f, 20.0f, 1.0f };
 
 static Bool do_dissolve;
 static Bool do_fade;
+static Bool do_blur;
 static GLfloat des_amt   = 1;
 
 static XrmOptionDescRec opts[] = {
@@ -101,7 +106,9 @@ static XrmOptionDescRec opts[] = {
   { "-dissolve", ".dissolve", XrmoptionNoArg, "True"  },
   { "+dissolve", ".dissolve", XrmoptionNoArg, "False" },
   { "-fade",     ".fade",     XrmoptionNoArg, "True"  },
-  { "+fade",     ".fade",     XrmoptionNoArg, "False" }
+  { "+fade",     ".fade",     XrmoptionNoArg, "False" },
+  { "-blur",     ".blur",     XrmoptionNoArg, "True"  },
+  { "+blur",     ".blur",     XrmoptionNoArg, "False" }
 
 };
 
@@ -109,6 +116,7 @@ static argtype vars[] = {
   {&bscale.wh,   "boxsize",   "Boxsize",  DEF_WH,       t_Float},
   {&do_dissolve, "dissolve",  "Dissolve", DEF_DISSOLVE, t_Bool},
   {&do_fade,     "fade",      "Fade",     DEF_FADE,     t_Bool},
+  {&do_blur,     "blur",      "Blur",     DEF_BLUR,     t_Bool},
 };
 
 ModeSpecOpt sws_opts = {countof(opts), opts, countof(vars), vars, NULL};
@@ -268,7 +276,7 @@ unit_cube(int wire)
 void
 init_ball (ModeInfo *mi)
 {
-  #define SPHERE_SLICES 32  /* how densely to render spheres */
+  #define SPHERE_SLICES 12  /* how densely to render spheres */
   #define SPHERE_STACKS 16
   int wire = MI_IS_WIREFRAME(mi);
 
@@ -310,7 +318,7 @@ init_ball (ModeInfo *mi)
   glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);
   glLightfv(GL_LIGHT1, GL_POSITION,LightPosition);
   glEnable(GL_LIGHT1);
-  if (do_fade){
+  if (do_fade || do_blur) {
     glEnable(GL_BLEND);
     glDisable(GL_DEPTH_TEST);
   }
@@ -348,12 +356,44 @@ draw_ball (ModeInfo *mi)
 
    glColor3f(1,1,1);
    glPushMatrix();
-   glTranslatef(ball.x += mo.x,
-                ball.y += mo.y,
-                ball.z += mo.z);
 
-   glScalef(2,2,2);
-   glCallList(ballList);
+   if (!do_blur || MI_IS_WIREFRAME(mi)) {
+     glTranslatef(ball.x += mo.x,
+                  ball.y += mo.y,
+                  ball.z += mo.z);
+
+     glScalef(2,2,2);
+     glCallList(ballList);
+
+   } else {
+
+#    define blur_detail 24.0
+     float ball_alpha = 1 / blur_detail;
+
+     glBlendFunc(GL_SRC_ALPHA,GL_ONE);
+     glTranslatef(ball.x, ball.y, ball.z);
+   
+     for (i = 0; i < blur_detail; ++i) {
+       glTranslatef(mo.x / blur_detail,
+                    mo.y / blur_detail,
+                    mo.z / blur_detail);
+
+       /* comment the following line for quick but boring linear blur */
+       ball_alpha = sin((M_PI / blur_detail) * i) / blur_detail;
+     
+       glColor4f(1, 1, 1, ball_alpha);
+
+       glScalef(2, 2, 2);
+       glCallList(ballList);
+       glScalef(.5, .5, .5);
+     }
+     i = 0;
+   
+     ball.x += mo.x;
+     ball.y += mo.y;
+     ball.z += mo.z;
+   }
+   
    glPopMatrix();
 
    while(i < 6){
index 0e0c2437c71e2e7fdcbdf6b76ca1ec124ec4987b..12cf50fd89592ac815c38dfbef994e401cac094a 100644 (file)
@@ -12,6 +12,7 @@ blinkbox
 [\-boxsize \fInumber\fP]
 [\-dissolve]
 [\-fade]
+[\-no\-blur]
 .SH DESCRIPTION
 Shows a ball contained inside of a bounding box. Colored blocks blink in
 when the ball hits the edges.
@@ -41,6 +42,9 @@ Boxes shrink instead of just vanishing.
 .TP 8
 .B \-fade | \-no-fade
 Boxes fade to transparency instead of just vanishing.
+.TP 8
+.B \-blur | \-no-blur
+Enable or disable motion blur on the ball.  Default: blurry.
 .SH ENVIRONMENT
 .PP
 .TP 8
@@ -62,4 +66,4 @@ appear in supporting documentation.  No representations are made about the
 suitability of this software for any purpose.  It is provided "as is" without
 express or implied warranty.
 .SH AUTHOR
-Jeremy English.
+Jeremy English.  Motion blur by John Boero.
index 49420f8e1df6eff337bfdd24d94f73598ebf433c..e875f0fa2a3a43d07e29956ae1efa5137e2e3ba7 100644 (file)
@@ -42,8 +42,9 @@ static const char sccsid[] = "@(#)boxed.c     0.9 01/09/26 xlockmore";
 # define boxed_opts    xlockmore_opts
 
 # define DEF_SPEED      "0.5"
-# define DEFAULTS      "*delay:   20000   \n"  \
-                       "*showFPS: False   \n"  \
+# define DEFAULTS      "*delay:     20000   \n" \
+                       "*showFPS:   False   \n" \
+                       "*wireframe: False   \n"
 
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -630,7 +631,7 @@ void setdefaultconfig(boxed_config *config)
 /*
  * draw bottom
  */ 
-static void drawfilledbox(boxedstruct *boxed)
+static void drawfilledbox(boxedstruct *boxed, int wire)
 {   
    /* draws texture filled box, 
       top is drawn using the entire texture, 
@@ -638,7 +639,7 @@ static void drawfilledbox(boxedstruct *boxed)
     */
    
    /* front */
-   glBegin(GL_QUADS);
+   glBegin(wire ? GL_LINE_LOOP : GL_QUADS);
    glTexCoord2f(0,1);
    glVertex3f(-1.0,1.0,1.0);
    glTexCoord2f(1,1);
@@ -735,7 +736,7 @@ static void drawbox(boxedstruct *boxed)
 /* 
  * Draw ball
  */
-static void drawball(boxedstruct *gp, ball *b)
+static void drawball(boxedstruct *gp, ball *b, int wire)
 {
    int i,pos,cnt;
    GLint *spherei = gp->spherei;
@@ -761,7 +762,7 @@ static void drawball(boxedstruct *gp, ball *b)
       cnt = SPHERE_INDICES/3;
       for (i=0; i<cnt; i++) {
         pos = i * 3;
-        glBegin(GL_TRIANGLES);
+        glBegin(wire ? GL_LINE_LOOP : GL_TRIANGLES);
         glNormal3f(spherev[spherei[pos+0]].x,spherev[spherei[pos+0]].y,spherev[spherei[pos+0]].z);
         glVertex3f(spherev[spherei[pos+0]].x,spherev[spherei[pos+0]].y,spherev[spherei[pos+0]].z);
         glNormal3f(spherev[spherei[pos+1]].x,spherev[spherei[pos+1]].y,spherev[spherei[pos+1]].z);
@@ -783,7 +784,7 @@ static void drawball(boxedstruct *gp, ball *b)
 /* 
  * Draw all triangles in triman
  */
-static void drawtriman(triman *t) 
+static void drawtriman(triman *t, int wire
 {
    int i,pos;
    vectorf *spherev = t->vertices;
@@ -804,7 +805,7 @@ static void drawtriman(triman *t)
       pos = i*3;
       glPushMatrix();
       glTranslatef(t->tris[i].loc.x,t->tris[i].loc.y,t->tris[i].loc.z);
-      glBegin(GL_TRIANGLES);
+      glBegin(wire ? GL_LINE_LOOP : GL_TRIANGLES);
       glNormal3f(t->normals[i].x,t->normals[i].y,t->normals[i].z);
       glVertex3f(spherev[pos+0].x,spherev[pos+0].y,spherev[pos+0].z);
       glVertex3f(spherev[pos+1].x,spherev[pos+1].y,spherev[pos+1].z);
@@ -878,6 +879,7 @@ static void drawpattern(boxedstruct *boxed)
 static void draw(ModeInfo * mi)
 {
    boxedstruct *gp = &boxed[MI_SCREEN(mi)];
+   int wire = MI_IS_WIREFRAME (mi);
    vectorf v1;
    GLfloat dcam;
    int dx, dz;
@@ -908,23 +910,25 @@ static void draw(ModeInfo * mi)
    v1.y = CAM_HEIGHT * sin((gp->tic/gp->cam_y_speed) * speed) + 1.02 * CAM_HEIGHT;
    gluLookAt(v1.x,v1.y,v1.z,0.0,0.0,0.0,0.0,1.0,0.0); 
 
-   glLightfv(GL_LIGHT0, GL_AMBIENT, l0_ambient); 
-   glLightfv(GL_LIGHT0, GL_DIFFUSE, l0_diffuse); 
-   glLightfv(GL_LIGHT0, GL_SPECULAR, l0_specular); 
-   glLightfv(GL_LIGHT0, GL_POSITION, l0_position);
-   glLightfv(GL_LIGHT1, GL_AMBIENT, l1_ambient); 
-   glLightfv(GL_LIGHT1, GL_DIFFUSE, l1_diffuse); 
-   glLightfv(GL_LIGHT1, GL_SPECULAR, l1_specular); 
-   glLightfv(GL_LIGHT1, GL_POSITION, l1_position);
-   glEnable(GL_LIGHT0);
-   glEnable(GL_LIGHT1);
+   if (!wire) {
+     glLightfv(GL_LIGHT0, GL_AMBIENT, l0_ambient); 
+     glLightfv(GL_LIGHT0, GL_DIFFUSE, l0_diffuse); 
+     glLightfv(GL_LIGHT0, GL_SPECULAR, l0_specular); 
+     glLightfv(GL_LIGHT0, GL_POSITION, l0_position);
+     glLightfv(GL_LIGHT1, GL_AMBIENT, l1_ambient); 
+     glLightfv(GL_LIGHT1, GL_DIFFUSE, l1_diffuse); 
+     glLightfv(GL_LIGHT1, GL_SPECULAR, l1_specular); 
+     glLightfv(GL_LIGHT1, GL_POSITION, l1_position);
+     glEnable(GL_LIGHT0);
+     glEnable(GL_LIGHT1);
    
-   glFrontFace(GL_CW);
+     glFrontFace(GL_CW);
    
-   glMaterialfv(GL_FRONT, GL_SPECULAR, black);
-   glMaterialfv(GL_FRONT, GL_EMISSION, lblue);
-   glMaterialfv(GL_FRONT,GL_AMBIENT,black);
-   glMaterialf(GL_FRONT, GL_SHININESS, 5.0);
+     glMaterialfv(GL_FRONT, GL_SPECULAR, black);
+     glMaterialfv(GL_FRONT, GL_EMISSION, lblue);
+     glMaterialfv(GL_FRONT,GL_AMBIENT,black);
+     glMaterialf(GL_FRONT, GL_SHININESS, 5.0);
+   }
    
    
    /* draw ground grid */
@@ -943,12 +947,12 @@ static void draw(ModeInfo * mi)
    
    /* Set drawing mode for the boxes */
    glEnable(GL_DEPTH_TEST);
-   glEnable(GL_TEXTURE_2D);
+   if (!wire) glEnable(GL_TEXTURE_2D);
    glPushMatrix();
    glColor3f(1.0,1.0,1.0);
    glScalef(20.0,0.25,20.0);
    glTranslatef(0.0,2.0,0.0);
-   drawfilledbox(gp);
+   drawfilledbox(gp, wire);
    glPopMatrix();
    glDisable(GL_TEXTURE_2D);
 
@@ -980,10 +984,12 @@ static void draw(ModeInfo * mi)
    drawbox(gp);
    glPopMatrix();
 
-   glEnable(GL_LIGHTING);
+   if (!wire) {
+     glEnable(GL_LIGHTING);
    
-   glMaterialfv(GL_FRONT, GL_DIFFUSE, dgray);
-   glMaterialfv(GL_FRONT, GL_EMISSION, black); /* turn it off before painting the balls */
+     glMaterialfv(GL_FRONT, GL_DIFFUSE, dgray);
+     glMaterialfv(GL_FRONT, GL_EMISSION, black); /* turn it off before painting the balls */
+   }
 
    /* move the balls and shrapnel */
    updateballs(&gp->bman);
@@ -1001,10 +1007,10 @@ static void draw(ModeInfo * mi)
            updatetris(&gp->tman[i]);
         }
         glDisable(GL_CULL_FACE);
-        drawtriman(&gp->tman[i]);
-        glEnable(GL_CULL_FACE);
+        drawtriman(&gp->tman[i], wire);
+        if (!wire) glEnable(GL_CULL_FACE);
       } else {
-        drawball(gp, &gp->bman.balls[i]);
+        drawball(gp, &gp->bman.balls[i], wire);
       }
    }
       
@@ -1035,6 +1041,7 @@ static void
 pinit(ModeInfo * mi)
 {
    boxedstruct *gp = &boxed[MI_SCREEN(mi)];
+   int wire = MI_IS_WIREFRAME (mi);
    ballman *bman;
    int i,texpixels;
    char *texpixeldata;
@@ -1069,8 +1076,10 @@ pinit(ModeInfo * mi)
 
    generatesphere();
    
-   glEnable(GL_CULL_FACE);
-   glEnable(GL_LIGHTING);
+   if (!wire) {
+     glEnable(GL_CULL_FACE);
+     glEnable(GL_LIGHTING);
+   }
 
    /* define cam path */
    gp->cam_x_speed = 1.0f/((float)gp->config.camspeed/50.0 + rnd()*((float)gp->config.camspeed/50.0));
index 52dbc33e03b29843084a62de9c331ee99141f839..3e0062ec7ec95d103fa17afb93b01493027e11aa 100644 (file)
@@ -47,6 +47,7 @@ typedef struct bubble {
        GLfloat    *nudge_angle_incr;   /* Amount by which we increase each nudge
                                         * angle in each frame.
                                         */
+       GLfloat    color[4];
 } bubble;
 
 /* Should be taken care of already... but just in case */
@@ -98,6 +99,18 @@ glb_bubble_new(GLfloat x, GLfloat y, GLfloat z, GLfloat scale,
        if (b == 0)
                return 0;
 
+       if (glb_config.bubble_colour[0] == -1.0) {
+               b->color[0] = ((float) (NRAND(100)) / 100.0);
+               b->color[1] = ((float) (NRAND(100)) / 100.0);
+               b->color[2] = ((float) (NRAND(100)) / 100.0);
+       } else {
+               b->color[0] = glb_config.bubble_colour[0];
+               b->color[1] = glb_config.bubble_colour[1];
+               b->color[2] = glb_config.bubble_colour[2];
+       }
+       b->color[3] = glb_config.bubble_colour[3];
+       
+
        b->contributions = (GLfloat *) malloc(sizeof (GLfloat) * nr_vertices *
                                              glb_config.nr_nudge_axes);
        if (b->contributions == 0) {
@@ -240,6 +253,9 @@ glb_bubble_draw(void *bb)
 
        /* Draw the bubble. */
        glBegin(GL_TRIANGLES);
+
+       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, b->color);
+
        for (i = 0; i < nr_triangles; ++i) {
                glNormal3fv(new_vertices[triangles[i][0]]);
                glVertex3fv(new_vertices[triangles[i][0]]);
@@ -251,6 +267,7 @@ glb_bubble_draw(void *bb)
        glEnd();
        glPopMatrix();
        (void) free((void *) new_vertices);
+    glb_config.polygon_count += nr_triangles;
 }
 
 /* Return y value. */
index f8b4c69740367949ab029c0f688bf5a485447ace..95af754bcef38dfebfe829067e2c6ebea6427e2b 100644 (file)
                                   * implementation. If you have an accelerated
                                   * graphics card, set this to 0.
                                 */
-#define GLB_USE_BLENDING     0 /* Use alpha feature to create see-through
-                                  * bubbles.
-                                */
 #define GLB_VERTICES_EPSILON 0.0005    /* How close are identical vertices? */
 
 /* Configuration structure. */
 struct glb_config {
+       int         transparent_p;      /* Whether to use alpha blending */
+
        int         subdivision_depth;  /* Controls how many triangles are in
                                         * each bubble. 2 and 3 are good values.
                                         */
@@ -60,6 +59,8 @@ struct glb_config {
        GLfloat     screen_top; /* Top of screen. */
        GLfloat     bg_colour[4];       /* Background colour. */
        GLfloat     bubble_colour[4];   /* Colour of the bubbles. */
+
+       int         polygon_count;
 };
 
 extern struct glb_config glb_config;
index 229f076db2ee54ff35e814bf32470b98941cc0e5..cf69ac8499f1523139a2083448f7ee75bc9e4dc1 100644 (file)
@@ -8,6 +8,8 @@ bubble3d - 3d rising bubbles.
 [\-window]
 [\-root]
 [\-delay \fInumber\fP]
+[\-transparent]
+[\-color \fIcolor\fP]
 [\-fps]
 .SH DESCRIPTION
 Draws a stream of rising, undulating 3D bubbles, rising toward the top of
@@ -24,6 +26,13 @@ Draw on a newly-created window.  This is the default.
 .B \-root
 Draw on the root window.
 .TP 8
+.B \-transparent
+Draw transparent bubbles instead of solid ones.
+.TP 8
+.B \-color \fIcolor\fP
+Draw bubbles of the specified color.  "Random" means a different color
+for each bubble.
+.TP 8
 .B \-delay \fInumber\fP
 Per-frame delay, in microseconds.  Default: 15000 (0.015 seconds.).
 .TP 8
index 7b14c72c1fea24b940ceb50c0b5387248511cbdd..564a8139be5d8dc4f1a0b00df97bb6b0468f086d 100644 (file)
@@ -156,9 +156,9 @@ static cagestruct *cage = (cagestruct *) NULL;
 #define PlankThickness  0.15
 
 static Bool 
-draw_woodplank(cagestruct * cp)
+draw_woodplank(cagestruct * cp, int wire)
 {
-       glBegin(GL_QUADS);
+       glBegin(wire ? GL_LINES : GL_QUADS);
        glNormal3f(0, 0, 1);
        glTexCoord2f(0, 0);
        glVertex3f(-PlankWidth, -PlankHeight, PlankThickness);
@@ -219,74 +219,74 @@ draw_woodplank(cagestruct * cp)
 }
 
 static Bool
-draw_impossiblecage(cagestruct * cp)
+draw_impossiblecage(cagestruct * cp, int wire)
 {
        glPushMatrix();
        glRotatef(90, 0, 1, 0);
        glTranslatef(0.0, PlankHeight - PlankWidth, -PlankThickness - PlankWidth);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        glPushMatrix();
        glRotatef(90, 0, 0, 1);
        glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth - PlankThickness);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        glPushMatrix();
        glRotatef(90, 0, 1, 0);
        glTranslatef(0.0, PlankWidth - PlankHeight, -PlankThickness - PlankWidth);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        glPushMatrix();
        glTranslatef(0.0, PlankWidth - PlankHeight, 3 * PlankThickness - PlankWidth);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        glPushMatrix();
        glRotatef(90, 0, 0, 1);
        glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth - PlankThickness);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        glPushMatrix();
        glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth - 3 * PlankThickness);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        glPushMatrix();
        glTranslatef(0.0, PlankHeight - PlankWidth, 3 * PlankThickness - PlankWidth);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        glPushMatrix();
        glRotatef(90, 0, 0, 1);
        glTranslatef(0.0, PlankHeight - PlankWidth, PlankThickness - PlankWidth);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        glPushMatrix();
        glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth - 3 * PlankThickness);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        glPushMatrix();
        glRotatef(90, 0, 1, 0);
        glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth + PlankThickness);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        glPushMatrix();
        glRotatef(90, 0, 0, 1);
        glTranslatef(0.0, PlankWidth - PlankHeight, PlankThickness - PlankWidth);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        glPushMatrix();
        glRotatef(90, 0, 1, 0);
        glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth + PlankThickness);
-       if (!draw_woodplank(cp))
+       if (!draw_woodplank(cp, wire))
                return False;
        glPopMatrix();
        return True;
@@ -312,9 +312,13 @@ static void
 pinit(ModeInfo *mi)
 {
        int status;
+
        glClearDepth(1.0);
        glClearColor(0.0, 0.0, 0.0, 1.0);
 
+    if (MI_IS_WIREFRAME(mi))
+      return;
+
        glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
        glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
        glLightfv(GL_LIGHT0, GL_POSITION, position0);
@@ -440,7 +444,7 @@ draw_cage(ModeInfo * mi)
        glRotatef(cp->step * 100, 0, 0, 1);
        glRotatef(25 + cos(cp->step * 5) * 6, 1, 0, 0);
        glRotatef(204.5 - sin(cp->step * 5) * 8, 0, 1, 0);
-       if (!draw_impossiblecage(cp)) {
+       if (!draw_impossiblecage(cp, MI_IS_WIREFRAME(mi))) {
                release_cage(mi);
                return;
        }
index c60498f0ac7c5ef8fac10b3e8eef757a55d85ae9..9416c50ae095ea7773d5446953da5f7901459fe7 100644 (file)
@@ -7,8 +7,10 @@ cage - Escher's impossible cage, for xscreensaver.
 [\-visual \fIvisual\fP]
 [\-window]
 [\-root]
-[-delay \fInumber\fP]
-[-fps]
+[\-delay \fInumber\fP]
+[\-mono]
+[\-wireframe]
+[\-fps]
 .SH DESCRIPTION
 This draws Escher's "Impossible Cage", a 3d analog of a moebius strip,
 and rotates it in three dimensions.
@@ -27,6 +29,12 @@ Draw on the root window.
 .B \-delay \fInumber\fP
 Per-frame delay, in microseconds.  Default: 25000 (0.03 seconds.).
 .TP 8
+.B \-mono
+Render solid instead of textured.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of textured.
+.TP 8
 .B \-fps | \-no-fps
 Whether to show a frames-per-second display at the bottom of the screen.
 .SH ENVIRONMENT
diff --git a/hacks/glx/crackberg.c b/hacks/glx/crackberg.c
new file mode 100644 (file)
index 0000000..1e86dee
--- /dev/null
@@ -0,0 +1,1384 @@
+/***************************
+ ** crackberg; Matus Telgarsky [ catachresis@cmu.edu ] 2005 
+ ** */
+#include <X11/Intrinsic.h>
+#define XK_MISCELLANY
+#include <X11/keysymdef.h>
+
+extern XtAppContext app;
+
+#define PROGCLASS   "crackberg"
+#define HACK_INIT   crackberg_init
+#define HACK_DRAW   crackberg_draw
+#define HACK_RESHAPE    crackberg_reshape
+/* #define HACK_FREE   crackberg_free */
+#define HACK_HANDLE_EVENT crackberg_handle_ev
+#define EVENT_MASK      (KeyReleaseMask)
+#define sws_opts    xlockmore_opts
+
+#define DEFAULTS    "*delay:        20000       \n" \
+                    "*showFPS:      False       \n" \
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#ifdef USE_GL /* whole file */
+#include <GL/glu.h>
+
+
+
+/***************************
+ ** macros
+ ** */
+
+#define M_RAD7_4        0.661437827766148
+#define M_SQRT3_2       0.866025403784439
+#define M_PI_180        0.0174532925199433
+#define M_180_PI        57.2957795130823
+#define MSPEED_SCALE    1.1
+#define AVE3(a,b,c)     ( ((a) + (b) + (c)) / 3.0 )
+#define MAX_ZDELTA      0.35
+#define DISPLACE(h,d)   (h+(random()/(double)RAND_MAX-0.5)*2*MAX_ZDELTA/(1<<d))
+#define MEAN(x,y)       ( ((x) + (y)) / 2.0 )
+#define TCOORD(x,y)     (heights[(epoints * (y) - ((y)-1)*(y)/2 + (x))])
+#define sNCOORD(x,y,p)  (norms[3 * (epoints * (y) - ((y)-1)*(y)/2 + (x)) + (p)])
+#define SET_sNCOORD(x,y, down, a,b,c,d,e,f)   \
+    sNCOORD(x,y,0) = AVE3(a-d, 0.5 * (b-e), -0.5 * (c-f)); \
+    sNCOORD(x,y,1) = ((down) ? -1 : +1) * AVE3(0.0, M_SQRT3_2 * (b-e), M_SQRT3_2 * (c-f)); \
+    sNCOORD(x,y,2) = (2*dx)
+#define fNCOORD(x,y,w,p)  \
+    (norms[3 * (2*(y)*epoints-((y)+1)*((y)+1) + 1 + 2 * ((x)-1) + (w)) + (p)])
+#define SET_fNCOORDa(x,y, down, dz00,dz01) \
+    fNCOORD(x,y,0,0) = (down) * (dy) * (dz01); \
+    fNCOORD(x,y,0,1) = (down) * ((dz01) * (dx) / 2 - (dx) * (dz00)); \
+    fNCOORD(x,y,0,2) = (down) * (dx) * (dy)
+#define SET_fNCOORDb(x,y, down, dz10,dz11) \
+    fNCOORD(x,y,1,0) = (down) * (dy) * (dz10); \
+    fNCOORD(x,y,1,1) = (down) * ((dz11) * (dx) - (dx) * (dz10) / 2); \
+    fNCOORD(x,y,1,2) = (down) * (dx) * (dy)
+
+
+/***************************
+ ** types
+ ** */
+
+
+typedef struct _cberg_state cberg_state;
+typedef struct _Trile Trile;
+
+typedef struct {
+    void (*init)(Trile *);
+    void (*free)(Trile *);
+    void (*draw)(Trile *);
+    void (*init_iter)(Trile *, cberg_state *);
+    void (*dying_iter)(Trile *, cberg_state *);
+} Morph;
+
+typedef struct {
+    char *id;
+    void (*land)(double);
+    void (*water)(double);
+    double bg[4];
+} Color;
+
+enum { TRILE_NEW, TRILE_INIT, TRILE_STABLE, TRILE_DYING, TRILE_DELETE };
+
+struct _Trile {
+    int x,y; /*center coords; points up if (x+y)%2 == 0, else down*/
+    short state;
+    short visible;
+    double *l,*r,*v; /*only edges need saving*/
+    GLuint call_list;
+
+    void *morph_data;
+    Morph *morph;
+
+    struct _Trile *left, *right, *parent; /* for bst, NOT spatial */
+    struct _Trile *next_free; /* for memory allocation */
+};
+
+enum { MOTION_AUTO = 0, MOTION_MANUAL = 1, MOTION_LROT= 2,    MOTION_RROT = 4,
+       MOTION_FORW = 8,   MOTION_BACK = 16,  MOTION_DEC = 32, MOTION_INC = 64,
+       MOTION_LEFT = 128, MOTION_RIGHT = 256 };
+
+struct _cberg_state {
+    GLXContext *glx_context;
+    Trile *trile_head;
+    
+    double x,y,z, yaw,roll,pitch, dx,dy,dz, dyaw,droll,dpitch, elapsed;
+    double prev_frame;
+    int motion_state;
+    double mspeed;
+
+    double fovy, aspect, zNear, zFar;
+
+    Color *color;
+};
+
+
+/***************************
+ ** globals
+ ** */
+
+
+static unsigned int nsubdivs,
+                    epoints, /*number of points to one edge*/
+                    tpoints, /*number points total*/
+                    ntris,   /*number triangles per trile*/
+                    tnorms;  /*number of normals*/
+Bool crack, boring, nowater, flat, lit, wire, letterbox;
+static char *color;
+static cberg_state *cbergs = NULL;
+static double *heights = NULL, *norms = NULL, dx;
+static float visibility;
+static Trile *free_head = NULL; /* for trile_[alloc|free] */
+
+static XrmOptionDescRec opts[] = {
+    {"-nsubdivs", ".nsubdivs", XrmoptionSepArg, 0},
+    {"-boring", ".boring", XrmoptionNoArg, "True"},
+    {"-crack", ".crack", XrmoptionNoArg, "True"},
+    {"-nowater", ".nowater", XrmoptionNoArg, "True"},
+    {"-flat", ".flat", XrmoptionNoArg, "True"},
+    {"-color", ".color", XrmoptionSepArg, 0},
+    {"-lit", ".lit", XrmoptionNoArg, "True"},
+    {"-wire", ".wire", XrmoptionNoArg, "True"},
+    {"-visibility", ".visibility", XrmoptionSepArg, 0},
+    {"-letterbox", ".letterbox", XrmoptionNoArg, "True"}
+    
+};
+
+static argtype vars[] = {
+    {&nsubdivs, "nsubdivs", "nsubdivs", "4", t_Int},
+    {&boring, "boring", "boring", "False", t_Bool},
+    {&crack, "crack", "crack", "False", t_Bool},
+    {&nowater, "nowater", "nowater", "False", t_Bool},
+    {&flat, "flat", "flat", "False", t_Bool},
+    {&color, "color", "color", "plain", t_String},
+    {&lit, "lit", "lit", "False", t_Bool},
+    {&wire, "wire", "wire", "False", t_Bool},
+    {&visibility, "visibility", "visibility", "0.6", t_Float},
+    {&letterbox, "letterbox", "letterbox", "False", t_Bool}
+};
+
+ModeSpecOpt sws_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+/***************************
+ ** Trile functions. 
+ **  first come all are regular trile functions 
+ ** */
+
+
+/* forward decls for trile_new */
+static Trile *triles_find(Trile *tr, int x, int y);
+static Trile *trile_alloc(void);
+static Morph *select_morph(void);
+static Color *select_color(void);
+
+static void trile_calc_sides(Trile *new, int x, int y, Trile *root)
+{
+    unsigned int i,j,k; 
+    int dv = ( (x + y) % 2 ? +1 : -1); /* we are pointing down or up*/
+    Trile *l, *r, *v; /* v_ertical */
+
+
+    if (root) {
+        l = triles_find(root, x-1, y);
+        r = triles_find(root, x+1, y);  
+        v = triles_find(root, x,y+dv); 
+    } else
+        l = r = v = NULL;
+
+    if (v) {
+        for (i = 0; i != epoints; ++i)
+            new->v[i] = v->v[i];
+    } else {
+        if (l)          new->v[0] = l->l[0];
+        else if (!root) new->v[0] = DISPLACE(0,0);
+        else { 
+            Trile *tr; /* all of these tests needed.. */
+            if ( (tr = triles_find(root, x-1, y + dv)) )
+                new->v[0] = tr->l[0];
+            else if ( (tr = triles_find(root, x-2, y)) )
+                new->v[0] = tr->r[0];
+            else if ( (tr = triles_find(root, x-2, y + dv)) )
+                new->v[0] = tr->r[0];
+            else
+                new->v[0] = DISPLACE(0,0);
+        }
+
+        if (r)          new->v[epoints-1] = r->l[0];
+        else if (!root) new->v[epoints-1] = DISPLACE(0,0);
+        else {
+            Trile *tr;
+            if ( (tr = triles_find(root, x+1, y + dv)) )
+                new->v[epoints-1] = tr->l[0];
+            else if ( (tr = triles_find(root, x+2, y)) )
+                new->v[epoints-1] = tr->v[0];
+            else if ( (tr = triles_find(root, x+2, y + dv)) )
+                new->v[epoints-1] = tr->v[0];
+            else
+                new->v[epoints-1] = DISPLACE(0,0);
+        }
+
+        for (i = ((1 << nsubdivs) >> 1), k =1; i; i >>= 1, ++k)
+            for (j = i; j < epoints; j += i * 2)
+                new->v[j] = DISPLACE(MEAN(new->v[j-i], new->v[j+i]), k);
+    }
+        
+    if (l) {
+        for (i = 0; i != epoints; ++i)
+            new->l[i] = l->r[i];
+    } else {
+        if (r)          new->l[0] = r->v[0];
+        else if (!root) new->l[0] = DISPLACE(0,0);
+        else {
+            Trile *tr;
+            if ( (tr = triles_find(root, x-1, y-dv)) )
+                new->l[0] = tr->r[0];
+            else if ( (tr = triles_find(root, x+1, y-dv)) )
+                new->l[0] = tr->v[0];
+            else if ( (tr = triles_find(root, x, y-dv)) )
+                new->l[0] = tr->l[0];
+            else 
+                new->l[0] = DISPLACE(0,0);
+        }
+
+        new->l[epoints - 1] = new->v[0];
+
+        for (i = ((1 << nsubdivs) >> 1), k =1; i; i >>= 1, ++k)
+            for (j = i; j < epoints; j += i * 2)
+                new->l[j] = DISPLACE(MEAN(new->l[j-i], new->l[j+i]), k);
+    }
+
+    if (r) {
+        for (i = 0; i != epoints; ++i)
+            new->r[i] = r->l[i];
+    } else {
+        new->r[0] = new->v[epoints - 1];
+        new->r[epoints - 1] = new->l[0];
+
+        for (i = ((1 << nsubdivs) >> 1), k =1; i; i >>= 1, ++k)
+            for (j = i; j < epoints; j += i * 2)
+                new->r[j] = DISPLACE(MEAN(new->r[j-i], new->r[j+i]), k);
+    }
+}
+
+static void trile_calc_heights(Trile *new)
+{
+    unsigned int i, j, k, h;
+
+    for (i = 0; i < epoints - 1; ++i) { /* copy in sides */
+        TCOORD(i,0) = new->v[i];
+        TCOORD(epoints - 1 - i, i) = new->r[i];
+        TCOORD(0, epoints - 1 - i) = new->l[i];
+    }
+
+    for (i = ((1 << nsubdivs) >> 2), k =1; i; i >>= 1, ++k)
+        for (j = 1; j < (1 << k); ++j)
+            for (h = 1; h <= (1<<k) - j; ++h) {
+                TCOORD( i*(2*h - 1), i*(2*j - 1) ) = /*rights*/
+                  DISPLACE(MEAN(TCOORD( i*(2*h - 2), i*(2*j + 0) ),
+                                TCOORD( i*(2*h + 0), i*(2*j - 2) )), k);
+
+                TCOORD( i*(2*h + 0), i*(2*j - 1) ) = /*lefts*/
+                  DISPLACE(MEAN(TCOORD( i*(2*h + 0), i*(2*j - 2) ),
+                                TCOORD( i*(2*h + 0), i*(2*j + 0) )), k);
+
+                TCOORD( i*(2*h - 1), i*(2*j + 0) ) = /*verts*/
+                  DISPLACE(MEAN(TCOORD( i*(2*h - 2), i*(2*j + 0) ),
+                                TCOORD( i*(2*h + 0), i*(2*j + 0) )), k);
+            }
+}
+
+static void trile_calc_flat_norms(Trile *new)
+{
+    unsigned int x, y;
+    int down = (((new->x + new->y) % 2) ? -1 : +1);
+    double dz00,dz01,dz10,dz11, a,b,c,d;
+    double dy = down * M_SQRT3_2 / (1 << nsubdivs);
+
+    for (y = 0; y < epoints - 1; ++y) {
+        a = TCOORD(0,y);
+        b = TCOORD(0,y+1);
+        for (x = 1; x < epoints - 1 - y; ++x) {
+            c = TCOORD(x,y);
+            d = TCOORD(x,y+1);
+
+            dz00 = b-c;
+            dz01 = a-c;
+            dz10 = b-d;
+            dz11 = c-d;
+            
+            SET_fNCOORDa(x,y, down, dz00,dz01);
+            SET_fNCOORDb(x,y, down, dz10,dz11);
+
+            a = c;
+            b = d;
+        }
+
+        c = TCOORD(x,y);
+        dz00 = b-c;
+        dz01 = a-c;
+        SET_fNCOORDa(x,y, down, dz00, dz01);
+    }
+}
+
+static void trile_calc_smooth_norms(Trile *new)
+{
+    unsigned int i,j, down = (new->x + new->y) % 2;
+    double prev, cur, next;
+
+    /** corners -- assume level (bah) **/
+    cur = TCOORD(0,0);
+    SET_sNCOORD(0,0, down,
+        cur,cur,TCOORD(0,1),TCOORD(1,0),cur,cur);
+    cur = TCOORD(epoints-1,0);
+    SET_sNCOORD(epoints-1,0, down,
+        TCOORD(epoints-2,0),TCOORD(epoints-2,1),cur,cur,cur,cur);
+    cur = TCOORD(0,epoints-1);
+    SET_sNCOORD(0,epoints-1, down,
+        cur,cur,cur,cur,TCOORD(1,epoints-2),TCOORD(0,epoints-2));
+
+
+    /** sides **/
+    /* vert */
+    prev = TCOORD(0,0);
+    cur = TCOORD(1,0);
+    for (i = 1; i < epoints - 1; ++i) {
+        next = TCOORD(i+1,0);
+        SET_sNCOORD(i,0, down, prev,TCOORD(i-1,1),TCOORD(i,1), next,cur,cur);
+        prev = cur;
+        cur = next;
+    }
+
+    /* right */
+    prev = TCOORD(epoints-1,0);
+    cur = TCOORD(epoints-2,0);
+    for (i = 1; i < epoints - 1; ++i) {
+        next = TCOORD(epoints-i-2,i+1);
+        SET_sNCOORD(epoints-i-1,i, down, TCOORD(epoints-i-2,i),next,cur,
+                                        cur,prev,TCOORD(epoints-i-1,i-1));
+        prev = cur;
+        cur = next;
+    }
+        
+    /* left */
+    prev = TCOORD(0,0);
+    cur = TCOORD(0,1);
+    for (i = 1; i < epoints - 1; ++i) {
+        next = TCOORD(0,i+1);
+        SET_sNCOORD(0,i, down, cur,cur,next,TCOORD(1,i),TCOORD(1,i-1),prev);
+        prev = cur;
+        cur = next;
+    }
+
+
+    /** fill in **/
+    for (i = 1; i < epoints - 2; ++i) {
+        prev = TCOORD(0,i);
+        cur = TCOORD(1,i);
+        for (j = 1; j < epoints - i - 1; ++j) {
+            next = TCOORD(j+1,i);
+            SET_sNCOORD(j,i, down, prev,TCOORD(j-1,i+1),TCOORD(j,i+1),
+                            next,TCOORD(j+1,i-1),TCOORD(j,i-1));
+            prev = cur;
+            cur = next;
+        }
+    }
+}
+
+static inline void trile_light(unsigned int x, unsigned int y, 
+                               unsigned int which)
+{
+    if (flat) {
+        if (x) {
+            glNormal3d(fNCOORD(x,y,which,0),
+                       fNCOORD(x,y,which,1),
+                       fNCOORD(x,y,which,2));
+        } else { /* I get mesa errors and bizarre glitches without this!! */
+            glNormal3d(fNCOORD(1,y,0,0),
+                       fNCOORD(1,y,0,1),
+                       fNCOORD(1,y,0,2));
+        }
+    } else {
+        glNormal3d(sNCOORD(x,y+which,0),
+                   sNCOORD(x,y+which,1),
+                   sNCOORD(x,y+which,2));
+    }
+}
+
+static inline void trile_draw_vertex(cberg_state *cberg, unsigned int ix,
+    unsigned int iy, unsigned int which, double x,double y,
+    double zcur, double z1, double z2)
+{
+    glColor3d(0.0, 0.0, 0.0); /* don't ask. my card breaks otherwise. */
+    
+    if (!nowater && zcur <= 0.0) {
+        cberg->color->water(zcur); /* XXX use average-of-3 for color when flat?*/
+        if (lit) glNormal3d(0.0,0.0,1.0);
+        glVertex3d(x, y, 0.0); 
+    } else {
+        cberg->color->land(zcur);
+        if (lit) trile_light(ix,iy,which);
+        glVertex3d(x, y, zcur);
+    }
+}
+
+static void trile_render(cberg_state *cberg, Trile *new)
+{
+    double cornerx = 0.5 * new->x - 0.5, cornery;
+    double dy = M_SQRT3_2 / (1 << nsubdivs);
+    double z0,z1,z2;
+    int x,y;
+
+    new->call_list = glGenLists(1);
+    glNewList(new->call_list, GL_COMPILE);
+
+        if ((new->x + new->y) % 2) { /*point down*/
+            cornery = (new->y + 0.5)*M_SQRT3_2;
+            glFrontFace(GL_CW);
+            dy = -dy;
+        } else
+            cornery = (new->y - 0.5) * M_SQRT3_2;
+
+        for (y = 0; y < epoints - 1; ++y) {
+            glBegin(GL_TRIANGLE_STRIP);
+                /* first three points all part of the same triangle.. */
+                z0 = TCOORD(0,y);
+                z1 = TCOORD(0,y+1);
+                z2 = TCOORD(1,y);
+                trile_draw_vertex(cberg, 0,y,0,
+                  cornerx,cornery, z0, z1, z2);
+                trile_draw_vertex(cberg, 0,y,1,
+                  cornerx+0.5*dx,cornery+dy, z1, z0, z2);
+
+                for (x = 1; x < epoints - 1 - y; ++x) {
+                    trile_draw_vertex(cberg, x,y,0,
+                      cornerx+x*dx,cornery, z2, z1, z0);
+
+                    z0 = TCOORD(x, y+1);
+
+                    trile_draw_vertex(cberg, x,y,1,
+                      cornerx+(x+0.5)*dx,cornery+dy, z0, z2, z1);
+
+                    z1 = z0;
+                    z0 = z2;
+                    z2 = TCOORD(x+1,y);
+                }
+                trile_draw_vertex(cberg, x,y,0,
+                  cornerx + x*dx, cornery, z2, z1, z0);
+            glEnd();
+
+            cornerx += dx/2;
+            cornery += dy;
+        }
+
+        if ((new->x + new->y) % 2) /*point down*/
+            glFrontFace(GL_CCW);
+    glEndList();
+}
+
+static Trile *trile_new(cberg_state *cberg, int x,int y,Trile *parent,Trile *root)
+{
+    Trile *new;
+
+    new = trile_alloc();
+
+    new->x = x;
+    new->y = y;
+    new->state = TRILE_NEW;
+    new->parent = parent;
+    new->left = new->right = NULL;
+    new->visible = 1;
+
+    new->morph = select_morph();
+    new->morph->init(new);
+
+    trile_calc_sides(new, x, y, root);
+    trile_calc_heights(new);
+
+    if (lit) {
+        if (flat)   trile_calc_flat_norms(new);
+        else        trile_calc_smooth_norms(new);
+    }
+
+    trile_render(cberg, new);
+    return new;
+}
+
+static Trile *trile_alloc(void)
+{
+    Trile *new;
+    static unsigned int count = 0;
+
+    if (free_head) {
+        new = free_head;
+        free_head = free_head->next_free;
+    } else {
+        ++count;
+        if (!(new = malloc(sizeof(Trile)))
+         || !(new->l = (double *) malloc(sizeof(double) * epoints * 3))) {
+            perror(progname);
+            exit(1);
+        }
+        new->r = new->l + epoints;
+        new->v = new->r + epoints;
+#ifdef DEBUG
+        printf("needed to alloc; [%d]\n", count);
+#endif
+    }
+    return new;
+}
+
+static void trile_free(Trile *tr)
+{
+    glDeleteLists(tr->call_list, 1);
+    tr->morph->free(tr);
+    tr->next_free = free_head;
+    free_head = tr;
+}
+
+
+static void trile_draw_vanilla(Trile *tr)
+{ glCallList(tr->call_list); }
+
+static void trile_draw(Trile *tr, void *ignore)
+{
+    if (tr->state == TRILE_STABLE)
+        trile_draw_vanilla(tr);
+    else
+        tr->morph->draw(tr);
+}
+
+
+/***************************
+ ** Trile morph functions. 
+ **  select function at bottom (forward decls sucls) 
+ ** */
+
+
+/*** first the basic growing morph */
+
+static void grow_init(Trile *tr)
+{
+    tr->morph_data = (void *) malloc(sizeof(double));
+    *((double *)tr->morph_data) = 0.02; /* not 0; avoid normals crapping */
+}
+
+static void grow_free(Trile *tr)
+{
+    free(tr->morph_data);
+}
+
+static void grow_draw(Trile *tr)
+{
+    glPushMatrix();
+        glScaled(1.0,1.0, *((double *)tr->morph_data));
+        trile_draw_vanilla(tr);
+    glPopMatrix();
+}
+
+static void grow_init_iter(Trile *tr, cberg_state *cberg)
+{
+    *((double *)(tr->morph_data)) = *((double *)tr->morph_data) + cberg->elapsed;
+    if (*((double *)tr->morph_data) >= 1.0)
+        tr->state = TRILE_STABLE;
+}
+
+static void grow_dying_iter(Trile *tr, cberg_state *cberg)
+{
+    *((double *)tr->morph_data) = *((double *)tr->morph_data) - cberg->elapsed;
+    if (*((double *)tr->morph_data) <= 0.02) /* XXX avoid fast del/cons? */
+        tr->state = TRILE_DELETE;
+}
+
+/**** falling morph ****/
+
+static void fall_init(Trile *tr)
+{
+    tr->morph_data = (void *) malloc(sizeof(double));
+    *((double *)tr->morph_data) = 0.0;
+}
+
+static void fall_free(Trile *tr)
+{
+    free(tr->morph_data);
+}
+
+static void fall_draw(Trile *tr)
+{
+    glPushMatrix();
+        glTranslated(0.0,0.0,(0.5 - *((double *)tr->morph_data)) * 8);
+        trile_draw_vanilla(tr);
+    glPopMatrix();
+}
+
+static void fall_init_iter(Trile *tr, cberg_state *cberg)
+{
+    *((double *)(tr->morph_data)) = *((double *)tr->morph_data) + cberg->elapsed;
+    if (*((double *)tr->morph_data) >= 0.5)
+        tr->state = TRILE_STABLE;
+}
+
+static void fall_dying_iter(Trile *tr, cberg_state *cberg)
+{
+    *((double *)tr->morph_data) = *((double *)tr->morph_data) - cberg->elapsed;
+    if (*((double *)tr->morph_data) <= 0.0) /* XXX avoid fast del/cons? */
+        tr->state = TRILE_DELETE;
+}
+
+/**** yeast morph ****/
+
+static void yeast_init(Trile *tr)
+{
+    tr->morph_data = (void *) malloc(sizeof(double));
+    *((double *)tr->morph_data) = 0.02;
+}
+
+static void yeast_free(Trile *tr)
+{
+    free(tr->morph_data);
+}
+
+static void yeast_draw(Trile *tr)
+{
+    double x = tr->x * 0.5,
+           y = tr->y * M_SQRT3_2,
+           z = *((double *)tr->morph_data);
+
+    glPushMatrix();
+        glTranslated(x, y, 0);
+        glRotated(z*360, 0,0,1);
+        glScaled(z,z,z);
+        glTranslated(-x, -y, 0);
+        trile_draw_vanilla(tr);
+    glPopMatrix();
+}
+
+static void yeast_init_iter(Trile *tr, cberg_state *cberg)
+{
+    *((double *)(tr->morph_data)) = *((double *)tr->morph_data) + cberg->elapsed;
+    if (*((double *)tr->morph_data) >= 1.0)
+        tr->state = TRILE_STABLE;
+}
+
+static void yeast_dying_iter(Trile *tr, cberg_state *cberg)
+{
+    *((double *)tr->morph_data) = *((double *)tr->morph_data) - cberg->elapsed;
+    if (*((double *)tr->morph_data) <= 0.02) /* XXX avoid fast del/cons? */
+        tr->state = TRILE_DELETE;
+}
+
+/**** identity morph ****/
+
+static void identity_init(Trile *tr)
+{ tr->state = TRILE_STABLE; }
+
+static void identity_free(Trile *tr)
+{}
+
+static void identity_draw(Trile *tr)
+{ trile_draw_vanilla(tr); }
+
+static void identity_init_iter(Trile *tr, cberg_state *cberg)
+{}
+
+static void identity_dying_iter(Trile *tr, cberg_state *cberg)
+{ tr->state = TRILE_DELETE; }
+
+/** now to handle selection **/
+
+static Morph morphs[] = {
+    {grow_init, grow_free, grow_draw, grow_init_iter, grow_dying_iter},
+    {fall_init, fall_free, fall_draw, fall_init_iter, fall_dying_iter},
+    {yeast_init, yeast_free, yeast_draw, yeast_init_iter, yeast_dying_iter},
+    {identity_init,  /*always put identity last to skip it..*/
+        identity_free, identity_draw, identity_init_iter, identity_dying_iter}
+};    
+static unsigned int nmorphs = countof(morphs);
+
+static Morph *select_morph()
+{ 
+    if (crack)
+        return &morphs[random() % (nmorphs-1)]; 
+    else if (boring)
+        return &morphs[nmorphs-1]; 
+    else
+        return morphs;
+}
+
+
+/***************************
+ ** Trile superstructure functions. 
+ **  */
+
+
+static void triles_set_visible(cberg_state *cberg, Trile **root, int x, int y)
+{
+    Trile *parent = NULL, 
+          *iter = *root;
+    int goleft;
+
+    while (iter != NULL) {
+        parent = iter;
+        goleft = (iter->x > x || (iter->x == x && iter->y > y));
+        if (goleft)
+            iter = iter->left;
+        else if (iter->x == x && iter->y == y) {
+            iter->visible = 1;
+            return;
+        } else
+            iter = iter->right;
+    }
+
+    if (parent == NULL)
+        *root = trile_new(cberg, x,y, NULL, NULL);
+    else if (goleft)
+        parent->left = trile_new(cberg, x,y, parent, *root);
+    else
+        parent->right = trile_new(cberg, x,y, parent, *root);
+}
+
+static unsigned int triles_foreach(Trile *root, void (*f)(Trile *, void *), 
+  void *data)
+{
+    if (root == NULL) 
+        return 0;
+    
+    f(root, data);
+    return 1 + triles_foreach(root->left, f, data) 
+      + triles_foreach(root->right, f, data);
+}
+
+static void triles_update_state(Trile **root, cberg_state *cberg)
+{
+    int process_current = 1;
+    if (*root == NULL)
+        return;
+
+    while (process_current) {
+        if ( (*root)->visible ) {
+            if ( (*root)->state == TRILE_INIT )
+                (*root)->morph->init_iter(*root, cberg);
+            else if ( (*root)->state == TRILE_DYING ) {
+                (*root)->state = TRILE_INIT;
+                (*root)->morph->init_iter(*root, cberg);
+            } else if ( (*root)->state == TRILE_NEW ) 
+                (*root)->state = TRILE_INIT;
+
+            (*root)->visible = 0;
+        } else {
+            if ( (*root)->state == TRILE_STABLE )
+                (*root)->state = TRILE_DYING;
+            else if ( (*root)->state == TRILE_INIT ) {
+                (*root)->state = TRILE_DYING;
+                (*root)->morph->dying_iter(*root, cberg);
+            } else if ( (*root)->state == TRILE_DYING )
+                (*root)->morph->dying_iter(*root, cberg);
+        }
+
+        if ( (*root)->state == TRILE_DELETE ) {
+            Trile *splice_me;
+            process_current = 1;
+
+            if ((*root)->left == NULL) {
+                splice_me = (*root)->right;
+                if (splice_me)
+                    splice_me->parent = (*root)->parent;
+                else 
+                    process_current = 0;
+            } else if ((*root)->right == NULL) {
+                splice_me = (*root)->left;
+                splice_me->parent = (*root)->parent;
+            } else {
+                Trile *tmp;
+                for (splice_me = (*root)->right; splice_me->left != NULL; )
+                    splice_me = splice_me->left;
+                tmp = splice_me->right;
+
+                if (tmp) tmp->parent = splice_me->parent;
+
+                if (splice_me == splice_me->parent->left)
+                    splice_me->parent->left = tmp;
+                else
+                    splice_me->parent->right = tmp;
+
+                splice_me->parent = (*root)->parent;
+                splice_me->left = (*root)->left;
+                (*root)->left->parent = splice_me;
+                splice_me->right = (*root)->right;
+                if ((*root)->right)
+                    (*root)->right->parent = splice_me;
+            }
+            trile_free(*root);
+            *root = splice_me;
+        } else
+            process_current = 0;
+    }
+
+    if (*root) {
+        triles_update_state(&((*root)->left), cberg);
+        triles_update_state(&((*root)->right), cberg);
+    } 
+}
+
+static Trile *triles_find(Trile *tr, int x, int y)
+{
+    while (tr && !(tr->x == x && tr->y == y))
+        if (x < tr->x || (x == tr->x && y < tr->y))
+            tr = tr->left;
+        else
+            tr = tr->right;
+    return tr;
+}
+
+
+/***************************
+ ** Trile superstructure visibility functions. 
+ **  strategy fine, implementation lazy&retarded =/
+ **  */
+
+#ifdef DEBUG
+static double x_shit, y_shit;
+#endif
+
+static void calc_points(cberg_state *cberg, double *x1,double *y1, 
+        double *x2,double *y2, double *x3,double *y3, double *x4,double *y4)
+{
+    double zNear, x_nearcenter, y_nearcenter, nhalfwidth, x_center, y_center;
+
+
+    /* could cache these.. bahhhhhhhhhhhhhh */
+    double halfheight = tan(cberg->fovy / 2 * M_PI_180) * cberg->zNear;
+    double fovx_2 = atan(halfheight * cberg->aspect / cberg->zNear) * M_180_PI; 
+    double zFar = cberg->zFar + M_RAD7_4;
+    double fhalfwidth = zFar * tan(fovx_2 * M_PI_180)
+                      + M_RAD7_4 / cos(fovx_2 * M_PI_180);
+    double x_farcenter = cberg->x + zFar * cos(cberg->yaw * M_PI_180);
+    double y_farcenter = cberg->y + zFar * sin(cberg->yaw * M_PI_180);
+    *x1 = x_farcenter + fhalfwidth * cos((cberg->yaw - 90) * M_PI_180);
+    *y1 = y_farcenter + fhalfwidth * sin((cberg->yaw - 90) * M_PI_180);
+    *x2 = x_farcenter - fhalfwidth * cos((cberg->yaw - 90) * M_PI_180);
+    *y2 = y_farcenter - fhalfwidth * sin((cberg->yaw - 90) * M_PI_180);
+
+#ifdef DEBUG
+    printf("pos (%.3f,%.3f) @ %.3f || fovx: %f || fovy: %f\n", 
+            cberg->x, cberg->y, cberg->yaw, fovx_2 * 2, cberg->fovy);
+    printf("\tfarcenter: (%.3f,%.3f) || fhalfwidth: %.3f \n"
+           "\tp1: (%.3f,%.3f) || p2: (%.3f,%.3f)\n",
+            x_farcenter, y_farcenter, fhalfwidth, *x1, *y1, *x2, *y2);
+#endif
+
+    if (cberg->z - halfheight <= 0) /* near view plane hits xy */
+        zNear = cberg->zNear - M_RAD7_4;
+    else /* use bottom of frustum */
+        zNear = cberg->z / tan(cberg->fovy / 2 * M_PI_180) - M_RAD7_4;
+    nhalfwidth = zNear * tan(fovx_2 * M_PI_180)
+               + M_RAD7_4 / cos(fovx_2 * M_PI_180);
+    x_nearcenter = cberg->x + zNear * cos(cberg->yaw * M_PI_180);
+    y_nearcenter = cberg->y + zNear * sin(cberg->yaw * M_PI_180);
+    *x3 = x_nearcenter - nhalfwidth * cos((cberg->yaw - 90) * M_PI_180);
+    *y3 = y_nearcenter - nhalfwidth * sin((cberg->yaw - 90) * M_PI_180);
+    *x4 = x_nearcenter + nhalfwidth * cos((cberg->yaw - 90) * M_PI_180);
+    *y4 = y_nearcenter + nhalfwidth * sin((cberg->yaw - 90) * M_PI_180);
+
+#ifdef DEBUG
+    printf("\tnearcenter: (%.3f,%.3f) || nhalfwidth: %.3f\n"
+           "\tp3: (%.3f,%.3f) || p4: (%.3f,%.3f)\n",
+            x_nearcenter, y_nearcenter, nhalfwidth, *x3, *y3, *x4, *y4);
+#endif
+
+
+    /* center can be average or the intersection of diagonals.. */
+#if 0
+    {
+        double c = nhalfwidth * (zFar -zNear) / (fhalfwidth + nhalfwidth);
+        x_center = x_nearcenter + c * cos(cberg->yaw * M_PI_180);
+        y_center = y_nearcenter + c * sin(cberg->yaw * M_PI_180);
+    }
+#else
+    x_center = (x_nearcenter + x_farcenter) / 2;
+    y_center = (y_nearcenter + y_farcenter) / 2;
+#endif
+#ifdef DEBUG
+    x_shit = x_center;
+    y_shit = y_center;
+#endif
+    
+#define VSCALE(p)   *x##p = visibility * *x##p + (1-visibility) * x_center; \
+                    *y##p = visibility * *y##p + (1-visibility) * y_center
+
+    VSCALE(1);
+    VSCALE(2);
+    VSCALE(3);
+    VSCALE(4);
+#undef VSCALE
+}
+
+/* this is pretty stupid.. */
+static inline void minmax4(double a, double b, double c, double d, 
+  double *min, double *max)
+{
+    *min = *max = a;
+
+    if (b > *max)       *max = b;
+    else if (b < *min)  *min = b;
+    if (c > *max)       *max = c;
+    else if (c < *min)  *min = c;
+    if (d > *max)       *max = d;
+    else if (d < *min)  *min = d;
+}
+
+typedef struct {
+    double min, max, start, dx;
+} LS;
+
+#define check_line(a, b)                     \
+    if (fabs(y##a-y##b) > 0.001) {                    \
+        ls[count].dx = (x##b-x##a)/(y##b-y##a);               \
+        if (y##b > y##a) {                            \
+            ls[count].start = x##a;                     \
+            ls[count].min = y##a;                       \
+            ls[count].max = y##b;                       \
+        } else {                                  \
+            ls[count].start = x##b;                     \
+            ls[count].min = y##b;                       \
+            ls[count].max = y##a;                       \
+        }                                         \
+        ++count;                                    \
+    }
+
+static unsigned int build_ls(cberg_state *cberg, 
+                      double x1, double y1, double x2, double y2, 
+                      double x3, double y3, double x4, double y4, LS *ls,
+                      double *trough, double *peak)
+{
+    unsigned int count = 0;
+
+    check_line(1, 2);
+    check_line(2, 3);
+    check_line(3, 4);
+    check_line(4, 1);
+
+    minmax4(y1, y2, y3, y4, trough, peak);
+    return count;
+}
+
+#undef check_line
+
+/*needs bullshit to avoid double counts on corners.*/
+static void find_bounds(double y, double *left, double *right, LS *ls,
+        unsigned int nls)
+{
+    double x;
+    unsigned int i, set = 0;
+
+    for (i = 0; i != nls; ++i)
+        if (ls[i].min <= y && ls[i].max >= y) {
+            x = (y - ls[i].min) * ls[i].dx + ls[i].start;
+            if (!set) {
+                *left = x;
+                ++set;
+            } else if (fabs(x - *left) > 0.001) {
+                if (*left < x)
+                    *right = x;
+                else {
+                    *right = *left;
+                    *left = x;
+                }
+                return;
+            }
+        }
+
+    /* just in case we somehow blew up */
+    *left = 3.0;
+    *right = -3.0;
+}
+
+static void mark_visible(cberg_state *cberg)
+{
+    double trough, peak, yval, left, right;
+    double x1,y1, x2,y2, x3,y3, x4,y4;
+    int start, stop, x, y;
+    LS ls[4];
+    unsigned int nls;
+
+    calc_points(cberg, &x1,&y1, &x2,&y2, &x3,&y3, &x4,&y4);
+    nls = build_ls(cberg, x1,y1, x2,y2, x3,y3, x4,y4, ls, &trough, &peak);
+
+    start = (int) ceil(trough / M_SQRT3_2);
+    stop = (int) floor(peak / M_SQRT3_2);
+    
+    for (y = start; y <= stop; ++y) {
+        yval = y * M_SQRT3_2;
+        find_bounds(yval, &left, &right, ls, nls);
+        for (x = (int) ceil(left*2-1); x <= (int) floor(right*2); ++x) 
+            triles_set_visible(cberg, &(cberg->trile_head), x, y);
+    }
+}
+
+
+/***************************
+ ** color schemes
+ ** */
+
+static void plain_land(double z)
+{ glColor3f(pow((z/0.35),4),  z/0.35, pow((z/0.35),4)); }
+static void plain_water(double z)
+{ glColor3f(0.0, (z+0.35)*1.6, 0.8); }
+
+static void ice_land(double z)
+{ glColor3f((0.35 - z)/0.35, (0.35 - z)/0.35, 1.0); }
+static void ice_water(double z)
+{ glColor3f(0.0, (z+0.35)*1.6, 0.8); }
+
+
+static void magma_land(double z)
+{ glColor3f(z/0.35, z/0.2,0); }
+static void magma_lava(double z)
+{ glColor3f((z+0.35)*1.6, (z+0.35), 0.0); }
+
+static double vs0r,vs0g,vs0b, vs1r, vs1g, vs1b,
+              vf0r,vf0g,vf0b, vf1r, vf1g, vf1b;
+static void vomit_solid(double z)
+{
+    double norm = fabs(z) / 0.35;
+    glColor3f( 
+      (1-norm) * vs0r + norm * vs1r, 
+      (1-norm) * vs0g + norm * vs1g, 
+      (1-norm) * vs0b + norm * vs1b 
+    );
+}
+static void vomit_fluid(double z)
+{
+    double norm = z / -0.35;
+    glColor3f( 
+      (1-norm) * vf0r + norm * vf1r, 
+      (1-norm) * vf0g + norm * vf1g, 
+      (1-norm) * vf0b + norm * vf1b 
+    );
+}
+
+
+static Color colors[] = {
+    {"plain", plain_land, plain_water, {0.0, 0.0, 0.0, 1.0}},
+    {"ice", ice_land, ice_water, {0.0, 0.0, 0.0, 1.0}},
+    {"magma", magma_land, magma_lava, {0.3, 0.3, 0.0, 1.0}},
+    {"vomit", vomit_solid, vomit_fluid, {0.3, 0.3, 0.0, 1.0}}, /* no error! */
+};
+static unsigned int ncolors = countof(colors);
+
+static Color *select_color()
+{
+    int idx = -1;
+    if ( ! strcmp(color, "random") )
+        idx = random() % ncolors;
+    else {
+        unsigned int i;
+        for (i = 0; i != ncolors; ++i)
+            if ( ! strcmp(colors[i].id, color) ) {
+                idx = i;
+                break;
+            }
+
+        if (idx == -1) {
+            printf("invalid color scheme selected; valid choices are:\n");
+            for (i = 0; i != ncolors; ++i)
+                printf("\t%s\n", colors[i].id);
+            printf("\t%s\n", "random");
+            idx = 0;
+        }
+    }
+
+    if ( ! strcmp(colors[idx].id, "vomit") ) { /* need to create it (ghetto) */
+        vs0r = random()/(double)RAND_MAX;
+        vs0g = random()/(double)RAND_MAX;
+        vs0b = random()/(double)RAND_MAX; 
+        vs1r = random()/(double)RAND_MAX; 
+        vs1g = random()/(double)RAND_MAX;
+        vs1b = random()/(double)RAND_MAX;
+        vf0r = random()/(double)RAND_MAX;
+        vf0g = random()/(double)RAND_MAX;
+        vf0b = random()/(double)RAND_MAX; 
+        vf1r = random()/(double)RAND_MAX; 
+        vf1g = random()/(double)RAND_MAX; 
+        vf1b = random()/(double)RAND_MAX; 
+        glClearColor(random()/(double)RAND_MAX,
+                     random()/(double)RAND_MAX,
+                     random()/(double)RAND_MAX,
+                     1.0);
+    } else {
+        glClearColor(colors[idx].bg[0],
+                     colors[idx].bg[1],
+                     colors[idx].bg[2],
+                     colors[idx].bg[3]);
+    }
+    return colors + idx;
+}
+
+
+/***************************
+ ** misc helper functions
+ ** */
+
+
+/* simple one for now.. */
+static inline double drunken_rando(double cur_val, double max, double width)
+{
+    double r = random() / (double) RAND_MAX * 2;
+    if (cur_val > 0)
+        if (r >= 1)
+            return cur_val + (r-1) * width * (1-cur_val/max);
+        else
+            return cur_val - r * width; 
+    else
+        if (r >= 1)
+            return cur_val - (r-1) * width * (1+cur_val/max);
+        else
+            return cur_val + r * width; 
+}
+
+
+/***************************
+ ** core crackberg routines
+ ** */
+
+
+void crackberg_init(ModeInfo *mi)
+{
+    cberg_state *cberg;
+
+    if (!cbergs) {
+        nsubdivs %= 16; /* just in case.. */
+        epoints = 1 + (1 << nsubdivs);
+        tpoints = epoints * (epoints + 1) / 2;
+        ntris = (1 << (nsubdivs << 1));
+        tnorms = ( (flat) ? ntris : tpoints);
+        dx = 1.0 / (1 << nsubdivs);
+
+        if ( !(cbergs = calloc(MI_NUM_SCREENS(mi), sizeof(cberg_state)))
+          || !(heights = malloc(tpoints * sizeof(double)))
+          || (lit && !(norms = malloc(3 * tnorms * sizeof(double)))) ) {
+            perror(progname);
+            exit(1);
+        }
+
+        if (visibility > 1.0 || visibility < 0.2) {
+            printf("visibility must be in range [0.2 .. 1.0]\n");
+            visibility = 1.0;
+        }
+    }
+
+    cberg = cbergs + MI_SCREEN(mi);
+    
+    cberg->glx_context = init_GL(mi);
+    cberg->motion_state = MOTION_AUTO;
+    cberg->mspeed = 1.0;
+    cberg->z = 0.5;
+
+    cberg->fovy = 60.0;
+    cberg->zNear = 0.5;
+    cberg->zFar = 5.0;
+
+    glEnable(GL_DEPTH_TEST);
+    glEnable(GL_BLEND);
+    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+    glShadeModel((flat) ? GL_FLAT : GL_SMOOTH);
+    glPolygonMode(GL_FRONT_AND_BACK, (wire) ? GL_LINE : GL_FILL);
+
+    if (lit) {
+        glEnable(GL_LIGHTING);
+        glEnable(GL_LIGHT0);
+        glEnable(GL_COLOR_MATERIAL);
+        glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
+        glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+        glEnable(GL_NORMALIZE);
+        glEnable(GL_RESCALE_NORMAL); 
+    }
+
+    cberg->color = select_color();
+
+    crackberg_reshape(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+}
+
+void crackberg_reshape(ModeInfo *mi, int w, int h)
+{
+    int h2;
+    cberg_state *cberg = cbergs + MI_SCREEN(mi);
+
+    if (letterbox && (h2 = w * 9 / 16) < h) {
+        glViewport(0, (h-h2)/2, w, h2);
+        cberg->aspect = w/(double)h2;
+    } else {
+        glViewport (0, 0, w, h);
+        cberg->aspect = w/(double)h;
+    }
+
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    gluPerspective(cberg->fovy, cberg->aspect, cberg->zNear, cberg->zFar);
+    glMatrixMode(GL_MODELVIEW);
+}
+
+Bool crackberg_handle_ev(ModeInfo *mi, XEvent *ev)
+{
+    cberg_state *cberg = cbergs + MI_SCREEN(mi);
+
+    if (ev->xany.type == KeyPress) {
+        switch (XKeycodeToKeysym(mi->dpy, ev->xkey.keycode, 0)) {
+            case XK_Left:   cberg->motion_state |= MOTION_LROT;  break;
+            case XK_Right:  cberg->motion_state |= MOTION_RROT;  break;
+            case '1':       cberg->motion_state |= MOTION_DEC;   break; 
+            case '2':       cberg->motion_state |= MOTION_INC;   break;
+            case 'a':       cberg->motion_state |= MOTION_LEFT;  break;
+            case 'd':       cberg->motion_state |= MOTION_RIGHT; break;
+            case 's':       cberg->motion_state |= MOTION_BACK;  break;
+            case 'w':       cberg->motion_state |= MOTION_FORW;  break;
+            default:        return False;
+        }
+        cberg->motion_state |= MOTION_MANUAL;
+    } else if (ev->xany.type == KeyRelease) { 
+        XEvent peek_ev;
+        if (XPending(mi->dpy)) {
+            XPeekEvent(mi->dpy, &peek_ev);
+            if (peek_ev.type == KeyPress
+             && peek_ev.xkey.keycode == ev->xkey.keycode       
+             && peek_ev.xkey.time - ev->xkey.time < 2) {
+                XNextEvent(mi->dpy, &peek_ev); /* drop bullshit repeat events */
+                return False;
+            }
+        }
+
+        switch (XKeycodeToKeysym(mi->dpy, ev->xkey.keycode, 0)) {
+            case XK_Left:   cberg->motion_state &= ~MOTION_LROT;  break;
+            case XK_Right:  cberg->motion_state &= ~MOTION_RROT;  break;
+            case '1':       cberg->motion_state &= ~MOTION_DEC;   break; 
+            case '2':       cberg->motion_state &= ~MOTION_INC;   break;
+            case 'a':       cberg->motion_state &= ~MOTION_LEFT;  break;
+            case 'd':       cberg->motion_state &= ~MOTION_RIGHT; break;
+            case 's':       cberg->motion_state &= ~MOTION_BACK;  break;
+            case 'w':       cberg->motion_state &= ~MOTION_FORW;  break;
+            case ' ':       
+                if (cberg->motion_state == MOTION_MANUAL)
+                    cberg->motion_state = MOTION_AUTO;     
+                break;
+            default:            return False;
+        }
+    } else
+        return False;
+    return True;
+}   
+void crackberg_draw(ModeInfo *mi)
+{
+    cberg_state *cberg = cbergs + MI_SCREEN(mi);
+    struct timeval cur_frame_t;
+    double cur_frame;
+    static float lpos[] = {2.0,0.0,-0.3,0.0};
+
+    if (!cberg->glx_context) /*XXX does this get externally tweaked? it kinda*/
+        return;               /*XXX can't.. check it in crackberg_init*/
+
+    gettimeofday(&cur_frame_t, NULL);
+    cur_frame = cur_frame_t.tv_sec + cur_frame_t.tv_usec / 1.0E6;
+    if ( cberg->prev_frame ) { /*not first run */
+        static double elapsed = 1.0;
+
+        cberg->elapsed = cur_frame - cberg->prev_frame;
+
+        if (cberg->motion_state == MOTION_AUTO) {
+            cberg->x += cberg->dx * cberg->elapsed;
+            cberg->y += cberg->dy * cberg->elapsed;
+            /* cberg->z */
+            /* cberg->pitch */
+            /* cberg->roll */
+            cberg->yaw += cberg->dyaw * cberg->elapsed;
+
+            elapsed += cberg->elapsed;
+            if (elapsed >= 0.8) {
+                elapsed = 0.0;
+                cberg->dx = drunken_rando(cberg->dx, 2.5, 0.8);
+                cberg->dy = drunken_rando(cberg->dy, 2.5, 0.8);
+                /* cberg->dz */
+                /* cberg->dpitch */
+                /* cberg->droll */
+                cberg->dyaw = drunken_rando(cberg->dyaw, 40.0,  8.0);
+            }
+        } else {
+            double scale = cberg->elapsed * cberg->mspeed;
+            if (cberg->motion_state & MOTION_BACK) {
+                cberg->x -= cos(cberg->yaw * M_PI_180) * scale;
+                cberg->y -= sin(cberg->yaw * M_PI_180) * scale;
+            }
+            if (cberg->motion_state & MOTION_FORW) {
+                cberg->x += cos(cberg->yaw * M_PI_180) * scale;
+                cberg->y += sin(cberg->yaw * M_PI_180) * scale;
+            }
+
+            if (cberg->motion_state & MOTION_LEFT) {
+                cberg->x -= sin(cberg->yaw * M_PI_180) * scale;
+                cberg->y += cos(cberg->yaw * M_PI_180) * scale;
+            }
+            if (cberg->motion_state & MOTION_RIGHT) {
+                cberg->x += sin(cberg->yaw * M_PI_180) * scale;
+                cberg->y -= cos(cberg->yaw * M_PI_180) * scale;
+            }
+
+            if (cberg->motion_state & MOTION_LROT)
+                cberg->yaw += 45 * scale;
+            if (cberg->motion_state & MOTION_RROT)
+                cberg->yaw -= 45 * scale;
+
+            if (cberg->motion_state & MOTION_DEC)
+                cberg->mspeed /= pow(MSPEED_SCALE, elapsed);
+            if (cberg->motion_state & MOTION_INC)
+                cberg->mspeed *= pow(MSPEED_SCALE, elapsed);
+
+        }
+    }
+    cberg->prev_frame = cur_frame;
+
+    mark_visible(cberg);
+    triles_update_state(&(cberg->trile_head), cberg);
+        
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    glLoadIdentity();
+    gluLookAt(0,0,0, 1,0,0, 0,0,1);
+    glLightfv(GL_LIGHT0, GL_POSITION, lpos);
+    /*glRotated(cberg->roll, 1,0,0); / * XXX blah broken and unused for now..* /
+    glRotated(cberg->pitch, 0,1,0); */
+    glRotated(-cberg->yaw, 0,0,1); /* camera sees ->yaw over */
+    glTranslated(-cberg->x, -cberg->y, -cberg->z);
+
+    mi->polygon_count = ntris * 
+      triles_foreach(cberg->trile_head, trile_draw,(void *) cberg);
+    
+    if (mi->fps_p)  
+        do_fps(mi);
+
+#ifdef DEBUG
+    glBegin(GL_LINES);
+        glColor3f(1.0,0.0,0.0);
+        glVertex3d(x_shit, y_shit, 0.0);
+        glVertex3d(x_shit, y_shit, 1.0);
+    glEnd();
+#endif
+
+    glFinish();
+    glXSwapBuffers(MI_DISPLAY(mi), MI_WINDOW(mi));
+}
+
+/* uh */
+void crackberg_free(ModeInfo *mi)
+{
+    if (lit)
+        free(norms);
+
+    free(heights);
+    free(cbergs);
+}
+
+#endif /* USE_GL */
diff --git a/hacks/glx/crackberg.man b/hacks/glx/crackberg.man
new file mode 100644 (file)
index 0000000..a664dc4
--- /dev/null
@@ -0,0 +1,123 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+zephyr - Lose your way wandering some height fields, and enjoy candy.
+.SH SYNOPSIS
+.B zephyr
+[\-root]
+[\-window]
+[\-install]
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window-id \fIid\fP]
+[\-delay \fIusecs\fP]
+[\-fps]
+[\-crack]
+[\-lit]
+[\-boring]
+[\-letterbox]
+[\-flat]
+[\-wire]
+[\-nowater]
+[\-visibility \fIfloat\fP]
+[\-color \fIstring\fP]
+[\-nsubdivs \fIinteger\fP]
+.SH DESCRIPTION
+Flies through height maps, optionally animating the instantiation and
+destruction of generated tiles; by default, tiles 'grow' into place (height
+gradually increased up to correct value).  In windowed mode the following key
+controls are available:
+.TP 8
+.B left, right
+Turn left and right.
+.TP 8
+.B a,w,s,d
+Move left, forwards, backwards, and to the right, respectively.
+.TP 8
+.B 1,2
+Decrease and increase manual speed, respectively.
+.TP 8
+.B Spacebar
+Return to automatic control.
+.SH OPTIONS
+.I zephyr
+accepts the following options:
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-window
+Draw on a newly-created window.  This is the default.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use.  Legal values are the name of a visual
+class, or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-delay \fImicroseconds\fP
+Delay between frames; default 20000 (1/50th of a second).
+.TP 8
+.B \-fps
+Display frame per second and polygon counts.
+.TP 8
+.B \-crack
+Use all possible methods to animate tile instantiation.
+.TP 8
+.B \-boring
+Do not animate instatiation at all; use this to get standard landscape 
+generator behavior.
+.TP 8
+.B \-letterbox
+Drawable window region has a 16:9 aspect ratio, regardless of actual
+window size.
+.TP 8
+.B \-lit
+Enable lighting.
+.TP 8
+.B \-flat
+Flat shading (OpenGL will use one color per primitive, rather than
+interpolating betwixt vertices).
+.TP 8
+.B \-wire
+Wireframe.
+.TP 8
+.B \-nowater
+Do not display 'water' (forces negative values to zero, and selects a 
+different coloring method).
+.TP 8
+.B \-visibility \fIfloat\fP
+Value in range [0.2,1.0] (default 0.6) specifying proportion of viewable 
+XY plane which is to be drawn upon.
+.TP 8
+.B \-color \fIstring\fP
+Selects color scheme.  Use with no or bogus argument for current list.
+.TP 8
+.B \-nsubdivs \fIinteger\fP
+Number of times to recursively subdivide each triangular tile.  Each 
+increment increases total triangles by a factor of 4; for instance the default
+setting 4 results in 256 triangles per tile.
+
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2005 by Matus Telgarsky.  Permission to use, copy,
+modify, distribute, and sell this software and its documentation for
+any purpose is hereby granted without fee, provided that the above
+copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation.
+No representations are made about the suitability of this software for
+any purpose.  It is provided "as is" without express or implied
+warranty.
+.SH AUTHOR
+Matus Telgarsky <catachresis@cmu.edu>, 2005.
index 30f4e7dfff067a501050382fc7b2cddd99e685b8..c22c33905d70a5d2da3d5eb2e800307c14865c57 100644 (file)
@@ -433,13 +433,15 @@ void drawBoard(void) {
   glEnd();
 }
 
-void draw_pieces(void) {
-  glEnable(GL_TEXTURE_2D);
-  glBindTexture(GL_TEXTURE_2D, piecetexture);
-  glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+void draw_pieces(int wire) {
+  if (!wire) {
+    glEnable(GL_TEXTURE_2D);
+    glBindTexture(GL_TEXTURE_2D, piecetexture);
+    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
 
-  glColor4f(0.5, 0.5, 0.5, 1.0);
-  glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow);
+    glColor4f(0.5, 0.5, 0.5, 1.0);
+    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow);
+  }
 
   drawPieces();
   if(moving) drawMovingPiece(0);
@@ -447,12 +449,13 @@ void draw_pieces(void) {
   glDisable(GL_TEXTURE_2D);
 }
 
-void draw_shadow_pieces(void) {
-  glEnable(GL_TEXTURE_2D);
-  glBindTexture(GL_TEXTURE_2D, piecetexture);
-  glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+void draw_shadow_pieces(int wire) {
+  if (!wire) {
+    glEnable(GL_TEXTURE_2D);
+    glBindTexture(GL_TEXTURE_2D, piecetexture);
+    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+  }
 
-  
   drawPiecesShadow();
   if(moving) drawMovingPiece(shadows);
   if(take) drawTakePiece(shadows);
@@ -531,7 +534,7 @@ void draw_reflections(void) {
   glTranslatef(0.5, 0.0, 0.5);
 
   glLightfv(GL_LIGHT0, GL_POSITION, position);
-  draw_pieces();
+  draw_pieces(wire);
   glPopMatrix();
   
   glDisable(GL_STENCIL_TEST);
@@ -563,17 +566,19 @@ void display(Chesscreen *c) {
   position2[0] = 4.0 + 8.0*-sin(theta*100*M_PI/180.0);
   position2[2] = 4.0 + 8.0*cos(theta*100*M_PI/180.0);
 
-  glEnable(GL_LIGHTING);
-  glLightfv(GL_LIGHT0, GL_POSITION, position);
-  glLightfv(GL_LIGHT1, GL_POSITION, position2);
-  glEnable(GL_LIGHT0);
+  if (!wire) {
+    glEnable(GL_LIGHTING);
+    glLightfv(GL_LIGHT0, GL_POSITION, position);
+    glLightfv(GL_LIGHT1, GL_POSITION, position2);
+    glEnable(GL_LIGHT0);
+  }
 
   /** draw board, pieces */
   if(!wire) {
     glEnable(GL_LIGHTING);
     glEnable(GL_COLOR_MATERIAL);
 
-    if(reflections) {
+    if(reflections && !wire) {
       draw_reflections();
       glEnable(GL_BLEND);
     }
@@ -598,7 +603,7 @@ void display(Chesscreen *c) {
       glTranslatef(0.0, 0.001, 0.0);
       glMultMatrixf(m[0]);
       glTranslatef(0.5, 0.01, 0.5);
-      draw_shadow_pieces();
+      draw_shadow_pieces(wire);
       glPopMatrix();      
 
       glEnable(GL_LIGHTING);
@@ -613,7 +618,7 @@ void display(Chesscreen *c) {
     drawBoard();
  
   glTranslatef(0.5, 0.0, 0.5);
-  draw_pieces();
+  draw_pieces(wire);
 
   if(!wire) {
     glDisable(GL_COLOR_MATERIAL);
@@ -655,13 +660,15 @@ void init_chess(ModeInfo *mi) {
 
   glClearColor(0.0, 0.0, 0.0, 0.0);
 
-  glDepthFunc(GL_LEQUAL);
-  glClearStencil(0);
-  glEnable(GL_CULL_FACE);
-  glCullFace(GL_BACK);
+  if (!wire) {
+    glDepthFunc(GL_LEQUAL);
+    glClearStencil(0);
+    glEnable(GL_CULL_FACE);
+    glCullFace(GL_BACK);
 
-  make_piece_texture();
-  make_board_texture();
+    make_piece_texture();
+    make_board_texture();
+  }
   gen_model_lists();
 
   if(!wire) {
@@ -672,7 +679,7 @@ void init_chess(ModeInfo *mi) {
     glEnable(GL_DEPTH_TEST);
   }
   else
-    glPolygonMode(GL_FRONT, GL_LINE);
+    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 }
 
 int oldgame = -1;
index 0e821c8e79cc60c6c0bf64129a39689f79070451..4d0e58a615ea96d1dc71ad929f26e87c3e59fc02 100644 (file)
@@ -3,8 +3,14 @@
 endgame \- endgame chess screensaver
 .SH SYNOPSIS
 .B endgame
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+[\-display \fIhost:display.screen\fP]
+[\-window]
+[\-root]
+[\-install]
+[\-visual \fIvisual\fP]
+[\-delay \fImicroseconds\fP]
+[\-wireframe]
+[\-fps]
 .SH DESCRIPTION
 endgame replays a brilliant chess ending
 .SH OPTIONS
@@ -17,9 +23,6 @@ Draw on a newly-created window.  This is the default.
 .B \-root
 Draw on the root window.
 .TP 8
-.B \-wire
-wireframe mode might be to your liking.
-.TP 8
 .B \-install
 Install a private colormap for the window.
 .TP 8
@@ -32,6 +35,9 @@ Reflect pieces in light board squares.
 .B \-visual \fIvisual\fP\fP
 Specify which visual to use.  Legal values are the name of a visual class,
 or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of solid.
 .B \-fps
 Display a running tally of how many frames per second are being rendered.
 In conjunction with \fB\-delay 0\fP, this can be a useful benchmark of 
index 1930f4e49d78dc68c1da5aa051cc17b1e5d61f01..e0d8d889d90abf647d7a558fb4ac6ce99ff34cc0 100644 (file)
@@ -27,7 +27,7 @@
 #endif
 
 #ifdef STANDALONE
-# define PROGCLASS                                             "Screensaver"
+# define PROGCLASS                                             "Extrusion"
 # define HACK_INIT                                             init_screensaver
 # define HACK_DRAW                                             draw_screensaver
 # define HACK_RESHAPE                                  reshape_screensaver
 # define screensaver_opts                              xlockmore_opts
 #define        DEFAULTS                        "*delay:                        20000   \n" \
                                                                                "*showFPS:              False   \n" \
-                                                                               "*light:                        True    \n" \
-                                        "*wire:                                False   \n" \
-                                        "*texture:                     False   \n" \
-                                                                               "*image:                        BUILTIN \n" \
-                                        "*name:             RANDOM  \n" \
-                                        "*example:          0       \n"
+                                                                               "*wireframe:        False   \n"
 
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
@@ -102,7 +97,6 @@ extern void DrawStuff_twistoid(void);
 #define HEIGHT 480
 
 #define DEF_LIGHT              "True"
-#define DEF_WIRE               "False"
 #define DEF_TEXTURE            "False"
 #define DEF_TEX_QUAL   "False"
 #define DEF_MIPMAP     "False"
@@ -110,7 +104,6 @@ extern void DrawStuff_twistoid(void);
 #define DEF_IMAGE      "BUILTIN"
 
 static int do_light;
-static int do_wire;
 static int do_texture;
 static int do_tex_qual;
 static int do_mipmap;
@@ -120,8 +113,6 @@ static char *which_image;
 static XrmOptionDescRec opts[] = {
   {"-light",           ".extrusion.light",   XrmoptionNoArg, "true" },
   {"+light",           ".extrusion.light",   XrmoptionNoArg, "false" },
-  {"-wire",            ".extrusion.wire",    XrmoptionNoArg, "true" },
-  {"+wire",            ".extrusion.wire",    XrmoptionNoArg, "false" },
   {"-texture",         ".extrusion.texture", XrmoptionNoArg, "true" },
   {"+texture",         ".extrusion.texture", XrmoptionNoArg, "false" },
   {"-texture",         ".extrusion.texture", XrmoptionNoArg, "true" },
@@ -136,7 +127,6 @@ static XrmOptionDescRec opts[] = {
 
 static argtype vars[] = {
   {&do_light,   "light",           "Light",           DEF_LIGHT,    t_Bool},
-  {&do_wire,    "wire",            "Wire",            DEF_WIRE,     t_Bool},
   {&do_texture,         "texture",         "Texture",         DEF_TEXTURE,  t_Bool},
   {&do_tex_qual, "texture_quality", "Texture_Quality", DEF_TEX_QUAL, t_Bool},
   {&do_mipmap,   "mipmap",          "Mipmap",          DEF_MIPMAP,   t_Bool},
@@ -149,7 +139,6 @@ static OptionStruct desc[] =
 {
   {"-name num", "example 'name' to draw (helix2, helix3, helix4, joinoffset, screw, taper, twistoid)"},
   {"-/+ light", "whether to do enable lighting (slower)"},
-  {"-/+ wire", "whether to do use wireframe instead of filled (faster)"},
   {"-/+ texture", "whether to apply a texture (slower)"},
   {"-image <filename>", "texture image to load"},
   {"-/+ texture_quality", "whether to use texture smoothing (slower)"},
@@ -487,7 +476,7 @@ initializeGL(ModeInfo *mi, GLsizei width, GLsizei height)
 
   if (do_light)
        SetupLight();
-  if (do_wire) {
+  if (MI_IS_WIREFRAME(mi)) {
        glPolygonMode(GL_FRONT,GL_LINE);
        glPolygonMode(GL_BACK,GL_LINE);
   }
@@ -579,7 +568,7 @@ init_screensaver (ModeInfo * mi)
   int screen = MI_SCREEN(mi);
   screensaverstruct *gp;
 
-  if (do_wire) do_light = 0;
+  if (MI_IS_WIREFRAME(mi)) do_light = 0;
 
   if (Screensaver == NULL) {
        if ((Screensaver = (screensaverstruct *)
index f9d69deb1fcaa2059bab6ac81ad02dbb24515f13..10d9b9cf6f794fb0fd1dacbc75895ddd67c34e31 100644 (file)
@@ -10,7 +10,7 @@ extrusion - various rotating extruded shapes.
 [\-delay \fInumber\fP]
 [\-name \fIwhich\fP]
 [\-no-light]
-[\-wire]
+[\-wireframe]
 [\-fps]
 .SH DESCRIPTION
 Draws various rotating extruded shapes that twist around, lengthen, and
@@ -40,7 +40,7 @@ Whether to light the scene, or use flat coloring.
 .B \-bitmap \fIfile\fP
 The texture map to use.
 .TP 8
-.B \-wire
+.B \-wireframe
 Render in wireframe instead of solid.
 .TP 8
 .B \-fps | \-no-fps
index 16f57e7afc7b81dbfd3b73d328f00ff80aed542f..6dcc168cedb5b5349473e3433da2e50ed53d8ba6 100644 (file)
@@ -9,6 +9,7 @@ flipscreen3d - rotates an image of the screen through 3 dimensions.
 [\-root]
 [\-delay \fInumber\fP]
 [\-no-rotate]
+[\-wireframe]
 [\-fps]
 .SH DESCRIPTION
 Grabs an image of the desktop, turns it into a GL texture map, and spins it
@@ -31,6 +32,9 @@ Per-frame delay, in microseconds.  Default: 20000 (0.02 seconds.).
 .B \-rotate | \-no-rotate
 Whether to rotate.
 .TP 8
+.B \-wireframe
+Just render boxes instead of textures (for debugging).
+.TP 8
 .B \-fps | \-no-fps
 Whether to show a frames-per-second display at the bottom of the screen.
 .SH ENVIRONMENT
index 3d134b473d0343779bc84fd1d97fc07d659dc70a..1a0eb499e054ee609cb93e1087a3e3ac723e0a11 100644 (file)
@@ -461,6 +461,8 @@ make_line (fliptext_configuration *sc, Bool skip_blanks_p)
   ln->width = sc->font_scale * texture_string_width (sc->texfont, s, 0);
   ln->height = sc->font_scale * sc->line_height;
 
+  memcpy (ln->color, sc->color, sizeof(ln->color));
+
   sc->nlines++;
   if (sc->lines_size <= sc->nlines)
     {
@@ -568,10 +570,10 @@ draw_line (ModeInfo *mi, line *line)
 static void
 tick_line (fliptext_configuration *sc, line *line)
 {
-  int stagger = 60;            /* frames of delay between line spin-outs */
+  int stagger = 30;            /* frames of delay between line spin-outs */
   int slide   = 600;           /* frames in a slide in/out */
   int linger  = 0;             /* frames to pause with no motion */
-  double i;
+  double i, ii;
 
   if (line->state >= DEAD) abort();
   if (++line->step >= line->steps)
@@ -582,6 +584,9 @@ tick_line (fliptext_configuration *sc, line *line)
       if (linger == 0 && line->state == LINGER)
         line->state++;
 
+      if (sc->anim_type != SPIN)
+        stagger *= 2;
+
       switch (line->state)
         {
         case HESITATE:                 /* entering state HESITATE */
@@ -602,7 +607,7 @@ tick_line (fliptext_configuration *sc, line *line)
           break;
 
         case IN:
-          memset (line->color, 0, sizeof (line->color));
+          line->color[3] = 0;
           switch (sc->anim_type)
             {
             case SCROLL_BOTTOM:                /* entering state BOTTOM IN */
@@ -646,7 +651,6 @@ tick_line (fliptext_configuration *sc, line *line)
           break;
 
         case OUT:
-          memcpy (sc->color, line->color, sizeof(line->color));
           switch (sc->anim_type)
             {
             case SCROLL_BOTTOM:                /* entering state BOTTOM OUT */
@@ -684,7 +688,6 @@ tick_line (fliptext_configuration *sc, line *line)
           break;
 
         case LINGER:
-          memcpy (sc->color, line->color, sizeof(line->color));
           line->from = line->to;
           line->steps = linger;
           break;
@@ -701,19 +704,20 @@ tick_line (fliptext_configuration *sc, line *line)
     case IN:
     case OUT:
       i = (double) line->step / line->steps;
-      if (line->state == IN) i = 1-i;
-      i = i * i;
-      if (line->state == IN) i = 1-i;
-
-      line->color[0] = sc->color[0] * (line->state == IN ? i : 1-i);
-      line->color[1] = sc->color[1] * (line->state == IN ? i : 1-i);
-      line->color[2] = sc->color[2] * (line->state == IN ? i : 1-i);
-      line->color[3] = sc->color[3] * (line->state == IN ? i : 1-i);
-
-      line->current.x = line->from.x + (i * (line->to.x - line->from.x));
-      line->current.y = line->from.y + (i * (line->to.y - line->from.y));
-      line->current.z = line->from.z + (i * (line->to.z - line->from.z));
-      line->cth = line->fth + (i * (line->tth - line->fth));
+
+      /* Move along the path exponentially, slow side towards the middle. */
+      if (line->state == OUT)
+        ii = i * i;
+      else
+        ii = 1 - ((1-i) * (1-i));
+
+      line->current.x = line->from.x + (ii * (line->to.x - line->from.x));
+      line->current.y = line->from.y + (ii * (line->to.y - line->from.y));
+      line->current.z = line->from.z + (ii * (line->to.z - line->from.z));
+      line->cth = line->fth + (ii * (line->tth - line->fth));
+
+      if (line->state == OUT) ii = 1-ii;
+      line->color[3] = sc->color[3] * ii;
       break;
 
     case HESITATE:
@@ -741,7 +745,7 @@ reset_lines (ModeInfo *mi)
   sc->rotation.y = 5 - BELLRAND(10);
   sc->rotation.z = 5 - BELLRAND(10);
 
-  switch (random() % 7)
+  switch (random() % 8)
     {
     case 0:  sc->anim_type = SCROLL_TOP;    break;
     case 1:  sc->anim_type = SCROLL_BOTTOM; break;
@@ -776,7 +780,10 @@ reset_lines (ModeInfo *mi)
   maxy -= maxh/2;
 
   sc->mid.x = minx + frand (maxx - minx);
-  sc->mid.y = miny + frand (maxy - miny);
+  if (sc->anim_type == SPIN)
+    sc->mid.y = miny + BELLRAND (maxy - miny);
+  else
+    sc->mid.y = miny + frand (maxy - miny);
 
   sc->in.x  = BELLRAND(sc->right_margin * 2) - sc->right_margin;
   sc->out.x = BELLRAND(sc->right_margin * 2) - sc->right_margin;
index fd410e1b84a31b33bd480d41a47178565496a23f..662ceb35da3aa88f7931f45c7dfdc55fd7d33589 100644 (file)
@@ -111,6 +111,7 @@ static XrmOptionDescRec opts[] = {
     {"-resolution", ".gflux.resolution", XrmoptionSepArg, 0},
 /*    {"-draw", ".gflux.draw", XrmoptionSepArg, 0},*/
     {"-mode", ".gflux.mode", XrmoptionSepArg, 0},
+    {"-wireframe", ".gflux.mode", XrmoptionNoArg, "wire"},
     {"-flat", ".gflux.flat", XrmoptionSepArg, 0},
     {"-speed", ".gflux.speed", XrmoptionSepArg, 0},
     {"-rotationx", ".gflux.rotationx", XrmoptionSepArg, 0},
index d8aa61c31146d6b529eece332de1701727b0127d..3e2f388aa9861b1e1052a12b980455692e6c2653 100644 (file)
@@ -4,12 +4,14 @@ gflux \- rippling surface graphics hack
 .SH SYNOPSIS
 .B gflux
 [\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
 [\-squares \fInum\fP] [\-resolution \fInum\fP] [\-mode \fImode\fP]
 [\-flat \fInum\fP] [\-speed \fInum\fP]
 [\-rotationx \fInum\fP] [\-rotationy \fInum\fP] [\-rotationz \fInum\fP]
 [\-waves \fInum\fP] [\-waveChange \fInum\fP] [\-waveHeight \fInum\fP]
 [\-waveFreq \fInum\fP] [\-zoom \fInum\fP]
+[\-wireframe]
+[\-fps]
 .SH DESCRIPTION
 The \fIgflux\fP program draws a colourfull animated rippling square rotating in 3D space.
 .SH OPTIONS
@@ -50,6 +52,9 @@ file; see
 .BR xscreensaver-demo (1)
 for more details.
 .TP 8
+.B \-wireframe
+Same as "-mode wire".
+.TP 8
 .B \-flat \fInum\fP\fP
 0 for smooth shading 1 for flat. default 0
 .TP 8
index 29e6f23d3cc69f4ba0bf12e3cbf66f2e5e8e6017..3c718106660b945122d8eb9f9d1199fdd0420701 100644 (file)
@@ -38,11 +38,9 @@ extern XtAppContext app;
 #define DEF_WANDER      "True"
 #define DEF_BLURSIZE    "15"
 
-#define DEFAULTS       "*delay:        10000       \n" \
-                       "*showFPS:      False       \n" \
-                       "*fpsSolid:     True        \n" \
-                       "*wireframe:    False       \n" \
-
+#define DEFAULTS       "*delay:    10000 \n" \
+                       "*showFPS:  False \n" \
+                       "*fpsSolid: True  \n"
 
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
index 3ad07641f60b8d12805d3c522afdc25d699c0e00..0210e018cff4fa517562b89c69f262dc9059576f 100644 (file)
@@ -12,7 +12,6 @@ glblur - 3D radial blur texture fields
 [\-no-wander]
 [\-no-spin]
 [\-spin \fI[XYZ]\fP]
-[\-wireframe]
 [\-fps]
 .SH DESCRIPTION
 This program draws a box and a few line segments, and generates a 
@@ -51,9 +50,6 @@ Around which axes should the object spin?
 .B \-no-spin
 None.
 .TP 8
-.B \-wireframe
-Render in wireframe instead of solid.
-.TP 8
 .B \-fps | \-no-fps
 Whether to show a frames-per-second display at the bottom of the screen.
 .SH ENVIRONMENT
index d7ecc7356e224c5ea53f43d223f93b17b9d5cec9..c846bcc67cb5686f943c694cbebc0b5698fa8bbd 100644 (file)
@@ -11,6 +11,8 @@ glmatrix - simulates the title sequence effect of the movie
 [\-small | \-large]
 [\-trace]
 [\-phone \fInumber\fP]
+[\-wireframe]
+[\-fps]
 .SH DESCRIPTION
 The \fIglmatrix\fP program draws dropping characters similar to what
 is seen in the title sequence of the Wachowski brothers' film,
@@ -66,6 +68,9 @@ Instead of displaying Matrix glyphs, display hexadecimal digits.
 Instead of displaying Matrix glyphs, display genetic code
 (guanine, adenine, thymine, and cytosine.)
 .TP 8
+.B \-wireframe
+Just draw boxes instead of textured characters.
+.TP 8
 .B \-fps
 Display a running tally of how many frames per second are being rendered.
 In conjunction with \fB\-delay 0\fP, this can be a useful benchmark of 
index e6b55278abf3705ce0492c3f372e6f34454554b9..49706b52b8225f0664e213ff1a0fe7c01388672b 100644 (file)
@@ -6,7 +6,7 @@ glsnake \- OpenGL enhanced Rubik's Snake cyclewaster.
 .B glsnake
 [\-display \fIhost:display.screen\fP] [\-window] [\-root]
 [\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
-[\-wireframe] [\-scarycolour]
+[\-wireframe] [\-altcolour]
 [\-velocity \fIangular\fP]
 [\-explode \fIdistance\fP]
 [\-statictime \fImilliseconds\fP]
@@ -41,7 +41,7 @@ your GL performance.
 .B \-wireframe
 Display the snake in wireframe mode, rather than the default solid mode.
 .TP 8
-.B \-scarycolour
+.B \-altcolour
 Use the alternate colour scheme for the snake.  Shape identification using
 colour will be disabled.
 .TP 8
index aac2d9ec7aaf53390822a68559f51c638027ee6e..a99ce702036b299c092cc5f9624fc0020e068255 100644 (file)
@@ -17,13 +17,15 @@ gltext - draws text spinning around in 3D
 .SH SYNOPSIS
 .B gltext
 [\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
 [\-text \fIstring\fP]
 [\-program \fIcommand\fP]
 [\-wander] [\-no-wander]
 [\-spin \fIaxes\fP]
 [\-no-spin]
 [\-front] [\-no\-front]
+[\-wireframe]
+[\-fps]
 .SH DESCRIPTION
 The \fIgltext\fP program draws some text spinning around in 3D, using
 a font that appears to be made of solid tubes.  
@@ -69,11 +71,6 @@ If specified, this overrides \fI\-text\fP.
 The program will be re-run every 5 seconds to re-generate the text.
 It should run quickly, and shouldn't generate too much text.
 .TP 8
-.B \-fps
-Display a running tally of how many frames per second are being rendered.
-In conjunction with \fB\-delay 0\fP, this can be a useful benchmark of 
-your GL performance.
-.TP 8
 .B \-wander
 Move the text around the screen.  This is the default.
 .TP 8
@@ -95,6 +92,14 @@ always face mostly forward so that the text is easily readable.
 .TP 8
 .B \-no\-front
 Allow spins to go all the way around or upside down.  This is the default.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps
+Display a running tally of how many frames per second are being rendered.
+In conjunction with \fB\-delay 0\fP, this can be a useful benchmark of 
+your GL performance.
 .SH ENVIRONMENT
 .PP
 .TP 8
index a54fbfe6cd6372db91f1b1d06ab45d641f1ce5b6..931d24ccfa9e0610d007d216f91b6658f7a9138e 100644 (file)
@@ -110,7 +110,6 @@ static const char sccsid[] = "@(#)hypertorus.c  1.1 03/05/18 xlockmore";
 # define hypertorus_opts xlockmore_opts
 # define DEFAULTS        "*delay:      25000 \n" \
                          "*showFPS:    False \n" \
-                         "*wireframe:  False \n" \
 
 # include "xlockmore.h"         /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -160,7 +159,7 @@ static const float offset3d[4] = {
 
 static XrmOptionDescRec opts[] =
 {
-  {"-mesh",            ".hypertorus.displayMode",  XrmoptionNoArg,
+  {"-wireframe",       ".hypertorus.displayMode",  XrmoptionNoArg,
                        DISP_WIREFRAME_STR },
   {"-surface",         ".hypertorus.displayMode",  XrmoptionNoArg,
                        DISP_SURFACE_STR },
@@ -218,7 +217,7 @@ static argtype vars[] =
 
 static OptionStruct desc[] =
 {
-  { "-mesh",            "display the torus as a wireframe mesh" },
+  { "-wireframe",       "display the torus as a wireframe mesh" },
   { "-surface",         "display the torus as a solid surface" },
   { "-transparent",     "display the torus as a transparent surface" },
   { "-solid",           "display the torus as a solid object" },
index bad206e0fd454613649ce07cdda069bb2d101cbd..8342f6dcd90481f15076c43e96340508d00e9981 100644 (file)
@@ -10,7 +10,7 @@ hypertorus - Draws a hypertorus that rotates in 4d
 [\-root]
 [\-delay \fIusecs\fP]
 [\-fps]
-[\-mesh]
+[\-wireframe]
 [\-surface]
 [\-transparent]
 [\-solid]
@@ -73,7 +73,7 @@ animation.  Default 25000, or 1/40th second.
 The following three options are mutually exclusive.  They determine
 how the torus is displayed.
 .TP 8
-.B \-mesh
+.B \-wireframe
 Display the torus as a wireframe mesh.
 .TP 8
 .B \-surface
index 17860043509f7de44daec1c39943f60a1cb651aa..2329170475568a7104434f532e86feb35a5a5f10 100644 (file)
@@ -25,9 +25,8 @@
 #define DEF_RANDOM                             "False"
 #define DEF_SPEED                              "150"
 
-# define DEFAULTS                                      "*delay:                20000   \n"                     \
-                                                                       "*showFPS:      False   \n"                     \
-                                                                       "*wireframe:    False   \n"                     \
+# define DEFAULTS                                      "*delay:                20000   \n" \
+                                                                       "*showFPS:      False   \n"
 
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
index d05e8c65e3149167c41c11316eff4e921f518e34..c3bcaf81523f915027198534f56a35993a5ac51d 100644 (file)
@@ -91,8 +91,7 @@ static const char sccsid[] = "@(#)moebius.c   5.01 2001/03/01 xlockmore";
 # define EVENT_MASK                    PointerMotionMask
 # define moebius_opts          xlockmore_opts
 # define DEFAULTS                      "*delay:                20000   \n"                     \
-                                                       "*showFPS:      False   \n"                     \
-                                                       "*wireframe:    False   \n"
+                                                       "*showFPS:      False   \n"
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
 # include "xlock.h"            /* from the xlockmore distribution */
index f16fd6b714ece11f4ed8f88c8a5c3a410df0823d..a1aed95c9eace6961db8f37afc0bb490ed0add11 100644 (file)
@@ -1,15 +1,13 @@
 .TH XScreenSaver 1 "13-Mar-01" "X Version 11"
 .SH NAME
-molecule - draws 3D moleclear structures
+molecule - draws 3D molecular structures
 .SH SYNOPSIS
 .B gltext
 [\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
 [\-wander] [\-no-wander]
 [\-spin \fIaxes\fP]
 [\-no-spin]
-[\-wire]
-[\-verbose]
 [\-timeout \fIseconds\fP]
 [\-labels] [\-no-labels]
 [\-titles] [\-no-titles]
@@ -17,6 +15,9 @@ molecule - draws 3D moleclear structures
 [\-bonds] [\-no-bonds]
 [\-shells] [\-no-shells]
 [\-molecule \fIfile-or-directory\fP]
+[\-verbose]
+[\-wireframe]
+[\-fps]
 .SH DESCRIPTION
 The \fImolecule\fP program draws several different representations of
 molecules.  Some common molecules are built in, and it can read PDB
@@ -100,7 +101,7 @@ Do not draw electron shells.  This is the default.
 .B \-shell\-alpha
 When drawing shells, how transparent to make them.  Default 0.4.
 .TP 8
-.B \-wire
+.B \-wireframe
 Draw a wireframe rendition of the molecule: this will consist only of
 single-pixel lines for the bonds, and text labels where the atoms go.
 This will be very fast.
index 06f716a1ceb7d6dec003b7f424bb6d54b70ee178..472c17e9536589098732a09d6b623dde6efb5271 100644 (file)
@@ -54,4 +54,4 @@ appear in supporting documentation.  No representations are made about the
 suitability of this software for any purpose.  It is provided "as is" without
 express or implied warranty.
 .SH AUTHOR
-Marcelo Vianna.
\ No newline at end of file
+Marcelo Vianna.
index 3ee2e5efcfbb65fc6c5d398d7614edbb2d0d5056..241c3e29153393754fd5c96988916eaf28d2d7d1 100644 (file)
@@ -10,6 +10,8 @@ pinion - draws a scrolling sequence of interconnected gears
 [\-spin \fIratio\fP]
 [\-size \fIratio\fP]
 [\-max-rpm \fIint\fP]
+[\-wireframe]
+[\-fps]
 .SH DESCRIPTION
 The \fIpinion\fP program draws an interconnected set of gears moving
 across the screen.
@@ -50,6 +52,9 @@ If any gear exceeds the maximum RPM, the current gear train is broken there,
 and we start a new train.  Default: 900 RPM.  (At 30 FPS, that's about half
 a rotation per frame.)
 .TP 8
+.B \-wireframe
+Render in wireframe instead of solid.
+.TP 8
 .B \-fps
 Display a running tally of how many frames per second are being rendered.
 In conjunction with \fB\-delay 0\fP, this can be a useful benchmark of 
index b919ca1830d4f822c985e2dfb96ba2af03b8fe5d..12b1c246c51667fc1e8a794b3306841a8f34376b 100644 (file)
@@ -128,7 +128,7 @@ static void
 kludge_normal (int n, const int *indices, const point *points)
 {
   XYZ normal = { 0, 0, 0 };
-  XYZ p;
+  XYZ p = { 0, 0, 0 };
   int i;
 
   for (i = 0; i < n; ++i) {
@@ -369,6 +369,9 @@ new_polyhedron (ModeInfo *mi)
 
   new_label (mi);
 
+  if (wire)
+    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+
   glNewList (bp->object_list, GL_COMPILE);
   for (i = 0; i < p->nfaces; i++)
     {
index 48fb43ac54e6cec174b4b8f574ffa00d1e3be24c..c037e22fc96bceb90a3c0f50e2d624abf7242b5e 100644 (file)
@@ -16,6 +16,7 @@ polyhedra - draws the 80 uniform polyhedra and their duals
 [\-wireframe]
 [\-no-titles]
 [\-which \fIname\fP]
+[\-wireframe]
 [\-fps]
 .SH DESCRIPTION
 This program renders 160 different 3D solids, and displays some
index c51137b6a771c616c05561aca87675cd9cfc3031..f4043dcaa78cef7e110f8025cc092082bb790a99 100644 (file)
@@ -119,8 +119,7 @@ static const char sccsid[] = "@(#)polytopes.c  1.1 03/05/18 xlockmore";
 # define HACK_RESHAPE    reshape_polytopes
 # define polytopes_opts xlockmore_opts
 # define DEFAULTS        "*delay:      25000 \n" \
-                         "*showFPS:    False \n" \
-                         "*wireframe:  False \n" \
+                         "*showFPS:    False \n"
 
 # include "xlockmore.h"         /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -165,7 +164,7 @@ static const float offset3d[4] = {  0.0,  0.0, -2.0,  0.0 };
 
 static XrmOptionDescRec opts[] =
 {
-  {"-mesh",            ".polytopes.displayMode",  XrmoptionNoArg,
+  {"-wireframe",       ".polytopes.displayMode",  XrmoptionNoArg,
                        DISP_WIREFRAME_STR },
   {"-surface",         ".polytopes.displayMode",  XrmoptionNoArg,
                        DISP_SURFACE_STR },
@@ -222,7 +221,7 @@ static argtype vars[] =
 
 static OptionStruct desc[] =
 {
-  { "-mesh",            "display the polytope as a wireframe mesh" },
+  { "-wireframe",       "display the polytope as a wireframe mesh" },
   { "-surface",         "display the polytope as a solid surface" },
   { "-transparent",     "display the polytope as a transparent surface" },
   { "-solid",           "display the polytope as a solid object" },
index 71d2aaeb79d3f38720c2d63b0b16ef41079ba009..8e423ab1ac2812b7aa861f10f8a3d25626e61b82 100644 (file)
@@ -16,7 +16,7 @@ polytopes - Draws one of the six regular 4d polytopes rotating in 4d.
 [\-24-cell]
 [\-120-cell]
 [\-600-cell]
-[\-mesh]
+[\-wireframe]
 [\-surface]
 [\-transparent]
 [\-single-color]
@@ -109,14 +109,14 @@ regular tetrahedra as its cells, 1200 equilateral triangles as faces,
 The following three options are mutually exclusive.  They determine
 how the polytope is displayed.
 .TP 8
-.B \-mesh
-Display the polytope as a wireframe mesh (default).
+.B \-wireframe
+Display the polytope as a wireframe mesh.
 .TP 8
 .B \-surface
 Display the polytope as a solid object.
 .TP 8
 .B \-transparent
-Display the polytope as a transparent object.
+Display the polytope as a transparent object.  Default.
 .PP
 The following two options are mutually exclusive.  They determine how
 to color the polytope.
index cd4c80bac81348f6f1bb76152b496525e3df5c29..bd307b99a1cb37a8fb6aab9f82851ac3ae230469 100644 (file)
@@ -379,6 +379,10 @@ void draw_glory(void) {
     glVertex3f(-0.75, -0.75, 0.0);
     glVertex3f(0.75, -0.75, 0.0);
     glVertex3f(0.0, 0.75, 0.0);
+
+    glVertex3f(0.0, 0.75, 0.0);
+    glVertex3f(0.75, -0.75, 0.0);
+    glVertex3f(-0.75, -0.75, 0.0);
     glEnd();
     return;
   }
@@ -521,9 +525,9 @@ void draw_eye2(void) {
   /* draw wireeye */
   if(wire) {
     glBegin(GL_TRIANGLES);
-    glVertex3f(-0.25, -0.25, 0.0);
-    glVertex3f(0.25, -0.25, 0.0);
     glVertex3f(0.0, 0.25, 0.0);
+    glVertex3f(0.25, -0.25, 0.0);
+    glVertex3f(-0.25, -0.25, 0.0);
     glEnd();
     return;
   }
index 3ccaad3b8ca78ca376de3ded2b9f86d81a63af27..768e911a49c5c8b984c894b3d0331e86ccc455ec 100644 (file)
@@ -3,8 +3,14 @@
 providence - eye in glory screenhack
 .SH SYNOPSIS
 .B providence
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+[\-display \fIhost:display.screen\fP]
+[\-window]
+[\-root]
+ [\-install]
+[\-visual \fIvisual\fP]
+[\-delay \fImicroseconds\fP]
+[\-wireframe]
+[\-fps]
 .SH DESCRIPTION
 The \fIprovidence\fP code displays an eye, shrouded in glory, set upon the
 base of a pyramid.
@@ -27,6 +33,10 @@ Draw an eye/$.
 .B \-visual \fIvisual\fP\fP
 Specify which visual to use.  Legal values are the name of a visual class,
 or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-wireframe
+Render in wireframe (with hidden line removal) instead of as textured solids.
+.TP 8
 .B \-fps
 Display a running tally of how many frames per second are being rendered.
 In conjunction with \fB\-delay 0\fP, this can be a useful benchmark of 
index bcfcd380b15fffc0416dad8f4d3564ac2d7fcf35..c01c831c04c3af5f226381b9cc5c1bd0e83173d6 100644 (file)
@@ -3,8 +3,14 @@
 queens \- n queens screensaver
 .SH SYNOPSIS
 .B queens
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+[\-display \fIhost:display.screen\fP]
+[\-window]
+[\-root]
+[\-install]
+[\-visual \fIvisual\fP]
+[\-delay \fImicroseconds\fP]
+[\-wireframe]
+[\-fps]
 .SH DESCRIPTION
 The \fIqueens\fP program solves the n-queens problem (where, in this
 program, N is between 5 and 10 queens) using a straightforward
@@ -26,6 +32,9 @@ Install a private colormap for the window.
 .B \-visual \fIvisual\fP\fP
 Specify which visual to use.  Legal values are the name of a visual class,
 or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of solid.
 .B \-fps
 Display a running tally of how many frames per second are being rendered.
 In conjunction with \fB\-delay 0\fP, this can be a useful benchmark of 
index 5aba74f0ddffbdf2c46dbe072f9ba2d84191d819..07d644f7ad9f4e9036c9d2391e92acd3853ea7b9 100644 (file)
@@ -29,7 +29,7 @@ unit_sphere (int stacks, int slices, Bool wire)
   int i,j;
   double theta1, theta2, theta3;
   XYZ e, p;
-  XYZ la, lb;
+  XYZ la = { 0, 0, 0 }, lb = { 0, 0, 0 };
   XYZ c = {0, 0, 0};  /* center */
   double r = 1.0;     /* radius */
   int stacks2 = stacks * 2;
index 53a30faf73d85493a90a9223caf09258b7e93ebe..583360cdba1fe195db219298ca3be1d792db6c8f 100644 (file)
@@ -65,9 +65,8 @@ static const char sccsid[] = "@(#)stairs.c    4.07 97/11/24 xlockmore";
 # define HACK_DRAW                     draw_stairs
 # define HACK_RESHAPE          reshape_stairs
 # define stairs_opts           xlockmore_opts
-# define DEFAULTS                      "*delay:                20000   \n"                     \
-                                                       "*showFPS:      False   \n"                     \
-                                                       "*wireframe:    False   \n"
+# define DEFAULTS                      "*delay:                20000   \n" \
+                                                       "*showFPS:      False   \n"
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
 # include "xlock.h"                    /* from the xlockmore distribution */
diff --git a/hacks/glx/tangram.c b/hacks/glx/tangram.c
new file mode 100644 (file)
index 0000000..2c4e4db
--- /dev/null
@@ -0,0 +1,1248 @@
+/* tangram, Copyright (c) 2005 Jeremy English <jhe@jeremyenglish.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or
+ * implied warranty.
+ */
+
+
+#include <X11/Intrinsic.h>
+
+extern XtAppContext app;
+
+#define PROGCLASS        "TANGRAM"
+#define HACK_INIT        init_tangram
+#define HACK_DRAW        draw_tangram
+#define HACK_RESHAPE  reshape_tangram
+#define sws_opts         xlockmore_opts
+
+
+#define DEFAULTS       "*delay:        30000            \n" \
+                       "*wireframe:    False            \n" \
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+
+#include <ctype.h>
+
+
+#ifdef USE_GL                   /* whole file */
+
+
+#include <GL/glu.h>
+#include <time.h>
+#include <math.h>
+#include "tangram_shapes.h"
+
+typedef enum {
+    true = 1,
+    false = 0
+} bool;
+
+typedef struct {
+    GLubyte r;
+    GLubyte g;
+    GLubyte b;
+} color;
+
+typedef struct {
+    GLfloat x;
+    GLfloat y;
+    GLfloat z;
+} coord;
+
+typedef struct {
+    coord crd;                  /* coordinates */
+    GLint r;                    /* rotation */
+    GLint fr;                   /* flip Rotate. Used to keep track during animation */
+    GLint dl;                   /* display List */
+
+} tangram_shape;
+
+typedef enum {
+    no_shape = -1,
+    small_triangle1 = 0,
+    small_triangle2 = 1,
+    medium_triangle = 2,
+    large_triangle1 = 3,
+    large_triangle2 = 4,
+    square = 5,
+    rhomboid = 6
+} shape_type;
+
+typedef enum {
+    state_exploding,
+    state_solving,
+    state_solved
+} tangram_state;
+
+tangram_shape solved[][7] = {
+    {
+     {{-1.664000, -1.552000, 0}, 135, 0, 0},
+     {{-1.696000, 0.944000, 0}, 315, 0, 0},
+     {{0.064000, -2.128000, 0}, 135, 0, 0},
+     {{-0.960000, -1.056000, 0}, 90, 0, 0},
+     {{1.104000, 0.960000, 0}, 270, 0, 0},
+     {{-1.376000, -0.800000, 0}, 180, 0, 0},
+     {{1.152000, 0.736000, 0}, 360, 0, 0},
+     },
+    {
+     {{-0.096000, 1.552000, 0}, 135, 180, 0},
+     {{-0.064000, 2.336000, 0}, 315, 0, 0},
+     {{-0.080000, -0.224000, 0}, 135, 180, 0},
+     {{-2.096000, 1.584000, 0}, 90, 180, 0},
+     {{1.920000, 1.584000, 0}, 270, 0, 0},
+     {{0.416000, -0.192000, 0}, 180, 0, 0},
+     {{-0.096000, -1.296000, 0}, 335, 0, 0},
+     },
+    {
+     {{-0.144000, -0.720000, 0}, 225, 0, 0},
+     {{0.608000, 0.032000, 0}, 135, 0, 0},
+     {{-1.584000, 0.720000, 0}, 0, 0, 0},
+     {{-0.112000, -0.720000, 0}, 315, 0, 0},
+     {{-0.096000, -0.704000, 0}, 45, 0, 0},
+     {{0.592000, 0.016000, 0}, 225, 0, 0},
+     {{-0.880000, -0.032000, 0}, 315, 0, 0},
+     },
+    {
+     {{1.472000, 2.176000, 0}, 225, 0, 0},
+     {{1.248000, 3.488000, 0}, 270, 0, 0},
+     {{-0.752000, -1.680000, 0}, 270, 0, 0},
+     {{0.704000, -1.552000, 0}, 135, 0, 0},
+     {{1.280000, -0.080000, 0}, 180, 0, 0},
+     {{-0.016000, -0.896000, 0}, 225, 0, 0},
+     {{-0.000000, -0.944000, 0}, 315, 0, 0},
+     },
+    {
+     {{0.320000, 1.360000, 0}, 90, 0, 0},
+     {{0.704000, 3.072000, 0}, 270, 0, 0},
+     {{-1.200000, -3.392000, 0}, 135, 0, 0},
+     {{0.688000, -1.184000, 0}, 135, 0, 0},
+     {{-0.768000, 0.192000, 0}, 315, 0, 0},
+     {{-1.168000, -2.304000, 0}, 180, 0, 0},
+     {{1.312000, 1.296000, 0}, 270, 0, 0},
+     },
+    {
+     {{-2.064000, 0.848000, 0}, 65, 0, 0},
+     {{0.096000, 1.424000, 0}, 99, 180, 0},
+     {{2.016000, -2.448000, 0}, 270, 180, 0},
+     {{-2.016000, 0.368000, 0}, 315, 0, 0},
+     {{-0.560000, -1.040000, 0}, 135, 0, 0},
+     {{1.312000, -1.696000, 0}, 225, 0, 0},
+     {{0.864000, 0.336000, 0}, 180, 180, 0},
+     },
+    {
+     {{0.560000, -0.208000, 0}, 135, 0, 0},
+     {{0.336000, -1.552000, 0}, 90, 180, 0},
+     {{-2.336000, 1.248000, 0}, 90, 180, 0},
+     {{1.296000, -1.504000, 0}, 180, 0, 0},
+     {{-0.896000, 1.200000, 0}, 135, 180, 0},
+     {{0.304000, -2.544000, 0}, 180, 0, 0},
+     {{1.248000, 0.544000, 0}, 225, 0, 0},
+     },
+    {
+     {{-0.480000, -2.832000, 0}, 45, 0, 0},
+     {{-0.544000, -2.832000, 0}, 225, 180, 0},
+     {{-0.064000, -0.880000, 0}, 225, 180, 0},
+     {{-2.528000, 2.656000, 0}, 0, 0, 0},
+     {{-2.512000, 0.640000, 0}, 45, 180, 0},
+     {{0.192000, -2.096000, 0}, 225, 0, 0},
+     {{-0.064000, -0.832000, 0}, 180, 0, 0},
+     },
+    {
+     {{0.880000, -1.456000, 0}, 45, 0, 0},
+     {{0.832000, 0.592000, 0}, 180, 180, 0},
+     {{-2.016000, 1.648000, 0}, 135, 180, 0},
+     {{0.448000, 2.064000, 0}, 315, 0, 0},
+     {{-0.992000, 0.688000, 0}, 315, 180, 0},
+     {{1.856000, -0.400000, 0}, 180, 0, 0},
+     {{-0.128000, -1.424000, 0}, 90, 0, 0},
+     },
+    {
+     {{2.208000, 2.000000, 0}, 180, 0, 0},
+     {{-0.640000, 3.072000, 0}, 180, 180, 0},
+     {{1.360000, -3.312000, 0}, 180, 0, 0},
+     {{-0.592000, 2.256000, 0}, 360, 0, 0},
+     {{-0.960000, -0.160000, 0}, 45, 180, 0},
+     {{0.288000, -2.896000, 0}, 135, 0, 0},
+     {{0.496000, -0.128000, 0}, 135, 0, 0},
+     },
+    {
+     {{-0.480000, 0.864000, 0}, 58, 180, 0},
+     {{0.624000, -0.752000, 0}, 90, 180, 0},
+     {{0.576000, -0.560000, 0}, 180, 180, 0},
+     {{-0.192000, -1.264000, 0}, 225, 0, 0},
+     {{-0.176000, -1.280000, 0}, 135, 180, 0},
+     {{-0.816000, -0.528000, 0}, 123, 0, 0},
+     {{-0.416000, -0.528000, 0}, 90, 0, 0},
+     },
+    {
+     {{0.688000, -0.144000, 0}, 45, 180, 0},
+     {{-0.080000, 0.592000, 0}, 225, 0, 0},
+     {{-0.048000, 0.592000, 0}, 315, 180, 0},
+     {{-1.488000, -0.848000, 0}, 45, 0, 0},
+     {{1.376000, -0.864000, 0}, 225, 180, 0},
+     {{0.688000, -0.128000, 0}, 135, 0, 0},
+     {{-1.504000, -0.832000, 0}, 135, 0, 0},
+     },
+    {
+     {{0.624000, -1.776000, 0}, 225, 180, 0},
+     {{-0.144000, 0.432000, 0}, 225, 0, 0},
+     {{-0.800000, -0.272000, 0}, 45, 180, 0},
+     {{-2.320000, -0.304000, 0}, 45, 0, 0},
+     {{2.048000, -0.320000, 0}, 225, 180, 0},
+     {{-0.112000, 0.480000, 0}, 135, 0, 0},
+     {{-0.832000, -0.320000, 0}, 135, 180, 0},
+     },
+    {
+     {{-1.744000, -0.400000, 0}, 45, 180, 0},
+     {{0.416000, 1.776000, 0}, 315, 0, 0},
+     {{-1.008000, 0.272000, 0}, 90, 180, 0},
+     {{0.800000, 1.488000, 0}, 135, 0, 0},
+     {{0.832000, 1.440000, 0}, 45, 180, 0},
+     {{-1.744000, -1.872000, 0}, 135, 0, 0},
+     {{-1.008000, 0.320000, 0}, 45, 180, 0},
+     },
+    {
+     {{-0.720000, 3.440000, 0}, 180, 180, 0},
+     {{0.912000, -1.072000, 0}, 225, 0, 0},
+     {{0.736000, 3.440000, 0}, 180, 180, 0},
+     {{0.720000, 1.984000, 0}, 225, 0, 0},
+     {{-0.672000, 0.544000, 0}, 45, 180, 0},
+     {{-0.192000, -3.840000, 0}, 135, 0, 0},
+     {{-0.528000, -2.480000, 0}, 135, 0, 0},
+     },
+    {
+     {{1.184000, 1.904000, 0}, 90, 180, 0},
+     {{-2.256000, 0.960000, 0}, 90, 0, 0},
+     {{-0.208000, -0.528000, 0}, 45, 180, 0},
+     {{-0.256000, -0.512000, 0}, 135, 0, 0},
+     {{0.144000, -0.944000, 0}, 135, 180, 0},
+     {{-0.608000, -3.648000, 0}, 105, 0, 0},
+     {{0.832000, -0.912000, 0}, 135, 0, 0},
+     },
+    {
+     {{-1.056000, -2.272000, 0}, 90, 0, 0},
+     {{0.960000, -1.264000, 0}, 180, 0, 0},
+     {{-0.000000, -2.288000, 0}, 135, 0, 0},
+     {{-1.088000, -2.256000, 0}, 180, 0, 0},
+     {{0.992000, 0.736000, 0}, 0, 0, 0},
+     {{0.960000, -0.256000, 0}, 180, 0, 0},
+     {{-0.064000, 0.752000, 0}, 180, 180, 0},
+     },
+    {
+     {{-1.360000, -0.224000, 0}, 0, 0, 0},
+     {{-0.336000, -0.176000, 0}, 90, 0, 0},
+     {{0.688000, -0.192000, 0}, 45, 0, 0},
+     {{-1.424000, -1.168000, 0}, 180, 0, 0},
+     {{1.744000, 0.816000, 0}, 0, 0, 0},
+     {{-0.384000, -0.176000, 0}, 180, 0, 0},
+     {{1.648000, -1.216000, 0}, 270, 180, 0},
+     },
+    {
+     {{2.112000, 1.504000, 0}, 0, 0, 0},
+     {{-1.040000, 1.472000, 0}, 180, 180, 0},
+     {{0.032000, -1.600000, 0}, 135, 0, 0},
+     {{1.056000, 1.504000, 0}, 270, 0, 0},
+     {{-0.992000, -0.528000, 0}, 0, 180, 0},
+     {{2.080000, 0.512000, 0}, 180, 0, 0},
+     {{-1.104000, 0.480000, 0}, 270, 180, 0},
+     },
+    {
+     {{0.608000, 1.184000, 0}, 135, 0, 0},
+     {{-2.928000, -1.584000, 0}, 135, 0, 0},
+     {{0.688000, 0.560000, 0}, 90, 180, 0},
+     {{0.640000, -0.832000, 0}, 180, 0, 0},
+     {{-0.752000, -2.304000, 0}, 315, 180, 0},
+     {{-2.192000, -0.912000, 0}, 315, 0, 0},
+     {{2.704000, 1.616000, 0}, 270, 0, 0},
+     },
+    {
+     {{0.880000, 0.960000, 0}, 45, 0, 0},
+     {{0.832000, -0.960000, 0}, 0, 0, 0},
+     {{1.536000, 1.712000, 0}, 225, 180, 0},
+     {{-0.992000, 2.096000, 0}, 315, 0, 0},
+     {{0.480000, 2.704000, 0}, 180, 180, 0},
+     {{0.816000, 0.912000, 0}, 315, 0, 0},
+     {{0.784000, -1.952000, 0}, 315, 180, 0},
+     },
+    {
+     {{0.176000, 3.584000, 0}, 270, 0, 0},
+     {{2.016000, -1.424000, 0}, 90, 0, 0},
+     {{2.496000, 0.608000, 0}, 180, 180, 0},
+     {{-0.304000, 0.496000, 0}, 270, 0, 0},
+     {{-0.256000, -0.144000, 0}, 0, 180, 0},
+     {{-1.600000, -0.368000, 0}, 303, 0, 0},
+     {{0.768000, 0.912000, 0}, 180, 0, 0},
+     },
+    {
+     {{-2.096000, 1.696000, 0}, 315, 0, 0},
+     {{-1.632000, -1.440000, 0}, 45, 0, 0},
+     {{-1.232000, -0.064000, 0}, 315, 180, 0},
+     {{0.304000, 2.416000, 0}, 315, 0, 0},
+     {{1.776000, -0.496000, 0}, 315, 180, 0},
+     {{1.168000, -0.240000, 0}, 332, 0, 0},
+     {{-0.880000, -1.216000, 0}, 135, 0, 0},
+     },
+    {
+     {{-0.432000, -0.496000, 0}, 259, 0, 0},
+     {{0.176000, -1.488000, 0}, 105, 0, 0},
+     {{1.184000, -1.168000, 0}, 300, 180, 0},
+     {{1.824000, 0.096000, 0}, 195, 0, 0},
+     {{-2.400000, -0.048000, 0}, 11, 180, 0},
+     {{-0.240000, -1.200000, 0}, 315, 0, 0},
+     {{-0.688000, -1.488000, 0}, 281, 180, 0},
+     },
+    {
+     {{0.096000, 2.000000, 0}, 315, 0, 0},
+     {{0.432000, 0.160000, 0}, 360, 0, 0},
+     {{0.208000, -1.504000, 0}, 220, 180, 0},
+     {{-1.104000, -0.336000, 0}, 50, 0, 0},
+     {{-1.136000, -0.288000, 0}, 310, 180, 0},
+     {{0.416000, 1.232000, 0}, 360, 0, 0},
+     {{0.048000, 2.016000, 0}, 225, 180, 0},
+     },
+    {
+     {{-2.128000, 2.112000, 0}, 45, 0, 0},
+     {{0.128000, 1.856000, 0}, 360, 0, 0},
+     {{2.128000, -0.720000, 0}, 180, 180, 0},
+     {{-1.376000, 2.816000, 0}, 360, 0, 0},
+     {{-1.360000, 0.768000, 0}, 45, 180, 0},
+     {{0.128000, 0.336000, 0}, 360, 0, 0},
+     {{0.432000, -2.944000, 0}, 149, 0, 0},
+     },
+    {
+     {{1.952000, -0.800000, 0}, 225, 0, 0},
+     {{2.064000, -0.816000, 0}, 45, 0, 0},
+     {{0.928000, 0.688000, 0}, 225, 0, 0},
+     {{-1.568000, 3.152000, 0}, 0, 0, 0},
+     {{-1.520000, 1.104000, 0}, 45, 0, 0},
+     {{2.720000, -0.064000, 0}, 225, 0, 0},
+     {{1.968000, 0.672000, 0}, 270, 0, 0},
+     },
+    {
+     {{2.480000, -0.912000, 0}, 225, 0, 0},
+     {{2.592000, -0.928000, 0}, 45, 0, 0},
+     {{0.352000, 1.280000, 0}, 315, 0, 0},
+     {{-0.688000, 0.336000, 0}, 135, 0, 0},
+     {{1.808000, -0.112000, 0}, 135, 0, 0},
+     {{3.248000, -0.176000, 0}, 225, 0, 0},
+     {{-1.472000, 1.024000, 0}, 225, 0, 0},
+     },
+    {
+     {{-0.400000, -1.232000, 0}, 270, 0, 0},
+     {{0.400000, -0.640000, 0}, 270, 0, 0},
+     {{1.904000, -3.232000, 0}, 180, 0, 0},
+     {{1.872000, -1.776000, 0}, 225, 0, 0},
+     {{1.552000, 0.656000, 0}, 270, 0, 0},
+     {{1.056000, 1.760000, 0}, 270, 0, 0},
+     {{-0.320000, -1.024000, 0}, 135, 180, 0},
+     },
+    {
+     {{0.896000, -0.480000, 0}, 0, 0, 0},
+     {{0.128000, -0.720000, 0}, 45, 0, 0},
+     {{0.960000, -1.728000, 0}, 270, 0, 0},
+     {{-1.040000, -1.648000, 0}, 90, 0, 0},
+     {{-0.848000, 2.304000, 0}, 0, 0, 0},
+     {{-0.096000, 0.944000, 0}, 315, 0, 0},
+     {{-1.568000, -1.728000, 0}, 90, 180, 0},
+     },
+    {
+     {{0.416000, 3.648000, 0}, 270, 0, 0},
+     {{-0.000000, -1.072000, 0}, 331, 0, 0},
+     {{1.360000, 0.528000, 0}, 180, 0, 0},
+     {{0.880000, 0.464000, 0}, 270, 0, 0},
+     {{0.576000, -3.184000, 0}, 151, 0, 0},
+     {{0.864000, 2.576000, 0}, 270, 0, 0},
+     {{-1.120000, 0.528000, 0}, 90, 0, 0},
+     },
+    {
+     {{-1.056000, -3.456000, 0}, 90, 0, 0},
+     {{0.736000, 2.000000, 0}, 135, 0, 0},
+     {{-1.488000, 1.760000, 0}, 45, 0, 0},
+     {{-0.432000, 0.016000, 0}, 0, 180, 0},
+     {{-0.432000, -0.064000, 0}, 0, 0, 0},
+     {{0.560000, -2.576000, 0}, 225, 0, 0},
+     {{0.032000, 2.656000, 0}, 0, 0, 0},
+     },
+    {
+     {{-2.800000, -2.304000, 0}, 101, 0, 0},
+     {{1.888000, 2.032000, 0}, 135, 180, 0},
+     {{-1.856000, 2.016000, 0}, 315, 0, 0},
+     {{0.352000, -0.144000, 0}, 315, 180, 0},
+     {{-2.848000, 0.976000, 0}, 0, 0, 0},
+     {{-1.424000, -1.104000, 0}, 236, 0, 0},
+     {{-1.792000, 2.016000, 0}, 45, 0, 0},
+     },
+    {
+     {{0.864000, 0.880000, 0}, 180, 0, 0},
+     {{0.912000, -2.288000, 0}, 180, 180, 0},
+     {{-1.136000, -0.144000, 0}, 45, 0, 0},
+     {{-1.136000, -3.312000, 0}, 360, 180, 0},
+     {{-1.168000, 1.920000, 0}, 0, 0, 0},
+     {{-1.184000, -1.248000, 0}, 180, 0, 0},
+     {{-1.136000, -0.224000, 0}, 0, 0, 0},
+     },
+    {
+     {{0.592000, 0.704000, 0}, 90, 0, 0},
+     {{0.576000, -2.496000, 0}, 90, 180, 0},
+     {{2.624000, -1.440000, 0}, 225, 0, 0},
+     {{2.640000, -3.504000, 0}, 270, 180, 0},
+     {{2.656000, 1.712000, 0}, 270, 0, 0},
+     {{0.544000, 0.704000, 0}, 180, 0, 0},
+     {{1.648000, 0.640000, 0}, 0, 0, 0},
+     },
+    {
+     {{0.448000, -3.344000, 0}, 90, 0, 0},
+     {{-1.616000, 1.984000, 0}, 90, 180, 0},
+     {{-1.584000, 0.928000, 0}, 45, 0, 0},
+     {{-1.600000, -2.288000, 0}, 0, 180, 0},
+     {{1.536000, -1.328000, 0}, 270, 0, 0},
+     {{2.592000, -3.328000, 0}, 180, 0, 0},
+     {{-1.600000, 0.832000, 0}, 0, 0, 0},
+     },
+    {
+     {{0.608000, 0.880000, 0}, 180, 0, 0},
+     {{0.576000, -2.304000, 0}, 180, 180, 0},
+     {{-1.456000, -0.176000, 0}, 45, 0, 0},
+     {{-1.472000, -3.344000, 0}, 0, 180, 0},
+     {{-1.472000, 1.888000, 0}, 0, 0, 0},
+     {{0.640000, -1.168000, 0}, 180, 0, 0},
+     {{-1.456000, -0.256000, 0}, 0, 0, 0},
+     },
+    {
+     {{-0.208000, -0.352000, 0}, 225, 0, 0},
+     {{0.528000, 1.856000, 0}, 225, 180, 0},
+     {{-0.176000, -3.904000, 0}, 135, 0, 0},
+     {{-0.880000, 0.384000, 0}, 45, 180, 0},
+     {{-0.192000, -0.384000, 0}, 315, 0, 0},
+     {{0.304000, -2.864000, 0}, 180, 0, 0},
+     {{-0.224000, 2.528000, 0}, 315, 0, 0},
+     },
+    {
+     {{-0.032000, 0.704000, 0}, 315, 0, 0},
+     {{2.208000, -1.504000, 0}, 225, 180, 0},
+     {{-0.720000, -0.064000, 0}, 0, 0, 0},
+     {{-0.720000, -1.536000, 0}, 45, 180, 0},
+     {{-0.016000, 1.744000, 0}, 315, 180, 0},
+     {{0.464000, 0.736000, 0}, 180, 0, 0},
+     {{1.456000, -0.816000, 0}, 315, 0, 0},
+     },
+    {
+     {{-0.944000, 1.040000, 0}, 360, 0, 0},
+     {{1.120000, 0.000000, 0}, 180, 180, 0},
+     {{0.080000, -0.048000, 0}, 315, 0, 0},
+     {{0.080000, -1.104000, 0}, 135, 180, 0},
+     {{0.080000, 1.120000, 0}, 315, 180, 0},
+     {{1.120000, 0.048000, 0}, 180, 0, 0},
+     {{0.064000, 0.992000, 0}, 180, 180, 0},
+     },
+    {
+     {{-0.688000, 0.784000, 0}, 135, 0, 0},
+     {{0.800000, 0.784000, 0}, 135, 0, 0},
+     {{0.512000, -2.512000, 0}, 315, 0, 0},
+     {{1.488000, 0.000000, 0}, 225, 0, 0},
+     {{-1.392000, 0.000000, 0}, 45, 0, 0},
+     {{0.496000, -2.432000, 0}, 180, 0, 0},
+     {{0.480000, -2.496000, 0}, 270, 0, 0},
+     },
+    {
+     {{-0.992000, -2.160000, 0}, 90, 0, 0},
+     {{-1.040000, -1.152000, 0}, 270, 0, 0},
+     {{0.064000, -2.144000, 0}, 135, 0, 0},
+     {{0.080000, -1.088000, 0}, 90, 0, 0},
+     {{0.032000, -1.072000, 0}, 180, 0, 0},
+     {{0.544000, -3.216000, 0}, 180, 0, 0},
+     {{2.160000, -1.136000, 0}, 270, 0, 0},
+     },
+    {
+     {{-2.896000, -0.128000, 0}, 45, 0, 0},
+     {{-0.800000, 0.992000, 0}, 135, 0, 0},
+     {{-1.152000, -0.416000, 0}, 225, 0, 0},
+     {{-0.016000, 0.656000, 0}, 315, 0, 0},
+     {{1.456000, -0.736000, 0}, 135, 0, 0},
+     {{2.864000, 0.736000, 0}, 180, 0, 0},
+     {{-0.048000, 1.664000, 0}, 180, 180, 0},
+     },
+    {
+     {{2.960000, -1.376000, 0}, 270, 0, 0},
+     {{1.952000, -1.312000, 0}, 90, 0, 0},
+     {{-0.096000, 0.720000, 0}, 315, 0, 0},
+     {{-2.112000, -0.320000, 0}, 90, 180, 0},
+     {{1.904000, -0.320000, 0}, 180, 180, 0},
+     {{-0.096000, -1.776000, 0}, 135, 0, 0},
+     {{-3.168000, -2.304000, 0}, 360, 180, 0},
+     },
+    {
+     {{-1.600000, -1.232000, 0}, 270, 0, 0},
+     {{-1.600000, -0.128000, 0}, 180, 0, 0},
+     {{2.272000, -0.128000, 0}, 225, 0, 0},
+     {{-0.160000, -3.648000, 0}, 315, 180, 0},
+     {{-0.176000, 2.336000, 0}, 135, 180, 0},
+     {{-2.608000, -1.184000, 0}, 90, 0, 0},
+     {{1.280000, -2.208000, 0}, 360, 180, 0}
+     }
+};
+
+
+/* Dream */
+color palette[] = {
+    {22, 26, 28},
+    {122, 142, 139},
+    {72, 82, 76},
+    {94, 115, 108},
+    {194, 202, 195},
+    {165, 175, 171},
+    {132, 117, 107},
+    {49, 54, 48},
+    {111, 84, 78},
+    {155, 144, 137},
+    {82, 99, 100},
+    {87, 57, 52},
+    {131, 132, 125},
+    {110, 130, 125},
+    {62, 70, 68},
+    {156, 160, 153},
+    {182, 190, 184},
+    {112, 116, 111},
+    {56, 37, 35},
+    {226, 230, 226},
+    {146, 158, 154},
+    {111, 101, 91},
+    {96, 99, 96},
+    {158, 130, 115},
+    {147, 117, 105},
+    {90, 85, 83},
+    {112, 124, 121},
+    {140, 144, 136},
+    {176, 162, 156},
+    {69, 56, 52},
+    {183, 177, 169},
+    {34, 38, 33},
+    {213, 219, 212},
+    {96, 108, 107},
+    {143, 132, 121},
+    {159, 166, 156},
+    {132, 124, 113},
+    {141, 151, 149},
+    {132, 100, 94},
+    {75, 73, 68},
+    {57, 62, 57},
+    {78, 90, 83},
+    {210, 205, 207},
+    {155, 152, 143},
+    {42, 47, 40},
+    {94, 70, 64},
+    {195, 193, 188},
+    {124, 116, 106},
+    {123, 124, 117},
+    {173, 182, 172},
+    {133, 138, 135},
+    {183, 185, 178},
+    {120, 130, 120},
+    {96, 100, 110},
+    {127, 88, 78},
+    {166, 161, 154},
+    {91, 92, 98},
+    {132, 124, 136},
+    {101, 122, 117},
+    {112, 108, 99},
+    {140, 144, 151},
+    {98, 109, 116},
+    {58, 58, 51},
+    {84, 84, 82},
+    {132, 132, 142},
+    {112, 116, 127},
+    {58, 48, 48},
+    {66, 66, 58},
+    {205, 210, 205},
+    {70, 78, 80},
+    {246, 246, 244},
+    {167, 168, 159},
+    {147, 152, 145},
+    {166, 154, 148},
+    {107, 73, 67},
+    {175, 177, 168},
+    {132, 117, 126},
+    {86, 106, 101},
+    {78, 78, 75},
+    {123, 138, 135},
+    {112, 92, 83},
+    {143, 138, 127},
+    {133, 109, 95},
+    {38, 34, 44},
+    {150, 134, 147},
+    {147, 123, 115},
+    {46, 48, 54},
+    {195, 198, 195},
+    {194, 186, 188},
+    {122, 110, 100},
+    {105, 116, 106},
+    {42, 42, 42},
+    {223, 221, 220},
+    {68, 71, 65},
+    {156, 160, 164},
+    {114, 124, 132},
+    {155, 152, 163},
+    {103, 94, 89},
+    {58, 63, 70},
+    {132, 143, 137},
+    {168, 143, 128},
+    {190, 198, 190},
+    {239, 237, 237},
+    {103, 101, 94},
+    {84, 90, 84},
+    {211, 213, 210},
+    {183, 185, 188},
+    {94, 94, 108},
+    {203, 204, 196},
+    {123, 125, 135},
+    {120, 132, 133},
+    {111, 110, 125},
+    {28, 32, 28},
+    {53, 56, 62},
+    {88, 63, 59},
+    {104, 108, 103},
+    {140, 124, 115},
+    {147, 126, 137},
+    {155, 144, 157},
+    {87, 98, 92},
+    {188, 192, 189},
+    {162, 133, 115},
+    {148, 144, 134},
+    {175, 169, 162},
+    {138, 131, 120},
+    {118, 124, 118},
+    {139, 125, 135},
+    {148, 144, 154},
+    {72, 47, 44},
+    {100, 72, 66},
+    {66, 42, 39},
+    {105, 84, 73},
+    {86, 78, 82},
+    {234, 238, 236},
+    {108, 78, 73},
+    {130, 110, 121},
+    {134, 150, 146},
+    {254, 254, 252},
+    {151, 138, 130},
+    {125, 99, 88},
+    {80, 56, 52},
+    {98, 63, 60},
+    {114, 138, 132},
+    {61, 42, 37},
+    {150, 166, 164},
+    {127, 94, 87},
+    {225, 226, 223},
+    {64, 47, 44},
+    {218, 226, 220},
+    {242, 242, 242},
+    {150, 138, 150},
+    {166, 138, 122},
+    {102, 78, 71},
+    {124, 118, 131},
+    {74, 65, 66},
+    {49, 33, 28},
+    {182, 170, 175},
+    {139, 117, 107},
+    {120, 84, 76},
+    {232, 232, 231},
+    {46, 50, 41},
+    {102, 102, 115},
+    {104, 108, 119},
+    {140, 118, 123},
+    {120, 92, 84},
+    {139, 108, 97},
+    {156, 125, 107},
+    {218, 214, 215},
+    {144, 133, 143},
+    {168, 161, 172},
+    {58, 58, 68},
+    {167, 169, 173},
+    {148, 152, 158},
+    {175, 177, 180},
+    {67, 73, 77},
+    {134, 143, 148},
+    {79, 50, 45},
+    {74, 83, 86},
+    {150, 134, 124},
+    {90, 86, 95},
+    {184, 176, 186},
+    {38, 39, 45},
+    {160, 168, 166},
+    {78, 73, 78},
+    {195, 193, 196},
+    {177, 184, 181},
+    {43, 41, 52},
+    {32, 33, 39},
+    {135, 138, 148},
+    {203, 198, 201},
+    {26, 26, 28},
+    {98, 116, 113},
+    {198, 202, 199},
+    {170, 176, 172},
+    {54, 57, 48},
+    {162, 146, 140},
+    {114, 131, 130},
+    {162, 160, 150},
+    {118, 116, 108},
+    {150, 159, 156},
+    {118, 99, 84},
+    {74, 54, 51},
+    {138, 102, 100},
+    {62, 64, 55},
+    {162, 154, 146},
+    {190, 185, 179},
+    {98, 94, 94},
+    {106, 124, 121},
+    {118, 110, 100},
+    {118, 117, 131},
+    {50, 50, 60},
+    {162, 152, 164},
+    {94, 63, 58},
+    {62, 70, 77},
+    {174, 162, 172},
+    {78, 91, 92},
+    {85, 85, 93},
+    {54, 50, 61},
+    {67, 66, 74},
+    {166, 154, 167},
+    {126, 109, 119},
+    {104, 116, 118},
+    {83, 92, 95},
+    {203, 205, 204},
+    {88, 100, 101},
+    {176, 169, 179},
+    {145, 138, 148},
+    {116, 78, 68},
+    {78, 78, 84},
+    {126, 142, 137},
+    {78, 83, 76},
+    {94, 58, 52},
+    {62, 38, 36},
+    {98, 86, 76},
+    {38, 42, 34},
+    {218, 220, 217},
+    {82, 70, 60},
+    {202, 194, 188},
+    {178, 183, 172},
+    {126, 131, 120},
+    {138, 132, 143},
+    {250, 250, 250},
+    {114, 74, 68},
+    {90, 108, 106},
+    {50, 38, 36},
+    {162, 161, 168},
+    {118, 124, 132},
+    {62, 65, 71},
+    {190, 185, 193},
+    {98, 94, 109},
+    {126, 132, 138},
+    {34, 34, 28},
+    {162, 146, 163},
+    {78, 85, 88},
+    {158, 134, 124},
+    {190, 178, 188}
+};
+
+static tangram_shape tsm1 = { {-0.144, -0.72, 0}, 225, false, 0 };
+static tangram_shape tsm2 = { {0.608, 0.032, 0}, 135, false, 0 };
+static tangram_shape tm = { {-1.584, 0.72, 0}, 0, false, 0 };
+static tangram_shape tlg1 = { {-0.112, -0.72, 0}, 315, false, 0 };
+static tangram_shape tlg2 = { {-0.096, -0.704, 0}, 45, false, 0 };
+static tangram_shape sq = { {0.592, 0.016, 0}, 225, false, 0 };
+static tangram_shape rh = { {-0.88, -0.032, 0}, 315, false, 0 };
+
+
+#define DEF_VIEWING_TIME "5"
+static GLuint viewing_time = 0;
+
+static XrmOptionDescRec opts[] = {
+    {"-viewing_time", ".viewing_time", XrmoptionSepArg, 0}
+};
+
+static argtype vars[] = {
+    {&viewing_time, "viewing_time", "Viewing Time", DEF_VIEWING_TIME, t_Int}
+};
+
+ModeSpecOpt sws_opts = { countof(opts), opts, countof(vars), vars, NULL };
+
+static int wire;
+static int csi = -1;            /* Current Shape index */
+
+static void get_solved_puzzle(tangram_shape * tsm1, tangram_shape * tsm2,
+                              tangram_shape * tm, tangram_shape * tlg1,
+                              tangram_shape * tlg2, tangram_shape * sq,
+                              tangram_shape * rh)
+{
+    int sz = sizeof(solved) / sizeof(solved[0]);
+    int r;
+    GLuint t_dl;
+
+    do {
+        r = random() % sz;
+    } while (r == csi);
+    csi = r;
+
+    t_dl = tsm1->dl;
+    *tsm1 = solved[r][small_triangle1];
+    tsm1->dl = t_dl;
+
+    t_dl = tsm2->dl;
+    *tsm2 = solved[r][small_triangle2];
+    tsm2->dl = t_dl;
+
+    t_dl = tm->dl;
+    *tm = solved[r][medium_triangle];
+    tm->dl = t_dl;
+
+    t_dl = tlg1->dl;
+    *tlg1 = solved[r][large_triangle1];
+    tlg1->dl = t_dl;
+
+    t_dl = tlg2->dl;
+    *tlg2 = solved[r][large_triangle2];
+    tlg2->dl = t_dl;
+
+    t_dl = sq->dl;
+    *sq = solved[r][square];
+    sq->dl = t_dl;
+
+    t_dl = rh->dl;
+    *rh = solved[r][rhomboid];
+    rh->dl = t_dl;
+
+}
+
+static bool colors_match(color c1, color c2)
+{
+    bool res = false;
+    if (c1.r == c2.r && c1.g == c2.g && c1.b == c2.b)
+        res = true;
+    return res;
+}
+
+static color rand_palette(void)
+{
+    int l = sizeof(palette) / sizeof(color);
+    int r = random() % l;
+    return palette[r];
+}
+
+static int approach_number(int goal, int current, int step)
+{
+
+    int i = 0;
+
+    if (goal > current) {
+        while (i < step) {
+            current++;
+            if (goal <= current)
+                break;
+            i++;
+        }
+    } else if (goal < current) {
+        while (i < step) {
+            current--;
+            if (goal >= current)
+                break;
+            i++;
+        }
+    }
+
+    return current;
+}
+
+/* gt - floating point greater than comparison */
+static bool gt(GLfloat x1, GLfloat x2, GLfloat per)
+{
+    if ((x1 > x2) && (fabs(x1 - x2) > per))
+        return true;
+    else
+        return false;
+}
+
+/* lt - floating point less than comparison */
+static bool lt(GLfloat x1, GLfloat x2, GLfloat per)
+{
+    if ((x1 < x2) && (fabs(x1 - x2) > per))
+        return true;
+    else
+        return false;
+}
+
+/* eq - Check the equality of a pair of floating point numbers to a certain perscision */
+static bool eq(GLfloat x1, GLfloat x2, GLfloat per)
+{
+    if (fabs(x1 - x2) < per)
+        return true;
+    else
+        return false;
+}
+
+
+static GLfloat approach_float(GLfloat goal, GLfloat current,
+                              bool * changed, GLfloat per)
+{
+    *changed = false;
+    if (gt(goal, current, per)) {
+        current += per;
+        *changed = true;
+    } else if (lt(goal, current, per)) {
+        current -= per;
+        *changed = true;
+    }
+    return current;
+}
+
+static bool coords_match(coord c1, coord c2, GLfloat per)
+{
+    if (eq(c1.x, c2.x, per) && eq(c1.y, c2.y, per) && eq(c1.z, c2.z, per))
+        return true;
+    else
+        return false;
+}
+
+static bool xy_coords_match(coord c1, coord c2, GLfloat per)
+{
+    if (eq(c1.x, c2.x, per) && eq(c1.y, c2.y, per))
+        return true;
+    else
+        return false;
+}
+
+
+#if 0
+static void print_shape(char *s, tangram_shape sh)
+{
+    fprintf(stderr, "%s\n", s);
+    fprintf(stderr, "(%f, %f, %f)\n", sh.crd.x, sh.crd.y, sh.crd.z);
+    fprintf(stderr, "%d\n", sh.r);
+    fprintf(stderr, "%d\n", sh.fr);
+    fprintf(stderr, "\n");
+}
+#endif
+
+/* approach_shape - bring use on step closer to the new shape */
+static tangram_shape approach_shape(tangram_shape old, tangram_shape new,
+                                    bool * b, char *name)
+{
+
+    GLuint dl;
+    bool changed;
+    *b = false;
+
+    old.fr = approach_number(new.fr, old.fr, 2);
+    if (old.fr != new.fr) {
+        return old;
+    }
+
+    old.r = approach_number(new.r, old.r, 2);
+    if (old.r != new.r) {
+        return old;
+    }
+
+    old.crd.x = approach_float(new.crd.x, old.crd.x, &changed, 0.1);
+    if (!changed)
+        old.crd.x = approach_float(new.crd.x, old.crd.x, &changed, 0.01);
+    if (!changed)
+        old.crd.x = approach_float(new.crd.x, old.crd.x, &changed, 0.001);
+    if (!changed)
+        old.crd.x = approach_float(new.crd.x, old.crd.x, &changed, 0.0001);
+
+    old.crd.y = approach_float(new.crd.y, old.crd.y, &changed, 0.1);
+    if (!changed)
+        old.crd.y = approach_float(new.crd.y, old.crd.y, &changed, 0.01);
+    if (!changed)
+        old.crd.y = approach_float(new.crd.y, old.crd.y, &changed, 0.001);
+    if (!changed)
+        old.crd.y = approach_float(new.crd.y, old.crd.y, &changed, 0.0001);
+
+    if (xy_coords_match(new.crd, old.crd, 0.0001)) {
+        old.crd.z = approach_float(new.crd.z, old.crd.z, &changed, 0.1);
+        if (!changed)
+            old.crd.z =
+                approach_float(new.crd.z, old.crd.z, &changed, 0.01);
+        if (!changed)
+            old.crd.z =
+                approach_float(new.crd.z, old.crd.z, &changed, 0.001);
+        if (!changed)
+            old.crd.z =
+                approach_float(new.crd.z, old.crd.z, &changed, 0.0001);
+    }
+
+
+    if (coords_match(new.crd, old.crd, 0.0001)) {
+        dl = old.dl;
+#if 0
+        fprintf(stderr, "%s\n", name);
+        print_shape("old", old);
+        print_shape("new", new);
+#endif
+        old = new;              /* pick up the rest of the settings; */
+        old.dl = dl;
+        *b = true;
+    }
+
+    return old;
+}
+
+static color get_color(void)
+{
+    static color new_color = { 100, 100, 100 };
+    static color old_color = { 100, 100, 100 };
+
+    if (colors_match(old_color, new_color)) {
+        old_color = new_color;
+        new_color = rand_palette();
+    }
+
+    if ((random() % 10) == 0) { /* slow down the cycle */
+        old_color.r = approach_number(new_color.r, old_color.r, 1);
+        old_color.g = approach_number(new_color.g, old_color.g, 1);
+        old_color.b = approach_number(new_color.b, old_color.b, 1);
+    }
+
+    return old_color;
+}
+
+static void explode(tangram_shape * tsm1, tangram_shape * tsm2,
+                    tangram_shape * tm, tangram_shape * tlg1,
+                    tangram_shape * tlg2, tangram_shape * sq,
+                    tangram_shape * rh)
+{
+    tsm1->crd.z = 1;
+    tsm1->r = 0;
+    tsm2->crd.z = -1;
+    tsm2->r = 0;
+    tm->crd.z = 2;
+    tm->r = 0;
+    tlg1->crd.z = -2;
+    tlg1->r = 0;
+    tlg2->crd.z = 3;
+    tlg2->r = 0;
+    sq->crd.z = -3;
+    sq->r = 0;
+    rh->crd.z = 4;
+    rh->r = 0;
+}
+
+
+static void draw_tangram_shape(tangram_shape ts)
+{
+    glPushMatrix();
+
+    glTranslatef(ts.crd.x, ts.crd.y, ts.crd.z);
+    glRotated(90, 1, 0, 0);
+    glRotated(ts.fr, 1, 0, 0);
+    glRotated(ts.r, 0, 1, 0);
+    glCallList(ts.dl);
+    glPopMatrix();
+}
+
+static void draw_shapes(void)
+{
+
+    if (!wire) {
+        color c = get_color();
+        glColor3ub(c.r, c.g, c.b);
+    }
+
+    draw_tangram_shape(tsm1);
+
+    draw_tangram_shape(tsm2);
+    draw_tangram_shape(tm);
+    draw_tangram_shape(tlg1);
+    draw_tangram_shape(tlg2);
+    draw_tangram_shape(sq);
+    draw_tangram_shape(rh);
+
+
+}
+static void set_perspective(void)
+{
+    glPushMatrix();
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    gluPerspective(60, -1, 0.1, 50);
+    gluLookAt(0, 5, -5, 0, 0, 0, 0, -1, 0);
+    glMatrixMode(GL_MODELVIEW);
+    glPopMatrix();
+
+}
+
+void reshape_tangram(ModeInfo * mi, int w, int h)
+{
+    glViewport(0, 0, w, h);
+    set_perspective();
+    glLoadIdentity();
+}
+
+static void rotate_camera(void)
+{
+    static GLfloat theta[3] = { 1, 1, 1 };
+    static bool going_down[3] = { false, false, false };
+
+
+    glPushMatrix();
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    gluPerspective(60, -1, 0.1, 50);
+
+
+    gluLookAt(0, 5, -5, 0, 0, 0, 0, -1, 0);
+
+    glRotatef(theta[0], 1, 0, 0);
+    glRotatef(theta[1], 0, 1, 0);
+    glRotatef(theta[2], 0, 0, 1);
+
+    glMatrixMode(GL_MODELVIEW);
+    glPopMatrix();
+
+
+    if (going_down[0] && theta[0] < 0) {
+
+        going_down[0] = false;
+    } else if ((!going_down[0]) && theta[0] > 90) {
+
+        going_down[0] = true;
+    }
+
+    if (theta[1] > 360.0)
+        theta[1] -= 360.0;
+
+    if (going_down[0])
+        theta[0] -= 0.5;
+    else
+        theta[0] += 0.5;
+    theta[1] += 1;
+}
+
+static void init_shapes(void)
+{
+    get_solved_puzzle(&tsm1, &tsm2, &tm, &tlg1, &tlg2, &sq, &rh);
+    tsm1.dl = get_sm_tri_dl(wire);
+    tsm2.dl = get_sm_tri_dl(wire);
+    tm.dl = get_md_tri_dl(wire);
+    tlg1.dl = get_lg_tri_dl(wire);
+    tlg2.dl = get_lg_tri_dl(wire);
+    sq.dl = get_square_dl(wire);
+    rh.dl = get_rhomboid_dl(wire);
+}
+
+void init_tangram(ModeInfo * mi)
+{
+    GLfloat pos[4] = { 1, 1, -5, 1.00 };
+    GLfloat pos2[4] = { 1, 1, 5, 1.00 };
+    GLfloat lKa[4] = { 0, 0, 0, 1 };
+    GLfloat lKd[4] = { 1, 1, 1, 1 };
+    GLfloat lKs[4] = { 1, 1, 1, 1 };
+
+    wire = MI_IS_WIREFRAME(mi);
+    init_GL(mi);
+
+    if (!wire) {
+        glLightfv(GL_LIGHT0, GL_POSITION, pos);
+        glLightfv(GL_LIGHT0, GL_AMBIENT, lKa);
+        glLightfv(GL_LIGHT0, GL_DIFFUSE, lKd);
+        glLightfv(GL_LIGHT0, GL_SPECULAR, lKs);
+
+        glLightfv(GL_LIGHT1, GL_POSITION, pos2);
+        glLightfv(GL_LIGHT1, GL_AMBIENT, lKa);
+        glLightfv(GL_LIGHT1, GL_DIFFUSE, lKd);
+        glLightfv(GL_LIGHT1, GL_SPECULAR, lKs);
+
+        glEnable(GL_DEPTH_TEST);
+
+        glEnable(GL_LIGHTING);
+        glEnable(GL_LIGHT0);
+        glEnable(GL_LIGHT1);
+
+        glEnable(GL_COLOR_MATERIAL);
+    }
+    init_shapes();
+
+}
+
+static tangram_shape explode_step(tangram_shape old, tangram_shape new,
+                                  bool * b, GLfloat per)
+{
+    old.crd.z = approach_float(new.crd.z, old.crd.z, b, per);
+    if (eq(new.crd.z, old.crd.z, per))
+        *b = true;
+    else
+        *b = false;
+
+    return old;
+}
+
+void draw_tangram(ModeInfo * mi)
+{
+    Display *dpy = MI_DISPLAY(mi);
+    Window window = MI_WINDOW(mi);
+    static tangram_state state = state_solved;
+    static tangram_shape n_tsm1, n_tsm2, n_tm, n_tlg1, n_tlg2, n_sq, n_rh;
+    static bool b_tsm1, b_tsm2, b_tm, b_tlg1, b_tlg2, b_sq, b_rh;
+    static time_t s_tm = 0;
+    static time_t c_tm;
+    rotate_camera();
+
+    switch (state) {
+    case state_exploding:
+        tsm1 = explode_step(tsm1, n_tsm1, &b_tsm1, 0.1);
+        tsm2 = explode_step(tsm2, n_tsm2, &b_tsm2, 0.1);
+        tm = explode_step(tm, n_tm, &b_tm, 0.1);
+        tlg1 = explode_step(tlg1, n_tlg1, &b_tlg1, 0.1);
+        tlg2 = explode_step(tlg2, n_tlg2, &b_tlg2, 0.1);
+        sq = explode_step(sq, n_sq, &b_sq, 0.1);
+        rh = explode_step(rh, n_rh, &b_rh, 0.1);
+        if (b_tsm1 && b_tsm2 && b_tm && b_tlg1 && b_tlg2 && b_sq && b_rh) {
+            get_solved_puzzle(&n_tsm1, &n_tsm2, &n_tm, &n_tlg1, &n_tlg2,
+                              &n_sq, &n_rh);
+            state = state_solving;
+        }
+
+        break;
+    case state_solving:
+
+        tsm1 = approach_shape(tsm1, n_tsm1, &b_tsm1, "small 1");
+        tsm2 = approach_shape(tsm2, n_tsm2, &b_tsm2, "small 2");
+        tm = approach_shape(tm, n_tm, &b_tm, "medium");
+        tlg1 = approach_shape(tlg1, n_tlg1, &b_tlg1, "large 1");
+        tlg2 = approach_shape(tlg2, n_tlg2, &b_tlg2, "large 2");
+        sq = approach_shape(sq, n_sq, &b_sq, "square");
+        rh = approach_shape(rh, n_rh, &b_rh, "rhomboid");
+        if (b_tsm1 && b_tsm2 && b_tm && b_tlg1 && b_tlg2 && b_sq && b_rh) {
+            state = state_solved;
+            s_tm = time(0);
+        }
+        break;
+    case state_solved:
+        c_tm = time(0);
+        if (floor(difftime(c_tm, s_tm)) >= viewing_time) {
+            /*if ((random() % 100) == 0) { */
+            explode(&n_tsm1, &n_tsm2, &n_tm, &n_tlg1, &n_tlg2, &n_sq,
+                    &n_rh);
+
+            state = state_exploding;
+
+        }
+        break;
+    }
+    glPushMatrix();
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    glLoadIdentity();
+
+    draw_shapes();
+    glFlush();
+    glPopMatrix();
+    glXSwapBuffers(dpy, window);
+}
+
+#endif                          /* USE_GL */
diff --git a/hacks/glx/tangram.man b/hacks/glx/tangram.man
new file mode 100644 (file)
index 0000000..1c69306
--- /dev/null
@@ -0,0 +1,59 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+tangram - watch the computer solve tangram puzzles.
+.SH SYNOPSIS
+.B tangram 
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-wireframe]
+[\-viewing_time \fInumber\fP]
+.SH DESCRIPTION
+The \fItangram\fP program uses a view basic shapes to build silhouettes of recognizable objects.
+.SH OPTIONS
+.I tangram
+accepts the following options:
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use.  Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window.  This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds.  Default: 30000 (0.03 seconds.).
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-viewing_time \fInumber\fP 
+Specify the length of time, in seconds, that the finished puzzle
+should be displayed. Default: 5 
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2005 by Jeremy English.  Permission to use, copy, modify, 
+distribute, and sell this software and its documentation for any purpose is 
+hereby granted without fee, provided that the above copyright notice appear 
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation.  No representations are made about the 
+suitability of this software for any purpose.  It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jeremy English <jhe@jeremyenglish.org>
diff --git a/hacks/glx/tangram_shapes.c b/hacks/glx/tangram_shapes.c
new file mode 100644 (file)
index 0000000..25dec5b
--- /dev/null
@@ -0,0 +1,201 @@
+/* tangram, Copyright (c) 2005 Jeremy English <jhe@jeremyenglish.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#include <GL/gl.h>
+
+#define small_scale  ( 1 )
+#define large_scale  ( 2 )
+#define medium_scale ( 1.414213562 )
+
+#define alpha (0.05)
+
+static void tri_45_90(int wire)
+{
+    GLfloat vertices[][3] = {
+        {0, alpha, 0},
+        {0, alpha, 1},
+        {1, alpha, 0},
+        {0, -alpha, 0},
+        {0, -alpha, 1},
+        {1, -alpha, 0}
+    };
+
+    glBegin((wire) ? GL_LINE_LOOP : GL_TRIANGLES);
+
+    glNormal3f(0, 1, 0);
+    glVertex3fv(vertices[0]);
+    glVertex3fv(vertices[2]);
+    glVertex3fv(vertices[1]);
+
+    glNormal3f(0, -1, 0);
+    glVertex3fv(vertices[3]);
+    glVertex3fv(vertices[4]);
+    glVertex3fv(vertices[5]);
+    glEnd();
+
+    glBegin((wire) ? GL_LINE_LOOP : GL_QUADS);
+    glNormal3f(1, 0, 1);
+    glVertex3fv(vertices[2]);
+    glVertex3fv(vertices[5]);
+    glVertex3fv(vertices[4]);
+    glVertex3fv(vertices[1]);
+
+    glNormal3f(-1, 0, 0);
+    glVertex3fv(vertices[0]);
+    glVertex3fv(vertices[1]);
+    glVertex3fv(vertices[4]);
+    glVertex3fv(vertices[3]);
+
+    glNormal3f(0, 0, -1);
+    glVertex3fv(vertices[2]);
+    glVertex3fv(vertices[5]);
+    glVertex3fv(vertices[3]);
+    glVertex3fv(vertices[0]);
+    glEnd();
+}
+
+void unit_cube(int wire)
+{
+    glBegin((wire) ? GL_LINE_LOOP : GL_QUADS);
+
+    glNormal3f(0.0f, -1.0f, 0.0f);
+    glVertex3f(0.0f, -alpha, 0.0f);
+    glVertex3f(1.0f, -alpha, 0.0f);
+    glVertex3f(1.0f, -alpha, 1.0f);
+    glVertex3f(0.0f, -alpha, 1.0f);
+
+    glNormal3f(0.0f, 0.0f, 1.0f);
+    glVertex3f(0.0f, -alpha, 1.0f);
+    glVertex3f(1.0f, -alpha, 1.0f);
+    glVertex3f(1.0f, alpha, 1.0f);
+    glVertex3f(0.0f, alpha, 1.0f);
+
+    glNormal3f(0.0f, 0.0f, -1.0f);
+    glVertex3f(0.0f, -alpha, 0.0f);
+    glVertex3f(0.0f, alpha, 0.0f);
+    glVertex3f(1.0f, alpha, 0.0f);
+    glVertex3f(1.0f, -alpha, 0.0f);
+
+    glNormal3f(1.0f, 0.0f, 0.0f);
+    glVertex3f(1.0f, -alpha, 0.0f);
+    glVertex3f(1.0f, alpha, 0.0f);
+    glVertex3f(1.0f, alpha, 1.0f);
+    glVertex3f(1.0f, -alpha, 1.0f);
+
+    glNormal3f(-1.0f, 0.0f, 0.0f);
+    glVertex3f(0.0f, -alpha, 0.0f);
+    glVertex3f(0.0f, -alpha, 1.0f);
+    glVertex3f(0.0f, alpha, 1.0f);
+    glVertex3f(0.0f, alpha, 0.0f);
+
+    glNormal3f(0.0f, 1.0f, 0.0f);
+    glVertex3f(0.0f, alpha, 0.0f);
+    glVertex3f(0.0f, alpha, 1.0f);
+    glVertex3f(1.0f, alpha, 1.0f);
+    glVertex3f(1.0f, alpha, 0.0f);
+    glEnd();
+}
+
+void unit_rhomboid(int wire)
+{
+    glBegin((wire) ? GL_LINE_LOOP : GL_QUADS);
+
+    glNormal3f(0.0f, 1.0f, 0.0f);
+    glVertex3f(0, alpha, 0);
+    glVertex3f(1, alpha, 1);
+    glVertex3f(1, alpha, 2);
+    glVertex3f(0, alpha, 1);
+
+    glNormal3f(0.0f, -1.0f, 0.0f);
+    glVertex3f(0, -alpha, 0);
+    glVertex3f(0, -alpha, 1);
+    glVertex3f(1, -alpha, 2);
+    glVertex3f(1, -alpha, 1);
+
+    glNormal3f(-1.0f, 0.0f, 0.0f);
+    glVertex3f(0, alpha, 0);
+    glVertex3f(0, alpha, 1);
+    glVertex3f(0, -alpha, 1);
+    glVertex3f(0, -alpha, 0);
+
+
+    glNormal3f(0.0f, 0.0f, 1.0f);
+    glVertex3f(0, alpha, 1);
+    glVertex3f(1, alpha, 2);
+    glVertex3f(1, -alpha, 2);
+    glVertex3f(0, -alpha, 1);
+
+    glNormal3f(1.0f, 0.0f, 0.0f);
+    glVertex3f(1, alpha, 1);
+    glVertex3f(1, -alpha, 1);
+    glVertex3f(1, -alpha, 2);
+    glVertex3f(1, alpha, 2);
+
+    glNormal3f(0.0f, 0.0f, 1.0f);
+    glVertex3f(0, alpha, 0);
+    glVertex3f(0, -alpha, 0);
+    glVertex3f(1, -alpha, 1);
+    glVertex3f(1, alpha, 1);
+
+    glEnd();
+}
+
+/* All of the pieces have the same thickness so all of the Y values are the same */
+
+GLuint get_sm_tri_dl(int wire)
+{
+    GLuint triangle = glGenLists(1);
+    glNewList(triangle, GL_COMPILE);
+    glScalef(small_scale, small_scale, small_scale);
+    tri_45_90(wire);
+    glEndList();
+    return triangle;
+}
+
+GLuint get_lg_tri_dl(int wire)
+{
+    GLuint triangle = glGenLists(1);
+    glNewList(triangle, GL_COMPILE);
+    glScalef(large_scale, small_scale, large_scale);
+    tri_45_90(wire);
+    glEndList();
+    return triangle;
+}
+
+GLuint get_md_tri_dl(int wire)
+{
+    GLuint triangle = glGenLists(1);
+    glNewList(triangle, GL_COMPILE);
+    glScalef(medium_scale, small_scale, medium_scale);
+    tri_45_90(wire);
+    glEndList();
+    return triangle;
+}
+
+GLuint get_square_dl(int wire)
+{
+    GLuint square = glGenLists(1);
+    glNewList(square, GL_COMPILE);
+    glScalef(small_scale, small_scale, small_scale);
+    unit_cube(wire);
+    glEndList();
+    return square;
+}
+
+GLuint get_rhomboid_dl(int wire)
+{
+    GLuint rhomboid = glGenLists(1);
+    glNewList(rhomboid, GL_COMPILE);
+    glScalef(small_scale, small_scale, small_scale);
+    unit_rhomboid(wire);
+    glEndList();
+    return rhomboid;
+}
diff --git a/hacks/glx/tangram_shapes.h b/hacks/glx/tangram_shapes.h
new file mode 100644 (file)
index 0000000..95410f8
--- /dev/null
@@ -0,0 +1,15 @@
+#ifndef TANGRAM_SHAPES_H
+#define TANGRAM_SHAPES_H
+
+/* get_sm_tri_dl - Get small triangle Display List */
+GLuint get_sm_tri_dl(int wire);
+/* get_lg_tri_dl - Get large triangle Display List */
+GLuint get_lg_tri_dl(int wire);
+/* get_md_tri_dl - Get medium triangle Display List */
+GLuint get_md_tri_dl(int wire);
+/* get_square_dl - Get square Display List */
+GLuint get_square_dl(int wire);
+/* get_rhomboid_dl - Get rhomboid Display List */
+GLuint get_rhomboid_dl(int wire);
+
+#endif
index 3103944fc0ca2f97813a9c039d336a4fa9b07d97..225c416ca316f864550e85970d670054a6c96931 100644 (file)
@@ -3,7 +3,21 @@
 hyperball - 2d projection of a 4d object
 .SH SYNOPSIS
 .B hyperball
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-xy \fIfloat\fP] [\-xz \fIfloat\fP] [\-yz \fIfloat\fP] [\-xw \fIfloat\fP] [\-yw \fIfloat\fP] [\-zw \fIfloat\fP] [\-observer-z \fIint\fP] [\-delay \fIusecs\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP]
+[\-display \fIhost:display.screen\fP]
+[\-foreground \fIcolor\fP]
+[\-background \fIcolor\fP]
+[\-xy \fIfloat\fP]
+[\-xz \fIfloat\fP]
+[\-yz \fIfloat\fP]
+[\-xw \fIfloat\fP]
+[\-yw \fIfloat\fP]
+[\-zw \fIfloat\fP]
+[\-delay \fIusecs\fP]
+[\-window]
+[\-root]
+[\-mono]
+[\-install]
+[\-visual \fIvisual\fP]
 .SH DESCRIPTION
 The \fIhyperball\fP program displays a wireframe projection of a hyperball
 which is rotating at user-specified rates around any or all of its four axes.
@@ -31,10 +45,6 @@ or the id number (decimal or hex) of a specific visual.
 How much of a delay should be introduced between steps of the animation.
 Default 100000, or about 1/10th second.
 .TP 8
-.B \-observer-z \fIint\fP
-How far away the observer is from the center of the cube (the cube is one
-unit per side.)  Default 5.
-.TP 8
 .B \-xw \fIfloat\fP
 .TP 8
 .B \-xy \fIfloat\fP
index 60d4d9cc503093e329c0e884fd5ea1659fa57069..5579abe04ed04780878f30c65bfff4c0dfab0ab5 100644 (file)
@@ -34,9 +34,10 @@ a groovier colouring mode.
 
 #include "screenhack.h"
 
-static float myrandom(float up)
+static float
+myrandom(float up)
 {
-  return(((float)random()/RAND_MAX)*up);
+       return(((float)random()/RAND_MAX)*up);
 }
 
 static int delay;
@@ -44,305 +45,325 @@ static int lensnum;
 static int length;
 static int mode;
 static Bool notranslate, noscale, norotate;
-float ht,wt;
-float hs,ws;
-int width,height;
-float r;
-long wcol;
-int coloffset;
+static float ht,wt;
+static float hs,ws;
+static int width,height;
+static long wcol;
 
-float nx,ny;
-
-int count;
+static int count;
 
 /*X stuff*/
-GC gc;
-Window w;
-Display *dpy;
-Pixmap backbuffer;
-XColor *colours;
-int ncolours;
-int screen_num;
+static GC gc;
+static Window w;
+static Display *dpy;
+static Pixmap backbuffer;
+static XColor *colours;
+static int ncolours;
+static int screen_num;
 
-int blackColor, whiteColor;
+static int blackColor, whiteColor;
 
 char *progclass = "IFS";
 
 char *defaults [] = {
-  ".lensnum:    3",
-  ".length:     9",
-  ".mode:     0",
-  ".colors:     200",
-  "*delay:      10000",
-  "*notranslate:  False",
-  "*noscale:    False",
-  "*norotate:   False",
+  ".lensnum:           3",
+  ".length:                    9",
+  ".mode:                      0",
+  ".colors:                    200",
+  "*delay:                     10000",
+  "*notranslate:       False",
+  "*noscale:           False",
+  "*norotate:          False",
   0
 };
 
 XrmOptionDescRec options [] = {
-  { "-detail",    ".length",    XrmoptionSepArg, 0 },
-  { "-delay",   ".delay",   XrmoptionSepArg, 0 },
-  { "-mode",    ".mode",    XrmoptionSepArg, 0 },
-  { "-colors",    ".colors",    XrmoptionSepArg, 0 },
-  { "-functions", ".lensnum",   XrmoptionSepArg, 0 },
-  { "-notranslate", ".notranslate", XrmoptionNoArg,  "True" },
-  { "-noscale",   ".noscale",   XrmoptionNoArg,  "True" },
-  { "-norotate",  ".norotate",  XrmoptionNoArg,  "True" },
+  { "-detail",         ".length",              XrmoptionSepArg, 0 },
+  { "-delay",          ".delay",               XrmoptionSepArg, 0 },
+  { "-mode",           ".mode",                XrmoptionSepArg, 0 },
+  { "-colors",         ".colors",              XrmoptionSepArg, 0 },
+  { "-functions",      ".lensnum",     XrmoptionSepArg, 0 },
+  { "-notranslate",    ".notranslate", XrmoptionNoArg,  "True" },
+  { "-noscale",                ".noscale",             XrmoptionNoArg,  "True" },
+  { "-norotate",       ".norotate",    XrmoptionNoArg,  "True" },
   { 0, 0, 0, 0 }
 };
 
 /*Takes the average of two colours, with some nifty bit-shifting*/
-static long blend(long c1, long c2)
+static long
+blend(long c1, long c2)
 {
-  long R1=(c1 & 0xFF0000) >> 16;
-  long R2=(c2 & 0xFF0000) >> 16;
-  long G1=(c1 & 0x00FF00) >> 8;
-  long G2=(c2 & 0x00FF00) >> 8;
-  long B1=(c1 & 0x0000FF);
-  long B2=(c2 & 0x0000FF);
-  
-  return (((R1+R2)/2 << 16) | ((G1+G2)/2 << 8) | ((B1+B2)/2));
+       long R1=(c1 & 0xFF0000) >> 16;
+       long R2=(c2 & 0xFF0000) >> 16;
+       long G1=(c1 & 0x00FF00) >> 8;
+       long G2=(c2 & 0x00FF00) >> 8;
+       long B1=(c1 & 0x0000FF);
+       long B2=(c2 & 0x0000FF);
+       
+       return (((R1+R2)/2 << 16) | ((G1+G2)/2 << 8) | ((B1+B2)/2));
 }
 
 /*Draw a point on the backbuffer*/
-static void sp(float x, float y, long c)
+static void
+sp(float x, float y, long c)
 {
-  x+=16;    x*=wt;
-  y=16.5-y; y*=ht;
-  if(x<0 || x>=width || y<0 || y>=height) return;
-  XSetForeground(dpy, gc, c);
-  XDrawPoint(dpy, backbuffer, gc, (int)x, (int)y);
+       x+=16;    x*=wt;
+       y=16.5-y; y*=ht;
+       if(x<0 || x>=width || y<0 || y>=height) return;
+       XSetForeground(dpy, gc, c);
+       XDrawPoint(dpy, backbuffer, gc, (int)x, (int)y);
 }
 
 /*Copy backbuffer to front buffer and clear backbuffer*/
-static void draw(void)
+static void
+draw(void)
 {
-  XCopyArea(  dpy,
-              backbuffer, w,
-              gc,
-              0, 0,
-              width, height,
-              0, 0);
-  
-  XSetForeground(dpy, gc, blackColor);
-  XFillRectangle( dpy,
-                  backbuffer,
-                  gc,
-                  0, 0,
-                  width, height);
+       XCopyArea( dpy,
+                  backbuffer, w,
+                  gc,
+                  0, 0,
+                  width, height,
+                  0, 0);
+       
+       XSetForeground(dpy, gc, blackColor);
+       XFillRectangle( dpy,
+                       backbuffer,
+                       gc,
+                       0, 0,
+                       width, height);
 }
 
 typedef struct {
-  float r,s,tx,ty;
-  /*Rotation, Scale, Translation X & Y*/
-  float ra,raa,sa,txa,tya;
-  
-  int co;
-} Lens; 
-
-
-static void CreateLens(float nr, 
-        float ns, 
-        float nx, 
-        float ny, 
-        int nco,
-        Lens *newlens)
+       float r,s,tx,ty;
+       /*Rotation, Scale, Translation X & Y*/
+       float ro,rt,rc;
+       /*Old Rotation, Rotation Target, Rotation Counter*/
+       float so,st,sc;
+       /*Old Scale, Scale Target, Scale Counter*/
+       float sa,txa,tya;
+       /*Scale change, Translation change*/
+       
+       int co;
+} Lens;        
+
+
+static void
+CreateLens( float nr, 
+            float ns, 
+            float nx, 
+            float ny, 
+            int nco,
+            Lens *newlens)
 {
-  newlens->ra=newlens->raa=newlens->sa=newlens->txa=newlens->tya=0;
-  if(!norotate) newlens->r=nr;
-  else newlens->r=0;
-    
-  if(!noscale) newlens->s=ns;
-  else newlens->s=0.5;
-    
-  if(!notranslate) {
-    newlens->tx=nx;
-    newlens->ty=ny;
-  } else {
-    newlens->tx=nx;
-    newlens->tx=ny;
-  }
-    
-  newlens->co=nco;
+       newlens->sa=newlens->txa=newlens->tya=0;
+       if(!norotate) newlens->r=nr;
+       else newlens->r=0;
+       
+       if(!noscale) newlens->s=ns;
+       else newlens->s=0.5;
+       
+       if(!notranslate) {
+               newlens->tx=nx;
+               newlens->ty=ny;
+       } else {
+               newlens->tx=nx;
+               newlens->tx=ny;
+       }
+
+       newlens->rc=newlens->sc=1;
+       newlens->co=nco;
 }
-  
-static float stepx(float x, float y, Lens *l)
+       
+static float
+stepx(float x, float y, Lens *l)
 {
-  return l->s*cos(l->r)*x+l->s*sin(l->r)*y+l->tx;
+       return l->s*cos(l->r)*x+l->s*sin(l->r)*y+l->tx;
 }
-
-static float stepy(float x, float y, Lens *l)
+static float
+stepy(float x, float y, Lens *l)
 {
-  return l->s*sin(l->r)*-x+l->s*cos(l->r)*y+l->ty;
+       return l->s*sin(l->r)*-x+l->s*cos(l->r)*y+l->ty;
 }
-
-static void mutate(Lens *l)
+static void
+mutate(Lens *l)
 {
-  if(!norotate) {
-    l->raa+=myrandom(0.002)-0.001;
-    l->ra+=l->raa;
-    l->r +=l->ra;
-    if(l->ra>0.07  || l->ra<-0.07)  l->ra/=1.4;
-    if(l->raa>0.005 || l->raa<-0.005) l->raa/=1.2;
-  }
-  if(!noscale) {
-    l->sa+=myrandom(0.01)-0.005;
-    l->s +=l->sa;
-    if(l->s>0.4) l->sa -=0.004;
-    if(l->s<-0.4) l->sa +=0.004;
-    if(l->sa>0.07  || l->sa<-0.07)  l->sa/=1.4;
-  }
-  if(!notranslate) {
-    l->txa+=myrandom(0.004)-0.002;
-    l->tya+=myrandom(0.004)-0.002;
-    l->tx+=l->txa;
-    l->ty+=l->tya;
-    if(l->tx>6)  l->txa-=0.004;
-    if(l->ty>6)  l->tya-=0.004;
-    if(l->tx<-6)  l->txa+=0.004;
-    if(l->ty<-6)  l->tya+=0.004;
-    if(l->txa>0.05 || l->txa<-0.05) l->txa/=1.7;
-    if(l->tya>0.05 || l->tya<-0.05) l->tya/=1.7;
-  }
-  
-  /*Groovy, colour-shifting functions!*/
-  l->co++;
-  l->co %= ncolours;
+       if(!norotate) {
+               float factor;
+               if(l->rc >= 1) {
+                       l->rc= 0;
+                       l->ro = l->rt;
+                       l->rt = myrandom(4)-2;
+               }
+               factor = (sin((-M_PI / 2.0) + M_PI * l->rc) + 1.0) / 2.0;
+               l->r=l->ro + (l->rt - l->ro) * factor;
+               l->rc+=0.01;
+               
+       }
+       if(!noscale) {
+               float factor;
+               if(l->sc >= 1) {
+                       /*Reset counter, obtain new target value*/
+                       l->sc= 0;
+                       l->so = l->st;
+                       l->st = myrandom(2)-1;
+               }
+               factor = (sin((-M_PI / 2.0) + M_PI * l->sc) + 1.0) / 2.0;
+               /* Take average of old target and new target, using factor to *
+                * weight. It's computed sinusoidally, resulting in smooth,   *
+                * rhythmic transitions.                                      */
+               l->s=l->so + (l->st - l->so) * factor;
+               l->sc+=0.01;
+       }
+       if(!notranslate) {
+               l->txa+=myrandom(0.004)-0.002;
+               l->tya+=myrandom(0.004)-0.002;
+               l->tx+=l->txa;
+               l->ty+=l->tya;
+               if(l->tx>6)  l->txa-=0.004;
+               if(l->ty>6)  l->tya-=0.004;
+               if(l->tx<-6)  l->txa+=0.004;
+               if(l->ty<-6)  l->tya+=0.004;
+               if(l->txa>0.05 || l->txa<-0.05) l->txa/=1.7;
+               if(l->tya>0.05 || l->tya<-0.05) l->tya/=1.7;
+       }
+       
+       /*Groovy, colour-shifting functions!*/
+       l->co++;
+       l->co %= ncolours;
 }
 
 Lens **lenses;
 
 /* Calls itself <lensnum> times - with results from each lens/function.  *
  * After <length> calls to itself, it stops iterating and draws a point. */
-static void iterate(float x, float y, long curcol, int length)
+static void
+iterate(float x, float y, long curcol, int length)
 {
-  int i;
-  if(length == 0) {
-    sp(x,y,curcol);
-  } else {
-    /*iterate(lenses[0].stepx(x,y),lenses[0].stepy(x,y),length-1);
-      iterate(lenses[1].stepx(x,y),lenses[1].stepy(x,y),length-1);
-      iterate(lenses[2].stepx(x,y),lenses[2].stepy(x,y),length-1);*/
-    for(i=0;i<lensnum;i++) {
-      switch(mode) {
-      case 0 : iterate(stepx( x, y, lenses[i]), stepy( x, y, lenses[i]), blend( curcol,colours[(int)lenses[i]->co].pixel ), length-1); break;
-      case 1 : iterate(stepx( x, y, lenses[i]), stepy( x, y, lenses[i]), colours[(int)lenses[i]->co].pixel, length-1); break;
-      case 2 : iterate(stepx( x, y, lenses[i]), stepy( x, y, lenses[i]), curcol, length-1); break;
-      default: exit(0);
-      }
-    }
-  }
-  count++;
+       int i;
+       if(length == 0) {
+               sp(x,y,curcol);
+       } else {
+               for(i=0;i<lensnum;i++) {
+                       switch(mode) {
+                               case 0 : iterate(stepx( x, y, lenses[i]), stepy( x, y, lenses[i]), blend( curcol,colours[(int)lenses[i]->co].pixel ), length-1); break;
+                               case 1 : iterate(stepx( x, y, lenses[i]), stepy( x, y, lenses[i]), colours[(int)lenses[i]->co].pixel, length-1); break;
+                               case 2 : iterate(stepx( x, y, lenses[i]), stepy( x, y, lenses[i]), curcol, length-1); break;
+                               default: exit(0);
+                       }
+               }
+       }
+       count++;
 }
 
 /* Come on and iterate, iterate, iterate and sing... *
  * Yeah, this function just calls iterate, mutate,   *
  * and then draws everything.                        */
-static void step(void)
+static void
+step(void)
 {
-  int i;
-  if(mode == 2) {
-    wcol++;
-    wcol %= ncolours;
-    iterate(0,0,colours[wcol].pixel,length);
-  } else {
-    iterate(0,0,0xFFFFFF,length);
-  }
-  
-  
-  count=0;
-  
-  for(i=0;i<lensnum;i++) {
-    mutate(lenses[i]);
-  }
-  draw();
+       int i;
+       if(mode == 2) {
+               wcol++;
+               wcol %= ncolours;
+               iterate(0,0,colours[wcol].pixel,length);
+       } else {
+               iterate(0,0,0xFFFFFF,length);
+       }
+       
+       
+       count=0;
+       
+       for(i=0;i<lensnum;i++) {
+               mutate(lenses[i]);
+       }
+       draw();
 }
 
-static void init_ifs(void)
+static void
+init_ifs(void)
 {
-  Window rw;
-  int i;
-  XWindowAttributes xgwa;
-  
-  delay = get_integer_resource("delay", "Delay");
-  length = get_integer_resource("length", "Detail");
-  mode = get_integer_resource("mode", "Mode");
-
-  norotate    = get_boolean_resource("norotate", "NoRotate");
-  noscale     = get_boolean_resource("noscale", "NoScale");
-  notranslate = get_boolean_resource("notranslate", "NoTranslate");
-
-  lensnum = get_integer_resource("lensnum", "Functions");
-  
-  lenses = malloc(sizeof(Lens)*lensnum);
-  
-  for(i=0;i<lensnum;i++) {
-    lenses[i]=malloc(sizeof(Lens));
-  }
-  
-  /*Thanks go to Dad for teaching me how to allocate memory for struct**s . */
-  
-  XGetWindowAttributes (dpy, w, &xgwa);
-  width=xgwa.width;
-  height=xgwa.height;
-  
-  /*Initialise all this X shizzle*/
-  blackColor = BlackPixel(dpy, DefaultScreen(dpy));
-  whiteColor = WhitePixel(dpy, DefaultScreen(dpy));
-  rw = RootWindow(dpy, screen_num);
-  screen_num = DefaultScreen(dpy);
-  gc = XCreateGC(dpy, rw, 0, NULL);
-  
-  /* Do me some colourmap magic. If we're using blend mode, this is just   *
-   * for the nice colours - we're still using true/hicolour. Screw me if   *
-   * I'm going to work out how to blend with colourmaps - I'm too young to *
-   * die!! On a sidenote, this is mostly stolen from halftone because I    *
-   * don't really know what the hell I'm doing, here.                      */
-  ncolours = get_integer_resource("colors", "Colors");
-  if(ncolours < lensnum) ncolours=lensnum; /*apparently you're allowed to do this kind of thing...*/
-  colours = (XColor *)calloc(ncolours, sizeof(XColor));
-  make_smooth_colormap (  dpy,
-                          xgwa.visual,
-                          xgwa.colormap,
-                          colours,
-                          &ncolours,
-                          True, 0, False);
-  /*No, I didn't have a clue what that really did... hopefully I have some colours in an array, now.*/
-  wcol = (int)myrandom(ncolours);
-    
-  /*Double buffering - I can't be bothered working out the XDBE thingy*/
-  backbuffer = XCreatePixmap(dpy, w, width, height, XDefaultDepth(dpy, screen_num));
-  
-  /*Scaling factor*/
-  wt=width/32;
-  ht=height/24;
-  
-  ws=400;
-  hs=400;
-
-  /*Colourmapped colours for the general prettiness*/
-  for(i=0;i<lensnum;i++) {
-    CreateLens( myrandom(1)-0.5,
-                myrandom(1),
-                myrandom(4)-2,
-                myrandom(4)+2,
-                myrandom(ncolours),
-                lenses[i]);
-  }
+       Window rw;
+       int i;
+       XWindowAttributes xgwa;
+       
+       delay = get_integer_resource("delay", "Delay");
+       length = get_integer_resource("length", "Detail");
+       mode = get_integer_resource("mode", "Mode");
+
+       norotate    = get_boolean_resource("norotate", "NoRotate");
+       noscale     = get_boolean_resource("noscale", "NoScale");
+       notranslate = get_boolean_resource("notranslate", "NoTranslate");
+
+       lensnum = get_integer_resource("lensnum", "Functions");
+       
+       lenses = malloc(sizeof(Lens)*lensnum);
+       
+       for(i=0;i<lensnum;i++) {
+               lenses[i]=malloc(sizeof(Lens));
+       }
+       
+       /*Thanks go to Dad for teaching me how to allocate memory for struct**s . */
+       
+       XGetWindowAttributes (dpy, w, &xgwa);
+       width=xgwa.width;
+       height=xgwa.height;
+       
+       /*Initialise all this X shizzle*/
+       blackColor = BlackPixel(dpy, DefaultScreen(dpy));
+       whiteColor = WhitePixel(dpy, DefaultScreen(dpy));
+       rw = RootWindow(dpy, screen_num);
+       screen_num = DefaultScreen(dpy);
+       gc = XCreateGC(dpy, rw, 0, NULL);
+       
+       /* Do me some colourmap magic. If we're using blend mode, this is just   *
+        * for the nice colours - we're still using true/hicolour. Screw me if   *
+        * I'm going to work out how to blend with colourmaps - I'm too young to *
+        * die!! On a sidenote, this is mostly stolen from halftone because I    *
+        * don't really know what the hell I'm doing, here.                      */
+       ncolours = get_integer_resource("colors", "Colors");
+       if(ncolours < lensnum) ncolours=lensnum; /*apparently you're allowed to do this kind of thing...*/
+       colours = (XColor *)calloc(ncolours, sizeof(XColor));
+       make_smooth_colormap ( dpy,
+                              xgwa.visual,
+                              xgwa.colormap,
+                           colours,
+                           &ncolours,
+                           True, 0, False);
+       /*No, I didn't have a clue what that really did... hopefully I have some colours in an array, now.*/
+       wcol = (int)myrandom(ncolours);
+               
+       /*Double buffering - I can't be bothered working out the XDBE thingy*/
+       backbuffer = XCreatePixmap(dpy, w, width, height, XDefaultDepth(dpy, screen_num));
+       
+       /*Scaling factor*/
+       wt=width/32;
+       ht=height/24;
+       
+       ws=400;
+       hs=400;
+
+       /*Colourmapped colours for the general prettiness*/
+       for(i=0;i<lensnum;i++) {
+               CreateLens(     myrandom(1)-0.5,
+                           myrandom(1),
+                           myrandom(4)-2,
+                           myrandom(4)+2,
+                           myrandom(ncolours),
+                           lenses[i]);
+       }
 }
 
 void
 screenhack (Display *display, Window window)
 {
-  dpy = display;
-  w   = window;
-  
-  init_ifs();
-  
-  while (1) {
-    step();
-    screenhack_handle_events(dpy);
-    if (delay) usleep(delay);
-  }
+       dpy = display;
+       w   = window;
+       
+       init_ifs();
+       
+       while (1) {
+               step();
+               screenhack_handle_events(dpy);
+               if (delay) usleep(delay);
+       }
 }
diff --git a/hacks/interaggregate.c b/hacks/interaggregate.c
new file mode 100644 (file)
index 0000000..2517792
--- /dev/null
@@ -0,0 +1,932 @@
+/*
+ *  InterAggregate (dagraz@gmail.com)
+ *  Based on code from complexification.net Intersection Aggregate
+ *  http://www.complexification.net/gallery/machines/interAggregate/index.php
+ *
+ *  Intersection Aggregate code:
+ *  j.tarbell   May, 2004
+ *  Albuquerque, New Mexico
+ *  complexification.net
+ *
+ *  Also based on substrate, a port of j.tarbell's Substrate Art done
+ *  by dragorn@kismetwireless.net
+ *
+ *  
+ *  Interesting command line options, all of which serve to
+ *  concentrate the painting in some way:
+ *  
+ *  -percent-orbits 100 -base-orbits 50 -base-on-center -growth-delay 0
+ *
+ *  Paint should be concentrated in the center of the canvas, orbiting
+ *  about it.  -percent-orbits 100 implies -base-on-center, so that's
+ *  not really needed.
+ *
+ *
+ *  -percent-orbits 99 -base-orbits 50 -growth-delay 0
+ *
+ *  Like the above example, but the 'center' will rove about the screen.
+ *
+ *  -percent-orbits 98 -base-orbits 50 -growth-delay 0
+ *
+ *  Like the above example, but there will be two roving centers.
+ *
+ *
+ *  TODO:
+ *  -fix alpha blending / byte ordering
+ *
+ *  CHANGES
+ *
+ *
+ * Directly based the hacks of: 
+ * 
+ * xscreensaver, Copyright (c) 1997, 1998, 2002 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or 
+ * implied warranty.
+ */
+
+#include "screenhack.h"
+#include <X11/Xutil.h>
+#include <stdio.h>
+#include <sys/time.h>
+
+#ifndef MAX_WIDTH
+#include <limits.h>
+#define MAX_WIDTH SHRT_MAX
+#endif
+
+/* XXX take this out later */
+
+
+#ifdef TIME_ME
+#include <sys/time.h>
+#endif
+
+#include <math.h>
+
+/* this program goes faster if some functions are inline.  The following is
+ * borrowed from ifs.c */
+#if !defined( __GNUC__ ) && !defined(__cplusplus) && !defined(c_plusplus)
+#undef inline
+#define inline                 /* */
+#endif
+
+#ifndef MIN
+#define MIN(x,y) ((x < y) ? x : y)
+#endif
+
+#ifndef MAX
+#define MAX(x,y) ((x < y) ? y : x)
+#endif
+
+char *progclass = "inter-aggregate";
+
+char *defaults[] = 
+{
+    ".background: white",
+    ".foreground: black",
+    "*maxCycles: 100000",
+#ifdef TIME_ME
+    "*growthDelay: 0",
+#else
+    "*growthDelay: 18000", 
+#endif
+    "*numCircles: 100",
+    "*percentOrbits: 0",
+    "*baseOrbits: 75",
+    0
+};
+
+XrmOptionDescRec options[] = 
+{
+    {"-background", ".background", XrmoptionSepArg, 0},
+    {"-foreground", ".foreground", XrmoptionSepArg, 0},
+    {"-max-cycles", ".maxCycles", XrmoptionSepArg, 0},
+    {"-growth-delay", ".growthDelay", XrmoptionSepArg, 0},
+    {"-num-circles", ".numCircles", XrmoptionSepArg, 0},
+    {"-percent-orbits", ".percentOrbits", XrmoptionSepArg, 0},
+    {"-base-orbits", ".baseOrbits", XrmoptionSepArg, 0},
+    {"-base-on-center", ".baseOnCenter", XrmoptionNoArg, "true"}, 
+    {"-draw-centers", ".drawCenters", XrmoptionNoArg, "true"}, 
+    {0, 0, 0, 0}
+};
+
+/* Raw colormap extracted from pollockEFF.gif */
+#if 0
+char *rgb_colormap[] = 
+{
+    "rgb:FF/FF/FF", /* white */
+    "rgb:00/00/00", /* black */
+    "rgb:00/00/00", /* more black */
+    /* "rgb:73/64/51",  */
+    "rgb:4e/3e/2e", /* olive */
+    /* "rgb:66/66/66", */
+    "rgb:69/4d/35",  /* camel */
+    "rgb:b9/a8/8c",  /* tan */
+    0
+};
+#endif
+
+char *rgb_colormap[] = 
+{
+    "rgb:FF/FF/FF", /* white */
+    "rgb:00/00/00", /* more black */
+    "rgb:00/00/00", /* more black */
+    "rgb:4e/3e/2e", /* olive */
+    "rgb:69/4d/35",  /* camel */
+    "rgb:b0/a0/85",  /* tan */
+    "rgb:e6/d3/ae",
+    0
+};
+
+/* black white brown olive grey camel */
+
+typedef enum { LINEAR, ORBIT } PathType;
+
+typedef struct 
+{
+
+    unsigned long color;
+    double gain;
+    double p;
+
+} SandPainter;
+
+typedef struct _circle
+{
+    double radius;
+
+    double x;
+    double y;
+
+    PathType path_type;
+
+    /* for a linear path */
+    double dx;
+    double dy;
+
+    /* for orbital path */
+    double theta;
+    double r; 
+    double dtheta;
+    
+    struct _circle* center;
+
+    int num_painters;
+    SandPainter* painters;
+
+} Circle;
+
+
+struct field 
+{
+    int height;
+    int width;
+
+    int num_circles;
+    Circle* circles;
+
+    int percent_orbits;
+    int base_orbits;
+    Bool base_on_center;
+
+    /* used for orbits circling the center of the screen */
+    Circle center_of_universe;
+
+    /* Raw map of pixels we need to keep for alpha blending */
+    unsigned long int *off_img;
+   
+    /* color parms */
+    int numcolors;
+    unsigned long *parsedcolors;
+    unsigned long fgcolor;
+    unsigned long bgcolor;
+    int visdepth;
+
+    unsigned int cycles;
+
+    double max_gain;
+
+    /* for debugging */
+    Bool draw_centers;
+
+    /* for profiling whatnot */ 
+    int possible_intersections;
+    int intersection_count;
+};
+
+
+struct field 
+*init_field(void)
+{
+    struct field *f = (struct field*) malloc(sizeof(struct field));
+    if ( f == NULL )
+    {
+       fprintf(stderr, "%s: Failed to allocate field!\n", progname);
+       exit(1);
+    }
+
+    f->height = 0;
+    f->width = 0;
+    f->num_circles = 0;
+    f->circles = NULL;
+    f->percent_orbits = 0;
+    f->base_orbits = 0;
+    f->base_on_center = False;
+    f->off_img = NULL;
+    f->numcolors = 0;
+    f->parsedcolors = NULL;
+    f->fgcolor = 0;
+    f->bgcolor = 0;
+    f->visdepth = 0;
+
+    f->cycles = 0;
+
+    f->max_gain = 0.22;
+
+    f->draw_centers = False;
+
+    f->possible_intersections = 0;
+    f->intersection_count = 0;
+
+    return f;
+}
+
+/* Quick references to pixels in the offscreen map and in the crack grid */
+#define ref_pixel(f, x, y)   ((f)->off_img[(y) * (f)->width + (x)])
+
+#define in_bounds(f, x, y) ((x >= 0) && (x < f->width) && (y >= 0) && (y < f->height))
+
+/* Consider rewriting with XQueryColor, or ImageByteOrder */
+
+inline void point2rgb(int depth, unsigned long c, int *r, int *g, int *b) 
+{
+    switch(depth) 
+    {
+    case 32:
+    case 24:
+       *b = c & 0xff; 
+       *g = (c & 0xff00) >> 8; 
+       *r = (c & 0xff0000) >> 16; 
+       break;
+    case 16:
+       *b = (c & 0x1f) << 3; 
+       *g = ((c >> 5) & 0x3f) << 2;
+       *r = ((c >> 11) & 0x1f) << 3; 
+       break;
+    case 15:
+       *b = (c & 0x1f) << 3;
+       *g = ((c >> 5) & 0x1f) << 3;
+       *r = ((c >> 10) & 0x1f) << 3;
+       break;
+    }
+}
+
+inline unsigned long rgb2point(int depth, int r, int g, int b) 
+{
+    unsigned long ret = 0;
+
+    switch(depth) 
+    {
+    case 32:
+       ret = 0xff000000;
+    case 24:
+       ret |= (r << 16) | (g << 8) | b;
+       break;
+    case 16:
+       ret = ((r>>3) << 11) | ((g>>2)<<5) | (b>>3);
+       break;
+    case 15:
+       ret = ((r>>3) << 10) | ((g>>3)<<5) | (b>>3);
+       break;
+    }
+
+    return ret;
+}
+
+/* alpha blended point drawing -- this is Not Right and will likely fail on 
+ * non-intel platforms as it is now, needs fixing */
+inline unsigned long trans_point(int x1, int y1, unsigned long myc, double a, 
+                                struct field *f) 
+{
+    if (a >= 1.0) 
+    {
+       ref_pixel(f, x1, y1) = myc;
+       return myc;
+    } 
+    else 
+    {
+       int or, og, ob;
+       int r, g, b;
+       int nr, ng, nb;
+       unsigned long c;
+
+       c = ref_pixel(f, x1, y1);
+
+       point2rgb(f->visdepth, c, &or, &og, &ob);
+       point2rgb(f->visdepth, myc, &r, &g, &b);
+
+       nr = or + (r - or) * a;
+       ng = og + (g - og) * a;
+       nb = ob + (b - ob) * a;
+
+       c = rgb2point(f->visdepth, nr, ng, nb);
+
+       ref_pixel(f, x1, y1) = c;
+
+       return c;
+    }
+}
+
+inline void drawPoint(int x, int y, unsigned long color, double intensity,
+                     Display *dpy, Window window, GC fgc, struct field *f)
+              
+{
+    unsigned long c;
+
+    if ( x >= f->width ) x -= f->width;
+    else if ( x < 0 ) x += f->width;
+       
+    if ( y >= f->height ) y -= f->height;
+    else if ( y < 0 ) y += f->height;
+
+    /* if ( in_bounds(f, x, y) ) ... */
+
+    c = trans_point(x, y, color, intensity, f);
+
+    XSetForeground(dpy, fgc, c);
+    XDrawPoint(dpy, window, fgc, x, y);
+}
+
+inline void paint(SandPainter* painter, double ax, double ay, double bx, double by,
+                 Display *dpy, Window window, GC fgc, 
+                 struct field *f)
+{
+    /* the sand painter */
+
+    double inc, sandp;
+    int i;
+
+    /* XXX try adding tpoint here, like orig */
+
+    /* jitter the painter's values */
+    painter->gain += frand(0.05) - 0.025;
+    
+    if ( painter->gain > f->max_gain )
+       painter->gain = -f->max_gain;
+    else if ( painter->gain < -f->max_gain )
+       painter->gain = f->max_gain;
+
+    painter->p += frand(0.1) - 0.05;
+    
+    if ( 0 < painter->p )
+       painter->p = 0;
+    else if ( painter->p > 1.0 )
+       painter->p = 1.0;
+
+    /* replace 0.1 with 1 / f->grains */
+    inc = painter->gain * 0.1;
+    sandp = 0;
+
+    for(i = 0; i <= 10; ++i)
+    {
+       int drawx, drawy;
+       double sp, sm;
+       double intensity = 0.1 - 0.009 * i;
+
+       sp = sin(painter->p + sandp);
+       drawx = ax + (bx - ax) * sp;
+       drawy = ay + (by - ay) * sp;
+
+       drawPoint(drawx, drawy, painter->color,
+                 intensity,
+                 dpy, window, fgc, f);
+
+       sm = sin(painter->p - sandp);
+       drawx = ax + (bx - ax) * sm;
+       drawy = ay + (by - ay) * sm;
+
+       drawPoint(drawx, drawy, painter->color,
+                 intensity,
+                 dpy, window, fgc, f);
+
+       sandp += inc;
+    }
+}
+
+void build_colors(struct field *f, Display *dpy, XWindowAttributes *xgwa) 
+{
+
+    XColor tmpcolor;
+    int i;
+    /* Count the colors in our map and assign them in a horrifically inefficient 
+     * manner but it only happens once */
+
+    for( f->numcolors = 0; 
+        rgb_colormap[f->numcolors] != NULL; 
+        ++f->numcolors )
+    {
+       ;
+    }
+
+    f->parsedcolors = (unsigned long *) calloc(f->numcolors,
+                                              sizeof(unsigned long));
+    if ( f->parsedcolors == NULL )
+    {
+        fprintf(stderr, "%s: Failed to allocate parsedcolors\n",
+                progname);
+       exit(1);
+    }
+       
+    for(i = 0; i < f->numcolors; ++i)
+    {
+        if (!XParseColor(dpy, xgwa->colormap, 
+                        rgb_colormap[i], &tmpcolor)) 
+       {
+            fprintf(stderr, "%s: couldn't parse color %s\n", progname,
+                    rgb_colormap[i]);
+            exit(1);
+        }
+
+        if (!XAllocColor(dpy, xgwa->colormap, &tmpcolor)) 
+       {
+            fprintf(stderr, "%s: couldn't allocate color %s\n", progname,
+                    rgb_colormap[i]);
+            exit(1);
+        }
+
+        f->parsedcolors[i] = tmpcolor.pixel;
+
+    }
+}
+
+/* used when the window is resized */
+void build_img(struct field *f)
+{
+    if (f->off_img) {
+        free(f->off_img);
+        f->off_img = NULL;
+    }
+
+    f->off_img = (unsigned long *) calloc(f->width * f->height,
+                                         sizeof(unsigned long));
+                                          
+
+    if ( f->off_img == NULL )
+    {
+        fprintf(stderr, "%s: Failed to allocate off_img\n",
+                progname);
+       exit(1);
+    }
+
+    memset(f->off_img, f->bgcolor, 
+          sizeof(unsigned long) * f->width * f->height);
+}
+
+void free_circles(struct field *f) 
+{
+    int i;
+
+    if ( f->circles != NULL )
+    {
+       for(i = 0; i < f->num_circles; ++i)
+       {
+           free (f->circles[i].painters);
+       }
+
+       free (f->circles);
+       f->circles = NULL;
+    }
+}
+
+void build_field(Display *dpy, Window window, XWindowAttributes xgwa, GC fgc, 
+                struct field *f) 
+{
+    int i;
+    int num_orbits;
+    int base_orbits;
+    int orbit_start;
+    build_img(f);
+
+    f->center_of_universe.x = f->width / 2.0;
+    f->center_of_universe.y = f->height / 2.0;
+    f->center_of_universe.r = MAX(f->width, f->height) / 2.0;
+
+    num_orbits = (f->percent_orbits * f->num_circles) / 100;
+    orbit_start = f->num_circles - num_orbits;
+    base_orbits = orbit_start + (num_orbits * f->base_orbits) / 100;
+
+    free_circles(f);
+
+    f->circles = (Circle*) calloc(f->num_circles, sizeof(Circle));
+    if ( f->circles == NULL )
+    {
+        fprintf(stderr, "%s: Failed to allocate off_img\n",
+                progname);
+       exit(1);
+    }
+
+    for(i = 0; i < f->num_circles; ++i)
+    {
+       int j;
+       Circle *circle = f->circles + i;
+
+       /* make this a pref */
+
+       if ( i >= orbit_start )
+         circle->path_type = ORBIT;
+       else
+         circle->path_type = LINEAR;
+
+
+       if ( circle->path_type == LINEAR )
+       {
+           circle->x = frand(f->width);
+           circle->y = frand(f->height);
+
+           circle->dx = frand(0.5) - 0.25; 
+           circle->dy = frand(0.5) - 0.25;
+           /* circle->dy = 0; */
+           /* circle->r  = f->height * (0.05 + frand(0.1)); */
+           circle->radius = 5 + frand(55);
+
+           /* in case we want orbits based on lines */
+           circle->r = MIN(f->width, f->height) / 2.0;
+           circle->center = NULL;
+       }
+       else /* == ORBIT */
+       {
+           if (i < base_orbits )
+           {
+               if ( f->base_on_center )
+                   circle->center = &f->center_of_universe; 
+               else
+               {
+                   circle->center = f->circles + 
+                       ((int)frand(orbit_start - 0.1));
+               }
+
+               circle->r = 1 + frand(MIN(f->width, f->height) / 2.0);
+
+               /* circle->radius = 5 + frand(55); */
+           }
+           else
+           {
+               /* give a preference for the earlier circles */
+
+               double p = frand(0.9);
+
+               circle->center = f->circles + (int) (p*i);
+
+               circle->r = 1 + 0.5 * circle->center->r + 0.5 * frand(circle->center->r); 
+               /* circle->r = 1 + frand(circle->center->r / 2); */
+
+
+               /* circle->radius = MAX(5, frand(circle->r)); */
+               /* circle->radius = 5 + frand(55); */
+           }
+
+           circle->radius = 5 + frand(MIN(55, circle->r)); 
+           circle->dtheta = (frand(0.5) - 0.25) / circle->r;
+           circle->theta = frand(2 * M_PI);
+
+           circle->x = circle->r * cos(circle->theta) + circle->center->x;
+           circle->y = circle->r * sin(circle->theta) + circle->center->y;
+
+       }
+
+       /* make this a command line option */
+       circle->num_painters = 3;
+       circle->painters = (SandPainter*) calloc(circle->num_painters, 
+                                                sizeof(SandPainter));
+       if ( circle->painters == NULL )
+       {
+           fprintf(stderr, "%s: failed to allocate painters", progname);
+           exit(1);
+       }
+
+       for(j = 0; j < circle->num_painters; ++j)
+       {
+           SandPainter *painter = circle->painters + j;
+
+           painter->gain = frand(0.09) + 0.01;
+           painter->p = frand(1.0);
+           painter->color = 
+               f->parsedcolors[(int)(frand(0.999) * f->numcolors)];
+       }
+    }
+}
+
+void moveCircles(struct field *f)
+{
+    int i;
+
+    for(i = 0; i < f->num_circles; ++i)
+    {
+       Circle *circle = f->circles + i;
+
+       if ( circle->path_type == LINEAR )
+       {
+           circle->x += circle->dx;
+           circle->y += circle->dy;
+
+#if 0
+           if ( circle->x < -circle->radius )
+               circle->x = f->width + circle->radius;
+           else if ( circle->x >= f->width + circle->radius )
+               circle->x = -circle->radius;
+
+           if ( circle->y < -circle->radius )
+               circle->y = f->height + circle->radius;
+           else if ( circle->y >= f->height + circle->radius )
+               circle->y = -circle->radius;
+#else
+           if ( circle->x < 0 ) circle->x += f->width;
+           else if ( circle->x >= f->width ) circle->x -= f->width;
+
+           if ( circle->y < 0 ) circle->y += f->height;
+           else if ( circle->y >= f->height ) circle->y -= f->height;
+#endif
+       }
+       else /* (circle->path_type == ORBIT) */
+       {
+           circle->theta += circle->dtheta;
+
+           if ( circle->theta < 0 ) circle->theta += 2 * M_PI;
+           else if ( circle->theta > 2 * M_PI ) circle->theta -= 2 * M_PI;
+
+           circle->x = circle->r * cos(circle->theta) + circle->center->x;
+           circle->y = circle->r * sin(circle->theta) + circle->center->y;
+
+#if 0
+           if ( circle->x < -circle->radius )
+               circle->x += f->width + 2 * circle->radius;
+           else if ( circle->x >= f->width + circle->radius )
+               circle->x -= f->width + 2 * circle->radius;
+
+           if ( circle->y < -circle->radius )
+               circle->y += f->height + 2 * circle->radius;
+           else if ( circle->y >= f->height + circle->radius )
+               circle->y -= f->height + 2 * circle->radius;
+#else
+           if ( circle->x < 0 ) circle->x += f->width;
+           else if ( circle->x >= f->width ) circle->x -= f->width;
+
+           if ( circle->y < 0 ) circle->y += f->height;
+           else if ( circle->y >= f->height ) circle->y -= f->height;
+#endif
+       }
+    }
+}
+
+void drawIntersections(Display *dpy, Window window, GC fgc, struct field *f)
+{
+    int i,j;
+
+    /* One might be tempted to think 'hey, this is a crude algorithm
+     * that is going to check each of the n (n-1) / 2 possible
+     * intersections!  Why not try bsp trees, quad trees, etc, etc,
+     * etc'
+     *
+     * In practice the time spent drawing the intersection of two
+     * circles dwarfs the time takes to check for intersection.
+     * Profiling on a 640x480 screen with 100 circles shows possible
+     * speed gains to be only a couple of percent.
+     * 
+     * But hey, if you're bored, go have fun.  Let me know how it
+     * turns out.
+     */
+
+
+    for(i = 0; i < f->num_circles; ++i)
+    {
+       Circle *c1 = f->circles + i;
+
+       if ( !f->draw_centers )
+       {
+           /* the default branch */
+
+           for(j = i + 1; j < f->num_circles; ++j)
+           {
+               double d, dsqr, dx, dy;
+               Circle *c2 = f->circles + j;
+
+               ++f->possible_intersections;
+               dx = c2->x - c1->x;
+               dy = c2->y - c1->y;
+
+               dsqr = dx * dx + dy * dy;
+               d = sqrt(dsqr);
+
+               if ( (fabs(dx) < (c1->radius + c2->radius)) &&
+                    (fabs(dy) < (c1->radius + c2->radius)) &&
+                    ( d < (c1->radius + c2->radius) ) &&
+                    ( d > fabs(c1->radius - c2->radius) ) )
+               {
+                   double d1, d2, r1sqr; 
+                   double bx, by;
+                   double midpx, midpy;
+                   double int1x, int1y;
+                   double int2x, int2y;
+                   int s;
+
+                   /* woo-hoo.  the circles are neither outside nor
+                    * inside each other.  they intersect.  
+                    *
+                    * Now, compute the coordinates of the points of
+                    * intersection 
+                    */
+
+                   ++f->intersection_count;
+
+                   /* unit vector in direction of c1 to c2 */
+                   bx = dx / d;
+                   by = dy / d;
+
+                   r1sqr = c1->radius * c1->radius;
+
+                   /* distance from c1's center midpoint of intersection
+                    * points */
+
+                   d1 = 0.5 * (r1sqr - c2->radius * c2->radius + dsqr) / d;
+               
+                   midpx = c1->x + d1 * bx;
+                   midpy = c1->y + d1 * by;
+
+                   /* distance from midpoint to points of intersection */
+
+                   d2 = sqrt(r1sqr - d1 * d1);
+
+                   int1x = midpx + d2 * by;
+                   int1y = midpy - d2 * bx;
+
+                   int2x = midpx - d2 * by;
+                   int2y = midpy + d2 * bx;
+
+                   for(s = 0; s < c1->num_painters; ++s)
+                   {
+                       paint(c1->painters + s, int1x, int1y, int2x, int2y, 
+                             dpy, window, fgc, f);
+                   }
+               }
+           }
+       }
+       else /* f->draw_centers */
+       {
+           XDrawPoint(dpy, window, fgc, c1->x, c1->y);
+       }
+    }
+}
+
+
+void screenhack(Display * dpy, Window window)
+{
+    struct field *f = init_field();
+
+    unsigned int max_cycles = 0;
+    int growth_delay = 0;
+
+    GC fgc;
+    XGCValues gcv;
+    XWindowAttributes xgwa;
+
+#ifdef TIME_ME
+    int frames;
+    struct timeval tm1, tm2;
+    double tdiff;
+#endif
+
+    growth_delay = (get_integer_resource("growthDelay", "Integer"));
+    max_cycles = (get_integer_resource("maxCycles", "Integer"));
+    f->num_circles = (get_integer_resource("numCircles", "Integer"));
+    f->percent_orbits = (get_integer_resource("percentOrbits", "Integer"));
+    f->base_orbits = (get_integer_resource("baseOrbits", "Integer"));
+    f->base_on_center = (get_boolean_resource("baseOnCenter", "Boolean"));
+    f->draw_centers = (get_boolean_resource("drawCenters", "Boolean"));
+
+    if (f->num_circles <= 1) 
+    {
+        fprintf(stderr, "%s: Minimum number of circles is 2\n", 
+                progname);
+        return;
+    }
+
+    if ( (f->percent_orbits < 0) || (f->percent_orbits > 100) )
+    {
+        fprintf(stderr, "%s: percent-oribts must be between 0 and 100\n", 
+                progname);
+        return;
+    }
+
+    if ( (f->base_orbits < 0) || (f->base_orbits > 100) )
+    {
+        fprintf(stderr, "%s: base-oribts must be between 0 and 100\n", 
+                progname);
+        return;
+    }
+
+    if ( f->percent_orbits == 100 )
+       f->base_on_center = True;
+
+    XGetWindowAttributes(dpy, window, &xgwa);
+
+    build_colors(f, dpy, &xgwa);
+
+    gcv.foreground = get_pixel_resource("foreground", "Foreground",
+                                       dpy, xgwa.colormap);
+    gcv.background = get_pixel_resource("background", "Background",
+                                       dpy, xgwa.colormap);
+
+    fgc = XCreateGC(dpy, window, GCForeground, &gcv);
+
+    f->height = xgwa.height;
+    f->width = xgwa.width;
+    f->visdepth = xgwa.depth;
+    f->fgcolor = gcv.foreground;
+    f->bgcolor = gcv.background;
+
+    /* Initialize stuff */
+    build_field(dpy, window, xgwa, fgc, f);
+
+#ifdef TIME_ME
+    gettimeofday(&tm1, NULL);
+    frames = 0;
+#endif
+
+    while (1) 
+    {
+        if ((f->cycles % 10) == 0) 
+       {
+            /* Restart if the window size changes */
+            XGetWindowAttributes(dpy, window, &xgwa);
+
+            if (f->height != xgwa.height || f->width != xgwa.width) 
+           {
+                f->height = xgwa.height;
+                f->width = xgwa.width;
+                f->visdepth = xgwa.depth;
+
+                build_field(dpy, window, xgwa, fgc, f);
+                XSetForeground(dpy, fgc, gcv.background);
+                XFillRectangle(dpy, window, fgc, 0, 0, xgwa.width, xgwa.height);
+                XSetForeground(dpy, fgc, gcv.foreground);
+            }
+            screenhack_handle_events(dpy);
+        }
+
+       moveCircles(f);
+       drawIntersections(dpy, window, fgc, f);
+
+        f->cycles++;
+
+
+        XSync(dpy, False);
+
+        screenhack_handle_events(dpy);
+
+        if (f->cycles >= max_cycles && max_cycles != 0)
+       {
+            build_field(dpy, window, xgwa, fgc, f);
+            XSetForeground(dpy, fgc, gcv.background);
+            XFillRectangle(dpy, window, fgc, 0, 0, xgwa.width, xgwa.height);
+            XSetForeground(dpy, fgc, gcv.foreground);
+        }
+
+        if (growth_delay)
+            usleep(growth_delay);
+
+#ifdef TIME_ME
+       frames++;
+       gettimeofday(&tm2, NULL);
+
+       tdiff = (tm2.tv_sec - tm1.tv_sec) 
+           + (tm2.tv_usec - tm1.tv_usec) * 0.00001;
+
+       if ( tdiff > 1 )
+       {
+           fprintf(stderr, "fps: %d %f %f\n", 
+                   frames, tdiff, frames / tdiff );
+
+           fprintf(stderr, "intersections: %d %d %f\n", 
+                   f->intersection_count, f->possible_intersections, 
+                   ((double)f->intersection_count) / 
+                   f->possible_intersections);
+
+           fprintf(stderr, "fpi: %f\n", 
+                   ((double)frames) / f->intersection_count );
+
+           frames = 0;
+           tm1.tv_sec = tm2.tv_sec;
+           tm1.tv_usec = tm2.tv_usec;
+
+           f->intersection_count = f->possible_intersections = 0;
+       }
+#endif
+    }
+}
+
diff --git a/hacks/interaggregate.man b/hacks/interaggregate.man
new file mode 100644 (file)
index 0000000..07407b1
--- /dev/null
@@ -0,0 +1,72 @@
+.TH Interaggregate 1 "08-Oct-04" "X Version 11"
+.SH NAME
+interaggregate - Visualize the momentary and aggregate intersections 
+between slowly moving circles.
+.SH SYNOPSIS
+.B interaggregate
+[\-display \fIhost:display.screen\fP]
+[\-foreground \fIcolor\fP]
+[\-background \fIcolor\fP]
+[\-num\-discs \fIdisc count\fP]
+[\-draw\-delay \fIdelayms\fP]
+[\-max\-riders \fImaxr\fP]
+[\-max\-radius \fImaxradius\fP]
+.SH DESCRIPTION
+The Intersection Aggregate is a fun visualization defining the relationships 
+between objects with Casey Reas, William Ngan, and Robert Hodgin. Commissioned 
+for display at the Whitney Museum of American Art.
+
+A surface filled with 100 medium to small sized circles. Each circle has a 
+different size and direction, but moves at the same slow rate. Display:
+
+    A. The instantaneous intersections of the circles.
+    B. The aggregate intersections of the circles.
+
+Ported to XScreensaver from the art project "InterAggregate" at
+http://www.complexification.net by J.Tarbell
+.SH OPTIONS
+.I interaggregate
+accepts the following options:
+.TP 8
+.B \-num\-discs \fIdisc count\fP (Default: \fI85\fP)
+Number of slowly moving and growing discs to use.  The more discs, 
+the more CPU power.
+.TP 8
+.B \-draw\-delay \fIdelayms\fP (Default: \fI30000\fP)
+Delay in ms between drawing cycles.  More delay, slower (but smoother 
+and less CPU intensive.)
+art.
+.TP 8
+.B \-max\-riders \fImaxrider\fP (Default: \fI40\fP)
+Maximum number of 'riders', single dots moving around the edge of the discs.
+.TP 8
+.B \-max\-radius \fImaxradius\fP (Default: \fI100\fP)
+Maximum possible radius of a disc.
+.TP 8
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global
+resources stored in the RESOURCE_MANAGER property.
+.TP8
+.SH BUGS
+.PP
+.TP 8
+Setting the background to anything besides black confuses the intensity 
+algorithm and will look terrible.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2003 by J. Tarbell
+(complex@complexification.net, http://www.complexification.net).
+
+Ported to XScreensaver 2005 by David Agraz.
+.SH AUTHOR
+J. Tarbell <complex@complexification.net>, Jun-03
+
+David Agraz <dagraz@mindspring.com>, Apr-05.
index 7ad335e768f287c54ff6d09e6a99100650a1ab64..753aba5a7edc1a4f54959a72f47ceff6bd2ea8ca 100644 (file)
@@ -30,6 +30,7 @@
  * implied warranty.
  */
 
+#include <math.h>
 #include "screenhack.h"
 #include <X11/Xutil.h>
 #include <stdio.h>
@@ -211,8 +212,8 @@ inline unsigned long trans_point(int x1, int y1, unsigned long myc, float a, str
         if (a >= 1.0) {
             ref_pixel(f, x1, y1) = myc;
         } else {
-            unsigned short int or, og, ob;
-            unsigned short int r, g, b;
+            unsigned short int or = 0, og = 0, ob = 0;
+            unsigned short int r = 0, g = 0, b = 0;
             unsigned short int nr, ng, nb;
             unsigned long c;
 
index a0943fb21f80ee1498095c01708991e3af56d4d8..6288bd08743a31aedda862f77b83a3d747369b07 100644 (file)
@@ -7,7 +7,7 @@ static const char sccsid[] = "@(#)juggle.c      5.10 2003/09/02 xlockmore";
 #endif
 
 /*-
- * Copyright (c) 1996 by Tim Auckland <Tim.Auckland@Procket.com>
+ * Copyright (c) 1996 by Tim Auckland <tda10.geo@yahoo.com>
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation for any purpose and without fee is hereby granted,
index 64cc06f125e29c6ab521f35fd16effe124e65eb5..576fae6f0fa7c69fc62626574b1fcfbedb33789b 100644 (file)
@@ -1,12 +1,12 @@
 .TH XScreenSaver 1 "27-May-97" "X Version 11"
 .SH NAME
-lisa - draws animated full-loop lisajous figures
+lisa - draws animated full-loop lissajous figures
 .SH SYNOPSIS
 .B lisa
 [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-size \fIinteger\fP]
 
 .SH DESCRIPTION
-The \fIlisa\fP program draws animated full-loop lisajous figures.
+The \fIlisa\fP program draws animated full-loop lissajous figures.
 .SH OPTIONS
 .I lisa
 accepts the following options:
index 6b488f35a346ab775954472452a209421d508220..b6c6af4442f2fed59d817aad7ecd794306a255c9 100644 (file)
@@ -5,8 +5,8 @@ lmorph \- morphing lines
 .B lmorph
 [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-points \fIint\fP] [\-steps \fIint\fP] [\-delay \fIusecs\fP] [\-figtype \fItype\fP]
 .SH DESCRIPTION
-The \fIlmorph\fP program shows smooth and non-linear morphing between
-1D curves.
+The \fIlmorph\fP program generates random spline-ish line drawings and
+morphs between them.
 .SH OPTIONS
 .I lmorph
 accepts the following options:
index 298db17af5d6ca20cd5354641544329a7e69f8d4..4a67f381644c600809b936ad62dbe54300c3605c 100644 (file)
@@ -1140,7 +1140,7 @@ static void
 init_adam(ModeInfo * mi)
 {
        loopstruct *lp = &loops[MI_SCREEN(mi)];
-       XPoint      start, dirx, diry;
+       XPoint      start = { 0, 0 }, dirx = { 0, 0 }, diry = { 0, 0 };
        int         i, j, dir;
 
 #ifdef DELAYDEBUGLOOP
index 9371b276cbd40c99c2d1b765b6be527fbd109d7f..ba80e835e399d43893942063531318d25123831e 100644 (file)
@@ -1377,7 +1377,9 @@ find_dead_regions(void)
          if((x < logo_x || x > logo_x + logo_width / grid_width) ||
             (y < logo_y || y > logo_y + logo_height / grid_height))
          {
-           if (!(maze[x][y] & WALL_ANY))
+            /* if we are completely surrounded by walls, just draw the
+               inside part */
+            if ((maze[x][y] & WALL_ANY) == WALL_ANY)
              XFillRectangle(dpy, win, ugc,
                             border_x + bw + grid_width * x,
                             border_y + bw + grid_height * y,
index 97b1b797ebfa02933b83c00d5bf8788e99ce2eab..87e3675ea94fe21b084d5233d5a76fb9c797341b 100644 (file)
@@ -23,11 +23,11 @@ munch - munching squares screen hack
 .SH DESCRIPTION
 The
 .I munch
-program preforms the munching squares hack until killed.  It picks square
+program performs the munching squares hack until killed.  It picks square
 size, position, and gravity randomly; configurable options are listed
 below.
 .PP
-The munching squares hack cosists of drawing Y = X XOR T for a range of X
+The munching squares hack consists of drawing Y = X XOR T for a range of X
 and T over and over until all the possible combinations of X and T have
 come up.  It was reportedly discovered by Jackson Wright in 1962 and took 5
 instructions of PDP-6 code.
index 5d35118d330d39574d3b8d9e0f5164a131fcc7d9..9e8c959ef9cae1958c79d982ce9a409d199a0d55 100644 (file)
@@ -527,7 +527,7 @@ bottom_right (lev_t * level, unsigned int *passed_x, unsigned int *passed_y)
 static void
 init_bonus_dots (lev_t * level)
 {
-    unsigned int x, y;
+    unsigned int x = 0, y = 0;
     top_left (level, &x, &y);
     bonus_dots[TOP_LEFT].x = x;
     bonus_dots[TOP_LEFT].y = y;
index aff0ba2864a94d01c5fbe4c420a3da2c76363ff3..80d03cddb80a5d159e8071a29bb4fc6dfa08536d 100644 (file)
@@ -77,7 +77,7 @@ Set the initial rate of laser fire.
 Have the computer player skip the learning process.
 .SH BUGS
 The layout of the screen isn't quite the same as the game this program
-tries to emulate.  In this this program, the missles come out of the
+tries to emulate.  In this this program, the missiles come out of the
 cities; when really, there are supposed to be three missile bases on
 hills, with the cities in the valleys between them.
 
index 55920e9b1f0c412321d6f8e258834d6036919159..c01f5a5a17b7e37aaac8b749483f1c49720ef078 100644 (file)
@@ -1147,7 +1147,7 @@ launch_text_generator (p_state *state)
   /* oprogram contains a "%d" where the current number of columns goes
    */
   strcpy (program, "( ");
-  sprintf (program + strlen(program), oprogram, state->grid_width);
+  sprintf (program + strlen(program), oprogram, state->grid_width-1);
   strcat (program, " ) 2>&1");
 
 #ifdef HAVE_FORKPTY
index 90dd67dc92eb5e2b261be8b67890753f3ed1d81c..d1063fa4088ef63c62979a6267bedb63fbf269a5 100644 (file)
@@ -75,7 +75,7 @@ This implies \fI\-mono\fP, in that only two colors can be used.
 .B \-transparent
 If this is specified, and \fI\-count\fP is greater than 1, then each qix
 will be drawn in one color, and when they overlap, the colors will be mixed.
-This looks best in conjuction with \fI\-solid\fP.
+This looks best in conjunction with \fI\-solid\fP.
 .TP 8
 .B \-non\-transparent
 Turns off \fI\-transparent\fP.
index 071786a0511f85b05b16b54063cb190b1b49755a..dd5253bc259974f74f6cb4dcee38824b12328b5c 100644 (file)
@@ -198,7 +198,8 @@ pixack_frame(char *pix_buf)
     int ii = i + 1;
     char *q = pix_buf + width * i;
     short *qq = ((short *) pix_buf) + width * i;
-    long  *qqq = ((long *) pix_buf) + width * i;
+/*  long  *qqq = ((long *) pix_buf) + width * i;  -- crashes on Alpha */
+    int   *qqq = ((int  *) pix_buf) + width * i;
     ushort *i1 = r1 + 1 + w2 * ii;
     ushort *i2 = r2 + 1 + w2 * ii;
     ushort *o1 = r1b + 1 + w2 * ii;
index 27dde18c40e7ff38fe19133565c3ac2d05cd6cdd..2956f4b316cb685604d4822dc98fd2097b2e7245 100644 (file)
@@ -50,7 +50,7 @@ Make the rectangles should wander around the screen.
 Make the rectangles be stationary.  This is the default.
 .TP 8
 .B \-n \fIcount\fP
-How many rectangles to animate simultaniously.  Default 2.
+How many rectangles to animate simultaneously.  Default 2.
 .TP 8
 .B \-no\-shm
 Disable use of the SHM extension, even if it appears to be available.
index ff5a29603097fec4669fe722d9888c7d9afb5a8d..22c7fe28cc7982368ca3f7128006516cce4deef3 100644 (file)
@@ -11,6 +11,9 @@
 
 #include "screenhack.h"
 
+enum { DOWN = 0, LEFT, UP, RIGHT };
+enum { VERTICAL, HORIZONTAL };
+
 static int grid_size;
 static int pix_inc;
 static int hole_x, hole_y;
@@ -201,7 +204,7 @@ init_slide (Display *dpy, Window window)
     }
 
   XSync (dpy, False);
-  if (delay2) usleep (delay2 * 2);
+  if (delay2) usleep (delay2);
  for (i = 0; i < grid_size; i += pix_inc)
    {
      XPoint points [3];
@@ -239,42 +242,40 @@ init_slide (Display *dpy, Window window)
                  xoff + grid_size * hole_x,
                  yoff + grid_size * hole_y,
                  grid_size, grid_size);
+
+  XSync (dpy, False);
+  if (delay2) usleep (delay2);
 }
 
 static void
 slide1 (Display *dpy, Window window)
 {
   /* this code is a total kludge, but who cares, it works... */
- int i, x, y, ix, iy, dx, dy, dir, w, h, size, inc;
+ int rnd, i, x, y, ix, iy, dx, dy, dir, w, h, size, inc;
  static int last = -1;
- do {
-   dir = random () % 4;
-   switch (dir)
-     {
-     case 0: dx = 0,  dy = 1;  break;
-     case 1: dx = -1, dy = 0;  break;
-     case 2: dx = 0,  dy = -1; break;
-     case 3: dx = 1,  dy = 0;  break;
-     default: abort ();
-     }
- } while (dir == last ||
-         hole_x + dx < 0 || hole_x + dx >= grid_w ||
-         hole_y + dy < 0 || hole_y + dy >= grid_h);
- if (grid_w > 1 && grid_h > 1)
-   last = (dir == 0 ? 2 : dir == 2 ? 0 : dir == 1 ? 3 : 1);
 
- switch (dir)
-   {
-   case 0: size = 1 + (random()%(grid_h - hole_y - 1)); h = size; w = 1; break;
-   case 1: size = 1 + (random()%hole_x);               w = size; h = 1; break;
-   case 2: size = 1 + (random()%hole_y);               h = size; w = 1; break;
-   case 3: size = 1 + (random()%(grid_w - hole_x - 1)); w = size; h = 1; break;
-   default: abort ();
-   }
-
- if (dx == -1) hole_x -= (size - 1);
- else if (dy == -1) hole_y -= (size - 1);
+ if (last == -1) last = random () % 2;
 
+/* alternate between horizontal and vertical slides */
+/* note that dir specifies the direction the _hole_ moves, not the tiles */
+ if (last == VERTICAL) {
+   if ((rnd = random () % (grid_w - 1)) < hole_x) {
+     dx = -1; dir = LEFT;  hole_x -= rnd;
+   } else {
+     dx =  1; dir = RIGHT; rnd -= hole_x;
+   }
+   dy = 0; w = size = rnd + 1; h = 1;
+   last = HORIZONTAL;
+ } else {
+   if ((rnd = random () % (grid_h - 1)) < hole_y) {
+     dy = -1; dir = UP;    hole_y -= rnd;
+   } else {
+     dy =  1; dir = DOWN;  rnd -= hole_y;
+   }
+   dx = 0; h = size = rnd + 1; w = 1;
+   last = VERTICAL;
+ }
  ix = x = xoff + (hole_x + dx) * grid_size;
  iy = y = yoff + (hole_y + dy) * grid_size;
  inc = pix_inc;
@@ -300,14 +301,14 @@ slide1 (Display *dpy, Window window)
      y -= dy * inc;
      switch (dir)
        {
-       case 0: XFillRectangle (dpy, window, gc,
+       case DOWN: XFillRectangle (dpy, window, gc,
                               ix, y + grid_size * h, grid_size * w, iy - y);
         break;
-       case 1: XFillRectangle (dpy, window, gc, ix, iy, x - ix, grid_size * h);
+       case LEFT: XFillRectangle (dpy, window, gc, ix, iy, x - ix, grid_size * h);
         break;
-       case 2: XFillRectangle (dpy, window, gc, ix, iy, grid_size * w, y - iy);
+       case UP: XFillRectangle (dpy, window, gc, ix, iy, grid_size * w, y - iy);
         break;
-       case 3: XFillRectangle (dpy, window, gc,
+       case RIGHT: XFillRectangle (dpy, window, gc,
                               x + grid_size * w, iy, ix - x, grid_size * h);
         break;
        }
@@ -317,10 +318,10 @@ slide1 (Display *dpy, Window window)
    }
  switch (dir)
    {
-   case 0: hole_y += size; break;
-   case 1: hole_x--; break;
-   case 2: hole_y--; break;
-   case 3: hole_x += size; break;
+   case DOWN: hole_y += size; break;
+   case LEFT: hole_x--; break;
+   case UP: hole_y--; break;
+   case RIGHT: hole_x += size; break;
    }
 }
 
index 67520d2f92c6d3973faf1bc0e9a4a8db2f6b48c7..ea38835570531f3c8a2cd6e15a983813a8fca2ca 100644 (file)
@@ -3,10 +3,17 @@
 slidescreen - permute the screen image like an 8-puzzle
 .SH SYNOPSIS
 .B slidescreen
-[\-display \fIhost:display.screen\fP] [\-background \fIcolor\fP]
-[\-grid-size \fIpixels\fP] [\-ibw \fIpixels\fP] [\-increment \fIpixels\fP]
-[\-delay \fIusecs\fP] [\-delay2 \fIusecs\fP]
-[\-window] [\-root] [\-install] [\-visual \fIvisual\fP]
+[\-display \fIhost:display.screen\fP]
+[\-background \fIcolor\fP]
+[\-grid-size \fIpixels\fP]
+[\-ibw \fIpixels\fP]
+[\-increment \fIpixels\fP]
+[\-delay \fIusecs\fP]
+[\-delay2 \fIusecs\fP]
+[\-window]
+[\-root]
+[\-install]
+[\-visual \fIvisual\fP]
 .SH DESCRIPTION
 The \fIslidescreen\fP program takes an image, divides it into
 a grid, deletes a random square of that grid, and then randomly slides 
@@ -52,7 +59,7 @@ How much of a delay should be introduced between steps of the animation of
 the motion of each segment.  Default 50000, which is 0.05 seconds.  This
 is closely related to the \fI\-increment\fP parameter.
 .TP 8
-.B \-delay \fImicroseconds\fP
+.B \-delay2 \fImicroseconds\fP
 How much of a delay should be introduced between the end of the motion of
 one segment and the beginning of the motion of another.  Default 1000000,
 which is one second.
index 6b1453398ce7e8a92d96c77622f3877ff363c65f..e2ebf15472978a2523f9d17aba599c6ee2fc2b7b 100644 (file)
@@ -38,7 +38,7 @@
  * software for any purpose.  It is provided "as is" without express or 
  * implied warranty.
  *
- * $Revision: 1.37 $
+ * $Revision: 1.38 $
  *
  * Version 1.0 April 27, 1998.
  * - Initial version
@@ -950,9 +950,18 @@ init_ping(void)
        goto ping_init_error;
     }
 
-    /* Create the ICMP socket */
+    /* Create the ICMP socket.  Do this before dropping privs.
 
-    if ((pi->icmpsock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) >= 0) {
+       Raw sockets can only be opened by root (or setuid root), so we
+       only try to do this when the effective uid is 0.
+
+       We used to just always try, and notice the failure.  But apparently
+       that causes "SELinux" to log spurious warnings when running with the
+       "strict" policy.  So to avoid that, we just don't try unless we
+       know it will work.
+     */
+    if (geteuid() == 0 &&
+        (pi->icmpsock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) >= 0) {
       socket_initted_p = True;
     }
 
index 8dca55bc3407fb8d5a867a912e050b69dd5d6364..aae3b5b0bed253fe72a5bf9837d01ea62a29f00c 100644 (file)
@@ -205,7 +205,7 @@ implied warranty.
 Stephen Martin <smartin@canada.com>, 3-nov-98.
 
 Thanks to Tom Kelly for suggesting a modular approach to the sensor
-amoung other things.
+among other things.
 
 Thomas Bahls <thommy@cs.tu-berlin.de> hacked the "ttl" option, 12-jul-98.
 
index 175e1a538c4d6a14c2d891395b3352386e0baf8f..aac2d18bcc98f46b3e676ce087e92613285a5f9c 100644 (file)
@@ -287,7 +287,7 @@ perspective (void)
             }
                        r = rotation_bias + (int)(vertigo*zcc); MODULO(r, ROTS);
 
-                       xvals[t][j] = xoffset + width/2 +
+                       xvals[t][j] = xoffset + (width>>1) +
                                          (int)(xx * costab[r] - yy * sintab[r]);
                        maxx[t] = MAX(maxx[t], xvals[t][j]);
                        minx[t] = MIN(minx[t], xvals[t][j]);
index 63c70d4e71db2f8fa3c3a933f7c3d098e641e081..1bc19c8d79b54023e7d8c2f07bdabdb42dfff61f 100644 (file)
@@ -33,7 +33,7 @@ How much of a delay should be introduced between steps of the animation.
 Default 10000, or about 1/100th second.
 .TP 8
 .B \-cycle\-delay \fImicroseconds\fP
-How long to wait between shifing the colormap by one step.
+How long to wait between shifting the colormap by one step.
 Default 100000, or about 1/10th second.
 .TP 8
 .B \-thickness \fIpixels\fP
index a2c0af601f53647c1696a8a0e0c213d5bb9a359d..7d992311c2a60fc06fdd2d450d43b96237855b1e 100644 (file)
@@ -29,6 +29,7 @@
  * implied warranty.
  */
 
+#include <math.h>
 #include "screenhack.h"
 #include <X11/Xutil.h>
 #include <stdio.h>
@@ -320,8 +321,8 @@ inline unsigned long trans_point(int x1, int y1, unsigned long myc, float a,
         if (a >= 1.0) {
             ref_pixel(f, x1, y1) = myc;
         } else {
-            int or, og, ob;
-            int r, g, b;
+            int or = 0, og = 0, ob = 0;
+            int r = 0, g = 0, b = 0;
             int nr, ng, nb;
             unsigned long c;
 
index 54ef3fddc35adcdb0955c256cab8e72f23b74f2b..8183399413e6567b6266b1c457e74b556a808ba0 100644 (file)
@@ -118,7 +118,7 @@ relation from T3D to Cray's T3D, even the balls surrounding T3D on
 some posters weren't an inspiration for T3D. I don't know anything
 about the other way round.
 
-The programming style of T3D isn't intented as example of good style,
+The programming style of T3D isn't intended as example of good style,
 but as example of how a fast prototyped demo may look like. T3D wasn't
 created to be useful, it was created to be nice.
 
index 44a2a59f294e7cb96eacac744f37ccfc07989c79..ae551ba7261c96f4325ec578c376e59abdeb734f 100644 (file)
@@ -6,7 +6,7 @@ static const char sccsid[] = "@(#)thornbird.c   5.00 2000/11/01 xlockmore";
 #endif
 
 /*-
- * Copyright (c) 1996 by Tim Auckland <Tim.Auckland@Procket.com>
+ * Copyright (c) 1996 by Tim Auckland <tda10.geo@yahoo.com>
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation for any purpose and without fee is hereby granted,
index 3f915125f7721ea33ed0ac01a4082e6598f2f7b5..62c822892909d398981b7ecbe70ccc187f9c8b62 100644 (file)
@@ -77,7 +77,7 @@ The number of screenfuls to draw before erasing. Default is 25.
 
 .TP 8
 .B \-not-square
-Whether to force the tiles to be square. Defualt is False (not-square).
+Whether to force the tiles to be square. Default is False (not-square).
 
 .TP 8
 .B \-curves
index d958c5623c7eddfbf533cbc6f0339360ce4aa0db..aa7deb3803e46f1914c315ebdf96427367cab748 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# vidwhacker, for xscreensaver.  Copyright (c) 1998-2004 Jamie Zawinski.
+# vidwhacker, for xscreensaver.  Copyright (c) 1998-2005 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
@@ -21,7 +21,7 @@ use diagnostics;
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.25 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.28 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
 
 my $verbose = 0;
 my $use_stdin = 0;
@@ -35,6 +35,7 @@ my $screen_width = -1;
 
 my $displayer = "xscreensaver-getimage -root -file";
 
+sub which($);
 
 # apparently some versions of netpbm call it "pamoil" instead of "pgmoil"...
 #
@@ -114,28 +115,22 @@ my @filters = (
 );
 
 
-sub error {
-  ($_) = @_;
-  print STDERR "$progname: $_\n";
-  exit 1;
-}
-
 # Any files on this list will be deleted at exit.
 #
 my @all_tmpfiles = ();
 
-sub exit_cleanup {
+sub exit_cleanup() {
   print STDERR "$progname: delete tmp files\n" if ($verbose);
   unlink @all_tmpfiles;
 }
 
-sub signal_cleanup {
+sub signal_cleanup() {
   my ($sig) = @_;
   print STDERR "$progname: caught SIG$sig\n" if ($verbose);
   exit 1;
 }
 
-sub init_signals {
+sub init_signals() {
 
   $SIG{HUP}  = \&signal_cleanup;
   $SIG{INT}  = \&signal_cleanup;
@@ -151,11 +146,9 @@ sub init_signals {
 END { exit_cleanup(); }
 
 
-
-
 # returns the full path of the named program, or undef.
 #
-sub which {
+sub which($) {
   my ($prog) = @_;
   foreach (split (/:/, $ENV{PATH})) {
     if (-x "$_/$prog") {
@@ -168,7 +161,7 @@ sub which {
 
 # Choose random foreground and background colors
 #
-sub randcolors {
+sub randcolors() {
   return sprintf ("#%02x%02x%02x-#%02x%02x%02x",
                   int(rand()*60),
                   int(rand()*60),
@@ -180,7 +173,7 @@ sub randcolors {
 
 
 
-sub filter_subst {
+sub filter_subst($$$@) {
   my ($filter, $width, $height, @tmpfiles) = @_;
   my $colors = randcolors();
   $filter =~ s/\bWIDTH\b/$width/g;
@@ -192,7 +185,7 @@ sub filter_subst {
     $i++;
   }
   if ($filter =~ m/([A-Z]+)/) {
-    error "internal error: what is \"$1\"?";
+    error ("internal error: what is \"$1\"?");
   }
   $filter =~ s/  +/ /g;
   return $filter;
@@ -200,14 +193,14 @@ sub filter_subst {
 
 # Frobnicate the image in some random way.
 #
-sub frob_ppm {
+sub frob_ppm($) {
   my ($ppm_data) = @_;
   $_ = $ppm_data;
 
-  error "0-length data" if (!defined($ppm_data) || $ppm_data eq  "");
-  error "not a PPM file" unless (m/^P\d\n/s);
+  error ("0-length data") if (!defined($ppm_data) || $ppm_data eq  "");
+  error ("not a PPM file") unless (m/^P\d\n/s);
   my ($width, $height) = m/^P\d\n(\d+) (\d+)\n/s;
-  error "got a bogus PPM" unless ($width && $height);
+  error ("got a bogus PPM") unless ($width && $height);
 
   my $tmpdir = $ENV{TMPDIR};
   $tmpdir = "/tmp" unless $tmpdir;
@@ -255,13 +248,13 @@ sub frob_ppm {
 }
 
 
-sub read_config {
+sub read_config() {
   my $conf = "$ENV{HOME}/.xscreensaver";
 
   my $had_dir = defined($imagedir);
 
   local *IN;
-  open (IN, "<$conf") ||  error "reading $conf: $!";
+  open (IN, "<$conf") ||  error ("reading $conf: $!");
   while (<IN>) {
     if (!$imagedir && m/^imageDirectory:\s+(.*)\s*$/i) { $imagedir = $1; }
     elsif (m/^grabVideoFrames:\s+true\s*$/i)     { $video_p = 1; }
@@ -276,14 +269,14 @@ sub read_config {
   $imagedir = undef unless ($imagedir && $imagedir ne '');
 
   if (!$file_p && !$video_p) {
-#    error "neither grabVideoFrames nor chooseRandomImages are set\n\t" .
+#    error ("neither grabVideoFrames nor chooseRandomImages are set\n\t") .
 #      "in $conf; $progname requires one or both."
     $file_p = 1;
   }
 
   if ($file_p) {
-    error "no imageDirectory set in $conf" unless $imagedir;
-    error "imageDirectory $imagedir doesn't exist" unless (-d $imagedir);
+    error ("no imageDirectory set in $conf") unless $imagedir;
+    error ("imageDirectory $imagedir doesn't exist") unless (-d $imagedir);
   }
 
   if ($verbose > 1) {
@@ -295,7 +288,7 @@ sub read_config {
 }
 
 
-sub get_ppm {
+sub get_ppm() {
   if ($use_stdin) {
     print STDERR "$progname: reading from stdin\n" if ($verbose > 1);
     my $ppm = "";
@@ -314,7 +307,7 @@ sub get_ppm {
     elsif ($file_p)  { $do_file_p = 1; }
     elsif ($video_p) { $do_file_p = 0; }
     else {
-      error "internal error: not grabbing files or video?";
+      error ("internal error: not grabbing files or video?");
     }
 
     my $v = ($verbose <= 1 ? "" : "-" . ("v" x ($verbose-1)));
@@ -332,7 +325,7 @@ sub get_ppm {
       print STDERR "$progname: running: $cmd\n" if ($verbose > 1);
       my $fn = `$cmd`;
       $fn =~ s/\n$//s;
-      error "didn't get a file?" if ($fn eq "");
+      error ("didn't get a file?") if ($fn eq "");
 
       print STDERR "$progname: selected file $fn\n" if ($verbose > 1);
 
@@ -344,7 +337,9 @@ sub get_ppm {
       elsif ($fn =~ m/\.tiff?/i) { $cmd = "tifftopnm < \"$fn\""; }
       elsif ($fn =~ m/\.p[bgp]m/i) { return `cat \"$fn\"`; }
       else {
-        error "unrecognized file extension on $fn";
+        print STDERR "$progname: $fn: unrecognized file extension\n";
+        # go around the loop and get another
+        return undef;
       }
 
       print STDERR "$progname: converting with: $cmd\n" if ($verbose > 1);
@@ -355,12 +350,12 @@ sub get_ppm {
 
       print STDERR "$progname: running: $cmd\n" if ($verbose > 1);
       $ppm = `$cmd`;
-      error "no data?" if ($ppm eq "");
-      error "not a PPM file" unless ($ppm =~ m/^P\d\n/s);
+      error ("no data?") if ($ppm eq "");
+      error ("not a PPM file") unless ($ppm =~ m/^P\d\n/s);
 
       $_ = $ppm;
       my ($width, $height) = m/^P\d\n(\d+) (\d+)\n/s;
-      error "got a bogus PPM" unless ($width && $height);
+      error ("got a bogus PPM") unless ($width && $height);
       print STDERR "$progname: grabbed ${width}x$height PPM\n"
         if ($verbose > 1);
       $_ = 0;
@@ -370,11 +365,11 @@ sub get_ppm {
   }
 }
 
-sub dispose_ppm {
+sub dispose_ppm($) {
   my ($ppm) = @_;
 
-  error "0-length data" if (!defined($ppm) || $ppm eq  "");
-  error "not a PPM file" unless ($ppm =~ m/^P\d\n/s);
+  error ("0-length data") if (!defined($ppm) || $ppm eq  "");
+  error ("not a PPM file") unless ($ppm =~ m/^P\d\n/s);
 
   if ($use_stdout) {
     print STDERR "$progname: writing to stdout\n" if ($verbose > 1);
@@ -387,7 +382,7 @@ sub dispose_ppm {
     local *OUT;
     unlink $fn;
     push @all_tmpfiles, $fn;
-    open (OUT, ">$fn") || error "writing $fn: $!";
+    open (OUT, ">$fn") || error ("writing $fn: $!");
     print OUT $ppm;
     close OUT;
 
@@ -412,7 +407,7 @@ sub dispose_ppm {
 
 my $stdin_ppm = undef;
 
-sub vidwhack {
+sub vidwhack() {
   my $ppm;
   if ($use_stdin) {
     if (!defined($stdin_ppm)) {
@@ -436,7 +431,13 @@ sub vidwhack {
 }
 
 
-sub usage {
+sub error($) {
+  my ($err) = @_;
+  print STDERR "$progname: $err\n";
+  exit 1;
+}
+
+sub usage() {
   print STDERR "VidWhacker, Copyright (c) 2001 Jamie Zawinski <jwz\@jwz.org>\n";
   print STDERR "            http://www.jwz.org/xscreensaver/";
   print STDERR "\n";
@@ -447,7 +448,7 @@ sub usage {
   exit 1;
 }
 
-sub main {
+sub main() {
   while ($_ = $ARGV[0]) {
     shift @ARGV;
     if ($_ eq "--verbose") { $verbose++; }
@@ -494,5 +495,5 @@ sub main {
   }
 }
 
-main;
+main();
 exit 0;
index 3c8a47051c3bf442043f62bdae84cd094b3ca2e7..6e9f62ac73b5c2960ca435544026e91197aa11c3 100644 (file)
@@ -33,7 +33,7 @@ Print diagnostics.
 .TP 8
 .B \-stdin
 Instead of grabbing an image from disk or video, read an image
-to maniupulate from stdin.  This image must be in
+to manipulate from stdin.  This image must be in
 .BR ppm (5)
 format.  The program will still perform repeated random image 
 transformations, but it will always use this one image as its starting point.
index 815d2909aa20e40d102797c8cb930a0fdad0928c..4ed61c7b434dfc7866d323bb397d3d421f74b131 100755 (executable)
@@ -60,7 +60,7 @@ use bytes;  # Larry can take Unicode and shove it up his ass sideways.
 
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.125 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.127 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
 my $copyright = "WebCollage $version, Copyright (c) 1999-2005" .
     " Jamie Zawinski <jwz\@jwz.org>\n" .
     "            http://www.jwz.org/webcollage/\n";
@@ -211,6 +211,39 @@ my %warningless_sites = (
 );
 
 
+# For decoding HTML-encoded character entities to URLs.
+#
+my %entity_table = (
+   "apos"   => '\'',
+   "quot"   => '"', "amp"    => '&', "lt"     => '<', "gt"     => '>',
+   "nbsp"   => ' ', "iexcl"  => '¡', "cent"   => '¢', "pound"  => '£',
+   "curren" => '¤', "yen"    => '¥', "brvbar" => '¦', "sect"   => '§',
+   "uml"    => '¨', "copy"   => '©', "ordf"   => 'ª', "laquo"  => '«',
+   "not"    => '¬', "shy"    => '­', "reg"    => '®', "macr"   => '¯',
+   "deg"    => '°', "plusmn" => '±', "sup2"   => '²', "sup3"   => '³',
+   "acute"  => '´', "micro"  => 'µ', "para"   => '¶', "middot" => '·',
+   "cedil"  => '¸', "sup1"   => '¹', "ordm"   => 'º', "raquo"  => '»',
+   "frac14" => '¼', "frac12" => '½', "frac34" => '¾', "iquest" => '¿',
+   "Agrave" => 'À', "Aacute" => 'Á', "Acirc"  => 'Â', "Atilde" => 'Ã',
+   "Auml"   => 'Ä', "Aring"  => 'Å', "AElig"  => 'Æ', "Ccedil" => 'Ç',
+   "Egrave" => 'È', "Eacute" => 'É', "Ecirc"  => 'Ê', "Euml"   => 'Ë',
+   "Igrave" => 'Ì', "Iacute" => 'Í', "Icirc"  => 'Î', "Iuml"   => 'Ï',
+   "ETH"    => 'Ð', "Ntilde" => 'Ñ', "Ograve" => 'Ò', "Oacute" => 'Ó',
+   "Ocirc"  => 'Ô', "Otilde" => 'Õ', "Ouml"   => 'Ö', "times"  => '×',
+   "Oslash" => 'Ø', "Ugrave" => 'Ù', "Uacute" => 'Ú', "Ucirc"  => 'Û',
+   "Uuml"   => 'Ü', "Yacute" => 'Ý', "THORN"  => 'Þ', "szlig"  => 'ß',
+   "agrave" => 'à', "aacute" => 'á', "acirc"  => 'â', "atilde" => 'ã',
+   "auml"   => 'ä', "aring"  => 'å', "aelig"  => 'æ', "ccedil" => 'ç',
+   "egrave" => 'è', "eacute" => 'é', "ecirc"  => 'ê', "euml"   => 'ë',
+   "igrave" => 'ì', "iacute" => 'í', "icirc"  => 'î', "iuml"   => 'ï',
+   "eth"    => 'ð', "ntilde" => 'ñ', "ograve" => 'ò', "oacute" => 'ó',
+   "ocirc"  => 'ô', "otilde" => 'õ', "ouml"   => 'ö', "divide" => '÷',
+   "oslash" => 'ø', "ugrave" => 'ù', "uacute" => 'ú', "ucirc"  => 'û',
+   "uuml"   => 'ü', "yacute" => 'ý', "thorn"  => 'þ', "yuml"   => 'ÿ',
+   "ndash"  => '-', "mdash"  => "--"
+);
+
+
 ##############################################################################
 #
 # Various global flags set by command line parameters, or computed
@@ -275,8 +308,8 @@ my @tripwire_words = ("aberrate", "abode", "amorphous", "antioch",
 # returns three values: the HTTP response line; the document headers;
 # and the document body.
 #
-sub get_document_1 {
-  my ( $url, $referer, $timeout ) = @_;
+sub get_document_1($$$) {
+  my ($url, $referer, $timeout) = @_;
 
   if (!defined($timeout)) { $timeout = $http_timeout; }
   if ($timeout > $http_timeout) { $timeout = $http_timeout; }
@@ -444,8 +477,8 @@ sub get_document_1 {
 # returns two values: the document headers; and the document body.
 # if the given URL did a redirect, returns the redirected-to document.
 #
-sub get_document {
-  my ( $url, $referer, $timeout ) = @_;
+sub get_document($$;$) {
+  my ($url, $referer, $timeout) = @_;
   my $start = time;
 
   if (defined($referer) && $referer eq $driftnet_magic) {
@@ -537,7 +570,7 @@ sub get_document {
 # in again, but you have to present the old cookie to get the new cookie.
 # So, by doing this, the built-in cypherpunks cookie will never go "stale".
 #
-sub set_cookie {
+sub set_cookie($$) {
   my ($host, $cookie) = @_;
   my $oc = $cookies{$host};
   return unless $oc;
@@ -563,8 +596,8 @@ sub set_cookie {
 # given a URL and the body text at that URL, selects and returns a random
 # image from it.  returns () if no suitable images found.
 #
-sub pick_image_from_body {
-  my ( $url, $body ) = @_;
+sub pick_image_from_body($$) {
+  my ($url, $body) = @_;
 
   my $base = $url;
   $_ = $url;
@@ -779,7 +812,7 @@ sub pick_image_from_body {
 ############################################################################
 
 
-sub pick_dictionary {
+sub pick_dictionary() {
   my @dicts = ("/usr/dict/words",
                "/usr/share/dict/words",
                "/usr/share/lib/dict/words");
@@ -794,7 +827,7 @@ sub pick_dictionary {
 
 # returns a random word from the dictionary
 #
-sub random_word {
+sub random_word() {
 
   local *IN;
   if (! open (IN, "<$wordlist")) {
@@ -846,7 +879,7 @@ sub random_word {
 }
 
 
-sub random_words {
+sub random_words($) {
   my ($or_p) = @_;
   my $sep = ($or_p ? "%20OR%20" : "%20");
   return (random_word . $sep .
@@ -857,20 +890,20 @@ sub random_words {
 }
 
 
-sub url_quote {
+sub url_quote($) {
   my ($s) = @_;
   $s =~ s|([^-a-zA-Z0-9.\@/_\r\n])|sprintf("%%%02X", ord($1))|ge;
   return $s;
 }
 
-sub url_unquote {
+sub url_unquote($) {
   my ($s) = @_;
   $s =~ s/[+]/ /g;
   $s =~ s/%([a-z0-9]{2})/chr(hex($1))/ige;
   return $s;
 }
 
-sub html_quote {
+sub html_quote($) {
   my ($s) = @_;
   $s =~ s/&/&amp;/gi;
   $s =~ s/</&lt;/gi;
@@ -879,12 +912,10 @@ sub html_quote {
   return $s;
 }
 
-sub html_unquote {
+sub html_unquote($) {
   my ($s) = @_;
-  $s =~ s/&lt;/</gi;       # far from exhaustive...
-  $s =~ s/&gt;/</gi;
-  $s =~ s/&quot;/\"/gi;
-  $s =~ s/&amp;/&/gi;
+  $s =~ s/(&([a-z]+);)/{ $entity_table{$2} || $1; }/gexi;  # e.g., &apos;
+  $s =~ s/(&\#(\d+);)/{ chr($2) }/gexi;                    # e.g., &#39;
   return $s;
 }
 
@@ -895,7 +926,7 @@ sub html_unquote {
 # Note that this list contains all kinds of internal search engine
 # junk URLs too -- caller must prune them.
 #
-sub pick_from_search_engine {
+sub pick_from_search_engine($$$) {
   my ( $timeout, $search_url, $words ) = @_;
 
   $_ = $words;
@@ -1003,7 +1034,7 @@ sub pick_from_search_engine {
 }
 
 
-sub depoison {
+sub depoison(@) {
   my (@urls) = @_;
   my @urls2 = ();
   foreach (@urls) {
@@ -1036,7 +1067,7 @@ sub depoison {
 # random image from it.
 # returns the url of the page loaded; the url of the image chosen.
 #
-sub pick_image_from_pages {
+sub pick_image_from_pages($$$$@) {
   my ($base, $total_hit_count, $unfiltered_link_count, $timeout, @pages) = @_;
 
   $total_hit_count = "?" unless defined($total_hit_count);
@@ -1087,8 +1118,8 @@ my $yahoo_random_link = "http://random.yahoo.com/fast/ryl";
 # returns two URLs: the page containing the image, and the image.
 # Returns () if nothing found this time.
 #
-sub pick_from_yahoo_random_link {
-  my ( $timeout ) = @_;
+sub pick_from_yahoo_random_link($) {
+  my ($timeout) = @_;
 
   print STDERR "\n\n" if ($verbose_load);
   LOG ($verbose_load, "URL: $yahoo_random_link");
@@ -1130,8 +1161,8 @@ my $alta_vista_random_link = "http://www.altavista.com/image/randomlink";
 # returns two URLs: the page containing the image, and the image.
 # Returns () if nothing found this time.
 #
-sub pick_from_alta_vista_random_link {
-  my ( $timeout ) = @_;
+sub pick_from_alta_vista_random_link($) {
+  my ($timeout) = @_;
 
   print STDERR "\n\n" if ($verbose_load);
   LOG ($verbose_load, "URL: $alta_vista_random_link");
@@ -1177,8 +1208,8 @@ my $alta_vista_images_url = "http://www.altavista.com/image/results" .
                             "&q=";
 
 # avimages
-sub pick_from_alta_vista_images {
-  my ( $timeout ) = @_;
+sub pick_from_alta_vista_images($) {
+  my ($timeout) = @_;
 
   my $words = random_word();
   my $page = (int(rand(9)) + 1);
@@ -1234,8 +1265,8 @@ my $google_images_url =     "http://images.google.com/images" .
                             "&q=";
 
 # googleimgs
-sub pick_from_google_images {
-  my ( $timeout, $words, $max_page ) = @_;
+sub pick_from_google_images($;$$) {
+  my ($timeout, $words, $max_page) = @_;
 
   if (!defined($words)) {
     $words = random_word;   # only one word for Google
@@ -1291,8 +1322,8 @@ sub pick_from_google_images {
 
 
 # googlenums
-sub pick_from_google_image_numbers {
-  my ( $timeout ) = @_;
+sub pick_from_google_image_numbers($) {
+  my ($timeout) = @_;
 
   my $max = 9999;
   my $number = int(rand($max));
@@ -1360,8 +1391,8 @@ my @photomakers = (
 
 
 # googlephotos
-sub pick_from_google_image_photos {
-  my ( $timeout ) = @_;
+sub pick_from_google_image_photos($) {
+  my ($timeout) = @_;
 
   my $i = int(rand($#photomakers + 1));
   my $fn = $photomakers[$i];
@@ -1389,8 +1420,8 @@ my $alta_vista_url = "http://www.altavista.com/web/results" .
                      "&aqo=";
 
 # avtext
-sub pick_from_alta_vista_text {
-  my ( $timeout ) = @_;
+sub pick_from_alta_vista_text($) {
+  my ($timeout) = @_;
 
   my $words = random_words(0);
   my $page = (int(rand(9)) + 1);
@@ -1447,8 +1478,8 @@ my $hotbot_search_url =("http://hotbot.lycos.com/default.asp" .
                         "&cobrand=undefined" .
                         "&query=");
 
-sub pick_from_hotbot_text {
-  my ( $timeout ) = @_;
+sub pick_from_hotbot_text($) {
+  my ($timeout) = @_;
 
   $last_search = $hotbot_search_url;   # for warnings
 
@@ -1498,8 +1529,8 @@ my $lycos_search_url = "http://search.lycos.com/default.asp" .
                        "&tab=web" .
                        "&query=";
 
-sub pick_from_lycos_text {
-  my ( $timeout ) = @_;
+sub pick_from_lycos_text($) {
+  my ($timeout) = @_;
 
   $last_search = $lycos_search_url;   # for warnings
 
@@ -1554,8 +1585,8 @@ my $yahoo_news_url = "http://news.search.yahoo.com/search/news" .
                      "&p=";
 
 # yahoonews
-sub pick_from_yahoo_news_text {
-  my ( $timeout ) = @_;
+sub pick_from_yahoo_news_text($) {
+  my ($timeout) = @_;
 
   $last_search = $yahoo_news_url;   # for warnings
 
@@ -1604,8 +1635,8 @@ my @lj_cache = (); # fifo, for ordering by age
 my %lj_cache = (); # hash, for detecting dups
 
 # livejournal
-sub pick_from_livejournal_images {
-  my ( $timeout ) = @_;
+sub pick_from_livejournal_images($) {
+  my ($timeout) = @_;
 
   $last_search = $livejournal_img_url;   # for warnings
 
@@ -1666,8 +1697,8 @@ sub pick_from_livejournal_images {
 my $ircimages_url = "http://ircimages.com/";
 
 # ircimages
-sub pick_from_ircimages {
-  my ( $timeout ) = @_;
+sub pick_from_ircimages($) {
+  my ($timeout) = @_;
 
   $last_search = $ircimages_url;   # for warnings
 
@@ -1733,8 +1764,8 @@ my %flickr_cache = (); # hash, for detecting dups
 
 
 # flickr
-sub pick_from_flickr {
-  my ( $timeout ) = @_;
+sub pick_from_flickr($) {
+  my ($timeout) = @_;
 
   my $start = 16 * int(rand(100));
 
@@ -1812,8 +1843,8 @@ sub pick_from_flickr {
 ############################################################################
 
 # driftnet
-sub pick_from_driftnet {
-  my ( $timeout ) = @_;
+sub pick_from_driftnet($) {
+  my ($timeout) = @_;
 
   my $id = $driftnet_magic;
   my $dir = $driftnet_dir;
@@ -1845,7 +1876,7 @@ sub pick_from_driftnet {
 }
 
 
-sub get_driftnet_file {
+sub get_driftnet_file($) {
   my ($file) = @_;
 
   error ("\$driftnet_dir unset?") unless ($driftnet_dir);
@@ -1865,7 +1896,7 @@ sub get_driftnet_file {
 }
 
 
-sub spawn_driftnet {
+sub spawn_driftnet($) {
   my ($cmd) = @_;
 
   # make a directory to use.
@@ -1920,8 +1951,8 @@ sub spawn_driftnet {
 # Returns () if nothing found this time.
 #
 
-sub pick_image {
-  my ( $timeout ) = @_;
+sub pick_image(;$) {
+  my ($timeout) = @_;
 
   $current_state = "select";
   $load_method = "none";
@@ -1959,21 +1990,21 @@ sub pick_image {
 #
 ############################################################################
 
-sub timestr {
+sub timestr() {
   return strftime ("%H:%M:%S: ", localtime);
 }
 
-sub blurb {
+sub blurb() {
   return "$progname: " . timestr() . "$current_state: ";
 }
 
-sub error {
+sub error($) {
   my ($err) = @_;
   print STDERR blurb() . "$err\n";
   exit 1;
 }
 
-sub stacktrace {
+sub stacktrace() {
   my $i = 1;
   print STDERR "$progname: stack trace:\n";
   while (1) {
@@ -1987,11 +2018,11 @@ sub stacktrace {
 
 my $lastlog = "";
 
-sub clearlog {
+sub clearlog() {
   $lastlog = "";
 }
 
-sub showlog {
+sub showlog() {
   my $head = "$progname: DEBUG: ";
   foreach (split (/\n/, $lastlog)) {
     print STDERR "$head$_\n";
@@ -1999,7 +2030,7 @@ sub showlog {
   $lastlog = "";
 }
 
-sub LOG {
+sub LOG($$) {
   my ($print, $msg) = @_;
   my $blurb = timestr() . "$current_state: ";
   $lastlog .= "$blurb$msg\n";
@@ -2012,7 +2043,7 @@ my %stats_successes;
 my %stats_elapsed;
 
 my $last_state = undef;
-sub record_attempt {
+sub record_attempt($) {
   my ($name) = @_;
 
   if ($last_state) {
@@ -2028,7 +2059,7 @@ sub record_attempt {
   $suppress_audit = 0;
 }
 
-sub record_success {
+sub record_success($$$) {
   my ($name, $url, $base) = @_;
   if (defined($stats_successes{$name})) {
     $stats_successes{$name}++;
@@ -2046,7 +2077,7 @@ sub record_success {
 }
 
 
-sub record_failure {
+sub record_failure($) {
   my ($name) = @_;
 
   return if $image_succeeded;
@@ -2078,7 +2109,7 @@ sub record_failure {
 
 
 
-sub stats_of {
+sub stats_of($) {
   my ($name) = @_;
   my $i = $stats_successes{$name};
   my $j = $stats_attempts{$name};
@@ -2090,7 +2121,7 @@ sub stats_of {
 
 my $current_start_time = 0;
 
-sub start_timer {
+sub start_timer($) {
   my ($name) = @_;
   $current_start_time = time;
 
@@ -2104,14 +2135,14 @@ sub start_timer {
   }
 }
 
-sub stop_timer {
+sub stop_timer($$) {
   my ($name, $success) = @_;
   $stats_elapsed{$name} += time - $current_start_time;
 }
 
 
 my $last_report_time = 0;
-sub report_performance {
+sub report_performance() {
 
   return unless $verbose_warnings;
 
@@ -2145,7 +2176,7 @@ my $max_recent_sites  = 20;
 my @recent_images = ();
 my @recent_sites = ();
 
-sub save_recent_url {
+sub save_recent_url($$) {
   my ($url, $base) = @_;
 
   return unless ($verbose_warnings);
@@ -2207,7 +2238,7 @@ sub save_recent_url {
 
 # Does %-decoding.
 #
-sub url_decode {
+sub url_decode($) {
   ($_) = @_;
   tr/+/ /;
   s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
@@ -2217,7 +2248,7 @@ sub url_decode {
 
 # Given the raw body of a GIF document, returns the dimensions of the image.
 #
-sub gif_size {
+sub gif_size($) {
   my ($body) = @_;
   my $type = substr($body, 0, 6);
   my $s;
@@ -2229,7 +2260,7 @@ sub gif_size {
 
 # Given the raw body of a JPEG document, returns the dimensions of the image.
 #
-sub jpeg_size {
+sub jpeg_size($) {
   my ($body) = @_;
   my $i = 0;
   my $L = length($body);
@@ -2280,7 +2311,7 @@ sub jpeg_size {
 
 # Given the raw body of a PNG document, returns the dimensions of the image.
 #
-sub png_size {
+sub png_size($) {
   my ($body) = @_;
   return () unless ($body =~ m/^\211PNG\r/);
   my ($bits) = ($body =~ m/^.{12}(.{12})/s);
@@ -2294,7 +2325,7 @@ sub png_size {
 # Given the raw body of a GIF, JPEG, or PNG document, returns the dimensions
 # of the image.
 #
-sub image_size {
+sub image_size($) {
   my ($body) = @_;
   my ($w, $h) = gif_size ($body);
   if ($w && $h) { return ($w, $h); }
@@ -2306,7 +2337,7 @@ sub image_size {
 
 # returns the full path of the named program, or undef.
 #
-sub which {
+sub which($) {
   my ($prog) = @_;
   foreach (split (/:/, $ENV{PATH})) {
     if (-x "$_/$prog") {
@@ -2318,7 +2349,7 @@ sub which {
 
 
 # Like rand(), but chooses numbers with a bell curve distribution.
-sub bellrand {
+sub bellrand(;$) {
   ($_) = @_;
   $_ = 1.0 unless defined($_);
   $_ /= 3.0;
@@ -2326,7 +2357,7 @@ sub bellrand {
 }
 
 
-sub exit_cleanup {
+sub exit_cleanup() {
   x_cleanup();
   print STDERR "$progname: exiting\n" if ($verbose_warnings);
   if (@pids_to_kill) {
@@ -2335,7 +2366,7 @@ sub exit_cleanup {
   }
 }
 
-sub signal_cleanup {
+sub signal_cleanup($) {
   my ($sig) = @_;
   print STDERR blurb() . (defined($sig)
                           ? "caught signal $sig."
@@ -2353,7 +2384,7 @@ sub signal_cleanup {
 #
 ##############################################################################
 
-sub url_only_output {
+sub url_only_output() {
   do {
     my ($base, $img) = pick_image;
     if ($img) {
@@ -2394,7 +2425,7 @@ my $img_height;
 
 my $delay = 2;
 
-sub x_cleanup {
+sub x_cleanup() {
   unlink $image_ppm, $image_tmp1, $image_tmp2;
   unlink $imagemap_html_tmp, $imagemap_jpg_tmp
     if (defined ($imagemap_html_tmp));
@@ -2404,7 +2435,7 @@ sub x_cleanup {
 # Like system, but prints status about exit codes, and kills this process
 # with whatever signal killed the sub-process, if any.
 #
-sub nontrapping_system {
+sub nontrapping_system(@) {
   $! = 0;
 
   $_ = join(" ", @_);
@@ -2437,7 +2468,7 @@ sub nontrapping_system {
 # writes a PPM to the given output file.  Returns the width/height of the
 # image if successful.
 #
-sub image_to_pnm {
+sub image_to_pnm($$$) {
   my ($url, $body, $output) = @_;
   my ($cmd, $cmd2, $w, $h);
 
@@ -2527,7 +2558,7 @@ sub image_to_pnm {
   }
 }
 
-sub pick_root_displayer {
+sub pick_root_displayer() {
   my @names = ();
 
   foreach my $cmd (@root_displayers) {
@@ -2549,7 +2580,7 @@ sub pick_root_displayer {
 my $ppm_to_root_window_cmd = undef;
 
 
-sub x_or_pbm_output {
+sub x_or_pbm_output($) {
   my ($window_id) = @_;
 
   # Check for our helper program, to see whether we need to use PPM pipelines.
@@ -2714,7 +2745,7 @@ sub x_or_pbm_output {
   }
 }
 
-sub paste_image {
+sub paste_image($$$$) {
   my ($base, $img, $body, $source) = @_;
 
   $current_state = "paste";
@@ -3028,7 +3059,7 @@ sub paste_image {
 }
 
 
-sub update_imagemap {
+sub update_imagemap($$$$$$$$) {
   my ($url, $x, $y, $w, $h, $image_ppm, $image_width, $image_height) = @_;
 
   $current_state = "imagemap";
@@ -3133,7 +3164,7 @@ sub update_imagemap {
 }
 
 
-sub init_signals {
+sub init_signals() {
 
   $SIG{HUP}  = \&signal_cleanup;
   $SIG{INT}  = \&signal_cleanup;
@@ -3149,7 +3180,7 @@ sub init_signals {
 END { exit_cleanup(); }
 
 
-sub main {
+sub main() {
   $| = 1;
   srand(time ^ $$);
 
@@ -3342,5 +3373,5 @@ sub main {
   }
 }
 
-main;
+main();
 exit (0);
index ab146cfac02eb01a87ed2a35cc54d9a7d15d70da..0d06e4e6b56aa746fd385931a5ae7fab5be58a7e 100644 (file)
@@ -56,7 +56,7 @@ on your local subnet, instead of getting images from search engines.
 accepts the following options:
 .TP 8
 .B \-root
-Draw on the root window.  This option is manditory, if output is being
+Draw on the root window.  This option is mandatory, if output is being
 produced: drawing to a window other than the root window is not yet
 supported.
 
index b3b5f93cd20422434a078714861bc6940139a1fa..74d0ab84f4fb44439b3dd496dd7c760c81c010fe 100644 (file)
@@ -13,8 +13,7 @@
  */
 
 /* WhirlwindWarp: moving stars.  Ported from QBasic by Joey.
-   Version 1.2.  FF parameters now driven by a
-   dampened-walked velocity, making them smoother.
+   Version 1.3.  Smooth with pretty colours.
 
    This code adapted from original program by jwz/jk above.
    Freely distrubtable.  Please keep this tag with
    Paul "Joey" Clark, hacking for humanity, Feb 99
    www.cs.bris.ac.uk/~pclark | www.changetheworld.org.uk */
 
+/* 15/May/05: Added colour rotation, limit on max FPS, scaling size dots, and smoother drivers.
+    4/Mar/01: Star colours are cycled when new colour can not be allocated.
+    4/Mar/01: Stars are plotted as squares with size relative to screen.
+   28/Nov/00: Submitted to xscreensaver as "whirlwindwarp".
+   10/Oct/00: Ported to xscreensaver as "twinkle".
+   19/Feb/98: Meters and interaction added for Ivor's birthday "stars11f".
+   11/Aug/97: Original QBasic program. */
+
 #include <math.h>
 
 #include "screenhack.h"
 static GC draw_gc, erase_gc;
 static unsigned int default_fg_pixel;
 
-/* Maximum number of points, tails, and fields (hard-coded) */
+/* Maximum number of points, maximum tail length, and the number of forcefields/effects (hard-coded) */
 #define maxps 1000
-#define maxts 30
-#define fs 10
+#define maxts 50
+#define fs 16
+/* TODO: change ps and ts arrays into pointers, for dynamic allocation at runtime. */
 
 /* Screen width and height */
 static int scrwid,scrhei;
+static int starsize;
 
 /* Current x,y of stars in realspace */
 static float cx[maxps];
@@ -53,18 +62,22 @@ static char *name[fs];
 static int fon[fs];     /* Is field on or off? */
 static float var[fs];   /* Current parameter */
 static float op[fs];    /* Optimum (central/mean) value */
-static float damp[fs];  /* Dampening (how much drawn between current and optimal) */
-static float force[fs]; /* Amount of change per moment */
+/* These have now become standardised across all forcefields:
+ static float damp[fs];  / * Dampening (how much drawn between current and optimal) * /
+ static float force[fs]; / * Amount of change per moment * /
+*/
 static float acc[fs];
+static float vel[fs];
 
-/* Number of points and tails */
+/* Number of points and tail length */
 static int ps=500;
 static int ts=5;
 
 /* Show meters or not? */
 static Bool meters;
 
-static Bool init_whirlwindwarp(Display *dpy, Window window) {
+static Bool init_whirlwindwarp(Display *dpy, Window window)
+{
   XGCValues gcv;
   Colormap cmap;
   XWindowAttributes xgwa;
@@ -83,17 +96,20 @@ static Bool init_whirlwindwarp(Display *dpy, Window window) {
   return 1;
 }
 
-static float myrnd(void) { /* between -1.0 and +1.0 */
+static float myrnd(void)
+{ /* between -1.0 (inclusive) and +1.0 (exclusive) */
   return 2.0*((float)((random()%10000000)/10000000.0)-0.5);
 }
 
-float mysgn(float x) {
+float mysgn(float x)
+{
   return ( x < 0 ? -1 :
            x > 0 ? +1 :
                     0 );
 }
 
-void stars_newp(int p) {
+void stars_newp(int p)
+{
   cx[p]=myrnd();
   cy[p]=myrnd();
 }
@@ -101,23 +117,26 @@ void stars_newp(int p) {
 /* Adjust a variable var about optimum op,
      with damp = dampening about op
          force = force of random perturbation */
-float stars_perturb(float var,float op,float damp,float force) {
-  var=op+damp*(var-op)+force*myrnd()/4.0;
-/*  if (fabs(var-op)>0.1)  // (to keep within bounds)
-    var=op+0.1*mysgn(var-op);*/
-  return var;
-}
+/* float stars_perturb(float var,float op,float damp,float force) {
+   return op+damp*(var-op)+force*myrnd()/4.0;
+ }*/
+#define stars_perturb(var,op,damp,force) \
+  ( (op) + (damp)*((var)-(op)) + (force)*myrnd()/4.0 )
 
 /* Get pixel coordinates of a star */
-int stars_scrpos_x(int p) {
+int stars_scrpos_x(int p)
+{
   return scrwid*(cx[p]+1.0)/2.0;
 }
-int stars_scrpos_y(int p) {
+
+int stars_scrpos_y(int p)
+{
   return scrhei*(cy[p]+1.0)/2.0;
 }
 
 /* Draw a meter of a forcefield's parameter */
-void stars_draw_meter(Display *dpy,Window window,GC draw_gc,int f) {
+void stars_draw_meter(Display *dpy,Window window,GC draw_gc,int f)
+{
   int x,y,w,h;
   x=scrwid/2;
   y=f*10;
@@ -129,66 +148,114 @@ void stars_draw_meter(Display *dpy,Window window,GC draw_gc,int f) {
   }
   if (fon[f])
     XFillRectangle(dpy,window,draw_gc,x,y,w,h);
-  else
-    XDrawRectangle(dpy,window,draw_gc,x,y,w,h);
+  /* else
+     XDrawRectangle(dpy,window,draw_gc,x,y,w,h); */
 }
 
 /* Move a star according to acting forcefields */
-void stars_move(int p) {
+void stars_move(int p)
+{
   float nx,ny;
   float x=cx[p];
   float y=cy[p];
-    if (fon[1]) {
-        x = x * var[1]; y = y * var[1];
-    }
-    if (fon[2]) {
-      nx=x*cos(var[2])+y*sin(var[2]);
-      ny=-x*sin(var[2])+y*cos(var[2]);
-      x=nx;
-      y=ny;
-    }
-    if (fon[3]) {
-      y=y*var[3];
-    }
-    if (fon[4]) {
-      x=(x-1.0)*var[3]+1.0;
-    }
-    if (fon[5]) {
-      x=x+var[5]*x;
-    }
-    if (fon[6]) {
-        x = mysgn(x) * pow(fabs(x),var[6]);
-        y = mysgn(y) * pow(fabs(y),var[6]);
-    }
-    if (fon[7]) {
-      if (fon[0]) {
-        if (fon[9]) {
-          x=x+var[7]*(-1.0+2.0*(float)(p%2));
-        } else {
-          x=x+var[7]*(-1.0+2.0*(float)((p%50)/49.0));
-        }
-      }
-    }
-    if (fon[8]) {
-      if (fon[0]) {
-        if (fon[9]) {
-          y=y+var[8]*(-1.0+2.0*(float)(p%2));
-        } else {
-          y=y+var[8]*(-1.0+2.0*(float)((p%50)/49.0));
-        }
-      }
-    }
+
+  /* In theory all these if checks are unneccessary,
+     since each forcefield effect should do nothing when its var = op.
+     But the if's are good for efficiency because this function
+     is called once for every point.
+
+    Squirge towards edges (makes a leaf shape, previously split the screen in 4 but now only 1 :)
+    These ones must go first, to avoid x+1.0 < 0
+   */
+  if (fon[6]) {
+    /* x = mysgn(x) * pow(fabs(x),var[6]);
+       y = mysgn(y) * pow(fabs(y),var[6]);*/
+    x = -1.0 + 2.0*pow((x + 1.0)/2.0,var[6]);
+  }
+  if (fon[7]) {
+    y = -1.0 + 2.0*pow((y + 1.0)/2.0,var[7]);
+  }
+
+  /* Warping in/out */
+  if (fon[1]) {
+    x = x * var[1]; y = y * var[1];
+  }
+
+  /* Rotation */
+  if (fon[2]) {
+    nx=x*cos(1.1*var[2])+y*sin(1.1*var[2]);
+    ny=-x*sin(1.1*var[2])+y*cos(1.1*var[2]);
+    x=nx;
+    y=ny;
+  }
+
+  /* Asymptotes (looks like a plane with a horizon; equivalent to 1D warp) */
+  if (fon[3]) { /* Horizontal asymptote */
+    y=y*var[3];
+  }
+  if (fon[4]) { /* Vertical asymptote */
+    x=x+var[4]*x; /* this is the same maths as the last, but with op=0 */
+  }
+  if (fon[5]) { /* Vertical asymptote at right of screen */
+    x=(x-1.0)*var[5]+1.0;
+  }
+
+  /* Splitting (whirlwind effect): */
+  #define num_splits ( 2 + (int) (fabs(var[0]) * 1000) )
+  /* #define thru ( (float)(p%num_splits)/(float)(num_splits-1) ) */
+  #define thru ( (float)((int)(num_splits*(float)(p)/(float)(ps)))/(float)(num_splits-1) )
+  if (fon[8]) {
+    x=x+0.5*var[8]*(-1.0+2.0*thru);
+  }
+  if (fon[9]) {
+    y=y+0.5*var[9]*(-1.0+2.0*thru);
+  }
+
+  /* Waves */
+  if (fon[10]) {
+    y = y + 0.4*var[10]*sin(300.0*var[12]*x + 600.0*var[11]);
+  }
+  if (fon[13]) {
+    x = x + 0.4*var[13]*sin(300.0*var[15]*y + 600.0*var[14]);
+  }
+
   cx[p]=x;
   cy[p]=y;
 }
 
-static void do_whirlwindwarp(Display *dpy, Window window) {
+/* Turns a forcefield on, and ensures its vars are suitable. */
+void turn_on_field(int f)
+{
+  if (!fon[f]) {
+    /* acc[f]=0.0; */
+    acc[f]=0.02 * myrnd();
+    vel[f]=0.0;
+    var[f]=op[f];
+  }
+  fon[f] = 1;
+  if (f == 10) {
+    turn_on_field(11);
+    turn_on_field(12);
+  }
+  if (f == 13) {
+    turn_on_field(14);
+    turn_on_field(15);
+  }
+}
+
+static void do_whirlwindwarp(Display *dpy, Window window)
+{
   Colormap cmap;
   XWindowAttributes xgwa;
   int got_color = 0;
-  XColor color[maxps];
+  XColor color[maxps]; /* The colour assigned to each star */
   XColor bgcolor;
   int p,f,nt, sx,sy, resets,lastresets,cnt;
+  int colsavailable;
+  int hue;
+
+  /* time_t lastframe = time((time_t) 0); */
+  struct timeval lastframe;
 
   XClearWindow (dpy, window);
   XGetWindowAttributes (dpy, window, &xgwa);
@@ -196,76 +263,95 @@ static void do_whirlwindwarp(Display *dpy, Window window) {
   scrwid = xgwa.width;
   scrhei = xgwa.height;
 
+  starsize=scrhei/480;
+  if (starsize<=0)
+    starsize=1;
+
   /* Setup colours */
   hsv_to_rgb (0.0, 0.0, 0.0, &bgcolor.red, &bgcolor.green, &bgcolor.blue);
   got_color = XAllocColor (dpy, cmap, &bgcolor);
+  colsavailable=0;
   for (p=0;p<ps;p++) {
         if (!mono_p)
           hsv_to_rgb (random()%360, .6+.4*myrnd(), .6+.4*myrnd(), &color[p].red, &color[p].green, &color[p].blue);
           /* hsv_to_rgb (random()%360, 1.0, 1.0, &color[p].red, &color[p].green, &color[p].blue);   for stronger colours! */
         if ((!mono_p) && (got_color = XAllocColor (dpy, cmap, &color[p]))) {
+          colsavailable=p;
         } else {
-          if (p>0)
-            color[p]=color[0];
+          if (colsavailable>0) /* assign colours from those already allocated */
+            color[p]=color[ p % colsavailable ];
           else
             color[p].pixel=default_fg_pixel;
         }
   }
 
-  /* Set up parameter movements for the different forcefields */
-  name[1] = "Velocity";
-  op[1] = 1; damp[1] = .999; force[1] = .002;
-  name[2] = "Rotation";
-  op[2] = 0; damp[2] = .999; force[2] = .002;
-  name[3] = "Drip";
-  op[3] = 1; damp[3] = .999; force[3] = .005;
-  name[4] = "Dribble";
-  op[4] = 1; damp[4] = .999; force[4] = .005;
-  name[5] = "Slide";
-  op[5] = 0; damp[5] = .999; force[5] = .002;
-  name[6] = "Accelerate";
-  op[6] = 1.0; damp[6] = .999; force[6] = .005;
-  name[7] = "xDisplace";
-  op[7] = 0; damp[7] = .999; force[7] = .005;
-  name[8] = "yDisplace";
-  op[8] = 0; damp[8] = .999; force[8] = .005;
-  /* 0 and 9 are options for splitting displacements [no var] */
-  name[0] = "Split";
-  op[0] = 0; damp[0] = 0; force[0] = 0;
-  name[9] = "2d/3d split";
-  op[9] = 0; damp[9] = 0; force[9] = 0;
+  /* Set up central (optimal) points for each different forcefield */
+  op[1] = 1; name[1] = "Warp";
+  op[2] = 0; name[2] = "Rotation";
+  op[3] = 1; name[3] = "Horizontal asymptote";
+  op[4] = 0; name[4] = "Vertical asymptote";
+  op[5] = 1; name[5] = "Vertical asymptote right";
+  op[6] = 1; name[6] = "Squirge x";
+  op[7] = 1; name[7] = "Squirge y";
+  op[0] = 0; name[0] = "Split number (inactive)";
+  op[8] = 0; name[8] = "Split velocity x";
+  op[9] = 0; name[9] = "Split velocity y";
+  op[10] = 0; name[10] = "Horizontal wave amplitude";
+  op[11] = myrnd()*3.141; name[11] = "Horizontal wave phase (inactive)";
+  op[12] = 0.01; name[12] = "Horizontal wave frequency (inactive)";
+  op[13] = 0; name[13] = "Vertical wave amplitude";
+  op[14] = myrnd()*3.141; name[14] = "Vertical wave phase (inactive)";
+  op[15] = 0.01; name[15] = "Vertical wave frequency (inactive)";
 
   /* Initialise parameters to optimum, all off */
   for (f=0;f<fs;f++) {
     var[f]=op[f];
-    fon[f]=0;
-    acc[f]=0;
+    fon[f]=( myrnd()>0.5 ? 1 : 0 );
+    acc[f]=0.02 * myrnd();
+    vel[f]=0;
   }
 
   /* Initialise stars */
   for (p=0;p<ps;p++)
     stars_newp(p);
 
-  /* tx[nt],ty[nt] remeber earlier screen plots (tails of stars)
+  /* tx[nt],ty[nt] remember earlier screen plots (tails of stars)
      which are deleted when nt comes round again */
-  nt=0;
-  resets=0;
+  nt = 0;
+  resets = 0;
+
+  hue = 180 + 180*myrnd();
+
+  gettimeofday(&lastframe, NULL);
 
   while (1) {
 
+    if (myrnd()>0.75) {
+      /* Change one of the allocated colours to something near the current hue. */
+      /* By changing a random colour, we sometimes get a tight colour spread, sometime a diverse one. */
+      int p = colsavailable * (0.5+myrnd()/2);
+      hsv_to_rgb (hue, .6+.4*myrnd(), .6+.4*myrnd(), &color[p].red, &color[p].green, &color[p].blue);
+      if ((!mono_p) && (got_color = XAllocColor (dpy, cmap, &color[p]))) {
+      }
+      hue = hue + 0.5 + myrnd()*9.0;
+      if (hue<0) hue+=360;
+      if (hue>=360) hue-=360;
+    }
+
       /* Move current points */
       lastresets=resets;
       resets=0;
       for (p=0;p<ps;p++) {
         /* Erase old */
         XSetForeground (dpy, draw_gc, bgcolor.pixel);
-        XDrawPoint(dpy,window,draw_gc,tx[nt],ty[nt]);
+        /* XDrawPoint(dpy,window,draw_gc,tx[nt],ty[nt]); */
+        XFillRectangle(dpy,window,draw_gc,tx[nt],ty[nt],starsize,starsize);
 
         /* Move */
         stars_move(p);
         /* If moved off screen, create a new one */
-        if (cx[p]<-1.0 || cx[p]>+1.0 ||
-            cy[p]<-1.0 || cy[p]>+1.0 ||
+        if (cx[p]<=-0.9999 || cx[p]>=+0.9999 ||
+            cy[p]<=-0.9999 || cy[p]>=+0.9999 ||
             fabs(cx[p])<.0001 || fabs(cy[p])<.0001) {
           stars_newp(p);
           resets++;
@@ -276,7 +362,8 @@ static void do_whirlwindwarp(Display *dpy, Window window) {
         sx=stars_scrpos_x(p);
         sy=stars_scrpos_y(p);
         XSetForeground (dpy, draw_gc, color[p].pixel);
-        XDrawPoint(dpy,window,draw_gc,sx,sy);
+        /* XDrawPoint(dpy,window,draw_gc,sx,sy); */
+        XFillRectangle(dpy,window,draw_gc,sx,sy,starsize,starsize);
 
         /* Remember it for removal later */
         tx[nt]=sx;
@@ -294,12 +381,23 @@ static void do_whirlwindwarp(Display *dpy, Window window) {
         }
 
         /* Adjust forcefield's parameter */
-        acc[f]=stars_perturb(acc[f],0,0.98,0.009);
-        var[f]=op[f]+(var[f]-op[f])*damp[f]+force[f]*acc[f];
-
-        if (myrnd()>0.998) /* Turn it on/off ? */
-          fon[f]=(myrnd()<0.0);
-          /* fon[f]=!fon[f]; */
+        if (fon[f]) {
+          /* This configuration produces var[f]s usually below 0.01 */
+          acc[f]=stars_perturb(acc[f],0,0.98,0.005);
+          vel[f]=stars_perturb(vel[f]+0.03*acc[f],0,0.995,0.0);
+          var[f]=op[f]+(var[f]-op[f])*0.9995+0.001*vel[f];
+        }
+        /* fprintf(stderr,"f=%i fon=%i acc=%f vel=%f var=%f\n",f,fon[f],acc[f],vel[f],var[f]); */
+
+        /* Decide whether to turn this forcefield on or off. */
+        /* prob_on makes the "splitting" effects less likely than the rest */
+        #define prob_on ( f==8 || f==9 ? 0.999975 : 0.9999 )
+        if ( fon[f]==0 && myrnd()>prob_on ) {
+          turn_on_field(f);
+        } else if ( fon[f]!=0 && myrnd()>0.99 && fabs(var[f]-op[f])<0.0005 && fabs(vel[f])<0.005 /* && fabs(acc[f])<0.01 */ ) {
+          /* We only turn it off if it has gently returned to its optimal (as opposed to rapidly passing through it). */
+          fon[f] = 0;
+        }
 
         if (meters) { /* Redraw the meter */
           XSetForeground(dpy, draw_gc, color[f].pixel);
@@ -309,36 +407,40 @@ static void do_whirlwindwarp(Display *dpy, Window window) {
         if (fon[f])
           cnt++;
       }
-      if (cnt==0) { /* Ensure at least one is on! */
+
+      /* Ensure at least three forcefields are on.
+       * BUG: Picking randomly might not be enough since 0,11,12,14 and 15 do nothing!
+       * But then what's wrong with a rare gentle twinkle?!
+      */
+      if (cnt<3) {
         f=random() % fs;
-        fon[f]=1;
+        turn_on_field(f);
       }
+
       if (meters) {
         XSetForeground(dpy, draw_gc, bgcolor.pixel);
         XDrawRectangle(dpy,window,draw_gc,0,0,lastresets*5,3);
         XSetForeground(dpy, draw_gc, default_fg_pixel);
         XDrawRectangle(dpy,window,draw_gc,0,0,resets*5,3);
       }
-/*      if (resets*5>scrwid) {
-       Turn one off a field if too many points are flying off screen */
-      /* This was a problem when one of the force-fields was acting wrong,
-         but not really needed any more unless we need to debug new ones ...! */
-        /* for (f=0;f<fs;f++)
-            if (fon[f])
-            printf("%i",f);
-          printf("\n");
-          XSync (dpy, False);
-          screenhack_handle_events (dpy);
-         sleep(1);
-        do { // In fact this bit might go wrong if
-          f=random() % fs; // we have not ensured at least one is on (above)
-        } while (!fon[f]);
-        fon[f]=0;
-      }            */
-
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
 
+      /* Cap frames per second; do not go above specified fps: */
+      {
+        int maxfps = 200;
+        long utimeperframe = 1000000/maxfps;
+        struct timeval now;
+        long timediff;
+        gettimeofday(&now, NULL);
+        timediff = now.tv_sec*1000000 + now.tv_usec - lastframe.tv_sec*1000000 - lastframe.tv_usec;
+        if (timediff < utimeperframe) {
+          /* fprintf(stderr,"sleeping for %i\n",utimeperframe-timediff); */
+          usleep(utimeperframe-timediff);
+        }
+        lastframe = now;
+
+        XSync (dpy, False);
+        screenhack_handle_events (dpy);
+      }
   }
 
 }
@@ -350,7 +452,7 @@ char *defaults [] = {
   ".background:        black",
   ".foreground:        white",
   "*points:    400",
-  "*tails:     10",
+  "*tails:     8",
   "*meters:    false",
   0
 };
@@ -362,7 +464,8 @@ XrmOptionDescRec options [] = {
   { 0, 0, 0, 0 }
 };
 
-void screenhack(Display *dpy, Window window) {
+void screenhack(Display *dpy, Window window)
+{
   if (init_whirlwindwarp(dpy, window))
     do_whirlwindwarp(dpy, window);
 }
index 4bcd29f83e731e2d7d45ca5f08455fbb17e6558c..1d0351eb0ae5a288d36fdb60e37ec2b33cb6a9d7 100644 (file)
@@ -31,10 +31,10 @@ Specify which visual to use.  Legal values are the name of a visual class,
 or the id number (decimal or hex) of a specific visual.
 .TP 8
 .B \-points \fIinteger\fP
-The number of stars plotted (default 300).
+The number of stars plotted (default 400).
 .TP 8
 .B \-tails \fIinteger\fP
-The length of the tail of each star (default 5).
+The length of the tail of each star (default 8).
 .SH ENVIRONMENT
 .PP
 .TP 8
index 92b56cf2d08eab8e68c26e2a4ce03b731275bc72..df8c0eedef5a0a0dba77c9866f5b40ceb1f29434 100644 (file)
@@ -36,11 +36,11 @@ Specify how fast the dots should cycle vertically.
 Try out values from .01 to 4000. Random by default.
 .TP 8
 .B \-xamplitude \flfactor\fP
-Specify the horizonatal amplitude.
+Specify the horizontal amplitude.
 Try out values from .01 to 10. Defaults to 1.0.
 .TP 8
 .B \-yamplitude \flfactor\fP
-Specify the horizonatal amplitude.
+Specify the horizontal amplitude.
 Try out values from .01 to 10. Defaults to 1.0.
 .TP 8
 .B \-whirlies \fla number\fP
index 6f69cadee04b3e2d0e0def32953b203c538ac892..bf3b10fb271333d23f08f41f496b1fcb329ac65e 100644 (file)
@@ -119,7 +119,7 @@ Specifies the output filename to be used. If the -o option is given, this
 file will automatically be written out at the completion of the drawing.
 If it is not specified, a default filename of lyap.out is used and only
 written if the 'f' or 'F' keys are pressed during a run. The format of the
-output file is PPM for color and PGM for monochrom. The parameters used to
+output file is PPM for color and PGM for monochrome. The parameters used to
 calculate the picture are included as comments at the beginning of the output
 file.
 .TP
index e6b69d7834f9242e3d379dd4934d12c27d33a717..2e2ba16201b6994a36429394452b6f6a4a3cab1d 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# Copyright © 2002 Jamie Zawinski <jwz@jwz.org>
+# Copyright © 2002, 2005 Jamie Zawinski <jwz@jwz.org>
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
@@ -24,7 +24,7 @@ use strict;
 use Text::Wrap;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.2 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.3 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
 
 my $verbose = 0;
 
@@ -76,7 +76,7 @@ my $man_suffix = (".SH ENVIRONMENT\n" .
                   ".SH AUTHOR\n" .
                   "%AUTHOR%.\n");
 
-sub xml2man {
+sub xml2man($) {
   my ($exe) = @_;
   my $cfgdir = (-d "config" ? "config" : "../config");
   my $xml = "$cfgdir/$exe.xml";
@@ -220,18 +220,18 @@ sub xml2man {
 }
 
 
-sub error {
-  ($_) = @_;
-  print STDERR "$progname: $_\n";
+sub error($) {
+  my ($err) = @_;
+  print STDERR "$progname: $err\n";
   exit 1;
 }
 
-sub usage {
+sub usage() {
   print STDERR "usage: $progname [--verbose] programs...\n";
   exit 1;
 }
 
-sub main {
+sub main() {
   my @progs = ();
   while ($_ = $ARGV[0]) {
     shift @ARGV;
@@ -246,5 +246,5 @@ sub main {
   foreach (@progs) { xml2man($_); }
 }
 
-main;
+main();
 exit 0;
index a4247784efec9973e8d6ce5f989de7a888fe5ffc..8d25ad14abf9b416522a5763ced6b33a9d41db9d 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1997 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997, 2005 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -64,6 +64,7 @@ static char *progname;
 #include <signal.h>
 #include <sys/time.h>
 #include <X11/Xlib.h>
+#include <X11/Xutil.h>
 #include <X11/Xmu/Error.h>
 
 #include "vroot.h"
@@ -103,6 +104,8 @@ main(int ac, char **av)
   char *n2 = 0;
   Bool verbose = False;
   Window root, vroot;
+  XSizeHints h;
+  long ls;
 
   progname = av[0];
 
@@ -205,6 +208,13 @@ main(int ac, char **av)
                    if (verbose)
                      fprintf(stderr, "%s: resizing 0x%x\n", progname, w);
 
+                    /* Make sure the window allows itself to be resized. */
+                   XGetWMNormalHints (dpy, w, &h, &ls);
+                   h.flags |= PMaxSize;
+                   h.max_width = WidthOfScreen(screen)+128;
+                   h.max_height = HeightOfScreen(screen)+128;
+                   XSetWMNormalHints (dpy, w, &h);
+
                    XMoveResizeWindow(dpy, w, 0, 0,
                                      WidthOfScreen(screen),
                                      HeightOfScreen(screen));
index d80fa39fe308019e455bb6ac121f576c46913481..f0a5589e7f66869dc56868a94098b1cd389cf95d 100644 (file)
@@ -16,8 +16,8 @@ black-and-white TV I found in someone's trash.
 When run,
 .I xteevee
 picks a mode to display from the available options.  If modes are explicitly
-set on the command-line, they over-ride the implicit options and will be
-choosen among exclusively.  If modes are explicitly excluded from the
+set on the command-line, they override the implicit options and will be
+chosen among exclusively.  If modes are explicitly excluded from the
 command-line, the they are simply removed from contention.
 
 The image that it manipulates will be grabbed from the portion of
index a2bc5bd81783006553f4e0452fa294d5d32959e2..8f7364d369279de0556c17b55cd8f32effbf0811 100644 (file)
@@ -138,9 +138,9 @@ static void onestep(Display *dpy, Window window)
   now = currentTimeInMs();
 
   /* find new x,y */
-  tlx = ((1. + sin(((float)now) / X_PERIOD * 2. * M_PI))/2.0)
+  tlx = ((1. + sin(((double)now) / X_PERIOD * 2. * M_PI))/2.0)
     * (sizex - s/2) /* -s/4 */ + MINX;
-  tly = ((1. + sin(((float)now) / Y_PERIOD * 2. * M_PI))/2.0)
+  tly = ((1. + sin(((double)now) / Y_PERIOD * 2. * M_PI))/2.0)
     * (sizey - s/2) /* -s/4 */ + MINY;
 
   if (lenses) {
index 791f61b671d2de769540c8b4c6c1dd3bea021658..08069ab2d4c761ecb1143f0cc1555e03492d67d3 100644 (file)
@@ -1,6 +1,6 @@
 .TH XScreenSaver 1 "20-Nov-2000" "X Version 11"
 .SH NAME
-zoom - wander around magified desktop
+zoom - wander around magnified desktop
 .SH SYNOPSIS
 .B zoom
 [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
@@ -63,13 +63,13 @@ Amount of black space between magnified pixels (X direction).
 Amount of black space between magnified pixels (Y direction).
 .TP 8
 .B \-lensoffsetx \fIpixels\fP
-Distance in X direction between consective copied regions (only effective
+Distance in X direction between consecutive copied regions (only effective
 when 
 .I -lenses
 used).
 .TP 8
 .B \-lensoffsety \fIpixels\fP
-Distance in Y direction between consective copied regions (only effective
+Distance in Y direction between consecutive copied regions (only effective
 when 
 .I -lenses
 used).
old mode 100755 (executable)
new mode 100644 (file)
index 7589c124c11f574782f5bd2df4acd1cc125d8a5b..e03fd79fbb10c17693c47d4b614e5451938e1c20 100644 (file)
@@ -294,8 +294,7 @@ generate_potfiles_in:
         ( cd $(top_srcdir);                    \
           echo "# Auto-generated: `date`" ;    \
           ( grep -l '_("' driver/*.[ch] ;      \
-            ls driver/*.glade                  \
-               driver/*.glade2                 \
+            ls driver/*.glade2                 \
                driver/*.desktop.in             \
                hacks/config/*.xml ) | sort     \
          ) > $$tmp &&                          \
index 3412990d821ff92bc36395fb4ccdf4fdbbeb8a67..15d465a4c8137ff17338e63255ff01c1f78ab7ef 100644 (file)
@@ -1,16 +1,16 @@
-# Auto-generated: lun fév 28 21:48:45 CET 2005
-driver/demo-Gtk.c
+# Auto-generated: Wed Jun 22 18:02:31 PDT 2005
 driver/demo-Gtk-conf.c
 driver/demo-Gtk-support.c
 driver/demo-Gtk-widgets.c
+driver/demo-Gtk.c
 driver/screensaver-properties.desktop.in
-driver/xscreensaver-demo.glade
 driver/xscreensaver-demo.glade2
 hacks/config/anemone.xml
 hacks/config/anemotaxis.xml
+hacks/config/ant.xml
 hacks/config/antinspect.xml
+hacks/config/antmaze.xml
 hacks/config/antspotlight.xml
-hacks/config/ant.xml
 hacks/config/apollonian.xml
 hacks/config/apple2.xml
 hacks/config/atlantis.xml
@@ -39,6 +39,7 @@ hacks/config/cloudlife.xml
 hacks/config/compass.xml
 hacks/config/coral.xml
 hacks/config/cosmos.xml
+hacks/config/crackberg.xml
 hacks/config/critical.xml
 hacks/config/crystal.xml
 hacks/config/cubenetic.xml
@@ -67,6 +68,7 @@ hacks/config/flag.xml
 hacks/config/flame.xml
 hacks/config/flipflop.xml
 hacks/config/flipscreen3d.xml
+hacks/config/fliptext.xml
 hacks/config/flow.xml
 hacks/config/fluidballs.xml
 hacks/config/flurry.xml
@@ -99,6 +101,7 @@ hacks/config/hypercube.xml
 hacks/config/hypertorus.xml
 hacks/config/ifs.xml
 hacks/config/imsmap.xml
+hacks/config/interaggregate.xml
 hacks/config/interference.xml
 hacks/config/intermomentary.xml
 hacks/config/jigglypuff.xml
@@ -123,8 +126,8 @@ hacks/config/metaballs.xml
 hacks/config/mirrorblob.xml
 hacks/config/mismunch.xml
 hacks/config/moebius.xml
-hacks/config/moire2.xml
 hacks/config/moire.xml
+hacks/config/moire2.xml
 hacks/config/molecule.xml
 hacks/config/morph3d.xml
 hacks/config/mountain.xml
@@ -160,15 +163,15 @@ hacks/config/rotzoomer.xml
 hacks/config/rubik.xml
 hacks/config/sballs.xml
 hacks/config/shadebobs.xml
-hacks/config/sierpinski3d.xml
 hacks/config/sierpinski.xml
+hacks/config/sierpinski3d.xml
 hacks/config/slidescreen.xml
 hacks/config/slip.xml
 hacks/config/sonar.xml
 hacks/config/speedmine.xml
+hacks/config/sphere.xml
 hacks/config/sphereeversion.xml
 hacks/config/spheremonics.xml
-hacks/config/sphere.xml
 hacks/config/spiral.xml
 hacks/config/spotlight.xml
 hacks/config/sproingies.xml
@@ -183,6 +186,7 @@ hacks/config/substrate.xml
 hacks/config/superquadrics.xml
 hacks/config/swirl.xml
 hacks/config/t3d.xml
+hacks/config/tangram.xml
 hacks/config/thornbird.xml
 hacks/config/triangle.xml
 hacks/config/truchet.xml
@@ -194,8 +198,8 @@ hacks/config/wander.xml
 hacks/config/webcollage.xml
 hacks/config/whirlwindwarp.xml
 hacks/config/whirlygig.xml
-hacks/config/wormhole.xml
 hacks/config/worm.xml
+hacks/config/wormhole.xml
 hacks/config/xanalogtv.xml
 hacks/config/xaos.xml
 hacks/config/xdaliclock.xml
index 894718d3911e1e03a65dfa6fac965261c5fd6328..60ea54de7321793e02872ded78b077c37400d6a5 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -7856,7 +7856,7 @@ msgstr "Flecken zeichnen"
 msgid ""
 "Draws a colorful random-walk, in various forms. Written by Rick Campbell."
 msgstr ""
-"Zeichnet einen farbenfrohen Random-walk in verschiedenen Formen.Von Rick "
+"Zeichnet einen farbenfrohen Random-walk in verschiedenen Formen. Von Rick "
 "Campbell."
 
 #: hacks/config/wander.xml.h:14
@@ -8088,7 +8088,7 @@ msgstr "Große Schrift"
 
 #: hacks/config/xdaliclock.xml.h:7
 msgid "Medium Font"
-msgstr "Normale Schritf"
+msgstr "Normale Schrift"
 
 #: hacks/config/xdaliclock.xml.h:8 hacks/config/xmatrix.xml.h:16
 msgid "Small Font"
index 760e2f52b257de136e9e2d8e4f9c004d2aabff83..9333a752b722ff2e86e241e249468d143884e588 100644 (file)
--- a/po/hu.po
+++ b/po/hu.po
@@ -6,10 +6,10 @@
 # Gabor Kelemen <kelemeng@gnome.hu>, 2004, 2005.
 msgid ""
 msgstr ""
-"Project-Id-Version: hu\n"
+"Project-Id-Version: xscreensaver\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-10 22:24+0100\n"
-"PO-Revision-Date: 2005-03-12 22:36+0100\n"
+"POT-Creation-Date: 2005-04-13 12:28+0200\n"
+"PO-Revision-Date: 2005-04-25 20:35+0200\n"
 "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
 "Language-Team: Hungarian <gnome@gnome.hu>\n"
 "MIME-Version: 1.0\n"
@@ -18,83 +18,380 @@ msgstr ""
 "X-Generator: KBabel 1.3.1\n"
 "Plural-Forms:  nplurals=1; plural=0;\n"
 
-#: ../driver/demo-Gtk-conf.c:818
+#: driver/demo-Gtk.c:658 driver/demo-Gtk.c:4274
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"The XScreenSaver daemon doesn't seem to be running\n"
+"on display \"%s\".  Launch it now?"
+msgstr ""
+"Figyelem:\n"
+"\n"
+"Az XScreenSaver démon nem fut\n"
+"ezen a képernyőn: \"%s\".  Elindítsam most?"
+
+#: driver/demo-Gtk.c:706
+msgid "For updates, check http://www.jwz.org/xscreensaver/"
+msgstr "Frissítésekért nézze meg ezt weblapot: http://www.jwz.org/xscreensaver/"
+
+#: driver/demo-Gtk.c:798 driver/demo-Gtk-widgets.c:1709
+msgid "OK"
+msgstr "OK"
+
+#: driver/demo-Gtk.c:836
+msgid ""
+"Error:\n"
+"\n"
+"No Help URL has been specified.\n"
+msgstr ""
+"Hiba:\n"
+"\n"
+"Nincs megadva Súgó cím (URL).\n"
+
+#: driver/demo-Gtk.c:931
+msgid ""
+"Error:\n"
+"\n"
+"The xscreensaver daemon did not start up properly.\n"
+"\n"
+msgstr ""
+"Hiba:\n"
+"\n"
+"Az xscreensaver démon nem indult el megfelelően.\n"
+"\n"
+
+#: driver/demo-Gtk.c:943
+msgid ""
+"You are running as root.  This usually means that xscreensaver\n"
+"was unable to contact your X server because access control is\n"
+"turned on.  Try running this command:\n"
+"\n"
+"                        xhost +localhost\n"
+"\n"
+"and then selecting `File / Restart Daemon'.\n"
+"\n"
+"Note that turning off access control will allow anyone logged\n"
+"on to this machine to access your screen, which might be\n"
+"considered a security problem.  Please read the xscreensaver\n"
+"manual and FAQ for more information.\n"
+"\n"
+"You shouldn't run X as root. Instead, you should log in as a\n"
+"normal user, and `su' as necessary."
+msgstr ""
+"Rootként indította a programot. Ez általában azt jelenti, hogy az "
+"xscreensaver\n"
+"nem tudott kapcsolódni az X kiszolgálóhoz, mert a hozzáférés-szabályozás\n"
+"(access control) be van kapcsolva. Próbálja ezt a parancsot futtatni:\n"
+"\n"
+"                        xhost +localhost\n"
+"\n"
+"ezután válassza a \"Fájl / Démon újraindítása\" pontot.\n"
+"\n"
+"Ne feledje, hogy a hozzáférés-szabályozás kikapcsolása lehetővé teszi\n"
+"a hozzáférést a képernyőjéhez bárki számára, aki be van jelentkezve,\n"
+"ez biztonsági problémát jelenthet. Kérjük olvassa el az xscreensaver\n"
+"kézikönyvét és a FAQ-ot további információkért.\n"
+"\n"
+"Ne futtassa az X-et rootként. Ehelyett jelentkezzen be egyszerű\n"
+"felhasználóként és használja a \"su\" parancsot, ahol szükséges."
+
+#: driver/demo-Gtk.c:959
+msgid "Please check your $PATH and permissions."
+msgstr "Kérem ellenőrizze az útvonalakat ($PATH) és a jogokat."
+
+#: driver/demo-Gtk.c:996
+msgid ""
+"Error:\n"
+"\n"
+"Couldn't determine init file name!\n"
+msgstr ""
+"Hiba:\n"
+"\n"
+"Nem sikerült megállapítani a kezdő fájl nevét!\n"
+
+#: driver/demo-Gtk.c:1001
+#, c-format
+msgid ""
+"Error:\n"
+"\n"
+"Couldn't write %s\n"
+msgstr ""
+"Hiba:\n"
+"\n"
+"Nem lehet írni ezt a fájlt: %s\n"
+
+#: driver/demo-Gtk.c:1060
+msgid ""
+"Error:\n"
+"\n"
+"no `manualCommand' resource set."
+msgstr ""
+"Hiba:\n"
+"\n"
+"Nincs beállítva \"manualCommand\" érték."
+
+#: driver/demo-Gtk.c:1241
+#, c-format
+msgid ""
+"Error:\n"
+"\n"
+"Unparsable time format: \"%s\"\n"
+msgstr ""
+"Hiba:\n"
+"\n"
+"Feldolgozhatatlan időformátum: \"%s\"\n"
+
+#: driver/demo-Gtk.c:1652 driver/demo-Gtk.c:3253
+#: driver/demo-Gtk-widgets.c:1550 driver/demo-Gtk-widgets.c:1573
+#: driver/xscreensaver-demo.glade2.h:3
+msgid "Any"
+msgstr "Bármely"
+
+#: driver/demo-Gtk.c:1948
+#, c-format
+msgid ""
+"Error:\n"
+"\n"
+"Directory does not exist: \"%s\"\n"
+msgstr ""
+"Hiba:\n"
+"\n"
+"Nem létezik a könyvtár: \"%s\"\n"
+
+#: driver/demo-Gtk.c:1978 driver/demo-Gtk.c:2009
+#, c-format
+msgid ""
+"Error:\n"
+"\n"
+"File does not exist: \"%s\"\n"
+msgstr ""
+"Hiba:\n"
+"\n"
+"Nem létezik a fájl: \"%s\"\n"
+
+#: driver/demo-Gtk.c:2421 driver/demo-Gtk-widgets.c:571
+msgid "Use"
+msgstr "Használat"
+
+#: driver/demo-Gtk.c:2431 driver/demo-Gtk-widgets.c:591
+msgid "Screen Saver"
+msgstr "Képernyővédő"
+
+#: driver/demo-Gtk.c:2879
+msgid "Descriptions not available: no XML support compiled in."
+msgstr "A leírások nem érhetőek el: nincs XML támogatás befordítva."
+
+#: driver/demo-Gtk.c:2884
+msgid "No description available."
+msgstr "Nincs elérhető leírás."
+
+#: driver/demo-Gtk.c:3205
+msgid "Blank Screen"
+msgstr "A képernyő elsötétítése"
+
+#: driver/demo-Gtk.c:3211
+msgid "Screen Saver Disabled"
+msgstr "Képernyővédő kikapcsolva"
+
+#: driver/demo-Gtk.c:3234 driver/demo-Gtk-widgets.c:482
+msgid "Preview"
+msgstr "Előnézet"
+
+#: driver/demo-Gtk.c:3244
+#, c-format
+msgid "%s: %.100s Settings"
+msgstr "%s: %.100s beállításai"
+
+#: driver/demo-Gtk.c:3403
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"file \"%s\" has changed, reloading.\n"
+msgstr ""
+"Figyelem:\n"
+"\n"
+"A(z) \"%s\" fájl megváltozott, újratöltés.\n"
+
+#: driver/demo-Gtk.c:3485
+msgid "No Preview"
+msgstr "Nincs előnézet"
+
+#: driver/demo-Gtk.c:3485
+msgid "Available"
+msgstr "Elérhető"
+
+#: driver/demo-Gtk.c:3486
+msgid "Not"
+msgstr "Nem"
+
+#: driver/demo-Gtk.c:3486
+msgid "Installed"
+msgstr "Telepítve"
+
+#: driver/demo-Gtk.c:4284
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"%s is running as user \"%s\" on host \"%s\".\n"
+"But the xscreensaver managing display \"%s\"\n"
+"is running as user \"%s\" on host \"%s\".\n"
+"\n"
+"Since they are different users, they won't be reading/writing\n"
+"the same ~/.xscreensaver file, so %s isn't\n"
+"going to work right.\n"
+"\n"
+"You should either re-run %s as \"%s\", or re-run\n"
+"xscreensaver as \"%s\".\n"
+"\n"
+"Restart the xscreensaver daemon now?\n"
+msgstr ""
+"Figyelem:\n"
+"\n"
+"A következőt: \"%s\" \"%s\" felhasználó futtatja ezen a kiszolgálón: \"%s"
+"\".\n"
+"De az xscreensavert kezelő \"%s\" képernyőt\n"
+"\"%s\" felhasználó futtatja \"%s\" képernyőn.\n"
+"\n"
+"Mivel ezek különböző felhasználók, nem tudják ugyanazt a ~/.xscreensaver\n"
+"fájlt írni, így az %s nem fog megfelelően működni.\n"
+"\n"
+"Vagy az %s-t futtassa újra \"%s\" felhasználóként, vagy\n"
+"az xscreensavert futtassa \"%s\" felhasználóként.\n"
+"\n"
+"Újraindítja az xscreensaver démont most?\n"
+
+#: driver/demo-Gtk.c:4309
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"%s is running as user \"%s\" on host \"%s\".\n"
+"But the xscreensaver managing display \"%s\"\n"
+"is running as user \"%s\" on host \"%s\".\n"
+"\n"
+"If those two machines don't share a file system (that is,\n"
+"if they don't see the same ~%s/.xscreensaver file) then\n"
+"%s won't work right.\n"
+"\n"
+"Restart the daemon on \"%s\" as \"%s\" now?\n"
+msgstr ""
+"Figyelem:\n"
+"\n"
+"A következőt: \"%s\" \"%s\" felhasználó futtatja ezen a kiszolgálón: \"%s"
+"\".\n"
+"De az xscreensavert kezelő \"%s\" képernyőt\n"
+"\"%s\" felhasználó futtatja \"%s\" kiszolgálón.\n"
+"\n"
+"Ha ez a két kiszolgáló nem használ egy közös fájlrendszert (ekkor nem\n"
+"tudják ugyanazt a ~%s/.xscreensaver fájlt írni) akkor a(z) %s nem fog\n"
+"megfelelően működni.\n"
+"\n"
+"Újraindítja most az xscreensaver démont \"%s\" kiszolgálón \"%s\" "
+"felhasználóként?\n"
+
+#: driver/demo-Gtk.c:4331
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"This is %s version %s.\n"
+"But the xscreensaver managing display \"%s\"\n"
+"is version %s.  This could cause problems.\n"
+"\n"
+"Restart the xscreensaver daemon now?\n"
+msgstr ""
+"Figyelem:\n"
+"\n"
+"Ez a(z) %s %s verziója.\n"
+"De a(z) \"%s\" képernyőt kezelő xscreensaver\n"
+"%s verziójú. Ez gondokat okozhat.\n"
+"\n"
+"Újraindítja az xscreensaver démont most?\n"
+
+#: driver/demo-Gtk.c:4792
+#, c-format
+msgid "%s: unknown option: %s\n"
+msgstr "%s: ismeretlen opció: %s\n"
+
+#: driver/demo-Gtk.c:4857
+msgid "Screensaver Preferences"
+msgstr "Képernyővédő beállításai"
+
+#: driver/demo-Gtk-conf.c:818
 msgid "Browse..."
 msgstr "Tallózás..."
 
-#: ../driver/demo-Gtk-conf.c:1110
+#: driver/demo-Gtk-conf.c:1110
 msgid "Select file."
 msgstr "Válasszon ki egy fájlt."
 
-#: ../driver/demo-Gtk-support.c:135
+#: driver/demo-Gtk-support.c:135
 #, c-format
 msgid "Couldn't find pixmap file: %s"
 msgstr "Nem találom a képfájlt: %s"
 
-#: ../driver/demo-Gtk-support.c:147 ../driver/demo-Gtk-support.c:179
+#: driver/demo-Gtk-support.c:147 driver/demo-Gtk-support.c:179
 #, c-format
 msgid "Error loading pixmap file: %s"
 msgstr "Hiba a képfájl betöltése közben: %s"
 
-#: ../driver/demo-Gtk-support.c:182
+#: driver/demo-Gtk-support.c:182
 #, c-format
 msgid "reason: %s\n"
 msgstr "ok: %s\n"
 
-#: ../driver/demo-Gtk-widgets.c:161 ../driver/xscreensaver-demo.glade.h:89
-#: ../driver/xscreensaver-demo.glade2.h:65
+#: driver/demo-Gtk-widgets.c:161 driver/xscreensaver-demo.glade2.h:67
 msgid "XScreenSaver"
 msgstr "XScreenSaver"
 
-#: ../driver/demo-Gtk-widgets.c:182 ../driver/xscreensaver-demo.glade2.h:76
+#: driver/demo-Gtk-widgets.c:182 driver/xscreensaver-demo.glade2.h:80
 msgid "_File"
 msgstr "_Fájl"
 
-#: ../driver/demo-Gtk-widgets.c:202 ../driver/xscreensaver-demo.glade.h:93
-#: ../driver/xscreensaver-demo.glade2.h:70
+#: driver/demo-Gtk-widgets.c:202 driver/xscreensaver-demo.glade2.h:72
 msgid "_Blank Screen Now"
 msgstr "A képernyő el_sötétítése most"
 
-#: ../driver/demo-Gtk-widgets.c:211 ../driver/xscreensaver-demo.glade.h:2
+#: driver/demo-Gtk-widgets.c:211
 msgid "Activate the XScreenSaver daemon now (locking the screen if so configured.)"
 msgstr ""
 "Az XScreenSaver démon aktiválása most (a képernyő zárolása, ha úgy van "
 "beállítva.)"
 
-#: ../driver/demo-Gtk-widgets.c:215 ../driver/xscreensaver-demo.glade.h:97
-#: ../driver/xscreensaver-demo.glade2.h:80
+#: driver/demo-Gtk-widgets.c:215 driver/xscreensaver-demo.glade2.h:85
 msgid "_Lock Screen Now"
 msgstr "Képernyő _lezárása most"
 
-#: ../driver/demo-Gtk-widgets.c:224 ../driver/xscreensaver-demo.glade.h:51
+#: driver/demo-Gtk-widgets.c:224
 msgid "Lock the screen now (even if \"Lock Screen\" is unchecked.)"
 msgstr ""
 "A képernyő lezárása most (akkor is, ha a \"Képernyő zárolása\" nincs "
 "bejelölve.)"
 
-#: ../driver/demo-Gtk-widgets.c:228 ../driver/xscreensaver-demo.glade.h:96
-#: ../driver/xscreensaver-demo.glade2.h:78
+#: driver/demo-Gtk-widgets.c:228 driver/xscreensaver-demo.glade2.h:83
 msgid "_Kill Daemon"
 msgstr "_Démon kilövése"
 
-#: ../driver/demo-Gtk-widgets.c:237 ../driver/xscreensaver-demo.glade.h:71
+#: driver/demo-Gtk-widgets.c:237
 msgid "Tell the running XScreenSaver daemon to exit."
 msgstr "Az éppen futó XScreenSaver démon leállítása."
 
-#: ../driver/demo-Gtk-widgets.c:241 ../driver/xscreensaver-demo.glade.h:98
-#: ../driver/xscreensaver-demo.glade2.h:86
+#: driver/demo-Gtk-widgets.c:241 driver/xscreensaver-demo.glade2.h:94
 msgid "_Restart Daemon"
 msgstr "Démon új_raindítása"
 
-#: ../driver/demo-Gtk-widgets.c:250 ../driver/xscreensaver-demo.glade.h:49
+#: driver/demo-Gtk-widgets.c:250
 msgid "Kill and re-launch the XScreenSaver daemon."
 msgstr "Az XScreenSaver démont lelövi, majd újraindítja."
 
-#: ../driver/demo-Gtk-widgets.c:263 ../driver/xscreensaver-demo.glade.h:95
+#: driver/demo-Gtk-widgets.c:263
 msgid "_Exit"
 msgstr "_Kilépés"
 
-#: ../driver/demo-Gtk-widgets.c:272 ../driver/xscreensaver-demo.glade.h:33
+#: driver/demo-Gtk-widgets.c:272
 msgid ""
 "Exit the xscreensaver-demo program (but leave the XScreenSaver daemon "
 "running in the background.)"
@@ -102,66 +399,55 @@ msgstr ""
 "Kilépés az xscreensaver-demo programból (az XScreenSaver démon ezután is "
 "futni fog a háttérben.)"
 
-#: ../driver/demo-Gtk-widgets.c:276 ../driver/xscreensaver-demo.glade2.h:77
+#: driver/demo-Gtk-widgets.c:276 driver/xscreensaver-demo.glade2.h:81
 msgid "_Help"
 msgstr "_Súgó"
 
-#: ../driver/demo-Gtk-widgets.c:296 ../driver/xscreensaver-demo.glade.h:92
-#: ../driver/xscreensaver-demo.glade2.h:66
+#: driver/demo-Gtk-widgets.c:296 driver/xscreensaver-demo.glade2.h:68
 msgid "_About..."
 msgstr "_Névjegy..."
 
-#: ../driver/demo-Gtk-widgets.c:305 ../driver/xscreensaver-demo.glade.h:30
+#: driver/demo-Gtk-widgets.c:305
 msgid "Display version information."
 msgstr "Verzióinformációk megjelenítése."
 
-#: ../driver/demo-Gtk-widgets.c:309 ../driver/xscreensaver-demo.glade.h:94
-#: ../driver/xscreensaver-demo.glade2.h:75
+#: driver/demo-Gtk-widgets.c:309 driver/xscreensaver-demo.glade2.h:79
 msgid "_Documentation..."
 msgstr "_Dokumentáció..."
 
-#: ../driver/demo-Gtk-widgets.c:318 ../driver/xscreensaver-demo.glade.h:38
+#: driver/demo-Gtk-widgets.c:318
 msgid "Go to the documentation on the XScreenSaver web page."
 msgstr "Az XScreenSaver weblapján található dokumentáció megjelenítése."
 
-#: ../driver/demo-Gtk-widgets.c:348 ../driver/xscreensaver-demo.glade.h:18
+#: driver/demo-Gtk-widgets.c:348
 msgid "Cycle After"
 msgstr "Váltás"
 
-#: ../driver/demo-Gtk-widgets.c:370 ../driver/xscreensaver-demo.glade.h:78
-#: ../driver/xscreensaver-demo.glade2.h:54
+#: driver/demo-Gtk-widgets.c:370 driver/xscreensaver-demo.glade2.h:59
 msgid "Whether a password should be required to un-blank the screen."
 msgstr "Kell-e jelszó a képernyő visszaállításához?"
 
-#: ../driver/demo-Gtk-widgets.c:372 ../driver/xscreensaver-demo.glade.h:50
+#: driver/demo-Gtk-widgets.c:372
 msgid "Lock Screen After"
 msgstr "Képernyő zárolása"
 
-#: ../driver/demo-Gtk-widgets.c:380 ../driver/xscreensaver-demo.glade.h:8
+#: driver/demo-Gtk-widgets.c:380
 msgid "Blank After"
 msgstr "Elsötétítés"
 
-#: ../driver/demo-Gtk-widgets.c:403 ../driver/demo-Gtk-widgets.c:453
-#: ../driver/demo-Gtk-widgets.c:467 ../driver/demo-Gtk-widgets.c:1016
-#: ../driver/xscreensaver-demo.glade.h:43
+#: driver/demo-Gtk-widgets.c:403 driver/demo-Gtk-widgets.c:453
+#: driver/demo-Gtk-widgets.c:467 driver/demo-Gtk-widgets.c:1016
 msgid "How long before the monitor goes completely black."
 msgstr "A monitor teljes elsötétítése ennyi idő eltelte után."
 
-#: ../driver/demo-Gtk-widgets.c:407 ../driver/demo-Gtk-widgets.c:419
-#: ../driver/demo-Gtk-widgets.c:431 ../driver/demo-Gtk-widgets.c:1020
-#: ../driver/demo-Gtk-widgets.c:1032 ../driver/demo-Gtk-widgets.c:1044
-#: ../driver/xscreensaver-demo.glade.h:99
-#: ../driver/xscreensaver-demo.glade2.h:92
+#: driver/demo-Gtk-widgets.c:407 driver/demo-Gtk-widgets.c:419
+#: driver/demo-Gtk-widgets.c:431 driver/demo-Gtk-widgets.c:1020
+#: driver/demo-Gtk-widgets.c:1032 driver/demo-Gtk-widgets.c:1044
+#: driver/xscreensaver-demo.glade2.h:102
 msgid "minutes"
 msgstr " perc után"
 
-#: ../driver/demo-Gtk-widgets.c:482 ../driver/demo-Gtk.c:2852
-#: ../driver/xscreensaver-demo.glade.h:58
-msgid "Preview"
-msgstr "Előnézet"
-
-#: ../driver/demo-Gtk-widgets.c:490 ../driver/xscreensaver-demo.glade.h:21
-#: ../driver/xscreensaver-demo.glade2.h:12
+#: driver/demo-Gtk-widgets.c:490 driver/xscreensaver-demo.glade2.h:10
 msgid ""
 "Demo the selected screen saver in full-screen mode (click the mouse to "
 "return.)"
@@ -169,55 +455,39 @@ msgstr ""
 "A kiválasztott képernyővédő megtekintése teljes képernyőn (kattintson az "
 "egérrel a visszatéréshez.)"
 
-#: ../driver/demo-Gtk-widgets.c:492 ../driver/xscreensaver-demo.glade.h:65
+#: driver/demo-Gtk-widgets.c:492
 msgid "Settings..."
 msgstr "Beállítások..."
 
-#: ../driver/demo-Gtk-widgets.c:500 ../driver/xscreensaver-demo.glade.h:17
-#: ../driver/xscreensaver-demo.glade2.h:9
+#: driver/demo-Gtk-widgets.c:500 driver/xscreensaver-demo.glade2.h:7
 msgid "Customization and explanation of the selected screen saver."
 msgstr "A kijelölt képernyővédő testreszabása és magyarázata."
 
-#: ../driver/demo-Gtk-widgets.c:521 ../driver/xscreensaver-demo.glade.h:52
+#: driver/demo-Gtk-widgets.c:521
 msgid "Mode:"
 msgstr "Mód:"
 
-#: ../driver/demo-Gtk-widgets.c:539 ../driver/xscreensaver-demo.glade.h:25
-#: ../driver/xscreensaver-demo.glade2.h:16
+#: driver/demo-Gtk-widgets.c:539
 msgid "Disable Screen Saver"
 msgstr "Képernyővédő tiltása"
 
-#: ../driver/demo-Gtk-widgets.c:542 ../driver/xscreensaver-demo.glade.h:9
-#: ../driver/xscreensaver-demo.glade2.h:5
+#: driver/demo-Gtk-widgets.c:542
 msgid "Blank Screen Only"
 msgstr "Csak üres képernyő"
 
-#: ../driver/demo-Gtk-widgets.c:545 ../driver/xscreensaver-demo.glade.h:56
-#: ../driver/xscreensaver-demo.glade2.h:42
+#: driver/demo-Gtk-widgets.c:545
 msgid "Only One Screen Saver"
 msgstr "Csak egy képernyővédő"
 
-#: ../driver/demo-Gtk-widgets.c:548 ../driver/xscreensaver-demo.glade.h:60
-#: ../driver/xscreensaver-demo.glade2.h:44
+#: driver/demo-Gtk-widgets.c:548
 msgid "Random Screen Saver"
 msgstr "Véletlenszerű képernyővédő"
 
-#: ../driver/demo-Gtk-widgets.c:571 ../driver/demo-Gtk.c:2141
-#: ../driver/xscreensaver-demo.glade.h:75
-msgid "Use"
-msgstr "Használat"
-
-#: ../driver/demo-Gtk-widgets.c:591 ../driver/demo-Gtk.c:2151
-#: ../driver/xscreensaver-demo.glade.h:63
-msgid "Screen Saver"
-msgstr "Képernyővédő"
-
-#: ../driver/demo-Gtk-widgets.c:644 ../driver/xscreensaver-demo.glade.h:91
+#: driver/demo-Gtk-widgets.c:644
 msgid "\\/"
 msgstr "\\/"
 
-#: ../driver/demo-Gtk-widgets.c:652 ../driver/xscreensaver-demo.glade.h:61
-#: ../driver/xscreensaver-demo.glade2.h:45
+#: driver/demo-Gtk-widgets.c:652 driver/xscreensaver-demo.glade2.h:39
 msgid ""
 "Run the next screen saver in the list in full-screen mode (click the mouse "
 "to return.)"
@@ -225,12 +495,11 @@ msgstr ""
 "A lista következő képernyővédőjének futtatása teljes képernyőn (kattintson "
 "az egérrel a visszatéréshez.)"
 
-#: ../driver/demo-Gtk-widgets.c:654
+#: driver/demo-Gtk-widgets.c:654
 msgid "/\\"
 msgstr "/\\"
 
-#: ../driver/demo-Gtk-widgets.c:662 ../driver/xscreensaver-demo.glade.h:62
-#: ../driver/xscreensaver-demo.glade2.h:46
+#: driver/demo-Gtk-widgets.c:662 driver/xscreensaver-demo.glade2.h:40
 msgid ""
 "Run the previous screen saver in the list in full-screen mode (click the "
 "mouse to return.)"
@@ -238,43 +507,38 @@ msgstr ""
 "A lista előző képernyővédőjének futtatása teljes képernyőn (kattintson az "
 "egérrel a visszatéréshez.)"
 
-#: ../driver/demo-Gtk-widgets.c:664 ../driver/demo-Gtk-widgets.c:1607
-#: ../driver/xscreensaver-demo.glade.h:22
-#: ../driver/xscreensaver-demo.glade2.h:13
+#: driver/demo-Gtk-widgets.c:664 driver/demo-Gtk-widgets.c:1607
+#: driver/xscreensaver-demo.glade2.h:11
 msgid "Description"
 msgstr "Leírás"
 
-#: ../driver/demo-Gtk-widgets.c:691 ../driver/xscreensaver-demo.glade.h:26
+#: driver/demo-Gtk-widgets.c:691
 msgid "Display Modes"
 msgstr "Képernyőmódok"
 
-#: ../driver/demo-Gtk-widgets.c:707 ../driver/xscreensaver-demo.glade.h:23
-#: ../driver/xscreensaver-demo.glade2.h:14
+#: driver/demo-Gtk-widgets.c:707
 msgid "Diagnostics"
 msgstr "Diagnosztika"
 
-#: ../driver/demo-Gtk-widgets.c:751 ../driver/xscreensaver-demo.glade.h:80
-#: ../driver/xscreensaver-demo.glade2.h:56
+#: driver/demo-Gtk-widgets.c:751
 msgid "Whether the daemon should print lots of debugging information."
 msgstr "A démon sok hibakeresési információt írjon-e ki a képernyőre?"
 
-#: ../driver/demo-Gtk-widgets.c:753 ../driver/xscreensaver-demo.glade.h:76
+#: driver/demo-Gtk-widgets.c:753
 msgid "Verbose Diagnostics"
 msgstr "Bőbeszédű diagnosztika"
 
-#: ../driver/demo-Gtk-widgets.c:768 ../driver/xscreensaver-demo.glade.h:79
-#: ../driver/xscreensaver-demo.glade2.h:55
+#: driver/demo-Gtk-widgets.c:768
 msgid ""
 "Whether any error output of the display modes should be redirected to the "
 "screen."
 msgstr "A képernyőmódok hibaüzenetei megjelenjenek-e a képernyőn?"
 
-#: ../driver/demo-Gtk-widgets.c:770 ../driver/xscreensaver-demo.glade.h:29
+#: driver/demo-Gtk-widgets.c:770
 msgid "Display Subprocess Errors"
 msgstr "Alfolyamatok hibáinak megjelenítése"
 
-#: ../driver/demo-Gtk-widgets.c:785 ../driver/xscreensaver-demo.glade.h:87
-#: ../driver/xscreensaver-demo.glade2.h:63
+#: driver/demo-Gtk-widgets.c:785
 msgid ""
 "Whether the splash screen (with the version number and `Help' button) should "
 "be momentarily displayed when the daemon first starts up."
@@ -282,17 +546,15 @@ msgstr ""
 "Az indulókép (a verziószámmal és a súgó gombbal) megjelenjen-e egy "
 "pillanatra a démon első indításakor?"
 
-#: ../driver/demo-Gtk-widgets.c:787 ../driver/xscreensaver-demo.glade.h:28
+#: driver/demo-Gtk-widgets.c:787
 msgid "Display Splash Screen at Startup"
 msgstr "Indulókép megjelenítése indításnál"
 
-#: ../driver/demo-Gtk-widgets.c:796 ../driver/xscreensaver-demo.glade.h:15
-#: ../driver/xscreensaver-demo.glade2.h:8
+#: driver/demo-Gtk-widgets.c:796
 msgid "Colormaps"
 msgstr "Színtérképek"
 
-#: ../driver/demo-Gtk-widgets.c:840 ../driver/xscreensaver-demo.glade.h:88
-#: ../driver/xscreensaver-demo.glade2.h:64
+#: driver/demo-Gtk-widgets.c:840 driver/xscreensaver-demo.glade2.h:66
 msgid ""
 "Whether to install a private colormap when running in 8-bit mode on the "
 "default Visual."
@@ -300,99 +562,89 @@ msgstr ""
 "Telepítsen-e saját színtérképet az alapértelmezett megjelenítőn 8-bites "
 "módban való futáskor?"
 
-#: ../driver/demo-Gtk-widgets.c:842 ../driver/xscreensaver-demo.glade.h:48
+#: driver/demo-Gtk-widgets.c:842
 msgid "Install Colormap"
 msgstr "Színtérkép telepítése"
 
-#: ../driver/demo-Gtk-widgets.c:865 ../driver/xscreensaver-demo.glade.h:86
-#: ../driver/xscreensaver-demo.glade2.h:62
+#: driver/demo-Gtk-widgets.c:865 driver/xscreensaver-demo.glade2.h:65
 msgid ""
 "Whether the screen should slowly fade to black when the screen saver "
 "activates."
 msgstr "A kép lassan elfeketedjen-e amikor a képernyővédő bekapcsol?"
 
-#: ../driver/demo-Gtk-widgets.c:867 ../driver/xscreensaver-demo.glade.h:36
+#: driver/demo-Gtk-widgets.c:867
 msgid "Fade To Black When Blanking"
 msgstr "Elsötétítéskor elfeketítés"
 
-#: ../driver/demo-Gtk-widgets.c:882 ../driver/xscreensaver-demo.glade.h:85
-#: ../driver/xscreensaver-demo.glade2.h:61
+#: driver/demo-Gtk-widgets.c:882 driver/xscreensaver-demo.glade2.h:64
 msgid ""
 "Whether the screen should slowly fade in from black when the screen saver "
 "deactivates."
 msgstr "A kép feketéből álljon-e vissza lassan amikor a képernyővédő kikapcsol?"
 
-#: ../driver/demo-Gtk-widgets.c:884 ../driver/xscreensaver-demo.glade.h:35
+#: driver/demo-Gtk-widgets.c:884
 msgid "Fade From Black When Unblanking"
 msgstr "Visszaállításkor a képernyő feketéből tűnjön elő"
 
-#: ../driver/demo-Gtk-widgets.c:910 ../driver/xscreensaver-demo.glade.h:34
+#: driver/demo-Gtk-widgets.c:910
 msgid "Fade Duration"
 msgstr "Elhalványulás időtartama"
 
-#: ../driver/demo-Gtk-widgets.c:928 ../driver/xscreensaver-demo.glade.h:44
-#: ../driver/xscreensaver-demo.glade2.h:31
+#: driver/demo-Gtk-widgets.c:928 driver/xscreensaver-demo.glade2.h:26
 msgid "How long it should take for the screen to fade in and out."
 msgstr "Mennyi ideig tartson a képernyő elhalványulása és visszaállítása?"
 
-#: ../driver/demo-Gtk-widgets.c:932 ../driver/xscreensaver-demo.glade.h:100
-#: ../driver/xscreensaver-demo.glade2.h:96
+#: driver/demo-Gtk-widgets.c:932 driver/xscreensaver-demo.glade2.h:106
 msgid "seconds"
 msgstr "másodperc"
 
-#: ../driver/demo-Gtk-widgets.c:942 ../driver/xscreensaver-demo.glade.h:27
-#: ../driver/xscreensaver-demo.glade2.h:17
+#: driver/demo-Gtk-widgets.c:942 driver/xscreensaver-demo.glade2.h:13
 msgid "Display Power Management"
 msgstr "Képernyő energiagazdálkodása"
 
-#: ../driver/demo-Gtk-widgets.c:986 ../driver/xscreensaver-demo.glade.h:84
-#: ../driver/xscreensaver-demo.glade2.h:60
+#: driver/demo-Gtk-widgets.c:986 driver/xscreensaver-demo.glade2.h:63
 msgid "Whether the monitor should be powered down after a while."
 msgstr "A monitor kikapcsoljon-e egy idő után?"
 
-#: ../driver/demo-Gtk-widgets.c:988 ../driver/xscreensaver-demo.glade.h:57
+#: driver/demo-Gtk-widgets.c:988
 msgid "Power Management Enabled"
 msgstr "Energiagazdálkodás használata"
 
-#: ../driver/demo-Gtk-widgets.c:1056 ../driver/xscreensaver-demo.glade.h:55
+#: driver/demo-Gtk-widgets.c:1056
 msgid "Off After"
 msgstr "Kikapcsolás"
 
-#: ../driver/demo-Gtk-widgets.c:1069 ../driver/xscreensaver-demo.glade.h:70
+#: driver/demo-Gtk-widgets.c:1069
 msgid "Suspend After"
 msgstr "Felfüggesztés"
 
-#: ../driver/demo-Gtk-widgets.c:1082 ../driver/xscreensaver-demo.glade.h:68
+#: driver/demo-Gtk-widgets.c:1082
 msgid "Standby After"
 msgstr "Készenlét"
 
-#: ../driver/demo-Gtk-widgets.c:1105 ../driver/xscreensaver-demo.glade.h:45
-#: ../driver/xscreensaver-demo.glade2.h:33
+#: driver/demo-Gtk-widgets.c:1105 driver/xscreensaver-demo.glade2.h:28
 msgid "How long until the monitor goes into power-saving mode."
 msgstr "Mennyi idő után lépjen a monitor energiatakarékos módba?"
 
-#: ../driver/demo-Gtk-widgets.c:1119 ../driver/xscreensaver-demo.glade.h:46
-#: ../driver/xscreensaver-demo.glade2.h:34
+#: driver/demo-Gtk-widgets.c:1119 driver/xscreensaver-demo.glade2.h:29
 msgid "How long until the monitor powers down."
 msgstr "Mennyi idő után kapcsoljon ki a monitor?"
 
-#: ../driver/demo-Gtk-widgets.c:1123 ../driver/xscreensaver-demo.glade.h:47
-#: ../driver/xscreensaver-demo.glade2.h:35
+#: driver/demo-Gtk-widgets.c:1123 driver/xscreensaver-demo.glade2.h:30
 msgid "Image Manipulation"
 msgstr "Képmanipuláció"
 
-#: ../driver/demo-Gtk-widgets.c:1167 ../driver/xscreensaver-demo.glade.h:81
-#: ../driver/xscreensaver-demo.glade2.h:57
+#: driver/demo-Gtk-widgets.c:1167 driver/xscreensaver-demo.glade2.h:60
 msgid ""
 "Whether the image-manipulating modes should be allowed to operate on an "
 "image of your desktop."
 msgstr "A képmanipuláló módok használhatnak-e az asztalról készített képet?"
 
-#: ../driver/demo-Gtk-widgets.c:1169 ../driver/xscreensaver-demo.glade.h:39
+#: driver/demo-Gtk-widgets.c:1169
 msgid "Grab Desktop Images"
 msgstr "Asztalképek használata"
 
-#: ../driver/demo-Gtk-widgets.c:1184 ../driver/xscreensaver-demo.glade.h:82
+#: driver/demo-Gtk-widgets.c:1184
 msgid ""
 "Whether the image-manipulating modes should operate on images captured from "
 "the system's video input (if there is one)."
@@ -400,494 +652,189 @@ msgstr ""
 "A képmanipuláló módok használhatnak-e a rendszer videobemenetéről (ha van) "
 "készített képet?"
 
-#: ../driver/demo-Gtk-widgets.c:1186 ../driver/xscreensaver-demo.glade.h:40
+#: driver/demo-Gtk-widgets.c:1186
 msgid "Grab Video Frames"
 msgstr "Videoképek használata"
 
-#: ../driver/demo-Gtk-widgets.c:1201 ../driver/xscreensaver-demo.glade.h:83
-#: ../driver/xscreensaver-demo.glade2.h:59
+#: driver/demo-Gtk-widgets.c:1201 driver/xscreensaver-demo.glade2.h:62
 msgid ""
 "Whether the image-manipulating modes should operate on random images loaded "
 "from disk."
 msgstr "A képmanipuláló módok használhatnak-e a lemezről betöltött véletlen képeket?"
 
-#: ../driver/demo-Gtk-widgets.c:1203 ../driver/xscreensaver-demo.glade.h:12
+#: driver/demo-Gtk-widgets.c:1203
 msgid "Choose Random Image:"
 msgstr "Véletlenszerű kép választása:"
 
-#: ../driver/demo-Gtk-widgets.c:1236 ../driver/xscreensaver-demo.glade.h:73
-#: ../driver/xscreensaver-demo.glade2.h:52
+#: driver/demo-Gtk-widgets.c:1236 driver/xscreensaver-demo.glade2.h:53
 msgid "The directory from which images will be randomly chosen."
 msgstr "A könyvtár, amelyből a képek véletlenszerűen kikerülnek."
 
-#: ../driver/demo-Gtk-widgets.c:1238 ../driver/xscreensaver-demo.glade.h:10
+#: driver/demo-Gtk-widgets.c:1238
 msgid "Browse"
 msgstr "Tallózás"
 
-#: ../driver/demo-Gtk-widgets.c:1246 ../driver/demo-Gtk-widgets.c:1599
-#: ../driver/xscreensaver-demo.glade.h:3
-#: ../driver/xscreensaver-demo.glade2.h:2
+#: driver/demo-Gtk-widgets.c:1246 driver/demo-Gtk-widgets.c:1599
+#: driver/xscreensaver-demo.glade2.h:2
 msgid "Advanced"
 msgstr "Bővített"
 
-#: ../driver/demo-Gtk-widgets.c:1444 ../driver/xscreensaver-demo.glade.h:90
+#: driver/demo-Gtk-widgets.c:1444
 msgid "XScreenSaver: Mode-Specific Settings"
 msgstr "XScreenSaver: Mód-specifikus beállítások"
 
-#: ../driver/demo-Gtk-widgets.c:1466 ../driver/xscreensaver-demo.glade.h:64
-#: ../driver/xscreensaver-demo.glade2.h:47
+#: driver/demo-Gtk-widgets.c:1466 driver/xscreensaver-demo.glade2.h:41
 msgid "Settings"
 msgstr "Beállítások"
 
-#: ../driver/demo-Gtk-widgets.c:1495 ../driver/xscreensaver-demo.glade.h:66
-#: ../driver/xscreensaver-demo.glade2.h:49
+#: driver/demo-Gtk-widgets.c:1495 driver/xscreensaver-demo.glade2.h:43
 msgid "Standard"
 msgstr "Szabvány"
 
-#: ../driver/demo-Gtk-widgets.c:1532 ../driver/xscreensaver-demo.glade.h:77
+#: driver/demo-Gtk-widgets.c:1532
 msgid "Visual:"
 msgstr "Megjelenítő:"
 
-#: ../driver/demo-Gtk-widgets.c:1550 ../driver/demo-Gtk-widgets.c:1573
-#: ../driver/demo-Gtk.c:1545 ../driver/demo-Gtk.c:2871
-#: ../driver/xscreensaver-demo.glade.h:5
-#: ../driver/xscreensaver-demo.glade2.h:3
-msgid "Any"
-msgstr "Bármely"
-
-#: ../driver/demo-Gtk-widgets.c:1551 ../driver/xscreensaver-demo.glade.h:7
-#: ../driver/xscreensaver-demo.glade2.h:4
+#: driver/demo-Gtk-widgets.c:1551 driver/xscreensaver-demo.glade2.h:4
 msgid "Best"
 msgstr "Legjobb"
 
-#: ../driver/demo-Gtk-widgets.c:1552 ../driver/xscreensaver-demo.glade.h:19
-#: ../driver/xscreensaver-demo.glade2.h:10
+#: driver/demo-Gtk-widgets.c:1552 driver/xscreensaver-demo.glade2.h:8
 msgid "Default"
 msgstr "Alapértelmezett"
 
-#: ../driver/demo-Gtk-widgets.c:1553 ../driver/xscreensaver-demo.glade.h:20
-#: ../driver/xscreensaver-demo.glade2.h:11
+#: driver/demo-Gtk-widgets.c:1553 driver/xscreensaver-demo.glade2.h:9
 msgid "Default-N"
 msgstr "Alapértelmezett-N"
 
-#: ../driver/demo-Gtk-widgets.c:1554 ../driver/xscreensaver-demo.glade.h:37
-#: ../driver/xscreensaver-demo.glade2.h:23
+#: driver/demo-Gtk-widgets.c:1554 driver/xscreensaver-demo.glade2.h:18
 msgid "GL"
 msgstr "GL (OpenGL)"
 
-#: ../driver/demo-Gtk-widgets.c:1555 ../driver/xscreensaver-demo.glade.h:74
-#: ../driver/xscreensaver-demo.glade2.h:53
+#: driver/demo-Gtk-widgets.c:1555 driver/xscreensaver-demo.glade2.h:54
 msgid "TrueColor"
 msgstr "TrueColor"
 
-#: ../driver/demo-Gtk-widgets.c:1556 ../driver/xscreensaver-demo.glade.h:59
-#: ../driver/xscreensaver-demo.glade2.h:43
+#: driver/demo-Gtk-widgets.c:1556 driver/xscreensaver-demo.glade2.h:38
 msgid "PseudoColor"
 msgstr "PseudoColor"
 
-#: ../driver/demo-Gtk-widgets.c:1557 ../driver/xscreensaver-demo.glade.h:69
-#: ../driver/xscreensaver-demo.glade2.h:50
+#: driver/demo-Gtk-widgets.c:1557 driver/xscreensaver-demo.glade2.h:44
 msgid "StaticGray"
 msgstr "Statikus szürke"
 
-#: ../driver/demo-Gtk-widgets.c:1558 ../driver/xscreensaver-demo.glade.h:42
-#: ../driver/xscreensaver-demo.glade2.h:27
+#: driver/demo-Gtk-widgets.c:1558 driver/xscreensaver-demo.glade2.h:22
 msgid "GrayScale"
 msgstr "Szürkeárnyalatos"
 
-#: ../driver/demo-Gtk-widgets.c:1559 ../driver/xscreensaver-demo.glade.h:24
-#: ../driver/xscreensaver-demo.glade2.h:15
-msgid "DirectColor"
-msgstr "DirectColor"
-
-#: ../driver/demo-Gtk-widgets.c:1560 ../driver/xscreensaver-demo.glade.h:14
-#: ../driver/xscreensaver-demo.glade2.h:7 ../hacks/config/fuzzyflakes.xml.h:3
-msgid "Color"
-msgstr "Színes"
-
-#: ../driver/demo-Gtk-widgets.c:1561 ../driver/xscreensaver-demo.glade.h:41
-#: ../driver/xscreensaver-demo.glade2.h:26
-msgid "Gray"
-msgstr "Szürke"
-
-#: ../driver/demo-Gtk-widgets.c:1562 ../driver/xscreensaver-demo.glade.h:53
-#: ../driver/xscreensaver-demo.glade2.h:37
-msgid "Mono"
-msgstr "Mono"
-
-#: ../driver/demo-Gtk-widgets.c:1572 ../driver/xscreensaver-demo.glade.h:72
-msgid ""
-"The X visual type that this demo will require.  If that visual is available "
-"it will be used, otherwise, this demo will not be run."
-msgstr ""
-"Az X megjelenítő típusa, amit ez a demó használni fog. Ez a megjelenítő lesz "
-"használva, ha rendelkezére áll, egyébként ez a demó nem fog futni."
-
-#: ../driver/demo-Gtk-widgets.c:1575 ../driver/xscreensaver-demo.glade.h:16
-msgid "Command Line:"
-msgstr "Parancssor:"
-
-#: ../driver/demo-Gtk-widgets.c:1647 ../driver/xscreensaver-demo.glade.h:31
-msgid "Documentation..."
-msgstr "Dokumentáció..."
-
-#: ../driver/demo-Gtk-widgets.c:1655 ../driver/xscreensaver-demo.glade.h:13
-msgid "Click here to read the manual for this display mode, if it has one."
-msgstr ""
-"Kattintson ide ezen megjelenítési mód kézikönyvének (ha van) "
-"megjelenítéséhez."
-
-#: ../driver/demo-Gtk-widgets.c:1680 ../driver/xscreensaver-demo.glade.h:4
-msgid "Advanced >>"
-msgstr "Bővített >>"
-
-#: ../driver/demo-Gtk-widgets.c:1688 ../driver/xscreensaver-demo.glade.h:32
-msgid "Edit the command line directly."
-msgstr "Parancssor szerkesztése közvetlenül."
-
-#: ../driver/demo-Gtk-widgets.c:1690 ../driver/xscreensaver-demo.glade.h:67
-msgid "Standard <<"
-msgstr "Szabvány <<"
-
-#: ../driver/demo-Gtk-widgets.c:1698 ../driver/xscreensaver-demo.glade.h:6
-msgid "Back to the graphical configuration options."
-msgstr "Vissza a grafikai beállításokhoz."
-
-#: ../driver/demo-Gtk-widgets.c:1709 ../driver/demo-Gtk.c:748
-#: ../driver/xscreensaver-demo.glade.h:54
-msgid "OK"
-msgstr "OK"
-
-#: ../driver/demo-Gtk-widgets.c:1718 ../driver/xscreensaver-demo.glade.h:11
-msgid "Cancel"
-msgstr "Mégsem"
-
-#: ../driver/demo-Gtk.c:656
-msgid "For updates, check http://www.jwz.org/xscreensaver/"
-msgstr "Frissítésekért nézze meg ezt weblapot: http://www.jwz.org/xscreensaver/"
-
-#: ../driver/demo-Gtk.c:786
-msgid ""
-"Error:\n"
-"\n"
-"No Help URL has been specified.\n"
-msgstr ""
-"Hiba:\n"
-"\n"
-"Nincs megadva Súgó cím (URL).\n"
-
-#: ../driver/demo-Gtk.c:872
-msgid ""
-"Error:\n"
-"\n"
-"The xscreensaver daemon did not start up properly.\n"
-"\n"
-msgstr ""
-"Hiba:\n"
-"\n"
-"Az xscreensaver démon nem indult el megfelelően.\n"
-"\n"
-
-#: ../driver/demo-Gtk.c:884
-msgid ""
-"You are running as root.  This usually means that xscreensaver\n"
-"was unable to contact your X server because access control is\n"
-"turned on.  Try running this command:\n"
-"\n"
-"                        xhost +localhost\n"
-"\n"
-"and then selecting `File / Restart Daemon'.\n"
-"\n"
-"Note that turning off access control will allow anyone logged\n"
-"on to this machine to access your screen, which might be\n"
-"considered a security problem.  Please read the xscreensaver\n"
-"manual and FAQ for more information.\n"
-"\n"
-"You shouldn't run X as root. Instead, you should log in as a\n"
-"normal user, and `su' as necessary."
-msgstr ""
-"Rootként indította a programot. Ez általában azt jelenti, hogy az "
-"xscreensaver\n"
-"nem tudott kapcsolódni az X kiszolgálóhoz, mert a hozzáférés-szabályozás\n"
-"(access control) be van kapcsolva. Próbálja ezt a parancsot futtatni:\n"
-"\n"
-"                        xhost +localhost\n"
-"\n"
-"ezután válassza a \"Fájl / Démon újraindítása\" pontot.\n"
-"\n"
-"Ne feledje, hogy a hozzáférés-szabályozás kikapcsolása lehetővé teszi\n"
-"a hozzáférést a képernyőjéhez bárki számára, aki be van jelentkezve,\n"
-"ez biztonsági problémát jelenthet. Kérjük olvassa el az xscreensaver\n"
-"kézikönyvét és a FAQ-ot további információkért.\n"
-"\n"
-"Ne futtassa az X-et rootként. Ehelyett jelentkezzen be egyszerű\n"
-"felhasználóként és használja a \"su\" parancsot, ahol szükséges."
-
-#: ../driver/demo-Gtk.c:900
-msgid "Please check your $PATH and permissions."
-msgstr "Kérem ellenőrizze az útvonalakat ($PATH) és a jogokat."
-
-#: ../driver/demo-Gtk.c:935
-msgid ""
-"Error:\n"
-"\n"
-"Couldn't determine init file name!\n"
-msgstr ""
-"Hiba:\n"
-"\n"
-"Nem sikerült megállapítani a kezdő fájl nevét!\n"
-
-#: ../driver/demo-Gtk.c:940
-#, c-format
-msgid ""
-"Error:\n"
-"\n"
-"Couldn't write %s\n"
-msgstr ""
-"Hiba:\n"
-"\n"
-"Nem lehet írni ezt a fájlt: %s\n"
-
-#: ../driver/demo-Gtk.c:999
-msgid ""
-"Error:\n"
-"\n"
-"no `manualCommand' resource set."
-msgstr ""
-"Hiba:\n"
-"\n"
-"Nincs beállítva \"manualCommand\" érték."
-
-#: ../driver/demo-Gtk.c:1180
-#, c-format
-msgid ""
-"Error:\n"
-"\n"
-"Unparsable time format: \"%s\"\n"
-msgstr ""
-"Hiba:\n"
-"\n"
-"Feldolgozhatatlan időformátum: \"%s\"\n"
-
-#: ../driver/demo-Gtk.c:1836
-#, c-format
-msgid ""
-"Error:\n"
-"\n"
-"Directory does not exist: \"%s\"\n"
-msgstr ""
-"Hiba:\n"
-"\n"
-"Nem létezik a könyvtár: \"%s\"\n"
-
-#: ../driver/demo-Gtk.c:2553
-msgid "Descriptions not available: no XML support compiled in."
-msgstr "A leírások nem érhetőek el: nincs XML támogatás befordítva."
-
-#: ../driver/demo-Gtk.c:2558
-msgid "No description available."
-msgstr "Nincs elérhető leírás."
-
-#: ../driver/demo-Gtk.c:2823
-msgid "Blank Screen"
-msgstr "A képernyő elsötétítése"
-
-#: ../driver/demo-Gtk.c:2829
-msgid "Screen Saver Disabled"
-msgstr "Képernyővédő kikapcsolva"
-
-#: ../driver/demo-Gtk.c:2862
-#, c-format
-msgid "%s: %.100s Settings"
-msgstr "%s: %.100s beállításai"
-
-#: ../driver/demo-Gtk.c:3017
-#, c-format
-msgid ""
-"Warning:\n"
-"\n"
-"file \"%s\" has changed, reloading.\n"
-msgstr ""
-"Figyelem:\n"
-"\n"
-"A(z) \"%s\" fájl megváltozott, újratöltés.\n"
-
-#: ../driver/demo-Gtk.c:3099
-msgid "No Preview"
-msgstr "Nincs előnézet"
-
-#: ../driver/demo-Gtk.c:3099
-msgid "Available"
-msgstr "Elérhető"
+#: driver/demo-Gtk-widgets.c:1559 driver/xscreensaver-demo.glade2.h:12
+msgid "DirectColor"
+msgstr "DirectColor"
 
-#: ../driver/demo-Gtk.c:3100
-msgid "Not"
-msgstr "Nem"
+#: driver/demo-Gtk-widgets.c:1560 driver/xscreensaver-demo.glade2.h:6
+#: hacks/config/fuzzyflakes.xml.h:3
+msgid "Color"
+msgstr "Színes"
 
-#: ../driver/demo-Gtk.c:3100
-msgid "Installed"
-msgstr "Telepítve"
+#: driver/demo-Gtk-widgets.c:1561 driver/xscreensaver-demo.glade2.h:21
+msgid "Gray"
+msgstr "Szürke"
 
-#: ../driver/demo-Gtk.c:3865
-#, c-format
-msgid ""
-"Warning:\n"
-"\n"
-"The XScreenSaver daemon doesn't seem to be running\n"
-"on display \"%s\".  Launch it now?"
-msgstr ""
-"Figyelem:\n"
-"\n"
-"Az XScreenSaver démon nem fut\n"
-"ezen a képernyőn: \"%s\".  Elindítsam most?"
+#: driver/demo-Gtk-widgets.c:1562 driver/xscreensaver-demo.glade2.h:32
+msgid "Mono"
+msgstr "Mono"
 
-#: ../driver/demo-Gtk.c:3875
-#, c-format
+#: driver/demo-Gtk-widgets.c:1572
 msgid ""
-"Warning:\n"
-"\n"
-"%s is running as user \"%s\" on host \"%s\".\n"
-"But the xscreensaver managing display \"%s\"\n"
-"is running as user \"%s\" on host \"%s\".\n"
-"\n"
-"Since they are different users, they won't be reading/writing\n"
-"the same ~/.xscreensaver file, so %s isn't\n"
-"going to work right.\n"
-"\n"
-"You should either re-run %s as \"%s\", or re-run\n"
-"xscreensaver as \"%s\".\n"
-"\n"
-"Restart the xscreensaver daemon now?\n"
+"The X visual type that this demo will require.  If that visual is available "
+"it will be used, otherwise, this demo will not be run."
 msgstr ""
-"Figyelem:\n"
-"\n"
-"A következőt: \"%s\" \"%s\" felhasználó futtatja ezen a kiszolgálón: \"%s"
-"\".\n"
-"De az xscreensavert kezelő \"%s\" képernyőt\n"
-"\"%s\" felhasználó futtatja \"%s\" képernyőn.\n"
-"\n"
-"Mivel ezek különböző felhasználók, nem tudják ugyanazt a ~/.xscreensaver\n"
-"fájlt írni, így az %s nem fog megfelelően működni.\n"
-"\n"
-"Vagy az %s-t futtassa újra \"%s\" felhasználóként, vagy\n"
-"az xscreensavert futtassa \"%s\" felhasználóként.\n"
-"\n"
-"Újraindítja az xscreensaver démont most?\n"
+"Az X megjelenítő típusa, amit ez a demó használni fog. Ez a megjelenítő lesz "
+"használva, ha rendelkezésre áll, egyébként ez a demó nem fog futni."
 
-#: ../driver/demo-Gtk.c:3900
-#, c-format
-msgid ""
-"Warning:\n"
-"\n"
-"%s is running as user \"%s\" on host \"%s\".\n"
-"But the xscreensaver managing display \"%s\"\n"
-"is running as user \"%s\" on host \"%s\".\n"
-"\n"
-"If those two machines don't share a file system (that is,\n"
-"if they don't see the same ~%s/.xscreensaver file) then\n"
-"%s won't work right.\n"
-"\n"
-"Restart the daemon on \"%s\" as \"%s\" now?\n"
-msgstr ""
-"Figyelem:\n"
-"\n"
-"A következőt: \"%s\" \"%s\" felhasználó futtatja ezen a kiszolgálón: \"%s"
-"\".\n"
-"De az xscreensavert kezelő \"%s\" képernyőt\n"
-"\"%s\" felhasználó futtatja \"%s\" kiszolgálón.\n"
-"\n"
-"Ha ez a két kiszolgáló nem használ egy közös fájlrendszert (ekkor nem\n"
-"tudják ugyanazt a ~%s/.xscreensaver fájlt írni) akkor a(z) %s nem fog\n"
-"megfelelően működni.\n"
-"\n"
-"Újraindítja most az xscreensaver démont \"%s\" kiszolgálón \"%s\" "
-"felhasználóként?\n"
+#: driver/demo-Gtk-widgets.c:1575
+msgid "Command Line:"
+msgstr "Parancssor:"
 
-#: ../driver/demo-Gtk.c:3922
-#, c-format
-msgid ""
-"Warning:\n"
-"\n"
-"This is %s version %s.\n"
-"But the xscreensaver managing display \"%s\"\n"
-"is version %s.  This could cause problems.\n"
-"\n"
-"Restart the xscreensaver daemon now?\n"
+#: driver/demo-Gtk-widgets.c:1647
+msgid "Documentation..."
+msgstr "Dokumentáció..."
+
+#: driver/demo-Gtk-widgets.c:1655
+msgid "Click here to read the manual for this display mode, if it has one."
 msgstr ""
-"Figyelem:\n"
-"\n"
-"Ez a(z) %s %s verziója.\n"
-"De a(z) \"%s\" képernyőt kezelő xscreensaver\n"
-"%s verziójú. Ez gondokat okozhat.\n"
-"\n"
-"Újraindítja az xscreensaver démont most?\n"
+"Kattintson ide ezen megjelenítési mód kézikönyvének (ha van) "
+"megjelenítéséhez."
 
-#: ../driver/demo-Gtk.c:4379
-#, c-format
-msgid "%s: unknown option: %s\n"
-msgstr "%s: ismeretlen opció: %s\n"
+#: driver/demo-Gtk-widgets.c:1680
+msgid "Advanced >>"
+msgstr "Bővített >>"
 
-#: ../driver/demo-Gtk.c:4443
-msgid "Screensaver Preferences"
-msgstr "Képernyővédő beállításai"
+#: driver/demo-Gtk-widgets.c:1688
+msgid "Edit the command line directly."
+msgstr "Parancssor szerkesztése közvetlenül."
+
+#: driver/demo-Gtk-widgets.c:1690
+msgid "Standard <<"
+msgstr "Szabvány <<"
 
-#: ../driver/screensaver-properties.desktop.in.h:1
+#: driver/demo-Gtk-widgets.c:1698
+msgid "Back to the graphical configuration options."
+msgstr "Vissza a grafikai beállításokhoz."
+
+#: driver/demo-Gtk-widgets.c:1718
+msgid "Cancel"
+msgstr "Mégsem"
+
+#: driver/screensaver-properties.desktop.in.h:1
 msgid "Change screensaver properties"
 msgstr "Képernyővédő tulajdonságainak megváltoztatása"
 
-#: ../driver/screensaver-properties.desktop.in.h:2
+#: driver/screensaver-properties.desktop.in.h:2
 msgid "Screensaver"
 msgstr "Képernyővédő"
 
-#: ../driver/xscreensaver-demo.glade.h:1
-msgid "/\");"
-msgstr "/\");"
-
-#: ../driver/xscreensaver-demo.glade2.h:1
+#: driver/xscreensaver-demo.glade2.h:1
 msgid "*"
 msgstr "*"
 
-#: ../driver/xscreensaver-demo.glade2.h:6
+#: driver/xscreensaver-demo.glade2.h:5
 msgid "Choose _Random Image:"
 msgstr "Véletlensze_rű kép választása:"
 
-#: ../driver/xscreensaver-demo.glade2.h:18
-msgid "Display Subprocess _Errors"
-msgstr "Alfolyamatok hibáinak meg_jelenítése"
-
-#: ../driver/xscreensaver-demo.glade2.h:19
-msgid "Display _Splash Screen at Startup"
-msgstr "_Indítókép megjelenítése indításkor"
-
-#: ../driver/xscreensaver-demo.glade2.h:20
+#: driver/xscreensaver-demo.glade2.h:14
 msgid "F_ade Duration"
 msgstr "Elhalványulás i_dőtartama"
 
-#: ../driver/xscreensaver-demo.glade2.h:21
+#: driver/xscreensaver-demo.glade2.h:15
 msgid "Fade from Black When _Unblanking"
 msgstr "Visszaállí_táskor a képernyő feketéből tűnjön elő"
 
-#: ../driver/xscreensaver-demo.glade2.h:22
+#: driver/xscreensaver-demo.glade2.h:16
 msgid "Fade to Black when _Blanking"
 msgstr "E_lsötétítéskor elfeketítés"
 
-#: ../driver/xscreensaver-demo.glade2.h:24
+#: driver/xscreensaver-demo.glade2.h:17
+msgid "Fading and Colormaps"
+msgstr "Elhalványulás és színtérképek"
+
+#: driver/xscreensaver-demo.glade2.h:19
 msgid "Grab Desktop _Images"
 msgstr "_Asztalképek használata"
 
-#: ../driver/xscreensaver-demo.glade2.h:25
+#: driver/xscreensaver-demo.glade2.h:20
 msgid "Grab _Video Frames"
 msgstr "_Videoképek használata"
 
-#: ../driver/xscreensaver-demo.glade2.h:28
+#: driver/xscreensaver-demo.glade2.h:23
 msgid "How long after the screen blanks until a password will be required."
 msgstr "A képernyő elsötétülése után ennyi perccel jelszó szükséges."
 
-#: ../driver/xscreensaver-demo.glade2.h:29
-msgid "How long before the screensaver activates."
-msgstr "A képernyővédő bekapcsolása ennyi perc inaktivitás után"
+#: driver/xscreensaver-demo.glade2.h:24
+msgid "How long before the screen saver activates."
+msgstr "A képernyővédő bekapcsolása ennyi perc után."
 
-#: ../driver/xscreensaver-demo.glade2.h:30
+#: driver/xscreensaver-demo.glade2.h:25
 msgid ""
 "How long each display mode should run before choosing a new one (in Random "
 "mode.)"
@@ -895,15 +842,19 @@ msgstr ""
 "Meddig fusson egy-egy képernyővédő mielőtt egy újat választ (Véletlenszerű "
 "módban)"
 
-#: ../driver/xscreensaver-demo.glade2.h:32
+#: driver/xscreensaver-demo.glade2.h:27
 msgid "How long until the monitor goes completely black."
 msgstr "A monitor teljes elsötétítése ennyi idő eltelte után."
 
-#: ../driver/xscreensaver-demo.glade2.h:36
+#: driver/xscreensaver-demo.glade2.h:31
 msgid "Install _Colormap"
 msgstr "S_zíntérkép telepítése"
 
-#: ../driver/xscreensaver-demo.glade2.h:38
+#: driver/xscreensaver-demo.glade2.h:33
+msgid "Never blank the screen or power down the monitor."
+msgstr "Soha ne sötétítse el a képet vagy kapcsolja ki a monitort."
+
+#: driver/xscreensaver-demo.glade2.h:34
 msgid ""
 "No Preview\n"
 "Available"
@@ -911,7 +862,7 @@ msgstr ""
 "Nincs elérhető\n"
 "előnézet"
 
-#: ../driver/xscreensaver-demo.glade2.h:40
+#: driver/xscreensaver-demo.glade2.h:36
 msgid ""
 "Not\n"
 "Installed"
@@ -919,15 +870,63 @@ msgstr ""
 "Nincs\n"
 "telepítve"
 
-#: ../driver/xscreensaver-demo.glade2.h:48
+#: driver/xscreensaver-demo.glade2.h:42
 msgid "Stand_by After"
 msgstr "_Készenlét"
 
-#: ../driver/xscreensaver-demo.glade2.h:51
+#: driver/xscreensaver-demo.glade2.h:45
 msgid "Sus_pend After"
 msgstr "_Felfüggesztés"
 
-#: ../driver/xscreensaver-demo.glade2.h:58
+#: driver/xscreensaver-demo.glade2.h:46
+msgid "Text Manipulation"
+msgstr "Szövegmanipuláció"
+
+#: driver/xscreensaver-demo.glade2.h:47
+msgid "Text _file"
+msgstr "S_zövegfájl"
+
+#: driver/xscreensaver-demo.glade2.h:48
+msgid "Text-displaying modes will display the contents of this URL (HTML or RSS)."
+msgstr "A szöveget megjelenítő képernyővédők ezen URL (HTML vagy RSS) tartalmát fogják megjeleníteni."
+
+#: driver/xscreensaver-demo.glade2.h:49
+msgid "Text-displaying modes will display the contents of this file."
+msgstr "A szöveget megjelenítő képernyővédők ezen fájl tartalmát fogják megjeleníteni."
+
+#: driver/xscreensaver-demo.glade2.h:50
+msgid "Text-displaying modes will display the local host name, date, and time."
+msgstr "A szöveget megjelenítő képernyővédők a számítógép nevét, a dátumot és az időt fogják megjeleníteni."
+
+#: driver/xscreensaver-demo.glade2.h:51
+msgid "Text-displaying modes will display the output of this program."
+msgstr "A szöveget megjelenítő képernyővédők ezen program kimenetét fogják megjeleníteni."
+
+#: driver/xscreensaver-demo.glade2.h:52
+msgid "Text-displaying modes will display the text typed here."
+msgstr "A szöveget megjelenítő képernyővédők az ide beírt szöveget fogják megjeleníteni."
+
+#: driver/xscreensaver-demo.glade2.h:55
+msgid "When idle or locked, blacken the screen only."
+msgstr "Üresjáratban vagy zároláskor csak sötétítse el a képernyőt."
+
+#: driver/xscreensaver-demo.glade2.h:56
+msgid ""
+"When idle or locked, choose a random display mode from among the checked "
+"items in the list below."
+msgstr "Üresjáratban vagy zároláskor válasszon véletlenszerűen egy képernyővédőt az alábbi listában megjelöltek közül."
+
+#: driver/xscreensaver-demo.glade2.h:57
+msgid ""
+"When idle or locked, choose a random display mode from among the checked "
+"items in the list below.  Run that same mode on each monitor."
+msgstr "Üresjáratban vagy zároláskor válasszon véletlenszerűen egy képernyővédőt az alábbi listában megjelöltek közül. Minden egyes monitoron ugyanez jelenjen meg."
+
+#: driver/xscreensaver-demo.glade2.h:58
+msgid "When idle or locked, run the display mode selected below."
+msgstr "Üresjáratban vagy zároláskor futtassa az alábbi listában megjelölt képernyővédőt."
+
+#: driver/xscreensaver-demo.glade2.h:61
 msgid ""
 "Whether the image-manipulating modes should operate on images captured from "
 "the system's video input (if there is one.)"
@@ -935,516 +934,551 @@ msgstr ""
 "A képmanipuláló módok használhatnak-e a rendszer videobemenetéről (ha van) "
 "készített képet?"
 
-#: ../driver/xscreensaver-demo.glade2.h:67
+#: driver/xscreensaver-demo.glade2.h:69
 msgid "_Advanced"
 msgstr "Bőví_tett"
 
-#: ../driver/xscreensaver-demo.glade2.h:68
+#: driver/xscreensaver-demo.glade2.h:70
 msgid "_Advanced >>"
 msgstr "_Bővített >>"
 
-#: ../driver/xscreensaver-demo.glade2.h:69
+#: driver/xscreensaver-demo.glade2.h:71
 msgid "_Blank After"
 msgstr "_Elsötétítés"
 
-#: ../driver/xscreensaver-demo.glade2.h:71
+#: driver/xscreensaver-demo.glade2.h:73
+msgid "_Blank Screen Only"
+msgstr "_Csak üres képernyő"
+
+#: driver/xscreensaver-demo.glade2.h:74
 msgid "_Browse"
 msgstr "Bö_ngészés"
 
-#: ../driver/xscreensaver-demo.glade2.h:72
+#: driver/xscreensaver-demo.glade2.h:75
 msgid "_Command Line:"
 msgstr "Paran_cssor:"
 
-#: ../driver/xscreensaver-demo.glade2.h:73
+#: driver/xscreensaver-demo.glade2.h:76
 msgid "_Cycle After"
 msgstr "_Váltás"
 
-#: ../driver/xscreensaver-demo.glade2.h:74
+#: driver/xscreensaver-demo.glade2.h:77
+msgid "_Disable Screen Saver"
+msgstr "Képernyővédő _tiltása"
+
+#: driver/xscreensaver-demo.glade2.h:78
 msgid "_Display Modes"
 msgstr "Képernyő mó_dok"
 
-#: ../driver/xscreensaver-demo.glade2.h:79
-msgid "_Lock Screen After"
-msgstr "Képernyő _zárolása"
+#: driver/xscreensaver-demo.glade2.h:82
+msgid "_Host Name and Time"
+msgstr "_Gépnév és idő"
 
-#: ../driver/xscreensaver-demo.glade2.h:81
+#: driver/xscreensaver-demo.glade2.h:84
+msgid "_Lock Screen After  "
+msgstr "Képernyő _zárolása  "
+
+#: driver/xscreensaver-demo.glade2.h:86
 msgid "_Mode:"
 msgstr "_Mód:"
 
-#: ../driver/xscreensaver-demo.glade2.h:82
+#: driver/xscreensaver-demo.glade2.h:87
 msgid "_Off After"
 msgstr "Kika_pcsolás"
 
-#: ../driver/xscreensaver-demo.glade2.h:83
+#: driver/xscreensaver-demo.glade2.h:88
+msgid "_Only One Screen Saver"
+msgstr "Csak _egy képernyővédő"
+
+#: driver/xscreensaver-demo.glade2.h:89
 msgid "_Power Management Enabled"
 msgstr "_Energiagazdálkodás használata"
 
-#: ../driver/xscreensaver-demo.glade2.h:84
+#: driver/xscreensaver-demo.glade2.h:90
 msgid "_Preview"
 msgstr "Elő_nézet"
 
-#: ../driver/xscreensaver-demo.glade2.h:85
+#: driver/xscreensaver-demo.glade2.h:91
+msgid "_Program"
+msgstr "Pr_ogram"
+
+#: driver/xscreensaver-demo.glade2.h:92
 msgid "_Quit"
 msgstr "_Kilépés"
 
-#: ../driver/xscreensaver-demo.glade2.h:87
+#: driver/xscreensaver-demo.glade2.h:93
+msgid "_Random Screen Saver"
+msgstr "_Véletlenszerű képernyővédő"
+
+#: driver/xscreensaver-demo.glade2.h:95
+msgid "_Same Random Savers"
+msgstr "_Ugyanazok a véletlenszerű képernyővédők"
+
+#: driver/xscreensaver-demo.glade2.h:96
 msgid "_Settings..."
 msgstr "Beállítás_ok..."
 
-#: ../driver/xscreensaver-demo.glade2.h:88
+#: driver/xscreensaver-demo.glade2.h:97
 msgid "_Standard <<"
 msgstr "_Egyszerű <<"
 
-#: ../driver/xscreensaver-demo.glade2.h:89
-msgid "_Verbose Diagnostics"
-msgstr "Bőbeszédű _diagnosztika"
+#: driver/xscreensaver-demo.glade2.h:98
+msgid "_Text"
+msgstr "Szöve_g"
+
+#: driver/xscreensaver-demo.glade2.h:99
+msgid "_URL"
+msgstr "_URL"
 
-#: ../driver/xscreensaver-demo.glade2.h:90
+#: driver/xscreensaver-demo.glade2.h:100
 msgid "_Visual:"
 msgstr "Meg_jelenítő:"
 
-#: ../driver/xscreensaver-demo.glade2.h:91
+#: driver/xscreensaver-demo.glade2.h:101
 msgid "dialog1"
 msgstr "dialog1"
 
-#: ../driver/xscreensaver-demo.glade2.h:93
+#: driver/xscreensaver-demo.glade2.h:103
 msgid "no preview"
 msgstr "nincs előnézet"
 
-#: ../driver/xscreensaver-demo.glade2.h:94
+#: driver/xscreensaver-demo.glade2.h:104
 msgid "not installed"
 msgstr "nincs telepítve"
 
-#: ../driver/xscreensaver-demo.glade2.h:95
+#: driver/xscreensaver-demo.glade2.h:105
 msgid "preview"
 msgstr "előnézet"
 
-#: ../hacks/config/anemone.xml.h:1
+#: hacks/config/anemone.xml.h:1
 msgid "Anemone"
 msgstr "Anemóna"
 
-#: ../hacks/config/anemone.xml.h:2 ../hacks/config/fuzzyflakes.xml.h:1
+#: hacks/config/anemone.xml.h:2 hacks/config/fuzzyflakes.xml.h:1
 msgid "Arms"
 msgstr "Karok"
 
-#: ../hacks/config/anemone.xml.h:3 ../hacks/config/anemotaxis.xml.h:5
-#: ../hacks/config/ant.xml.h:6 ../hacks/config/antinspect.xml.h:4
-#: ../hacks/config/antspotlight.xml.h:3 ../hacks/config/apollonian.xml.h:5
-#: ../hacks/config/atlantis.xml.h:4 ../hacks/config/attraction.xml.h:8
-#: ../hacks/config/atunnel.xml.h:3 ../hacks/config/barcode.xml.h:4
-#: ../hacks/config/blaster.xml.h:4 ../hacks/config/blinkbox.xml.h:5
-#: ../hacks/config/blitspin.xml.h:4 ../hacks/config/blocktube.xml.h:4
-#: ../hacks/config/bouboule.xml.h:3 ../hacks/config/bouncingcow.xml.h:6
-#: ../hacks/config/boxed.xml.h:4 ../hacks/config/braid.xml.h:4
-#: ../hacks/config/bubble3d.xml.h:3 ../hacks/config/bubbles.xml.h:8
-#: ../hacks/config/bumps.xml.h:4 ../hacks/config/cage.xml.h:2
-#: ../hacks/config/circuit.xml.h:4 ../hacks/config/cloudlife.xml.h:3
-#: ../hacks/config/compass.xml.h:3 ../hacks/config/coral.xml.h:7
-#: ../hacks/config/critical.xml.h:4 ../hacks/config/crystal.xml.h:6
-#: ../hacks/config/cubenetic.xml.h:8 ../hacks/config/cubestorm.xml.h:4
-#: ../hacks/config/cynosure.xml.h:4 ../hacks/config/dangerball.xml.h:3
-#: ../hacks/config/decayscreen.xml.h:2 ../hacks/config/deluxe.xml.h:4
-#: ../hacks/config/demon.xml.h:4 ../hacks/config/discrete.xml.h:2
-#: ../hacks/config/distort.xml.h:4 ../hacks/config/drift.xml.h:3
-#: ../hacks/config/endgame.xml.h:3 ../hacks/config/engine.xml.h:8
-#: ../hacks/config/epicycle.xml.h:5 ../hacks/config/eruption.xml.h:5
-#: ../hacks/config/euler2d.xml.h:3 ../hacks/config/extrusion.xml.h:3
-#: ../hacks/config/fadeplot.xml.h:4 ../hacks/config/fireworkx.xml.h:3
-#: ../hacks/config/flag.xml.h:2 ../hacks/config/flame.xml.h:6
-#: ../hacks/config/flipflop.xml.h:1 ../hacks/config/flipscreen3d.xml.h:1
-#: ../hacks/config/flow.xml.h:2 ../hacks/config/fluidballs.xml.h:5
-#: ../hacks/config/flyingtoasters.xml.h:5 ../hacks/config/fontglide.xml.h:4
-#: ../hacks/config/forest.xml.h:1 ../hacks/config/fuzzyflakes.xml.h:7
-#: ../hacks/config/galaxy.xml.h:3 ../hacks/config/gears.xml.h:2
-#: ../hacks/config/gflux.xml.h:7 ../hacks/config/glblur.xml.h:4
-#: ../hacks/config/glforestfire.xml.h:4 ../hacks/config/glknots.xml.h:3
-#: ../hacks/config/glmatrix.xml.h:8 ../hacks/config/glplanet.xml.h:2
-#: ../hacks/config/glsnake.xml.h:6 ../hacks/config/gltext.xml.h:3
-#: ../hacks/config/goop.xml.h:4 ../hacks/config/grav.xml.h:2
-#: ../hacks/config/greynetic.xml.h:1 ../hacks/config/halo.xml.h:2
-#: ../hacks/config/hopalong.xml.h:9 ../hacks/config/hyperball.xml.h:2
-#: ../hacks/config/hypercube.xml.h:2 ../hacks/config/hypertorus.xml.h:6
-#: ../hacks/config/ifs.xml.h:1 ../hacks/config/interference.xml.h:7
-#: ../hacks/config/intermomentary.xml.h:1 ../hacks/config/jigglypuff.xml.h:6
-#: ../hacks/config/jigsaw.xml.h:3 ../hacks/config/juggle.xml.h:4
-#: ../hacks/config/julia.xml.h:2 ../hacks/config/kaleidescope.xml.h:3
-#: ../hacks/config/klein.xml.h:2 ../hacks/config/kumppa.xml.h:3
-#: ../hacks/config/lament.xml.h:2 ../hacks/config/laser.xml.h:3
-#: ../hacks/config/lavalite.xml.h:10 ../hacks/config/lightning.xml.h:1
-#: ../hacks/config/lisa.xml.h:2 ../hacks/config/lissie.xml.h:3
-#: ../hacks/config/lmorph.xml.h:3 ../hacks/config/loop.xml.h:1
-#: ../hacks/config/maze.xml.h:4 ../hacks/config/memscroller.xml.h:5
-#: ../hacks/config/menger.xml.h:3 ../hacks/config/metaballs.xml.h:4
-#: ../hacks/config/mirrorblob.xml.h:12 ../hacks/config/mismunch.xml.h:2
-#: ../hacks/config/moebius.xml.h:3 ../hacks/config/moire2.xml.h:2
-#: ../hacks/config/molecule.xml.h:10 ../hacks/config/morph3d.xml.h:3
-#: ../hacks/config/mountain.xml.h:2 ../hacks/config/munch.xml.h:4
-#: ../hacks/config/nerverot.xml.h:9 ../hacks/config/noof.xml.h:2
-#: ../hacks/config/pacman.xml.h:1 ../hacks/config/penetrate.xml.h:3
-#: ../hacks/config/penrose.xml.h:6 ../hacks/config/petri.xml.h:5
-#: ../hacks/config/phosphor.xml.h:5 ../hacks/config/piecewise.xml.h:4
-#: ../hacks/config/pinion.xml.h:5 ../hacks/config/pipes.xml.h:5
-#: ../hacks/config/polyhedra.xml.h:18 ../hacks/config/polyominoes.xml.h:2
-#: ../hacks/config/polytopes.xml.h:11 ../hacks/config/pong.xml.h:1
-#: ../hacks/config/popsquares.xml.h:3 ../hacks/config/providence.xml.h:2
-#: ../hacks/config/pulsar.xml.h:11 ../hacks/config/pyro.xml.h:4
-#: ../hacks/config/qix.xml.h:7 ../hacks/config/queens.xml.h:1
-#: ../hacks/config/rd-bomb.xml.h:9 ../hacks/config/ripples.xml.h:4
-#: ../hacks/config/rocks.xml.h:4 ../hacks/config/rotor.xml.h:3
-#: ../hacks/config/rubik.xml.h:3 ../hacks/config/sballs.xml.h:4
-#: ../hacks/config/shadebobs.xml.h:3 ../hacks/config/sierpinski.xml.h:2
-#: ../hacks/config/sierpinski3d.xml.h:2 ../hacks/config/slidescreen.xml.h:2
-#: ../hacks/config/slip.xml.h:2 ../hacks/config/speedmine.xml.h:3
-#: ../hacks/config/sphere.xml.h:2 ../hacks/config/spheremonics.xml.h:5
-#: ../hacks/config/spiral.xml.h:3 ../hacks/config/spotlight.xml.h:2
-#: ../hacks/config/sproingies.xml.h:2 ../hacks/config/squiral.xml.h:5
-#: ../hacks/config/stairs.xml.h:1 ../hacks/config/starfish.xml.h:3
-#: ../hacks/config/starwars.xml.h:6 ../hacks/config/strange.xml.h:1
-#: ../hacks/config/substrate.xml.h:2 ../hacks/config/superquadrics.xml.h:4
-#: ../hacks/config/swirl.xml.h:2 ../hacks/config/t3d.xml.h:6
-#: ../hacks/config/thornbird.xml.h:2 ../hacks/config/triangle.xml.h:1
-#: ../hacks/config/truchet.xml.h:1 ../hacks/config/twang.xml.h:3
-#: ../hacks/config/vines.xml.h:1 ../hacks/config/webcollage.xml.h:4
-#: ../hacks/config/worm.xml.h:4 ../hacks/config/wormhole.xml.h:2
-#: ../hacks/config/xearth.xml.h:7 ../hacks/config/xfishtank.xml.h:3
-#: ../hacks/config/xflame.xml.h:4 ../hacks/config/xjack.xml.h:1
-#: ../hacks/config/xmatrix.xml.h:5 ../hacks/config/xmountains.xml.h:13
-#: ../hacks/config/xplanet.xml.h:8 ../hacks/config/xrayswarm.xml.h:2
-#: ../hacks/config/zoom.xml.h:2
+#: hacks/config/anemone.xml.h:3 hacks/config/anemotaxis.xml.h:5
+#: hacks/config/antinspect.xml.h:4 hacks/config/antspotlight.xml.h:3
+#: hacks/config/ant.xml.h:6 hacks/config/apollonian.xml.h:5
+#: hacks/config/atlantis.xml.h:4 hacks/config/attraction.xml.h:8
+#: hacks/config/atunnel.xml.h:3 hacks/config/barcode.xml.h:4
+#: hacks/config/blaster.xml.h:3 hacks/config/blinkbox.xml.h:5
+#: hacks/config/blitspin.xml.h:4 hacks/config/blocktube.xml.h:4
+#: hacks/config/boing.xml.h:2 hacks/config/bouboule.xml.h:3
+#: hacks/config/bouncingcow.xml.h:6 hacks/config/boxed.xml.h:4
+#: hacks/config/boxfit.xml.h:8 hacks/config/braid.xml.h:4
+#: hacks/config/bubble3d.xml.h:3 hacks/config/bubbles.xml.h:8
+#: hacks/config/bumps.xml.h:3 hacks/config/cage.xml.h:2
+#: hacks/config/carousel.xml.h:5 hacks/config/circuit.xml.h:4
+#: hacks/config/cloudlife.xml.h:3 hacks/config/compass.xml.h:3
+#: hacks/config/coral.xml.h:7 hacks/config/critical.xml.h:3
+#: hacks/config/crystal.xml.h:6 hacks/config/cubenetic.xml.h:8
+#: hacks/config/cubestorm.xml.h:4 hacks/config/cynosure.xml.h:4
+#: hacks/config/dangerball.xml.h:3 hacks/config/decayscreen.xml.h:2
+#: hacks/config/deluxe.xml.h:4 hacks/config/demon.xml.h:4
+#: hacks/config/discrete.xml.h:2 hacks/config/distort.xml.h:4
+#: hacks/config/drift.xml.h:3 hacks/config/endgame.xml.h:3
+#: hacks/config/engine.xml.h:8 hacks/config/epicycle.xml.h:5
+#: hacks/config/eruption.xml.h:5 hacks/config/euler2d.xml.h:3
+#: hacks/config/extrusion.xml.h:3 hacks/config/fadeplot.xml.h:4
+#: hacks/config/fireworkx.xml.h:3 hacks/config/flag.xml.h:2
+#: hacks/config/flame.xml.h:6 hacks/config/flipflop.xml.h:1
+#: hacks/config/flipscreen3d.xml.h:1 hacks/config/fliptext.xml.h:3
+#: hacks/config/flow.xml.h:2 hacks/config/fluidballs.xml.h:5
+#: hacks/config/flyingtoasters.xml.h:5 hacks/config/fontglide.xml.h:4
+#: hacks/config/forest.xml.h:1 hacks/config/fuzzyflakes.xml.h:7
+#: hacks/config/galaxy.xml.h:3 hacks/config/gears.xml.h:2
+#: hacks/config/gflux.xml.h:6 hacks/config/glblur.xml.h:4
+#: hacks/config/glforestfire.xml.h:4 hacks/config/glknots.xml.h:3
+#: hacks/config/glmatrix.xml.h:8 hacks/config/glplanet.xml.h:2
+#: hacks/config/glsnake.xml.h:6 hacks/config/gltext.xml.h:4
+#: hacks/config/goop.xml.h:4 hacks/config/grav.xml.h:2
+#: hacks/config/greynetic.xml.h:1 hacks/config/halo.xml.h:2
+#: hacks/config/hopalong.xml.h:9 hacks/config/hyperball.xml.h:2
+#: hacks/config/hypercube.xml.h:2 hacks/config/hypertorus.xml.h:6
+#: hacks/config/ifs.xml.h:4 hacks/config/interference.xml.h:7
+#: hacks/config/intermomentary.xml.h:1 hacks/config/jigglypuff.xml.h:6
+#: hacks/config/jigsaw.xml.h:3 hacks/config/juggle.xml.h:2
+#: hacks/config/julia.xml.h:2 hacks/config/kaleidescope.xml.h:2
+#: hacks/config/klein.xml.h:2 hacks/config/kumppa.xml.h:3
+#: hacks/config/lament.xml.h:2 hacks/config/laser.xml.h:3
+#: hacks/config/lavalite.xml.h:10 hacks/config/lightning.xml.h:1
+#: hacks/config/lisa.xml.h:2 hacks/config/lissie.xml.h:3
+#: hacks/config/lmorph.xml.h:3 hacks/config/loop.xml.h:1
+#: hacks/config/maze.xml.h:4 hacks/config/memscroller.xml.h:5
+#: hacks/config/menger.xml.h:3 hacks/config/metaballs.xml.h:4
+#: hacks/config/mirrorblob.xml.h:12 hacks/config/mismunch.xml.h:2
+#: hacks/config/moebius.xml.h:3 hacks/config/moire2.xml.h:2
+#: hacks/config/molecule.xml.h:11 hacks/config/morph3d.xml.h:3
+#: hacks/config/mountain.xml.h:2 hacks/config/munch.xml.h:3
+#: hacks/config/nerverot.xml.h:9 hacks/config/noof.xml.h:2
+#: hacks/config/pacman.xml.h:1 hacks/config/penetrate.xml.h:3
+#: hacks/config/penrose.xml.h:6 hacks/config/petri.xml.h:5
+#: hacks/config/phosphor.xml.h:4 hacks/config/piecewise.xml.h:4
+#: hacks/config/pinion.xml.h:5 hacks/config/pipes.xml.h:5
+#: hacks/config/polyhedra.xml.h:18 hacks/config/polyominoes.xml.h:2
+#: hacks/config/polytopes.xml.h:11 hacks/config/pong.xml.h:1
+#: hacks/config/popsquares.xml.h:3 hacks/config/providence.xml.h:2
+#: hacks/config/pulsar.xml.h:11 hacks/config/pyro.xml.h:4
+#: hacks/config/qix.xml.h:7 hacks/config/queens.xml.h:1
+#: hacks/config/rd-bomb.xml.h:9 hacks/config/ripples.xml.h:4
+#: hacks/config/rocks.xml.h:4 hacks/config/rotor.xml.h:3
+#: hacks/config/rubik.xml.h:3 hacks/config/sballs.xml.h:4
+#: hacks/config/shadebobs.xml.h:3 hacks/config/sierpinski3d.xml.h:2
+#: hacks/config/sierpinski.xml.h:2 hacks/config/slidescreen.xml.h:2
+#: hacks/config/slip.xml.h:2 hacks/config/speedmine.xml.h:3
+#: hacks/config/spheremonics.xml.h:5 hacks/config/sphere.xml.h:2
+#: hacks/config/spiral.xml.h:3 hacks/config/spotlight.xml.h:2
+#: hacks/config/sproingies.xml.h:2 hacks/config/squiral.xml.h:4
+#: hacks/config/stairs.xml.h:1 hacks/config/starfish.xml.h:3
+#: hacks/config/starwars.xml.h:6 hacks/config/strange.xml.h:1
+#: hacks/config/substrate.xml.h:7 hacks/config/superquadrics.xml.h:4
+#: hacks/config/swirl.xml.h:2 hacks/config/t3d.xml.h:6
+#: hacks/config/thornbird.xml.h:2 hacks/config/triangle.xml.h:1
+#: hacks/config/truchet.xml.h:1 hacks/config/twang.xml.h:3
+#: hacks/config/vines.xml.h:1 hacks/config/wormhole.xml.h:2
+#: hacks/config/worm.xml.h:3 hacks/config/xearth.xml.h:7
+#: hacks/config/xfishtank.xml.h:3 hacks/config/xflame.xml.h:4
+#: hacks/config/xjack.xml.h:1 hacks/config/xmatrix.xml.h:5
+#: hacks/config/xmountains.xml.h:13 hacks/config/xplanet.xml.h:8
+#: hacks/config/xrayswarm.xml.h:2 hacks/config/zoom.xml.h:2
 msgid "Fast"
 msgstr "Gyors"
 
-#: ../hacks/config/anemone.xml.h:4 ../hacks/config/anemotaxis.xml.h:6
-#: ../hacks/config/blaster.xml.h:5 ../hacks/config/bouboule.xml.h:4
-#: ../hacks/config/coral.xml.h:8 ../hacks/config/cubenetic.xml.h:9
-#: ../hacks/config/eruption.xml.h:6 ../hacks/config/euler2d.xml.h:4
-#: ../hacks/config/flame.xml.h:7 ../hacks/config/fluidballs.xml.h:6
-#: ../hacks/config/fuzzyflakes.xml.h:8 ../hacks/config/kaleidescope.xml.h:4
-#: ../hacks/config/lisa.xml.h:3 ../hacks/config/pedal.xml.h:4
-#: ../hacks/config/petri.xml.h:7 ../hacks/config/qix.xml.h:8
-#: ../hacks/config/substrate.xml.h:3 ../hacks/config/thornbird.xml.h:3
-#: ../hacks/config/whirlwindwarp.xml.h:1 ../hacks/config/wormhole.xml.h:3
-#: ../hacks/config/xfishtank.xml.h:4
+#: hacks/config/anemone.xml.h:4 hacks/config/anemotaxis.xml.h:6
+#: hacks/config/blaster.xml.h:4 hacks/config/bouboule.xml.h:4
+#: hacks/config/coral.xml.h:8 hacks/config/cubenetic.xml.h:9
+#: hacks/config/eruption.xml.h:6 hacks/config/euler2d.xml.h:4
+#: hacks/config/fiberlamp.xml.h:2 hacks/config/flame.xml.h:7
+#: hacks/config/fluidballs.xml.h:6 hacks/config/fuzzyflakes.xml.h:8
+#: hacks/config/kaleidescope.xml.h:3 hacks/config/lisa.xml.h:3
+#: hacks/config/pedal.xml.h:4 hacks/config/petri.xml.h:7
+#: hacks/config/qix.xml.h:8 hacks/config/substrate.xml.h:8
+#: hacks/config/thornbird.xml.h:3 hacks/config/whirlwindwarp.xml.h:1
+#: hacks/config/wormhole.xml.h:3 hacks/config/xfishtank.xml.h:4
 msgid "Few"
 msgstr "Kevés"
 
-#: ../hacks/config/anemone.xml.h:5 ../hacks/config/anemotaxis.xml.h:7
-#: ../hacks/config/ant.xml.h:9 ../hacks/config/apollonian.xml.h:7
-#: ../hacks/config/attraction.xml.h:19 ../hacks/config/blaster.xml.h:7
-#: ../hacks/config/bouboule.xml.h:5 ../hacks/config/braid.xml.h:7
-#: ../hacks/config/coral.xml.h:9 ../hacks/config/critical.xml.h:5
-#: ../hacks/config/crystal.xml.h:8 ../hacks/config/cubenetic.xml.h:13
-#: ../hacks/config/cynosure.xml.h:6 ../hacks/config/deco.xml.h:5
-#: ../hacks/config/deluxe.xml.h:6 ../hacks/config/demon.xml.h:6
-#: ../hacks/config/discrete.xml.h:4 ../hacks/config/drift.xml.h:9
-#: ../hacks/config/epicycle.xml.h:8 ../hacks/config/eruption.xml.h:12
-#: ../hacks/config/euler2d.xml.h:8 ../hacks/config/fadeplot.xml.h:6
-#: ../hacks/config/flag.xml.h:5 ../hacks/config/flame.xml.h:11
-#: ../hacks/config/flow.xml.h:7 ../hacks/config/fluidballs.xml.h:13
-#: ../hacks/config/forest.xml.h:3 ../hacks/config/fuzzyflakes.xml.h:12
-#: ../hacks/config/galaxy.xml.h:6 ../hacks/config/grav.xml.h:4
-#: ../hacks/config/halo.xml.h:4 ../hacks/config/hopalong.xml.h:15
-#: ../hacks/config/ifs.xml.h:3 ../hacks/config/imsmap.xml.h:9
-#: ../hacks/config/interference.xml.h:14 ../hacks/config/julia.xml.h:6
-#: ../hacks/config/kaleidescope.xml.h:6 ../hacks/config/laser.xml.h:6
-#: ../hacks/config/lightning.xml.h:3 ../hacks/config/lisa.xml.h:5
-#: ../hacks/config/lissie.xml.h:6 ../hacks/config/loop.xml.h:4
-#: ../hacks/config/metaballs.xml.h:6 ../hacks/config/mismunch.xml.h:4
-#: ../hacks/config/moire.xml.h:5 ../hacks/config/moire2.xml.h:3
-#: ../hacks/config/mountain.xml.h:4 ../hacks/config/nerverot.xml.h:15
-#: ../hacks/config/pedal.xml.h:6 ../hacks/config/penrose.xml.h:7
-#: ../hacks/config/petri.xml.h:11 ../hacks/config/polyominoes.xml.h:5
-#: ../hacks/config/qix.xml.h:14 ../hacks/config/rd-bomb.xml.h:12
-#: ../hacks/config/ripples.xml.h:7 ../hacks/config/rocks.xml.h:5
-#: ../hacks/config/rotor.xml.h:6 ../hacks/config/shadebobs.xml.h:5
-#: ../hacks/config/sierpinski.xml.h:4 ../hacks/config/slip.xml.h:4
-#: ../hacks/config/sphere.xml.h:3 ../hacks/config/spiral.xml.h:6
-#: ../hacks/config/squiral.xml.h:10 ../hacks/config/starfish.xml.h:5
-#: ../hacks/config/strange.xml.h:2 ../hacks/config/swirl.xml.h:3
-#: ../hacks/config/thornbird.xml.h:4 ../hacks/config/triangle.xml.h:3
-#: ../hacks/config/vines.xml.h:2 ../hacks/config/whirlwindwarp.xml.h:4
-#: ../hacks/config/worm.xml.h:5 ../hacks/config/xearth.xml.h:12
-#: ../hacks/config/xfishtank.xml.h:8
+#: hacks/config/anemone.xml.h:5 hacks/config/anemotaxis.xml.h:7
+#: hacks/config/ant.xml.h:9 hacks/config/apollonian.xml.h:7
+#: hacks/config/attraction.xml.h:18 hacks/config/blaster.xml.h:6
+#: hacks/config/bouboule.xml.h:5 hacks/config/braid.xml.h:7
+#: hacks/config/coral.xml.h:9 hacks/config/critical.xml.h:4
+#: hacks/config/crystal.xml.h:8 hacks/config/cubenetic.xml.h:13
+#: hacks/config/cynosure.xml.h:6 hacks/config/deco.xml.h:5
+#: hacks/config/deluxe.xml.h:6 hacks/config/demon.xml.h:6
+#: hacks/config/discrete.xml.h:4 hacks/config/drift.xml.h:9
+#: hacks/config/epicycle.xml.h:8 hacks/config/eruption.xml.h:12
+#: hacks/config/euler2d.xml.h:8 hacks/config/fadeplot.xml.h:6
+#: hacks/config/fiberlamp.xml.h:6 hacks/config/flag.xml.h:5
+#: hacks/config/flame.xml.h:11 hacks/config/flow.xml.h:7
+#: hacks/config/fluidballs.xml.h:13 hacks/config/forest.xml.h:3
+#: hacks/config/fuzzyflakes.xml.h:12 hacks/config/galaxy.xml.h:6
+#: hacks/config/grav.xml.h:4 hacks/config/halo.xml.h:4
+#: hacks/config/hopalong.xml.h:15 hacks/config/ifs.xml.h:8
+#: hacks/config/imsmap.xml.h:9 hacks/config/interference.xml.h:14
+#: hacks/config/julia.xml.h:6 hacks/config/kaleidescope.xml.h:5
+#: hacks/config/laser.xml.h:6 hacks/config/lightning.xml.h:3
+#: hacks/config/lisa.xml.h:5 hacks/config/lissie.xml.h:6
+#: hacks/config/loop.xml.h:4 hacks/config/metaballs.xml.h:6
+#: hacks/config/mismunch.xml.h:4 hacks/config/moire2.xml.h:3
+#: hacks/config/moire.xml.h:5 hacks/config/mountain.xml.h:4
+#: hacks/config/nerverot.xml.h:15 hacks/config/pedal.xml.h:6
+#: hacks/config/penrose.xml.h:7 hacks/config/petri.xml.h:11
+#: hacks/config/polyominoes.xml.h:5 hacks/config/qix.xml.h:14
+#: hacks/config/rd-bomb.xml.h:12 hacks/config/ripples.xml.h:7
+#: hacks/config/rocks.xml.h:5 hacks/config/rotor.xml.h:6
+#: hacks/config/shadebobs.xml.h:5 hacks/config/sierpinski.xml.h:4
+#: hacks/config/slip.xml.h:4 hacks/config/sphere.xml.h:3
+#: hacks/config/spiral.xml.h:6 hacks/config/squiral.xml.h:9
+#: hacks/config/starfish.xml.h:5 hacks/config/strange.xml.h:2
+#: hacks/config/swirl.xml.h:3 hacks/config/thornbird.xml.h:4
+#: hacks/config/triangle.xml.h:3 hacks/config/vines.xml.h:2
+#: hacks/config/whirlwindwarp.xml.h:4 hacks/config/worm.xml.h:4
+#: hacks/config/xearth.xml.h:12 hacks/config/xfishtank.xml.h:8
 msgid "Many"
 msgstr "Sok"
 
-#: ../hacks/config/anemone.xml.h:6 ../hacks/config/ant.xml.h:11
-#: ../hacks/config/apollonian.xml.h:8 ../hacks/config/attraction.xml.h:20
-#: ../hacks/config/bouboule.xml.h:6 ../hacks/config/braid.xml.h:9
-#: ../hacks/config/critical.xml.h:6 ../hacks/config/crystal.xml.h:10
-#: ../hacks/config/cynosure.xml.h:7 ../hacks/config/deco.xml.h:8
-#: ../hacks/config/deluxe.xml.h:7 ../hacks/config/demon.xml.h:7
-#: ../hacks/config/discrete.xml.h:6 ../hacks/config/drift.xml.h:10
-#: ../hacks/config/epicycle.xml.h:9 ../hacks/config/eruption.xml.h:14
-#: ../hacks/config/euler2d.xml.h:9 ../hacks/config/fadeplot.xml.h:7
-#: ../hacks/config/flag.xml.h:6 ../hacks/config/flame.xml.h:12
-#: ../hacks/config/flow.xml.h:8 ../hacks/config/forest.xml.h:4
-#: ../hacks/config/galaxy.xml.h:7 ../hacks/config/grav.xml.h:5
-#: ../hacks/config/halo.xml.h:6 ../hacks/config/hopalong.xml.h:17
-#: ../hacks/config/ifs.xml.h:4 ../hacks/config/imsmap.xml.h:10
-#: ../hacks/config/interference.xml.h:15 ../hacks/config/julia.xml.h:7
-#: ../hacks/config/laser.xml.h:8 ../hacks/config/lightning.xml.h:4
-#: ../hacks/config/lisa.xml.h:6 ../hacks/config/lissie.xml.h:7
-#: ../hacks/config/loop.xml.h:5 ../hacks/config/metaballs.xml.h:10
-#: ../hacks/config/moire.xml.h:7 ../hacks/config/moire2.xml.h:5
-#: ../hacks/config/mountain.xml.h:6 ../hacks/config/penrose.xml.h:8
-#: ../hacks/config/polyominoes.xml.h:6 ../hacks/config/popsquares.xml.h:4
-#: ../hacks/config/rd-bomb.xml.h:13 ../hacks/config/rocks.xml.h:6
-#: ../hacks/config/rotor.xml.h:7 ../hacks/config/shadebobs.xml.h:6
-#: ../hacks/config/sierpinski.xml.h:5 ../hacks/config/slip.xml.h:5
-#: ../hacks/config/sphere.xml.h:4 ../hacks/config/spiral.xml.h:8
-#: ../hacks/config/squiral.xml.h:11 ../hacks/config/starfish.xml.h:6
-#: ../hacks/config/strange.xml.h:3 ../hacks/config/swirl.xml.h:5
-#: ../hacks/config/thornbird.xml.h:5 ../hacks/config/triangle.xml.h:4
-#: ../hacks/config/vines.xml.h:3 ../hacks/config/worm.xml.h:6
-#: ../hacks/config/xearth.xml.h:17 ../hacks/config/xfishtank.xml.h:9
+#: hacks/config/anemone.xml.h:6 hacks/config/ant.xml.h:11
+#: hacks/config/apollonian.xml.h:8 hacks/config/attraction.xml.h:19
+#: hacks/config/bouboule.xml.h:6 hacks/config/braid.xml.h:9
+#: hacks/config/critical.xml.h:5 hacks/config/crystal.xml.h:10
+#: hacks/config/cynosure.xml.h:7 hacks/config/deco.xml.h:8
+#: hacks/config/deluxe.xml.h:7 hacks/config/demon.xml.h:7
+#: hacks/config/discrete.xml.h:6 hacks/config/drift.xml.h:10
+#: hacks/config/epicycle.xml.h:9 hacks/config/eruption.xml.h:14
+#: hacks/config/euler2d.xml.h:9 hacks/config/fadeplot.xml.h:7
+#: hacks/config/flag.xml.h:6 hacks/config/flame.xml.h:12
+#: hacks/config/flow.xml.h:8 hacks/config/forest.xml.h:4
+#: hacks/config/galaxy.xml.h:7 hacks/config/grav.xml.h:5
+#: hacks/config/halo.xml.h:6 hacks/config/hopalong.xml.h:17
+#: hacks/config/imsmap.xml.h:10 hacks/config/interference.xml.h:15
+#: hacks/config/julia.xml.h:7 hacks/config/laser.xml.h:8
+#: hacks/config/lightning.xml.h:4 hacks/config/lisa.xml.h:6
+#: hacks/config/lissie.xml.h:7 hacks/config/loop.xml.h:5
+#: hacks/config/metaballs.xml.h:10 hacks/config/moire2.xml.h:5
+#: hacks/config/moire.xml.h:7 hacks/config/mountain.xml.h:6
+#: hacks/config/penrose.xml.h:8 hacks/config/polyominoes.xml.h:6
+#: hacks/config/popsquares.xml.h:4 hacks/config/rd-bomb.xml.h:13
+#: hacks/config/rocks.xml.h:6 hacks/config/rotor.xml.h:7
+#: hacks/config/shadebobs.xml.h:6 hacks/config/sierpinski.xml.h:5
+#: hacks/config/slip.xml.h:5 hacks/config/sphere.xml.h:4
+#: hacks/config/spiral.xml.h:8 hacks/config/squiral.xml.h:10
+#: hacks/config/starfish.xml.h:6 hacks/config/strange.xml.h:3
+#: hacks/config/swirl.xml.h:5 hacks/config/thornbird.xml.h:5
+#: hacks/config/triangle.xml.h:4 hacks/config/vines.xml.h:3
+#: hacks/config/worm.xml.h:5 hacks/config/xearth.xml.h:17
+#: hacks/config/xfishtank.xml.h:9
 msgid "Number of Colors"
 msgstr "Színek száma"
 
-#: ../hacks/config/anemone.xml.h:7 ../hacks/config/fireflies.xml.h:32
-#: ../hacks/config/pyro.xml.h:8
+#: hacks/config/anemone.xml.h:7 hacks/config/fireflies.xml.h:32
+#: hacks/config/pyro.xml.h:8
 msgid "Often"
 msgstr "Gyakran"
 
-#: ../hacks/config/anemone.xml.h:8
+#: hacks/config/anemone.xml.h:8
 msgid "Rarely"
 msgstr "Ritkán"
 
-#: ../hacks/config/anemone.xml.h:9 ../hacks/config/anemotaxis.xml.h:10
-#: ../hacks/config/ant.xml.h:15 ../hacks/config/antinspect.xml.h:6
-#: ../hacks/config/antspotlight.xml.h:5 ../hacks/config/apollonian.xml.h:11
-#: ../hacks/config/atlantis.xml.h:13 ../hacks/config/attraction.xml.h:27
-#: ../hacks/config/atunnel.xml.h:6 ../hacks/config/barcode.xml.h:6
-#: ../hacks/config/blaster.xml.h:9 ../hacks/config/blinkbox.xml.h:7
-#: ../hacks/config/blitspin.xml.h:7 ../hacks/config/blocktube.xml.h:9
-#: ../hacks/config/bouboule.xml.h:8 ../hacks/config/bouncingcow.xml.h:10
-#: ../hacks/config/boxed.xml.h:7 ../hacks/config/braid.xml.h:11
-#: ../hacks/config/bubble3d.xml.h:5 ../hacks/config/bubbles.xml.h:10
-#: ../hacks/config/bumps.xml.h:5 ../hacks/config/cage.xml.h:4
-#: ../hacks/config/circuit.xml.h:10 ../hacks/config/cloudlife.xml.h:11
-#: ../hacks/config/compass.xml.h:4 ../hacks/config/coral.xml.h:12
-#: ../hacks/config/critical.xml.h:7 ../hacks/config/crystal.xml.h:11
-#: ../hacks/config/cubenetic.xml.h:22 ../hacks/config/cubestorm.xml.h:8
-#: ../hacks/config/cynosure.xml.h:9 ../hacks/config/dangerball.xml.h:5
-#: ../hacks/config/decayscreen.xml.h:17 ../hacks/config/deluxe.xml.h:8
-#: ../hacks/config/demon.xml.h:8 ../hacks/config/discrete.xml.h:7
-#: ../hacks/config/distort.xml.h:11 ../hacks/config/drift.xml.h:12
-#: ../hacks/config/endgame.xml.h:5 ../hacks/config/engine.xml.h:15
-#: ../hacks/config/epicycle.xml.h:10 ../hacks/config/eruption.xml.h:19
-#: ../hacks/config/euler2d.xml.h:14 ../hacks/config/extrusion.xml.h:11
-#: ../hacks/config/fadeplot.xml.h:8 ../hacks/config/fireworkx.xml.h:9
-#: ../hacks/config/flag.xml.h:7 ../hacks/config/flame.xml.h:14
-#: ../hacks/config/flipflop.xml.h:5 ../hacks/config/flipscreen3d.xml.h:6
-#: ../hacks/config/flow.xml.h:10 ../hacks/config/fluidballs.xml.h:18
-#: ../hacks/config/flyingtoasters.xml.h:11 ../hacks/config/fontglide.xml.h:13
-#: ../hacks/config/forest.xml.h:5 ../hacks/config/fuzzyflakes.xml.h:15
-#: ../hacks/config/galaxy.xml.h:11 ../hacks/config/gears.xml.h:7
-#: ../hacks/config/gflux.xml.h:13 ../hacks/config/glblur.xml.h:14
-#: ../hacks/config/glforestfire.xml.h:14 ../hacks/config/glknots.xml.h:17
-#: ../hacks/config/glmatrix.xml.h:18 ../hacks/config/glplanet.xml.h:8
-#: ../hacks/config/glsnake.xml.h:12 ../hacks/config/gltext.xml.h:13
-#: ../hacks/config/goop.xml.h:10 ../hacks/config/grav.xml.h:8
-#: ../hacks/config/greynetic.xml.h:3 ../hacks/config/halo.xml.h:10
-#: ../hacks/config/hopalong.xml.h:21 ../hacks/config/hyperball.xml.h:8
-#: ../hacks/config/hypercube.xml.h:7 ../hacks/config/hypertorus.xml.h:13
-#: ../hacks/config/ifs.xml.h:5 ../hacks/config/interference.xml.h:17
-#: ../hacks/config/intermomentary.xml.h:4 ../hacks/config/jigglypuff.xml.h:16
-#: ../hacks/config/jigsaw.xml.h:5 ../hacks/config/juggle.xml.h:8
-#: ../hacks/config/julia.xml.h:8 ../hacks/config/kaleidescope.xml.h:8
-#: ../hacks/config/klein.xml.h:7 ../hacks/config/kumppa.xml.h:8
-#: ../hacks/config/lament.xml.h:6 ../hacks/config/laser.xml.h:10
-#: ../hacks/config/lavalite.xml.h:27 ../hacks/config/lightning.xml.h:5
-#: ../hacks/config/lisa.xml.h:8 ../hacks/config/lissie.xml.h:9
-#: ../hacks/config/lmorph.xml.h:11 ../hacks/config/loop.xml.h:7
-#: ../hacks/config/maze.xml.h:14 ../hacks/config/memscroller.xml.h:7
-#: ../hacks/config/menger.xml.h:16 ../hacks/config/metaballs.xml.h:13
-#: ../hacks/config/mirrorblob.xml.h:19 ../hacks/config/mismunch.xml.h:10
-#: ../hacks/config/moebius.xml.h:7 ../hacks/config/moire2.xml.h:6
-#: ../hacks/config/molecule.xml.h:22 ../hacks/config/morph3d.xml.h:6
-#: ../hacks/config/mountain.xml.h:7 ../hacks/config/munch.xml.h:8
-#: ../hacks/config/nerverot.xml.h:20 ../hacks/config/noof.xml.h:5
-#: ../hacks/config/pacman.xml.h:5 ../hacks/config/penetrate.xml.h:6
-#: ../hacks/config/penrose.xml.h:11 ../hacks/config/petri.xml.h:23
-#: ../hacks/config/phosphor.xml.h:8 ../hacks/config/piecewise.xml.h:9
-#: ../hacks/config/pinion.xml.h:13 ../hacks/config/pipes.xml.h:16
-#: ../hacks/config/polyhedra.xml.h:119 ../hacks/config/polyominoes.xml.h:10
-#: ../hacks/config/polytopes.xml.h:20 ../hacks/config/pong.xml.h:4
-#: ../hacks/config/popsquares.xml.h:5 ../hacks/config/providence.xml.h:5
-#: ../hacks/config/pulsar.xml.h:15 ../hacks/config/pyro.xml.h:13
-#: ../hacks/config/qix.xml.h:19 ../hacks/config/queens.xml.h:4
-#: ../hacks/config/rd-bomb.xml.h:17 ../hacks/config/ripples.xml.h:11
-#: ../hacks/config/rocks.xml.h:9 ../hacks/config/rotor.xml.h:11
-#: ../hacks/config/rubik.xml.h:9 ../hacks/config/sballs.xml.h:13
-#: ../hacks/config/shadebobs.xml.h:9 ../hacks/config/sierpinski.xml.h:7
-#: ../hacks/config/sierpinski3d.xml.h:8 ../hacks/config/slidescreen.xml.h:6
-#: ../hacks/config/slip.xml.h:7 ../hacks/config/speedmine.xml.h:14
-#: ../hacks/config/sphere.xml.h:5 ../hacks/config/spheremonics.xml.h:19
-#: ../hacks/config/spiral.xml.h:9 ../hacks/config/spotlight.xml.h:4
-#: ../hacks/config/sproingies.xml.h:6 ../hacks/config/squiral.xml.h:15
-#: ../hacks/config/stairs.xml.h:3 ../hacks/config/starfish.xml.h:8
-#: ../hacks/config/starwars.xml.h:12 ../hacks/config/strange.xml.h:4
-#: ../hacks/config/substrate.xml.h:10 ../hacks/config/superquadrics.xml.h:8
-#: ../hacks/config/swirl.xml.h:6 ../hacks/config/t3d.xml.h:11
-#: ../hacks/config/thornbird.xml.h:7 ../hacks/config/triangle.xml.h:5
-#: ../hacks/config/truchet.xml.h:2 ../hacks/config/twang.xml.h:9
-#: ../hacks/config/vines.xml.h:4 ../hacks/config/webcollage.xml.h:7
-#: ../hacks/config/worm.xml.h:8 ../hacks/config/wormhole.xml.h:5
-#: ../hacks/config/xearth.xml.h:22 ../hacks/config/xfishtank.xml.h:10
-#: ../hacks/config/xflame.xml.h:5 ../hacks/config/xjack.xml.h:2
-#: ../hacks/config/xmatrix.xml.h:15 ../hacks/config/xplanet.xml.h:59
-#: ../hacks/config/xrayswarm.xml.h:3 ../hacks/config/zoom.xml.h:6
+#: hacks/config/anemone.xml.h:9 hacks/config/anemotaxis.xml.h:10
+#: hacks/config/antinspect.xml.h:6 hacks/config/antspotlight.xml.h:5
+#: hacks/config/ant.xml.h:15 hacks/config/apollonian.xml.h:11
+#: hacks/config/atlantis.xml.h:13 hacks/config/attraction.xml.h:26
+#: hacks/config/atunnel.xml.h:6 hacks/config/barcode.xml.h:6
+#: hacks/config/blaster.xml.h:8 hacks/config/blinkbox.xml.h:7
+#: hacks/config/blitspin.xml.h:7 hacks/config/blocktube.xml.h:9
+#: hacks/config/boing.xml.h:10 hacks/config/bouboule.xml.h:8
+#: hacks/config/bouncingcow.xml.h:10 hacks/config/boxed.xml.h:7
+#: hacks/config/boxfit.xml.h:12 hacks/config/braid.xml.h:11
+#: hacks/config/bubble3d.xml.h:5 hacks/config/bubbles.xml.h:10
+#: hacks/config/bumps.xml.h:4 hacks/config/cage.xml.h:4
+#: hacks/config/carousel.xml.h:14 hacks/config/circuit.xml.h:10
+#: hacks/config/cloudlife.xml.h:11 hacks/config/compass.xml.h:4
+#: hacks/config/coral.xml.h:12 hacks/config/critical.xml.h:6
+#: hacks/config/crystal.xml.h:11 hacks/config/cubenetic.xml.h:22
+#: hacks/config/cubestorm.xml.h:8 hacks/config/cynosure.xml.h:9
+#: hacks/config/dangerball.xml.h:5 hacks/config/decayscreen.xml.h:17
+#: hacks/config/deluxe.xml.h:8 hacks/config/demon.xml.h:8
+#: hacks/config/discrete.xml.h:7 hacks/config/distort.xml.h:11
+#: hacks/config/drift.xml.h:12 hacks/config/endgame.xml.h:5
+#: hacks/config/engine.xml.h:15 hacks/config/epicycle.xml.h:10
+#: hacks/config/eruption.xml.h:19 hacks/config/euler2d.xml.h:14
+#: hacks/config/extrusion.xml.h:11 hacks/config/fadeplot.xml.h:8
+#: hacks/config/fireworkx.xml.h:9 hacks/config/flag.xml.h:7
+#: hacks/config/flame.xml.h:14 hacks/config/flipflop.xml.h:5
+#: hacks/config/flipscreen3d.xml.h:6 hacks/config/fliptext.xml.h:13
+#: hacks/config/flow.xml.h:10 hacks/config/fluidballs.xml.h:18
+#: hacks/config/flyingtoasters.xml.h:11 hacks/config/fontglide.xml.h:13
+#: hacks/config/forest.xml.h:5 hacks/config/fuzzyflakes.xml.h:15
+#: hacks/config/galaxy.xml.h:11 hacks/config/gears.xml.h:7
+#: hacks/config/gflux.xml.h:12 hacks/config/glblur.xml.h:14
+#: hacks/config/glforestfire.xml.h:14 hacks/config/glknots.xml.h:17
+#: hacks/config/glmatrix.xml.h:18 hacks/config/glplanet.xml.h:8
+#: hacks/config/glsnake.xml.h:12 hacks/config/gltext.xml.h:15
+#: hacks/config/goop.xml.h:10 hacks/config/grav.xml.h:8
+#: hacks/config/greynetic.xml.h:3 hacks/config/halo.xml.h:10
+#: hacks/config/hopalong.xml.h:21 hacks/config/hyperball.xml.h:8
+#: hacks/config/hypercube.xml.h:7 hacks/config/hypertorus.xml.h:13
+#: hacks/config/ifs.xml.h:13 hacks/config/interference.xml.h:17
+#: hacks/config/intermomentary.xml.h:4 hacks/config/jigglypuff.xml.h:16
+#: hacks/config/jigsaw.xml.h:5 hacks/config/juggle.xml.h:8
+#: hacks/config/julia.xml.h:8 hacks/config/kaleidescope.xml.h:7
+#: hacks/config/klein.xml.h:7 hacks/config/kumppa.xml.h:8
+#: hacks/config/lament.xml.h:6 hacks/config/laser.xml.h:10
+#: hacks/config/lavalite.xml.h:27 hacks/config/lightning.xml.h:5
+#: hacks/config/lisa.xml.h:8 hacks/config/lissie.xml.h:9
+#: hacks/config/lmorph.xml.h:11 hacks/config/loop.xml.h:7
+#: hacks/config/maze.xml.h:14 hacks/config/memscroller.xml.h:7
+#: hacks/config/menger.xml.h:16 hacks/config/metaballs.xml.h:13
+#: hacks/config/mirrorblob.xml.h:19 hacks/config/mismunch.xml.h:10
+#: hacks/config/moebius.xml.h:7 hacks/config/moire2.xml.h:6
+#: hacks/config/molecule.xml.h:23 hacks/config/morph3d.xml.h:6
+#: hacks/config/mountain.xml.h:7 hacks/config/munch.xml.h:7
+#: hacks/config/nerverot.xml.h:20 hacks/config/noof.xml.h:5
+#: hacks/config/pacman.xml.h:5 hacks/config/penetrate.xml.h:6
+#: hacks/config/penrose.xml.h:11 hacks/config/petri.xml.h:23
+#: hacks/config/phosphor.xml.h:7 hacks/config/piecewise.xml.h:9
+#: hacks/config/pinion.xml.h:13 hacks/config/pipes.xml.h:15
+#: hacks/config/polyhedra.xml.h:119 hacks/config/polyominoes.xml.h:10
+#: hacks/config/polytopes.xml.h:20 hacks/config/pong.xml.h:4
+#: hacks/config/popsquares.xml.h:5 hacks/config/providence.xml.h:5
+#: hacks/config/pulsar.xml.h:15 hacks/config/pyro.xml.h:13
+#: hacks/config/qix.xml.h:19 hacks/config/queens.xml.h:4
+#: hacks/config/rd-bomb.xml.h:17 hacks/config/ripples.xml.h:11
+#: hacks/config/rocks.xml.h:9 hacks/config/rotor.xml.h:11
+#: hacks/config/rubik.xml.h:9 hacks/config/sballs.xml.h:13
+#: hacks/config/shadebobs.xml.h:9 hacks/config/sierpinski3d.xml.h:8
+#: hacks/config/sierpinski.xml.h:7 hacks/config/slidescreen.xml.h:6
+#: hacks/config/slip.xml.h:7 hacks/config/speedmine.xml.h:13
+#: hacks/config/spheremonics.xml.h:19 hacks/config/sphere.xml.h:5
+#: hacks/config/spiral.xml.h:9 hacks/config/spotlight.xml.h:4
+#: hacks/config/sproingies.xml.h:6 hacks/config/squiral.xml.h:14
+#: hacks/config/stairs.xml.h:3 hacks/config/starfish.xml.h:8
+#: hacks/config/starwars.xml.h:12 hacks/config/strange.xml.h:4
+#: hacks/config/substrate.xml.h:15 hacks/config/superquadrics.xml.h:8
+#: hacks/config/swirl.xml.h:6 hacks/config/t3d.xml.h:11
+#: hacks/config/thornbird.xml.h:7 hacks/config/triangle.xml.h:5
+#: hacks/config/truchet.xml.h:2 hacks/config/twang.xml.h:9
+#: hacks/config/vines.xml.h:4 hacks/config/wormhole.xml.h:5
+#: hacks/config/worm.xml.h:7 hacks/config/xearth.xml.h:22
+#: hacks/config/xfishtank.xml.h:10 hacks/config/xflame.xml.h:5
+#: hacks/config/xjack.xml.h:2 hacks/config/xmatrix.xml.h:15
+#: hacks/config/xplanet.xml.h:59 hacks/config/xrayswarm.xml.h:3
+#: hacks/config/zoom.xml.h:6
 msgid "Slow"
 msgstr "Lassú"
 
-#: ../hacks/config/anemone.xml.h:10 ../hacks/config/anemotaxis.xml.h:12
-#: ../hacks/config/ant.xml.h:17 ../hacks/config/antinspect.xml.h:7
-#: ../hacks/config/antspotlight.xml.h:6 ../hacks/config/apollonian.xml.h:12
-#: ../hacks/config/attraction.xml.h:29 ../hacks/config/atunnel.xml.h:7
-#: ../hacks/config/barcode.xml.h:7 ../hacks/config/blaster.xml.h:10
-#: ../hacks/config/blinkbox.xml.h:8 ../hacks/config/blocktube.xml.h:11
-#: ../hacks/config/bouboule.xml.h:9 ../hacks/config/braid.xml.h:12
-#: ../hacks/config/bubble3d.xml.h:6 ../hacks/config/bubbles.xml.h:11
-#: ../hacks/config/bumps.xml.h:6 ../hacks/config/cage.xml.h:6
-#: ../hacks/config/circuit.xml.h:11 ../hacks/config/cloudlife.xml.h:13
-#: ../hacks/config/compass.xml.h:5 ../hacks/config/coral.xml.h:14
-#: ../hacks/config/critical.xml.h:8 ../hacks/config/crystal.xml.h:12
-#: ../hacks/config/cubenetic.xml.h:24 ../hacks/config/cynosure.xml.h:10
-#: ../hacks/config/dangerball.xml.h:6 ../hacks/config/decayscreen.xml.h:18
-#: ../hacks/config/deluxe.xml.h:9 ../hacks/config/demon.xml.h:10
-#: ../hacks/config/discrete.xml.h:9 ../hacks/config/distort.xml.h:13
-#: ../hacks/config/drift.xml.h:13 ../hacks/config/endgame.xml.h:6
-#: ../hacks/config/engine.xml.h:16 ../hacks/config/epicycle.xml.h:11
-#: ../hacks/config/eruption.xml.h:20 ../hacks/config/euler2d.xml.h:15
-#: ../hacks/config/extrusion.xml.h:13 ../hacks/config/fadeplot.xml.h:10
-#: ../hacks/config/fireworkx.xml.h:11 ../hacks/config/flag.xml.h:9
-#: ../hacks/config/flame.xml.h:15 ../hacks/config/flipflop.xml.h:7
-#: ../hacks/config/flipscreen3d.xml.h:7 ../hacks/config/flow.xml.h:12
-#: ../hacks/config/fluidballs.xml.h:20 ../hacks/config/forest.xml.h:6
-#: ../hacks/config/fuzzyflakes.xml.h:17 ../hacks/config/galaxy.xml.h:12
-#: ../hacks/config/glblur.xml.h:17 ../hacks/config/glforestfire.xml.h:15
-#: ../hacks/config/glplanet.xml.h:10 ../hacks/config/gltext.xml.h:15
-#: ../hacks/config/goop.xml.h:11 ../hacks/config/grav.xml.h:9
-#: ../hacks/config/greynetic.xml.h:4 ../hacks/config/halo.xml.h:11
-#: ../hacks/config/hopalong.xml.h:23 ../hacks/config/hyperball.xml.h:9
-#: ../hacks/config/hypercube.xml.h:8 ../hacks/config/ifs.xml.h:6
-#: ../hacks/config/intermomentary.xml.h:5 ../hacks/config/jigsaw.xml.h:7
-#: ../hacks/config/juggle.xml.h:9 ../hacks/config/julia.xml.h:10
-#: ../hacks/config/kaleidescope.xml.h:9 ../hacks/config/klein.xml.h:8
-#: ../hacks/config/kumppa.xml.h:9 ../hacks/config/lament.xml.h:7
-#: ../hacks/config/laser.xml.h:11 ../hacks/config/lavalite.xml.h:30
-#: ../hacks/config/lightning.xml.h:6 ../hacks/config/lisa.xml.h:9
-#: ../hacks/config/lissie.xml.h:11 ../hacks/config/lmorph.xml.h:12
-#: ../hacks/config/loop.xml.h:9 ../hacks/config/memscroller.xml.h:8
-#: ../hacks/config/menger.xml.h:18 ../hacks/config/metaballs.xml.h:15
-#: ../hacks/config/mirrorblob.xml.h:21 ../hacks/config/mismunch.xml.h:12
-#: ../hacks/config/moebius.xml.h:10 ../hacks/config/moire2.xml.h:7
-#: ../hacks/config/molecule.xml.h:24 ../hacks/config/morph3d.xml.h:7
-#: ../hacks/config/mountain.xml.h:8 ../hacks/config/munch.xml.h:10
-#: ../hacks/config/nerverot.xml.h:22 ../hacks/config/noof.xml.h:6
-#: ../hacks/config/pacman.xml.h:6 ../hacks/config/penrose.xml.h:12
-#: ../hacks/config/petri.xml.h:25 ../hacks/config/phosphor.xml.h:9
-#: ../hacks/config/piecewise.xml.h:11 ../hacks/config/pipes.xml.h:17
-#: ../hacks/config/polyominoes.xml.h:11 ../hacks/config/pong.xml.h:5
-#: ../hacks/config/popsquares.xml.h:6 ../hacks/config/providence.xml.h:6
-#: ../hacks/config/pulsar.xml.h:17 ../hacks/config/qix.xml.h:22
-#: ../hacks/config/queens.xml.h:6 ../hacks/config/rotor.xml.h:12
-#: ../hacks/config/rubik.xml.h:11 ../hacks/config/sballs.xml.h:14
-#: ../hacks/config/shadebobs.xml.h:10 ../hacks/config/sierpinski.xml.h:9
-#: ../hacks/config/sierpinski3d.xml.h:10 ../hacks/config/slidescreen.xml.h:7
-#: ../hacks/config/slip.xml.h:9 ../hacks/config/speedmine.xml.h:16
-#: ../hacks/config/sphere.xml.h:6 ../hacks/config/spheremonics.xml.h:22
-#: ../hacks/config/spiral.xml.h:10 ../hacks/config/spotlight.xml.h:5
-#: ../hacks/config/sproingies.xml.h:8 ../hacks/config/squiral.xml.h:17
-#: ../hacks/config/stairs.xml.h:5 ../hacks/config/starfish.xml.h:9
-#: ../hacks/config/strange.xml.h:5 ../hacks/config/substrate.xml.h:11
-#: ../hacks/config/superquadrics.xml.h:10 ../hacks/config/swirl.xml.h:7
-#: ../hacks/config/t3d.xml.h:13 ../hacks/config/thornbird.xml.h:8
-#: ../hacks/config/triangle.xml.h:6 ../hacks/config/truchet.xml.h:3
-#: ../hacks/config/twang.xml.h:10 ../hacks/config/vines.xml.h:5
-#: ../hacks/config/webcollage.xml.h:8 ../hacks/config/whirlygig.xml.h:13
-#: ../hacks/config/worm.xml.h:9 ../hacks/config/xearth.xml.h:25
-#: ../hacks/config/xflame.xml.h:6 ../hacks/config/xjack.xml.h:3
-#: ../hacks/config/xmatrix.xml.h:18 ../hacks/config/xplanet.xml.h:60
-#: ../hacks/config/xrayswarm.xml.h:4 ../hacks/config/zoom.xml.h:7
+#: hacks/config/anemone.xml.h:10 hacks/config/anemotaxis.xml.h:12
+#: hacks/config/antinspect.xml.h:7 hacks/config/antspotlight.xml.h:6
+#: hacks/config/ant.xml.h:17 hacks/config/apollonian.xml.h:12
+#: hacks/config/attraction.xml.h:28 hacks/config/atunnel.xml.h:7
+#: hacks/config/barcode.xml.h:7 hacks/config/blaster.xml.h:9
+#: hacks/config/blinkbox.xml.h:8 hacks/config/blocktube.xml.h:11
+#: hacks/config/boing.xml.h:12 hacks/config/bouboule.xml.h:9
+#: hacks/config/boxfit.xml.h:14 hacks/config/braid.xml.h:12
+#: hacks/config/bubble3d.xml.h:6 hacks/config/bubbles.xml.h:11
+#: hacks/config/bumps.xml.h:5 hacks/config/cage.xml.h:6
+#: hacks/config/circuit.xml.h:11 hacks/config/cloudlife.xml.h:13
+#: hacks/config/compass.xml.h:5 hacks/config/coral.xml.h:14
+#: hacks/config/critical.xml.h:7 hacks/config/crystal.xml.h:12
+#: hacks/config/cubenetic.xml.h:24 hacks/config/cynosure.xml.h:10
+#: hacks/config/dangerball.xml.h:6 hacks/config/decayscreen.xml.h:18
+#: hacks/config/deluxe.xml.h:9 hacks/config/demon.xml.h:10
+#: hacks/config/discrete.xml.h:9 hacks/config/distort.xml.h:13
+#: hacks/config/drift.xml.h:13 hacks/config/endgame.xml.h:6
+#: hacks/config/engine.xml.h:16 hacks/config/epicycle.xml.h:11
+#: hacks/config/eruption.xml.h:20 hacks/config/euler2d.xml.h:15
+#: hacks/config/extrusion.xml.h:13 hacks/config/fadeplot.xml.h:10
+#: hacks/config/fireworkx.xml.h:11 hacks/config/flag.xml.h:9
+#: hacks/config/flame.xml.h:15 hacks/config/flipflop.xml.h:7
+#: hacks/config/flipscreen3d.xml.h:7 hacks/config/fliptext.xml.h:14
+#: hacks/config/flow.xml.h:12 hacks/config/fluidballs.xml.h:20
+#: hacks/config/forest.xml.h:6 hacks/config/fuzzyflakes.xml.h:17
+#: hacks/config/galaxy.xml.h:12 hacks/config/glblur.xml.h:17
+#: hacks/config/glforestfire.xml.h:15 hacks/config/glplanet.xml.h:10
+#: hacks/config/gltext.xml.h:17 hacks/config/goop.xml.h:11
+#: hacks/config/grav.xml.h:9 hacks/config/greynetic.xml.h:4
+#: hacks/config/halo.xml.h:11 hacks/config/hopalong.xml.h:23
+#: hacks/config/hyperball.xml.h:9 hacks/config/hypercube.xml.h:8
+#: hacks/config/ifs.xml.h:14 hacks/config/intermomentary.xml.h:5
+#: hacks/config/jigsaw.xml.h:7 hacks/config/juggle.xml.h:9
+#: hacks/config/julia.xml.h:10 hacks/config/kaleidescope.xml.h:8
+#: hacks/config/klein.xml.h:8 hacks/config/kumppa.xml.h:9
+#: hacks/config/lament.xml.h:7 hacks/config/laser.xml.h:11
+#: hacks/config/lavalite.xml.h:30 hacks/config/lightning.xml.h:6
+#: hacks/config/lisa.xml.h:9 hacks/config/lissie.xml.h:11
+#: hacks/config/lmorph.xml.h:12 hacks/config/loop.xml.h:9
+#: hacks/config/memscroller.xml.h:8 hacks/config/menger.xml.h:18
+#: hacks/config/metaballs.xml.h:15 hacks/config/mirrorblob.xml.h:21
+#: hacks/config/mismunch.xml.h:12 hacks/config/moebius.xml.h:10
+#: hacks/config/moire2.xml.h:7 hacks/config/molecule.xml.h:25
+#: hacks/config/morph3d.xml.h:7 hacks/config/mountain.xml.h:8
+#: hacks/config/munch.xml.h:9 hacks/config/nerverot.xml.h:22
+#: hacks/config/noof.xml.h:6 hacks/config/pacman.xml.h:6
+#: hacks/config/penrose.xml.h:12 hacks/config/petri.xml.h:25
+#: hacks/config/phosphor.xml.h:8 hacks/config/piecewise.xml.h:11
+#: hacks/config/pipes.xml.h:16 hacks/config/polyominoes.xml.h:11
+#: hacks/config/pong.xml.h:5 hacks/config/popsquares.xml.h:6
+#: hacks/config/providence.xml.h:6 hacks/config/pulsar.xml.h:17
+#: hacks/config/qix.xml.h:22 hacks/config/queens.xml.h:6
+#: hacks/config/rotor.xml.h:12 hacks/config/rubik.xml.h:11
+#: hacks/config/sballs.xml.h:14 hacks/config/shadebobs.xml.h:10
+#: hacks/config/sierpinski3d.xml.h:10 hacks/config/sierpinski.xml.h:9
+#: hacks/config/slidescreen.xml.h:7 hacks/config/slip.xml.h:9
+#: hacks/config/speedmine.xml.h:15 hacks/config/spheremonics.xml.h:22
+#: hacks/config/sphere.xml.h:6 hacks/config/spiral.xml.h:10
+#: hacks/config/spotlight.xml.h:5 hacks/config/sproingies.xml.h:8
+#: hacks/config/squiral.xml.h:16 hacks/config/stairs.xml.h:5
+#: hacks/config/starfish.xml.h:9 hacks/config/strange.xml.h:5
+#: hacks/config/substrate.xml.h:16 hacks/config/superquadrics.xml.h:10
+#: hacks/config/swirl.xml.h:7 hacks/config/t3d.xml.h:13
+#: hacks/config/thornbird.xml.h:8 hacks/config/triangle.xml.h:6
+#: hacks/config/truchet.xml.h:3 hacks/config/twang.xml.h:10
+#: hacks/config/vines.xml.h:5 hacks/config/whirlygig.xml.h:13
+#: hacks/config/worm.xml.h:8 hacks/config/xearth.xml.h:25
+#: hacks/config/xflame.xml.h:6 hacks/config/xjack.xml.h:3
+#: hacks/config/xmatrix.xml.h:18 hacks/config/xplanet.xml.h:60
+#: hacks/config/xrayswarm.xml.h:4 hacks/config/zoom.xml.h:7
 msgid "Speed"
 msgstr "Sebesség"
 
-#: ../hacks/config/anemone.xml.h:11
+#: hacks/config/anemone.xml.h:11
 msgid "Tentacles"
 msgstr "Elágazások"
 
-#: ../hacks/config/anemone.xml.h:12 ../hacks/config/cubestorm.xml.h:11
-#: ../hacks/config/deluxe.xml.h:10 ../hacks/config/fuzzyflakes.xml.h:18
-#: ../hacks/config/glknots.xml.h:19 ../hacks/config/lmorph.xml.h:13
-#: ../hacks/config/pong.xml.h:7 ../hacks/config/starfish.xml.h:11
-#: ../hacks/config/thornbird.xml.h:9
+#: hacks/config/anemone.xml.h:12 hacks/config/cubestorm.xml.h:11
+#: hacks/config/deluxe.xml.h:10 hacks/config/fuzzyflakes.xml.h:18
+#: hacks/config/glknots.xml.h:19 hacks/config/lmorph.xml.h:13
+#: hacks/config/pong.xml.h:7 hacks/config/starfish.xml.h:11
+#: hacks/config/thornbird.xml.h:9
 msgid "Thick"
 msgstr "Vastag"
 
-#: ../hacks/config/anemone.xml.h:13 ../hacks/config/fuzzyflakes.xml.h:19
-#: ../hacks/config/glknots.xml.h:20 ../hacks/config/moire2.xml.h:8
-#: ../hacks/config/thornbird.xml.h:10
+#: hacks/config/anemone.xml.h:13 hacks/config/fuzzyflakes.xml.h:19
+#: hacks/config/glknots.xml.h:20 hacks/config/moire2.xml.h:8
+#: hacks/config/thornbird.xml.h:10
 msgid "Thickness"
 msgstr "Vastagság"
 
-#: ../hacks/config/anemone.xml.h:14 ../hacks/config/cubestorm.xml.h:12
-#: ../hacks/config/deluxe.xml.h:11 ../hacks/config/fuzzyflakes.xml.h:20
-#: ../hacks/config/glknots.xml.h:21 ../hacks/config/lmorph.xml.h:14
-#: ../hacks/config/pong.xml.h:8 ../hacks/config/starfish.xml.h:12
-#: ../hacks/config/thornbird.xml.h:11
+#: hacks/config/anemone.xml.h:14 hacks/config/cubestorm.xml.h:12
+#: hacks/config/deluxe.xml.h:11 hacks/config/fuzzyflakes.xml.h:20
+#: hacks/config/glknots.xml.h:21 hacks/config/lmorph.xml.h:14
+#: hacks/config/pong.xml.h:8 hacks/config/starfish.xml.h:12
+#: hacks/config/thornbird.xml.h:11
 msgid "Thin"
 msgstr "Vékony"
 
-#: ../hacks/config/anemone.xml.h:15
+#: hacks/config/anemone.xml.h:15
 msgid "Turn speed"
 msgstr "Forgási sebesség"
 
-#: ../hacks/config/anemone.xml.h:16 ../hacks/config/ant.xml.h:22
-#: ../hacks/config/apollonian.xml.h:13 ../hacks/config/attraction.xml.h:33
-#: ../hacks/config/bouboule.xml.h:11 ../hacks/config/braid.xml.h:13
-#: ../hacks/config/critical.xml.h:9 ../hacks/config/crystal.xml.h:13
-#: ../hacks/config/cynosure.xml.h:11 ../hacks/config/deco.xml.h:11
-#: ../hacks/config/deluxe.xml.h:14 ../hacks/config/demon.xml.h:13
-#: ../hacks/config/discrete.xml.h:11 ../hacks/config/drift.xml.h:14
-#: ../hacks/config/epicycle.xml.h:14 ../hacks/config/euler2d.xml.h:17
-#: ../hacks/config/fadeplot.xml.h:12 ../hacks/config/flag.xml.h:14
-#: ../hacks/config/flame.xml.h:16 ../hacks/config/flow.xml.h:15
-#: ../hacks/config/forest.xml.h:8 ../hacks/config/galaxy.xml.h:14
-#: ../hacks/config/grav.xml.h:11 ../hacks/config/halo.xml.h:14
-#: ../hacks/config/hopalong.xml.h:25 ../hacks/config/ifs.xml.h:8
-#: ../hacks/config/imsmap.xml.h:15 ../hacks/config/interference.xml.h:19
-#: ../hacks/config/julia.xml.h:12 ../hacks/config/laser.xml.h:12
-#: ../hacks/config/lightning.xml.h:8 ../hacks/config/lisa.xml.h:12
-#: ../hacks/config/lissie.xml.h:13 ../hacks/config/loop.xml.h:12
-#: ../hacks/config/metaballs.xml.h:16 ../hacks/config/moire.xml.h:11
-#: ../hacks/config/moire2.xml.h:9 ../hacks/config/mountain.xml.h:9
-#: ../hacks/config/nerverot.xml.h:23 ../hacks/config/penrose.xml.h:13
-#: ../hacks/config/polyominoes.xml.h:12 ../hacks/config/rd-bomb.xml.h:20
-#: ../hacks/config/rocks.xml.h:13 ../hacks/config/rotor.xml.h:13
-#: ../hacks/config/shadebobs.xml.h:12 ../hacks/config/sierpinski.xml.h:12
-#: ../hacks/config/slip.xml.h:12 ../hacks/config/sphere.xml.h:8
-#: ../hacks/config/spiral.xml.h:12 ../hacks/config/squiral.xml.h:19
-#: ../hacks/config/starfish.xml.h:15 ../hacks/config/strange.xml.h:8
-#: ../hacks/config/swirl.xml.h:9 ../hacks/config/thornbird.xml.h:13
-#: ../hacks/config/triangle.xml.h:8 ../hacks/config/vines.xml.h:7
-#: ../hacks/config/worm.xml.h:10 ../hacks/config/xearth.xml.h:28
-#: ../hacks/config/xfishtank.xml.h:11
+#: hacks/config/anemone.xml.h:16 hacks/config/ant.xml.h:22
+#: hacks/config/apollonian.xml.h:13 hacks/config/attraction.xml.h:32
+#: hacks/config/bouboule.xml.h:11 hacks/config/braid.xml.h:13
+#: hacks/config/critical.xml.h:8 hacks/config/crystal.xml.h:13
+#: hacks/config/cynosure.xml.h:11 hacks/config/deco.xml.h:10
+#: hacks/config/deluxe.xml.h:14 hacks/config/demon.xml.h:13
+#: hacks/config/discrete.xml.h:11 hacks/config/drift.xml.h:14
+#: hacks/config/epicycle.xml.h:13 hacks/config/euler2d.xml.h:17
+#: hacks/config/fadeplot.xml.h:12 hacks/config/flag.xml.h:13
+#: hacks/config/flame.xml.h:16 hacks/config/flow.xml.h:15
+#: hacks/config/forest.xml.h:8 hacks/config/galaxy.xml.h:14
+#: hacks/config/grav.xml.h:11 hacks/config/halo.xml.h:13
+#: hacks/config/hopalong.xml.h:25 hacks/config/imsmap.xml.h:15
+#: hacks/config/interference.xml.h:19 hacks/config/julia.xml.h:12
+#: hacks/config/laser.xml.h:12 hacks/config/lightning.xml.h:8
+#: hacks/config/lisa.xml.h:12 hacks/config/lissie.xml.h:13
+#: hacks/config/loop.xml.h:12 hacks/config/metaballs.xml.h:16
+#: hacks/config/moire2.xml.h:9 hacks/config/moire.xml.h:11
+#: hacks/config/mountain.xml.h:9 hacks/config/nerverot.xml.h:23
+#: hacks/config/penrose.xml.h:13 hacks/config/polyominoes.xml.h:12
+#: hacks/config/rd-bomb.xml.h:20 hacks/config/rocks.xml.h:12
+#: hacks/config/rotor.xml.h:13 hacks/config/shadebobs.xml.h:12
+#: hacks/config/sierpinski.xml.h:12 hacks/config/slip.xml.h:12
+#: hacks/config/sphere.xml.h:8 hacks/config/spiral.xml.h:12
+#: hacks/config/squiral.xml.h:18 hacks/config/starfish.xml.h:14
+#: hacks/config/strange.xml.h:8 hacks/config/swirl.xml.h:9
+#: hacks/config/thornbird.xml.h:13 hacks/config/triangle.xml.h:8
+#: hacks/config/vines.xml.h:7 hacks/config/worm.xml.h:9
+#: hacks/config/xearth.xml.h:28 hacks/config/xfishtank.xml.h:11
 msgid "Two"
 msgstr "Kettő"
 
-#: ../hacks/config/anemone.xml.h:17
+#: hacks/config/anemone.xml.h:17
 msgid "Wiggling tentacles. By Gabriel Finch."
 msgstr "Tekergőző karok. Írta Gabriel Finch."
 
-#: ../hacks/config/anemone.xml.h:18
+#: hacks/config/anemone.xml.h:18
 msgid "Withdraw freqency"
 msgstr "Visszahúzás gyakorisága"
 
-#: ../hacks/config/anemotaxis.xml.h:1
+#: hacks/config/anemotaxis.xml.h:1
 msgid "Anemotaxis"
 msgstr "Anemotaxis"
 
-#: ../hacks/config/anemotaxis.xml.h:2
+#: hacks/config/anemotaxis.xml.h:2
 msgid ""
 "Anemotaxis demonstrates a search algorithm designed for locating a source of "
 "odor in turbulent atmosphere. The searcher is able to sense the odor and "
@@ -1456,29 +1490,88 @@ msgstr ""
 "megállapítani a pillanatnyi helyi szélirányt. A cél a forrás megtalálása, a "
 "legrövidebb idő alatt. Írta Eugene Balkovsky."
 
-#: ../hacks/config/anemotaxis.xml.h:3
+#: hacks/config/anemotaxis.xml.h:3
 msgid "Distance"
 msgstr "Távolság"
 
-#: ../hacks/config/anemotaxis.xml.h:4 ../hacks/config/hyperball.xml.h:1
-#: ../hacks/config/hypercube.xml.h:1
+#: hacks/config/anemotaxis.xml.h:4 hacks/config/hyperball.xml.h:1
+#: hacks/config/hypercube.xml.h:1
 msgid "Far"
 msgstr "Távoli"
 
-#: ../hacks/config/anemotaxis.xml.h:8 ../hacks/config/hyperball.xml.h:7
-#: ../hacks/config/hypercube.xml.h:6
+#: hacks/config/anemotaxis.xml.h:8 hacks/config/hyperball.xml.h:7
+#: hacks/config/hypercube.xml.h:6
 msgid "Near"
 msgstr "Közeli"
 
-#: ../hacks/config/anemotaxis.xml.h:9
+#: hacks/config/anemotaxis.xml.h:9
 msgid "Searchers"
 msgstr "Keresők"
 
-#: ../hacks/config/anemotaxis.xml.h:11
+#: hacks/config/anemotaxis.xml.h:11
 msgid "Sources"
 msgstr "Források"
 
-#: ../hacks/config/ant.xml.h:1
+#: hacks/config/antinspect.xml.h:1
+msgid "AntInspect"
+msgstr "AntInspect"
+
+#: hacks/config/antinspect.xml.h:2
+msgid "Draw Shadows"
+msgstr "Árnyékok rajzolása"
+
+#: hacks/config/antinspect.xml.h:3
+msgid ""
+"Draws a trio of ants moving their spheres around a circle. Written by Blair "
+"Tennessy."
+msgstr "Három, egy kör körül gömbökben mozgó hangyát rajzol. Írta Blair Tennessy."
+
+#: hacks/config/antinspect.xml.h:5 hacks/config/antspotlight.xml.h:4
+#: hacks/config/atlantis.xml.h:11 hacks/config/atunnel.xml.h:5
+#: hacks/config/blocktube.xml.h:8 hacks/config/boing.xml.h:8
+#: hacks/config/boxed.xml.h:6 hacks/config/bubble3d.xml.h:4
+#: hacks/config/cage.xml.h:3 hacks/config/carousel.xml.h:12
+#: hacks/config/circuit.xml.h:9 hacks/config/cubenetic.xml.h:21
+#: hacks/config/cubestorm.xml.h:7 hacks/config/dangerball.xml.h:4
+#: hacks/config/endgame.xml.h:4 hacks/config/engine.xml.h:14
+#: hacks/config/extrusion.xml.h:10 hacks/config/flipflop.xml.h:4
+#: hacks/config/flipscreen3d.xml.h:5 hacks/config/fliptext.xml.h:12
+#: hacks/config/fluidballs.xml.h:17 hacks/config/flurry.xml.h:9
+#: hacks/config/flyingtoasters.xml.h:10 hacks/config/gears.xml.h:6
+#: hacks/config/gflux.xml.h:11 hacks/config/glblur.xml.h:13
+#: hacks/config/gleidescope.xml.h:10 hacks/config/glforestfire.xml.h:13
+#: hacks/config/glknots.xml.h:16 hacks/config/glmatrix.xml.h:17
+#: hacks/config/glplanet.xml.h:7 hacks/config/glslideshow.xml.h:19
+#: hacks/config/glsnake.xml.h:10 hacks/config/gltext.xml.h:14
+#: hacks/config/hypertorus.xml.h:12 hacks/config/jigglypuff.xml.h:15
+#: hacks/config/klein.xml.h:6 hacks/config/lament.xml.h:5
+#: hacks/config/lavalite.xml.h:26 hacks/config/menger.xml.h:15
+#: hacks/config/mirrorblob.xml.h:18 hacks/config/moebius.xml.h:6
+#: hacks/config/molecule.xml.h:22 hacks/config/morph3d.xml.h:5
+#: hacks/config/noof.xml.h:4 hacks/config/pinion.xml.h:12
+#: hacks/config/pipes.xml.h:14 hacks/config/polyhedra.xml.h:118
+#: hacks/config/polytopes.xml.h:18 hacks/config/providence.xml.h:4
+#: hacks/config/pulsar.xml.h:14 hacks/config/queens.xml.h:3
+#: hacks/config/rubik.xml.h:6 hacks/config/sballs.xml.h:12
+#: hacks/config/sierpinski3d.xml.h:6 hacks/config/spheremonics.xml.h:18
+#: hacks/config/sproingies.xml.h:4 hacks/config/stairs.xml.h:2
+#: hacks/config/starwars.xml.h:11 hacks/config/superquadrics.xml.h:7
+msgid "Show Frames-per-Second"
+msgstr "Képkocka/másodperc mutatása (FPS)"
+
+#: hacks/config/antspotlight.xml.h:1
+msgid "AntSpotlight"
+msgstr "Hangya reflektorfénnyel"
+
+#: hacks/config/antspotlight.xml.h:2
+msgid ""
+"Antspotlight draws an ant (with a headlight) who walks on top of an image of "
+"your desktop or other image. Written by Blair Tennessy."
+msgstr ""
+"A Hangya reflektorfénnyel egy hangyát rajzol (fejlámpával), ami az "
+"asztalának képén vagy egy más kép felületén sétál. Írta Blair Tennessy."
+
+#: hacks/config/ant.xml.h:1
 msgid ""
 "A cellular automaton that is really a two-dimensional Turing machine: as the "
 "heads (``ants'') walk along the screen, they change pixel values in their "
@@ -1490,175 +1583,117 @@ msgstr ""
 "képpontok értékeit. Amikor a megváltoztatott képpontokon áthaladnak, "
 "viselkedésük megváltozik. Írta David Bagley."
 
-#: ../hacks/config/ant.xml.h:2
+#: hacks/config/ant.xml.h:2
 msgid "Ant"
 msgstr "Hangya"
 
-#: ../hacks/config/ant.xml.h:3
+#: hacks/config/ant.xml.h:3
 msgid "Ant Size"
 msgstr "Hangyák mérete"
 
-#: ../hacks/config/ant.xml.h:4
+#: hacks/config/ant.xml.h:4
 msgid "Ants Count"
 msgstr "Hangyák száma"
 
-#: ../hacks/config/ant.xml.h:5
+#: hacks/config/ant.xml.h:5
 msgid "Draw Eyes"
 msgstr "Szemek rajzolása"
 
-#: ../hacks/config/ant.xml.h:7
+#: hacks/config/ant.xml.h:7
 msgid "Four Sided Cells"
 msgstr "Négyoldalú cellák"
 
-#: ../hacks/config/ant.xml.h:8 ../hacks/config/attraction.xml.h:13
-#: ../hacks/config/cloudlife.xml.h:7 ../hacks/config/cubenetic.xml.h:11
-#: ../hacks/config/demon.xml.h:5 ../hacks/config/discrete.xml.h:3
-#: ../hacks/config/distort.xml.h:5 ../hacks/config/fadeplot.xml.h:5
-#: ../hacks/config/flag.xml.h:4 ../hacks/config/flow.xml.h:4
-#: ../hacks/config/fluidballs.xml.h:12 ../hacks/config/fuzzyflakes.xml.h:10
-#: ../hacks/config/gleidescope.xml.h:7 ../hacks/config/halftone.xml.h:8
-#: ../hacks/config/hopalong.xml.h:13 ../hacks/config/interference.xml.h:11
-#: ../hacks/config/julia.xml.h:5 ../hacks/config/lissie.xml.h:4
-#: ../hacks/config/loop.xml.h:2 ../hacks/config/moire.xml.h:4
-#: ../hacks/config/piecewise.xml.h:5 ../hacks/config/rd-bomb.xml.h:11
-#: ../hacks/config/rorschach.xml.h:5 ../hacks/config/rubik.xml.h:4
-#: ../hacks/config/sierpinski.xml.h:3 ../hacks/config/slip.xml.h:3
+#: hacks/config/ant.xml.h:8 hacks/config/attraction.xml.h:13
+#: hacks/config/cloudlife.xml.h:7 hacks/config/cubenetic.xml.h:11
+#: hacks/config/demon.xml.h:5 hacks/config/discrete.xml.h:3
+#: hacks/config/distort.xml.h:5 hacks/config/fadeplot.xml.h:5
+#: hacks/config/flag.xml.h:4 hacks/config/flow.xml.h:4
+#: hacks/config/fluidballs.xml.h:12 hacks/config/fuzzyflakes.xml.h:10
+#: hacks/config/gleidescope.xml.h:7 hacks/config/halftone.xml.h:8
+#: hacks/config/hopalong.xml.h:13 hacks/config/interference.xml.h:11
+#: hacks/config/julia.xml.h:5 hacks/config/lissie.xml.h:4
+#: hacks/config/loop.xml.h:2 hacks/config/moire.xml.h:4
+#: hacks/config/piecewise.xml.h:5 hacks/config/rd-bomb.xml.h:11
+#: hacks/config/rorschach.xml.h:5 hacks/config/rubik.xml.h:4
+#: hacks/config/sierpinski.xml.h:3 hacks/config/slip.xml.h:3
 msgid "Large"
 msgstr "Nagy"
 
-#: ../hacks/config/ant.xml.h:10
+#: hacks/config/ant.xml.h:10
 msgid "Nine Sided Cells"
 msgstr "Kilencoldalú cellák"
 
-#: ../hacks/config/ant.xml.h:12
+#: hacks/config/ant.xml.h:12
 msgid "Random Cell Shape"
 msgstr "Véletlen cellaalak"
 
-#: ../hacks/config/ant.xml.h:13 ../hacks/config/speedmine.xml.h:11
+#: hacks/config/ant.xml.h:13 hacks/config/speedmine.xml.h:11
 msgid "Sharp Turns"
 msgstr "Éles fordulások"
 
-#: ../hacks/config/ant.xml.h:14
+#: hacks/config/ant.xml.h:14
 msgid "Six Sided Cells"
 msgstr "Hatoldalú cellák"
 
-#: ../hacks/config/ant.xml.h:16 ../hacks/config/attraction.xml.h:28
-#: ../hacks/config/cloudlife.xml.h:12 ../hacks/config/cubenetic.xml.h:23
-#: ../hacks/config/demon.xml.h:9 ../hacks/config/discrete.xml.h:8
-#: ../hacks/config/distort.xml.h:12 ../hacks/config/fadeplot.xml.h:9
-#: ../hacks/config/flag.xml.h:8 ../hacks/config/flow.xml.h:11
-#: ../hacks/config/fluidballs.xml.h:19 ../hacks/config/fuzzyflakes.xml.h:16
-#: ../hacks/config/gleidescope.xml.h:12 ../hacks/config/halftone.xml.h:14
-#: ../hacks/config/hopalong.xml.h:22 ../hacks/config/interference.xml.h:18
-#: ../hacks/config/julia.xml.h:9 ../hacks/config/lissie.xml.h:10
-#: ../hacks/config/loop.xml.h:8 ../hacks/config/metaballs.xml.h:14
-#: ../hacks/config/moire.xml.h:9 ../hacks/config/piecewise.xml.h:10
-#: ../hacks/config/rd-bomb.xml.h:18 ../hacks/config/rorschach.xml.h:8
-#: ../hacks/config/rubik.xml.h:10 ../hacks/config/sierpinski.xml.h:8
-#: ../hacks/config/slip.xml.h:8
+#: hacks/config/ant.xml.h:16 hacks/config/attraction.xml.h:27
+#: hacks/config/cloudlife.xml.h:12 hacks/config/cubenetic.xml.h:23
+#: hacks/config/demon.xml.h:9 hacks/config/discrete.xml.h:8
+#: hacks/config/distort.xml.h:12 hacks/config/fadeplot.xml.h:9
+#: hacks/config/flag.xml.h:8 hacks/config/flow.xml.h:11
+#: hacks/config/fluidballs.xml.h:19 hacks/config/fuzzyflakes.xml.h:16
+#: hacks/config/gleidescope.xml.h:12 hacks/config/halftone.xml.h:14
+#: hacks/config/hopalong.xml.h:22 hacks/config/interference.xml.h:18
+#: hacks/config/julia.xml.h:9 hacks/config/lissie.xml.h:10
+#: hacks/config/loop.xml.h:8 hacks/config/metaballs.xml.h:14
+#: hacks/config/moire.xml.h:9 hacks/config/piecewise.xml.h:10
+#: hacks/config/rd-bomb.xml.h:18 hacks/config/rorschach.xml.h:8
+#: hacks/config/rubik.xml.h:10 hacks/config/sierpinski.xml.h:8
+#: hacks/config/slip.xml.h:8
 msgid "Small"
 msgstr "Kicsi"
 
-#: ../hacks/config/ant.xml.h:18
+#: hacks/config/ant.xml.h:18
 msgid "Three Sided Cells"
 msgstr "Háromoldalú cellák"
 
-#: ../hacks/config/ant.xml.h:19 ../hacks/config/demon.xml.h:12
-#: ../hacks/config/discrete.xml.h:10 ../hacks/config/fadeplot.xml.h:11
-#: ../hacks/config/flag.xml.h:13 ../hacks/config/flow.xml.h:14
-#: ../hacks/config/lissie.xml.h:12 ../hacks/config/loop.xml.h:11
-#: ../hacks/config/rubik.xml.h:12 ../hacks/config/sierpinski.xml.h:11
-#: ../hacks/config/slip.xml.h:11
+#: hacks/config/ant.xml.h:19 hacks/config/demon.xml.h:12
+#: hacks/config/discrete.xml.h:10 hacks/config/fadeplot.xml.h:11
+#: hacks/config/flag.xml.h:12 hacks/config/flow.xml.h:14
+#: hacks/config/lissie.xml.h:12 hacks/config/loop.xml.h:11
+#: hacks/config/rubik.xml.h:12 hacks/config/sierpinski.xml.h:11
+#: hacks/config/slip.xml.h:11
 msgid "Timeout"
 msgstr "Időtúllépés"
 
-#: ../hacks/config/ant.xml.h:20
+#: hacks/config/ant.xml.h:20
 msgid "Truchet Lines"
 msgstr "Truchet vonalak"
 
-#: ../hacks/config/ant.xml.h:21
+#: hacks/config/ant.xml.h:21
 msgid "Twelve Sided Cells"
 msgstr "Tizenkét oldalú cellák"
 
-#: ../hacks/config/antinspect.xml.h:1
-msgid "AntInspect"
-msgstr "AntInspect"
-
-#: ../hacks/config/antinspect.xml.h:2
-msgid "Draw Shadows"
-msgstr "Árnyékok rajzolása"
-
-#: ../hacks/config/antinspect.xml.h:3
-msgid ""
-"Draws a trio of ants moving their spheres around a circle. Written by Blair "
-"Tennessy."
-msgstr "Három, egy kör körül gömbökben mozgó hangyát rajzol. Írta Blair Tennessy."
-
-#: ../hacks/config/antinspect.xml.h:5 ../hacks/config/antspotlight.xml.h:4
-#: ../hacks/config/atlantis.xml.h:11 ../hacks/config/atunnel.xml.h:5
-#: ../hacks/config/blocktube.xml.h:8 ../hacks/config/boxed.xml.h:6
-#: ../hacks/config/bubble3d.xml.h:4 ../hacks/config/cage.xml.h:3
-#: ../hacks/config/circuit.xml.h:9 ../hacks/config/cubenetic.xml.h:21
-#: ../hacks/config/cubestorm.xml.h:7 ../hacks/config/dangerball.xml.h:4
-#: ../hacks/config/endgame.xml.h:4 ../hacks/config/engine.xml.h:14
-#: ../hacks/config/extrusion.xml.h:10 ../hacks/config/flipflop.xml.h:4
-#: ../hacks/config/flipscreen3d.xml.h:5 ../hacks/config/fluidballs.xml.h:17
-#: ../hacks/config/flurry.xml.h:9 ../hacks/config/flyingtoasters.xml.h:10
-#: ../hacks/config/gears.xml.h:6 ../hacks/config/gflux.xml.h:12
-#: ../hacks/config/glblur.xml.h:13 ../hacks/config/gleidescope.xml.h:10
-#: ../hacks/config/glforestfire.xml.h:13 ../hacks/config/glknots.xml.h:16
-#: ../hacks/config/glmatrix.xml.h:17 ../hacks/config/glplanet.xml.h:7
-#: ../hacks/config/glslideshow.xml.h:18 ../hacks/config/glsnake.xml.h:10
-#: ../hacks/config/gltext.xml.h:12 ../hacks/config/hypertorus.xml.h:12
-#: ../hacks/config/jigglypuff.xml.h:15 ../hacks/config/klein.xml.h:6
-#: ../hacks/config/lament.xml.h:5 ../hacks/config/lavalite.xml.h:26
-#: ../hacks/config/menger.xml.h:15 ../hacks/config/mirrorblob.xml.h:18
-#: ../hacks/config/moebius.xml.h:6 ../hacks/config/molecule.xml.h:21
-#: ../hacks/config/morph3d.xml.h:5 ../hacks/config/noof.xml.h:4
-#: ../hacks/config/pinion.xml.h:12 ../hacks/config/pipes.xml.h:15
-#: ../hacks/config/polyhedra.xml.h:118 ../hacks/config/polytopes.xml.h:18
-#: ../hacks/config/providence.xml.h:4 ../hacks/config/pulsar.xml.h:14
-#: ../hacks/config/queens.xml.h:3 ../hacks/config/rubik.xml.h:6
-#: ../hacks/config/sballs.xml.h:12 ../hacks/config/sierpinski3d.xml.h:6
-#: ../hacks/config/spheremonics.xml.h:18 ../hacks/config/sproingies.xml.h:4
-#: ../hacks/config/stairs.xml.h:2 ../hacks/config/starwars.xml.h:11
-#: ../hacks/config/superquadrics.xml.h:7
-msgid "Show Frames-per-Second"
-msgstr "Képkocka/másodperc mutatása (FPS)"
-
-#: ../hacks/config/antspotlight.xml.h:1
-msgid "AntSpotlight"
-msgstr "Hangya reflektorfénnyel"
-
-#: ../hacks/config/antspotlight.xml.h:2
-msgid ""
-"Antspotlight draws an ant (with a headlight) who walks on top of an image of "
-"your desktop or other image. Written by Blair Tennessy."
-msgstr ""
-"A Hangya reflektorfénnyel egy hangyát rajzol (fejlámpával), ami az "
-"asztalának képén vagy egy más kép felületén sétál. Írta Blair Tennessy."
-
-#: ../hacks/config/apollonian.xml.h:1
+#: hacks/config/apollonian.xml.h:1
 msgid "Apollonian"
 msgstr "Apollóni"
 
-#: ../hacks/config/apollonian.xml.h:2
+#: hacks/config/apollonian.xml.h:2
 msgid "Deep"
 msgstr "Mély"
 
-#: ../hacks/config/apollonian.xml.h:3
+#: hacks/config/apollonian.xml.h:3
 msgid "Depth"
 msgstr "Mélység"
 
-#: ../hacks/config/apollonian.xml.h:4
+#: hacks/config/apollonian.xml.h:4
 msgid "Draw Labels"
 msgstr "Címkék rajzolása"
 
-#: ../hacks/config/apollonian.xml.h:6
+#: hacks/config/apollonian.xml.h:6
 msgid "Include Alternate Geometries"
 msgstr "Váltakozó geometriák is"
 
-#: ../hacks/config/apollonian.xml.h:9
+#: hacks/config/apollonian.xml.h:9
 msgid ""
 "Packs a large circle with smaller circles, demonstrating the Descartes "
 "Circle Theorem. Written by Allan R. Wilks and David Bagley."
@@ -1666,111 +1701,111 @@ msgstr ""
 "Egy nagy kört kisebbekkel tölt meg, bizonyítva Descartes körelméletét. Írta "
 "Allan R. Wilks és David Bagley."
 
-#: ../hacks/config/apollonian.xml.h:10
+#: hacks/config/apollonian.xml.h:10
 msgid "Shallow"
 msgstr "Sekély"
 
-#: ../hacks/config/apple2.xml.h:1
+#: hacks/config/apple2.xml.h:1
 msgid "Apple ]["
 msgstr "Apple ]["
 
-#: ../hacks/config/apple2.xml.h:2
+#: hacks/config/apple2.xml.h:2
 msgid "Basic Programming Mode"
 msgstr "Basic programozó mód"
 
-#: ../hacks/config/apple2.xml.h:3 ../hacks/config/halo.xml.h:8
-#: ../hacks/config/imsmap.xml.h:11
+#: hacks/config/apple2.xml.h:3 hacks/config/halo.xml.h:8
+#: hacks/config/imsmap.xml.h:11
 msgid "Random Mode"
 msgstr "Véletlen mód"
 
-#: ../hacks/config/apple2.xml.h:4
+#: hacks/config/apple2.xml.h:4
 msgid ""
 "Simulates an original Apple ][ Plus computer in all its 1979 glory. It also "
 "reproduces the appearance of display on a color television set of the "
-"period. In \"Text Mode\", it displays the output of a command (e.g., "
-"\"fortune\".) In \"Slideshow Mode\", it chooses a number of images from the "
-"image source you configured into XScreenSaver and displays them within the "
-"limitations of the Apple ][ display hardware. (Six available colors in hi-"
-"res mode!) In \"Basic Programming Mode\", a simulated user types in a BASIC "
-"program and runs it. By Trevor Blackwell."
+"period. In \"Text Mode\", it displays the output of a program, or the "
+"contents of a file or URL, as configured on the \"Advanced\" tab of the main "
+"Screensaver Preferences window. In \"Slideshow Mode\", it chooses a number "
+"of images from the image source you configured into XScreenSaver and "
+"displays them within the limitations of the Apple ][ display hardware. (Six "
+"available colors in hi-res mode!) In \"Basic Programming Mode\", a simulated "
+"user types in a BASIC program and runs it. By Trevor Blackwell."
 msgstr ""
 "Egy eredeti Apple ][ Plus számítógépet szimulál teljes 1979-es dicsőségében. "
 "A korszakra jellemző színes tv készülékek képernyőjének megjelenítését is "
-"reprodukálja. Szöveges módban egy parancs (például \"fortune\") kimenetét "
-"jeleníti meg. Diavetítés módban az Xscreensaverben beállított képforrásról "
+"reprodukálja. Szöveges módban egy program kimenetét, vagy egy fájl vagy URL tartalmát jeleníti meg, ahogyan az a fő Képernyővédő beállításai ablak Bővített fülén be van állítva. Diavetítés módban az Xscreensaverben beállított képforrásról "
 "választ néhány képet és megjeleníti azokat, az Apple ][ képernyőhardverének "
 "korlátain belül (Nagy felbontású módban hat elérhető szín!). Basic "
 "programozó módban egy szimulált felhasználó begépel egy BASIC programot és "
 "futtatja azt. Írta Trevor Blackwell."
 
-#: ../hacks/config/apple2.xml.h:5
+#: hacks/config/apple2.xml.h:5
 msgid "Slideshow Mode"
 msgstr "Diavetítés mód"
 
-#: ../hacks/config/apple2.xml.h:6
+#: hacks/config/apple2.xml.h:6
 msgid "Text Mode"
 msgstr "Szöveges mód"
 
-#: ../hacks/config/apple2.xml.h:7 ../hacks/config/fontglide.xml.h:15
-#: ../hacks/config/noseguy.xml.h:8 ../hacks/config/phosphor.xml.h:10
-#: ../hacks/config/starwars.xml.h:17
+#: hacks/config/apple2.xml.h:7 hacks/config/fliptext.xml.h:17
+#: hacks/config/fontglide.xml.h:15 hacks/config/noseguy.xml.h:7
+#: hacks/config/phosphor.xml.h:9 hacks/config/starwars.xml.h:17
 msgid "Text Program"
 msgstr "Szövegprogram"
 
-#: ../hacks/config/atlantis.xml.h:1
+#: hacks/config/atlantis.xml.h:1
 msgid "Agressive"
 msgstr "Agresszív"
 
-#: ../hacks/config/atlantis.xml.h:2
+#: hacks/config/atlantis.xml.h:2
 msgid "Atlantis"
 msgstr "Atlantisz"
 
-#: ../hacks/config/atlantis.xml.h:3
+#: hacks/config/atlantis.xml.h:3
 msgid "Clear Water"
 msgstr "Tiszta víz"
 
-#: ../hacks/config/atlantis.xml.h:5
+#: hacks/config/atlantis.xml.h:5
 msgid "Flat Background"
 msgstr "Sima háttér"
 
-#: ../hacks/config/atlantis.xml.h:6
+#: hacks/config/atlantis.xml.h:6
 msgid "Gradient Background"
 msgstr "Színátmenetes háttér"
 
-#: ../hacks/config/atlantis.xml.h:7
+#: hacks/config/atlantis.xml.h:7
 msgid "Number of Sharks"
 msgstr "Cápák száma"
 
-#: ../hacks/config/atlantis.xml.h:8
+#: hacks/config/atlantis.xml.h:8
 msgid "Shark Proximity"
 msgstr "Cápák közelsége"
 
-#: ../hacks/config/atlantis.xml.h:9
+#: hacks/config/atlantis.xml.h:9
 msgid "Shark Speed"
 msgstr "Cápák sebessége"
 
-#: ../hacks/config/atlantis.xml.h:10
+#: hacks/config/atlantis.xml.h:10
 msgid "Shimmering Water"
 msgstr "Csillogó víz"
 
-#: ../hacks/config/atlantis.xml.h:12
+#: hacks/config/atlantis.xml.h:12
 msgid "Shy"
 msgstr "Félénk"
 
-#: ../hacks/config/atlantis.xml.h:14 ../hacks/config/cage.xml.h:5
-#: ../hacks/config/extrusion.xml.h:12 ../hacks/config/gears.xml.h:8
-#: ../hacks/config/glblur.xml.h:15 ../hacks/config/glplanet.xml.h:9
-#: ../hacks/config/glsnake.xml.h:13 ../hacks/config/gltext.xml.h:14
-#: ../hacks/config/menger.xml.h:17 ../hacks/config/mismunch.xml.h:11
-#: ../hacks/config/molecule.xml.h:23 ../hacks/config/munch.xml.h:9
-#: ../hacks/config/sierpinski3d.xml.h:9 ../hacks/config/speedmine.xml.h:15
-#: ../hacks/config/spheremonics.xml.h:21 ../hacks/config/sproingies.xml.h:7
-#: ../hacks/config/stairs.xml.h:4 ../hacks/config/stonerview.xml.h:2
-#: ../hacks/config/superquadrics.xml.h:9
+#: hacks/config/atlantis.xml.h:14 hacks/config/cage.xml.h:5
+#: hacks/config/extrusion.xml.h:12 hacks/config/gears.xml.h:8
+#: hacks/config/glblur.xml.h:15 hacks/config/glplanet.xml.h:9
+#: hacks/config/glsnake.xml.h:13 hacks/config/gltext.xml.h:16
+#: hacks/config/menger.xml.h:17 hacks/config/mismunch.xml.h:11
+#: hacks/config/molecule.xml.h:24 hacks/config/munch.xml.h:8
+#: hacks/config/sierpinski3d.xml.h:9 hacks/config/speedmine.xml.h:14
+#: hacks/config/spheremonics.xml.h:21 hacks/config/sproingies.xml.h:7
+#: hacks/config/stairs.xml.h:4 hacks/config/stonerview.xml.h:2
+#: hacks/config/superquadrics.xml.h:9 hacks/config/webcollage.xml.h:8
 msgid "Solid"
 msgstr "Egyszínű"
 
-#: ../hacks/config/atlantis.xml.h:15
+#: hacks/config/atlantis.xml.h:15
 msgid ""
 "This is xfishtank writ large: a GL animation of a number of sharks, "
 "dolphins, and whales. The swimming motions are great. Originally written by "
@@ -1779,93 +1814,93 @@ msgstr ""
 "Ez egy nagy xfishtank: GL animáció számos cápával, delfinnel és bálnával. Az "
 "úszó mozgások nagyszerűek. Eredetileg Mark Kilgard írta."
 
-#: ../hacks/config/atlantis.xml.h:16
+#: hacks/config/atlantis.xml.h:16
 msgid "Whale Speed"
 msgstr "Bálnák sebessége"
 
-#: ../hacks/config/atlantis.xml.h:17 ../hacks/config/atunnel.xml.h:10
-#: ../hacks/config/blinkbox.xml.h:9 ../hacks/config/blocktube.xml.h:13
-#: ../hacks/config/cage.xml.h:8 ../hacks/config/cubestorm.xml.h:14
-#: ../hacks/config/dangerball.xml.h:11 ../hacks/config/extrusion.xml.h:19
-#: ../hacks/config/flipflop.xml.h:8 ../hacks/config/flyingtoasters.xml.h:14
-#: ../hacks/config/gears.xml.h:11 ../hacks/config/glblur.xml.h:20
-#: ../hacks/config/glforestfire.xml.h:20 ../hacks/config/glknots.xml.h:23
-#: ../hacks/config/glplanet.xml.h:15 ../hacks/config/glsnake.xml.h:15
-#: ../hacks/config/gltext.xml.h:18 ../hacks/config/jigglypuff.xml.h:25
-#: ../hacks/config/lament.xml.h:9 ../hacks/config/lavalite.xml.h:32
-#: ../hacks/config/menger.xml.h:21 ../hacks/config/mirrorblob.xml.h:24
-#: ../hacks/config/moebius.xml.h:11 ../hacks/config/molecule.xml.h:26
-#: ../hacks/config/pinion.xml.h:15 ../hacks/config/polyhedra.xml.h:173
-#: ../hacks/config/pulsar.xml.h:20 ../hacks/config/sballs.xml.h:18
-#: ../hacks/config/sierpinski3d.xml.h:12 ../hacks/config/speedmine.xml.h:19
-#: ../hacks/config/spheremonics.xml.h:26 ../hacks/config/sproingies.xml.h:10
-#: ../hacks/config/stairs.xml.h:7 ../hacks/config/stonerview.xml.h:4
-#: ../hacks/config/superquadrics.xml.h:12
+#: hacks/config/atlantis.xml.h:17 hacks/config/atunnel.xml.h:10
+#: hacks/config/blinkbox.xml.h:9 hacks/config/blocktube.xml.h:13
+#: hacks/config/boing.xml.h:15 hacks/config/cage.xml.h:8
+#: hacks/config/cubestorm.xml.h:14 hacks/config/dangerball.xml.h:11
+#: hacks/config/extrusion.xml.h:19 hacks/config/flipflop.xml.h:8
+#: hacks/config/flyingtoasters.xml.h:14 hacks/config/gears.xml.h:11
+#: hacks/config/glblur.xml.h:20 hacks/config/glforestfire.xml.h:20
+#: hacks/config/glknots.xml.h:23 hacks/config/glplanet.xml.h:15
+#: hacks/config/glsnake.xml.h:15 hacks/config/gltext.xml.h:21
+#: hacks/config/jigglypuff.xml.h:25 hacks/config/lament.xml.h:9
+#: hacks/config/lavalite.xml.h:32 hacks/config/menger.xml.h:21
+#: hacks/config/mirrorblob.xml.h:24 hacks/config/moebius.xml.h:11
+#: hacks/config/molecule.xml.h:27 hacks/config/pinion.xml.h:15
+#: hacks/config/polyhedra.xml.h:173 hacks/config/pulsar.xml.h:20
+#: hacks/config/sballs.xml.h:18 hacks/config/sierpinski3d.xml.h:12
+#: hacks/config/speedmine.xml.h:18 hacks/config/spheremonics.xml.h:26
+#: hacks/config/sproingies.xml.h:10 hacks/config/stairs.xml.h:7
+#: hacks/config/stonerview.xml.h:4 hacks/config/superquadrics.xml.h:12
 msgid "Wireframe"
 msgstr "Drótváz"
 
-#: ../hacks/config/attraction.xml.h:1
+#: hacks/config/attraction.xml.h:1
 msgid "Attraction"
 msgstr "Vonzás"
 
-#: ../hacks/config/attraction.xml.h:2
+#: hacks/config/attraction.xml.h:2
 msgid "Ball Count"
 msgstr "Labdák száma"
 
-#: ../hacks/config/attraction.xml.h:3
+#: hacks/config/attraction.xml.h:3
 msgid "Ball Mass"
 msgstr "Labdatömeg"
 
-#: ../hacks/config/attraction.xml.h:4 ../hacks/config/fluidballs.xml.h:3
+#: hacks/config/attraction.xml.h:4 hacks/config/fluidballs.xml.h:3
 msgid "Balls"
 msgstr "Labdák"
 
-#: ../hacks/config/attraction.xml.h:5
+#: hacks/config/attraction.xml.h:5
 msgid "Bounce Off Walls"
 msgstr "Lepattanás a falakról"
 
-#: ../hacks/config/attraction.xml.h:6 ../hacks/config/hopalong.xml.h:1
-#: ../hacks/config/interference.xml.h:5 ../hacks/config/qix.xml.h:2
-#: ../hacks/config/wander.xml.h:3
+#: hacks/config/attraction.xml.h:6 hacks/config/hopalong.xml.h:1
+#: hacks/config/interference.xml.h:5 hacks/config/qix.xml.h:2
+#: hacks/config/wander.xml.h:3
 msgid "Color Contrast"
 msgstr "Színek közti különbség"
 
-#: ../hacks/config/attraction.xml.h:7
+#: hacks/config/attraction.xml.h:7
 msgid "Environmental Viscosity"
 msgstr "Környezet viszkozitása"
 
-#: ../hacks/config/attraction.xml.h:9
+#: hacks/config/attraction.xml.h:9
 msgid "Filled Splines"
 msgstr "Kitöltött görbék"
 
-#: ../hacks/config/attraction.xml.h:10 ../hacks/config/ccurve.xml.h:9
-#: ../hacks/config/cloudlife.xml.h:5 ../hacks/config/cubenetic.xml.h:10
-#: ../hacks/config/euler2d.xml.h:5 ../hacks/config/flame.xml.h:9
-#: ../hacks/config/glslideshow.xml.h:13 ../hacks/config/goop.xml.h:6
-#: ../hacks/config/halftone.xml.h:7 ../hacks/config/hopalong.xml.h:10
-#: ../hacks/config/hyperball.xml.h:3 ../hacks/config/hypercube.xml.h:3
-#: ../hacks/config/interference.xml.h:8 ../hacks/config/jigglypuff.xml.h:8
-#: ../hacks/config/kumppa.xml.h:4 ../hacks/config/lavalite.xml.h:12
-#: ../hacks/config/nerverot.xml.h:11 ../hacks/config/petri.xml.h:8
-#: ../hacks/config/pyro.xml.h:5 ../hacks/config/qix.xml.h:10
-#: ../hacks/config/speedmine.xml.h:5 ../hacks/config/spheremonics.xml.h:6
-#: ../hacks/config/spiral.xml.h:4 ../hacks/config/squiral.xml.h:7
-#: ../hacks/config/superquadrics.xml.h:5 ../hacks/config/t3d.xml.h:7
-#: ../hacks/config/twang.xml.h:5 ../hacks/config/wander.xml.h:8
-#: ../hacks/config/xmountains.xml.h:17
+#: hacks/config/attraction.xml.h:10 hacks/config/carousel.xml.h:7
+#: hacks/config/ccurve.xml.h:9 hacks/config/cloudlife.xml.h:5
+#: hacks/config/cubenetic.xml.h:10 hacks/config/euler2d.xml.h:5
+#: hacks/config/flame.xml.h:9 hacks/config/fliptext.xml.h:9
+#: hacks/config/glslideshow.xml.h:13 hacks/config/goop.xml.h:6
+#: hacks/config/halftone.xml.h:7 hacks/config/hopalong.xml.h:10
+#: hacks/config/hyperball.xml.h:3 hacks/config/hypercube.xml.h:3
+#: hacks/config/interference.xml.h:8 hacks/config/jigglypuff.xml.h:8
+#: hacks/config/kumppa.xml.h:4 hacks/config/lavalite.xml.h:12
+#: hacks/config/nerverot.xml.h:11 hacks/config/petri.xml.h:8
+#: hacks/config/pyro.xml.h:5 hacks/config/qix.xml.h:10
+#: hacks/config/speedmine.xml.h:5 hacks/config/spheremonics.xml.h:6
+#: hacks/config/spiral.xml.h:4 hacks/config/squiral.xml.h:6
+#: hacks/config/superquadrics.xml.h:5 hacks/config/t3d.xml.h:7
+#: hacks/config/twang.xml.h:5 hacks/config/wander.xml.h:8
+#: hacks/config/xmountains.xml.h:17
 msgid "High"
 msgstr "Magas"
 
-#: ../hacks/config/attraction.xml.h:11
+#: hacks/config/attraction.xml.h:11
 msgid "Ignore Screen Edges"
 msgstr "Képernyő széleinek mellőzése"
 
-#: ../hacks/config/attraction.xml.h:12
+#: hacks/config/attraction.xml.h:12
 msgid "Inward"
 msgstr "Befelé"
 
-#. #### -graphmode [none]
-#: ../hacks/config/attraction.xml.h:15
+#: hacks/config/attraction.xml.h:14
 msgid ""
 "Like qix, this uses a simple simple motion model to generate many different "
 "display modes. The control points attract each other up to a certain "
@@ -1889,101 +1924,104 @@ msgstr ""
 "nagyon kaotikusan néz ki. Írta Jamie Zawinski, John Pezaris Lisp kódjára "
 "támaszkodva."
 
-#: ../hacks/config/attraction.xml.h:16 ../hacks/config/deluxe.xml.h:5
-#: ../hacks/config/lmorph.xml.h:7 ../hacks/config/pedal.xml.h:5
-#: ../hacks/config/starfish.xml.h:4 ../hacks/config/whirlygig.xml.h:10
+#: hacks/config/attraction.xml.h:15 hacks/config/deluxe.xml.h:5
+#: hacks/config/lmorph.xml.h:7 hacks/config/pedal.xml.h:5
+#: hacks/config/starfish.xml.h:4 hacks/config/whirlygig.xml.h:10
 msgid "Lines"
 msgstr "Vonalak"
 
-#: ../hacks/config/attraction.xml.h:17 ../hacks/config/blocktube.xml.h:5
-#: ../hacks/config/braid.xml.h:6 ../hacks/config/cynosure.xml.h:5
-#: ../hacks/config/drift.xml.h:8 ../hacks/config/eruption.xml.h:11
-#: ../hacks/config/euler2d.xml.h:6 ../hacks/config/fireflies.xml.h:21
-#: ../hacks/config/flow.xml.h:6 ../hacks/config/fontglide.xml.h:8
-#: ../hacks/config/galaxy.xml.h:5 ../hacks/config/juggle.xml.h:6
-#: ../hacks/config/klein.xml.h:4 ../hacks/config/laser.xml.h:5
-#: ../hacks/config/menger.xml.h:4 ../hacks/config/metaballs.xml.h:5
-#: ../hacks/config/mismunch.xml.h:3 ../hacks/config/munch.xml.h:5
-#: ../hacks/config/nerverot.xml.h:13 ../hacks/config/petri.xml.h:9
-#: ../hacks/config/polyominoes.xml.h:4 ../hacks/config/rotor.xml.h:5
-#: ../hacks/config/shadebobs.xml.h:4 ../hacks/config/sierpinski3d.xml.h:3
-#: ../hacks/config/spheremonics.xml.h:7 ../hacks/config/substrate.xml.h:6
-#: ../hacks/config/wander.xml.h:10 ../hacks/config/whirlwindwarp.xml.h:3
+#: hacks/config/attraction.xml.h:16 hacks/config/blocktube.xml.h:5
+#: hacks/config/braid.xml.h:6 hacks/config/cynosure.xml.h:5
+#: hacks/config/drift.xml.h:8 hacks/config/eruption.xml.h:11
+#: hacks/config/euler2d.xml.h:6 hacks/config/fiberlamp.xml.h:5
+#: hacks/config/fireflies.xml.h:21 hacks/config/flow.xml.h:6
+#: hacks/config/fontglide.xml.h:8 hacks/config/galaxy.xml.h:5
+#: hacks/config/juggle.xml.h:4 hacks/config/klein.xml.h:4
+#: hacks/config/laser.xml.h:5 hacks/config/menger.xml.h:4
+#: hacks/config/metaballs.xml.h:5 hacks/config/mismunch.xml.h:3
+#: hacks/config/munch.xml.h:4 hacks/config/nerverot.xml.h:13
+#: hacks/config/petri.xml.h:9 hacks/config/polyominoes.xml.h:4
+#: hacks/config/rotor.xml.h:5 hacks/config/shadebobs.xml.h:4
+#: hacks/config/sierpinski3d.xml.h:3 hacks/config/spheremonics.xml.h:7
+#: hacks/config/substrate.xml.h:11 hacks/config/wander.xml.h:10
+#: hacks/config/whirlwindwarp.xml.h:3
 msgid "Long"
 msgstr "Hosszú"
 
-#: ../hacks/config/attraction.xml.h:18 ../hacks/config/ccurve.xml.h:10
-#: ../hacks/config/cloudlife.xml.h:8 ../hacks/config/cubenetic.xml.h:12
-#: ../hacks/config/euler2d.xml.h:7 ../hacks/config/flame.xml.h:10
-#: ../hacks/config/glslideshow.xml.h:15 ../hacks/config/goop.xml.h:7
-#: ../hacks/config/halftone.xml.h:9 ../hacks/config/hopalong.xml.h:14
-#: ../hacks/config/hyperball.xml.h:6 ../hacks/config/hypercube.xml.h:5
-#: ../hacks/config/interference.xml.h:12 ../hacks/config/jigglypuff.xml.h:11
-#: ../hacks/config/kumppa.xml.h:6 ../hacks/config/lavalite.xml.h:14
-#: ../hacks/config/nerverot.xml.h:14 ../hacks/config/petri.xml.h:10
-#: ../hacks/config/pyro.xml.h:7 ../hacks/config/qix.xml.h:13
-#: ../hacks/config/speedmine.xml.h:6 ../hacks/config/spheremonics.xml.h:8
-#: ../hacks/config/spiral.xml.h:5 ../hacks/config/squiral.xml.h:9
-#: ../hacks/config/superquadrics.xml.h:6 ../hacks/config/t3d.xml.h:8
-#: ../hacks/config/twang.xml.h:7 ../hacks/config/wander.xml.h:11
+#: hacks/config/attraction.xml.h:17 hacks/config/carousel.xml.h:9
+#: hacks/config/ccurve.xml.h:10 hacks/config/cloudlife.xml.h:8
+#: hacks/config/cubenetic.xml.h:12 hacks/config/euler2d.xml.h:7
+#: hacks/config/flame.xml.h:10 hacks/config/fliptext.xml.h:10
+#: hacks/config/glslideshow.xml.h:16 hacks/config/goop.xml.h:7
+#: hacks/config/halftone.xml.h:9 hacks/config/hopalong.xml.h:14
+#: hacks/config/hyperball.xml.h:6 hacks/config/hypercube.xml.h:5
+#: hacks/config/interference.xml.h:12 hacks/config/jigglypuff.xml.h:11
+#: hacks/config/kumppa.xml.h:6 hacks/config/lavalite.xml.h:14
+#: hacks/config/nerverot.xml.h:14 hacks/config/petri.xml.h:10
+#: hacks/config/pyro.xml.h:7 hacks/config/qix.xml.h:13
+#: hacks/config/speedmine.xml.h:6 hacks/config/spheremonics.xml.h:8
+#: hacks/config/spiral.xml.h:5 hacks/config/squiral.xml.h:8
+#: hacks/config/superquadrics.xml.h:6 hacks/config/t3d.xml.h:8
+#: hacks/config/twang.xml.h:7 hacks/config/wander.xml.h:11
 msgid "Low"
 msgstr "Alacsony"
 
-#: ../hacks/config/attraction.xml.h:21
+#: hacks/config/attraction.xml.h:20
 msgid "Orbital Mode"
 msgstr "Orbitális mód"
 
-#: ../hacks/config/attraction.xml.h:22
+#: hacks/config/attraction.xml.h:21
 msgid "Outward"
 msgstr "Kifelé"
 
-#: ../hacks/config/attraction.xml.h:23
+#: hacks/config/attraction.xml.h:22
 msgid "Polygons"
 msgstr "Sokszögek"
 
-#: ../hacks/config/attraction.xml.h:24 ../hacks/config/fuzzyflakes.xml.h:13
-#: ../hacks/config/spotlight.xml.h:3 ../hacks/config/xplanet.xml.h:55
+#: hacks/config/attraction.xml.h:23 hacks/config/fuzzyflakes.xml.h:13
+#: hacks/config/spotlight.xml.h:3 hacks/config/xplanet.xml.h:55
 msgid "Radius"
 msgstr "Sugár"
 
-#: ../hacks/config/attraction.xml.h:25
+#: hacks/config/attraction.xml.h:24
 msgid "Repulsion Threshold"
 msgstr "Taszítási küszöb"
 
-#: ../hacks/config/attraction.xml.h:26 ../hacks/config/blocktube.xml.h:7
-#: ../hacks/config/braid.xml.h:10 ../hacks/config/cynosure.xml.h:8
-#: ../hacks/config/drift.xml.h:11 ../hacks/config/eruption.xml.h:18
-#: ../hacks/config/euler2d.xml.h:12 ../hacks/config/fireflies.xml.h:34
-#: ../hacks/config/flow.xml.h:9 ../hacks/config/galaxy.xml.h:9
-#: ../hacks/config/klein.xml.h:5 ../hacks/config/laser.xml.h:9
-#: ../hacks/config/menger.xml.h:14 ../hacks/config/metaballs.xml.h:12
-#: ../hacks/config/mismunch.xml.h:8 ../hacks/config/munch.xml.h:7
-#: ../hacks/config/nerverot.xml.h:19 ../hacks/config/petri.xml.h:22
-#: ../hacks/config/polyominoes.xml.h:9 ../hacks/config/rotor.xml.h:9
-#: ../hacks/config/shadebobs.xml.h:8 ../hacks/config/sierpinski3d.xml.h:5
-#: ../hacks/config/spheremonics.xml.h:17 ../hacks/config/substrate.xml.h:9
-#: ../hacks/config/wander.xml.h:12 ../hacks/config/whirlwindwarp.xml.h:6
+#: hacks/config/attraction.xml.h:25 hacks/config/blocktube.xml.h:7
+#: hacks/config/braid.xml.h:10 hacks/config/cynosure.xml.h:8
+#: hacks/config/drift.xml.h:11 hacks/config/eruption.xml.h:18
+#: hacks/config/euler2d.xml.h:12 hacks/config/fiberlamp.xml.h:7
+#: hacks/config/fireflies.xml.h:34 hacks/config/flow.xml.h:9
+#: hacks/config/galaxy.xml.h:9 hacks/config/juggle.xml.h:7
+#: hacks/config/klein.xml.h:5 hacks/config/laser.xml.h:9
+#: hacks/config/menger.xml.h:14 hacks/config/metaballs.xml.h:12
+#: hacks/config/mismunch.xml.h:8 hacks/config/munch.xml.h:6
+#: hacks/config/nerverot.xml.h:19 hacks/config/petri.xml.h:22
+#: hacks/config/polyominoes.xml.h:9 hacks/config/rotor.xml.h:9
+#: hacks/config/shadebobs.xml.h:8 hacks/config/sierpinski3d.xml.h:5
+#: hacks/config/spheremonics.xml.h:17 hacks/config/substrate.xml.h:14
+#: hacks/config/wander.xml.h:12 hacks/config/whirlwindwarp.xml.h:6
 msgid "Short"
 msgstr "Rövid"
 
-#: ../hacks/config/attraction.xml.h:30
+#: hacks/config/attraction.xml.h:29
 msgid "Splines"
 msgstr "Görbék"
 
-#: ../hacks/config/attraction.xml.h:31 ../hacks/config/fireflies.xml.h:42
+#: hacks/config/attraction.xml.h:30 hacks/config/fireflies.xml.h:42
 msgid "Tails"
 msgstr "Nyomvonalak"
 
-#: ../hacks/config/attraction.xml.h:32 ../hacks/config/euler2d.xml.h:16
-#: ../hacks/config/juggle.xml.h:10
+#: hacks/config/attraction.xml.h:31 hacks/config/euler2d.xml.h:16
+#: hacks/config/juggle.xml.h:10
 msgid "Trail Length"
 msgstr "Nyomvonal hossza"
 
-#: ../hacks/config/atunnel.xml.h:1
+#: hacks/config/atunnel.xml.h:1
 msgid "Atunnel"
 msgstr "Atunnel"
 
-#: ../hacks/config/atunnel.xml.h:2
+#: hacks/config/atunnel.xml.h:2
 msgid ""
 "Draws an animation of a textured tunnel in GL. Requires OpenGL, and a "
 "machine with fast hardware support for texture maps. Written by Eric "
@@ -1993,38 +2031,38 @@ msgstr ""
 "textúratérképekhez gyors hardvertámogatással rendelkező gép szükséges hozzá. "
 "Írta Eric Lassauge és Roman Podobedov."
 
-#: ../hacks/config/atunnel.xml.h:4 ../hacks/config/distort.xml.h:9
-#: ../hacks/config/glforestfire.xml.h:10 ../hacks/config/lament.xml.h:4
-#: ../hacks/config/sballs.xml.h:6
+#: hacks/config/atunnel.xml.h:4 hacks/config/distort.xml.h:9
+#: hacks/config/glforestfire.xml.h:10 hacks/config/lament.xml.h:4
+#: hacks/config/sballs.xml.h:6
 msgid "Normal"
 msgstr "Normál"
 
-#: ../hacks/config/atunnel.xml.h:8 ../hacks/config/glforestfire.xml.h:18
-#: ../hacks/config/lament.xml.h:8 ../hacks/config/sballs.xml.h:17
+#: hacks/config/atunnel.xml.h:8 hacks/config/glforestfire.xml.h:18
+#: hacks/config/lament.xml.h:8 hacks/config/sballs.xml.h:17
 msgid "Untextured"
 msgstr "Textúrázatlan"
 
-#: ../hacks/config/atunnel.xml.h:9
+#: hacks/config/atunnel.xml.h:9
 msgid "Use light"
 msgstr "Fény használata"
 
-#: ../hacks/config/barcode.xml.h:1
+#: hacks/config/barcode.xml.h:1
 msgid "Barcode"
 msgstr "Vonalkód"
 
-#: ../hacks/config/barcode.xml.h:2
+#: hacks/config/barcode.xml.h:2
 msgid "Barcode Clock (24 Hour)"
 msgstr "Vonalkód óra (24 órás)"
 
-#: ../hacks/config/barcode.xml.h:3
+#: hacks/config/barcode.xml.h:3
 msgid "Barcode Clock (AM/PM)"
 msgstr "Vonalkód óra (12 órás)"
 
-#: ../hacks/config/barcode.xml.h:5
+#: hacks/config/barcode.xml.h:5
 msgid "Scrolling Barcodes"
 msgstr "Gördülő vonalkódok"
 
-#: ../hacks/config/barcode.xml.h:8
+#: hacks/config/barcode.xml.h:8
 msgid ""
 "This draws a random sequence of colorful barcodes scrolling across your "
 "screen. CONSUME! By Dan Bornstein."
@@ -2032,12 +2070,11 @@ msgstr ""
 "A képernyőn átgördülő színes vonalkódok sorozatát rajzolja ki. FOGYASSZ! "
 "Írta Dan Bornstein."
 
-#: ../hacks/config/blaster.xml.h:1
+#: hacks/config/blaster.xml.h:1
 msgid "Blaster"
 msgstr "Robbantó"
 
-#. #### -mother_ship_color1 [white]
-#: ../hacks/config/blaster.xml.h:3
+#: hacks/config/blaster.xml.h:2
 msgid ""
 "Draws a simulation of flying space-combat robots (cleverly disguised as "
 "colored circles) doing battle in front of a moving star field. Written by "
@@ -2046,35 +2083,35 @@ msgstr ""
 "Egy mozgó csillagmező előtt csatázó harci űrrobotokat (melyek okosan színes "
 "körök mögé rejtőztek) szimulál. Írta Jonathan Lin."
 
-#: ../hacks/config/blaster.xml.h:6 ../hacks/config/penetrate.xml.h:4
+#: hacks/config/blaster.xml.h:5 hacks/config/penetrate.xml.h:4
 msgid "Lasers"
 msgstr "Lézerek"
 
-#: ../hacks/config/blaster.xml.h:8
+#: hacks/config/blaster.xml.h:7
 msgid "Robots"
 msgstr "Robotok"
 
-#: ../hacks/config/blaster.xml.h:11 ../hacks/config/glplanet.xml.h:11
+#: hacks/config/blaster.xml.h:10 hacks/config/glplanet.xml.h:11
 msgid "Stars"
 msgstr "Csillagok"
 
-#: ../hacks/config/blinkbox.xml.h:1
+#: hacks/config/blinkbox.xml.h:1
 msgid "BlinkBox"
 msgstr "Villanó doboz"
 
-#: ../hacks/config/blinkbox.xml.h:2
+#: hacks/config/blinkbox.xml.h:2
 msgid "Box Size"
 msgstr "Dobozméret"
 
-#: ../hacks/config/blinkbox.xml.h:3
+#: hacks/config/blinkbox.xml.h:3
 msgid "Dissolve"
 msgstr "Áttűnés"
 
-#: ../hacks/config/blinkbox.xml.h:4 ../hacks/config/phosphor.xml.h:4
+#: hacks/config/blinkbox.xml.h:4 hacks/config/phosphor.xml.h:3
 msgid "Fade"
 msgstr "Elhalványulás"
 
-#: ../hacks/config/blinkbox.xml.h:6
+#: hacks/config/blinkbox.xml.h:6
 msgid ""
 "Shows a ball contained inside of a bounding box. Colored blocks blink in "
 "when the ball hits the edges. Written by Jeremy English."
@@ -2082,27 +2119,27 @@ msgstr ""
 "Egy zárt doboz belsejében lévő labdát jelenít meg. Ha a labda eléri az "
 "éleit, színes lapok villannak fel. Írta Jeremy English."
 
-#: ../hacks/config/blitspin.xml.h:1
+#: hacks/config/blitspin.xml.h:1
 msgid "90 deg Rotation Speed"
 msgstr "90 fokos forgatás sebessége"
 
-#: ../hacks/config/blitspin.xml.h:2
+#: hacks/config/blitspin.xml.h:2
 msgid "Bitmap to rotate"
 msgstr "Forgatandó bitkép"
 
-#: ../hacks/config/blitspin.xml.h:3
+#: hacks/config/blitspin.xml.h:3
 msgid "BlitSpin"
 msgstr "Blitspin"
 
-#: ../hacks/config/blitspin.xml.h:5
+#: hacks/config/blitspin.xml.h:5
 msgid "Fuzzy Rotation Speed"
 msgstr "Homályos forgatás sebessége"
 
-#: ../hacks/config/blitspin.xml.h:6
+#: hacks/config/blitspin.xml.h:6
 msgid "Grab Screen"
 msgstr "Képernyő elkapása"
 
-#: ../hacks/config/blitspin.xml.h:8
+#: hacks/config/blitspin.xml.h:8
 msgid ""
 "The ``blitspin'' hack repeatedly rotates a bitmap by 90 degrees by using "
 "logical operations: the bitmap is divided into quadrants, and the quadrants "
@@ -2123,27 +2160,27 @@ msgstr ""
 "elforgatva. Megadhatja a használandó képet XBM vagy XPM fájlként, vagy "
 "megadhatja, hogy a képernyőképet forgassa."
 
-#: ../hacks/config/blocktube.xml.h:1
+#: hacks/config/blocktube.xml.h:1
 msgid "BlockTube"
 msgstr "Blokkcső"
 
-#: ../hacks/config/blocktube.xml.h:2
+#: hacks/config/blocktube.xml.h:2
 msgid "Color Change Time"
 msgstr "Színváltás ideje"
 
-#: ../hacks/config/blocktube.xml.h:3
+#: hacks/config/blocktube.xml.h:3
 msgid "Color Hold Time"
 msgstr "Színtartás ideje"
 
-#: ../hacks/config/blocktube.xml.h:6
+#: hacks/config/blocktube.xml.h:6
 msgid "Reflective Blocks"
 msgstr "Visszaverő blokkok"
 
-#: ../hacks/config/blocktube.xml.h:10
+#: hacks/config/blocktube.xml.h:10
 msgid "Solid Blocks"
 msgstr "Egyszínű blokkok"
 
-#: ../hacks/config/blocktube.xml.h:12
+#: hacks/config/blocktube.xml.h:12
 msgid ""
 "This hack draws a swirling, falling tunnel of reflective slabs. They fade "
 "from hue to hue. Written by Lars R. Damerow."
@@ -2151,19 +2188,71 @@ msgstr ""
 "Ez a hack egy örvénylő, eső lapokból álló alagutat rajzol. A lapok "
 "árnyalatról árnyalatra változnak. Írta Lars R. Damerow."
 
-#: ../hacks/config/bouboule.xml.h:1
+#: hacks/config/boing.xml.h:1
+msgid "Boing"
+msgstr "Boing"
+
+#: hacks/config/boing.xml.h:3 hacks/config/fireflies.xml.h:17
+#: hacks/config/pinion.xml.h:7
+msgid "Huge"
+msgstr "Óriási"
+
+#: hacks/config/boing.xml.h:4
+msgid "Lighting"
+msgstr "Megvilágítás"
+
+#: hacks/config/boing.xml.h:5
+msgid "Meridians"
+msgstr "Délkörök"
+
+#: hacks/config/boing.xml.h:6
+msgid "Parallels"
+msgstr "Párhuzamosok"
+
+#: hacks/config/boing.xml.h:7
+msgid "Scanlines"
+msgstr "Scanline-ok"
+
+#: hacks/config/boing.xml.h:9 hacks/config/galaxy.xml.h:10
+#: hacks/config/lisa.xml.h:7 hacks/config/lissie.xml.h:8
+#: hacks/config/loop.xml.h:6 hacks/config/penrose.xml.h:10
+#: hacks/config/pong.xml.h:3 hacks/config/rotor.xml.h:10
+#: hacks/config/rubik.xml.h:8 hacks/config/sproingies.xml.h:5
+#: hacks/config/wander.xml.h:13 hacks/config/worm.xml.h:6
+msgid "Size"
+msgstr "Méret"
+
+#: hacks/config/boing.xml.h:11
+msgid "Smoothing"
+msgstr "Simítás"
+
+#: hacks/config/boing.xml.h:13
+msgid ""
+"This bouncing ball is a clone of the first graphics demo for the Amiga 1000, "
+"which was written by Dale Luck and RJ Mical during a break at the 1984 "
+"Consumer Electronics Show (or so the legend goes.) This looks like the "
+"original Amiga demo if you turn off \"smoothing\" and \"lighting\" and turn "
+"on \"scanlines\". Written by Jamie Zawinski."
+msgstr "Ez a pattogó labda az első Amiga 1000-re írt demó klónja, amit eredetileg Dale Luck és RJ Mical írt az 1984-es Consumer Electronics Show szünetében (legalábbis a legenda szerint.) Ha kikapcsolja a simítást és a megvilágítást, valamint bekapcsolja a scanline-okat, úgy fog kinézni, mint az eredeti Amiga demó. Írta Jamie Zawinski."
+
+#: hacks/config/boing.xml.h:14 hacks/config/fireflies.xml.h:43
+#: hacks/config/pinion.xml.h:14
+msgid "Tiny"
+msgstr "Pici"
+
+#: hacks/config/bouboule.xml.h:1
 msgid "Bouboule"
 msgstr "Bouboule"
 
-#: ../hacks/config/bouboule.xml.h:2 ../hacks/config/rocks.xml.h:3
+#: hacks/config/bouboule.xml.h:2 hacks/config/rocks.xml.h:3
 msgid "Do Red/Blue 3D seperation"
 msgstr "Kék/piros 3 dimenziós szétválasztás."
 
-#: ../hacks/config/bouboule.xml.h:7
+#: hacks/config/bouboule.xml.h:7
 msgid "Number of Spots"
 msgstr "Cseppek száma"
 
-#: ../hacks/config/bouboule.xml.h:10
+#: hacks/config/bouboule.xml.h:10
 msgid ""
 "This draws what looks like a spinning, deforming balloon with varying-sized "
 "spots painted on its invisible surface. Written by Jeremie Petit."
@@ -2171,55 +2260,56 @@ msgstr ""
 "Ez egy forgó, változó alakú léggömb-szerű alakot rajzol, változó méretű "
 "foltokkal a láthatatlan felszínén. Írta Jeremie Petit."
 
-#: ../hacks/config/bouncingcow.xml.h:1
+#: hacks/config/bouncingcow.xml.h:1
 msgid "A Cow. A Trampoline. Together, they fight crime. By Jamie Zawinski."
 msgstr "Egy tehén. Egy gumiasztal. Együtt a bűn ellen. Írta Jamie Zawinski."
 
-#: ../hacks/config/bouncingcow.xml.h:2 ../hacks/config/boxed.xml.h:1
-#: ../hacks/config/cubestorm.xml.h:1 ../hacks/config/flyingtoasters.xml.h:3
-#: ../hacks/config/fontglide.xml.h:1 ../hacks/config/gears.xml.h:1
-#: ../hacks/config/gflux.xml.h:1 ../hacks/config/glknots.xml.h:1
-#: ../hacks/config/glmatrix.xml.h:1 ../hacks/config/jigglypuff.xml.h:1
-#: ../hacks/config/pinion.xml.h:3 ../hacks/config/polyhedra.xml.h:3
-#: ../hacks/config/pyro.xml.h:1 ../hacks/config/rd-bomb.xml.h:6
-#: ../hacks/config/rocks.xml.h:1 ../hacks/config/starwars.xml.h:1
-#: ../hacks/config/wormhole.xml.h:1 ../hacks/config/xfishtank.xml.h:1
+#: hacks/config/bouncingcow.xml.h:2 hacks/config/boxed.xml.h:1
+#: hacks/config/carousel.xml.h:3 hacks/config/cubestorm.xml.h:1
+#: hacks/config/flyingtoasters.xml.h:3 hacks/config/fontglide.xml.h:1
+#: hacks/config/gears.xml.h:1 hacks/config/gflux.xml.h:1
+#: hacks/config/glknots.xml.h:1 hacks/config/glmatrix.xml.h:1
+#: hacks/config/jigglypuff.xml.h:1 hacks/config/pinion.xml.h:3
+#: hacks/config/polyhedra.xml.h:3 hacks/config/pyro.xml.h:1
+#: hacks/config/rd-bomb.xml.h:6 hacks/config/rocks.xml.h:1
+#: hacks/config/starwars.xml.h:1 hacks/config/wormhole.xml.h:1
+#: hacks/config/xfishtank.xml.h:1
 msgid "Animation Speed"
 msgstr "Animáció sebessége"
 
-#: ../hacks/config/bouncingcow.xml.h:3
+#: hacks/config/bouncingcow.xml.h:3
 msgid "Beefy Cow"
 msgstr "Húsos tehén"
 
-#: ../hacks/config/bouncingcow.xml.h:4
+#: hacks/config/bouncingcow.xml.h:4
 msgid "Bounce Speed"
 msgstr "Pattogás sebessége"
 
-#: ../hacks/config/bouncingcow.xml.h:5
+#: hacks/config/bouncingcow.xml.h:5
 msgid "BouncingCow"
 msgstr "Pattogó tehén"
 
-#: ../hacks/config/bouncingcow.xml.h:7
+#: hacks/config/bouncingcow.xml.h:7
 msgid "Herd"
 msgstr "Gulya"
 
-#: ../hacks/config/bouncingcow.xml.h:8
+#: hacks/config/bouncingcow.xml.h:8
 msgid "Moo"
 msgstr "Egy"
 
-#: ../hacks/config/bouncingcow.xml.h:9
+#: hacks/config/bouncingcow.xml.h:9
 msgid "Number of Cows"
 msgstr "Tehenek száma"
 
-#: ../hacks/config/bouncingcow.xml.h:11
+#: hacks/config/bouncingcow.xml.h:11
 msgid "Wireframe Cow"
 msgstr "Drótváz tehén"
 
-#: ../hacks/config/boxed.xml.h:2
+#: hacks/config/boxed.xml.h:2
 msgid "Boxed"
 msgstr "Dobozolt"
 
-#: ../hacks/config/boxed.xml.h:3
+#: hacks/config/boxed.xml.h:3
 msgid ""
 "Draws a box full of 3D bouncing balls that explode. Written by Sander van "
 "Grieken."
@@ -2227,17 +2317,66 @@ msgstr ""
 "Egy pattogó, majd felrobbanó 3D labdákkal teli dobozt rajzol. Írta Sander "
 "van Grieken."
 
-#: ../hacks/config/boxed.xml.h:5 ../hacks/config/cubestorm.xml.h:5
-#: ../hacks/config/fontglide.xml.h:9 ../hacks/config/glknots.xml.h:6
-#: ../hacks/config/polyhedra.xml.h:85
+#: hacks/config/boxed.xml.h:5 hacks/config/cubestorm.xml.h:5
+#: hacks/config/fontglide.xml.h:9 hacks/config/glknots.xml.h:6
+#: hacks/config/polyhedra.xml.h:85
 msgid "Motion Speed"
 msgstr "Mozgás sebessége"
 
-#: ../hacks/config/braid.xml.h:1
+#: hacks/config/boxfit.xml.h:1 hacks/config/popsquares.xml.h:1
+msgid "Border"
+msgstr "Szegély"
+
+#: hacks/config/boxfit.xml.h:2
+msgid "BoxFit"
+msgstr "BoxFit"
+
+#: hacks/config/boxfit.xml.h:3 hacks/config/cubenetic.xml.h:1
+msgid "Boxes"
+msgstr "Dobozok"
+
+#: hacks/config/boxfit.xml.h:4
+msgid "Boxes Only"
+msgstr "Csak dobozok"
+
+#: hacks/config/boxfit.xml.h:5
+msgid "Boxes or Circles"
+msgstr "Dobozok vagy körök"
+
+#: hacks/config/boxfit.xml.h:6
+msgid "Circles Only"
+msgstr "Csak körök"
+
+#: hacks/config/boxfit.xml.h:7
+msgid "Color Gradient"
+msgstr "Színátmenet"
+
+#: hacks/config/boxfit.xml.h:9
+msgid "Grab Images"
+msgstr "Képek megragadása"
+
+#: hacks/config/boxfit.xml.h:10
+msgid "Grow By"
+msgstr "Növekedés ennyivel:"
+
+#: hacks/config/boxfit.xml.h:11
+msgid ""
+"Packs the screen with growing squares or circles, colored according to a "
+"horizontal or vertical gradient, or according to the colors of the desktop "
+"or a loaded image file. The objects grow until they touch, then stop. When "
+"the screen is full, they shrink away and the process restarts. Written by "
+"Jamie Zawinski."
+msgstr "Feltölti a képernyőt növekvő négyzetekkel vagy körökkel, melyek egy vízszintes vagy függőleges színátmenetnek vagy az asztal vagy egy betöltött képfájl színeinek megfelelően színeződnek. Az objektumok addig nőnek, míg el nem érik egymást, akkor megállnak. Ha a képernyő megtelik, összezsugorodnak és a folyamat elölről kezdődik. Írta Jamie Zawinski."
+
+#: hacks/config/boxfit.xml.h:13 hacks/config/xearth.xml.h:23
+msgid "Spacing"
+msgstr "Térköz"
+
+#: hacks/config/braid.xml.h:1
 msgid "Braid"
 msgstr "Fonat"
 
-#: ../hacks/config/braid.xml.h:2
+#: hacks/config/braid.xml.h:2
 msgid ""
 "Draws random color-cycling inter-braided concentric circles. Written by John "
 "Neil."
@@ -2245,68 +2384,68 @@ msgstr ""
 "Véletlenszerűen színeket forgató, összefonódó koncentrikus köröket rajzol. "
 "Írta John Neil."
 
-#: ../hacks/config/braid.xml.h:3 ../hacks/config/bsod.xml.h:9
-#: ../hacks/config/ccurve.xml.h:7 ../hacks/config/coral.xml.h:6
-#: ../hacks/config/cynosure.xml.h:3 ../hacks/config/deco.xml.h:4
-#: ../hacks/config/drift.xml.h:2 ../hacks/config/epicycle.xml.h:3
-#: ../hacks/config/eruption.xml.h:3 ../hacks/config/euler2d.xml.h:1
-#: ../hacks/config/flame.xml.h:5 ../hacks/config/galaxy.xml.h:2
-#: ../hacks/config/glsnake.xml.h:5 ../hacks/config/helix.xml.h:3
-#: ../hacks/config/hopalong.xml.h:2 ../hacks/config/imsmap.xml.h:6
-#: ../hacks/config/klein.xml.h:1 ../hacks/config/laser.xml.h:2
-#: ../hacks/config/menger.xml.h:2 ../hacks/config/metaballs.xml.h:3
-#: ../hacks/config/mismunch.xml.h:1 ../hacks/config/moire.xml.h:3
-#: ../hacks/config/molecule.xml.h:9 ../hacks/config/munch.xml.h:3
-#: ../hacks/config/nerverot.xml.h:8 ../hacks/config/pedal.xml.h:3
-#: ../hacks/config/penrose.xml.h:5 ../hacks/config/polyhedra.xml.h:17
-#: ../hacks/config/polyominoes.xml.h:1 ../hacks/config/rorschach.xml.h:3
-#: ../hacks/config/rotzoomer.xml.h:5 ../hacks/config/shadebobs.xml.h:2
-#: ../hacks/config/sierpinski3d.xml.h:1 ../hacks/config/spheremonics.xml.h:4
-#: ../hacks/config/starfish.xml.h:2 ../hacks/config/substrate.xml.h:1
-#: ../hacks/config/vidwhacker.xml.h:3 ../hacks/config/wander.xml.h:7
-#: ../hacks/config/xspirograph.xml.h:3
+#: hacks/config/braid.xml.h:3 hacks/config/bsod.xml.h:9
+#: hacks/config/ccurve.xml.h:7 hacks/config/coral.xml.h:6
+#: hacks/config/cynosure.xml.h:3 hacks/config/deco.xml.h:4
+#: hacks/config/drift.xml.h:2 hacks/config/epicycle.xml.h:3
+#: hacks/config/eruption.xml.h:3 hacks/config/euler2d.xml.h:1
+#: hacks/config/flame.xml.h:5 hacks/config/galaxy.xml.h:2
+#: hacks/config/glsnake.xml.h:5 hacks/config/helix.xml.h:3
+#: hacks/config/hopalong.xml.h:2 hacks/config/imsmap.xml.h:6
+#: hacks/config/klein.xml.h:1 hacks/config/laser.xml.h:2
+#: hacks/config/menger.xml.h:2 hacks/config/metaballs.xml.h:3
+#: hacks/config/mismunch.xml.h:1 hacks/config/moire.xml.h:3
+#: hacks/config/molecule.xml.h:10 hacks/config/munch.xml.h:2
+#: hacks/config/nerverot.xml.h:8 hacks/config/pedal.xml.h:3
+#: hacks/config/penrose.xml.h:5 hacks/config/polyhedra.xml.h:17
+#: hacks/config/polyominoes.xml.h:1 hacks/config/rorschach.xml.h:3
+#: hacks/config/rotzoomer.xml.h:5 hacks/config/shadebobs.xml.h:2
+#: hacks/config/sierpinski3d.xml.h:1 hacks/config/spheremonics.xml.h:4
+#: hacks/config/starfish.xml.h:2 hacks/config/substrate.xml.h:6
+#: hacks/config/vidwhacker.xml.h:3 hacks/config/wander.xml.h:7
+#: hacks/config/xspirograph.xml.h:3
 msgid "Duration"
 msgstr "Időtartam"
 
-#: ../hacks/config/braid.xml.h:5 ../hacks/config/epicycle.xml.h:7
-#: ../hacks/config/nerverot.xml.h:12
+#: hacks/config/braid.xml.h:5 hacks/config/epicycle.xml.h:7
+#: hacks/config/nerverot.xml.h:12
 msgid "Line Thickness"
 msgstr "Vonal vastagsága"
 
-#: ../hacks/config/braid.xml.h:8
+#: hacks/config/braid.xml.h:8
 msgid "Max Rings"
 msgstr "Gyűrűk max. száma"
 
-#: ../hacks/config/bsod.xml.h:1 ../hacks/config/molecule.xml.h:1
-#: ../hacks/config/vidwhacker.xml.h:1 ../hacks/config/webcollage.xml.h:1
+#: hacks/config/bsod.xml.h:1 hacks/config/molecule.xml.h:1
+#: hacks/config/vidwhacker.xml.h:1
 msgid "2 minutes"
 msgstr "2 perc"
 
-#: ../hacks/config/bsod.xml.h:2 ../hacks/config/molecule.xml.h:2
+#: hacks/config/bsod.xml.h:2 hacks/config/molecule.xml.h:2
 msgid "5 seconds"
 msgstr "5 másodperc"
 
-#: ../hacks/config/bsod.xml.h:3
+#: hacks/config/bsod.xml.h:3
 msgid "AmigaDOS"
 msgstr "AmigaDOS"
 
-#: ../hacks/config/bsod.xml.h:4
+#: hacks/config/bsod.xml.h:4
 msgid "Apple II"
 msgstr "Apple II"
 
-#: ../hacks/config/bsod.xml.h:5
+#: hacks/config/bsod.xml.h:5
 msgid "Atari"
 msgstr "Atari"
 
-#: ../hacks/config/bsod.xml.h:6
+#: hacks/config/bsod.xml.h:6
 msgid "BSD"
 msgstr "BSD"
 
-#: ../hacks/config/bsod.xml.h:7
+#: hacks/config/bsod.xml.h:7
 msgid "BSOD"
 msgstr "BSOD"
 
-#: ../hacks/config/bsod.xml.h:8
+#: hacks/config/bsod.xml.h:8
 msgid ""
 "BSOD stands for ``Blue Screen of Death.'' The finest in personal computer "
 "emulation, this hack simulates popular screen savers from a number of less "
@@ -2316,79 +2455,91 @@ msgstr ""
 "emuláció vezető technológiájaként, ez a hack népszerű képernyővédőket "
 "szimulál számos kevésbé robusztus operációs rendszerből. Írta Jamie Zawinski."
 
-#: ../hacks/config/bsod.xml.h:10
+#: hacks/config/bsod.xml.h:10
 msgid "HPUX"
 msgstr "HPUX"
 
-#: ../hacks/config/bsod.xml.h:11
+#: hacks/config/bsod.xml.h:11
 msgid "HVX/GCOS6"
 msgstr "HVX/GCOS6"
 
-#: ../hacks/config/bsod.xml.h:12
-msgid "Linux"
-msgstr "Linux"
+#: hacks/config/bsod.xml.h:12
+msgid "Linux (fsck)"
+msgstr "Linux (fsck)"
 
-#: ../hacks/config/bsod.xml.h:13
+#: hacks/config/bsod.xml.h:13
+msgid "Linux (hppa)"
+msgstr "Linux (hppa)"
+
+#: hacks/config/bsod.xml.h:14
+msgid "Linux (sparc)"
+msgstr "Linux (sparc)"
+
+#: hacks/config/bsod.xml.h:15
 msgid "MS-DOS"
 msgstr "MS-DOS"
 
-#: ../hacks/config/bsod.xml.h:14
+#: hacks/config/bsod.xml.h:16
 msgid "Mac Bomb"
 msgstr "Mac Bomb"
 
-#: ../hacks/config/bsod.xml.h:15
+#: hacks/config/bsod.xml.h:17
 msgid "MacOS X"
 msgstr "MacOS X"
 
-#: ../hacks/config/bsod.xml.h:16
+#: hacks/config/bsod.xml.h:18
 msgid "MacsBug"
 msgstr "MacsBug"
 
-#: ../hacks/config/bsod.xml.h:17
-msgid "NCD X Terminal"
-msgstr "NCD X Terminál"
+#: hacks/config/bsod.xml.h:19
+msgid "NCD X Terminal  "
+msgstr "NCD X Terminál  "
 
-#: ../hacks/config/bsod.xml.h:18
+#: hacks/config/bsod.xml.h:20
+msgid "Nvidia"
+msgstr "Nvidia"
+
+#: hacks/config/bsod.xml.h:21
 msgid "OS/390"
 msgstr "OS/390"
 
-#: ../hacks/config/bsod.xml.h:19
+#: hacks/config/bsod.xml.h:22
 msgid "SCO"
 msgstr "SCO"
 
-#: ../hacks/config/bsod.xml.h:20
+#: hacks/config/bsod.xml.h:23
 msgid "Sad Mac"
 msgstr "Sad Mac"
 
-#: ../hacks/config/bsod.xml.h:21
+#: hacks/config/bsod.xml.h:24
 msgid "Solaris"
 msgstr "Solaris"
 
-#: ../hacks/config/bsod.xml.h:22
-msgid "Sparc Linux"
-msgstr "Sparc Linux"
+#: hacks/config/bsod.xml.h:25
+msgid "Tru64"
+msgstr "Tru64"
 
-#: ../hacks/config/bsod.xml.h:23
+#: hacks/config/bsod.xml.h:26
 msgid "VMS"
 msgstr "VMS"
 
-#: ../hacks/config/bsod.xml.h:24
-msgid "Windows 2000"
-msgstr "Windows 2000"
+#: hacks/config/bsod.xml.h:27
+msgid "Windows 2000  "
+msgstr "Windows 2000  "
 
-#: ../hacks/config/bsod.xml.h:25
+#: hacks/config/bsod.xml.h:28
 msgid "Windows 3.1"
 msgstr "Windows 3.1"
 
-#: ../hacks/config/bsod.xml.h:26
+#: hacks/config/bsod.xml.h:29
 msgid "Windows NT"
 msgstr "Windows NT"
 
-#: ../hacks/config/bubble3d.xml.h:1
+#: hacks/config/bubble3d.xml.h:1
 msgid "Bubble3D"
 msgstr "3D buborék"
 
-#: ../hacks/config/bubble3d.xml.h:2
+#: hacks/config/bubble3d.xml.h:2
 msgid ""
 "Draws a stream of rising, undulating 3D bubbles, rising toward the top of "
 "the screen, with nice specular reflections. Written by Richard Jones."
@@ -2396,39 +2547,39 @@ msgstr ""
 "A képernyő teteje felé emelkedő, hullámzó 3D buborékok folyamát rajzolja, "
 "szépen tükröző visszaverődésekkel. Írta Richard Jones."
 
-#: ../hacks/config/bubbles.xml.h:1 ../hacks/config/xfishtank.xml.h:2
+#: hacks/config/bubbles.xml.h:1 hacks/config/xfishtank.xml.h:2
 msgid "Bubbles"
 msgstr "Buborékok"
 
-#: ../hacks/config/bubbles.xml.h:2
+#: hacks/config/bubbles.xml.h:2
 msgid "Bubbles Fall"
 msgstr "Eső buborékok"
 
-#: ../hacks/config/bubbles.xml.h:3
+#: hacks/config/bubbles.xml.h:3
 msgid "Bubbles Float"
 msgstr "Lebegő buborékok"
 
-#: ../hacks/config/bubbles.xml.h:4
+#: hacks/config/bubbles.xml.h:4
 msgid "Bubbles Rise"
 msgstr "Emelkedő buborékok"
 
-#: ../hacks/config/bubbles.xml.h:5
+#: hacks/config/bubbles.xml.h:5
 msgid "Bubbles exist in three dimensions"
 msgstr "A buborékok három dimenzióban léteznek"
 
-#: ../hacks/config/bubbles.xml.h:6
+#: hacks/config/bubbles.xml.h:6
 msgid "Don't hide bubbles when they pop"
 msgstr "Ne rejtse el a buborékokat, amikor kidurrannak"
 
-#: ../hacks/config/bubbles.xml.h:7
+#: hacks/config/bubbles.xml.h:7
 msgid "Draw circles instead of pixmap bubbles"
 msgstr "Körök rajzolása képpont-buborékok helyett"
 
-#: ../hacks/config/bubbles.xml.h:9
+#: hacks/config/bubbles.xml.h:9
 msgid "Leave Trails"
 msgstr "Nyomjelzők hagyása"
 
-#: ../hacks/config/bubbles.xml.h:12
+#: hacks/config/bubbles.xml.h:12
 msgid ""
 "This simulates the kind of bubble formation that happens when water boils:"
 "small bubbles appear, and as they get closer to each other, they combine to "
@@ -2438,8 +2589,7 @@ msgstr ""
 "buborékok jelennek meg, és ahogy közelebb kerülnek egymáshoz, nagyobb "
 "buborékokat alkotnak, amik alkalmanként kipukkannak. Írta James Macnicol."
 
-#. #### -invert
-#: ../hacks/config/bumps.xml.h:2
+#: hacks/config/bumps.xml.h:1
 msgid ""
 "A bit like `Spotlight', except that instead of merely exposing part of your "
 "desktop, it creates a bump map from it. Basically, it 3D-izes a roaming "
@@ -2450,51 +2600,124 @@ msgstr ""
 "háromdimenziósítja az asztal egy részét, a színintenzitást alapul véve. Írta "
 "Shane Smit."
 
-#: ../hacks/config/bumps.xml.h:3
-msgid "Bumps"
-msgstr "Domborzat"
+#: hacks/config/bumps.xml.h:2
+msgid "Bumps"
+msgstr "Domborzat"
+
+#: hacks/config/cage.xml.h:1
+msgid "Cage"
+msgstr "Kalitka"
+
+#: hacks/config/cage.xml.h:7
+msgid ""
+"This draws Escher's ``Impossible Cage,'' a 3d analog of a moebius strip, and "
+"rotates it in three dimensions. Written by Marcelo Vianna."
+msgstr ""
+"Ez megrajzolja Escher \"Lehetetlen kalitkáját\", a Moebius szalag 3d "
+"megfelelőjét és háromdimenzióban megforgatja. Írta Marcelo Vianna."
+
+#: hacks/config/carousel.xml.h:1 hacks/config/coral.xml.h:1
+#: hacks/config/deco.xml.h:1 hacks/config/helix.xml.h:1
+#: hacks/config/imsmap.xml.h:1 hacks/config/jigsaw.xml.h:2
+#: hacks/config/moire.xml.h:1 hacks/config/pedal.xml.h:1
+#: hacks/config/rorschach.xml.h:1 hacks/config/rotzoomer.xml.h:2
+#: hacks/config/wander.xml.h:2 hacks/config/xspirograph.xml.h:1
+msgid "1 Minute"
+msgstr "1 perc"
+
+#: hacks/config/carousel.xml.h:2
+msgid "5 Seconds"
+msgstr "5 másodperc"
+
+#: hacks/config/carousel.xml.h:4
+msgid "Carousel"
+msgstr "Körhinta"
 
-#: ../hacks/config/cage.xml.h:1
-msgid "Cage"
-msgstr "Kalitka"
+#: hacks/config/carousel.xml.h:6 hacks/config/electricsheep.xml.h:7
+#: hacks/config/fliptext.xml.h:8
+msgid "Frame Rate"
+msgstr "Képkockaráta"
 
-#: ../hacks/config/cage.xml.h:7
+#: hacks/config/carousel.xml.h:8
 msgid ""
-"This draws Escher's ``Impossible Cage,'' a 3d analog of a moebius strip, and "
-"rotates it in three dimensions. Written by Marcelo Vianna."
+"Loads several random images, and displays them flying in a circular "
+"formation. The circle changes speed and direction randomly, tilts on its "
+"axis, and the images move in and out. To tell it where to find the images to "
+"display, go to the \"Advanced\" tab on the Screensaver Preferences window. "
+"Select \"Choose Random Images\", and enter your image directory in the text "
+"field right below that. (Note: not the the \"Advanced\" button at the bottom "
+"of this window: the tab at the top of the *other* window.) This program "
+"requires a good video card capable of supporting large textures. Written by "
+"Jamie Zawinski."
 msgstr ""
-"Ez megrajzolja Escher \"Lehetetlen kalitkáját\", a Moebius szalag 3d "
-"megfelelőjét és háromdimenzióban megforgatja. Írta Marcelo Vianna."
+"Képek egy véletlen sorozatát tölti be, majd kör alakzatban repülve megjeleníti őket. A kör véletlenszerűen változtatja a sebességét és irányát, billeg a tengelyén, a képek pedig ki-be mozognak. A megjelenítendő képek helyét a Képernyővédő "
+"beállításai ablak \"bővített\" lapján adhatja meg. Válassza ki a \"Véletlenszerű "
+"kép választása\" négyzetet és adja meg a képek könyvtárát az alatta lévő "
+"szövegmezőben. Ennek a programnak a működéséhez jó videokártya szükséges, "
+"amely támogatja nagy képek használatát. Írta Jamie Zawinski."
+
+#: hacks/config/carousel.xml.h:10
+msgid "No Tilting"
+msgstr "Nincs billegés"
+
+#: hacks/config/carousel.xml.h:11
+msgid "Number of Images:"
+msgstr "Képek száma:"
+
+#: hacks/config/carousel.xml.h:13 hacks/config/glslideshow.xml.h:20
+msgid "Show Image Titles"
+msgstr "Képek neveinek mutatása"
 
-#: ../hacks/config/ccurve.xml.h:1
+#: hacks/config/carousel.xml.h:15
+msgid "Tilt In/Out Only"
+msgstr "Csak be/ki billegés"
+
+#: hacks/config/carousel.xml.h:16
+msgid "Tilt In/Out and Left/Right"
+msgstr "Be/ki és bal/jobb billegés"
+
+#: hacks/config/carousel.xml.h:17
+msgid "Tilt Left/Right Only"
+msgstr "Csak bal/jobb billegés"
+
+#: hacks/config/carousel.xml.h:18 hacks/config/glslideshow.xml.h:21
+#: hacks/config/mirrorblob.xml.h:22
+msgid "Time until loading a new image:"
+msgstr "Új kép betöltése ennyi idő után:"
+
+#: hacks/config/carousel.xml.h:19
+msgid "Zoom In/Out"
+msgstr "Nagyítás be/ki"
+
+#: hacks/config/ccurve.xml.h:1
 msgid "0 seconds"
 msgstr "0 másodperc"
 
-#: ../hacks/config/ccurve.xml.h:2 ../hacks/config/epicycle.xml.h:1
+#: hacks/config/ccurve.xml.h:2 hacks/config/epicycle.xml.h:1
 msgid "1 minute"
 msgstr "1 perc"
 
-#: ../hacks/config/ccurve.xml.h:3 ../hacks/config/epicycle.xml.h:2
-#: ../hacks/config/polyhedra.xml.h:1
+#: hacks/config/ccurve.xml.h:3 hacks/config/epicycle.xml.h:2
+#: hacks/config/polyhedra.xml.h:1
 msgid "1 second"
 msgstr "1 másodperc"
 
-#: ../hacks/config/ccurve.xml.h:4
+#: hacks/config/ccurve.xml.h:4
 msgid "C Curve"
 msgstr "C görbe"
 
-#: ../hacks/config/ccurve.xml.h:5 ../hacks/config/fuzzyflakes.xml.h:4
+#: hacks/config/ccurve.xml.h:5 hacks/config/fuzzyflakes.xml.h:4
 msgid "Delay"
 msgstr "Késleltetés"
 
-#: ../hacks/config/ccurve.xml.h:6 ../hacks/config/coral.xml.h:5
-#: ../hacks/config/imsmap.xml.h:5 ../hacks/config/kumppa.xml.h:1
-#: ../hacks/config/qix.xml.h:6 ../hacks/config/squiral.xml.h:2
-#: ../hacks/config/wander.xml.h:4 ../hacks/config/xmatrix.xml.h:2
+#: hacks/config/ccurve.xml.h:6 hacks/config/coral.xml.h:5
+#: hacks/config/imsmap.xml.h:5 hacks/config/kumppa.xml.h:1
+#: hacks/config/qix.xml.h:6 hacks/config/squiral.xml.h:2
+#: hacks/config/wander.xml.h:4 hacks/config/xmatrix.xml.h:2
 msgid "Density"
 msgstr "Sűrűség"
 
-#: ../hacks/config/ccurve.xml.h:8
+#: hacks/config/ccurve.xml.h:8
 msgid ""
 "Generates self-similar linear fractals, including the classic ``C Curve.'' "
 "Written by Rick Campbell."
@@ -2502,52 +2725,53 @@ msgstr ""
 "Félig hasonló lineáris fraktálokat generál, beleértve a klasszikus \"C-görbét"
 "\". Írta Rick Campbell."
 
-#: ../hacks/config/circuit.xml.h:1
+#: hacks/config/circuit.xml.h:1
 msgid "Animates a number of 3D electronic components. Written by Ben Buxton."
 msgstr "Számos 3D elektronikai összetevőt mozgat. Írta Ben Buxton."
 
-#: ../hacks/config/circuit.xml.h:2
+#: hacks/config/circuit.xml.h:2
 msgid "Circuit"
 msgstr "Áramkör"
 
-#: ../hacks/config/circuit.xml.h:3 ../hacks/config/gflux.xml.h:4
-#: ../hacks/config/pulsar.xml.h:2
+#: hacks/config/circuit.xml.h:3 hacks/config/gflux.xml.h:4
+#: hacks/config/pulsar.xml.h:2
 msgid "Directional Lighting"
 msgstr "Irányított megvilágítás"
 
-#: ../hacks/config/circuit.xml.h:5
+#: hacks/config/circuit.xml.h:5
 msgid "Flat Coloring"
 msgstr "Sima színezés"
 
-#: ../hacks/config/circuit.xml.h:6
+#: hacks/config/circuit.xml.h:6
 msgid "Parts"
 msgstr "Alkatrészek"
 
-#: ../hacks/config/circuit.xml.h:7 ../hacks/config/flipscreen3d.xml.h:4
-#: ../hacks/config/gleidescope.xml.h:9 ../hacks/config/glplanet.xml.h:6
+#: hacks/config/circuit.xml.h:7 hacks/config/flipscreen3d.xml.h:4
+#: hacks/config/gleidescope.xml.h:9 hacks/config/glplanet.xml.h:6
+#: hacks/config/ifs.xml.h:10
 msgid "Rotate"
 msgstr "Forgatás"
 
-#: ../hacks/config/circuit.xml.h:8 ../hacks/config/pinion.xml.h:10
+#: hacks/config/circuit.xml.h:8 hacks/config/pinion.xml.h:10
 msgid "Rotation Speed"
 msgstr "Forgatás sebessége"
 
-#: ../hacks/config/circuit.xml.h:12 ../hacks/config/cubestorm.xml.h:9
-#: ../hacks/config/dangerball.xml.h:9 ../hacks/config/engine.xml.h:17
-#: ../hacks/config/klein.xml.h:9 ../hacks/config/whirlygig.xml.h:14
+#: hacks/config/circuit.xml.h:12 hacks/config/cubestorm.xml.h:9
+#: hacks/config/dangerball.xml.h:9 hacks/config/engine.xml.h:17
+#: hacks/config/klein.xml.h:9 hacks/config/whirlygig.xml.h:14
 msgid "Spin"
 msgstr "Pörgés"
 
-#: ../hacks/config/cloudlife.xml.h:1 ../hacks/config/demon.xml.h:2
-#: ../hacks/config/petri.xml.h:1
+#: hacks/config/cloudlife.xml.h:1 hacks/config/demon.xml.h:2
+#: hacks/config/petri.xml.h:1
 msgid "Cell Size"
 msgstr "Sejtméret"
 
-#: ../hacks/config/cloudlife.xml.h:2
+#: hacks/config/cloudlife.xml.h:2
 msgid "CloudLife"
 msgstr "CloudLife"
 
-#: ../hacks/config/cloudlife.xml.h:4
+#: hacks/config/cloudlife.xml.h:4
 msgid ""
 "Generates cloud-like formations based on a variant of Conway's Life. The "
 "difference is that cells have a maximum age, after which they count as 3 for "
@@ -2561,35 +2785,35 @@ msgstr ""
 "felrobbannak, és nem maradnak egy helyben, így nem égetnek lyukat a "
 "monitorba. Írta Don Marti."
 
-#: ../hacks/config/cloudlife.xml.h:6
+#: hacks/config/cloudlife.xml.h:6
 msgid "Initial Density"
 msgstr "Kezdő sűrűség"
 
-#: ../hacks/config/cloudlife.xml.h:9
+#: hacks/config/cloudlife.xml.h:9
 msgid "Max Age"
 msgstr "Legnagyobb kor"
 
-#: ../hacks/config/cloudlife.xml.h:10
+#: hacks/config/cloudlife.xml.h:10
 msgid "Old"
 msgstr "Öreg"
 
-#: ../hacks/config/cloudlife.xml.h:14
+#: hacks/config/cloudlife.xml.h:14
 msgid "Young"
 msgstr "Fiatal"
 
-#: ../hacks/config/compass.xml.h:1
+#: hacks/config/compass.xml.h:1
 msgid "Compass"
 msgstr "Iránytű"
 
-#: ../hacks/config/compass.xml.h:2 ../hacks/config/deluxe.xml.h:3
-#: ../hacks/config/fontglide.xml.h:3 ../hacks/config/fuzzyflakes.xml.h:5
-#: ../hacks/config/interference.xml.h:6 ../hacks/config/kumppa.xml.h:2
-#: ../hacks/config/nerverot.xml.h:6 ../hacks/config/piecewise.xml.h:3
-#: ../hacks/config/pipes.xml.h:4
+#: hacks/config/compass.xml.h:2 hacks/config/deluxe.xml.h:3
+#: hacks/config/fontglide.xml.h:3 hacks/config/fuzzyflakes.xml.h:5
+#: hacks/config/interference.xml.h:6 hacks/config/kumppa.xml.h:2
+#: hacks/config/nerverot.xml.h:6 hacks/config/piecewise.xml.h:3
+#: hacks/config/pipes.xml.h:4
 msgid "Double Buffer"
 msgstr "Dupla puffer"
 
-#: ../hacks/config/compass.xml.h:6
+#: hacks/config/compass.xml.h:6
 msgid ""
 "This draws a compass, with all elements spinning about randomly, for that "
 "``lost and nauseous'' feeling. Written by Jamie Zawinski."
@@ -2597,73 +2821,63 @@ msgstr ""
 "Ez egy iránytűt rajzol, amelynek minden eleme véletlenszerűen forog, "
 "\"elveszett és émelygő\" érzést keltve. Írta Jamie Zawinski."
 
-#: ../hacks/config/coral.xml.h:1 ../hacks/config/deco.xml.h:1
-#: ../hacks/config/helix.xml.h:1 ../hacks/config/imsmap.xml.h:1
-#: ../hacks/config/jigsaw.xml.h:2 ../hacks/config/moire.xml.h:1
-#: ../hacks/config/pedal.xml.h:1 ../hacks/config/rorschach.xml.h:1
-#: ../hacks/config/rotzoomer.xml.h:2 ../hacks/config/wander.xml.h:2
-#: ../hacks/config/xspirograph.xml.h:1
-msgid "1 Minute"
-msgstr "1 perc"
-
-#: ../hacks/config/coral.xml.h:2 ../hacks/config/deco.xml.h:2
-#: ../hacks/config/glslideshow.xml.h:1 ../hacks/config/helix.xml.h:2
-#: ../hacks/config/imsmap.xml.h:2 ../hacks/config/moire.xml.h:2
-#: ../hacks/config/pedal.xml.h:2 ../hacks/config/penrose.xml.h:1
-#: ../hacks/config/rorschach.xml.h:2 ../hacks/config/xspirograph.xml.h:2
+#: hacks/config/coral.xml.h:2 hacks/config/deco.xml.h:2
+#: hacks/config/glslideshow.xml.h:1 hacks/config/helix.xml.h:2
+#: hacks/config/imsmap.xml.h:2 hacks/config/moire.xml.h:2
+#: hacks/config/pedal.xml.h:2 hacks/config/penrose.xml.h:1
+#: hacks/config/rorschach.xml.h:2 hacks/config/xspirograph.xml.h:2
 msgid "1 Second"
 msgstr "1 másodperc"
 
-#: ../hacks/config/coral.xml.h:3
+#: hacks/config/coral.xml.h:3
 msgid "Coral"
 msgstr "Korall"
 
-#: ../hacks/config/coral.xml.h:4 ../hacks/config/fireworkx.xml.h:2
-#: ../hacks/config/gflux.xml.h:3 ../hacks/config/glblur.xml.h:2
-#: ../hacks/config/glmatrix.xml.h:3 ../hacks/config/imsmap.xml.h:4
-#: ../hacks/config/lavalite.xml.h:6 ../hacks/config/pyro.xml.h:2
-#: ../hacks/config/qix.xml.h:5 ../hacks/config/squiral.xml.h:1
-#: ../hacks/config/xearth.xml.h:4
+#: hacks/config/coral.xml.h:4 hacks/config/fireworkx.xml.h:2
+#: hacks/config/gflux.xml.h:3 hacks/config/glblur.xml.h:2
+#: hacks/config/glmatrix.xml.h:3 hacks/config/imsmap.xml.h:4
+#: hacks/config/lavalite.xml.h:6 hacks/config/pyro.xml.h:2
+#: hacks/config/qix.xml.h:5 hacks/config/squiral.xml.h:1
+#: hacks/config/xearth.xml.h:4
 msgid "Dense"
 msgstr "Sűrű"
 
-#: ../hacks/config/coral.xml.h:10 ../hacks/config/squiral.xml.h:14
+#: hacks/config/coral.xml.h:10 hacks/config/squiral.xml.h:13
 msgid "Seeds"
 msgstr "Magok"
 
-#: ../hacks/config/coral.xml.h:11
+#: hacks/config/coral.xml.h:11
 msgid "Simulates coral growth, albeit somewhat slowly. Written by Frederick Roeber."
 msgstr ""
 "Korallok növekedését szimulálja, jóllehet némiképp lassan. Írta Frederick "
 "Roeber."
 
-#: ../hacks/config/coral.xml.h:13 ../hacks/config/fireworkx.xml.h:10
-#: ../hacks/config/gflux.xml.h:14 ../hacks/config/glblur.xml.h:16
-#: ../hacks/config/glmatrix.xml.h:19 ../hacks/config/imsmap.xml.h:13
-#: ../hacks/config/lavalite.xml.h:29 ../hacks/config/pyro.xml.h:14
-#: ../hacks/config/qix.xml.h:21 ../hacks/config/squiral.xml.h:16
-#: ../hacks/config/xearth.xml.h:24 ../hacks/config/xmatrix.xml.h:17
+#: hacks/config/coral.xml.h:13 hacks/config/fireworkx.xml.h:10
+#: hacks/config/gflux.xml.h:13 hacks/config/glblur.xml.h:16
+#: hacks/config/glmatrix.xml.h:19 hacks/config/imsmap.xml.h:13
+#: hacks/config/lavalite.xml.h:29 hacks/config/pyro.xml.h:14
+#: hacks/config/qix.xml.h:21 hacks/config/squiral.xml.h:15
+#: hacks/config/xearth.xml.h:24 hacks/config/xmatrix.xml.h:17
 msgid "Sparse"
 msgstr "Elszórt"
 
-#: ../hacks/config/cosmos.xml.h:1
+#: hacks/config/cosmos.xml.h:1
 msgid "Cosmos"
 msgstr "Kozmosz"
 
-#: ../hacks/config/cosmos.xml.h:2
+#: hacks/config/cosmos.xml.h:2
 msgid ""
 "Draws fireworks and zooming, fading flares. By Tom Campbell. You can find it "
 "at &lt;http://www.cosmosx.org/&gt;"
 msgstr ""
-"Tüzijátékot és növekvő, eltűnő fényjeleket rajzol. Írta Tom Campbell."
+"Tűzijátékot és növekvő, eltűnő fényjeleket rajzol. Írta Tom Campbell."
 "Megtalálható a következő címen: &lt;http://www.cosmosx.org/&gt;"
 
-#: ../hacks/config/critical.xml.h:1
+#: hacks/config/critical.xml.h:1
 msgid "Critical"
 msgstr "Kritikus"
 
-#. #### -trail [50]
-#: ../hacks/config/critical.xml.h:3
+#: hacks/config/critical.xml.h:2
 msgid ""
 "Draws a system of self-organizing lines. It starts out as random squiggles, "
 "but after a few iterations, order begins to appear. Written by Martin Pool."
@@ -2671,44 +2885,44 @@ msgstr ""
 "Önrendező vonalak rendszerét rajzolja. Véletlenszerű macskakaparásként "
 "indul, de néhány ismétlés után rend látszik megjelenni. Írta Martin Pool."
 
-#: ../hacks/config/crystal.xml.h:1
+#: hacks/config/crystal.xml.h:1
 msgid "Center on Screen"
 msgstr "A képernyő közepére"
 
-#: ../hacks/config/crystal.xml.h:2 ../hacks/config/deluxe.xml.h:1
-#: ../hacks/config/fadeplot.xml.h:1 ../hacks/config/flow.xml.h:1
-#: ../hacks/config/galaxy.xml.h:1 ../hacks/config/glforestfire.xml.h:1
-#: ../hacks/config/grav.xml.h:1 ../hacks/config/julia.xml.h:1
-#: ../hacks/config/laser.xml.h:1 ../hacks/config/lisa.xml.h:1
-#: ../hacks/config/lissie.xml.h:2 ../hacks/config/morph3d.xml.h:2
-#: ../hacks/config/mountain.xml.h:1 ../hacks/config/piecewise.xml.h:2
-#: ../hacks/config/qix.xml.h:4 ../hacks/config/rocks.xml.h:2
-#: ../hacks/config/rotor.xml.h:2 ../hacks/config/rubik.xml.h:1
-#: ../hacks/config/shadebobs.xml.h:1 ../hacks/config/sierpinski.xml.h:1
-#: ../hacks/config/slip.xml.h:1 ../hacks/config/spiral.xml.h:1
-#: ../hacks/config/sproingies.xml.h:1 ../hacks/config/superquadrics.xml.h:1
-#: ../hacks/config/swirl.xml.h:1 ../hacks/config/worm.xml.h:3
+#: hacks/config/crystal.xml.h:2 hacks/config/deluxe.xml.h:1
+#: hacks/config/fadeplot.xml.h:1 hacks/config/flow.xml.h:1
+#: hacks/config/galaxy.xml.h:1 hacks/config/glforestfire.xml.h:1
+#: hacks/config/grav.xml.h:1 hacks/config/julia.xml.h:1
+#: hacks/config/laser.xml.h:1 hacks/config/lisa.xml.h:1
+#: hacks/config/lissie.xml.h:2 hacks/config/morph3d.xml.h:2
+#: hacks/config/mountain.xml.h:1 hacks/config/piecewise.xml.h:2
+#: hacks/config/qix.xml.h:4 hacks/config/rocks.xml.h:2
+#: hacks/config/rotor.xml.h:2 hacks/config/rubik.xml.h:1
+#: hacks/config/shadebobs.xml.h:1 hacks/config/sierpinski.xml.h:1
+#: hacks/config/slip.xml.h:1 hacks/config/spiral.xml.h:1
+#: hacks/config/sproingies.xml.h:1 hacks/config/superquadrics.xml.h:1
+#: hacks/config/swirl.xml.h:1 hacks/config/worm.xml.h:2
 msgid "Count"
 msgstr "Szám"
 
-#: ../hacks/config/crystal.xml.h:3
+#: hacks/config/crystal.xml.h:3
 msgid "Crystal"
 msgstr "Kristály"
 
-#: ../hacks/config/crystal.xml.h:4
+#: hacks/config/crystal.xml.h:4
 msgid "Draw Cell"
 msgstr "Cella rajzolása"
 
-#: ../hacks/config/crystal.xml.h:5 ../hacks/config/spheremonics.xml.h:3
-#: ../hacks/config/xearth.xml.h:6
+#: hacks/config/crystal.xml.h:5 hacks/config/spheremonics.xml.h:3
+#: hacks/config/xearth.xml.h:6
 msgid "Draw Grid"
 msgstr "Rács rajzolása"
 
-#: ../hacks/config/crystal.xml.h:7
+#: hacks/config/crystal.xml.h:7
 msgid "Horizontal Symmetries"
 msgstr "Vízszintes szimmetriák"
 
-#: ../hacks/config/crystal.xml.h:9
+#: hacks/config/crystal.xml.h:9
 msgid ""
 "Moving polygons, similar to a kaleidescope (more like a kaleidescope than "
 "the hack called `kaleid,' actually.) This one by Jouk Jansen."
@@ -2716,39 +2930,35 @@ msgstr ""
 "Mozgó sokszögek, hasonlóan a kaleidescope-hoz. (Sokkal inkább hasonlít "
 "kaleidoszkópra, mint a kaleidescope hack). Írta Jouk Jansen."
 
-#: ../hacks/config/crystal.xml.h:14
+#: hacks/config/crystal.xml.h:14
 msgid "Vertical Symmetries"
 msgstr "Függőleges szimmetriák"
 
-#: ../hacks/config/cubenetic.xml.h:1
-msgid "Boxes"
-msgstr "Dobozok"
-
-#: ../hacks/config/cubenetic.xml.h:2
+#: hacks/config/cubenetic.xml.h:2
 msgid "Cubenetic"
 msgstr "Cubenetic"
 
-#: ../hacks/config/cubenetic.xml.h:3
+#: hacks/config/cubenetic.xml.h:3
 msgid "Display Solid Colors"
 msgstr "Homogén színek megjelenítése"
 
-#: ../hacks/config/cubenetic.xml.h:4
+#: hacks/config/cubenetic.xml.h:4
 msgid "Display Surface Patterns"
 msgstr "Felületi minták megjelenítése"
 
-#: ../hacks/config/cubenetic.xml.h:5
+#: hacks/config/cubenetic.xml.h:5
 msgid "Display Wireframe"
 msgstr "Drótváz megjelenítése"
 
-#: ../hacks/config/cubenetic.xml.h:6 ../hacks/config/glblur.xml.h:3
-#: ../hacks/config/glknots.xml.h:2 ../hacks/config/gltext.xml.h:2
-#: ../hacks/config/lavalite.xml.h:7 ../hacks/config/menger.xml.h:1
-#: ../hacks/config/molecule.xml.h:4 ../hacks/config/polyhedra.xml.h:16
-#: ../hacks/config/spheremonics.xml.h:1
+#: hacks/config/cubenetic.xml.h:6 hacks/config/glblur.xml.h:3
+#: hacks/config/glknots.xml.h:2 hacks/config/gltext.xml.h:3
+#: hacks/config/lavalite.xml.h:7 hacks/config/menger.xml.h:1
+#: hacks/config/molecule.xml.h:4 hacks/config/polyhedra.xml.h:16
+#: hacks/config/spheremonics.xml.h:1
 msgid "Don't Rotate"
 msgstr "Ne forgassa"
 
-#: ../hacks/config/cubenetic.xml.h:7
+#: hacks/config/cubenetic.xml.h:7
 msgid ""
 "Draws a pulsating set of overlapping boxes with ever-chaning blobby patterns "
 "undulating across their surfaces. It's sort of a cubist Lavalite. Written by "
@@ -2758,90 +2968,90 @@ msgstr ""
 "változó minták jelennek meg. Leginkább egy kubista műalkotásra hasonlít. "
 "Írta Jamie Zawinski."
 
-#: ../hacks/config/cubenetic.xml.h:14 ../hacks/config/glblur.xml.h:6
-#: ../hacks/config/glknots.xml.h:8 ../hacks/config/gltext.xml.h:5
-#: ../hacks/config/lavalite.xml.h:19 ../hacks/config/menger.xml.h:7
-#: ../hacks/config/molecule.xml.h:14 ../hacks/config/polyhedra.xml.h:110
-#: ../hacks/config/spheremonics.xml.h:10
+#: hacks/config/cubenetic.xml.h:14 hacks/config/glblur.xml.h:6
+#: hacks/config/glknots.xml.h:8 hacks/config/gltext.xml.h:7
+#: hacks/config/lavalite.xml.h:19 hacks/config/menger.xml.h:7
+#: hacks/config/molecule.xml.h:15 hacks/config/polyhedra.xml.h:110
+#: hacks/config/spheremonics.xml.h:10
 msgid "Rotate around X and Y axes"
 msgstr "Forgatás az X és Y tengelyek körül"
 
-#: ../hacks/config/cubenetic.xml.h:15 ../hacks/config/glblur.xml.h:7
-#: ../hacks/config/glknots.xml.h:9 ../hacks/config/gltext.xml.h:6
-#: ../hacks/config/lavalite.xml.h:20 ../hacks/config/menger.xml.h:8
-#: ../hacks/config/molecule.xml.h:15 ../hacks/config/polyhedra.xml.h:111
-#: ../hacks/config/spheremonics.xml.h:11
+#: hacks/config/cubenetic.xml.h:15 hacks/config/glblur.xml.h:7
+#: hacks/config/glknots.xml.h:9 hacks/config/gltext.xml.h:8
+#: hacks/config/lavalite.xml.h:20 hacks/config/menger.xml.h:8
+#: hacks/config/molecule.xml.h:16 hacks/config/polyhedra.xml.h:111
+#: hacks/config/spheremonics.xml.h:11
 msgid "Rotate around X and Z axes"
 msgstr "Forgatás az X és Z tengelyek körül"
 
-#: ../hacks/config/cubenetic.xml.h:16 ../hacks/config/glblur.xml.h:8
-#: ../hacks/config/glknots.xml.h:10 ../hacks/config/gltext.xml.h:7
-#: ../hacks/config/lavalite.xml.h:21 ../hacks/config/menger.xml.h:9
-#: ../hacks/config/molecule.xml.h:16 ../hacks/config/polyhedra.xml.h:112
-#: ../hacks/config/spheremonics.xml.h:12
+#: hacks/config/cubenetic.xml.h:16 hacks/config/glblur.xml.h:8
+#: hacks/config/glknots.xml.h:10 hacks/config/gltext.xml.h:9
+#: hacks/config/lavalite.xml.h:21 hacks/config/menger.xml.h:9
+#: hacks/config/molecule.xml.h:17 hacks/config/polyhedra.xml.h:112
+#: hacks/config/spheremonics.xml.h:12
 msgid "Rotate around X axis"
 msgstr "Forgatás az X tengely körül"
 
-#: ../hacks/config/cubenetic.xml.h:17 ../hacks/config/glblur.xml.h:9
-#: ../hacks/config/glknots.xml.h:11 ../hacks/config/gltext.xml.h:8
-#: ../hacks/config/lavalite.xml.h:22 ../hacks/config/menger.xml.h:10
-#: ../hacks/config/molecule.xml.h:17 ../hacks/config/polyhedra.xml.h:113
-#: ../hacks/config/spheremonics.xml.h:13
+#: hacks/config/cubenetic.xml.h:17 hacks/config/glblur.xml.h:9
+#: hacks/config/glknots.xml.h:11 hacks/config/gltext.xml.h:10
+#: hacks/config/lavalite.xml.h:22 hacks/config/menger.xml.h:10
+#: hacks/config/molecule.xml.h:18 hacks/config/polyhedra.xml.h:113
+#: hacks/config/spheremonics.xml.h:13
 msgid "Rotate around Y and Z axes"
 msgstr "Forgatás az Y és Z tengelyek körül"
 
-#: ../hacks/config/cubenetic.xml.h:18 ../hacks/config/glblur.xml.h:10
-#: ../hacks/config/glknots.xml.h:12 ../hacks/config/gltext.xml.h:9
-#: ../hacks/config/lavalite.xml.h:23 ../hacks/config/menger.xml.h:11
-#: ../hacks/config/molecule.xml.h:18 ../hacks/config/polyhedra.xml.h:114
-#: ../hacks/config/spheremonics.xml.h:14
+#: hacks/config/cubenetic.xml.h:18 hacks/config/glblur.xml.h:10
+#: hacks/config/glknots.xml.h:12 hacks/config/gltext.xml.h:11
+#: hacks/config/lavalite.xml.h:23 hacks/config/menger.xml.h:11
+#: hacks/config/molecule.xml.h:19 hacks/config/polyhedra.xml.h:114
+#: hacks/config/spheremonics.xml.h:14
 msgid "Rotate around Y axis"
 msgstr "Forgatás az Y tengely körül"
 
-#: ../hacks/config/cubenetic.xml.h:19 ../hacks/config/glblur.xml.h:11
-#: ../hacks/config/glknots.xml.h:13 ../hacks/config/gltext.xml.h:10
-#: ../hacks/config/lavalite.xml.h:24 ../hacks/config/menger.xml.h:12
-#: ../hacks/config/molecule.xml.h:19 ../hacks/config/polyhedra.xml.h:115
-#: ../hacks/config/spheremonics.xml.h:15
+#: hacks/config/cubenetic.xml.h:19 hacks/config/glblur.xml.h:11
+#: hacks/config/glknots.xml.h:13 hacks/config/gltext.xml.h:12
+#: hacks/config/lavalite.xml.h:24 hacks/config/menger.xml.h:12
+#: hacks/config/molecule.xml.h:20 hacks/config/polyhedra.xml.h:115
+#: hacks/config/spheremonics.xml.h:15
 msgid "Rotate around Z axis"
 msgstr "Forgatás a Z tengely körül"
 
-#: ../hacks/config/cubenetic.xml.h:20 ../hacks/config/glblur.xml.h:12
-#: ../hacks/config/glknots.xml.h:14 ../hacks/config/gltext.xml.h:11
-#: ../hacks/config/lavalite.xml.h:25 ../hacks/config/menger.xml.h:13
-#: ../hacks/config/molecule.xml.h:20 ../hacks/config/polyhedra.xml.h:116
-#: ../hacks/config/spheremonics.xml.h:16
+#: hacks/config/cubenetic.xml.h:20 hacks/config/glblur.xml.h:12
+#: hacks/config/glknots.xml.h:14 hacks/config/gltext.xml.h:13
+#: hacks/config/lavalite.xml.h:25 hacks/config/menger.xml.h:13
+#: hacks/config/molecule.xml.h:21 hacks/config/polyhedra.xml.h:116
+#: hacks/config/spheremonics.xml.h:16
 msgid "Rotate around all three axes"
 msgstr "Forgatás mindhárom tengely körül"
 
-#: ../hacks/config/cubenetic.xml.h:25
+#: hacks/config/cubenetic.xml.h:25
 msgid "Surface Pattern Complexity"
 msgstr "Felületi minta összetettsége"
 
-#: ../hacks/config/cubenetic.xml.h:26
+#: hacks/config/cubenetic.xml.h:26
 msgid "Surface Pattern Overlap"
 msgstr "Felületi minták átfedése"
 
-#: ../hacks/config/cubenetic.xml.h:27
+#: hacks/config/cubenetic.xml.h:27
 msgid "Surface Pattern Speed"
 msgstr "Felületi minták sebessége"
 
-#: ../hacks/config/cubenetic.xml.h:28 ../hacks/config/cubestorm.xml.h:13
-#: ../hacks/config/dangerball.xml.h:10 ../hacks/config/engine.xml.h:20
-#: ../hacks/config/glblur.xml.h:19 ../hacks/config/glforestfire.xml.h:19
-#: ../hacks/config/glknots.xml.h:22 ../hacks/config/glplanet.xml.h:14
-#: ../hacks/config/gltext.xml.h:17 ../hacks/config/lavalite.xml.h:31
-#: ../hacks/config/menger.xml.h:20 ../hacks/config/molecule.xml.h:25
-#: ../hacks/config/polyhedra.xml.h:172 ../hacks/config/spheremonics.xml.h:25
-#: ../hacks/config/wander.xml.h:15
+#: hacks/config/cubenetic.xml.h:28 hacks/config/cubestorm.xml.h:13
+#: hacks/config/dangerball.xml.h:10 hacks/config/engine.xml.h:20
+#: hacks/config/glblur.xml.h:19 hacks/config/glforestfire.xml.h:19
+#: hacks/config/glknots.xml.h:22 hacks/config/glplanet.xml.h:14
+#: hacks/config/gltext.xml.h:20 hacks/config/lavalite.xml.h:31
+#: hacks/config/menger.xml.h:20 hacks/config/molecule.xml.h:26
+#: hacks/config/polyhedra.xml.h:172 hacks/config/spheremonics.xml.h:25
+#: hacks/config/wander.xml.h:15
 msgid "Wander"
 msgstr "Vándorlás"
 
-#: ../hacks/config/cubestorm.xml.h:2
+#: hacks/config/cubestorm.xml.h:2
 msgid "CubeStorm"
 msgstr "Kockavihar"
 
-#: ../hacks/config/cubestorm.xml.h:3
+#: hacks/config/cubestorm.xml.h:3
 msgid ""
 "Draws a series of rotating 3D boxes that intersect each other and eventually "
 "fill space. Written by Jamie Zawinski."
@@ -2849,15 +3059,15 @@ msgstr ""
 "Forgó, egymást metsző és a helyet véletlenül kitöltő 3D dobozok sorozatát "
 "rajzolja ki."
 
-#: ../hacks/config/cubestorm.xml.h:6
+#: hacks/config/cubestorm.xml.h:6
 msgid "Number of Cubes"
 msgstr "Kockák száma"
 
-#: ../hacks/config/cubestorm.xml.h:10
+#: hacks/config/cubestorm.xml.h:10
 msgid "Strut Thickness"
 msgstr "Merevítés vastagsága"
 
-#: ../hacks/config/cynosure.xml.h:1
+#: hacks/config/cynosure.xml.h:1
 msgid ""
 "A hack similar to `greynetic', but less frenetic. The first implementation "
 "was by Stephen Linhart; then Ozymandias G. Desiderata wrote a Java applet "
@@ -2869,15 +3079,15 @@ msgstr ""
 "applet klónt. Ezt a klónt fedezte fel Jamie Zawinski és portolta C-be, hogy "
 "itt megjelenhessen."
 
-#: ../hacks/config/cynosure.xml.h:2
+#: hacks/config/cynosure.xml.h:2
 msgid "Cynosure"
 msgstr "Cynosure"
 
-#: ../hacks/config/dangerball.xml.h:1
+#: hacks/config/dangerball.xml.h:1
 msgid "DangerBall"
 msgstr "Veszélyes labda"
 
-#: ../hacks/config/dangerball.xml.h:2
+#: hacks/config/dangerball.xml.h:2
 msgid ""
 "Draws a ball that periodically extrudes many random spikes. Ouch! Written by "
 "Jamie Zawinski."
@@ -2885,79 +3095,79 @@ msgstr ""
 "Egy labdát rajzol, amely szabályos időközönként véletlenszerűen tüskéket dug "
 "ki. Írta Jamie Zawinski."
 
-#: ../hacks/config/dangerball.xml.h:7
+#: hacks/config/dangerball.xml.h:7
 msgid "Spike Count"
 msgstr "Tüskék száma"
 
-#: ../hacks/config/dangerball.xml.h:8
+#: hacks/config/dangerball.xml.h:8
 msgid "Spike Growth"
 msgstr "Tüskék növekedése"
 
-#: ../hacks/config/decayscreen.xml.h:1
+#: hacks/config/decayscreen.xml.h:1
 msgid "DecayScreen"
 msgstr "Bomló képernyő"
 
-#: ../hacks/config/decayscreen.xml.h:3
+#: hacks/config/decayscreen.xml.h:3
 msgid "Fuzzy Melt"
 msgstr "Életlen olvadás"
 
-#: ../hacks/config/decayscreen.xml.h:4
+#: hacks/config/decayscreen.xml.h:4
 msgid "Melt Away From Center"
 msgstr "A középponttól távolodó olvadás"
 
-#: ../hacks/config/decayscreen.xml.h:5
+#: hacks/config/decayscreen.xml.h:5
 msgid "Melt Down"
 msgstr "Olvadás lefelé"
 
-#: ../hacks/config/decayscreen.xml.h:6
+#: hacks/config/decayscreen.xml.h:6
 msgid "Melt Down, Left"
 msgstr "Olvadás lefelé, balra"
 
-#: ../hacks/config/decayscreen.xml.h:7
+#: hacks/config/decayscreen.xml.h:7
 msgid "Melt Down, Right"
 msgstr "Olvadás lefelé, jobbra"
 
-#: ../hacks/config/decayscreen.xml.h:8
+#: hacks/config/decayscreen.xml.h:8
 msgid "Melt Left"
 msgstr "Olvadás balra"
 
-#: ../hacks/config/decayscreen.xml.h:9
+#: hacks/config/decayscreen.xml.h:9
 msgid "Melt Right"
 msgstr "Olvadás jobbra"
 
-#: ../hacks/config/decayscreen.xml.h:10
+#: hacks/config/decayscreen.xml.h:10
 msgid "Melt Towards Center"
 msgstr "Olvadás a középpont felé"
 
-#: ../hacks/config/decayscreen.xml.h:11
+#: hacks/config/decayscreen.xml.h:11
 msgid "Melt Up"
 msgstr "Olvadás fel"
 
-#: ../hacks/config/decayscreen.xml.h:12
+#: hacks/config/decayscreen.xml.h:12
 msgid "Melt Up, Left"
 msgstr "Olvadás fel, balra"
 
-#: ../hacks/config/decayscreen.xml.h:13
+#: hacks/config/decayscreen.xml.h:13
 msgid "Melt Up, Right"
 msgstr "Olvadás fel, jobbra"
 
-#: ../hacks/config/decayscreen.xml.h:14
+#: hacks/config/decayscreen.xml.h:14
 msgid "Melty Melt"
 msgstr "Összeolvadós olvadás"
 
-#: ../hacks/config/decayscreen.xml.h:15
+#: hacks/config/decayscreen.xml.h:15
 msgid "Random Melt Style"
 msgstr "Véletlen olvadási stílus"
 
-#: ../hacks/config/decayscreen.xml.h:16
+#: hacks/config/decayscreen.xml.h:16
 msgid "Shuffle Melt"
 msgstr "Keveredő olvadás"
 
-#: ../hacks/config/decayscreen.xml.h:19
+#: hacks/config/decayscreen.xml.h:19
 msgid "Stretchy Melt"
 msgstr "Nyúlós olvadás"
 
-#: ../hacks/config/decayscreen.xml.h:20
+#: hacks/config/decayscreen.xml.h:20
 msgid ""
 "This takes an image and makes it melt. You've no doubt seen this effect "
 "before, but no screensaver would really be complete without it. It works "
@@ -2971,21 +3181,20 @@ msgstr ""
 "kikapcsolása után is folytatódik, kérjen orvosi segítséget. Írta David Wald, "
 "Vivek Khera, Jamie Zawinski és Vince Levey."
 
-#: ../hacks/config/deco.xml.h:3
+#: hacks/config/deco.xml.h:3
 msgid "Deco"
 msgstr "Deco"
 
-#: ../hacks/config/deco.xml.h:6 ../hacks/config/menger.xml.h:5
-#: ../hacks/config/sierpinski3d.xml.h:4
+#: hacks/config/deco.xml.h:6 hacks/config/menger.xml.h:5
+#: hacks/config/sierpinski3d.xml.h:4
 msgid "Max Depth"
 msgstr "Max. mélység"
 
-#: ../hacks/config/deco.xml.h:7
+#: hacks/config/deco.xml.h:7
 msgid "Min Size"
 msgstr "Min. méret"
 
-#. #### -cycle-delay [1000000]
-#: ../hacks/config/deco.xml.h:10
+#: hacks/config/deco.xml.h:9
 msgid ""
 "This one subdivides and colors rectangles randomly. It looks kind of like "
 "Brady-Bunch-era rec-room wall paneling. (Raven says: ``this screensaver is "
@@ -2997,17 +3206,17 @@ msgstr ""
 "olyan csúnya, hogy lejön róla a festék. Írta Jamie Zawinski, Michael Bayne "
 "Java kódja alapján."
 
-#: ../hacks/config/deco.xml.h:12 ../hacks/config/rd-bomb.xml.h:23
-#: ../hacks/config/whirlygig.xml.h:20 ../hacks/config/xearth.xml.h:33
-#: ../hacks/config/zoom.xml.h:10
+#: hacks/config/deco.xml.h:11 hacks/config/rd-bomb.xml.h:23
+#: hacks/config/whirlygig.xml.h:20 hacks/config/xearth.xml.h:33
+#: hacks/config/zoom.xml.h:10
 msgid "x"
 msgstr "x"
 
-#: ../hacks/config/deluxe.xml.h:2
+#: hacks/config/deluxe.xml.h:2
 msgid "Deluxe"
 msgstr "Deluxe"
 
-#: ../hacks/config/deluxe.xml.h:12
+#: hacks/config/deluxe.xml.h:12
 msgid ""
 "This draws a pulsing sequence of stars, circles, and lines. It would look "
 "better if it was faster, but as far as I can tell, there is no way to make "
@@ -3018,11 +3227,11 @@ msgstr ""
 "program gyorsabban működne, de úgy tűnik a gyorsítás végül mindig "
 "villódzáshoz vezet. Elég béna ez az X... Írta Jamie Zawinski."
 
-#: ../hacks/config/deluxe.xml.h:13
+#: hacks/config/deluxe.xml.h:13
 msgid "Transparency"
 msgstr "Átlátszóság"
 
-#: ../hacks/config/demon.xml.h:1
+#: hacks/config/demon.xml.h:1
 msgid ""
 "A cellular automaton that starts with a random field, and organizes it into "
 "stripes and spirals. Written by David Bagley."
@@ -3030,19 +3239,19 @@ msgstr ""
 "Egy véletlen mezővel induló, majd sávokká és spirálokká szerveződő "
 "sejtautomata. Írta David Bagley."
 
-#: ../hacks/config/demon.xml.h:3
+#: hacks/config/demon.xml.h:3
 msgid "Demon"
 msgstr "Démon"
 
-#: ../hacks/config/demon.xml.h:11
+#: hacks/config/demon.xml.h:11
 msgid "States"
 msgstr "Állapotok"
 
-#: ../hacks/config/discrete.xml.h:1
+#: hacks/config/discrete.xml.h:1
 msgid "Discrete"
 msgstr "Discrete"
 
-#: ../hacks/config/discrete.xml.h:5
+#: hacks/config/discrete.xml.h:5
 msgid ""
 "More ``discrete map'' systems, including new variants of Hopalong and Julia, "
 "and a few others. Written by Tim Auckland."
@@ -3050,39 +3259,39 @@ msgstr ""
 "További \"diszkrét térkép\" alapú rendszerek, kiegészítve újabb Hopalong és "
 "Julia variánsokkal és még néhány másikkal. Írta Tim Auckland."
 
-#: ../hacks/config/distort.xml.h:1
+#: hacks/config/distort.xml.h:1
 msgid "Black Hole"
 msgstr "Fekete lyuk"
 
-#: ../hacks/config/distort.xml.h:2
+#: hacks/config/distort.xml.h:2
 msgid "Bounce"
 msgstr "Ütközés"
 
-#: ../hacks/config/distort.xml.h:3
+#: hacks/config/distort.xml.h:3
 msgid "Distort"
 msgstr "Torzítás"
 
-#: ../hacks/config/distort.xml.h:6
+#: hacks/config/distort.xml.h:6
 msgid "Lens Count"
 msgstr "Lencsék száma"
 
-#: ../hacks/config/distort.xml.h:7
+#: hacks/config/distort.xml.h:7
 msgid "Lens Size"
 msgstr "Lencsék mérete"
 
-#: ../hacks/config/distort.xml.h:8
+#: hacks/config/distort.xml.h:8
 msgid "Magnify"
 msgstr "Nagyítás"
 
-#: ../hacks/config/distort.xml.h:10
+#: hacks/config/distort.xml.h:10
 msgid "Reflect"
 msgstr "Visszaverődés"
 
-#: ../hacks/config/distort.xml.h:14
+#: hacks/config/distort.xml.h:14
 msgid "Swamp Thing"
 msgstr "Mocsári dolog"
 
-#: ../hacks/config/distort.xml.h:15
+#: hacks/config/distort.xml.h:15
 msgid ""
 "This hack grabs an image of the screen, and then lets a transparent lens "
 "wander around the screen, magnifying whatever is underneath. Written by "
@@ -3091,30 +3300,30 @@ msgstr ""
 "Ez a hack egy képernyőképet vesz, ezután egy átlátszó lencsét vándoroltat a "
 "képernyőn, ami felnagyít mindent, ami csak alatta van. Írta Jonas Munsin."
 
-#: ../hacks/config/distort.xml.h:16 ../hacks/config/moire.xml.h:12
-#: ../hacks/config/rd-bomb.xml.h:21 ../hacks/config/ripples.xml.h:15
-#: ../hacks/config/rotzoomer.xml.h:10 ../hacks/config/swirl.xml.h:10
-#: ../hacks/config/twang.xml.h:15 ../hacks/config/xflame.xml.h:7
+#: hacks/config/distort.xml.h:16 hacks/config/moire.xml.h:12
+#: hacks/config/rd-bomb.xml.h:21 hacks/config/ripples.xml.h:15
+#: hacks/config/rotzoomer.xml.h:10 hacks/config/swirl.xml.h:10
+#: hacks/config/twang.xml.h:15 hacks/config/xflame.xml.h:7
 msgid "Use Shared Memory"
 msgstr "Osztott memória használata"
 
-#: ../hacks/config/distort.xml.h:17
+#: hacks/config/distort.xml.h:17
 msgid "Vortex"
 msgstr "Örvény"
 
-#: ../hacks/config/drift.xml.h:1
+#: hacks/config/drift.xml.h:1
 msgid "Drift"
 msgstr "Sodródás"
 
-#: ../hacks/config/drift.xml.h:4
+#: hacks/config/drift.xml.h:4
 msgid "Fractal Growth"
 msgstr "Fraktálok növekedése"
 
-#: ../hacks/config/drift.xml.h:5
+#: hacks/config/drift.xml.h:5
 msgid "High Dimensional Sphere"
 msgstr "Magasabb dimenziójú gömb"
 
-#: ../hacks/config/drift.xml.h:6
+#: hacks/config/drift.xml.h:6
 msgid ""
 "How could one possibly describe this except as ``drifting recursive fractal "
 "cosmic flames?'' Another fine hack from the Scott Draves collection of fine "
@@ -3123,15 +3332,31 @@ msgstr ""
 "Ez talán úgy írható le, mint egy \"kozmikus, sodródó, rekurzív fraktál-"
 "lángcsóva\". Egy újabb szép példány Scott Draves gyűjteményéből."
 
-#: ../hacks/config/drift.xml.h:7
+#: hacks/config/drift.xml.h:7
 msgid "Lissojous Figures"
 msgstr "Lissajous ábrák"
 
-#: ../hacks/config/electricsheep.xml.h:1
+#: hacks/config/electricsheep.xml.h:1
+msgid "1 Gbyte cache"
+msgstr "1 Gbyte gyorsítótár"
+
+#: hacks/config/electricsheep.xml.h:2
+msgid "100 Mbyte cache"
+msgstr "100 Mbyte gyorsítótár"
+
+#: hacks/config/electricsheep.xml.h:3
+msgid "3 Gbyte cache"
+msgstr "3 Gbyte gyorsítótár"
+
+#: hacks/config/electricsheep.xml.h:4
+msgid "300 Mbyte cache"
+msgstr "300 Mbyte gyorsítótár"
+
+#: hacks/config/electricsheep.xml.h:5
 msgid "ElectricSheep"
 msgstr "Elektonikus bárány"
 
-#: ../hacks/config/electricsheep.xml.h:2
+#: hacks/config/electricsheep.xml.h:6
 msgid ""
 "ElectricSheep is an xscreensaver module that displays mpeg video of an "
 "animated fractal flame. In the background, it contributes render cycles to "
@@ -3149,35 +3374,37 @@ msgstr ""
 "internetkapcsolattal rendelkezik.Írta Scott Draves. Megtalálható a következő "
 "címen: &lt;http://www.electricsheep.org/&gt;."
 
-#: ../hacks/config/electricsheep.xml.h:3
-msgid "Frame Rate"
-msgstr "Képkockaráta"
-
-#: ../hacks/config/electricsheep.xml.h:4
-msgid "Hide Sheep"
-msgstr "Bárány elrejtése"
-
-#: ../hacks/config/electricsheep.xml.h:5
-msgid "Megabytes of Local Sheep Storage"
-msgstr "Megabájtok helyi bárány tárolására"
-
-#: ../hacks/config/electricsheep.xml.h:6
+#: hacks/config/electricsheep.xml.h:8
 msgid "Nickname"
 msgstr "Becenév"
 
-#: ../hacks/config/electricsheep.xml.h:7
+#: hacks/config/electricsheep.xml.h:9
+msgid "No Animation"
+msgstr "Nincs animáció"
+
+#: hacks/config/electricsheep.xml.h:10
+msgid "No Network"
+msgstr "Nincs hálózat"
+
+#: hacks/config/electricsheep.xml.h:11
 msgid "Repititions of each Sheep"
 msgstr "Egyes bárányok ismétlődései"
 
-#: ../hacks/config/electricsheep.xml.h:8
-msgid "Standalone"
-msgstr "Egyedülálló"
-
-#: ../hacks/config/electricsheep.xml.h:9
+#: hacks/config/electricsheep.xml.h:12
 msgid "URL"
 msgstr "URL"
 
-#: ../hacks/config/endgame.xml.h:1
+#: hacks/config/electricsheep.xml.h:13
+msgid "Unlimited"
+msgstr "Korlátlan"
+
+#: hacks/config/electricsheep.xml.h:14 hacks/config/gleidescope.xml.h:13
+#: hacks/config/hyperball.xml.h:16 hacks/config/hypercube.xml.h:16
+#: hacks/config/zoom.xml.h:8
+msgid "Zoom"
+msgstr "Nagyítás"
+
+#: hacks/config/endgame.xml.h:1
 msgid ""
 "Black slips out of three mating nets, but the fourth one holds him tight! A "
 "brilliant composition! Written by Blair Tennessy."
@@ -3185,31 +3412,31 @@ msgstr ""
 "Sötét kicsúszik a három mattoló  hálójából, de a negyedik sarokba szorítja! "
 "Briliáns kompozíció! Írta Blair Tennessy."
 
-#: ../hacks/config/endgame.xml.h:2
+#: hacks/config/endgame.xml.h:2
 msgid "Endgame"
 msgstr "Végjáték"
 
-#: ../hacks/config/engine.xml.h:1
+#: hacks/config/engine.xml.h:1
 msgid "Audi Quattro (5 cylinders)"
 msgstr "Audi Quattro (5 henger)"
 
-#: ../hacks/config/engine.xml.h:2
+#: hacks/config/engine.xml.h:2
 msgid "BMW M3 (4 cylinders)"
 msgstr "BMW M3 (4 henger)"
 
-#: ../hacks/config/engine.xml.h:3
+#: hacks/config/engine.xml.h:3
 msgid "BMW M5 (6 cylinders)"
 msgstr "BMW M5 (6 henger)"
 
-#: ../hacks/config/engine.xml.h:4
+#: hacks/config/engine.xml.h:4
 msgid "Corvette Z06 (8 cylinders, V)"
 msgstr "Corvette Z06 (8 henger, V)"
 
-#: ../hacks/config/engine.xml.h:5
+#: hacks/config/engine.xml.h:5
 msgid "Dodge Viper (10 cylinders, V)"
 msgstr "Dodge Viper (10 henger, V)"
 
-#: ../hacks/config/engine.xml.h:6
+#: hacks/config/engine.xml.h:6
 msgid ""
 "Draws a simple model of an engine that floats around the screen. Written by "
 "Ben Buxton and Ed Beroset."
@@ -3217,48 +3444,47 @@ msgstr ""
 "Egyszerű motormodellt rajzol fel, amely körbeszáll a képernyőn.Írta Ben "
 "Buxton és Ed Beroset."
 
-#: ../hacks/config/engine.xml.h:7
+#: hacks/config/engine.xml.h:7
 msgid "Engine"
 msgstr "Motor"
 
-#: ../hacks/config/engine.xml.h:9
+#: hacks/config/engine.xml.h:9
 msgid "Honda Insight (3 cylinders)"
 msgstr "Honda Insight (3 henger)"
 
-#: ../hacks/config/engine.xml.h:10
+#: hacks/config/engine.xml.h:10
 msgid "Jaguar XKE (12 cylinders, V)"
 msgstr "Jaguar XKE (12 henger, V)"
 
-#: ../hacks/config/engine.xml.h:11
+#: hacks/config/engine.xml.h:11
 msgid "Porsche 911 (6 cylinders, flat)"
 msgstr "Porsche 911 (6 henger, sima)"
 
-#: ../hacks/config/engine.xml.h:12
+#: hacks/config/engine.xml.h:12
 msgid "Random Engine"
 msgstr "Véletlen motor"
 
-#: ../hacks/config/engine.xml.h:13
+#: hacks/config/engine.xml.h:13
 msgid "Show Engine Name"
 msgstr "Motornév megjelenítése"
 
-#: ../hacks/config/engine.xml.h:18
+#: hacks/config/engine.xml.h:18
 msgid "Subaru XT (6 cylinders, V)"
 msgstr "Subaru XT (6 henger, V)"
 
-#: ../hacks/config/engine.xml.h:19
+#: hacks/config/engine.xml.h:19
 msgid "VW Beetle (4 cylinders, flat)"
 msgstr "VW Beetle (4 henger, sima)"
 
-#: ../hacks/config/epicycle.xml.h:4
+#: hacks/config/epicycle.xml.h:4
 msgid "Epicycle"
 msgstr "Epiciklus"
 
-#: ../hacks/config/epicycle.xml.h:6
+#: hacks/config/epicycle.xml.h:6
 msgid "Harmonics"
 msgstr "Harmonikusok"
 
-#. #### -size_factor_max [2.05]
-#: ../hacks/config/epicycle.xml.h:13
+#: hacks/config/epicycle.xml.h:12
 msgid ""
 "This program draws the path traced out by a point on the edge of a circle. "
 "That circle rotates around a point on the rim of another circle, and so on, "
@@ -3270,64 +3496,64 @@ msgstr ""
 "volt az alapja a heliocentrikus világkép előtti gondolkodásnak megfelelő "
 "bolygómozgás-modellnek. Írta James Youngman."
 
-#: ../hacks/config/eruption.xml.h:1
+#: hacks/config/eruption.xml.h:1
 msgid "An exposive version of XFlame. By W.P. van Paassen."
 msgstr "Az X láng egy robbanó verziója. Írta W.P. van Paassen."
 
-#: ../hacks/config/eruption.xml.h:2
+#: hacks/config/eruption.xml.h:2
 msgid "Cooling factor"
 msgstr "Hűtési arány"
 
-#: ../hacks/config/eruption.xml.h:4
+#: hacks/config/eruption.xml.h:4
 msgid "Eruption"
 msgstr "Kitörés"
 
-#: ../hacks/config/eruption.xml.h:7 ../hacks/config/fluidballs.xml.h:9
-#: ../hacks/config/qix.xml.h:9 ../hacks/config/speedmine.xml.h:4
+#: hacks/config/eruption.xml.h:7 hacks/config/fluidballs.xml.h:9
+#: hacks/config/qix.xml.h:9 hacks/config/speedmine.xml.h:4
 msgid "Gravity"
 msgstr "Gravitáció"
 
-#: ../hacks/config/eruption.xml.h:8
+#: hacks/config/eruption.xml.h:8
 msgid "Heat"
 msgstr "Hő"
 
-#: ../hacks/config/eruption.xml.h:9
+#: hacks/config/eruption.xml.h:9
 msgid "Inferno"
 msgstr "Pokol"
 
-#: ../hacks/config/eruption.xml.h:10
+#: hacks/config/eruption.xml.h:10
 msgid "Little"
 msgstr "Kicsi"
 
-#: ../hacks/config/eruption.xml.h:13
+#: hacks/config/eruption.xml.h:13
 msgid "Negative"
 msgstr "Negatív"
 
-#: ../hacks/config/eruption.xml.h:15
+#: hacks/config/eruption.xml.h:15
 msgid "Number of Particles"
 msgstr "Részecskék száma"
 
-#: ../hacks/config/eruption.xml.h:16
+#: hacks/config/eruption.xml.h:16
 msgid "Pleasant"
 msgstr "Kellemes"
 
-#: ../hacks/config/eruption.xml.h:17
+#: hacks/config/eruption.xml.h:17
 msgid "Positive"
 msgstr "Pozitív"
 
-#: ../hacks/config/euler2d.xml.h:2
+#: hacks/config/euler2d.xml.h:2
 msgid "Euler2d"
 msgstr "Euler2d"
 
-#: ../hacks/config/euler2d.xml.h:10 ../hacks/config/whirlwindwarp.xml.h:5
+#: hacks/config/euler2d.xml.h:10 hacks/config/whirlwindwarp.xml.h:5
 msgid "Particles"
 msgstr "Részecskék"
 
-#: ../hacks/config/euler2d.xml.h:11
+#: hacks/config/euler2d.xml.h:11
 msgid "Power"
 msgstr "Erő"
 
-#: ../hacks/config/euler2d.xml.h:13
+#: hacks/config/euler2d.xml.h:13
 msgid ""
 "Simulates two dimensional Incompressible Inviscid Fluid Flow. Written by "
 "Stephen Montgomery-Smith."
@@ -3335,7 +3561,7 @@ msgstr ""
 "Összenyomhatatlan, belső súrlódástól mentes folyadék mozgását szimulálja két "
 "dimenzióban. Írta Stephen Montgomery-Smith."
 
-#: ../hacks/config/extrusion.xml.h:1
+#: hacks/config/extrusion.xml.h:1
 msgid ""
 "Draws various rotating extruded shapes that twist around, lengthen, and turn "
 "inside out. Created by David Konerding from the samples that come with the "
@@ -3346,56 +3572,56 @@ msgstr ""
 "mintaprogramok alapján, melyek Linas Vepstas GL Extrusion "
 "programkönyvtárához tartoznak."
 
-#: ../hacks/config/extrusion.xml.h:2
+#: hacks/config/extrusion.xml.h:2
 msgid "Extrusion"
 msgstr "Préselés"
 
-#: ../hacks/config/extrusion.xml.h:4
+#: hacks/config/extrusion.xml.h:4
 msgid "Helix 2"
 msgstr "Spirál 2"
 
-#: ../hacks/config/extrusion.xml.h:5
+#: hacks/config/extrusion.xml.h:5
 msgid "Helix 3"
 msgstr "Spirál 3"
 
-#: ../hacks/config/extrusion.xml.h:6
+#: hacks/config/extrusion.xml.h:6
 msgid "Helix 4"
 msgstr "Spirál 4"
 
-#: ../hacks/config/extrusion.xml.h:7
+#: hacks/config/extrusion.xml.h:7
 msgid "Join Offset"
 msgstr "Az összekapcsolás távolsága"
 
-#: ../hacks/config/extrusion.xml.h:8 ../hacks/config/polytopes.xml.h:16
+#: hacks/config/extrusion.xml.h:8 hacks/config/polytopes.xml.h:16
 msgid "Random Object"
 msgstr "Véletlen objektum"
 
-#: ../hacks/config/extrusion.xml.h:9
+#: hacks/config/extrusion.xml.h:9
 msgid "Screw"
 msgstr "Csavar"
 
-#: ../hacks/config/extrusion.xml.h:14
+#: hacks/config/extrusion.xml.h:14
 msgid "Taper"
 msgstr "Kúp"
 
-#: ../hacks/config/extrusion.xml.h:15
+#: hacks/config/extrusion.xml.h:15
 msgid "Texture Image"
 msgstr "Textúra kép"
 
-#: ../hacks/config/extrusion.xml.h:16
+#: hacks/config/extrusion.xml.h:16
 msgid "Twistoid"
 msgstr "Fonott"
 
-#: ../hacks/config/extrusion.xml.h:17 ../hacks/config/glplanet.xml.h:12
-#: ../hacks/config/pulsar.xml.h:19
+#: hacks/config/extrusion.xml.h:17 hacks/config/glplanet.xml.h:12
+#: hacks/config/pulsar.xml.h:19
 msgid "Use Flat Coloring"
 msgstr "Sima színezés használata"
 
-#: ../hacks/config/extrusion.xml.h:18 ../hacks/config/glplanet.xml.h:13
+#: hacks/config/extrusion.xml.h:18 hacks/config/glplanet.xml.h:13
 msgid "Use Lighting"
 msgstr "Világítás használata"
 
-#: ../hacks/config/fadeplot.xml.h:2
+#: hacks/config/fadeplot.xml.h:2
 msgid ""
 "Draws what looks like a waving ribbon following a sinusoidal path. Written "
 "by Bas van Gaalen and Charles Vidal."
@@ -3403,15 +3629,31 @@ msgstr ""
 "Szinuszgörbén mozgó hullámzó szalagot jelenít meg. Írta Bas van Gaalen és "
 "Charles Vidal."
 
-#: ../hacks/config/fadeplot.xml.h:3
+#: hacks/config/fadeplot.xml.h:3
 msgid "FadePlot"
 msgstr "Elhalványuló pontozás"
 
-#: ../hacks/config/fireflies.xml.h:1
+#: hacks/config/fiberlamp.xml.h:1
+msgid "Draws a groovy rotating fiber optic lamp. Written by Tim Auckland."
+msgstr "Forgó optikaiszál-lámpát rajzol. Írta Tim Auckland."
+
+#: hacks/config/fiberlamp.xml.h:3
+msgid "Fiberlamp"
+msgstr "Szállámpa"
+
+#: hacks/config/fiberlamp.xml.h:4
+msgid "Fibers"
+msgstr "Szálak"
+
+#: hacks/config/fiberlamp.xml.h:8
+msgid "Time between Knocks"
+msgstr "Koccanások időköze"
+
+#: hacks/config/fireflies.xml.h:1
 msgid "10 times"
 msgstr "Tízszeres"
 
-#: ../hacks/config/fireflies.xml.h:2
+#: hacks/config/fireflies.xml.h:2
 msgid ""
 "A bunch of fireflies chase a few baits around the screen, leaving colorful "
 "tails which get blown around by the wind. Written by Matt Perry. This "
@@ -3424,205 +3666,196 @@ msgstr ""
 "program nincs benne az XScreenSaver csomagban, de megtalálhatja a következő "
 "címen: &lt;http://somewhere.fscked.org/fireflies/&gt;."
 
-#: ../hacks/config/fireflies.xml.h:3
+#: hacks/config/fireflies.xml.h:3
 msgid "Add some fireflies"
 msgstr "Néhány szentjánosbogár hozzáadása"
 
-#: ../hacks/config/fireflies.xml.h:4
+#: hacks/config/fireflies.xml.h:4
 msgid "Bait accel"
 msgstr "Csali gyorsulása"
 
-#: ../hacks/config/fireflies.xml.h:5
+#: hacks/config/fireflies.xml.h:5
 msgid "Bait speed"
 msgstr "Csali sebessége"
 
-#: ../hacks/config/fireflies.xml.h:6
+#: hacks/config/fireflies.xml.h:6
 msgid "Color cycle speed"
 msgstr "Színcsere sebessége"
 
-#: ../hacks/config/fireflies.xml.h:7
+#: hacks/config/fireflies.xml.h:7
 msgid "Draw baits"
 msgstr "Csalik rajzolása"
 
-#: ../hacks/config/fireflies.xml.h:8
+#: hacks/config/fireflies.xml.h:8
 msgid "Faded colors"
 msgstr "Elhalványuló színek"
 
-#: ../hacks/config/fireflies.xml.h:9
+#: hacks/config/fireflies.xml.h:9
 msgid "Fast Forward speed"
 msgstr "Gyors továbbítás sebessége"
 
-#: ../hacks/config/fireflies.xml.h:10
+#: hacks/config/fireflies.xml.h:10
 msgid "Fireflies"
 msgstr "Szentjánosbogarak"
 
-#: ../hacks/config/fireflies.xml.h:11
+#: hacks/config/fireflies.xml.h:11
 msgid "Firefly accel"
 msgstr "Bogarak gyorsulása"
 
-#: ../hacks/config/fireflies.xml.h:12
+#: hacks/config/fireflies.xml.h:12
 msgid "Firefly size"
 msgstr "Bogarak mérete"
 
-#: ../hacks/config/fireflies.xml.h:13
+#: hacks/config/fireflies.xml.h:13
 msgid "Firefly speed"
 msgstr "Bogarak sebessége"
 
-#: ../hacks/config/fireflies.xml.h:14
+#: hacks/config/fireflies.xml.h:14
 msgid "Frames per sec"
 msgstr "Képkockák száma másodpercenként"
 
-#: ../hacks/config/fireflies.xml.h:15
+#: hacks/config/fireflies.xml.h:15
 msgid "Glow factor"
 msgstr "Izzás mértéke"
 
-#: ../hacks/config/fireflies.xml.h:16
+#: hacks/config/fireflies.xml.h:16
 msgid "Half"
 msgstr "Fél"
 
-#: ../hacks/config/fireflies.xml.h:17 ../hacks/config/pinion.xml.h:7
-msgid "Huge"
-msgstr "Óriási"
-
-#: ../hacks/config/fireflies.xml.h:18 ../hacks/config/fluidballs.xml.h:10
+#: hacks/config/fireflies.xml.h:18 hacks/config/fluidballs.xml.h:10
 msgid "Hurricane"
 msgstr "Hurrikán"
 
-#: ../hacks/config/fireflies.xml.h:19
+#: hacks/config/fireflies.xml.h:19
 msgid "Invisible"
 msgstr "Láthatatlan"
 
-#: ../hacks/config/fireflies.xml.h:20
+#: hacks/config/fireflies.xml.h:20
 msgid "Kill some fireflies"
 msgstr "Néhány szentjánosbogár megölése"
 
-#: ../hacks/config/fireflies.xml.h:22
+#: hacks/config/fireflies.xml.h:22
 msgid "Make all swarms do something"
 msgstr "Minden raj csináljon valamit"
 
-#: ../hacks/config/fireflies.xml.h:23
+#: hacks/config/fireflies.xml.h:23
 msgid "Matrix (pause and rotate)"
 msgstr "Mátrix (szünet és forgatás)"
 
-#: ../hacks/config/fireflies.xml.h:24
+#: hacks/config/fireflies.xml.h:24
 msgid "Maximum baits"
 msgstr "Csalik maximum"
 
-#: ../hacks/config/fireflies.xml.h:25
+#: hacks/config/fireflies.xml.h:25
 msgid "Maximum flies"
 msgstr "Bogarak maximum"
 
-#: ../hacks/config/fireflies.xml.h:26
+#: hacks/config/fireflies.xml.h:26
 msgid "Merge two swarms"
 msgstr "Két raj összeolvadása"
 
-#: ../hacks/config/fireflies.xml.h:27
+#: hacks/config/fireflies.xml.h:27
 msgid "Minimum baits"
 msgstr "Csalik minimum"
 
-#: ../hacks/config/fireflies.xml.h:28
+#: hacks/config/fireflies.xml.h:28
 msgid "Minimum flies"
 msgstr "Bogarak minimum"
 
-#: ../hacks/config/fireflies.xml.h:29
+#: hacks/config/fireflies.xml.h:29
 msgid "Narrow"
 msgstr "Keskeny"
 
-#: ../hacks/config/fireflies.xml.h:30
+#: hacks/config/fireflies.xml.h:30
 msgid "Never"
 msgstr "Soha"
 
-#: ../hacks/config/fireflies.xml.h:31
+#: hacks/config/fireflies.xml.h:31
 msgid "Normal swarm motion"
 msgstr "Normális rajmozgás"
 
-#: ../hacks/config/fireflies.xml.h:33
+#: hacks/config/fireflies.xml.h:33
 msgid "Opaque"
 msgstr "Átlátszatlan"
 
-#: ../hacks/config/fireflies.xml.h:35
+#: hacks/config/fireflies.xml.h:35
 msgid "Split a swarm"
 msgstr "Raj felosztása"
 
-#: ../hacks/config/fireflies.xml.h:36 ../hacks/config/fluidballs.xml.h:21
-#: ../hacks/config/glforestfire.xml.h:16
+#: hacks/config/fireflies.xml.h:36 hacks/config/fluidballs.xml.h:21
+#: hacks/config/glforestfire.xml.h:16
 msgid "Still"
 msgstr "Álló"
 
-#: ../hacks/config/fireflies.xml.h:37
+#: hacks/config/fireflies.xml.h:37
 msgid "Swarm bursts into rainbow               "
 msgstr "Raj szivárványt alkot               "
 
-#: ../hacks/config/fireflies.xml.h:38
+#: hacks/config/fireflies.xml.h:38
 msgid "Swarm comes to a halt"
 msgstr "Raj megáll"
 
-#: ../hacks/config/fireflies.xml.h:39
+#: hacks/config/fireflies.xml.h:39
 msgid "Swarm does loops"
 msgstr "Raj köröket ír le"
 
-#: ../hacks/config/fireflies.xml.h:40
+#: hacks/config/fireflies.xml.h:40
 msgid "Swarm hyperspeed"
 msgstr "Raj hipersebességű"
 
-#: ../hacks/config/fireflies.xml.h:41
+#: hacks/config/fireflies.xml.h:41
 msgid "Swarm tails glow"
 msgstr "Raj nyomjelzői izzanak"
 
-#: ../hacks/config/fireflies.xml.h:43 ../hacks/config/pinion.xml.h:14
-msgid "Tiny"
-msgstr "Pici"
-
-#: ../hacks/config/fireflies.xml.h:44
+#: hacks/config/fireflies.xml.h:44
 msgid "Wide"
 msgstr "Széles"
 
-#: ../hacks/config/fireflies.xml.h:45 ../hacks/config/fluidballs.xml.h:23
+#: hacks/config/fireflies.xml.h:45 hacks/config/fluidballs.xml.h:23
 msgid "Wind"
 msgstr "Szél"
 
-#: ../hacks/config/fireflies.xml.h:46
+#: hacks/config/fireflies.xml.h:46
 msgid "Wind picks up"
 msgstr "A szél feltámad"
 
-#: ../hacks/config/fireworkx.xml.h:1 ../hacks/config/lavalite.xml.h:3
+#: hacks/config/fireworkx.xml.h:1 hacks/config/lavalite.xml.h:3
 msgid "Activity"
 msgstr "Tevékenység"
 
-#: ../hacks/config/fireworkx.xml.h:4
+#: hacks/config/fireworkx.xml.h:4
 msgid "Fast Fade (more realistic)"
 msgstr "Gyors áttűnés (még valóságosabb)"
 
-#: ../hacks/config/fireworkx.xml.h:5
+#: hacks/config/fireworkx.xml.h:5
 msgid "Fireworkx"
 msgstr "Fireworkx"
 
-#: ../hacks/config/fireworkx.xml.h:6
+#: hacks/config/fireworkx.xml.h:6
 msgid "Light effect"
 msgstr "Fényhatás"
 
-#: ../hacks/config/fireworkx.xml.h:7
+#: hacks/config/fireworkx.xml.h:7
 msgid "Pyrotechnics simulation eye-candy. Written by Rony B. Chandran."
 msgstr "Pirotechnikai bemutató. Írta Rony B. Chandran."
 
-#: ../hacks/config/fireworkx.xml.h:8
+#: hacks/config/fireworkx.xml.h:8
 msgid "Shoot"
 msgstr "Lövés"
 
-#: ../hacks/config/flag.xml.h:1
+#: hacks/config/flag.xml.h:1
 msgid "Bitmap for Flag"
 msgstr "A zászló képe"
 
-#: ../hacks/config/flag.xml.h:3
+#: hacks/config/flag.xml.h:3
 msgid "Flag"
 msgstr "Zászló"
 
-#: ../hacks/config/flag.xml.h:10
+#: hacks/config/flag.xml.h:10
 msgid "Text for Flag"
 msgstr "Zászló szövege"
 
-#. #### -size [-7]
-#: ../hacks/config/flag.xml.h:12
+#: hacks/config/flag.xml.h:11
 msgid ""
 "This draws a waving colored flag, that undulates its way around the screen. "
 "The trick is the flag can contain arbitrary text and images. By default, it "
@@ -3636,39 +3869,39 @@ msgstr ""
 "típusát jeleníti meg, vagy \"Bob\" képét. A szöveg és a kép felülbírálható "
 "parancssori kapcsolókkal. Írta Charles Vidal és Jamie Zawinski."
 
-#: ../hacks/config/flame.xml.h:1 ../hacks/config/jigsaw.xml.h:1
-#: ../hacks/config/maze.xml.h:1 ../hacks/config/rotzoomer.xml.h:1
-#: ../hacks/config/wander.xml.h:1
+#: hacks/config/flame.xml.h:1 hacks/config/jigsaw.xml.h:1
+#: hacks/config/maze.xml.h:1 hacks/config/rotzoomer.xml.h:1
+#: hacks/config/wander.xml.h:1
 msgid "0 Seconds"
 msgstr "0 másodperc"
 
-#: ../hacks/config/flame.xml.h:2 ../hacks/config/gleidescope.xml.h:1
-#: ../hacks/config/glslideshow.xml.h:2 ../hacks/config/maze.xml.h:2
-#: ../hacks/config/mirrorblob.xml.h:1
+#: hacks/config/flame.xml.h:2 hacks/config/gleidescope.xml.h:1
+#: hacks/config/glslideshow.xml.h:2 hacks/config/maze.xml.h:2
+#: hacks/config/mirrorblob.xml.h:1
 msgid "10 Seconds"
 msgstr "10 másodperc"
 
-#: ../hacks/config/flame.xml.h:3
+#: hacks/config/flame.xml.h:3
 msgid "Another iterative fractal generator. Written by Scott Draves."
 msgstr "Egy újabb iteratív fraktálgenerátor. Írta Scott Draves."
 
-#: ../hacks/config/flame.xml.h:4 ../hacks/config/jigglypuff.xml.h:4
+#: hacks/config/flame.xml.h:4 hacks/config/jigglypuff.xml.h:4
 msgid "Complexity"
 msgstr "Összetettség"
 
-#: ../hacks/config/flame.xml.h:8
+#: hacks/config/flame.xml.h:8
 msgid "Flame"
 msgstr "Láng"
 
-#: ../hacks/config/flame.xml.h:13
+#: hacks/config/flame.xml.h:13
 msgid "Number of Fractals"
 msgstr "Fraktálok száma"
 
-#: ../hacks/config/flipflop.xml.h:2
+#: hacks/config/flipflop.xml.h:2
 msgid "FlipFlop"
 msgstr "FlipFlop"
 
-#: ../hacks/config/flipflop.xml.h:3
+#: hacks/config/flipflop.xml.h:3
 msgid ""
 "Flipflop draws a grid of 3D colored tiles that change positions with each "
 "other. Written by Kevin Ogden."
@@ -3676,15 +3909,15 @@ msgstr ""
 "Színes, helyzetüket együtt változtató 3D négyzetekből álló rácsot rajzol. "
 "Írta Kevin Ogden."
 
-#: ../hacks/config/flipflop.xml.h:6
+#: hacks/config/flipflop.xml.h:6
 msgid "Solid Tiles"
 msgstr "Egyszínű kockák"
 
-#: ../hacks/config/flipscreen3d.xml.h:2
+#: hacks/config/flipscreen3d.xml.h:2
 msgid "Flipscreen3d"
 msgstr "Flipscreen 3D"
 
-#: ../hacks/config/flipscreen3d.xml.h:3
+#: hacks/config/flipscreen3d.xml.h:3
 msgid ""
 "Grabs an image of the desktop, turns it into a GL texture map, and spins it "
 "around and deforms it in various ways. Written by Ben Buxton."
@@ -3692,15 +3925,55 @@ msgstr ""
 "Képet készít az asztaláról, GL textúraképpé alakítja, majd körbeforgatja és "
 "különböző módokon eltorzítja. Írta Ben Buxton."
 
-#: ../hacks/config/flow.xml.h:3
+#: hacks/config/fliptext.xml.h:1 hacks/config/starwars.xml.h:3
+msgid "Centered Text"
+msgstr "Középre helyezett szöveg"
+
+#: hacks/config/fliptext.xml.h:2
+msgid ""
+"Draws successive pages of text. The lines flip in and out in a soothing 3D "
+"pattern. The text can be the output of a program or the contents of a file "
+"or URL, as configured on the \"Advanced\" tab of the main Screensaver "
+"Preferences window. Written by Jamie Zawinski."
+msgstr "Egymást követő szöveges oldalakat rajzol. A sorok egy megnyugtató 3D mintába pattannak be és ki. A szöveg lehet egy program kimenete, vagy egy fájl vagy URL tartalma, ahogyan az a fő Képernyővédő beállításai ablak Bővített fülén be van állítva. Írta Jamie Zawinski."
+
+#: hacks/config/fliptext.xml.h:4
+msgid "FlipText"
+msgstr "FlipText"
+
+#: hacks/config/fliptext.xml.h:5 hacks/config/starwars.xml.h:7
+msgid "Flush Left Text"
+msgstr "Szöveg balra"
+
+#: hacks/config/fliptext.xml.h:6 hacks/config/starwars.xml.h:8
+msgid "Flush Right Text"
+msgstr "Szöveg jobbra"
+
+#: hacks/config/fliptext.xml.h:7 hacks/config/starwars.xml.h:9
+msgid "Font Point Size"
+msgstr "Betűméret pontokban"
+
+#: hacks/config/fliptext.xml.h:11
+msgid "Random Text Alignment"
+msgstr "Véletlen szövegigazítás"
+
+#: hacks/config/fliptext.xml.h:15 hacks/config/starwars.xml.h:15
+msgid "Text Columns"
+msgstr "Szövegoszlopok"
+
+#: hacks/config/fliptext.xml.h:16 hacks/config/starwars.xml.h:16
+msgid "Text Lines"
+msgstr "Szövegsorok"
+
+#: hacks/config/flow.xml.h:3
 msgid "Flow"
 msgstr "Áramlat"
 
-#: ../hacks/config/flow.xml.h:5
+#: hacks/config/flow.xml.h:5
 msgid "Length of trails"
 msgstr "Nyomvonalak hossza"
 
-#: ../hacks/config/flow.xml.h:13
+#: hacks/config/flow.xml.h:13
 msgid ""
 "Strange attractors formed of flows in a 3D differential equation phase "
 "space. Written by Tim Auckland."
@@ -3708,55 +3981,55 @@ msgstr ""
 "Áramlatokból formálódó furcsa attraktorok háromdimenziós "
 "differenciálegyenlet fázisterében. Írta Tim Auckland."
 
-#: ../hacks/config/flow.xml.h:16
+#: hacks/config/flow.xml.h:16
 msgid "turn on/off bounding box."
-msgstr "határoló doboz ki/be."
+msgstr "határoló doboz be/ki."
 
-#: ../hacks/config/flow.xml.h:17
+#: hacks/config/flow.xml.h:17
 msgid "turn on/off double buffering."
-msgstr "dupla pufferelés használata ki/be."
+msgstr "dupla pufferelés használata be/ki."
 
-#: ../hacks/config/flow.xml.h:18
+#: hacks/config/flow.xml.h:18
 msgid "turn on/off periodic attractors."
-msgstr "periodikus attraktorok ki/be."
+msgstr "periodikus attraktorok be/ki."
 
-#: ../hacks/config/flow.xml.h:19
+#: hacks/config/flow.xml.h:19
 msgid "turn on/off ride in the flow."
-msgstr "az áramlatban való lebegés ki/be."
+msgstr "az áramlatban való lebegés be/ki."
 
-#: ../hacks/config/flow.xml.h:20
+#: hacks/config/flow.xml.h:20
 msgid "turn on/off rotating around attractor."
-msgstr "körbeforgási attraktor ki/be."
+msgstr "körbeforgási attraktor be/ki."
 
-#: ../hacks/config/flow.xml.h:21
+#: hacks/config/flow.xml.h:21
 msgid "turn on/off search for new attractors."
-msgstr "új attraktorok keresése ki/be."
+msgstr "új attraktorok keresése be/ki."
 
-#: ../hacks/config/fluidballs.xml.h:1
+#: hacks/config/fluidballs.xml.h:1
 msgid "      Freefall"
 msgstr "      Szabadesés"
 
-#: ../hacks/config/fluidballs.xml.h:2
+#: hacks/config/fluidballs.xml.h:2
 msgid "Ball Size"
 msgstr "Labdaméret"
 
-#: ../hacks/config/fluidballs.xml.h:4
+#: hacks/config/fluidballs.xml.h:4
 msgid "Clay"
 msgstr "Agyag"
 
-#: ../hacks/config/fluidballs.xml.h:7
+#: hacks/config/fluidballs.xml.h:7
 msgid "FluidBalls"
 msgstr "Folyadéklabdák"
 
-#: ../hacks/config/fluidballs.xml.h:8 ../hacks/config/twang.xml.h:4
+#: hacks/config/fluidballs.xml.h:8 hacks/config/twang.xml.h:4
 msgid "Friction"
 msgstr "Súrlódás"
 
-#: ../hacks/config/fluidballs.xml.h:11
+#: hacks/config/fluidballs.xml.h:11
 msgid "Jupiter"
 msgstr "Jupiter"
 
-#: ../hacks/config/fluidballs.xml.h:14
+#: hacks/config/fluidballs.xml.h:14
 msgid ""
 "Models the physics of bouncing balls, or of particles in a gas or fluid, "
 "depending on the settings. If \"Shake Box\" is selected, then every now and "
@@ -3768,53 +4041,53 @@ msgstr ""
 "időnként meg lesz forgatva (így a lesüllyedt labdák továbbra is mozgásban "
 "maradnak). Írta Peter Birtles és Jamie Zawinski."
 
-#: ../hacks/config/fluidballs.xml.h:15
+#: hacks/config/fluidballs.xml.h:15
 msgid "Rubber"
 msgstr "Gumi"
 
-#: ../hacks/config/fluidballs.xml.h:16
+#: hacks/config/fluidballs.xml.h:16
 msgid "Shake Box"
 msgstr "Doboz összerázása"
 
-#: ../hacks/config/fluidballs.xml.h:22
+#: hacks/config/fluidballs.xml.h:22
 msgid "Various Ball Sizes"
 msgstr "Különböző méretű labdák"
 
-#: ../hacks/config/flurry.xml.h:1
+#: hacks/config/flurry.xml.h:1
 msgid "Binary"
 msgstr "Bináris"
 
-#: ../hacks/config/flurry.xml.h:2
+#: hacks/config/flurry.xml.h:2
 msgid "Classic"
 msgstr "Klasszikus"
 
-#: ../hacks/config/flurry.xml.h:3
+#: hacks/config/flurry.xml.h:3
 msgid "Fire"
 msgstr "Tűz"
 
-#: ../hacks/config/flurry.xml.h:4
+#: hacks/config/flurry.xml.h:4
 msgid "Flurry"
 msgstr "Izgalom"
 
-#: ../hacks/config/flurry.xml.h:5
+#: hacks/config/flurry.xml.h:5
 msgid "Insane"
 msgstr "Őrült"
 
-#: ../hacks/config/flurry.xml.h:6
+#: hacks/config/flurry.xml.h:6
 msgid "Psychedelic"
 msgstr "Pszichedelikus"
 
-#: ../hacks/config/flurry.xml.h:7
+#: hacks/config/flurry.xml.h:7
 msgid "RGB"
 msgstr "RGB"
 
-#: ../hacks/config/flurry.xml.h:8 ../hacks/config/fontglide.xml.h:12
-#: ../hacks/config/jigglypuff.xml.h:13 ../hacks/config/sballs.xml.h:10
-#: ../hacks/config/whirlygig.xml.h:12
+#: hacks/config/flurry.xml.h:8 hacks/config/fontglide.xml.h:12
+#: hacks/config/jigglypuff.xml.h:13 hacks/config/sballs.xml.h:10
+#: hacks/config/whirlygig.xml.h:12
 msgid "Random"
 msgstr "Véletlen"
 
-#: ../hacks/config/flurry.xml.h:10
+#: hacks/config/flurry.xml.h:10
 msgid ""
 "This port of the OSX screensaver of the same name draws a colourful star"
 "(fish)like flurry of particles. xscreensaver port by Tobias Sargeant &lt;"
@@ -3826,11 +4099,11 @@ msgstr ""
 "sargeant@bigpond.com&gt; az eredeti Mac verziót Calum Robinson &lt;"
 "calumr@mac.com&gt; http://homepage.mac.com/calumr készítette."
 
-#: ../hacks/config/flurry.xml.h:11
+#: hacks/config/flurry.xml.h:11
 msgid "Water"
 msgstr "Víz"
 
-#: ../hacks/config/flyingtoasters.xml.h:1
+#: hacks/config/flyingtoasters.xml.h:1
 msgid ""
 "A fleet of 3d space-age jet-powered flying toasters (and toast!) Inspired by "
 "the ancient Berkeley Systems After Dark flying toasters. By Jamie Zawinski "
@@ -3840,83 +4113,85 @@ msgstr ""
 "pirítósok!) flottája. Az ősi Berkeley Systems After Dark repülő "
 "kenyérpirítói ihlették. Írta Jamie Zawinski és Baconmonkey."
 
-#: ../hacks/config/flyingtoasters.xml.h:2
+#: hacks/config/flyingtoasters.xml.h:2
 msgid "Air Speed"
 msgstr "Levegő sebessége"
 
-#: ../hacks/config/flyingtoasters.xml.h:4
+#: hacks/config/flyingtoasters.xml.h:4
 msgid "Chrome Toasters"
 msgstr "Krómozott kenyérpirítók"
 
-#: ../hacks/config/flyingtoasters.xml.h:6
+#: hacks/config/flyingtoasters.xml.h:6
 msgid "Flying Toasters"
 msgstr "Repülő kenyérpirítók"
 
-#: ../hacks/config/flyingtoasters.xml.h:7 ../hacks/config/glslideshow.xml.h:16
-#: ../hacks/config/jigglypuff.xml.h:12 ../hacks/config/juggle.xml.h:7
-#: ../hacks/config/mirrorblob.xml.h:16 ../hacks/config/pipes.xml.h:11
+#: hacks/config/flyingtoasters.xml.h:7 hacks/config/glslideshow.xml.h:17
+#: hacks/config/jigglypuff.xml.h:12 hacks/config/juggle.xml.h:5
+#: hacks/config/mirrorblob.xml.h:16 hacks/config/pipes.xml.h:10
 msgid "None"
 msgstr "Nincs"
 
-#: ../hacks/config/flyingtoasters.xml.h:8
+#: hacks/config/flyingtoasters.xml.h:8
 msgid "Number of Slices"
 msgstr "Szeletek száma"
 
-#: ../hacks/config/flyingtoasters.xml.h:9
+#: hacks/config/flyingtoasters.xml.h:9
 msgid "Number of Toasters"
 msgstr "Kenyérpirítók száma"
 
-#: ../hacks/config/flyingtoasters.xml.h:12
+#: hacks/config/flyingtoasters.xml.h:12
 msgid "Solid Colors"
 msgstr "Homogén színek"
 
-#: ../hacks/config/flyingtoasters.xml.h:13
+#: hacks/config/flyingtoasters.xml.h:13
 msgid "Swarm"
 msgstr "Raj"
 
-#: ../hacks/config/fontglide.xml.h:2
+#: hacks/config/fontglide.xml.h:2
 msgid "Brief"
 msgstr "Rövid"
 
-#: ../hacks/config/fontglide.xml.h:5
+#: hacks/config/fontglide.xml.h:5
 msgid "Font Border Thickness"
 msgstr "Betűk határának vastagsága"
 
-#: ../hacks/config/fontglide.xml.h:6
+#: hacks/config/fontglide.xml.h:6
 msgid "FontGlide"
 msgstr "Beúszó betűk"
 
-#: ../hacks/config/fontglide.xml.h:7
+#: hacks/config/fontglide.xml.h:7
 msgid "Horizontally scrolling text"
 msgstr "Vízszintesen gördülő szöveg"
 
-#: ../hacks/config/fontglide.xml.h:10
+#: hacks/config/fontglide.xml.h:10
 msgid "Pages of text"
 msgstr "Szöveges oldalak"
 
-#: ../hacks/config/fontglide.xml.h:11
+#: hacks/config/fontglide.xml.h:11
 msgid ""
 "Puts text on the screen using large characters that glide in from the edges, "
 "assemble, then disperse. Alternately, it can simply scroll whole sentences "
-"from right to left. By Jamie Zawinski."
+"from right to left. The text can be the output of a program or the contents "
+"of a file or URL, as configured on the \"Advanced\" tab of the main "
+"Screensaver Preferences window. Written Jamie Zawinski."
 msgstr ""
 "A szélekről beúszó, nagy karakterekből összeálló, majd feloszló szöveget "
 "jelenít meg a képernyőn. Vagy egyszerűen képes egész mondatokat jobbról "
-"balra görgetni. Írta Jamie Zawinski."
+"balra görgetni. A szöveg lehet egy program kimenete, vagy egy fájl vagy URL tartalma, ahogyan az a fő Képernyővédő beállításai ablak Bővített fülén be van állítva. Írta Jamie Zawinski."
 
-#: ../hacks/config/fontglide.xml.h:14
+#: hacks/config/fontglide.xml.h:14
 msgid "Text Linger"
 msgstr "Szöveg késleltetése"
 
-#: ../hacks/config/fontglide.xml.h:16
+#: hacks/config/fontglide.xml.h:16
 msgid "Vapor Trails"
 msgstr "Páranyomok"
 
-#: ../hacks/config/forest.xml.h:2 ../hacks/config/glforestfire.xml.h:6
+#: hacks/config/forest.xml.h:2 hacks/config/glforestfire.xml.h:6
 msgid "Forest"
 msgstr "Erdő"
 
-#: ../hacks/config/forest.xml.h:7
+#: hacks/config/forest.xml.h:7
 msgid ""
 "This draws fractal trees. Written by Peter Baumung. Everybody loves "
 "fractals, right?"
@@ -3924,48 +4199,35 @@ msgstr ""
 "Ez fraktál-fákat rajzol. Írta Peter Baumung. Mindenki szereti a fraktálokat, "
 "ugye?"
 
-#: ../hacks/config/fuzzyflakes.xml.h:2
+#: hacks/config/fuzzyflakes.xml.h:2
 msgid "Border Thickness"
 msgstr "Határ vastagsága"
 
-#: ../hacks/config/fuzzyflakes.xml.h:6
-msgid ""
-"Falling colored snowflake/flower shapes. Inspired by the credits of the "
-"anime \"Azumanga Daioh\". Written by Barry Dmytro."
-msgstr ""
-"Hulló, színes hópehely- vagy virágformák. Az \"Azumanga Daioh\" című anime "
-"stáblistájának hatására. Írta Barry Dmytro."
+#: hacks/config/fuzzyflakes.xml.h:6
+msgid "Falling colored snowflake/flower shapes. Written by Barry Dmytro."
+msgstr "Hulló, színes hópehely- vagy virágformák. Írta Barry Dmytro."
 
-#: ../hacks/config/fuzzyflakes.xml.h:9
+#: hacks/config/fuzzyflakes.xml.h:9
 msgid "FuzzyFlakes"
 msgstr "Pelyhek"
 
-#: ../hacks/config/fuzzyflakes.xml.h:11 ../hacks/config/xspirograph.xml.h:4
+#: hacks/config/fuzzyflakes.xml.h:11 hacks/config/xspirograph.xml.h:4
 msgid "Layers"
 msgstr "Rétegek"
 
-#: ../hacks/config/fuzzyflakes.xml.h:14
+#: hacks/config/fuzzyflakes.xml.h:14
 msgid "Random Colors"
 msgstr "Véletlen színek"
 
-#: ../hacks/config/galaxy.xml.h:4
+#: hacks/config/galaxy.xml.h:4
 msgid "Galaxy"
 msgstr "Galaxis"
 
-#: ../hacks/config/galaxy.xml.h:8
+#: hacks/config/galaxy.xml.h:8
 msgid "Rotate Viewpoint"
 msgstr "Nézőpont forgatása"
 
-#: ../hacks/config/galaxy.xml.h:10 ../hacks/config/lisa.xml.h:7
-#: ../hacks/config/lissie.xml.h:8 ../hacks/config/loop.xml.h:6
-#: ../hacks/config/penrose.xml.h:10 ../hacks/config/pong.xml.h:3
-#: ../hacks/config/rotor.xml.h:10 ../hacks/config/rubik.xml.h:8
-#: ../hacks/config/sproingies.xml.h:5 ../hacks/config/wander.xml.h:13
-#: ../hacks/config/worm.xml.h:7
-msgid "Size"
-msgstr "Méret"
-
-#: ../hacks/config/galaxy.xml.h:13
+#: hacks/config/galaxy.xml.h:13
 msgid ""
 "This draws spinning galaxies, which then collide and scatter their stars to "
 "the, uh, four winds or something. Originally an Amiga program by Uli "
@@ -3975,19 +4237,19 @@ msgstr ""
 "csillagaikat a négy égtáj felé vagy valami ilyesmi. Eredetileg egy Amiga "
 "program Uli Siegmundtól."
 
-#: ../hacks/config/gears.xml.h:3
+#: hacks/config/gears.xml.h:3
 msgid "Gears"
 msgstr "Fogaskerekek"
 
-#: ../hacks/config/gears.xml.h:4
+#: hacks/config/gears.xml.h:4
 msgid "Planetary Gear System"
 msgstr "Összekapcsolt fogaskerék-rendszer"
 
-#: ../hacks/config/gears.xml.h:5 ../hacks/config/goop.xml.h:9
+#: hacks/config/gears.xml.h:5 hacks/config/goop.xml.h:9
 msgid "Rotational Speed"
 msgstr "Forgás sebessége"
 
-#: ../hacks/config/gears.xml.h:9
+#: hacks/config/gears.xml.h:9
 msgid ""
 "This draws sets of turning, interlocking gears, rotating in three "
 "dimensions. Another GL hack, by Danny Sung, Brian Paul, Ed Mackey, and Jamie "
@@ -3997,16 +4259,15 @@ msgstr ""
 "rajzol. Egy újabb GL hack, írta Danny Sung, Brian Paul, Ed Mackey és Jamie "
 "Zawinski."
 
-#: ../hacks/config/gears.xml.h:10
+#: hacks/config/gears.xml.h:10
 msgid "Three Gear System"
 msgstr "Három fogaskerékből álló rendszer"
 
-#: ../hacks/config/gflux.xml.h:2
+#: hacks/config/gflux.xml.h:2
 msgid "Checkerboard"
 msgstr "Sakktábla"
 
-#. #### -zoom [1.0]
-#: ../hacks/config/gflux.xml.h:6
+#: hacks/config/gflux.xml.h:5
 msgid ""
 "Draws a rippling waves on a rotating wireframe grid, using GL. Written by "
 "Josiah Pease."
@@ -4014,43 +4275,43 @@ msgstr ""
 "Fodrozódó hullámokat rajzol egy forgó drótváz-rácson, GL használatával. Írta "
 "Josiah Pease."
 
-#: ../hacks/config/gflux.xml.h:8
+#: hacks/config/gflux.xml.h:7
 msgid "Flat Lighting"
 msgstr "Sima világítás"
 
-#: ../hacks/config/gflux.xml.h:9
+#: hacks/config/gflux.xml.h:8
 msgid "GFlux"
 msgstr "GFlux"
 
-#: ../hacks/config/gflux.xml.h:10
+#: hacks/config/gflux.xml.h:9
 msgid "Mesh Density"
 msgstr "Háló sűrűsége"
 
-#: ../hacks/config/gflux.xml.h:11
+#: hacks/config/gflux.xml.h:10
 msgid "Screen Image"
 msgstr "Képernyőkép"
 
-#: ../hacks/config/gflux.xml.h:15 ../hacks/config/interference.xml.h:21
+#: hacks/config/gflux.xml.h:14 hacks/config/interference.xml.h:21
 msgid "Wave Speed"
 msgstr "Hullám sebessége"
 
-#: ../hacks/config/gflux.xml.h:16 ../hacks/config/glmatrix.xml.h:20
+#: hacks/config/gflux.xml.h:15 hacks/config/glmatrix.xml.h:20
 msgid "Waves"
 msgstr "Hullámok"
 
-#: ../hacks/config/gflux.xml.h:17
+#: hacks/config/gflux.xml.h:16
 msgid "Wire Mesh"
 msgstr "Drótháló"
 
-#: ../hacks/config/glblur.xml.h:1
+#: hacks/config/glblur.xml.h:1
 msgid "Blur Smoothness"
 msgstr "Elmosás folyamatossága"
 
-#: ../hacks/config/glblur.xml.h:5
+#: hacks/config/glblur.xml.h:5
 msgid "GLBlur"
 msgstr "GL elmosás"
 
-#: ../hacks/config/glblur.xml.h:18
+#: hacks/config/glblur.xml.h:18
 msgid ""
 "This program draws a box and a few line segments, and generates a radial "
 "blur outward from it. This creates flowing field effects. This is done by "
@@ -4067,12 +4328,12 @@ msgstr ""
 "bufferen. Mint ilyen, meglehetősen grafikaigényes: ne próbálja hardveresen "
 "gyorsított OpenGL textúratámogatás nélkül futtatni, ez károsíthatja a gépét."
 
-#: ../hacks/config/gleidescope.xml.h:2 ../hacks/config/glslideshow.xml.h:6
-#: ../hacks/config/mirrorblob.xml.h:3
+#: hacks/config/gleidescope.xml.h:2 hacks/config/glslideshow.xml.h:6
+#: hacks/config/mirrorblob.xml.h:3
 msgid "5 Minutes"
 msgstr "5 perc"
 
-#: ../hacks/config/gleidescope.xml.h:3
+#: hacks/config/gleidescope.xml.h:3
 msgid ""
 "An OpenGL kaleidescope that operates on your desktop image, or on image "
 "files loaded from disk. Written by andrew dean."
@@ -4080,36 +4341,31 @@ msgstr ""
 "OpenGL kaleidoszkóp, ami az asztala képén vagy a lemezről betöltött képeken "
 "operál. Írta Andrew Dean."
 
-#: ../hacks/config/gleidescope.xml.h:4
+#: hacks/config/gleidescope.xml.h:4
 msgid "Gleidescope"
 msgstr "GL kaleidoszkóp"
 
-#: ../hacks/config/gleidescope.xml.h:5
+#: hacks/config/gleidescope.xml.h:5
 msgid "Image Duration"
 msgstr "Kép időtartama"
 
-#: ../hacks/config/gleidescope.xml.h:6
+#: hacks/config/gleidescope.xml.h:6
 msgid "Image file"
 msgstr "Képfájl"
 
-#: ../hacks/config/gleidescope.xml.h:8
+#: hacks/config/gleidescope.xml.h:8
 msgid "Move"
 msgstr "Mozgatás"
 
-#: ../hacks/config/gleidescope.xml.h:11
+#: hacks/config/gleidescope.xml.h:11
 msgid "Size of tube"
 msgstr "A cső mérete"
 
-#: ../hacks/config/gleidescope.xml.h:13 ../hacks/config/hyperball.xml.h:16
-#: ../hacks/config/hypercube.xml.h:17 ../hacks/config/zoom.xml.h:8
-msgid "Zoom"
-msgstr "Nagyítás"
-
-#: ../hacks/config/glforestfire.xml.h:2
+#: hacks/config/glforestfire.xml.h:2
 msgid "Desert"
 msgstr "Sivatag"
 
-#: ../hacks/config/glforestfire.xml.h:3
+#: hacks/config/glforestfire.xml.h:3
 msgid ""
 "Draws an animation of sprinkling fire-like 3D triangles in a landscape "
 "filled with trees. Requires OpenGL, and a machine with fast hardware support "
@@ -4121,39 +4377,39 @@ msgstr ""
 "gép szükséges hozzá. Írta Eric Lassauge &lt;lassauge@users.sourceforge."
 "net&gt;."
 
-#: ../hacks/config/glforestfire.xml.h:5 ../hacks/config/glmatrix.xml.h:9
+#: hacks/config/glforestfire.xml.h:5 hacks/config/glmatrix.xml.h:9
 msgid "Fog"
 msgstr "Köd"
 
-#: ../hacks/config/glforestfire.xml.h:7
+#: hacks/config/glforestfire.xml.h:7
 msgid "GLForestFire"
 msgstr "GL erdőtűz"
 
-#: ../hacks/config/glforestfire.xml.h:8
+#: hacks/config/glforestfire.xml.h:8
 msgid "Huge Fire"
 msgstr "Óriási tűz"
 
-#: ../hacks/config/glforestfire.xml.h:9
+#: hacks/config/glforestfire.xml.h:9
 msgid "No shadow"
 msgstr "Árnyékok ki"
 
-#: ../hacks/config/glforestfire.xml.h:11
+#: hacks/config/glforestfire.xml.h:11
 msgid "Number of trees"
 msgstr "Fák száma"
 
-#: ../hacks/config/glforestfire.xml.h:12
+#: hacks/config/glforestfire.xml.h:12
 msgid "Rain"
 msgstr "Eső"
 
-#: ../hacks/config/glforestfire.xml.h:17
+#: hacks/config/glforestfire.xml.h:17
 msgid "Track mouse"
 msgstr "Egér követése"
 
-#: ../hacks/config/glknots.xml.h:4
+#: hacks/config/glknots.xml.h:4
 msgid "GLKnots"
 msgstr "GL csomók"
 
-#: ../hacks/config/glknots.xml.h:5
+#: hacks/config/glknots.xml.h:5
 msgid ""
 "Generates some twisting 3d knot patterns. Spins 'em around. Written by Jamie "
 "Zawinski."
@@ -4161,37 +4417,37 @@ msgstr ""
 "Kígyózó, három dimenziós csomómintákat generál és körbeforgatja azokat. Írta "
 "Jamie Zawinski."
 
-#: ../hacks/config/glknots.xml.h:7 ../hacks/config/lavalite.xml.h:17
-#: ../hacks/config/spheremonics.xml.h:9
+#: hacks/config/glknots.xml.h:7 hacks/config/lavalite.xml.h:17
+#: hacks/config/spheremonics.xml.h:9
 msgid "Resolution"
 msgstr "Felbontás"
 
-#: ../hacks/config/glknots.xml.h:15
+#: hacks/config/glknots.xml.h:15
 msgid "Segmented"
 msgstr "Darabos"
 
-#: ../hacks/config/glknots.xml.h:18 ../hacks/config/lavalite.xml.h:28
-#: ../hacks/config/xmountains.xml.h:25
+#: hacks/config/glknots.xml.h:18 hacks/config/lavalite.xml.h:28
+#: hacks/config/xmountains.xml.h:25
 msgid "Smooth"
 msgstr "Sima"
 
-#: ../hacks/config/glmatrix.xml.h:2 ../hacks/config/xmatrix.xml.h:1
+#: hacks/config/glmatrix.xml.h:2 hacks/config/xmatrix.xml.h:1
 msgid "Binary Encoding"
 msgstr "Bináris kódolás"
 
-#: ../hacks/config/glmatrix.xml.h:4
+#: hacks/config/glmatrix.xml.h:4
 msgid "Draw Glyphs"
 msgstr "Karakterek rajzolása"
 
-#: ../hacks/config/glmatrix.xml.h:5
+#: hacks/config/glmatrix.xml.h:5
 msgid "Draw Outlines"
 msgstr "Körvonalak rajzolása"
 
-#: ../hacks/config/glmatrix.xml.h:6
+#: hacks/config/glmatrix.xml.h:6
 msgid "Draw Solid Boxes"
 msgstr "Egyszínű négyzetek rajzolása"
 
-#: ../hacks/config/glmatrix.xml.h:7
+#: hacks/config/glmatrix.xml.h:7
 msgid ""
 "Draws 3D dropping characters similar to what is seen in the title sequence "
 "of \"The Matrix\". See also \"xmatrix\" for a 2D rendering of the similar "
@@ -4202,35 +4458,35 @@ msgstr ""
 "láthatóhoz. Lásd még az \"xmátrix\"-ot a filmbeli számítógépek képernyőin "
 "megjelenő kétdimenziós hatásért. Írta Jamie Zawinski."
 
-#: ../hacks/config/glmatrix.xml.h:10
+#: hacks/config/glmatrix.xml.h:10
 msgid "GLMatrix"
 msgstr "GL mátrix"
 
-#: ../hacks/config/glmatrix.xml.h:11 ../hacks/config/xmatrix.xml.h:7
+#: hacks/config/glmatrix.xml.h:11 hacks/config/xmatrix.xml.h:7
 msgid "Genetic Encoding"
 msgstr "Genetikai kódolás"
 
-#: ../hacks/config/glmatrix.xml.h:12
+#: hacks/config/glmatrix.xml.h:12
 msgid "Glyph Density"
 msgstr "Karaktersűrűség"
 
-#: ../hacks/config/glmatrix.xml.h:13
+#: hacks/config/glmatrix.xml.h:13
 msgid "Glyph Speed"
 msgstr "Karakterek sebessége"
 
-#: ../hacks/config/glmatrix.xml.h:14 ../hacks/config/xmatrix.xml.h:8
+#: hacks/config/glmatrix.xml.h:14 hacks/config/xmatrix.xml.h:8
 msgid "Hexadecimal Encoding"
 msgstr "Hexadecimális kódolás"
 
-#: ../hacks/config/glmatrix.xml.h:15 ../hacks/config/xmatrix.xml.h:11
+#: hacks/config/glmatrix.xml.h:15 hacks/config/xmatrix.xml.h:11
 msgid "Matrix Encoding"
 msgstr "Mátrix kódolás"
 
-#: ../hacks/config/glmatrix.xml.h:16
+#: hacks/config/glmatrix.xml.h:16
 msgid "Panning"
 msgstr "Forgatás"
 
-#: ../hacks/config/glplanet.xml.h:1
+#: hacks/config/glplanet.xml.h:1
 msgid ""
 "Draws a planet bouncing around in space. Written by David Konerding. The "
 "built-in image is a map of the earth (extracted from `xearth'), but you can "
@@ -4241,51 +4497,55 @@ msgstr ""
 "a Föld képe (Az xearth-ből), de tetszőleges mintázat ráhúzható a gömbre, "
 "például az \"ssystem\"-mel érkező bolygóképek."
 
-#: ../hacks/config/glplanet.xml.h:3
+#: hacks/config/glplanet.xml.h:3
 msgid "GLPlanet"
 msgstr "GL bolygó"
 
-#: ../hacks/config/glplanet.xml.h:4
+#: hacks/config/glplanet.xml.h:4
 msgid "Image File"
 msgstr "Képfájl"
 
-#: ../hacks/config/glplanet.xml.h:5
+#: hacks/config/glplanet.xml.h:5
 msgid "Roll"
 msgstr "Görgetés"
 
-#: ../hacks/config/glslideshow.xml.h:4 ../hacks/config/rd-bomb.xml.h:5
-#: ../hacks/config/xplanet.xml.h:4
+#: hacks/config/glslideshow.xml.h:4 hacks/config/rd-bomb.xml.h:5
+#: hacks/config/substrate.xml.h:4 hacks/config/xplanet.xml.h:4
 #, no-c-format
 msgid "100%"
 msgstr "100%"
 
-#: ../hacks/config/glslideshow.xml.h:5 ../hacks/config/glsnake.xml.h:2
-#: ../hacks/config/mirrorblob.xml.h:2 ../hacks/config/penrose.xml.h:2
+#: hacks/config/glslideshow.xml.h:5 hacks/config/glsnake.xml.h:2
+#: hacks/config/mirrorblob.xml.h:2 hacks/config/penrose.xml.h:2
 msgid "30 Seconds"
 msgstr "30 másodperc"
 
-#: ../hacks/config/glslideshow.xml.h:8
+#: hacks/config/glslideshow.xml.h:8
 #, no-c-format
 msgid "50%"
 msgstr "50%"
 
-#: ../hacks/config/glslideshow.xml.h:9
+#: hacks/config/glslideshow.xml.h:9
 msgid "Always show at least this much of the image:"
 msgstr "Mindig mutasson legalább ennyit a képből:"
 
-#: ../hacks/config/glslideshow.xml.h:10 ../hacks/config/mirrorblob.xml.h:6
+#: hacks/config/glslideshow.xml.h:10 hacks/config/mirrorblob.xml.h:6
 msgid "Crossfade Duration:"
 msgstr "Áttűnés időtartama:"
 
-#: ../hacks/config/glslideshow.xml.h:11
+#: hacks/config/glslideshow.xml.h:11
 msgid "Frame Rate:"
 msgstr "Képkockaráta:"
 
-#: ../hacks/config/glslideshow.xml.h:12
+#: hacks/config/glslideshow.xml.h:12
 msgid "GLSlideshow"
 msgstr "GL diavetítés"
 
-#: ../hacks/config/glslideshow.xml.h:14
+#: hacks/config/glslideshow.xml.h:14
+msgid "Letterbox"
+msgstr "Levélszekrény"
+
+#: hacks/config/glslideshow.xml.h:15
 msgid ""
 "Loads a random sequence of images and smoothly scans and zooms around in "
 "each, fading from pan to pan. To tell it where to find the images to "
@@ -4298,32 +4558,24 @@ msgid ""
 msgstr ""
 "Képek egy véletlen sorozatát tölti be, majd mindegyiket egyenletesen "
 "végigpásztázza és nagyítja, képről képre. A képek helyét a Képernyővédő "
-"beállításai ablak bővített lapján adhatja meg. Válassza ki a \"Véletlenszerű "
+"beállításai ablak \"bővített\" lapján adhatja meg. Válassza ki a \"Véletlenszerű "
 "kép választása\" négyzetet és adja meg a képek könyvtárát az alatta lévő "
 "szövegmezőben. Ennek a programnak a működéséhez jó videokártya szükséges, "
 "amely támogatja nagy képek használatát. Írta Jamie Zawinski és Mike Oliphant."
 
-#: ../hacks/config/glslideshow.xml.h:17
+#: hacks/config/glslideshow.xml.h:18
 msgid "Pan/Zoom Duration:"
 msgstr "Görgetés/nagyítás időtartama:"
 
-#: ../hacks/config/glslideshow.xml.h:19
-msgid "Show Image Titles"
-msgstr "Képek neveinek mutatása"
-
-#: ../hacks/config/glslideshow.xml.h:20 ../hacks/config/mirrorblob.xml.h:22
-msgid "Time until loading a new image:"
-msgstr "Új kép betöltése ennyi idő után:"
-
-#: ../hacks/config/glsnake.xml.h:1 ../hacks/config/lavalite.xml.h:1
+#: hacks/config/glsnake.xml.h:1 hacks/config/lavalite.xml.h:1
 msgid "1"
 msgstr "1"
 
-#: ../hacks/config/glsnake.xml.h:3
+#: hacks/config/glsnake.xml.h:3
 msgid "Angular Velocity"
 msgstr "Forgás sebessége"
 
-#: ../hacks/config/glsnake.xml.h:4
+#: hacks/config/glsnake.xml.h:4
 msgid ""
 "Draws a simulation of the Rubik's Snake puzzle. Written by Jamie Wilkinson, "
 "Andrew Bennetts, and Peter Aylett."
@@ -4331,35 +4583,39 @@ msgstr ""
 "Rubik kígyó-kirakójának szimulációját rajzolja meg. Írta Jamie Wilkinson, "
 "Andrew Bennetts és Peter Aylett."
 
-#: ../hacks/config/glsnake.xml.h:7
+#: hacks/config/glsnake.xml.h:7
 msgid "GlSnake"
 msgstr "GL kígyó"
 
-#: ../hacks/config/glsnake.xml.h:8
+#: hacks/config/glsnake.xml.h:8
 msgid "Loose"
 msgstr "Bő"
 
-#: ../hacks/config/glsnake.xml.h:9
+#: hacks/config/glsnake.xml.h:9
 msgid "Packing"
 msgstr "Csomagolás"
 
-#: ../hacks/config/glsnake.xml.h:11
+#: hacks/config/glsnake.xml.h:11
 msgid "Show Titles"
 msgstr "Címek mutatása"
 
-#: ../hacks/config/glsnake.xml.h:14
+#: hacks/config/glsnake.xml.h:14
 msgid "Tight"
 msgstr "Szűk"
 
-#: ../hacks/config/glsnake.xml.h:16
+#: hacks/config/glsnake.xml.h:16
 msgid "Y Angular Velocity"
 msgstr "Y irányú forgás sebessége"
 
-#: ../hacks/config/glsnake.xml.h:17
+#: hacks/config/glsnake.xml.h:17
 msgid "Z Angular Velocity"
 msgstr "Z irányú forgás sebessége"
 
-#: ../hacks/config/gltext.xml.h:1
+#: hacks/config/gltext.xml.h:1
+msgid "Always face front"
+msgstr "Mindig előre nézzen"
+
+#: hacks/config/gltext.xml.h:2
 msgid ""
 "Displays a few lines of text spinning around in a solid 3D font. Written by "
 "Jamie Zawinski."
@@ -4367,20 +4623,27 @@ msgstr ""
 "Néhány sornyi körbeforgó szöveget jelenít meg, egyszínű 3D betűkkel. Írta "
 "Jamie Zawinski."
 
-#: ../hacks/config/gltext.xml.h:4
+#: hacks/config/gltext.xml.h:5
 msgid "GLText"
 msgstr "GL szöveg"
 
-#: ../hacks/config/gltext.xml.h:16 ../hacks/config/noseguy.xml.h:6
+#: hacks/config/gltext.xml.h:6
+msgid "Program"
+msgstr "Program"
+
+#: hacks/config/gltext.xml.h:18
+msgid "Spin all the way around"
+msgstr "Végig pörögjön körbe"
+
+#: hacks/config/gltext.xml.h:19 hacks/config/noseguy.xml.h:5
 msgid "Text"
 msgstr "Szöveg"
 
-#: ../hacks/config/goban.xml.h:1
+#: hacks/config/goban.xml.h:1
 msgid "Goban"
 msgstr "Goban"
 
-#. #### write me
-#: ../hacks/config/goban.xml.h:3
+#: hacks/config/goban.xml.h:2
 msgid ""
 "Replays historical games of go (aka wei-chi and baduk) on the screen. By "
 "Scott Draves. You can find it at &lt;http://www.draves.org/goban/&gt;."
@@ -4388,35 +4651,35 @@ msgstr ""
 "Néhány híres go játszmát játszik újra a képernyőn. Írta Scott Draves. A "
 "program honlapjának címe: &lt;http://www.draves.org/goban/&gt;."
 
-#: ../hacks/config/goop.xml.h:1
+#: hacks/config/goop.xml.h:1
 msgid "Additive Colors (reflected light)"
 msgstr "Additív színek (visszavert fény)"
 
-#: ../hacks/config/goop.xml.h:2
+#: hacks/config/goop.xml.h:2
 msgid "Blob Count"
 msgstr "Foltok száma"
 
-#: ../hacks/config/goop.xml.h:3
+#: hacks/config/goop.xml.h:3
 msgid "Elasticity"
 msgstr "Rugalmasság"
 
-#: ../hacks/config/goop.xml.h:5
+#: hacks/config/goop.xml.h:5
 msgid "Goop"
 msgstr "Goop"
 
-#: ../hacks/config/goop.xml.h:8
+#: hacks/config/goop.xml.h:8
 msgid "Opaque Blobs"
 msgstr "Átlátszatlan foltok"
 
-#: ../hacks/config/goop.xml.h:12
+#: hacks/config/goop.xml.h:12
 msgid "Speed Limit"
 msgstr "Sebességkorlát"
 
-#: ../hacks/config/goop.xml.h:13
+#: hacks/config/goop.xml.h:13
 msgid "Subtractive Colors (transmitted light)"
 msgstr "Színek kivonása (áteresztett fény)"
 
-#: ../hacks/config/goop.xml.h:14
+#: hacks/config/goop.xml.h:14
 msgid ""
 "This draws set of animating, transparent, amoeba-like blobs. The blobs "
 "change shape as they wander around the screen, and they are translucent, so "
@@ -4433,27 +4696,27 @@ msgstr ""
 "ugyanezt a hatást éri el több réteg összepréselt műanyag és a köztük lévő "
 "színes olaj segítségével. Írta Jamie Zawinski."
 
-#: ../hacks/config/goop.xml.h:15
+#: hacks/config/goop.xml.h:15
 msgid "Transparent Blobs"
 msgstr "Átlátszó foltok"
 
-#: ../hacks/config/goop.xml.h:16
+#: hacks/config/goop.xml.h:16
 msgid "XOR Blobs"
 msgstr "XOR foltok"
 
-#: ../hacks/config/grav.xml.h:3
+#: hacks/config/grav.xml.h:3
 msgid "Grav"
 msgstr "Grav"
 
-#: ../hacks/config/grav.xml.h:6
+#: hacks/config/grav.xml.h:6
 msgid "Object Trails"
 msgstr "Objektumnyomok"
 
-#: ../hacks/config/grav.xml.h:7
+#: hacks/config/grav.xml.h:7
 msgid "Orbital Decay"
 msgstr "Pályavonal-lecsengés"
 
-#: ../hacks/config/grav.xml.h:10
+#: hacks/config/grav.xml.h:10
 msgid ""
 "This program draws a simple orbital simulation. If you turn on trails, it "
 "looks kind of like a cloud-chamber photograph. Written by Greg Bowering."
@@ -4462,29 +4725,29 @@ msgstr ""
 "objektumnyomokat, akkor a kép úgy fog kinézni, mint egy ködkamra-felvétel. "
 "Írta Greg Bowering."
 
-#: ../hacks/config/greynetic.xml.h:2
+#: hacks/config/greynetic.xml.h:2
 msgid "Greynetic"
 msgstr "Greynetic"
 
-#: ../hacks/config/greynetic.xml.h:5
+#: hacks/config/greynetic.xml.h:5
 msgid "This draws random colored and stippled rectangles. Written by Jamie Zawinski."
 msgstr ""
 "Ez színezett és pontozott négyzeteket rajzol véletlenszerűen. Írta Jamie "
 "Zawinski."
 
-#: ../hacks/config/halftone.xml.h:1
+#: hacks/config/halftone.xml.h:1
 msgid "Delay (Large = low cpu load)"
 msgstr "Késleltetés (Nagy = alacsony processzorterhelés)"
 
-#: ../hacks/config/halftone.xml.h:2
+#: hacks/config/halftone.xml.h:2
 msgid "Dot fill factor"
 msgstr "Pont-kitöltési faktor"
 
-#: ../hacks/config/halftone.xml.h:3
+#: hacks/config/halftone.xml.h:3
 msgid "Dot size"
 msgstr "Pontok mérete"
 
-#: ../hacks/config/halftone.xml.h:4
+#: hacks/config/halftone.xml.h:4
 msgid ""
 "Draws the gravity force in each point on the screen seen through a halftone "
 "dot pattern. The gravity force is calculated from a set of moving mass "
@@ -4496,52 +4759,51 @@ msgstr ""
 "kiszámítva. Távolabbról nézve a legszebb a hatás. Írta: Peter Jaric &lt;"
 "<peter@jaric.org>&gt;."
 
-#: ../hacks/config/halftone.xml.h:5
+#: hacks/config/halftone.xml.h:5
 msgid "Gravity points"
 msgstr "Gravitációs pontok"
 
-#: ../hacks/config/halftone.xml.h:6
+#: hacks/config/halftone.xml.h:6
 msgid "Halftone"
 msgstr "Féltónus"
 
-#: ../hacks/config/halftone.xml.h:10
+#: hacks/config/halftone.xml.h:10
 msgid "Maximum mass"
 msgstr "Maximális tömeg"
 
-#: ../hacks/config/halftone.xml.h:11
+#: hacks/config/halftone.xml.h:11
 msgid "Maximum speed"
 msgstr "Maximális sebesség"
 
-#: ../hacks/config/halftone.xml.h:12
+#: hacks/config/halftone.xml.h:12
 msgid "Minimum mass"
 msgstr "Minimális tömeg"
 
-#: ../hacks/config/halftone.xml.h:13
+#: hacks/config/halftone.xml.h:13
 msgid "Minimum speed"
 msgstr "Minimális sebesség"
 
-#: ../hacks/config/halo.xml.h:1
+#: hacks/config/halo.xml.h:1
 msgid "Animate Circles"
 msgstr "Animált körök"
 
-#: ../hacks/config/halo.xml.h:3
+#: hacks/config/halo.xml.h:3
 msgid "Halo"
 msgstr "Halo"
 
-#: ../hacks/config/halo.xml.h:5
+#: hacks/config/halo.xml.h:5
 msgid "Number of Circles"
 msgstr "Körök száma"
 
-#: ../hacks/config/halo.xml.h:7
+#: hacks/config/halo.xml.h:7
 msgid "Ramp Mode"
 msgstr "Rámpa-mód"
 
-#: ../hacks/config/halo.xml.h:9
+#: hacks/config/halo.xml.h:9
 msgid "Seuss Mode"
 msgstr "Seuss-mód"
 
-#. #### -no-cycle
-#: ../hacks/config/halo.xml.h:13
+#: hacks/config/halo.xml.h:12
 msgid ""
 "This draws trippy psychedelic circular patterns that hurt to look at. It can "
 "also animate the control-points, but that takes a lot of CPU and bandwidth. "
@@ -4551,65 +4813,65 @@ msgstr ""
 "A vezérlőpontok animálhatók, de ez gyors CPU-t és nagy sávszélességet "
 "igényel. Írta Jamie Zawinski."
 
-#: ../hacks/config/helix.xml.h:4
+#: hacks/config/helix.xml.h:4
 msgid "Helix"
 msgstr "Spirál"
 
-#: ../hacks/config/helix.xml.h:5
+#: hacks/config/helix.xml.h:5
 msgid ""
 "This repeatedly generates spirally string-art-ish patterns. Written by Jamie "
 "Zawinski."
 msgstr "Spirális drótmintákat generál. Írta Jamie Zawinski."
 
-#: ../hacks/config/hopalong.xml.h:3
+#: hacks/config/hopalong.xml.h:3
 msgid "EJK1"
 msgstr "EJK1"
 
-#: ../hacks/config/hopalong.xml.h:4
+#: hacks/config/hopalong.xml.h:4
 msgid "EJK2"
 msgstr "EJK2"
 
-#: ../hacks/config/hopalong.xml.h:5
+#: hacks/config/hopalong.xml.h:5
 msgid "EJK3"
 msgstr "EJK3"
 
-#: ../hacks/config/hopalong.xml.h:6
+#: hacks/config/hopalong.xml.h:6
 msgid "EJK4"
 msgstr "EJK4"
 
-#: ../hacks/config/hopalong.xml.h:7
+#: hacks/config/hopalong.xml.h:7
 msgid "EJK5"
 msgstr "EJK5"
 
-#: ../hacks/config/hopalong.xml.h:8
+#: hacks/config/hopalong.xml.h:8
 msgid "EJK6"
 msgstr "EJK6"
 
-#: ../hacks/config/hopalong.xml.h:11
+#: hacks/config/hopalong.xml.h:11
 msgid "Hopalong"
 msgstr "Hopalong"
 
-#: ../hacks/config/hopalong.xml.h:12
+#: hacks/config/hopalong.xml.h:12
 msgid "Jong"
 msgstr "Jong"
 
-#: ../hacks/config/hopalong.xml.h:16
+#: hacks/config/hopalong.xml.h:16
 msgid "Martin"
 msgstr "Martin"
 
-#: ../hacks/config/hopalong.xml.h:18
+#: hacks/config/hopalong.xml.h:18
 msgid "Popcorn"
 msgstr "Pattogatott kukorica"
 
-#: ../hacks/config/hopalong.xml.h:19
+#: hacks/config/hopalong.xml.h:19
 msgid "RR"
 msgstr "RR"
 
-#: ../hacks/config/hopalong.xml.h:20
+#: hacks/config/hopalong.xml.h:20
 msgid "Sine"
 msgstr "Szinusz"
 
-#: ../hacks/config/hopalong.xml.h:24
+#: hacks/config/hopalong.xml.h:24
 msgid ""
 "This draws lacy fractal patterns, based on iteration in the imaginary plane, "
 "from a 1986 Scientific American article. Mostly written by Patrick Naughton."
@@ -4618,11 +4880,11 @@ msgstr ""
 "iteráción alapul. Az algoritmus egy 1986-os Scientific American cikkből "
 "származik. A program nagyrészt Patrick Naughton munkája."
 
-#: ../hacks/config/hyperball.xml.h:4
+#: hacks/config/hyperball.xml.h:4
 msgid "Hyperball"
 msgstr "Hiperlabda"
 
-#: ../hacks/config/hyperball.xml.h:5
+#: hacks/config/hyperball.xml.h:5
 msgid ""
 "Hyperball is to hypercube as dodecahedron is to cube: this displays a 2D "
 "projection of the sequence of 3D objects which are the projections of the 4D "
@@ -4636,36 +4898,35 @@ msgstr ""
 "ez egy \"120 oldalú politóp\". Írta Joe Keane. Lásd még a \"polytopes\" "
 "képernyővédőt ennek egy sokkal általánosabb, OpenGL-t használó verziójáért."
 
-#: ../hacks/config/hyperball.xml.h:10 ../hacks/config/hypercube.xml.h:11
+#: hacks/config/hyperball.xml.h:10 hacks/config/hypercube.xml.h:10
 msgid "XW Rotation"
 msgstr "XW forgatás"
 
-#: ../hacks/config/hyperball.xml.h:11 ../hacks/config/hypercube.xml.h:12
+#: hacks/config/hyperball.xml.h:11 hacks/config/hypercube.xml.h:11
 msgid "XY Rotation"
 msgstr "XY forgatás"
 
-#: ../hacks/config/hyperball.xml.h:12 ../hacks/config/hypercube.xml.h:13
+#: hacks/config/hyperball.xml.h:12 hacks/config/hypercube.xml.h:12
 msgid "XZ Rotation"
 msgstr "XZ forgatás"
 
-#: ../hacks/config/hyperball.xml.h:13 ../hacks/config/hypercube.xml.h:14
+#: hacks/config/hyperball.xml.h:13 hacks/config/hypercube.xml.h:13
 msgid "YW Rotation"
 msgstr "YW forgatás"
 
-#: ../hacks/config/hyperball.xml.h:14 ../hacks/config/hypercube.xml.h:15
+#: hacks/config/hyperball.xml.h:14 hacks/config/hypercube.xml.h:14
 msgid "YZ Rotation"
 msgstr "YZ forgatás"
 
-#: ../hacks/config/hyperball.xml.h:15 ../hacks/config/hypercube.xml.h:16
+#: hacks/config/hyperball.xml.h:15 hacks/config/hypercube.xml.h:15
 msgid "ZW Rotation"
 msgstr "ZW forgatás"
 
-#: ../hacks/config/hypercube.xml.h:4
+#: hacks/config/hypercube.xml.h:4
 msgid "Hypercube"
 msgstr "Hiperkocka"
 
-#. #### -color7 [#00FFD0]
-#: ../hacks/config/hypercube.xml.h:10
+#: hacks/config/hypercube.xml.h:9
 msgid ""
 "This displays 2D projections of the sequence of 3D objects which are the "
 "projections of the 4D analog to the cube: as a square is composed of four "
@@ -4687,56 +4948,56 @@ msgstr ""
 "Fritz Mueller és Jamie Zawinski. Lásd még a \"polytopes\" képernyővédőt "
 "ennek egy sokkal általánosabb, OpenGL-t használó verziójáért."
 
-#: ../hacks/config/hypertorus.xml.h:1 ../hacks/config/polytopes.xml.h:1
+#: hacks/config/hypertorus.xml.h:1 hacks/config/polytopes.xml.h:1
 msgid "-4.0"
 msgstr "-4.0"
 
-#: ../hacks/config/hypertorus.xml.h:2 ../hacks/config/polytopes.xml.h:5
+#: hacks/config/hypertorus.xml.h:2 hacks/config/polytopes.xml.h:5
 msgid "4.0"
 msgstr "4.0"
 
-#: ../hacks/config/hypertorus.xml.h:3
+#: hacks/config/hypertorus.xml.h:3
 msgid "4D Hypertorus"
 msgstr "4D Hipertórusz"
 
-#: ../hacks/config/hypertorus.xml.h:4
+#: hacks/config/hypertorus.xml.h:4
 msgid "Color Wheel"
 msgstr "Színkerék"
 
-#: ../hacks/config/hypertorus.xml.h:5 ../hacks/config/polytopes.xml.h:10
+#: hacks/config/hypertorus.xml.h:5 hacks/config/polytopes.xml.h:10
 msgid "Display Speed"
 msgstr "Megjelenítés sebessége"
 
-#: ../hacks/config/hypertorus.xml.h:7 ../hacks/config/polytopes.xml.h:12
+#: hacks/config/hypertorus.xml.h:7 hacks/config/polytopes.xml.h:12
 msgid "Orthographic 3d"
 msgstr "Ortografikus 3d"
 
-#: ../hacks/config/hypertorus.xml.h:8 ../hacks/config/polytopes.xml.h:13
+#: hacks/config/hypertorus.xml.h:8 hacks/config/polytopes.xml.h:13
 msgid "Orthographic 4d"
 msgstr "Ortografikus 4d"
 
-#: ../hacks/config/hypertorus.xml.h:9 ../hacks/config/polytopes.xml.h:14
+#: hacks/config/hypertorus.xml.h:9 hacks/config/polytopes.xml.h:14
 msgid "Perspective 3d"
 msgstr "Perspektíva 3d"
 
-#: ../hacks/config/hypertorus.xml.h:10 ../hacks/config/polytopes.xml.h:15
+#: hacks/config/hypertorus.xml.h:10 hacks/config/polytopes.xml.h:15
 msgid "Perspective 4d"
 msgstr "Perspektíva 4d"
 
-#: ../hacks/config/hypertorus.xml.h:11
+#: hacks/config/hypertorus.xml.h:11
 msgid "See-Through Bands"
 msgstr "Átlátszó gyűrűk"
 
-#: ../hacks/config/hypertorus.xml.h:14
+#: hacks/config/hypertorus.xml.h:14
 msgid "Solid Object"
 msgstr "Egyszínű objektum"
 
-#: ../hacks/config/hypertorus.xml.h:15 ../hacks/config/mirrorblob.xml.h:20
-#: ../hacks/config/polytopes.xml.h:21 ../hacks/config/pulsar.xml.h:16
+#: hacks/config/hypertorus.xml.h:15 hacks/config/mirrorblob.xml.h:20
+#: hacks/config/polytopes.xml.h:21 hacks/config/pulsar.xml.h:16
 msgid "Solid Surface"
 msgstr "Egyszínű felület"
 
-#: ../hacks/config/hypertorus.xml.h:16
+#: hacks/config/hypertorus.xml.h:16
 msgid ""
 "This program shows a rotating Clifford Torus: a torus lying on the \"surface"
 "\" of a 4D hypersphere. Written by Carsten Steger, inspired by Thomas "
@@ -4748,71 +5009,108 @@ msgstr ""
 "\"Beyond the Third Dimension: Geometry, Computer Graphics, and Higher "
 "Dimensions\", Scientific American Library, 1990. könyve alapján."
 
-#: ../hacks/config/hypertorus.xml.h:17 ../hacks/config/polytopes.xml.h:23
+#: hacks/config/hypertorus.xml.h:17 hacks/config/polytopes.xml.h:23
 msgid "Transparent Surface"
 msgstr "Átlátszó felület"
 
-#: ../hacks/config/hypertorus.xml.h:18
+#: hacks/config/hypertorus.xml.h:18
 msgid "Two-Sided"
 msgstr "Kétoldalú"
 
-#: ../hacks/config/hypertorus.xml.h:19 ../hacks/config/polytopes.xml.h:24
+#: hacks/config/hypertorus.xml.h:19 hacks/config/polytopes.xml.h:24
 msgid "WX Rotation Speed"
 msgstr "WX forgatás sebessége  "
 
-#: ../hacks/config/hypertorus.xml.h:20 ../hacks/config/polytopes.xml.h:25
+#: hacks/config/hypertorus.xml.h:20 hacks/config/polytopes.xml.h:25
 msgid "WY Rotation Speed"
 msgstr "WY forgatás sebessége  "
 
-#: ../hacks/config/hypertorus.xml.h:21 ../hacks/config/polytopes.xml.h:26
+#: hacks/config/hypertorus.xml.h:21 hacks/config/polytopes.xml.h:26
 msgid "WZ Rotation Speed"
 msgstr "WZ forgatás sebessége  "
 
-#: ../hacks/config/hypertorus.xml.h:22 ../hacks/config/polytopes.xml.h:27
+#: hacks/config/hypertorus.xml.h:22 hacks/config/polytopes.xml.h:27
 msgid "Wireframe Mesh"
 msgstr "Drótváz háló"
 
-#: ../hacks/config/hypertorus.xml.h:23 ../hacks/config/polytopes.xml.h:28
+#: hacks/config/hypertorus.xml.h:23 hacks/config/polytopes.xml.h:28
 msgid "XY Rotation Speed"
 msgstr "XY forgatás sebessége"
 
-#: ../hacks/config/hypertorus.xml.h:24 ../hacks/config/polytopes.xml.h:29
+#: hacks/config/hypertorus.xml.h:24 hacks/config/polytopes.xml.h:29
 msgid "XZ Rotation Speed"
 msgstr "XZ forgatás sebessége"
 
-#: ../hacks/config/hypertorus.xml.h:25 ../hacks/config/polytopes.xml.h:30
+#: hacks/config/hypertorus.xml.h:25 hacks/config/polytopes.xml.h:30
 msgid "YZ Rotation Speed"
 msgstr "YZ forgatás sebessége"
 
-#: ../hacks/config/ifs.xml.h:2
+#: hacks/config/ifs.xml.h:1
+msgid "2"
+msgstr "2"
+
+#: hacks/config/ifs.xml.h:2
+msgid "Blend"
+msgstr "Vegyítés"
+
+#: hacks/config/ifs.xml.h:3
+msgid "Detail"
+msgstr "Részletesség"
+
+#: hacks/config/ifs.xml.h:5
+msgid "Function"
+msgstr "Függvény"
+
+#: hacks/config/ifs.xml.h:6
+msgid "Functions"
+msgstr "Függvények"
+
+#: hacks/config/ifs.xml.h:7
 msgid "IFS"
 msgstr "IFS"
 
-#: ../hacks/config/ifs.xml.h:7
+#: hacks/config/ifs.xml.h:9
+msgid "Number of Colours"
+msgstr "Színek száma"
+
+#: hacks/config/ifs.xml.h:11 hacks/config/phosphor.xml.h:6
+msgid "Scale"
+msgstr "Méretezés"
+
+#: hacks/config/ifs.xml.h:12
+msgid "Single"
+msgstr "Egyszeres"
+
+#: hacks/config/ifs.xml.h:15
 msgid ""
-"This one draws spinning, colliding iterated-function-system images. Written "
-"by Massimino Pascal."
-msgstr ""
-"Forgó, összeütköző képek iterált függvényrendszerekről. Írta Massimino "
-"Pascal."
+"This one draws spinning, colliding iterated-function-system images. Note "
+"that the \"quality\" parameter is exponential. Number of points drawn is "
+"functions^detail. The number of colours is only used in Blend mode to "
+"provide a palette to create the base colours. These are then blended "
+"together in a non-colourmap friendly fashion. Written by Chris Le Sueur."
+msgstr "Ez forgó, összeütköző iterált függényrendszer képeket rajzol. Ne feledje, hogy a \"minőség\" paraméter exponenciális. A kirajzolt pontok száma: függvények^részletesség. A színek számát csak a Blend mód használja az alapvető színek létrehozására szolgáló paletta megadásához. Ezek azután egy nem színtérkép-barát módszerrel össze lesznek keverve. Írta Chris Le Sueur."
+
+#: hacks/config/ifs.xml.h:16
+msgid "Translate"
+msgstr "Fordítás"
 
-#: ../hacks/config/imsmap.xml.h:3
+#: hacks/config/imsmap.xml.h:3
 msgid "Brightness Gradients"
 msgstr "Fényességi átmenetek"
 
-#: ../hacks/config/imsmap.xml.h:7
+#: hacks/config/imsmap.xml.h:7
 msgid "Hue Gradients"
 msgstr "Árnyalati átmenetek"
 
-#: ../hacks/config/imsmap.xml.h:8
+#: hacks/config/imsmap.xml.h:8
 msgid "IMSmap"
 msgstr "IMSmap"
 
-#: ../hacks/config/imsmap.xml.h:12
+#: hacks/config/imsmap.xml.h:12
 msgid "Saturation Gradients"
 msgstr "Telítettségi átmenetek"
 
-#: ../hacks/config/imsmap.xml.h:14
+#: hacks/config/imsmap.xml.h:14
 msgid ""
 "This generates random cloud-like patterns. It looks quite different in "
 "monochrome and color. The basic idea is to take four points on the edge of "
@@ -4837,19 +5135,19 @@ msgstr ""
 "leginkább valamilyen infravörös felvételhez hasonlít. Írta Juergen Nickelsen "
 "és Jamie Zawinski."
 
-#: ../hacks/config/interference.xml.h:1
+#: hacks/config/interference.xml.h:1
 msgid "0"
 msgstr "0"
 
-#: ../hacks/config/interference.xml.h:2
+#: hacks/config/interference.xml.h:2
 msgid "360"
 msgstr "360"
 
-#: ../hacks/config/interference.xml.h:3
+#: hacks/config/interference.xml.h:3
 msgid "Anim Speed"
 msgstr "Animáció sebessége"
 
-#: ../hacks/config/interference.xml.h:4
+#: hacks/config/interference.xml.h:4
 msgid ""
 "Another color-field hack, this one works by computing decaying sinusoidal "
 "waves, and allowing them to interfere with each other as their origins move. "
@@ -4859,36 +5157,36 @@ msgstr ""
 "ábrázol, melyek interferálnak egymással, ahogy kezdőpontjaik mozognak.Írta "
 "Hannu Mallat."
 
-#: ../hacks/config/interference.xml.h:9
+#: hacks/config/interference.xml.h:9
 msgid "Hue"
 msgstr "Árnyalat"
 
-#: ../hacks/config/interference.xml.h:10
+#: hacks/config/interference.xml.h:10
 msgid "Interference"
 msgstr "Interferencia"
 
-#: ../hacks/config/interference.xml.h:13 ../hacks/config/t3d.xml.h:9
-#: ../hacks/config/xearth.xml.h:11 ../hacks/config/zoom.xml.h:5
+#: hacks/config/interference.xml.h:13 hacks/config/t3d.xml.h:9
+#: hacks/config/xearth.xml.h:11 hacks/config/zoom.xml.h:5
 msgid "Magnification"
 msgstr "Nagyítás"
 
-#: ../hacks/config/interference.xml.h:16
+#: hacks/config/interference.xml.h:16
 msgid "Number of Waves"
 msgstr "Hullámok száma"
 
-#: ../hacks/config/interference.xml.h:20
+#: hacks/config/interference.xml.h:20
 msgid "Wave Size"
 msgstr "Hullámméret"
 
-#: ../hacks/config/intermomentary.xml.h:2
+#: hacks/config/intermomentary.xml.h:2
 msgid "Intermomentary"
 msgstr "Intermomentary"
 
-#: ../hacks/config/intermomentary.xml.h:3
+#: hacks/config/intermomentary.xml.h:3
 msgid "Number of Discs"
 msgstr "Lemezek száma"
 
-#: ../hacks/config/intermomentary.xml.h:6
+#: hacks/config/intermomentary.xml.h:6
 msgid ""
 "The Intersection Momentary is a fun visualization defining the relationships "
 "between objects with Casey Reas, William Ngan, and Robert Hodgin. "
@@ -4899,59 +5197,65 @@ msgid ""
 "of the circles. Ported to XScreensaver from the art project \"InterMomentary"
 "\" at http://www.complexification.net"
 msgstr ""
-"A \"Hirtelen metszés\" az objektumok közötti kapcsolatnak egy mókás vizualizációja. Írta "
-"Casey Reas, William Ngan, és Robert Hodgin. Kiállításával a Whitney Museum of American Art van megbízva. Egy felület, 100 kicsi és közepes méretű körrel kitöltve. Minden körnek különböző mérete és iránya van, de egyforma lassan haladnak. Megjeleníthető: A, a körök pillanatnyi metszete. B, a körök összetett metszete. Az XScreensaverhez az \"InterMomentary\" művészeti projektből lett portolva, amely elérhető a http://www.complexification.net címen"
+"A \"Hirtelen metszés\" az objektumok közötti kapcsolatnak egy mókás "
+"vizualizációja. Írta Casey Reas, William Ngan, és Robert Hodgin. "
+"Kiállításával a Whitney Museum of American Art van megbízva. Egy felület, "
+"100 kicsi és közepes méretű körrel kitöltve. Minden körnek különböző mérete "
+"és iránya van, de egyforma lassan haladnak. Megjeleníthető: A, a körök "
+"pillanatnyi metszete. B, a körök összetett metszete. Az XScreensaverhez az "
+"\"InterMomentary\" művészeti projektből lett portolva, amely elérhető a "
+"http://www.complexification.net címen"
 
-#: ../hacks/config/jigglypuff.xml.h:2
+#: hacks/config/jigglypuff.xml.h:2
 msgid "Chrome"
 msgstr "Króm"
 
-#: ../hacks/config/jigglypuff.xml.h:3
+#: hacks/config/jigglypuff.xml.h:3
 msgid "Clown barf"
 msgstr "Műhányás"
 
-#: ../hacks/config/jigglypuff.xml.h:5
+#: hacks/config/jigglypuff.xml.h:5
 msgid "Cycle"
 msgstr "Körforgás"
 
-#: ../hacks/config/jigglypuff.xml.h:7
+#: hacks/config/jigglypuff.xml.h:7
 msgid "Flower box"
 msgstr "Virágdoboz"
 
-#: ../hacks/config/jigglypuff.xml.h:9
+#: hacks/config/jigglypuff.xml.h:9
 msgid "Inertial damping"
 msgstr "Tehetetlenségi kiegyenlítés"
 
-#: ../hacks/config/jigglypuff.xml.h:10
+#: hacks/config/jigglypuff.xml.h:10
 msgid "JigglyPuff"
 msgstr "JigglyPuff"
 
-#: ../hacks/config/jigglypuff.xml.h:14
+#: hacks/config/jigglypuff.xml.h:14
 msgid "Rotation speed"
 msgstr "Forgatás sebessége"
 
-#: ../hacks/config/jigglypuff.xml.h:17 ../hacks/config/sphere.xml.h:7
+#: hacks/config/jigglypuff.xml.h:17 hacks/config/sphere.xml.h:7
 msgid "Sphere"
 msgstr "Gömb"
 
-#: ../hacks/config/jigglypuff.xml.h:18
+#: hacks/config/jigglypuff.xml.h:18
 msgid "Sphere strength"
 msgstr "Gömb erőssége"
 
-#: ../hacks/config/jigglypuff.xml.h:19
+#: hacks/config/jigglypuff.xml.h:19
 msgid "Spookiness"
 msgstr "Kísértetiesség"
 
-#: ../hacks/config/jigglypuff.xml.h:20
+#: hacks/config/jigglypuff.xml.h:20
 msgid "Spoooooky"
 msgstr "Kíííííísérteties"
 
-#: ../hacks/config/jigglypuff.xml.h:21 ../hacks/config/polyhedra.xml.h:155
-#: ../hacks/config/sballs.xml.h:16
+#: hacks/config/jigglypuff.xml.h:21 hacks/config/polyhedra.xml.h:155
+#: hacks/config/sballs.xml.h:16
 msgid "Tetrahedron"
 msgstr "Tetraéder"
 
-#: ../hacks/config/jigglypuff.xml.h:22
+#: hacks/config/jigglypuff.xml.h:22
 msgid ""
 "This little gem does bad things with quasi-spherical objects. The gist of it "
 "is that you have what is, structurally, a tetrahedron with tesselated faces. "
@@ -4977,39 +5281,39 @@ msgstr ""
 "jelölje be a \"véletlen\" négyzetet. felülbírálja az összes opciót, kivéve a "
 "képkockaarányt, késleltetést és összetettséget. Írta Keith Macleod"
 
-#: ../hacks/config/jigglypuff.xml.h:23
+#: hacks/config/jigglypuff.xml.h:23
 msgid "Vertex-vertex behavior"
 msgstr "Csúcs-csúcs viselkedés"
 
-#: ../hacks/config/jigglypuff.xml.h:24
+#: hacks/config/jigglypuff.xml.h:24
 msgid "Vertex-vertex force"
 msgstr "Csúcs-csúcs erő"
 
-#: ../hacks/config/jigglypuff.xml.h:26
+#: hacks/config/jigglypuff.xml.h:26
 msgid "collapse"
 msgstr "összecsukás"
 
-#: ../hacks/config/jigglypuff.xml.h:27
+#: hacks/config/jigglypuff.xml.h:27
 msgid "expand"
 msgstr "kiterjesztés"
 
-#: ../hacks/config/jigglypuff.xml.h:28
+#: hacks/config/jigglypuff.xml.h:28
 msgid "none"
 msgstr "nincs"
 
-#: ../hacks/config/jigglypuff.xml.h:29
+#: hacks/config/jigglypuff.xml.h:29
 msgid "strong"
 msgstr "erős"
 
-#: ../hacks/config/jigsaw.xml.h:4
+#: hacks/config/jigsaw.xml.h:4
 msgid "Jigsaw"
 msgstr "Kirakós"
 
-#: ../hacks/config/jigsaw.xml.h:6
+#: hacks/config/jigsaw.xml.h:6
 msgid "Solved Duration"
 msgstr "Megoldás időtartama"
 
-#: ../hacks/config/jigsaw.xml.h:8
+#: hacks/config/jigsaw.xml.h:8
 msgid ""
 "This grabs a screen image, carves it up into a jigsaw puzzle, shuffles it, "
 "and then solves the puzzle. This works especially well when you feed it an "
@@ -5025,28 +5329,59 @@ msgstr ""
 "könnyű kitalálni még a kirakás után sem, hogy mit ábrázol az elkapott "
 "képkocka. Írta Jamie Zawinski."
 
-#: ../hacks/config/juggle.xml.h:1
-msgid "Checkered Balls"
-msgstr "Pepita labdák"
-
-#. -pattern would be a really long, confusing option menu
-#: ../hacks/config/juggle.xml.h:3
+#: hacks/config/juggle.xml.h:1
 msgid "Draws a juggling stick-man. Written by Tim Auckland."
 msgstr "Zsonglőrködő pálcikaembert jelenít meg. Írta Tim Auckland."
 
-#: ../hacks/config/juggle.xml.h:5
+#: hacks/config/juggle.xml.h:3
 msgid "Juggle"
 msgstr "Zsonglőr"
 
-#: ../hacks/config/julia.xml.h:3 ../hacks/config/rorschach.xml.h:4
+#: hacks/config/juggle.xml.h:6
+msgid "Performance Length"
+msgstr "Előadás hossza"
+
+#: hacks/config/juggle.xml.h:11
+msgid "Use Pattern "
+msgstr "Minta használata "
+
+#: hacks/config/juggle.xml.h:12
+msgid "turn on/off Balls."
+msgstr "labdák be/ki."
+
+#: hacks/config/juggle.xml.h:13
+msgid "turn on/off Bowling Balls."
+msgstr "tekegolyók be/ki."
+
+#: hacks/config/juggle.xml.h:14
+msgid "turn on/off Clubs."
+msgstr "bábuk be/ki."
+
+#: hacks/config/juggle.xml.h:15
+msgid "turn on/off Flaming Torches."
+msgstr "lángoló fáklyák be/ki."
+
+#: hacks/config/juggle.xml.h:16
+msgid "turn on/off Knives."
+msgstr "kések be/ki."
+
+#: hacks/config/juggle.xml.h:17
+msgid "turn on/off Rings."
+msgstr "gyűrűk be/ki."
+
+#: hacks/config/juggle.xml.h:18
+msgid "turn on/off pattern descriptions."
+msgstr "mintaleírások be/ki."
+
+#: hacks/config/julia.xml.h:3 hacks/config/rorschach.xml.h:4
 msgid "Iterations"
 msgstr "Iterációk"
 
-#: ../hacks/config/julia.xml.h:4
+#: hacks/config/julia.xml.h:4
 msgid "Julia"
 msgstr "Julia"
 
-#: ../hacks/config/julia.xml.h:11
+#: hacks/config/julia.xml.h:11
 msgid ""
 "This one draws spinning, animating (are you detecting a pattern here yet?) "
 "explorations of the Julia set. You've probably seen static images of this "
@@ -5062,8 +5397,7 @@ msgstr ""
 "vezérlőpontot mutatja, ahonnan kiindulva a program a kép többi részét "
 "generálja. Írta Sean McCullough."
 
-#. #### -spring_constant [5]
-#: ../hacks/config/kaleidescope.xml.h:2
+#: hacks/config/kaleidescope.xml.h:1
 msgid ""
 "Another clone of an ancient meme, consisting largely of frenetic rotational "
 "motion of colored lines. This one is by Ron Tapia. The motion is nice, but I "
@@ -5076,27 +5410,27 @@ msgstr ""
 "színekre lenne szükség. Talán az sem ártana, ha a forgási sebesség többet "
 "változna."
 
-#: ../hacks/config/kaleidescope.xml.h:5
+#: hacks/config/kaleidescope.xml.h:4
 msgid "Kaleidescope"
 msgstr "Kaleidescope"
 
-#: ../hacks/config/kaleidescope.xml.h:7 ../hacks/config/qix.xml.h:18
+#: hacks/config/kaleidescope.xml.h:6 hacks/config/qix.xml.h:18
 msgid "Segments"
 msgstr "Darabkák"
 
-#: ../hacks/config/kaleidescope.xml.h:10
+#: hacks/config/kaleidescope.xml.h:9
 msgid "Symmetry"
 msgstr "Szimmetria"
 
-#: ../hacks/config/kaleidescope.xml.h:11
+#: hacks/config/kaleidescope.xml.h:10
 msgid "Trails"
 msgstr "Nyomok"
 
-#: ../hacks/config/klein.xml.h:3
+#: hacks/config/klein.xml.h:3
 msgid "Klein"
 msgstr "Klein"
 
-#: ../hacks/config/klein.xml.h:10
+#: hacks/config/klein.xml.h:10
 msgid ""
 "This draws a visualization of a Klein bottle or some other interesting "
 "parametric surfaces. Written by Andrey Mirtchovski."
@@ -5104,23 +5438,23 @@ msgstr ""
 "Ez egy Klein-üveget, vagy más érdekes paraméteres felületet jelenít meg. "
 "Írta: Andrey Mirtchovski."
 
-#: ../hacks/config/klein.xml.h:11
+#: hacks/config/klein.xml.h:11
 msgid "Use Randomized Surfaces and Primitives"
 msgstr "Véletlenszerű felületek és primitívek használata"
 
-#: ../hacks/config/klein.xml.h:12
+#: hacks/config/klein.xml.h:12
 msgid "Wander Around the Screen"
 msgstr "Vándorlás a képernyőn"
 
-#: ../hacks/config/kumppa.xml.h:5
+#: hacks/config/kumppa.xml.h:5
 msgid "Kumppa"
 msgstr "Kumppa"
 
-#: ../hacks/config/kumppa.xml.h:7
+#: hacks/config/kumppa.xml.h:7
 msgid "Randomize"
 msgstr "Véletlen"
 
-#: ../hacks/config/kumppa.xml.h:10
+#: hacks/config/kumppa.xml.h:10
 msgid ""
 "Spiraling, spinning, and very, very fast splashes of color rush toward the "
 "screen. Written by Teemu Suutari."
@@ -5128,7 +5462,7 @@ msgstr ""
 "Spirálisan mozgó, forgó, nagy sebességgel a képernyő felé rohanó "
 "színfoltokat ábrázol. Írta Teemu Suutari."
 
-#: ../hacks/config/lament.xml.h:1
+#: hacks/config/lament.xml.h:1
 msgid ""
 "Animates a simulation of Lemarchand's Box, repeatedly solving itself. "
 "Requires OpenGL, and a machine with fast hardware support for texture maps. "
@@ -5138,15 +5472,15 @@ msgstr ""
 "OpenGL-t és olyan videokártyát igényel, mely gyors textúrakezelést tud "
 "megvalósítani. Figyelem: néha az ajtókat is kinyitja. Írta Jamie Zawinski."
 
-#: ../hacks/config/lament.xml.h:3
+#: hacks/config/lament.xml.h:3
 msgid "Lament"
 msgstr "Lament"
 
-#: ../hacks/config/laser.xml.h:4
+#: hacks/config/laser.xml.h:4
 msgid "Laser"
 msgstr "Lézer"
 
-#: ../hacks/config/laser.xml.h:7
+#: hacks/config/laser.xml.h:7
 msgid ""
 "Moving radiating lines, that look vaguely like scanning laser beams. Written "
 "by Pascal Pensa. (Frankie say: relax.)"
@@ -5154,19 +5488,19 @@ msgstr ""
 "Mozgó, szétsugárzó vonalakat jelenít meg, melyek pásztázó lézersugarakhoz "
 "hasonlítanak. Írta Pascal Pensa (Frankie azt mondja: nyugi.)"
 
-#: ../hacks/config/lavalite.xml.h:2 ../hacks/config/xmountains.xml.h:2
+#: hacks/config/lavalite.xml.h:2 hacks/config/xmountains.xml.h:2
 msgid "10"
 msgstr "10"
 
-#: ../hacks/config/lavalite.xml.h:4
+#: hacks/config/lavalite.xml.h:4
 msgid "Classic Lavalite"
 msgstr "Klasszikus Lavalite"
 
-#: ../hacks/config/lavalite.xml.h:5
+#: hacks/config/lavalite.xml.h:5
 msgid "Cone Lavalite"
 msgstr "Kúp Lavalite"
 
-#: ../hacks/config/lavalite.xml.h:8
+#: hacks/config/lavalite.xml.h:8
 msgid ""
 "Draws a 3D Simulation a Lava Lite(r): odd-shaped blobs of a mysterious "
 "substance are heated, slowly rise to the top of the bottle, and then drop "
@@ -5187,35 +5521,35 @@ msgstr ""
 "Enterprises, Inc. regisztrált kereskedelmi védjegye az USA-ban és a világ "
 "más országaiban.\""
 
-#: ../hacks/config/lavalite.xml.h:9
+#: hacks/config/lavalite.xml.h:9
 msgid "Faceted"
 msgstr "Lapokkal borított"
 
-#: ../hacks/config/lavalite.xml.h:11
+#: hacks/config/lavalite.xml.h:11
 msgid "Giant Lavalite"
 msgstr "Óriás Lavalite"
 
-#: ../hacks/config/lavalite.xml.h:13
+#: hacks/config/lavalite.xml.h:13
 msgid "LavaLite"
 msgstr "LavaLite"
 
-#: ../hacks/config/lavalite.xml.h:15
+#: hacks/config/lavalite.xml.h:15
 msgid "Max Blobs"
 msgstr "Foltok maximum"
 
-#: ../hacks/config/lavalite.xml.h:16
+#: hacks/config/lavalite.xml.h:16
 msgid "Random Lamp Style"
 msgstr "Véletlenszerű lámpastílus"
 
-#: ../hacks/config/lavalite.xml.h:18
+#: hacks/config/lavalite.xml.h:18
 msgid "Rocket Lavalite"
 msgstr "Rakéta Lavalite"
 
-#: ../hacks/config/lightning.xml.h:2
+#: hacks/config/lightning.xml.h:2
 msgid "Lightning"
 msgstr "Villámlás"
 
-#: ../hacks/config/lightning.xml.h:7
+#: hacks/config/lightning.xml.h:7
 msgid ""
 "This one draws crackling fractal lightning bolts. It's simple, direct, and "
 "to the point. If only it had sound... Written by Keith Romberg."
@@ -5223,15 +5557,15 @@ msgstr ""
 "Cikkcakkban haladó, fraktálos villámcsapásokat jelenít meg. Egyszerű, "
 "közvetlen és célratörő. Ha még hangja is lenne... Írta Keith Romberg."
 
-#: ../hacks/config/lisa.xml.h:4
+#: hacks/config/lisa.xml.h:4
 msgid "Lisa"
 msgstr "Lisa"
 
-#: ../hacks/config/lisa.xml.h:10
+#: hacks/config/lisa.xml.h:10
 msgid "Steps"
 msgstr "Lépésszám"
 
-#: ../hacks/config/lisa.xml.h:11
+#: hacks/config/lisa.xml.h:11
 msgid ""
 "This draws Lisajous loops, by Caleb Cullen. Remember that device they had "
 "the Phantom Zone prisoners in during their trial in Superman? I think that "
@@ -5241,7 +5575,7 @@ msgstr ""
 "azokra az eszközökre, amelyekben a Fantomzóna foglyait tartották a Superman "
 "elleni per alatt? Ez pont úgy néz ki."
 
-#: ../hacks/config/lissie.xml.h:1
+#: hacks/config/lissie.xml.h:1
 msgid ""
 "Another Lissajous figure. This one draws the progress of circular shapes "
 "along a path. Written by Alexander Jolk."
@@ -5249,55 +5583,53 @@ msgstr ""
 "Egy másik Lissajous-alakzat. Ez körkörös alakzatok egy útvonal mentén való "
 "haladását rajzolja meg. Írta Alexander Jolk."
 
-#: ../hacks/config/lissie.xml.h:5
+#: hacks/config/lissie.xml.h:5
 msgid "Lissie"
 msgstr "Lissie"
 
-#: ../hacks/config/lmorph.xml.h:1
+#: hacks/config/lmorph.xml.h:1
 msgid "Closed Figures"
 msgstr "Zárt alakzatok"
 
-#: ../hacks/config/lmorph.xml.h:2
+#: hacks/config/lmorph.xml.h:2
 msgid "Control Points"
 msgstr "Vezérlőpontok"
 
-#: ../hacks/config/lmorph.xml.h:4
+#: hacks/config/lmorph.xml.h:4
 msgid "Interpolation Steps"
 msgstr "Közelítési lépések"
 
-#: ../hacks/config/lmorph.xml.h:5
+#: hacks/config/lmorph.xml.h:5
 msgid "LMorph"
 msgstr "LMorph"
 
-#: ../hacks/config/lmorph.xml.h:6
+#: hacks/config/lmorph.xml.h:6
 msgid "Less"
 msgstr "Kevesebb"
 
-#: ../hacks/config/lmorph.xml.h:8
+#: hacks/config/lmorph.xml.h:8
 msgid "More"
 msgstr "Több"
 
-#: ../hacks/config/lmorph.xml.h:9
+#: hacks/config/lmorph.xml.h:9
 msgid "Open Figures"
 msgstr "Nyílt alakzatok"
 
-#: ../hacks/config/lmorph.xml.h:10
+#: hacks/config/lmorph.xml.h:10
 msgid "Open and Closed Figures"
 msgstr "Nyílt és zárt alakzatok"
 
-#: ../hacks/config/lmorph.xml.h:15
+#: hacks/config/lmorph.xml.h:15
 msgid ""
 "This generates random spline-ish line drawings and morphs between them. "
 "Written by Sverre H. Huseby and Glenn T. Lines."
-msgstr ""
-"Véletlenszerű spline-os rajzolatokat és köztük történő  átalakulásokat "
-"jelenít meg. Írta Sverre H. Huseby és Glenn T. Lines."
+msgstr "Véletlenszerű görbevonalakat és köztük történő átalakulásokat generál. Írta Sverre H. Huseby és Glenn T. Lines."
 
-#: ../hacks/config/loop.xml.h:3
+#: hacks/config/loop.xml.h:3
 msgid "Loop"
 msgstr "Hurok"
 
-#: ../hacks/config/loop.xml.h:10
+#: hacks/config/loop.xml.h:10
 msgid ""
 "This one produces loop-shaped colonies that spawn, age, and eventually die. "
 "Written by David Bagley."
@@ -5305,52 +5637,51 @@ msgstr ""
 "Hurok alakú populációkat jelenít meg, melyek sokasodnak, megöregszenek, és "
 "végül elpusztulnak. Írta David Bagley."
 
-#: ../hacks/config/maze.xml.h:3
+#: hacks/config/maze.xml.h:3
 msgid "Backtracking Generator"
 msgstr "Visszaléptetés generátor"
 
-#: ../hacks/config/maze.xml.h:5 ../hacks/config/slidescreen.xml.h:3
+#: hacks/config/maze.xml.h:5 hacks/config/slidescreen.xml.h:3
 msgid "Grid Size"
 msgstr "Rács mérete"
 
-#: ../hacks/config/maze.xml.h:6
+#: hacks/config/maze.xml.h:6
 msgid "Head Toward Exit"
 msgstr "A kijárat felé"
 
-#: ../hacks/config/maze.xml.h:7
+#: hacks/config/maze.xml.h:7
 msgid "Ignorant of Exit Direction"
 msgstr "A kijárat irányának ismerete nélkül"
 
-#: ../hacks/config/maze.xml.h:8
+#: hacks/config/maze.xml.h:8
 msgid "Joining Generator"
 msgstr "Összekapcsolási generátor"
 
-#: ../hacks/config/maze.xml.h:9
+#: hacks/config/maze.xml.h:9
 msgid "Maze"
 msgstr "Labirintus"
 
-#: ../hacks/config/maze.xml.h:10
+#: hacks/config/maze.xml.h:10
 msgid "Post-Solve Delay"
 msgstr "Megoldás utáni várakozás"
 
-#: ../hacks/config/maze.xml.h:11
+#: hacks/config/maze.xml.h:11
 msgid "Pre-Solve Delay"
 msgstr "Megoldás előtti várakozás"
 
-#: ../hacks/config/maze.xml.h:12
+#: hacks/config/maze.xml.h:12
 msgid "Random Generator"
 msgstr "Véletlen generátor"
 
-#: ../hacks/config/maze.xml.h:13
+#: hacks/config/maze.xml.h:13
 msgid "Seeding Generator"
 msgstr "Inicializálási generátor"
 
-#: ../hacks/config/maze.xml.h:15
+#: hacks/config/maze.xml.h:15
 msgid "Solve Speed"
 msgstr "Megoldás sebessége"
 
-#. #### -surround-color [slateblue]
-#: ../hacks/config/maze.xml.h:17
+#: hacks/config/maze.xml.h:16
 msgid ""
 "This is the ancient X maze demo, modified to work with xscreensaver. It "
 "generates a random maze, then solves it with visual feedback. Originally by "
@@ -5361,27 +5692,27 @@ msgstr ""
 "visszajelzéssel bejárja azt. Az eredeti verziót Jim Randell írta - több "
 "ezren módosítottak benne utólag."
 
-#: ../hacks/config/memscroller.xml.h:1
+#: hacks/config/memscroller.xml.h:1
 msgid "Draw Green"
 msgstr "Rajzolás zöldben"
 
-#: ../hacks/config/memscroller.xml.h:2
+#: hacks/config/memscroller.xml.h:2
 msgid "Draw Random Numbers"
 msgstr "Véletlen számok rajzolása"
 
-#: ../hacks/config/memscroller.xml.h:3
+#: hacks/config/memscroller.xml.h:3
 msgid "Draw in RGB"
 msgstr "Rajzolás RGB-ben"
 
-#: ../hacks/config/memscroller.xml.h:4
+#: hacks/config/memscroller.xml.h:4
 msgid "Dump Memory"
 msgstr "Memória kiírása"
 
-#: ../hacks/config/memscroller.xml.h:6
+#: hacks/config/memscroller.xml.h:6
 msgid "MemScroller"
 msgstr "Memóriagörgető"
 
-#: ../hacks/config/memscroller.xml.h:9
+#: hacks/config/memscroller.xml.h:9
 msgid ""
 "This draws a dump of its own process memory scrolling across the screen in "
 "three windows at three different rates. Written by Jamie Zawinski."
@@ -5389,11 +5720,11 @@ msgstr ""
 "Ez a saját folyamatának memóriáját írja ki és görgeti a képernyőn három "
 "ablakban három különböző sebességgel. Írta Jamie Zawinski."
 
-#: ../hacks/config/menger.xml.h:6
+#: hacks/config/menger.xml.h:6
 msgid "Menger"
 msgstr "Menger"
 
-#: ../hacks/config/menger.xml.h:19
+#: hacks/config/menger.xml.h:19
 msgid ""
 "This draws the three-dimensional variant of the recursive Menger Gasket, a "
 "cube-based fractal object analagous to the Sierpinski Tetrahedron. Written "
@@ -5403,11 +5734,11 @@ msgstr ""
 "egy kockán alapuló fraktálobjektum, a Sierpinski-féle tetraéder megfelelője. "
 "Írta Jamie Zawinski."
 
-#: ../hacks/config/metaballs.xml.h:1
+#: hacks/config/metaballs.xml.h:1
 msgid "Big"
 msgstr "Nagy"
 
-#: ../hacks/config/metaballs.xml.h:2
+#: hacks/config/metaballs.xml.h:2
 msgid ""
 "Draws two dimensional metaballs: overlapping and merging balls with fuzzy "
 "edges. By W.P. van Paassen."
@@ -5415,31 +5746,31 @@ msgstr ""
 "Kétdimenziós metalabdákat rajzol: egymást átfedő és összemosódó labdákat "
 "homályos szélekkel. Írta W.P. van Paassen."
 
-#: ../hacks/config/metaballs.xml.h:7
+#: hacks/config/metaballs.xml.h:7
 msgid "MetaBall Movement"
 msgstr "Metalabdák mozgása"
 
-#: ../hacks/config/metaballs.xml.h:8
+#: hacks/config/metaballs.xml.h:8
 msgid "MetaBall Radius"
 msgstr "Metalabdák sugara"
 
-#: ../hacks/config/metaballs.xml.h:9
+#: hacks/config/metaballs.xml.h:9
 msgid "MetaBalls"
 msgstr "Metalabdák"
 
-#: ../hacks/config/metaballs.xml.h:11
+#: hacks/config/metaballs.xml.h:11
 msgid "Number of MetaBalls"
 msgstr "Metalabdák száma"
 
-#: ../hacks/config/mirrorblob.xml.h:4
+#: hacks/config/mirrorblob.xml.h:4
 msgid "Blobby"
 msgstr "Foltos"
 
-#: ../hacks/config/mirrorblob.xml.h:5 ../hacks/config/nerverot.xml.h:2
+#: hacks/config/mirrorblob.xml.h:5 hacks/config/nerverot.xml.h:2
 msgid "Calm"
 msgstr "Nyugodt"
 
-#: ../hacks/config/mirrorblob.xml.h:7
+#: hacks/config/mirrorblob.xml.h:7
 msgid ""
 "Draws a wobbly blob that distorts the image behind it. Requires OpenGL "
 "hardware acceleration for nice animation. Written by Jon Dowdall."
@@ -5447,55 +5778,55 @@ msgstr ""
 "Egy imbolygó foltot rajzol, ami eltorzítja a mögötte lévő képet. Hardveres "
 "OpenGL gyorsítást igényel a szép animációhoz. Írta Jon Dowdall."
 
-#: ../hacks/config/mirrorblob.xml.h:8
+#: hacks/config/mirrorblob.xml.h:8
 msgid "Enable Background Image"
 msgstr "Háttérkép engedélyezése"
 
-#: ../hacks/config/mirrorblob.xml.h:9
+#: hacks/config/mirrorblob.xml.h:9
 msgid "Enable Colouring"
 msgstr "Színezés engedélyezése"
 
-#: ../hacks/config/mirrorblob.xml.h:10
+#: hacks/config/mirrorblob.xml.h:10
 msgid "Enable Reflected Image"
 msgstr "Visszavert kép engedélyezése"
 
-#: ../hacks/config/mirrorblob.xml.h:11
+#: hacks/config/mirrorblob.xml.h:11
 msgid "Enable Walls"
 msgstr "Falak engedélyezése"
 
-#: ../hacks/config/mirrorblob.xml.h:13
+#: hacks/config/mirrorblob.xml.h:13
 msgid "Field Points"
 msgstr "Mezőpontok"
 
-#: ../hacks/config/mirrorblob.xml.h:14
+#: hacks/config/mirrorblob.xml.h:14
 msgid "Freaky"
 msgstr "Ijesztő"
 
-#: ../hacks/config/mirrorblob.xml.h:15
+#: hacks/config/mirrorblob.xml.h:15
 msgid "MirrorBlob"
 msgstr "Tükörfolt"
 
-#: ../hacks/config/mirrorblob.xml.h:17
+#: hacks/config/mirrorblob.xml.h:17
 msgid "Offset Texture Coordinates"
 msgstr "Mintázat koordinátáinak eltolása"
 
-#: ../hacks/config/mirrorblob.xml.h:23
+#: hacks/config/mirrorblob.xml.h:23
 msgid "Very Freaky"
 msgstr "Nagyon ijesztő"
 
-#: ../hacks/config/mirrorblob.xml.h:25
+#: hacks/config/mirrorblob.xml.h:25
 msgid "X Resolution"
 msgstr "X felbontás"
 
-#: ../hacks/config/mirrorblob.xml.h:26
+#: hacks/config/mirrorblob.xml.h:26
 msgid "Y Resolution"
 msgstr "Y felbontás"
 
-#: ../hacks/config/mismunch.xml.h:5
+#: hacks/config/mismunch.xml.h:5
 msgid "Mismunch"
 msgstr "Mismunch"
 
-#: ../hacks/config/mismunch.xml.h:6
+#: hacks/config/mismunch.xml.h:6
 msgid ""
 "Munching errors! This is a creatively broken misimplementation of the "
 "classic munching squares graphics hack. Written by Steven Hazel."
@@ -5503,20 +5834,20 @@ msgstr ""
 "Ez a klasszikus \"munching squares\" grafikus hack kreatívan elrontott "
 "megvalósítása. Írta Steven Hazel."
 
-#: ../hacks/config/mismunch.xml.h:7
+#: hacks/config/mismunch.xml.h:7
 msgid "One"
 msgstr "Egy"
 
-#: ../hacks/config/mismunch.xml.h:9
+#: hacks/config/mismunch.xml.h:9
 msgid "Simultaneous Squares"
 msgstr "Párhuzamos négyzetek"
 
-#: ../hacks/config/mismunch.xml.h:13 ../hacks/config/munch.xml.h:11
-#: ../hacks/config/qix.xml.h:26
+#: hacks/config/mismunch.xml.h:13 hacks/config/munch.xml.h:10
+#: hacks/config/qix.xml.h:26
 msgid "XOR"
 msgstr "XOR"
 
-#: ../hacks/config/moebius.xml.h:1
+#: hacks/config/moebius.xml.h:1
 msgid ""
 "Another M. C. Escher hack by Marcelo Vianna, this one draws ``Moebius Strip "
 "II,'' a GL image of ants walking along the surface of a moebius strip."
@@ -5525,35 +5856,52 @@ msgstr ""
 "szalagot ábrázol: hangyák vándorolnak egy Möbius-szalag felszínén, OpenGL-es "
 "megjelenítéssel."
 
-#: ../hacks/config/moebius.xml.h:2
+#: hacks/config/moebius.xml.h:2
 msgid "Draw Ants"
 msgstr "Hangyák rajzolása"
 
-#: ../hacks/config/moebius.xml.h:4
+#: hacks/config/moebius.xml.h:4
 msgid "Mesh Floor"
 msgstr "Hálós padló"
 
-#: ../hacks/config/moebius.xml.h:5
+#: hacks/config/moebius.xml.h:5
 msgid "Moebius"
 msgstr "Moebius"
 
-#: ../hacks/config/moebius.xml.h:8
+#: hacks/config/moebius.xml.h:8
 msgid "Solid Floor"
 msgstr "Egyszínű padló"
 
-#: ../hacks/config/moebius.xml.h:9 ../hacks/config/qix.xml.h:20
+#: hacks/config/moebius.xml.h:9 hacks/config/qix.xml.h:20
 msgid "Solid Objects"
 msgstr "Egyszínű objektumok"
 
-#: ../hacks/config/moire.xml.h:6
+#: hacks/config/moire2.xml.h:1
+msgid ""
+"Another example of the fun you can have with moire interference patterns; "
+"this hack generates fields of concentric circles or ovals, and combines the "
+"planes with various operations. The planes are moving independently of one "
+"another, causing the interference lines to ``spray.'' Written by Jamie "
+"Zawinski."
+msgstr ""
+"Egy újabb példa mókás Moire-féle interferenciamintára. Koncentrikus körök "
+"vagy ellipszisek halmazát generálja, az egyes síkok között különféle "
+"műveleteket végezve. A síkok egymástól teljesen függetlenül mozognak, így az "
+"interferencia-vonalak fokozatosan szétszóródnak. Írta Jamie Zawinski."
+
+#: hacks/config/moire2.xml.h:4
+msgid "Moire2"
+msgstr "Moire2"
+
+#: hacks/config/moire.xml.h:6
 msgid "Moire"
 msgstr "Moire"
 
-#: ../hacks/config/moire.xml.h:8 ../hacks/config/rorschach.xml.h:6
+#: hacks/config/moire.xml.h:8 hacks/config/rorschach.xml.h:6
 msgid "Offset"
 msgstr "Eltolás"
 
-#: ../hacks/config/moire.xml.h:10
+#: hacks/config/moire.xml.h:10
 msgid ""
 "This one draws cool circular interference patterns. Most of the circles you "
 "see aren't explicitly rendered, but show up as a result of interactions "
@@ -5570,40 +5918,27 @@ msgstr ""
 "egyszerű, néhány ciklusból és aritmetikai műveletből áll, így a képzeletbeli "
 "elegancia-skálán igen magas helyezést ér el."
 
-#: ../hacks/config/moire2.xml.h:1
-msgid ""
-"Another example of the fun you can have with moire interference patterns; "
-"this hack generates fields of concentric circles or ovals, and combines the "
-"planes with various operations. The planes are moving independently of one "
-"another, causing the interference lines to ``spray.'' Written by Jamie "
-"Zawinski."
-msgstr ""
-"Egy újabb példa mókás Moire-féle interferenciamintára. Koncentrikus körök "
-"vagy ellipszisek halmazát generálja, az egyes síkok között különféle "
-"műveleteket végezve. A síkok egymástól teljesen függetlenül mozognak, így az "
-"interferenciavonalak fokozatosan szétszóródnak. Írta Jamie Zawinski."
-
-#: ../hacks/config/moire2.xml.h:4
-msgid "Moire2"
-msgstr "Moire2"
-
-#: ../hacks/config/molecule.xml.h:3
+#: hacks/config/molecule.xml.h:3
 msgid "Describe Molecule"
 msgstr "A molekula leírása"
 
-#: ../hacks/config/molecule.xml.h:5
+#: hacks/config/molecule.xml.h:5
 msgid "Draw Atomic Bonds"
 msgstr "Atomi kötések rajzolása"
 
-#: ../hacks/config/molecule.xml.h:6
-msgid "Draw Atoms"
-msgstr "Atomok rajzolása"
+#: hacks/config/molecule.xml.h:6
+msgid "Draw Atomic Nuclei"
+msgstr "Atom nukleonjainak rajzolása"
 
-#: ../hacks/config/molecule.xml.h:7 ../hacks/config/spheremonics.xml.h:2
+#: hacks/config/molecule.xml.h:7 hacks/config/spheremonics.xml.h:2
 msgid "Draw Bounding Box"
 msgstr "Határoló doboz rajzolása"
 
-#: ../hacks/config/molecule.xml.h:8
+#: hacks/config/molecule.xml.h:8
+msgid "Draw Electron Shells"
+msgstr "Elektronhéjak rajzolása"
+
+#: hacks/config/molecule.xml.h:9
 msgid ""
 "Draws several different representations of molecules. Some common molecules "
 "are built in, and it can also read PDB (Protein Data Base) files as input. "
@@ -5613,19 +5948,19 @@ msgstr ""
 "molekula adatai be vannak építve, de a program képes bemenetként PDB "
 "(Protein Data Base) fájlok feldolgozására is. Írta Jamie Zawinski."
 
-#: ../hacks/config/molecule.xml.h:11
+#: hacks/config/molecule.xml.h:12
 msgid "Label Atoms"
 msgstr "Atomok címkézése"
 
-#: ../hacks/config/molecule.xml.h:12
+#: hacks/config/molecule.xml.h:13
 msgid "Molecule"
 msgstr "Molekula"
 
-#: ../hacks/config/molecule.xml.h:13
+#: hacks/config/molecule.xml.h:14
 msgid "PDB File or Directory"
 msgstr "PDB fájl vagy könyvtár"
 
-#: ../hacks/config/morph3d.xml.h:1
+#: hacks/config/morph3d.xml.h:1
 msgid ""
 "Another 3d shape-changing GL hack, by Marcelo Vianna. It has the same shiny-"
 "plastic feel as Superquadrics, as many computer-generated objects do..."
@@ -5634,11 +5969,11 @@ msgstr ""
 "Ugyanolyan fényes műanyagszerű hatást kelt, mint a Superquadrics, vagy sok "
 "más számítógép által renderelt objektum..."
 
-#: ../hacks/config/morph3d.xml.h:4
+#: hacks/config/morph3d.xml.h:4
 msgid "Morph3D"
 msgstr "Morph3D"
 
-#: ../hacks/config/mountain.xml.h:3
+#: hacks/config/mountain.xml.h:3
 msgid ""
 "Generates random 3d plots that look vaguely mountainous. Written by Pascal "
 "Pensa."
@@ -5646,12 +5981,11 @@ msgstr ""
 "Véletlenszerű 3D-s ponthalmazokat rajzol ki, melyek halványan hegyekre "
 "emlékeztetnek. Írta Pascal Pensa."
 
-#: ../hacks/config/mountain.xml.h:5
+#: hacks/config/mountain.xml.h:5
 msgid "Mountain"
 msgstr "Hegy"
 
-#. #### -logminwidth [7]
-#: ../hacks/config/munch.xml.h:2
+#: hacks/config/munch.xml.h:1
 msgid ""
 "DATAI 2 ADDB 1,2 ROTC 2,-22 XOR 1,2 JRST .-4 As reported by HAKMEM, in 1962, "
 "Jackson Wright wrote the above PDP-1 code. That code still lives on in this "
@@ -5663,27 +5997,27 @@ msgstr ""
 "évvel később még mindig jelen van ebben a képernyővédőben. A kísérő kód "
 "azonban időközben jelentősen kibővült. Ez a verzió Tim Showalter munkája."
 
-#: ../hacks/config/munch.xml.h:6
+#: hacks/config/munch.xml.h:5
 msgid "Munch"
 msgstr "Munch"
 
-#: ../hacks/config/nerverot.xml.h:1
+#: hacks/config/nerverot.xml.h:1
 msgid "Blot Count"
 msgstr "A foltok száma"
 
-#: ../hacks/config/nerverot.xml.h:3
+#: hacks/config/nerverot.xml.h:3
 msgid "Changes"
 msgstr "Módosítások"
 
-#: ../hacks/config/nerverot.xml.h:4
+#: hacks/config/nerverot.xml.h:4
 msgid "Colors"
 msgstr "Színek"
 
-#: ../hacks/config/nerverot.xml.h:5
+#: hacks/config/nerverot.xml.h:5
 msgid "Crunchiness"
 msgstr "Ropogósság"
 
-#: ../hacks/config/nerverot.xml.h:7
+#: hacks/config/nerverot.xml.h:7
 msgid ""
 "Draws different shapes composed of nervously vibrating squiggles, as if seen "
 "through a camera operated by a monkey on crack. By Dan Bornstein."
@@ -5692,76 +6026,71 @@ msgstr ""
 "állnak, mintha egy veszett majom rögzítené a képet kamerával a kezében. Írta "
 "Dan Bornstein."
 
-#: ../hacks/config/nerverot.xml.h:10
+#: hacks/config/nerverot.xml.h:10
 msgid "Frequent"
 msgstr "Gyakori"
 
-#: ../hacks/config/nerverot.xml.h:16
+#: hacks/config/nerverot.xml.h:16
 msgid "NerveRot"
 msgstr "NerveRot"
 
-#: ../hacks/config/nerverot.xml.h:17
+#: hacks/config/nerverot.xml.h:17
 msgid "Nervousness"
 msgstr "Idegesség"
 
-#: ../hacks/config/nerverot.xml.h:18 ../hacks/config/pyro.xml.h:12
+#: hacks/config/nerverot.xml.h:18 hacks/config/pyro.xml.h:12
 msgid "Seldom"
 msgstr "Ritkán"
 
-#: ../hacks/config/nerverot.xml.h:21
+#: hacks/config/nerverot.xml.h:21
 msgid "Spastic"
 msgstr "Görcsös"
 
-#: ../hacks/config/noof.xml.h:1
+#: hacks/config/noof.xml.h:1
 msgid "Draws some rotatey patterns, using OpenGL. Written by Mark Kilgard."
 msgstr "Forgó mintákat rajzol, OpenGL használatával. Írta Mark Kilgard."
 
-#: ../hacks/config/noof.xml.h:3
+#: hacks/config/noof.xml.h:3
 msgid "Noof"
 msgstr "Noof"
 
-#. #### -text-background [?]
-#: ../hacks/config/noseguy.xml.h:2
+#: hacks/config/noseguy.xml.h:1
 msgid ""
 "A little man with a big nose wanders around your screen saying things. The "
-"things which he says can come from a file, or from an external program like "
-"`zippy' or `fortune'. This was extracted from `xnlock' by Dan Heller. "
-"Colorized by Jamie Zawinski."
-msgstr ""
-"Egy nagy orrú emberke jár körbe a képernyőn, mindenféle dolgokat mondva. A "
-"szöveg egy megadott fájlból vagy egy külső programból is származhat, például "
-"a \"zippy\"-ből vagy a \"fortune\"-ből. Az \"xnlock\" alapján készítette: "
-"Dan Heller. A színezést Jamie Zawinski végezte."
+"things which he says are the output of a program or the contents of a file "
+"or URL, as configured on the \"Advanced\" tab of the main Screensaver "
+"Preferences window. By Dan Heller and Jamie Zawinski."
+msgstr "Egy nagy orrú emberke jár körbe a képernyőn, mindenféle dolgokat mondva. A szöveg, amit mond, lehet egy program kimenete, vagy egy fájl vagy URL tartalma, ahogyan az a fő Képernyővédő beállításai ablak Bővített fülén be van állítva. Készítette: Dan Heller és Jamie Zawinski."
 
-#: ../hacks/config/noseguy.xml.h:3
+#: hacks/config/noseguy.xml.h:2
 msgid "Get Text from File"
 msgstr "A szöveg fájlból jöjjön"
 
-#: ../hacks/config/noseguy.xml.h:4
+#: hacks/config/noseguy.xml.h:3
 msgid "Get Text from Program"
 msgstr "A szöveg programból jöjjön"
 
-#: ../hacks/config/noseguy.xml.h:5
+#: hacks/config/noseguy.xml.h:4
 msgid "Noseguy"
 msgstr "Nagyorrú"
 
-#: ../hacks/config/noseguy.xml.h:7
+#: hacks/config/noseguy.xml.h:6
 msgid "Text File"
 msgstr "Szöveges fájl"
 
-#: ../hacks/config/noseguy.xml.h:9
+#: hacks/config/noseguy.xml.h:8
 msgid "Use Text Below"
 msgstr "Az alábbi szöveg használata"
 
-#: ../hacks/config/pacman.xml.h:2
+#: hacks/config/pacman.xml.h:2
 msgid "Pacman"
 msgstr "Pacman"
 
-#: ../hacks/config/pacman.xml.h:3
+#: hacks/config/pacman.xml.h:3
 msgid "Player Size"
 msgstr "Játékos mérete"
 
-#: ../hacks/config/pacman.xml.h:4
+#: hacks/config/pacman.xml.h:4
 msgid ""
 "Simulates a game of Pac-Man on a randomly-created level. Written by Edwin de "
 "Jong."
@@ -5769,12 +6098,11 @@ msgstr ""
 "Pac-man játékot szimulál egy véletlenszerűen létrehozott szinten. Írta Edwin "
 "de Jong."
 
-#: ../hacks/config/pedal.xml.h:7
+#: hacks/config/pedal.xml.h:7
 msgid "Pedal"
 msgstr "Pedál"
 
-#. #### -background [black]
-#: ../hacks/config/pedal.xml.h:9
+#: hacks/config/pedal.xml.h:8
 msgid ""
 "This is sort of a combination spirograph/string-art. It generates a large, "
 "complex polygon, and lets the X server do the bulk of the work by giving it "
@@ -5786,33 +6114,33 @@ msgstr ""
 "páratlan forgatási szabály alapján. Írta Dale Moore, régi PDP-11-es "
 "kódrészletek alapján."
 
-#: ../hacks/config/penetrate.xml.h:1
+#: hacks/config/penetrate.xml.h:1
 msgid "Always play well"
 msgstr "Mindig jól játsszon"
 
-#: ../hacks/config/penetrate.xml.h:2
+#: hacks/config/penetrate.xml.h:2
 msgid "Explosions"
 msgstr "Robbanások"
 
-#: ../hacks/config/penetrate.xml.h:5
+#: hacks/config/penetrate.xml.h:5
 msgid "Penetrate"
 msgstr "Áthatolás"
 
-#: ../hacks/config/penetrate.xml.h:7
+#: hacks/config/penetrate.xml.h:7
 msgid "Start badly, but learn"
 msgstr "Gyenge kezdés, de tanul"
 
-#: ../hacks/config/penetrate.xml.h:8
+#: hacks/config/penetrate.xml.h:8
 msgid ""
 "This hack simulates the classic arcade game Missile Command. Written by Adam "
 "Miller."
 msgstr "A klasszikus Missile Command játékot szimulálja a program. Írta Adam Miller."
 
-#: ../hacks/config/penrose.xml.h:3
+#: hacks/config/penrose.xml.h:3
 msgid "Draw Ammann Lines"
 msgstr "Ammann-vonalak húzása"
 
-#: ../hacks/config/penrose.xml.h:4
+#: hacks/config/penrose.xml.h:4
 msgid ""
 "Draws quasiperiodic tilings; think of the implications on modern formica "
 "technology. Written by Timo Korvola. In April 1997, Sir Roger Penrose, a "
@@ -5840,76 +6168,75 @@ msgstr ""
 "parancsolni.\" Ez a történet a News of the Weird 491-es számában jelent meg, "
 "1997. július 4-én."
 
-#: ../hacks/config/penrose.xml.h:9
+#: hacks/config/penrose.xml.h:9
 msgid "Penrose"
 msgstr "Penrose"
 
-#: ../hacks/config/petri.xml.h:2
+#: hacks/config/petri.xml.h:2
 msgid "Colony Shape"
 msgstr "Kolónia formája"
 
-#: ../hacks/config/petri.xml.h:3
+#: hacks/config/petri.xml.h:3
 msgid "Death Comes"
 msgstr "Jön a Kaszás"
 
-#: ../hacks/config/petri.xml.h:4
+#: hacks/config/petri.xml.h:4
 msgid "Diamond"
 msgstr "Gyémánt"
 
-#: ../hacks/config/petri.xml.h:6
+#: hacks/config/petri.xml.h:6
 msgid "Fertility"
 msgstr "Termékenység"
 
-#: ../hacks/config/petri.xml.h:12
+#: hacks/config/petri.xml.h:12
 msgid "Maxium Lifespan"
 msgstr "Maximális élettartam"
 
-#: ../hacks/config/petri.xml.h:13
+#: hacks/config/petri.xml.h:13
 msgid "Maxium Rate of Death"
 msgstr "Maximális halálozási ráta"
 
-#: ../hacks/config/petri.xml.h:14
+#: hacks/config/petri.xml.h:14
 msgid "Maxium Rate of Growth"
 msgstr "Maximális növekedési ráta"
 
-#: ../hacks/config/petri.xml.h:15
+#: hacks/config/petri.xml.h:15
 msgid "Minium Lifespan"
 msgstr "Minimális élettartam"
 
-#: ../hacks/config/petri.xml.h:16
+#: hacks/config/petri.xml.h:16
 msgid "Minium Rate of Death"
 msgstr "Minimális halálozási ráta"
 
-#: ../hacks/config/petri.xml.h:17
+#: hacks/config/petri.xml.h:17
 msgid "Minium Rate of Growth"
 msgstr "Minimális növekedési ráta"
 
-#: ../hacks/config/petri.xml.h:18
+#: hacks/config/petri.xml.h:18
 msgid "Mold Varieties"
 msgstr "Penészváltozatok"
 
-#: ../hacks/config/petri.xml.h:19
+#: hacks/config/petri.xml.h:19
 msgid "Offspring"
 msgstr "Sarjadékok"
 
-#: ../hacks/config/petri.xml.h:20
+#: hacks/config/petri.xml.h:20
 msgid "Petri"
 msgstr "Petri"
 
-#: ../hacks/config/petri.xml.h:21
+#: hacks/config/petri.xml.h:21
 msgid "Quickly"
 msgstr "Gyorsan"
 
-#: ../hacks/config/petri.xml.h:24
+#: hacks/config/petri.xml.h:24
 msgid "Slowly"
 msgstr "Lassan"
 
-#: ../hacks/config/petri.xml.h:26
+#: hacks/config/petri.xml.h:26
 msgid "Square"
 msgstr "Négyzet"
 
-#. #### -mem-throttle [22M]
-#: ../hacks/config/petri.xml.h:28
+#: hacks/config/petri.xml.h:27
 msgid ""
 "This simulates colonies of mold growing in a petri dish. Growing colored "
 "circles overlap and leave spiral interference in their wake. Written by Dan "
@@ -5918,50 +6245,46 @@ msgstr ""
 "Egy petri-csészében szaporodó egysejtűkolóniákat ábrázol. A növekvő színes "
 "körök átfedik egymást, spirális interferenciát keltve. Írta Dan Bornstein."
 
-#. #### -font [fixed]
-#: ../hacks/config/phosphor.xml.h:2
+#: hacks/config/phosphor.xml.h:1
 msgid ""
 "Draws a simulation of an old terminal, with large pixels and long-sustain "
-"phosphor. It can run any program as a source of the text it displays. "
-"Written by Jamie Zawinski."
+"phosphor. This program is also a fully-functional VT100 emulator! The text "
+"can be the output of a program or the contents of a file or URL, as "
+"configured on the \"Advanced\" tab of the main Screensaver Preferences "
+"window. Written by Jamie Zawinski."
 msgstr ""
-"Egy hagyományos terminál működését szimulálja, nagy képpontokkal, lassan "
-"elhalványuló foszforeszkáló kijelzővel. A megjelenített szöveg bármilyen "
-"programból származhat. Írta Jamie Zawinski."
+"Egy régi terminál működését szimulálja, nagy képpontokkal, lassan "
+"elhalványuló foszforeszkáló kijelzővel. A program ezen kívül egy teljes funkcionalitású VT-100 emulátor!  A szöveg lehet egy program kimenete, vagy egy fájl vagy URL tartalma, ahogyan az a fő Képernyővédő beállításai ablak Bővített fülén be van állítva. Írta Jamie Zawinski."
 
-#: ../hacks/config/phosphor.xml.h:3
+#: hacks/config/phosphor.xml.h:2
 msgid "Dump pipe"
 msgstr "Csővezeték kiírása"
 
-#: ../hacks/config/phosphor.xml.h:6
+#: hacks/config/phosphor.xml.h:5
 msgid "Phosphor"
 msgstr "Foszfor"
 
-#: ../hacks/config/phosphor.xml.h:7
-msgid "Scale"
-msgstr "Méretezés"
-
-#: ../hacks/config/phosphor.xml.h:11
+#: hacks/config/phosphor.xml.h:10
 msgid "Use PTY"
 msgstr "Pszeudoterminál használata"
 
-#: ../hacks/config/piecewise.xml.h:1
+#: hacks/config/piecewise.xml.h:1
 msgid "Color shifting speed"
 msgstr "Színek eltolásának sebessége"
 
-#: ../hacks/config/piecewise.xml.h:6
+#: hacks/config/piecewise.xml.h:6
 msgid "Maximum radius"
 msgstr "Legnagyobb sugár"
 
-#: ../hacks/config/piecewise.xml.h:7
+#: hacks/config/piecewise.xml.h:7
 msgid "Minimum radius"
 msgstr "Legkisebb sugár"
 
-#: ../hacks/config/piecewise.xml.h:8
+#: hacks/config/piecewise.xml.h:8
 msgid "Piecewise"
 msgstr "Piecewise"
 
-#: ../hacks/config/piecewise.xml.h:12
+#: hacks/config/piecewise.xml.h:12
 msgid ""
 "This draws a bunch of moving circles which switch from visibility to "
 "invisibility at intersection points. Written by Geoffrey Irving."
@@ -5969,60 +6292,59 @@ msgstr ""
 "Egy csomó mozgó kört rajzol, amelyek a metszéspontokon láthatókból "
 "láthatatlanokká válnak. Írta Geoffrey Irving."
 
-#: ../hacks/config/pinion.xml.h:1
+#: hacks/config/pinion.xml.h:1
 msgid "100"
 msgstr "100"
 
-#: ../hacks/config/pinion.xml.h:2
+#: hacks/config/pinion.xml.h:2
 msgid "2000"
 msgstr "2000"
 
-#: ../hacks/config/pinion.xml.h:4
+#: hacks/config/pinion.xml.h:4
 msgid ""
 "Draws an interconnected set of gears moving across the screen. Written by "
 "Jamie Zawinski."
 msgstr ""
-"Ez a képernyőn áthaladó, összekapcsolódó fogaskerekek sorozatát rajzolja. Írta Jamie "
-"Zawinski."
+"Ez a képernyőn áthaladó, összekapcsolódó fogaskerekek sorozatát rajzolja. "
+"Írta Jamie Zawinski."
 
-#: ../hacks/config/pinion.xml.h:6
+#: hacks/config/pinion.xml.h:6
 msgid "Gear Size"
 msgstr "Fogaskerék mérete"
 
-#: ../hacks/config/pinion.xml.h:8
+#: hacks/config/pinion.xml.h:8
 msgid "Max RPM"
 msgstr "Max RPM"
 
-#: ../hacks/config/pinion.xml.h:9
+#: hacks/config/pinion.xml.h:9
 msgid "Pinion"
 msgstr "Fogaskerekek"
 
-#: ../hacks/config/pinion.xml.h:11
+#: hacks/config/pinion.xml.h:11
 msgid "Scrolling Speed"
 msgstr "Görgetés sebessége"
 
-#: ../hacks/config/pipes.xml.h:1
+#: hacks/config/pipes.xml.h:1
 msgid "Allow Tight Turns"
 msgstr "Éles kanyarok engedélyezése"
 
-#: ../hacks/config/pipes.xml.h:2
+#: hacks/config/pipes.xml.h:2
 msgid "Ball Joints"
 msgstr "Gömbölyű illesztések"
 
-#: ../hacks/config/pipes.xml.h:3
+#: hacks/config/pipes.xml.h:3
 msgid "Curved Pipes"
 msgstr "Hajlított csövek"
 
-#: ../hacks/config/pipes.xml.h:6
+#: hacks/config/pipes.xml.h:6
 msgid "Fisheye Lens"
 msgstr "Halszem lencsék"
 
-#: ../hacks/config/pipes.xml.h:7
+#: hacks/config/pipes.xml.h:7
 msgid "Gadgetry"
 msgstr "Bigyók"
 
-#. #### -no-rotatepipes
-#: ../hacks/config/pipes.xml.h:9
+#: hacks/config/pipes.xml.h:8
 msgid ""
 "If you've ever been in the same room with a Windows NT machine, you've "
 "probably seen this GL hack. This version is by Marcelo Vianna."
@@ -6030,68 +6352,68 @@ msgstr ""
 "Ha már tartózkodott egy szobában Windows NT-s géppel, bizonyára látta már "
 "ezt az OpenGL-demót. Ezt a változatot Marcelo Vianna készítette."
 
-#: ../hacks/config/pipes.xml.h:10 ../hacks/config/substrate.xml.h:7
-#: ../hacks/config/wormhole.xml.h:4
+#: hacks/config/pipes.xml.h:9 hacks/config/substrate.xml.h:12
+#: hacks/config/wormhole.xml.h:4
 msgid "Lots"
 msgstr "Rengeteg"
 
-#: ../hacks/config/pipes.xml.h:12
+#: hacks/config/pipes.xml.h:11
 msgid "Number of Pipe Systems"
 msgstr "Csőrendszerek száma"
 
-#: ../hacks/config/pipes.xml.h:13
+#: hacks/config/pipes.xml.h:12
 msgid "Pipe Fittings"
 msgstr "Csőillesztések"
 
-#: ../hacks/config/pipes.xml.h:14
+#: hacks/config/pipes.xml.h:13
 msgid "Pipes"
 msgstr "Csövek"
 
-#: ../hacks/config/pipes.xml.h:18
+#: hacks/config/pipes.xml.h:17
 msgid "System Length"
 msgstr "Rendszer hossza"
 
-#: ../hacks/config/polyhedra.xml.h:2
+#: hacks/config/polyhedra.xml.h:2
 msgid "30 seconds"
 msgstr "30 másodperc"
 
-#: ../hacks/config/polyhedra.xml.h:4 ../hacks/config/sballs.xml.h:1
+#: hacks/config/polyhedra.xml.h:4 hacks/config/sballs.xml.h:1
 msgid "Cube"
 msgstr "Kocka"
 
-#: ../hacks/config/polyhedra.xml.h:5
+#: hacks/config/polyhedra.xml.h:5
 msgid "Cubitruncated Cuboctahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:6
+#: hacks/config/polyhedra.xml.h:6
 msgid "Cuboctahedron"
 msgstr "Kuboktaéder"
 
-#: ../hacks/config/polyhedra.xml.h:7
+#: hacks/config/polyhedra.xml.h:7
 msgid "Cubohemioctahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:8
+#: hacks/config/polyhedra.xml.h:8
 msgid "Deltoidal Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:9
+#: hacks/config/polyhedra.xml.h:9
 msgid "Deltoidal Icositetrahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:10
+#: hacks/config/polyhedra.xml.h:10
 msgid "Disdyakisdodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:11
+#: hacks/config/polyhedra.xml.h:11
 msgid "Disdyakistriacontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:12
+#: hacks/config/polyhedra.xml.h:12
 msgid "Display Random Polyhedron"
 msgstr "Véletlen poliéder megjelenítése"
 
-#: ../hacks/config/polyhedra.xml.h:13
+#: hacks/config/polyhedra.xml.h:13
 msgid ""
 "Displays different 3D solids and some information about each. A new solid is "
 "chosen every few seconds. There are 75 uniform polyhedra, plus 5 inifite "
@@ -6103,591 +6425,591 @@ msgstr ""
 "valamint 5 végtelen prizma- és antiprizmakészlet, duálisaikkal együtt "
 "összesen 160. Írta Dr. Zvi Har'El és Jamie Zawinski."
 
-#: ../hacks/config/polyhedra.xml.h:14
+#: hacks/config/polyhedra.xml.h:14
 msgid "Ditrigonal Dodecadodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:15 ../hacks/config/sballs.xml.h:2
+#: hacks/config/polyhedra.xml.h:15 hacks/config/sballs.xml.h:2
 msgid "Dodecahedron"
 msgstr "Dodekaéder"
 
-#: ../hacks/config/polyhedra.xml.h:19
+#: hacks/config/polyhedra.xml.h:19
 msgid "Great Cubicuboctahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:20
+#: hacks/config/polyhedra.xml.h:20
 msgid "Great Deltoidal Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:21
+#: hacks/config/polyhedra.xml.h:21
 msgid "Great Deltoidal Icositetrahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:22
+#: hacks/config/polyhedra.xml.h:22
 msgid "Great Dirhombicosidodecacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:23
+#: hacks/config/polyhedra.xml.h:23
 msgid "Great Dirhombicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:24
+#: hacks/config/polyhedra.xml.h:24
 msgid "Great Disdyakisdodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:25
+#: hacks/config/polyhedra.xml.h:25
 msgid "Great Disdyakistriacontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:26
+#: hacks/config/polyhedra.xml.h:26
 msgid "Great Ditrigonal Dodecacronic Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:27
+#: hacks/config/polyhedra.xml.h:27
 msgid "Great Ditrigonal Dodecicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:28
+#: hacks/config/polyhedra.xml.h:28
 msgid "Great Ditrigonal Icosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:29
+#: hacks/config/polyhedra.xml.h:29
 msgid "Great Dodecacronic Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:30
+#: hacks/config/polyhedra.xml.h:30
 msgid "Great Dodecadodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:31
+#: hacks/config/polyhedra.xml.h:31
 msgid "Great Dodecahedron"
 msgstr "Nagy dodekaéder"
 
-#: ../hacks/config/polyhedra.xml.h:32
+#: hacks/config/polyhedra.xml.h:32
 msgid "Great Dodecahemicosacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:33
+#: hacks/config/polyhedra.xml.h:33
 msgid "Great Dodecahemicosahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:34
+#: hacks/config/polyhedra.xml.h:34
 msgid "Great Dodecahemidodecacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:35
+#: hacks/config/polyhedra.xml.h:35
 msgid "Great Dodecahemidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:36
+#: hacks/config/polyhedra.xml.h:36
 msgid "Great Dodecicosacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:37
+#: hacks/config/polyhedra.xml.h:37
 msgid "Great Dodecicosahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:38
+#: hacks/config/polyhedra.xml.h:38
 msgid "Great Dodecicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:39
+#: hacks/config/polyhedra.xml.h:39
 msgid "Great Hexacronic Icositetrahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:40
+#: hacks/config/polyhedra.xml.h:40
 msgid "Great Hexagonal Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:41
+#: hacks/config/polyhedra.xml.h:41
 msgid "Great Icosacronic Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:42
+#: hacks/config/polyhedra.xml.h:42
 msgid "Great Icosahedron"
 msgstr "Nagy ikozaéder"
 
-#: ../hacks/config/polyhedra.xml.h:43
+#: hacks/config/polyhedra.xml.h:43
 msgid "Great Icosicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:44
+#: hacks/config/polyhedra.xml.h:44
 msgid "Great Icosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:45
+#: hacks/config/polyhedra.xml.h:45
 msgid "Great Icosihemidodecacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:46
+#: hacks/config/polyhedra.xml.h:46
 msgid "Great Icosihemidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:47
+#: hacks/config/polyhedra.xml.h:47
 msgid "Great Inverted Pentagonal Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:48
+#: hacks/config/polyhedra.xml.h:48
 msgid "Great Inverted Snub Icosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:49
+#: hacks/config/polyhedra.xml.h:49
 msgid "Great Pentagonal Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:50
+#: hacks/config/polyhedra.xml.h:50
 msgid "Great Pentagrammic Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:51
+#: hacks/config/polyhedra.xml.h:51
 msgid "Great Pentakisdodekahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:52
+#: hacks/config/polyhedra.xml.h:52
 msgid "Great Retrosnub Icosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:53
+#: hacks/config/polyhedra.xml.h:53
 msgid "Great Rhombic Triacontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:54
+#: hacks/config/polyhedra.xml.h:54
 msgid "Great Rhombicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:55
+#: hacks/config/polyhedra.xml.h:55
 msgid "Great Rhombicuboctahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:56
+#: hacks/config/polyhedra.xml.h:56
 msgid "Great Rhombidodecacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:57
+#: hacks/config/polyhedra.xml.h:57
 msgid "Great Rhombidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:58
+#: hacks/config/polyhedra.xml.h:58
 msgid "Great Rhombihexacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:59
+#: hacks/config/polyhedra.xml.h:59
 msgid "Great Rhombihexahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:60
+#: hacks/config/polyhedra.xml.h:60
 msgid "Great Snub Dodecicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:61
+#: hacks/config/polyhedra.xml.h:61
 msgid "Great Snub Icosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:62
+#: hacks/config/polyhedra.xml.h:62
 msgid "Great Stellapentakisdodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:63
+#: hacks/config/polyhedra.xml.h:63
 msgid "Great Stellated Dodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:64
+#: hacks/config/polyhedra.xml.h:64
 msgid "Great Stellated Truncated Dodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:65
+#: hacks/config/polyhedra.xml.h:65
 msgid "Great Triakisicosahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:66
+#: hacks/config/polyhedra.xml.h:66
 msgid "Great Triakisoctahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:67
+#: hacks/config/polyhedra.xml.h:67
 msgid "Great Triambic Icosahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:68
+#: hacks/config/polyhedra.xml.h:68
 msgid "Great Truncated Cuboctahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:69
+#: hacks/config/polyhedra.xml.h:69
 msgid "Great Truncated Icosahedron"
 msgstr "Nagy csonkított ikozaéder"
 
-#: ../hacks/config/polyhedra.xml.h:70
+#: hacks/config/polyhedra.xml.h:70
 msgid "Great Truncated Icosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:71
+#: hacks/config/polyhedra.xml.h:71
 msgid "Hexahemioctacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:72 ../hacks/config/sballs.xml.h:5
+#: hacks/config/polyhedra.xml.h:72 hacks/config/sballs.xml.h:5
 msgid "Icosahedron"
 msgstr "Ikozaéder"
 
-#: ../hacks/config/polyhedra.xml.h:73
+#: hacks/config/polyhedra.xml.h:73
 msgid "Icosidodecadodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:74
+#: hacks/config/polyhedra.xml.h:74
 msgid "Icosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:75
+#: hacks/config/polyhedra.xml.h:75
 msgid "Icositruncated Dodecadodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:76
+#: hacks/config/polyhedra.xml.h:76
 msgid "Inverted Snub Dodecadodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:77
+#: hacks/config/polyhedra.xml.h:77
 msgid "Medial Deltoidal Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:78
+#: hacks/config/polyhedra.xml.h:78
 msgid "Medial Disdyakistriacontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:79
+#: hacks/config/polyhedra.xml.h:79
 msgid "Medial Hexagonal Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:80
+#: hacks/config/polyhedra.xml.h:80
 msgid "Medial Icosacronic Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:81
+#: hacks/config/polyhedra.xml.h:81
 msgid "Medial Inverted Pentagonal Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:82
+#: hacks/config/polyhedra.xml.h:82
 msgid "Medial Pentagonal Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:83
+#: hacks/config/polyhedra.xml.h:83
 msgid "Medial Rhombic Triacontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:84
+#: hacks/config/polyhedra.xml.h:84
 msgid "Medial Triambic Icosahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:86 ../hacks/config/sballs.xml.h:7
+#: hacks/config/polyhedra.xml.h:86 hacks/config/sballs.xml.h:7
 msgid "Octahedron"
 msgstr "Oktaéder"
 
-#: ../hacks/config/polyhedra.xml.h:87
+#: hacks/config/polyhedra.xml.h:87
 msgid "Octahemioctacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:88
+#: hacks/config/polyhedra.xml.h:88
 msgid "Octahemioctahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:89
+#: hacks/config/polyhedra.xml.h:89
 msgid "Pentagonal Antiprism"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:90
+#: hacks/config/polyhedra.xml.h:90
 msgid "Pentagonal Deltohedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:91
+#: hacks/config/polyhedra.xml.h:91
 msgid "Pentagonal Dipyramid"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:92
+#: hacks/config/polyhedra.xml.h:92
 msgid "Pentagonal Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:93
+#: hacks/config/polyhedra.xml.h:93
 msgid "Pentagonal Icositetrahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:94
+#: hacks/config/polyhedra.xml.h:94
 msgid "Pentagonal Prism"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:95
+#: hacks/config/polyhedra.xml.h:95
 msgid "Pentagrammic Antiprism"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:96
+#: hacks/config/polyhedra.xml.h:96
 msgid "Pentagrammic Concave Deltohedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:97
+#: hacks/config/polyhedra.xml.h:97
 msgid "Pentagrammic Crossed Antiprism"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:98
+#: hacks/config/polyhedra.xml.h:98
 msgid "Pentagrammic Deltohedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:99
+#: hacks/config/polyhedra.xml.h:99
 msgid "Pentagrammic Dipyramid"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:100
+#: hacks/config/polyhedra.xml.h:100
 msgid "Pentagrammic Prism"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:101
+#: hacks/config/polyhedra.xml.h:101
 msgid "Pentakisdodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:102
+#: hacks/config/polyhedra.xml.h:102
 msgid "Polyhedra"
 msgstr "Poliéder"
 
-#: ../hacks/config/polyhedra.xml.h:103
+#: hacks/config/polyhedra.xml.h:103
 msgid "Rhombic Dodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:104
+#: hacks/config/polyhedra.xml.h:104
 msgid "Rhombic Triacontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:105
+#: hacks/config/polyhedra.xml.h:105
 msgid "Rhombicosacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:106
+#: hacks/config/polyhedra.xml.h:106
 msgid "Rhombicosahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:107
+#: hacks/config/polyhedra.xml.h:107
 msgid "Rhombicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:108
+#: hacks/config/polyhedra.xml.h:108
 msgid "Rhombicuboctahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:109
+#: hacks/config/polyhedra.xml.h:109
 msgid "Rhombidodecadodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:117
+#: hacks/config/polyhedra.xml.h:117
 msgid "Show Description"
 msgstr "Leírás mutatása"
 
-#: ../hacks/config/polyhedra.xml.h:120
+#: hacks/config/polyhedra.xml.h:120
 msgid "Small Cubicuboctahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:121
+#: hacks/config/polyhedra.xml.h:121
 msgid "Small Ditrigonal Dodecacronic Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:122
+#: hacks/config/polyhedra.xml.h:122
 msgid "Small Ditrigonal Dodecicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:123
+#: hacks/config/polyhedra.xml.h:123
 msgid "Small Ditrigonal Icosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:124
+#: hacks/config/polyhedra.xml.h:124
 msgid "Small Dodecacronic Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:125
+#: hacks/config/polyhedra.xml.h:125
 msgid "Small Dodecahemicosacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:126
+#: hacks/config/polyhedra.xml.h:126
 msgid "Small Dodecahemicosahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:127
+#: hacks/config/polyhedra.xml.h:127
 msgid "Small Dodecahemidodecacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:128
+#: hacks/config/polyhedra.xml.h:128
 msgid "Small Dodecahemidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:129
+#: hacks/config/polyhedra.xml.h:129
 msgid "Small Dodecicosacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:130
+#: hacks/config/polyhedra.xml.h:130
 msgid "Small Dodecicosahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:131
+#: hacks/config/polyhedra.xml.h:131
 msgid "Small Dodecicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:132
+#: hacks/config/polyhedra.xml.h:132
 msgid "Small Hexacronic Icositetrahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:133
+#: hacks/config/polyhedra.xml.h:133
 msgid "Small Hexagonal Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:134
+#: hacks/config/polyhedra.xml.h:134
 msgid "Small Hexagrammic Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:135
+#: hacks/config/polyhedra.xml.h:135
 msgid "Small Icosacronic Hexecontahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:136
+#: hacks/config/polyhedra.xml.h:136
 msgid "Small Icosicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:137
+#: hacks/config/polyhedra.xml.h:137
 msgid "Small Icosihemidodecacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:138
+#: hacks/config/polyhedra.xml.h:138
 msgid "Small Icosihemidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:139
+#: hacks/config/polyhedra.xml.h:139
 msgid "Small Retrosnub Icosicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:140
+#: hacks/config/polyhedra.xml.h:140
 msgid "Small Rhombidodecacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:141
+#: hacks/config/polyhedra.xml.h:141
 msgid "Small Rhombidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:142
+#: hacks/config/polyhedra.xml.h:142
 msgid "Small Rhombihexacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:143
+#: hacks/config/polyhedra.xml.h:143
 msgid "Small Rhombihexahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:144
+#: hacks/config/polyhedra.xml.h:144
 msgid "Small Snub Icosicosidodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:145
+#: hacks/config/polyhedra.xml.h:145
 msgid "Small Stellapentakisdodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:146
+#: hacks/config/polyhedra.xml.h:146
 msgid "Small Stellated Dodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:147
+#: hacks/config/polyhedra.xml.h:147
 msgid "Small Stellated Truncated Dodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:148
+#: hacks/config/polyhedra.xml.h:148
 msgid "Small Triambic Icosahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:149
+#: hacks/config/polyhedra.xml.h:149
 msgid "Snub Cube"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:150
+#: hacks/config/polyhedra.xml.h:150
 msgid "Snub Dodecadodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:151
+#: hacks/config/polyhedra.xml.h:151
 msgid "Snub Dodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:152
+#: hacks/config/polyhedra.xml.h:152
 msgid "Snub Icosidodecadodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:153
+#: hacks/config/polyhedra.xml.h:153
 msgid "Stellated Truncated Hexahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:154
+#: hacks/config/polyhedra.xml.h:154
 msgid "Tetradyakishexahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:156
+#: hacks/config/polyhedra.xml.h:156
 msgid "Tetrahemihexacron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:157
+#: hacks/config/polyhedra.xml.h:157
 msgid "Tetrahemihexahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:158
+#: hacks/config/polyhedra.xml.h:158
 msgid "Tetrakishexahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:159
+#: hacks/config/polyhedra.xml.h:159
 msgid "Triakisicosahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:160
+#: hacks/config/polyhedra.xml.h:160
 msgid "Triakisoctahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:161
+#: hacks/config/polyhedra.xml.h:161
 msgid "Triakistetrahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:162
+#: hacks/config/polyhedra.xml.h:162
 msgid "Tridyakisicosahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:163
+#: hacks/config/polyhedra.xml.h:163
 msgid "Truncated Cube"
 msgstr "Csonkított kocka"
 
-#: ../hacks/config/polyhedra.xml.h:164
+#: hacks/config/polyhedra.xml.h:164
 msgid "Truncated Cuboctahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:165
+#: hacks/config/polyhedra.xml.h:165
 msgid "Truncated Dodecadodecahedron"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:166
+#: hacks/config/polyhedra.xml.h:166
 msgid "Truncated Dodecahedron"
 msgstr "Csonkított dodekaéder"
 
-#: ../hacks/config/polyhedra.xml.h:167
+#: hacks/config/polyhedra.xml.h:167
 msgid "Truncated Great Dodecahedron"
 msgstr "Csonkított nagy dodekaéder"
 
-#: ../hacks/config/polyhedra.xml.h:168
+#: hacks/config/polyhedra.xml.h:168
 msgid "Truncated Icosahedron"
 msgstr "Csonkított ikozaéder"
 
-#: ../hacks/config/polyhedra.xml.h:169
+#: hacks/config/polyhedra.xml.h:169
 msgid "Truncated Icosidodechedon"
 msgstr ""
 
-#: ../hacks/config/polyhedra.xml.h:170
+#: hacks/config/polyhedra.xml.h:170
 msgid "Truncated Octahedron"
 msgstr "Csonkított oktaéder"
 
-#: ../hacks/config/polyhedra.xml.h:171
+#: hacks/config/polyhedra.xml.h:171
 msgid "Truncated Tetrahedron"
 msgstr "Csonkított tetraéder"
 
-#: ../hacks/config/polyominoes.xml.h:3
+#: hacks/config/polyominoes.xml.h:3
 msgid "Identical Pieces"
 msgstr "Azonos darabok"
 
-#: ../hacks/config/polyominoes.xml.h:7
+#: hacks/config/polyominoes.xml.h:7
 msgid "Polyominoes"
 msgstr "Sokszögből álló elemek"
 
-#: ../hacks/config/polyominoes.xml.h:8
+#: hacks/config/polyominoes.xml.h:8
 msgid ""
 "Repeatedly attempts to completely fill a rectangle with irregularly-shaped "
 "puzzle pieces. Written by Stephen Montgomery-Smith."
@@ -6695,43 +7017,43 @@ msgstr ""
 "Ismétlődően megpróbál teljesen kitölteni egy téglalapot szabálytalan alakú "
 "kirakódarabokkal. Írta: Stephen Montgomery-Smith."
 
-#: ../hacks/config/polytopes.xml.h:2
+#: hacks/config/polytopes.xml.h:2
 msgid "120-Cell"
 msgstr "120-oldalú"
 
-#: ../hacks/config/polytopes.xml.h:3
+#: hacks/config/polytopes.xml.h:3
 msgid "16-Cell (Hyper-Octahedron)"
 msgstr "16-oldalú (hiper-oktaéder)"
 
-#: ../hacks/config/polytopes.xml.h:4
+#: hacks/config/polytopes.xml.h:4
 msgid "24-Cell"
 msgstr "24-oldalú"
 
-#: ../hacks/config/polytopes.xml.h:6
+#: hacks/config/polytopes.xml.h:6
 msgid "5-Cell (Hyper-Tetrahedron)"
 msgstr "5-oldalú (hiper-tetraéder)"
 
-#: ../hacks/config/polytopes.xml.h:7
+#: hacks/config/polytopes.xml.h:7
 msgid "600-Cell"
 msgstr "600-oldalú"
 
-#: ../hacks/config/polytopes.xml.h:8
+#: hacks/config/polytopes.xml.h:8
 msgid "8-Cell (Hypercube / Tesseract)"
 msgstr "8-oldalú (hiperkocka)"
 
-#: ../hacks/config/polytopes.xml.h:9
+#: hacks/config/polytopes.xml.h:9
 msgid "Colors By 4D Depth"
 msgstr "Színek a 4D mélység szerint"
 
-#: ../hacks/config/polytopes.xml.h:17
+#: hacks/config/polytopes.xml.h:17
 msgid "Regular 4D Polytopes"
 msgstr "Szabályos 4D politópok"
 
-#: ../hacks/config/polytopes.xml.h:19
+#: hacks/config/polytopes.xml.h:19
 msgid "Single Color"
 msgstr "Egyszínű"
 
-#: ../hacks/config/polytopes.xml.h:22
+#: hacks/config/polytopes.xml.h:22
 msgid ""
 "This program shows one of the six regular 4D polytopes rotating in 4D. "
 "Written by Carsten Steger, inspired by H.S.M Coxeter's book \"Regular "
@@ -6745,11 +7067,11 @@ msgstr ""
 "Geometry, Computer Graphics, and Higher Dimensions\", Scientific American "
 "Library, 1990. könyvei alapján."
 
-#: ../hacks/config/pong.xml.h:2
+#: hacks/config/pong.xml.h:2
 msgid "Pong"
 msgstr "Pong"
 
-#: ../hacks/config/pong.xml.h:6
+#: hacks/config/pong.xml.h:6
 msgid ""
 "The pong program simulates an ancient Pong home video game, as well as "
 "various artifacts from displaying it on a color TV set. Written by Jeremy "
@@ -6758,45 +7080,41 @@ msgstr ""
 "A pong program az ősi Pong videojátékot szimulálja, valamint a színes "
 "tévékészüléken való megjelenítését. Írta Jeremy English és Trevor Blackwell."
 
-#: ../hacks/config/popsquares.xml.h:1
-msgid "Border"
-msgstr "Szegély"
-
-#: ../hacks/config/popsquares.xml.h:2
+#: hacks/config/popsquares.xml.h:2
 msgid "End color"
 msgstr "Befejező szín"
 
-#: ../hacks/config/popsquares.xml.h:7
+#: hacks/config/popsquares.xml.h:7
 msgid "Start color"
 msgstr "Induló szín"
 
-#: ../hacks/config/popsquares.xml.h:8
+#: hacks/config/popsquares.xml.h:8
 msgid "Subdivision"
 msgstr "Albeosztás"
 
-#: ../hacks/config/popsquares.xml.h:9
+#: hacks/config/popsquares.xml.h:9
 msgid "This draws a pop-art-ish looking grid of pulsing colors. By Levi Burton."
 msgstr ""
 "Ez egy pop-art-szerűen kinéző, pulzáló színekből álló rácsot rajzol. Írta "
 "Levi Burton."
 
-#: ../hacks/config/popsquares.xml.h:10
+#: hacks/config/popsquares.xml.h:10
 msgid "Twitch"
 msgstr "Rángatózás"
 
-#: ../hacks/config/popsquares.xml.h:11
+#: hacks/config/popsquares.xml.h:11
 msgid "popsquares"
 msgstr "popsquares"
 
-#: ../hacks/config/providence.xml.h:1
+#: hacks/config/providence.xml.h:1
 msgid "Draw Eye"
 msgstr "Szem rajzolása"
 
-#: ../hacks/config/providence.xml.h:3
+#: hacks/config/providence.xml.h:3
 msgid "Providence"
 msgstr "Providence"
 
-#: ../hacks/config/providence.xml.h:7
+#: hacks/config/providence.xml.h:7
 msgid ""
 "The providence code displays an eye, shrouded in glory, set upon the base of "
 "a pyramid. Written by Blair Tennessy."
@@ -6804,11 +7122,11 @@ msgstr ""
 "A providence kódja egy glóriával körülvett szemet rajzol egy piramis "
 "alapjának tetején. Írta Blair Tennessy."
 
-#: ../hacks/config/pulsar.xml.h:1
+#: hacks/config/pulsar.xml.h:1
 msgid "Anti-alias Lines"
 msgstr "Vonalak élsimítása"
 
-#: ../hacks/config/pulsar.xml.h:3
+#: hacks/config/pulsar.xml.h:3
 msgid ""
 "Draws some intersecting planes, making use of alpha blending, fog, textures, "
 "and mipmaps, plus a ``frames per second'' meter so that you can tell how "
@@ -6818,99 +7136,99 @@ msgstr ""
 "használatával, továbbá a \"képkocka per másodperc\" kijelzőn lemérhető, "
 "milyen gyors a videokártya... OpenGL-t igényel. Írta David Konerding."
 
-#: ../hacks/config/pulsar.xml.h:4
+#: hacks/config/pulsar.xml.h:4
 msgid "Enable Blending"
 msgstr "Színkeveredés engedélyezése"
 
-#: ../hacks/config/pulsar.xml.h:5
+#: hacks/config/pulsar.xml.h:5
 msgid "Enable Depth Buffer"
 msgstr "Mélységi puffer bekapcsolása"
 
-#: ../hacks/config/pulsar.xml.h:6
+#: hacks/config/pulsar.xml.h:6
 msgid "Enable Fog"
 msgstr "Köd bekapcsolása"
 
-#: ../hacks/config/pulsar.xml.h:7
+#: hacks/config/pulsar.xml.h:7
 msgid "Enable Lighting"
 msgstr "Megvilágítás bekapcsolása"
 
-#: ../hacks/config/pulsar.xml.h:8
+#: hacks/config/pulsar.xml.h:8
 msgid "Enable Texture Filtering"
 msgstr "Textúraszűrés bekapcsolása"
 
-#: ../hacks/config/pulsar.xml.h:9
+#: hacks/config/pulsar.xml.h:9
 msgid "Enable Texture Mipmaps"
 msgstr "Textúra-mipmap-ek engedélyezése"
 
-#: ../hacks/config/pulsar.xml.h:10
+#: hacks/config/pulsar.xml.h:10
 msgid "Enable Texturing"
 msgstr "Textúrázás bekapcsolása"
 
-#: ../hacks/config/pulsar.xml.h:12
+#: hacks/config/pulsar.xml.h:12
 msgid "Pulsar"
 msgstr "Pulzár"
 
-#: ../hacks/config/pulsar.xml.h:13
+#: hacks/config/pulsar.xml.h:13
 msgid "Quad Count"
 msgstr "Négyszögek száma"
 
-#: ../hacks/config/pulsar.xml.h:18
+#: hacks/config/pulsar.xml.h:18
 msgid "Texture PPM File"
 msgstr "Textúra PPM fájl"
 
-#: ../hacks/config/pyro.xml.h:3
+#: hacks/config/pyro.xml.h:3
 msgid "Explosive Yield"
 msgstr "Robbanási teljesítmény"
 
-#: ../hacks/config/pyro.xml.h:6
+#: hacks/config/pyro.xml.h:6
 msgid "Launch Frequency"
 msgstr "Kilövés gyakorisága"
 
-#: ../hacks/config/pyro.xml.h:9
+#: hacks/config/pyro.xml.h:9
 msgid "Particle Density"
 msgstr "Részecskesűrűség"
 
-#: ../hacks/config/pyro.xml.h:10
+#: hacks/config/pyro.xml.h:10
 msgid "Pyro"
-msgstr "Tüzijáték"
+msgstr "Tűzijáték"
 
-#: ../hacks/config/pyro.xml.h:11
+#: hacks/config/pyro.xml.h:11
 msgid "Pyro draws exploding fireworks. Blah blah blah. Written by Jamie Zawinski."
 msgstr "A Pyro robbanó tűzijátékot rajzol, bla-bla-bla. Írta Jamie Zawinski."
 
-#: ../hacks/config/qix.xml.h:1
+#: hacks/config/qix.xml.h:1
 msgid "Additive Colors"
 msgstr "Additív színek"
 
-#: ../hacks/config/qix.xml.h:3
+#: hacks/config/qix.xml.h:3
 msgid "Corners"
 msgstr "Sarkok"
 
-#: ../hacks/config/qix.xml.h:11
+#: hacks/config/qix.xml.h:11
 msgid "Line Segments"
 msgstr "Vonaldarabkák"
 
-#: ../hacks/config/qix.xml.h:12
+#: hacks/config/qix.xml.h:12
 msgid "Linear Motion"
 msgstr "Lineáris mozgás"
 
-#: ../hacks/config/qix.xml.h:15
+#: hacks/config/qix.xml.h:15
 msgid "Max Size"
 msgstr "Max. méret"
 
-#: ../hacks/config/qix.xml.h:16
+#: hacks/config/qix.xml.h:16
 msgid "Qix"
 msgstr "Qix"
 
-#: ../hacks/config/qix.xml.h:17
+#: hacks/config/qix.xml.h:17
 msgid "Random Motion"
 msgstr "Véletlen mozgás"
 
-#: ../hacks/config/qix.xml.h:23
+#: hacks/config/qix.xml.h:23
 msgid "Subtractive Colors"
 msgstr "Szubtraktív színek"
 
-#: ../hacks/config/qix.xml.h:24
+#: hacks/config/qix.xml.h:24
 msgid ""
 "This is the swiss army chainsaw of qix programs. It bounces a series of line "
 "segments around the screen, and uses variations on this basic motion pattern "
@@ -6923,15 +7241,15 @@ msgstr ""
 "vonaldarabok, kitöltött sokszögek, egymást átfedő áttetsző területek... Írta "
 "Jamie Zawinski."
 
-#: ../hacks/config/qix.xml.h:25
+#: hacks/config/qix.xml.h:25
 msgid "Transparent"
 msgstr "Átlátszó"
 
-#: ../hacks/config/queens.xml.h:2
+#: hacks/config/queens.xml.h:2
 msgid "Queens"
 msgstr "Királynők"
 
-#: ../hacks/config/queens.xml.h:5
+#: hacks/config/queens.xml.h:5
 msgid ""
 "Solves the N-Queens problem (where, in this program, N is between 5 and 10 "
 "queens.) The problem is: how may one place N queens on an NxN chessboard "
@@ -6941,16 +7259,16 @@ msgstr ""
 "között lehet). A feladvány: hogy lehet lerakni N számú vezért egy NxN "
 "nagyságú sakktáblára úgy, hogy ne üssék egymást? Írta Blair Tennessy"
 
-#: ../hacks/config/rd-bomb.xml.h:1
+#: hacks/config/rd-bomb.xml.h:1
 msgid "/"
 msgstr "/"
 
-#: ../hacks/config/rd-bomb.xml.h:3
+#: hacks/config/rd-bomb.xml.h:3
 #, no-c-format
 msgid "1%"
 msgstr "1%"
 
-#: ../hacks/config/rd-bomb.xml.h:7
+#: hacks/config/rd-bomb.xml.h:7
 msgid ""
 "Another variation of the `Bomb' program by Scott Draves. This draws a grid "
 "of growing square-like shapes that, once they overtake each other, react in "
@@ -6960,75 +7278,75 @@ msgstr ""
 "négyzetekből álló rácsokat ábrázol, melyek egymásba nyúlva kiszámíthatatlan "
 "módon hatnak egymásra. Az \"RD\" jelentése: reakció-diffúzió."
 
-#: ../hacks/config/rd-bomb.xml.h:8
+#: hacks/config/rd-bomb.xml.h:8
 msgid "Epoch"
 msgstr "Kezdet"
 
-#: ../hacks/config/rd-bomb.xml.h:10
+#: hacks/config/rd-bomb.xml.h:10
 msgid "Fill Screen"
 msgstr "Képernyő feltöltése"
 
-#: ../hacks/config/rd-bomb.xml.h:14
+#: hacks/config/rd-bomb.xml.h:14
 msgid "RD-Bomb"
 msgstr "RD-bomba"
 
-#: ../hacks/config/rd-bomb.xml.h:15
+#: hacks/config/rd-bomb.xml.h:15
 msgid "Reaction/Difusion"
 msgstr "Reakció/diffúzió"
 
-#: ../hacks/config/rd-bomb.xml.h:16
+#: hacks/config/rd-bomb.xml.h:16
 msgid "Seed Radius"
 msgstr "Magsugár"
 
-#: ../hacks/config/rd-bomb.xml.h:19 ../hacks/config/twang.xml.h:12
+#: hacks/config/rd-bomb.xml.h:19 hacks/config/twang.xml.h:12
 msgid "Tile Size"
 msgstr "Csempeméret"
 
-#: ../hacks/config/rd-bomb.xml.h:22
+#: hacks/config/rd-bomb.xml.h:22
 msgid "Wander Speed"
 msgstr "Vándorlás sebessége"
 
-#: ../hacks/config/ripples.xml.h:1
+#: hacks/config/ripples.xml.h:1
 msgid "Big Drops"
 msgstr "Nagy cseppek"
 
-#: ../hacks/config/ripples.xml.h:2
+#: hacks/config/ripples.xml.h:2
 msgid "Colors    Two"
 msgstr "Színek     Kettő"
 
-#: ../hacks/config/ripples.xml.h:3
+#: hacks/config/ripples.xml.h:3
 msgid "Drizzle"
 msgstr "Szitáló eső"
 
-#: ../hacks/config/ripples.xml.h:5
+#: hacks/config/ripples.xml.h:5
 msgid "Grab Screen Image"
 msgstr "Képernyőkép használata"
 
-#: ../hacks/config/ripples.xml.h:6
+#: hacks/config/ripples.xml.h:6
 msgid "Lighting Effect"
 msgstr "Villám-effektus"
 
-#: ../hacks/config/ripples.xml.h:8
+#: hacks/config/ripples.xml.h:8
 msgid "Moving Splashes"
 msgstr "Mozgó foltok"
 
-#: ../hacks/config/ripples.xml.h:9
+#: hacks/config/ripples.xml.h:9
 msgid "Psychedelic Colors"
 msgstr "Pszichedelikus színek"
 
-#: ../hacks/config/ripples.xml.h:10
+#: hacks/config/ripples.xml.h:10
 msgid "Ripples"
 msgstr "Fodrozódás"
 
-#: ../hacks/config/ripples.xml.h:12
+#: hacks/config/ripples.xml.h:12
 msgid "Small Drops"
 msgstr "Kis cseppek"
 
-#: ../hacks/config/ripples.xml.h:13
+#: hacks/config/ripples.xml.h:13
 msgid "Storm"
 msgstr "Vihar"
 
-#: ../hacks/config/ripples.xml.h:14
+#: hacks/config/ripples.xml.h:14
 msgid ""
 "This draws rippling interference patterns like splashing water. With the -"
 "water option, it manipulates your desktop image to look like something is "
@@ -7038,20 +7356,19 @@ msgstr ""
 "water opcióval a munkaasztal képét úgy dolgozza fel, mintha valami "
 "folyamatosan csepegne rá. Írta Tom Hammersley."
 
-#: ../hacks/config/rocks.xml.h:7
+#: hacks/config/rocks.xml.h:7
 msgid "Rocks"
 msgstr "Sziklák"
 
-#: ../hacks/config/rocks.xml.h:8
+#: hacks/config/rocks.xml.h:8
 msgid "Rotation"
 msgstr "Forgatás"
 
-#: ../hacks/config/rocks.xml.h:10
+#: hacks/config/rocks.xml.h:10
 msgid "Steering"
 msgstr "Elfordulás"
 
-#. #### -right3d [Red]
-#: ../hacks/config/rocks.xml.h:12
+#: hacks/config/rocks.xml.h:11
 msgid ""
 "This draws an animation of flight through an asteroid field, with changes in "
 "rotation and direction. It can also display 3D separations for red/blue "
@@ -7062,15 +7379,15 @@ msgstr ""
 "is kapcsolható, ha 3D-s szemüveggel rendelkezik! A program nagyrészt Jamie "
 "Zawinski munkája."
 
-#: ../hacks/config/rocks.xml.h:14
+#: hacks/config/rocks.xml.h:13
 msgid "Velocity"
 msgstr "Sebesség"
 
-#: ../hacks/config/rorschach.xml.h:7
+#: hacks/config/rorschach.xml.h:7
 msgid "Rorschach"
 msgstr "Rorschach"
 
-#: ../hacks/config/rorschach.xml.h:9
+#: hacks/config/rorschach.xml.h:9
 msgid ""
 "This generates random inkblot patterns. The algorithm is deceptively simple "
 "for how well it works; it merely walks a dot around the screen randomly, and "
@@ -7084,15 +7401,15 @@ msgstr ""
 "tükrözi. Ha különféle ábrákat ismer fel a pacákban, az csak az Ön "
 "képzeletének játéka lehet. Írta Jamie Zawinski."
 
-#: ../hacks/config/rorschach.xml.h:10
+#: hacks/config/rorschach.xml.h:10
 msgid "With X Symmetry"
 msgstr "X szimmetriával"
 
-#: ../hacks/config/rorschach.xml.h:11
+#: hacks/config/rorschach.xml.h:11
 msgid "With Y Symmetry"
 msgstr "Y szimmetriával"
 
-#: ../hacks/config/rotor.xml.h:1
+#: hacks/config/rotor.xml.h:1
 msgid ""
 "Another ancient xlock demo, this one by Tom Lawrence. It draws a line "
 "segment moving along a complex spiraling curve."
@@ -7100,19 +7417,19 @@ msgstr ""
 "Ez is egy ősrégi xlock demó, Írta Tim Lawrence. Egy vonaldarabot rajzol meg, "
 "amely egy összetett spirális görbén mozog."
 
-#: ../hacks/config/rotor.xml.h:4 ../hacks/config/wander.xml.h:9
+#: hacks/config/rotor.xml.h:4 hacks/config/wander.xml.h:9
 msgid "Length"
 msgstr "Hossz"
 
-#: ../hacks/config/rotor.xml.h:8
+#: hacks/config/rotor.xml.h:8
 msgid "Rotor"
 msgstr "Rotor"
 
-#: ../hacks/config/rotzoomer.xml.h:3
+#: hacks/config/rotzoomer.xml.h:3
 msgid "Animate"
 msgstr "Animálás"
 
-#: ../hacks/config/rotzoomer.xml.h:4
+#: hacks/config/rotzoomer.xml.h:4
 msgid ""
 "Creates a collage of rotated and scaled portions of the screen. Written by "
 "Claudio Matsuoka."
@@ -7120,27 +7437,27 @@ msgstr ""
 "A munkaasztal képének egyes darabjait elforgatva, átméretezve jeleníti meg. "
 "Írta Claudio Matsuoka."
 
-#: ../hacks/config/rotzoomer.xml.h:6
+#: hacks/config/rotzoomer.xml.h:6
 msgid "Rectangle Count"
 msgstr "Téglalapok száma"
 
-#: ../hacks/config/rotzoomer.xml.h:7
+#: hacks/config/rotzoomer.xml.h:7
 msgid "RotZoomer"
 msgstr "RotZoomer"
 
-#: ../hacks/config/rotzoomer.xml.h:8
+#: hacks/config/rotzoomer.xml.h:8
 msgid "Stationary Rectangles"
 msgstr "Álló téglalapok"
 
-#: ../hacks/config/rotzoomer.xml.h:9
+#: hacks/config/rotzoomer.xml.h:9
 msgid "Sweeping Arcs"
 msgstr "Széles körívek"
 
-#: ../hacks/config/rotzoomer.xml.h:11
+#: hacks/config/rotzoomer.xml.h:11
 msgid "Wandering Rectangles"
 msgstr "Vonuló téglalapok"
 
-#: ../hacks/config/rubik.xml.h:2
+#: hacks/config/rubik.xml.h:2
 msgid ""
 "Draws a Rubik's Cube that rotates in three dimensions and repeatedly "
 "shuffles and solves itself. Another fine GL hack by Marcelo Vianna."
@@ -7148,15 +7465,15 @@ msgstr ""
 "Három dimenzióban forgó Rubik-kockát jelenít meg, mely folyamatosan változva "
 "mintegy kirakja saját magát. Egy újabb OpenGL-es hack Marcelo Viannától."
 
-#: ../hacks/config/rubik.xml.h:5
+#: hacks/config/rubik.xml.h:5
 msgid "Rubik"
 msgstr "Rubik"
 
-#: ../hacks/config/rubik.xml.h:7
+#: hacks/config/rubik.xml.h:7
 msgid "Show Shuffling"
 msgstr "Keverés mutatása"
 
-#: ../hacks/config/sballs.xml.h:3
+#: hacks/config/sballs.xml.h:3
 msgid ""
 "Draws an animation of textured balls spinning like crazy in GL. Requires "
 "OpenGL, and a machine with fast hardware support for texture maps. Written "
@@ -7166,27 +7483,27 @@ msgstr ""
 "textúratérképekhez gyors hardvertámogatással rendelkező gép szükséges hozzá. "
 "Írta Eric Lassauge &lt;lassauge@users.sourceforge.net&gt;."
 
-#: ../hacks/config/sballs.xml.h:8
+#: hacks/config/sballs.xml.h:8
 msgid "Plane"
 msgstr "Sík"
 
-#: ../hacks/config/sballs.xml.h:9
+#: hacks/config/sballs.xml.h:9
 msgid "Pyramid"
 msgstr "Piramis"
 
-#: ../hacks/config/sballs.xml.h:11
+#: hacks/config/sballs.xml.h:11
 msgid "Sballs"
 msgstr "S-labdák"
 
-#: ../hacks/config/sballs.xml.h:15
+#: hacks/config/sballs.xml.h:15
 msgid "Star"
 msgstr "Csillag"
 
-#: ../hacks/config/shadebobs.xml.h:7
+#: hacks/config/shadebobs.xml.h:7
 msgid "ShadeBobs"
 msgstr "Árnyékvetületek"
 
-#: ../hacks/config/shadebobs.xml.h:11
+#: hacks/config/shadebobs.xml.h:11
 msgid ""
 "This draws smoothly-shaded oscillating oval patterns, that look something "
 "like vapor trails or neon tubes. Written by Shane Smit."
@@ -7194,23 +7511,11 @@ msgstr ""
 "Ez lágyan árnyékolt, rezgő ovális alakú mintákat rajzol, ami gőznyomokra "
 "vagy neoncsövekre emlékeztet. Írta Shane Smit."
 
-#: ../hacks/config/sierpinski.xml.h:6
-msgid "Sierpinski"
-msgstr "Sierpinski"
-
-#: ../hacks/config/sierpinski.xml.h:10
-msgid ""
-"This draws the two-dimensional variant of the recursive Sierpinski triangle "
-"fractal. Written by Desmond Daignault."
-msgstr ""
-"A rekurzív Sierpinski-féle háromszög-fraktál egy kétdimenziós variánsát "
-"jeleníti meg. Írta Desmond Daignault."
-
-#: ../hacks/config/sierpinski3d.xml.h:7
+#: hacks/config/sierpinski3d.xml.h:7
 msgid "Sierpinski3D"
 msgstr "Sierpinski3D"
 
-#: ../hacks/config/sierpinski3d.xml.h:11
+#: hacks/config/sierpinski3d.xml.h:11
 msgid ""
 "This draws the three-dimensional variant of the recursive Sierpinski "
 "triangle fractal, using GL. Written by Tim Robinson and Jamie Zawinski."
@@ -7218,20 +7523,32 @@ msgstr ""
 "A rekurzív Sierpinski-féle háromszög-fraktál egy háromdimenziós variánsát "
 "jeleníti meg OpenGL-lel. Írta Tim Robinson és Jamie Zawinski."
 
-#: ../hacks/config/slidescreen.xml.h:1 ../hacks/config/twang.xml.h:1
-#: ../hacks/config/zoom.xml.h:1
+#: hacks/config/sierpinski.xml.h:6
+msgid "Sierpinski"
+msgstr "Sierpinski"
+
+#: hacks/config/sierpinski.xml.h:10
+msgid ""
+"This draws the two-dimensional variant of the recursive Sierpinski triangle "
+"fractal. Written by Desmond Daignault."
+msgstr ""
+"A rekurzív Sierpinski-féle háromszög-fraktál egy kétdimenziós variánsát "
+"jeleníti meg. Írta Desmond Daignault."
+
+#: hacks/config/slidescreen.xml.h:1 hacks/config/twang.xml.h:1
+#: hacks/config/zoom.xml.h:1
 msgid "Border Width"
 msgstr "Szegély szélessége"
 
-#: ../hacks/config/slidescreen.xml.h:4
+#: hacks/config/slidescreen.xml.h:4
 msgid "Slide Speed"
 msgstr "Eltolás sebessége"
 
-#: ../hacks/config/slidescreen.xml.h:5
+#: hacks/config/slidescreen.xml.h:5
 msgid "SlideScreen"
 msgstr "Elcsúszó képernyők"
 
-#: ../hacks/config/slidescreen.xml.h:8
+#: hacks/config/slidescreen.xml.h:8
 msgid ""
 "This takes an image, divides it into a grid, and then randomly shuffles the "
 "squares around as if it was one of those annoying ``16-puzzle'' games, where "
@@ -7245,11 +7562,11 @@ msgstr ""
 "bosszantóan nehéz tud lenni, sokkal szórakoztatóbb nézni az automatikus "
 "permutálódást. Írta Jamie Zawinski."
 
-#: ../hacks/config/slip.xml.h:6
+#: hacks/config/slip.xml.h:6
 msgid "Slip"
 msgstr "Slip"
 
-#: ../hacks/config/slip.xml.h:10
+#: hacks/config/slip.xml.h:10
 msgid ""
 "This program throws some random bits on the screen, then sucks them through "
 "a jet engine and spews them out the other side. To avoid turning the image "
@@ -7266,64 +7583,67 @@ msgstr ""
 "munkaasztal képét kezdi átalakítani. Írta Scott Draves, továbbfejlesztette: "
 "Jamie Zawinski."
 
-#: ../hacks/config/sonar.xml.h:1
+#: hacks/config/sonar.xml.h:1
 msgid "Ping known hosts"
 msgstr "Isnert kiszolgálók pingelése"
 
-#: ../hacks/config/sonar.xml.h:2
+#: hacks/config/sonar.xml.h:2
 msgid "Ping mode..."
 msgstr "Pingelési mód..."
 
-#: ../hacks/config/sonar.xml.h:3
+#: hacks/config/sonar.xml.h:3
 msgid "Ping subnet/24 (254 hosts)"
 msgstr "Alhálózat/24 pingelése (254 gép)"
 
-#: ../hacks/config/sonar.xml.h:4
+#: hacks/config/sonar.xml.h:4
 msgid "Ping subnet/25 (126 hosts)"
 msgstr "Alhálózat/25 pingelése (126 gép)"
 
-#: ../hacks/config/sonar.xml.h:5
+#: hacks/config/sonar.xml.h:5
 msgid "Ping subnet/26 (62 hosts)"
 msgstr "Alhálózat/26 pingelése (62 gép)"
 
-#: ../hacks/config/sonar.xml.h:6
+#: hacks/config/sonar.xml.h:6
 msgid "Ping subnet/27 (31 hosts)"
 msgstr "Alhálózat/27 pingelése (31 gép)"
 
-#: ../hacks/config/sonar.xml.h:7
+#: hacks/config/sonar.xml.h:7
 msgid "Ping subnet/28 (14 hosts)"
 msgstr "Alhálózat/28 pingelése (14 gép)"
 
-#: ../hacks/config/sonar.xml.h:8
+#: hacks/config/sonar.xml.h:8
 msgid "Ping subnet/29 (6 hosts)"
 msgstr "Alhálózat/29 pingelése (6 gép)"
 
-#: ../hacks/config/sonar.xml.h:9
+#: hacks/config/sonar.xml.h:9
 msgid "Ping subnet/30 (2 hosts)"
 msgstr "Alhálózat/30 pingelése (2 gép)"
 
-#: ../hacks/config/sonar.xml.h:10
+#: hacks/config/sonar.xml.h:10
 msgid "Resolve Host Names"
 msgstr "Kiszolgálónevek feloldása"
 
-#: ../hacks/config/sonar.xml.h:11
+#: hacks/config/sonar.xml.h:11
+msgid "Show Ping Times"
+msgstr "Ping idők mutatása"
+
+#: hacks/config/sonar.xml.h:12
 msgid "Simulation Team Members"
 msgstr "Szimulált csapatok létszáma"
 
-#: ../hacks/config/sonar.xml.h:12
+#: hacks/config/sonar.xml.h:13
 msgid "Sonar"
 msgstr "Sonar"
 
-#: ../hacks/config/sonar.xml.h:13
+#: hacks/config/sonar.xml.h:14
 msgid "Team A Name"
 msgstr "A csapat neve"
 
-#: ../hacks/config/sonar.xml.h:14
+#: hacks/config/sonar.xml.h:15
 msgid "Team B Name"
 msgstr "B csapat neve"
 
-#. #### -ttl [90]
-#: ../hacks/config/sonar.xml.h:16
+#: hacks/config/sonar.xml.h:16
 msgid ""
 "This program draws a simulation of a sonar screen. By default, it displays a "
 "random assortment of ``bogies'' on the screen, but if installed as \"setuid "
@@ -7336,36 +7656,35 @@ msgstr ""
 "ként lett telepítve, pingelheti az alhálózatot, megmutatva a hálózat egyéb "
 "gépeinek aktivitását. Írta Stephen Martin és Jamie Zawinski."
 
-#: ../hacks/config/sonar.xml.h:17
+#: hacks/config/sonar.xml.h:17
 msgid "vs."
 msgstr " - "
 
-#: ../hacks/config/speedmine.xml.h:1
+#: hacks/config/speedmine.xml.h:1
 msgid "Allow Wall Collisions"
 msgstr "Falütközések engedélyezése"
 
-#: ../hacks/config/speedmine.xml.h:2
+#: hacks/config/speedmine.xml.h:2
 msgid "Display Crosshair"
 msgstr "Célkereszt mutatása"
 
-#: ../hacks/config/speedmine.xml.h:7
+#: hacks/config/speedmine.xml.h:7
 msgid "Max Velocity"
 msgstr "Legnagyobb sebesség"
 
-#: ../hacks/config/speedmine.xml.h:8
+#: hacks/config/speedmine.xml.h:8
 msgid "Mine Shaft"
 msgstr "Bányaakna"
 
-#: ../hacks/config/speedmine.xml.h:9
+#: hacks/config/speedmine.xml.h:9
 msgid "Present Bonuses"
 msgstr "A jelenlegi bónuszok"
 
-#: ../hacks/config/speedmine.xml.h:10
+#: hacks/config/speedmine.xml.h:10
 msgid "Rocky Walls"
 msgstr "Sziklás falak"
 
-#. #### -psychedelic
-#: ../hacks/config/speedmine.xml.h:13
+#: hacks/config/speedmine.xml.h:12
 msgid ""
 "Simulates speeding down a rocky mineshaft, or a funky dancing worm. Written "
 "by Conrad Parker."
@@ -7373,32 +7692,23 @@ msgstr ""
 "Egy bányaaknában való lefelé száguldást szimulál vagy egy táncoló kukacot. "
 "Írta Conrad Parker."
 
-#: ../hacks/config/speedmine.xml.h:17
+#: hacks/config/speedmine.xml.h:16
 msgid "SpeedMine"
 msgstr "SpeedMine"
 
-#: ../hacks/config/speedmine.xml.h:18
+#: hacks/config/speedmine.xml.h:17
 msgid "Thrust"
 msgstr "Tolóerő"
 
-#: ../hacks/config/speedmine.xml.h:20 ../hacks/config/worm.xml.h:11
+#: hacks/config/speedmine.xml.h:19 hacks/config/worm.xml.h:10
 msgid "Worm"
 msgstr "Kukac"
 
-#: ../hacks/config/sphere.xml.h:1
-msgid ""
-"Another of the classic screenhacks of the distant past, this one draws "
-"shaded spheres in multiple colors. This hack traces its lineage back to Tom "
-"Duff in 1982."
-msgstr ""
-"Egy klasszikus képernyővédő a hőskorból. Többféle színű árnyékolt gömböket "
-"jelenít meg. Az első változatát Tom Duff készítette 1982-ben."
-
-#: ../hacks/config/sphereeversion.xml.h:1
+#: hacks/config/sphereeversion.xml.h:1
 msgid "SphereEversion"
 msgstr "Gömbösödés"
 
-#: ../hacks/config/sphereeversion.xml.h:2
+#: hacks/config/sphereeversion.xml.h:2
 msgid ""
 "SphereEversion draws an animation of a sphere being turned inside out. A "
 "sphere can be turned inside out, without any tears, sharp creases or "
@@ -7415,15 +7725,15 @@ msgstr ""
 "része az XScreenSaver csomagnak, de letölthető erről a címről: &lt;http://"
 "www.dgp.utoronto.ca/~mjmcguff/eversion/&gt;."
 
-#: ../hacks/config/spheremonics.xml.h:20
+#: hacks/config/spheremonics.xml.h:20
 msgid "Smoothed Lines"
 msgstr "Simított vonalak"
 
-#: ../hacks/config/spheremonics.xml.h:23
+#: hacks/config/spheremonics.xml.h:23
 msgid "Spheremonics"
 msgstr "Szférák"
 
-#: ../hacks/config/spheremonics.xml.h:24
+#: hacks/config/spheremonics.xml.h:24
 msgid ""
 "These closed objects are commonly called spherical harmonics, although they "
 "are only remotely related to the mathematical definition found in the "
@@ -7435,11 +7745,20 @@ msgstr ""
 "definícióival, a legjelentősebbek ezek közül az impulzusmomentum "
 "operátorainak sajátfüggvényei. Írta Paul Bourke és Jamie Zawinski."
 
-#: ../hacks/config/spiral.xml.h:2 ../hacks/config/superquadrics.xml.h:2
+#: hacks/config/sphere.xml.h:1
+msgid ""
+"Another of the classic screenhacks of the distant past, this one draws "
+"shaded spheres in multiple colors. This hack traces its lineage back to Tom "
+"Duff in 1982."
+msgstr ""
+"Egy klasszikus képernyővédő a hőskorból. Többféle színű árnyékolt gömböket "
+"jelenít meg. Az első változatát Tom Duff készítette 1982-ben."
+
+#: hacks/config/spiral.xml.h:2 hacks/config/superquadrics.xml.h:2
 msgid "Cycles"
 msgstr "Körök"
 
-#: ../hacks/config/spiral.xml.h:7
+#: hacks/config/spiral.xml.h:7
 msgid ""
 "Moving circular patterns, by Peter Schmitzberger. Moving circular patterns "
 "means moire; interference patterns, of course."
@@ -7447,11 +7766,11 @@ msgstr ""
 "Mozgó körökből álló mintát jelenít meg. Írta Peter Schmitzberger. A mozgó, "
 "körökből álló minták természetesen Moire-effektust jelentenek."
 
-#: ../hacks/config/spiral.xml.h:11
+#: hacks/config/spiral.xml.h:11
 msgid "Spiral"
 msgstr "Spirál"
 
-#: ../hacks/config/spotlight.xml.h:1
+#: hacks/config/spotlight.xml.h:1
 msgid ""
 "Draws a spotlight scanning across a black screen, illuminating the "
 "underlying desktop when it passes. Written by Rick Schultz."
@@ -7459,20 +7778,19 @@ msgstr ""
 "A fekete képernyőt pásztázó reflektorfényt rajzol, amely megvilágítja az "
 "alatta lévő asztalt. Írta Rick Schultz."
 
-#: ../hacks/config/spotlight.xml.h:6
+#: hacks/config/spotlight.xml.h:6
 msgid "Spotlight"
 msgstr "Reflektorfény"
 
-#: ../hacks/config/sproingies.xml.h:3
+#: hacks/config/sproingies.xml.h:3
 msgid "Q-Bert meets Marble Madness! Written by Ed Mackey."
 msgstr "Q-Bert plusz Marble Madness! Írta Ed Mackey"
 
-#: ../hacks/config/sproingies.xml.h:9
+#: hacks/config/sproingies.xml.h:9
 msgid "Sproingies"
 msgstr "Sproingies"
 
-#. #### -cycle
-#: ../hacks/config/squiral.xml.h:4
+#: hacks/config/squiral.xml.h:3
 msgid ""
 "Draws a set of interacting, square-spiral-producing automata. The spirals "
 "grow outward until they hit something, then they go around it. Written by "
@@ -7482,31 +7800,31 @@ msgstr ""
 "program. A spirálok kifelé nőnek egészen addig, amíg valamibe bele nem "
 "ütköznek - ekkor az objektumot megkerülik. Írta Jeff Epler."
 
-#: ../hacks/config/squiral.xml.h:6
+#: hacks/config/squiral.xml.h:5
 msgid "Handedness"
 msgstr "Bal- vagy jobbkezesség"
 
-#: ../hacks/config/squiral.xml.h:8
+#: hacks/config/squiral.xml.h:7
 msgid "Left"
 msgstr "Bal"
 
-#: ../hacks/config/squiral.xml.h:12 ../hacks/config/twang.xml.h:8
+#: hacks/config/squiral.xml.h:11 hacks/config/twang.xml.h:8
 msgid "Randomness"
 msgstr "Véletlenszerűség"
 
-#: ../hacks/config/squiral.xml.h:13
+#: hacks/config/squiral.xml.h:12
 msgid "Right"
 msgstr "Jobb"
 
-#: ../hacks/config/squiral.xml.h:18
+#: hacks/config/squiral.xml.h:17
 msgid "Squiral"
 msgstr "Squiral"
 
-#: ../hacks/config/ssystem.xml.h:1
+#: hacks/config/ssystem.xml.h:1
 msgid "SSystem"
 msgstr "Naprendszer"
 
-#: ../hacks/config/ssystem.xml.h:2
+#: hacks/config/ssystem.xml.h:2
 msgid ""
 "SSystem is a GL Solar System simulator. It simulates flybys of Sun, the nine "
 "planets and a few major satellites, with four camera modes. Written by Raul "
@@ -7533,11 +7851,11 @@ msgstr ""
 "xscreensaverrel. Zaklassa nyugodtan a Celestia szerzőit az xscreensaver "
 "támogatás beépítéséért!"
 
-#: ../hacks/config/stairs.xml.h:6
+#: hacks/config/stairs.xml.h:6
 msgid "Stairs"
 msgstr "Lépcsők"
 
-#: ../hacks/config/stairs.xml.h:8
+#: hacks/config/stairs.xml.h:8
 msgid ""
 "by Marcelo Vianna's third Escher GL hack, this one draws an ``infinite'' "
 "staircase."
@@ -7545,20 +7863,19 @@ msgstr ""
 "Marcelo Vianna harmadik Escher GL hack-je, ez egy \"végtelen\" lépcsőházat "
 "rajzol."
 
-#: ../hacks/config/starfish.xml.h:1
+#: hacks/config/starfish.xml.h:1
 msgid "Color Gradients"
 msgstr "Színátmenetek"
 
-#: ../hacks/config/starfish.xml.h:7
+#: hacks/config/starfish.xml.h:7
 msgid "Pulsating Blob"
 msgstr "Pulzáló folt"
 
-#: ../hacks/config/starfish.xml.h:10
+#: hacks/config/starfish.xml.h:10
 msgid "Starfish"
 msgstr "Tengeri csillag"
 
-#. #### -no-cycle
-#: ../hacks/config/starfish.xml.h:14
+#: hacks/config/starfish.xml.h:13
 msgid ""
 "This generates a sequence of undulating, throbbing, star-like patterns which "
 "pulsate, rotate, and turn inside out. Another display mode uses these shapes "
@@ -7569,69 +7886,51 @@ msgstr ""
 "pulzálnak, forognak, kifordulnak. Egy másik módban az alakzatok cserélődő "
 "színmezőkre kerülnek. A mozgás nagyon organikus. Írta Jamie Zawinski."
 
-#: ../hacks/config/starwars.xml.h:2
+#: hacks/config/starwars.xml.h:2
 msgid "Anti-aliased Lines"
 msgstr "Élsimított vonalak"
 
-#: ../hacks/config/starwars.xml.h:3
-msgid "Centered Text"
-msgstr "Középre helyezett szöveg"
-
-#: ../hacks/config/starwars.xml.h:4
+#: hacks/config/starwars.xml.h:4
 msgid ""
 "Draws a stream of text slowly scrolling into the distance at an angle, over "
-"a star field, like at the beginning of the movie of the same name. Written "
-"by Jamie Zawinski and Claudio Matauoka."
+"a star field, like at the beginning of the movie of the same name. The text "
+"can be the output of a program or the contents of a file or URL, as "
+"configured on the \"Advanced\" tab of the main Screensaver Preferences "
+"window. Written by Jamie Zawinski and Claudio Matauoka."
 msgstr ""
 "Folyamatosan elgördülő, távolodó szöveget jelenít meg csillagmező fölött, "
-"hasonlóan a híres film nyitóképsorához. Írta Jamie Zawinski és Claudio "
+"hasonlóan az azonos című film nyitóképsorához. A szöveg lehet egy program kimenete, vagy egy fájl vagy URL tartalma, ahogyan az a fő Képernyővédő beállításai ablak Bővített fülén be van állítva. Írta Jamie Zawinski és Claudio "
 "Matauoka."
 
-#: ../hacks/config/starwars.xml.h:5
+#: hacks/config/starwars.xml.h:5
 msgid "Fade Out"
 msgstr "Elhalványulás"
 
-#: ../hacks/config/starwars.xml.h:7
-msgid "Flush Left Text"
-msgstr "Szöveg balra"
-
-#: ../hacks/config/starwars.xml.h:8
-msgid "Flush Right Text"
-msgstr "Szöveg jobbra"
-
-#: ../hacks/config/starwars.xml.h:9
-msgid "Font Point Size"
-msgstr "Betűméret pontokban"
-
-#: ../hacks/config/starwars.xml.h:10
+#: hacks/config/starwars.xml.h:10
 msgid "Scroll Speed"
 msgstr "Görgetés sebessége"
 
-#: ../hacks/config/starwars.xml.h:13
+#: hacks/config/starwars.xml.h:13
 msgid "Star Rotation Speed"
 msgstr "Csillagok forgatásának sebessége"
 
-#: ../hacks/config/starwars.xml.h:14
+#: hacks/config/starwars.xml.h:14
 msgid "StarWars"
 msgstr "Csillagok háborúja"
 
-#: ../hacks/config/starwars.xml.h:15
-msgid "Text Columns"
-msgstr "Szövegoszlopok"
-
-#: ../hacks/config/starwars.xml.h:16
-msgid "Text Lines"
-msgstr "Szövegsorok"
+#: hacks/config/starwars.xml.h:18
+msgid "Texture-Mapped Font"
+msgstr "Textúra-leképezett betűk"
 
-#: ../hacks/config/starwars.xml.h:18
+#: hacks/config/starwars.xml.h:19
 msgid "Thick Lines"
 msgstr "Vékony vonalak"
 
-#: ../hacks/config/starwars.xml.h:19
+#: hacks/config/starwars.xml.h:20
 msgid "Wrap Long Lines"
 msgstr "Hosszú sorok tördelése"
 
-#: ../hacks/config/stonerview.xml.h:1
+#: hacks/config/stonerview.xml.h:1
 msgid ""
 "Chains of colorful squares dance around each other in complex spiral "
 "patterns. Written by Andrew Plotkin, based on SGI's `electropaint' "
@@ -7641,15 +7940,15 @@ msgstr ""
 "láncolatát jeleníti meg. Írta Andrew Plotkin, az SGI \"electropaint\" nevű "
 "képernyővédője alapján."
 
-#: ../hacks/config/stonerview.xml.h:3
+#: hacks/config/stonerview.xml.h:3
 msgid "StonerView"
 msgstr "StonerView"
 
-#: ../hacks/config/strange.xml.h:6
+#: hacks/config/strange.xml.h:6
 msgid "Strange"
 msgstr "Strange"
 
-#: ../hacks/config/strange.xml.h:7
+#: hacks/config/strange.xml.h:7
 msgid ""
 "This draws strange attractors: it's a colorful, unpredictably-animating "
 "field of dots that swoops and twists around. The motion is very nice. "
@@ -7659,30 +7958,42 @@ msgstr ""
 "ponthalmazokat rajzol ki, melyek folyamatosan és kiszámíthatatlanul  "
 "mozognak, csavarodnak. A mozgás nagyon látványos. Írta Massimino Pascal."
 
-#: ../hacks/config/substrate.xml.h:4
+#: hacks/config/substrate.xml.h:2 hacks/config/xplanet.xml.h:2
+#, no-c-format
+msgid "0%"
+msgstr "0%"
+
+#: hacks/config/substrate.xml.h:5
+msgid "Circle Percentage"
+msgstr "Körvonalak százalékban"
+
+#: hacks/config/substrate.xml.h:9
 msgid "Initial Cracks"
 msgstr "Kezdő töréspontok"
 
-#: ../hacks/config/substrate.xml.h:5
+#: hacks/config/substrate.xml.h:10
 msgid ""
 "Lines like crystals grow on a computational substrate. A simple "
 "perpendicular growth rule creates intricate city-like structures. By J. "
 "Tarbell and Mike Kershaw."
-msgstr "Egy számítógépes szubsztrátumban kristályokként növekvő vonalakat rajzol. Egy egyszerű merőleges növekedési szabály bonyolult, város-szerű struktúrákat hoz létre. Írta J. Tarbell és Mike Kershaw."
+msgstr ""
+"Egy számítógépes szubsztrátumban kristályokként növekvő vonalakat rajzol. "
+"Egy egyszerű merőleges növekedési szabály bonyolult, város-szerű "
+"struktúrákat hoz létre. Írta J. Tarbell és Mike Kershaw."
 
-#: ../hacks/config/substrate.xml.h:8
+#: hacks/config/substrate.xml.h:13
 msgid "Sandgrains"
 msgstr "Homokszemek"
 
-#: ../hacks/config/substrate.xml.h:12
+#: hacks/config/substrate.xml.h:17
 msgid "Substrate"
 msgstr "Szubsztrátum"
 
-#: ../hacks/config/substrate.xml.h:13
+#: hacks/config/substrate.xml.h:18
 msgid "Wireframe only"
 msgstr "Csak drótváz"
 
-#: ../hacks/config/superquadrics.xml.h:3
+#: hacks/config/superquadrics.xml.h:3
 msgid ""
 "Ed Mackey reports that he wrote the first version of this program in BASIC "
 "on a Commodore 64 in 1987, as a 320x200 black and white wireframe. Now it is "
@@ -7692,11 +8003,11 @@ msgstr ""
 "1987-ben, 320x200-as fekete-fehér drótvázzal. A mostani változat OpenGL-"
 "alapú, tükröződési effektusokkal."
 
-#: ../hacks/config/superquadrics.xml.h:11
+#: hacks/config/superquadrics.xml.h:11
 msgid "Superquadrics"
 msgstr "Szuperkvadrát"
 
-#: ../hacks/config/swirl.xml.h:4
+#: hacks/config/swirl.xml.h:4
 msgid ""
 "More flowing, swirly patterns. This version is by M. Dobie and R. Taylor, "
 "but you might have seen a Mac program similar to this called FlowFazer. "
@@ -7707,44 +8018,43 @@ msgstr ""
 "Mac programban. Egy hasonló koncepción alapuló Java kisalkalmazás is "
 "elérhető."
 
-#: ../hacks/config/swirl.xml.h:8
+#: hacks/config/swirl.xml.h:8
 msgid "Swirl"
 msgstr "Swirl"
 
-#: ../hacks/config/t3d.xml.h:1
+#: hacks/config/t3d.xml.h:1
 msgid "0 deg"
 msgstr "0 fok"
 
-#: ../hacks/config/t3d.xml.h:2
+#: hacks/config/t3d.xml.h:2
 msgid "5 Minute Tick Marks"
 msgstr "5 percenkénti jelzések"
 
-#: ../hacks/config/t3d.xml.h:3
+#: hacks/config/t3d.xml.h:3
 msgid "90 deg"
 msgstr "90 fok"
 
-#: ../hacks/config/t3d.xml.h:4
+#: hacks/config/t3d.xml.h:4
 msgid "Bigger"
 msgstr "Nagyobb"
 
-#: ../hacks/config/t3d.xml.h:5
+#: hacks/config/t3d.xml.h:5
 msgid "Cycle Seconds"
 msgstr "Másodpercek váltása"
 
-#: ../hacks/config/t3d.xml.h:10
+#: hacks/config/t3d.xml.h:10
 msgid "Minute Tick Marks"
 msgstr "Percenkénti jelzések"
 
-#: ../hacks/config/t3d.xml.h:12
+#: hacks/config/t3d.xml.h:12
 msgid "Smaller"
 msgstr "Kisebb"
 
-#: ../hacks/config/t3d.xml.h:14
+#: hacks/config/t3d.xml.h:14
 msgid "T3D"
 msgstr "T3D"
 
-#. #### -hsv [?]
-#: ../hacks/config/t3d.xml.h:16
+#: hacks/config/t3d.xml.h:15
 msgid ""
 "This draws a working analog clock composed of floating, throbbing bubbles. "
 "Written by Bernd Paysan."
@@ -7752,29 +8062,29 @@ msgstr ""
 "Olyan mutatós órát jelenít meg, mely lebegő, alakváltoztató buborékokból "
 "áll. Írta Bernd Paysan."
 
-#: ../hacks/config/t3d.xml.h:17
+#: hacks/config/t3d.xml.h:16
 msgid "Turn Side-to-Side"
 msgstr "Oldalról oldara fordítás"
 
-#: ../hacks/config/t3d.xml.h:18
+#: hacks/config/t3d.xml.h:17
 msgid "Wobbliness"
 msgstr "Imbolygósság"
 
-#: ../hacks/config/thornbird.xml.h:1
+#: hacks/config/thornbird.xml.h:1
 msgid ""
 "Displays a view of the ``Bird in a Thornbush'' fractal. Written by Tim "
 "Auckland."
 msgstr "Egy \"Madár a tövisbokorban\" fraktált rajzol ki. Írta Tim Auckland."
 
-#: ../hacks/config/thornbird.xml.h:6
+#: hacks/config/thornbird.xml.h:6
 msgid "Points"
 msgstr "Pontok"
 
-#: ../hacks/config/thornbird.xml.h:12
+#: hacks/config/thornbird.xml.h:12
 msgid "Thornbird"
 msgstr "Tövismadár"
 
-#: ../hacks/config/triangle.xml.h:2
+#: hacks/config/triangle.xml.h:2
 msgid ""
 "Generates random mountain ranges using iterative subdivision of triangles. "
 "Written by Tobias Gloth."
@@ -7782,12 +8092,11 @@ msgstr ""
 "Véletlenszerű hegyvonulatokat rajzol háromszögek iterált felosztása "
 "segítségével. Írta Tobias Gloth."
 
-#: ../hacks/config/triangle.xml.h:7
+#: hacks/config/triangle.xml.h:7
 msgid "Triangle"
 msgstr "Háromszög"
 
-#. #### -anim-step-size [3]
-#: ../hacks/config/truchet.xml.h:5
+#: hacks/config/truchet.xml.h:4
 msgid ""
 "This draws line- and arc-based Truchet patterns that tile the screen. "
 "Written by Adrian Likins."
@@ -7795,50 +8104,49 @@ msgstr ""
 "Vonalakból és ívekből álló Truchet-mintákat rajzol, melyek betöltik az egész "
 "képernyőt. Írta Adrian Likins."
 
-#: ../hacks/config/truchet.xml.h:6
+#: hacks/config/truchet.xml.h:5
 msgid "Truchet"
 msgstr "Truchet"
 
-#: ../hacks/config/twang.xml.h:2
+#: hacks/config/twang.xml.h:2
 msgid "Divides the screen into a grid, and plucks them. Written by Dan Bornstein."
 msgstr ""
 "A képernyőt rácsszerűen felosztja, majd a részeket mozgatja. Írta Dan "
 "Bornstein."
 
-#: ../hacks/config/twang.xml.h:6
+#: hacks/config/twang.xml.h:6
 msgid "Jumpy"
 msgstr "Ugrálós"
 
-#: ../hacks/config/twang.xml.h:11
+#: hacks/config/twang.xml.h:11
 msgid "Springiness"
 msgstr "Ruganyosság"
 
-#: ../hacks/config/twang.xml.h:13
+#: hacks/config/twang.xml.h:13
 msgid "Transference"
 msgstr "Átvitel"
 
-#: ../hacks/config/twang.xml.h:14
+#: hacks/config/twang.xml.h:14
 msgid "Twang"
 msgstr "Pengetés"
 
-#. #### -instring [?]
-#: ../hacks/config/vermiculate.xml.h:2
+#: hacks/config/vermiculate.xml.h:1
 msgid "Draws squiggly worm-like paths. Written by Tyler Pierce."
 msgstr "Tekergőző, féreg-szerű útvonalakat rajzol. Írta Tyler Pierce."
 
-#: ../hacks/config/vermiculate.xml.h:3
+#: hacks/config/vermiculate.xml.h:2
 msgid "Vermiculate"
 msgstr "Féregminta"
 
-#: ../hacks/config/vidwhacker.xml.h:2 ../hacks/config/webcollage.xml.h:2
+#: hacks/config/vidwhacker.xml.h:2
 msgid "2 seconds"
 msgstr "2 másodperc"
 
-#: ../hacks/config/vidwhacker.xml.h:4
+#: hacks/config/vidwhacker.xml.h:4
 msgid "Image Directory"
 msgstr "Képkönyvtár"
 
-#: ../hacks/config/vidwhacker.xml.h:5
+#: hacks/config/vidwhacker.xml.h:5
 msgid ""
 "This is actually just a shell script that grabs a frame of video from the "
 "system's video input, and then uses some PBM filters (chosen at random) to "
@@ -7854,11 +8162,11 @@ msgstr ""
 "másodpercig megmutatja, majd minden kezdődik elölről. Igen érdekes "
 "effektusokat tud generálni televíziós adásból."
 
-#: ../hacks/config/vidwhacker.xml.h:6
+#: hacks/config/vidwhacker.xml.h:6
 msgid "VidWhacker"
 msgstr "VidWhacker"
 
-#: ../hacks/config/vines.xml.h:6
+#: hacks/config/vines.xml.h:6
 msgid ""
 "This one generates a continuous sequence of small, curvy geometric patterns. "
 "It scatters them around your screen until it fills up, then it clears the "
@@ -7868,62 +8176,76 @@ msgstr ""
 "szétszóródnak a képernyőn, majd amikor az betelik, letisztítja és kezdődik "
 "minden elölről. Írta Tracy Camp és David Hansen."
 
-#: ../hacks/config/vines.xml.h:8
+#: hacks/config/vines.xml.h:8
 msgid "Vines"
 msgstr "Indák"
 
-#: ../hacks/config/wander.xml.h:5
+#: hacks/config/wander.xml.h:5
 msgid "Draw Spots"
 msgstr "Pontok rajzolása"
 
-#: ../hacks/config/wander.xml.h:6
+#: hacks/config/wander.xml.h:6
 msgid "Draws a colorful random-walk, in various forms. Written by Rick Campbell."
 msgstr ""
 "Színes, véletlenszerű útvonalat rajzol, különféle alakzatokkal. Írta Rick "
 "Campbell."
 
-#: ../hacks/config/wander.xml.h:14
+#: hacks/config/wander.xml.h:14
 msgid "Sustain"
 msgstr "Fenntartás"
 
-#: ../hacks/config/webcollage.xml.h:3
+#: hacks/config/webcollage.xml.h:1
+msgid "2 min"
+msgstr "2 perc"
+
+#: hacks/config/webcollage.xml.h:2
+msgid "30 secs"
+msgstr "30 másodperc"
+
+#: hacks/config/webcollage.xml.h:3
+msgid "Delay:                    None"
+msgstr "Késleltetés:          Nincs"
+
+#: hacks/config/webcollage.xml.h:4
 msgid "Dictionary File"
 msgstr "Szótárfájl"
 
-#: ../hacks/config/webcollage.xml.h:5
+#: hacks/config/webcollage.xml.h:5
+msgid "Opacity:      Transparent"
+msgstr "Átlátszóság:      Átlátszó"
+
+#: hacks/config/webcollage.xml.h:6
 msgid "Overall Filter Program"
 msgstr "Általános szűrőprogram"
 
-#: ../hacks/config/webcollage.xml.h:6
+#: hacks/config/webcollage.xml.h:7
 msgid "Per-Image Filter Program"
 msgstr "Képenkénti szűrőprogram"
 
-#: ../hacks/config/webcollage.xml.h:9
+#: hacks/config/webcollage.xml.h:9
 msgid ""
 "This program makes collages out of random images pulled off of the World "
 "Wide Web. It finds these images by doing random web searches, and then "
 "extracting images from the returned pages. It can also be set up to filter "
-"the images through the `VidWhacker' program, above, which looks really "
-"great. (Note that most of the images it finds are text, and not pictures. "
-"This is because most of the web is pictures of text. Which is pretty sad.) "
-"Written by Jamie Zawinski."
+"the images through the `VidWhacker' program. WARNING: THE INTERNET SOMETIMES "
+"CONTAINS PORNOGRAPHY. The Internet being what it is, absolutely anything "
+"might show up in the collage including -- quite possibly -- pornography, or "
+"even nudity. Please act accordingly. Written by Jamie Zawinski."
 msgstr ""
 "A program kollázst állít össze az internetről véletlenszerűen letöltött "
 "képekből. Véletlenszerű keresések eredményét dolgozza fel, a talált "
 "oldalakból kinyert képekkel. A kapott képek megszűrhetők a \"VidWhacker\" "
-"programmal, nagyszerű eredményekkel. Megjegyzés: a megtalált anyagok nagy "
-"része szöveg, nem valódi kép. A web nagy része ugyanis szöveges információt "
-"tartalmazó kép, sajnos. Írta Jamie Zawinski."
+"programmal. FIGYELMEZTETÉS: AZ INTERNET NÉHOL PORNOGRÁFIÁT TARTALMAZ. Az internet az, ami, akármi megjelenhet a kollázsban, beleértve -- elég nagy valószínűséggel -- a pornográfiát vagy a meztelenséget. Kérem ennek megfelelően cselekedjen. Írta Jamie Zawinski."
 
-#: ../hacks/config/webcollage.xml.h:10
-msgid "URL Timeout"
-msgstr "URL időtúllépés"
+#: hacks/config/webcollage.xml.h:10
+msgid "URL Timeout:     2 secs"
+msgstr "URL időtúllépés:     2 másodperc"
 
-#: ../hacks/config/webcollage.xml.h:11
+#: hacks/config/webcollage.xml.h:11
 msgid "WebCollage"
 msgstr "Web kollázs"
 
-#: ../hacks/config/whirlwindwarp.xml.h:2
+#: hacks/config/whirlwindwarp.xml.h:2
 msgid ""
 "Floating stars are acted upon by a mixture of simple 2D forcefields. The "
 "strength of each forcefield changes continuously, and it is also switched on "
@@ -7933,99 +8255,89 @@ msgstr ""
 "erőssége folyamatosan változik, véletlenszerűen ki-be kapcsolódik. Írta Paul "
 "'Joey' Clark."
 
-#: ../hacks/config/whirlwindwarp.xml.h:7
+#: hacks/config/whirlwindwarp.xml.h:7
 msgid "Trail Size"
 msgstr "Nyom mérete"
 
-#: ../hacks/config/whirlwindwarp.xml.h:8
+#: hacks/config/whirlwindwarp.xml.h:8
 msgid "WhirlwindWarp"
 msgstr "Örvénylés"
 
-#: ../hacks/config/whirlygig.xml.h:1
+#: hacks/config/whirlygig.xml.h:1
 msgid "Amplitude"
 msgstr "Amplitúdó"
 
-#: ../hacks/config/whirlygig.xml.h:2
+#: hacks/config/whirlygig.xml.h:2
 msgid "Circle"
 msgstr "Kör"
 
-#: ../hacks/config/whirlygig.xml.h:3
+#: hacks/config/whirlygig.xml.h:3
 msgid "Draws zooming chains of sinusoidal spots. Written by Ashton Trey Belew."
 msgstr ""
 "Változó méretű foltok láncaiból álló szinuszoidokat rajzol. Írta Ashton Trey "
 "Belew."
 
-#: ../hacks/config/whirlygig.xml.h:4
+#: hacks/config/whirlygig.xml.h:4
 msgid "Explain modes"
 msgstr "Módok leírása"
 
-#: ../hacks/config/whirlygig.xml.h:5
+#: hacks/config/whirlygig.xml.h:5
 msgid "Fun"
 msgstr "Mókás"
 
-#: ../hacks/config/whirlygig.xml.h:6
+#: hacks/config/whirlygig.xml.h:6
 msgid "Funky"
 msgstr "Funky"
 
-#: ../hacks/config/whirlygig.xml.h:7
+#: hacks/config/whirlygig.xml.h:7
 msgid "Innie"
 msgstr "Innie"
 
-#: ../hacks/config/whirlygig.xml.h:8
+#: hacks/config/whirlygig.xml.h:8
 msgid "Leave a trail"
 msgstr "Nyomot hagy"
 
-#: ../hacks/config/whirlygig.xml.h:9
+#: hacks/config/whirlygig.xml.h:9
 msgid "Linear"
 msgstr "Lineáris"
 
-#: ../hacks/config/whirlygig.xml.h:11
+#: hacks/config/whirlygig.xml.h:11
 msgid "Lissajous"
 msgstr "Lissajous"
 
-#: ../hacks/config/whirlygig.xml.h:15
+#: hacks/config/whirlygig.xml.h:15
 msgid "Test"
 msgstr "Teszt"
 
-#: ../hacks/config/whirlygig.xml.h:16
+#: hacks/config/whirlygig.xml.h:16
 msgid "Use Double Buffering"
 msgstr "Dupla pufferelés használata"
 
-#: ../hacks/config/whirlygig.xml.h:17
+#: hacks/config/whirlygig.xml.h:17
 msgid "Whirlies"
 msgstr "Kis örvények"
 
-#: ../hacks/config/whirlygig.xml.h:18
+#: hacks/config/whirlygig.xml.h:18
 msgid "WhirlyGig"
 msgstr "WhirlyGig"
 
-#: ../hacks/config/whirlygig.xml.h:19
+#: hacks/config/whirlygig.xml.h:19
 msgid "Wrap the screen"
 msgstr "Képernyő tördelése"
 
-#. #### -3d
-#: ../hacks/config/worm.xml.h:2
-msgid ""
-"An ancient xlock hack that draws multicolored worms that crawl around the "
-"screen. Written by Brad Taylor, Dave Lemke, Boris Putanec, and Henrik "
-"Theiling."
-msgstr ""
-"Egy ősi x képernyővédő hack, ami sokszínű, a képernyőt körbekúszó férgeket "
-"rajzol. Írta Brad Taylor, Dave Lemke, Boris Putanec és Henrik Theiling."
-
-#: ../hacks/config/wormhole.xml.h:6
+#: hacks/config/wormhole.xml.h:6
 msgid "Star speed"
 msgstr "Csillagok sebessége"
 
-#: ../hacks/config/wormhole.xml.h:7
+#: hacks/config/wormhole.xml.h:7
 msgid "Stars Created"
 msgstr "Létrejövő csillagok"
 
-#: ../hacks/config/wormhole.xml.h:8
+#: hacks/config/wormhole.xml.h:8
 msgid "Wormhole"
 msgstr "Féreglyuk"
 
-#: ../hacks/config/wormhole.xml.h:9
+#: hacks/config/wormhole.xml.h:9
 msgid ""
 "Wormhole simulates flying through a colored wormhole in space. Written by "
 "Jon Rafkind."
@@ -8033,11 +8345,20 @@ msgstr ""
 "A Féreglyuk egy űrutazást szimulál egy féreglyukon keresztül. Írta Jon "
 "Rafkind."
 
-#: ../hacks/config/xanalogtv.xml.h:1
+#: hacks/config/worm.xml.h:1
+msgid ""
+"An ancient xlock hack that draws multicolored worms that crawl around the "
+"screen. Written by Brad Taylor, Dave Lemke, Boris Putanec, and Henrik "
+"Theiling."
+msgstr ""
+"Egy ősi x képernyővédő hack, ami sokszínű, a képernyőt körbekúszó férgeket "
+"rajzol. Írta Brad Taylor, Dave Lemke, Boris Putanec és Henrik Theiling."
+
+#: hacks/config/xanalogtv.xml.h:1
 msgid "XAnalogTV"
 msgstr "X analóg tv"
 
-#: ../hacks/config/xanalogtv.xml.h:2
+#: hacks/config/xanalogtv.xml.h:2
 msgid ""
 "XAnalogTV shows a detailed simulation of an old TV set showing various test "
 "patterns, with various picture artifacts like snow, bloom, distortion, "
@@ -8051,11 +8372,11 @@ msgstr ""
 "az Ön által megadott képekkel, néhányon színes sávokkal vagy csak a statikus "
 "zajjal. Írta Trevor Blackwell."
 
-#: ../hacks/config/xaos.xml.h:1
+#: hacks/config/xaos.xml.h:1
 msgid "XaoS"
 msgstr "XaoS"
 
-#: ../hacks/config/xaos.xml.h:2
+#: hacks/config/xaos.xml.h:2
 msgid ""
 "XaoS generates fast fly-through animations of the Mandelbrot and other "
 "fractal sets. Written by Thomas Marsh and Jan Hubicka. This is not included "
@@ -8066,43 +8387,43 @@ msgstr ""
 "Thomas Marsh és Jan Hubicka. Ez nem része az XScreenSaver csomagnak, de "
 "letölthető a következő címről: &lt;http://xaos.theory.org/&gt;."
 
-#: ../hacks/config/xdaliclock.xml.h:1
+#: hacks/config/xdaliclock.xml.h:1
 msgid "12-Hour Time"
 msgstr "12 órás idő"
 
-#: ../hacks/config/xdaliclock.xml.h:2
+#: hacks/config/xdaliclock.xml.h:2
 msgid "24-Hour Time"
 msgstr "24 órás idő"
 
-#: ../hacks/config/xdaliclock.xml.h:3
+#: hacks/config/xdaliclock.xml.h:3
 msgid "Cycle Colors"
 msgstr "Színek váltogatása"
 
-#: ../hacks/config/xdaliclock.xml.h:4
+#: hacks/config/xdaliclock.xml.h:4
 msgid "Display Seconds"
 msgstr "Másodpercek megjelenítése"
 
-#: ../hacks/config/xdaliclock.xml.h:5
+#: hacks/config/xdaliclock.xml.h:5
 msgid "Huge Font"
 msgstr "Óriási betű"
 
-#: ../hacks/config/xdaliclock.xml.h:6 ../hacks/config/xmatrix.xml.h:10
+#: hacks/config/xdaliclock.xml.h:6 hacks/config/xmatrix.xml.h:10
 msgid "Large Font"
 msgstr "Nagy betű"
 
-#: ../hacks/config/xdaliclock.xml.h:7
+#: hacks/config/xdaliclock.xml.h:7
 msgid "Medium Font"
 msgstr "Közepes betű"
 
-#: ../hacks/config/xdaliclock.xml.h:8 ../hacks/config/xmatrix.xml.h:16
+#: hacks/config/xdaliclock.xml.h:8 hacks/config/xmatrix.xml.h:16
 msgid "Small Font"
 msgstr "Kicsi betű"
 
-#: ../hacks/config/xdaliclock.xml.h:9
+#: hacks/config/xdaliclock.xml.h:9
 msgid "XDaliClock"
 msgstr "XDaliClock"
 
-#: ../hacks/config/xdaliclock.xml.h:10
+#: hacks/config/xdaliclock.xml.h:10
 msgid ""
 "XDaliClock draws a large digital clock, the numbers of which change by "
 "``melting'' into their new shapes. Written by Jamie Zawinski. This is not "
@@ -8114,87 +8435,83 @@ msgstr ""
 "XScreenSaver csomagnak, de ha még nincs meg, megtalálhatja a következő címen:"
 "&lt;http://www.jwz.org/xdaliclock/&gt;."
 
-#: ../hacks/config/xearth.xml.h:1
+#: hacks/config/xearth.xml.h:1
 msgid "Bright"
 msgstr "Világos"
 
-#: ../hacks/config/xearth.xml.h:2 ../hacks/config/xplanet.xml.h:7
+#: hacks/config/xearth.xml.h:2 hacks/config/xplanet.xml.h:7
 msgid "Date/Time Stamp"
 msgstr "Dátum/időbélyegző"
 
-#: ../hacks/config/xearth.xml.h:3
+#: hacks/config/xearth.xml.h:3
 msgid "Day  Dim"
 msgstr "Nappal   Homály"
 
-#: ../hacks/config/xearth.xml.h:5
+#: hacks/config/xearth.xml.h:5
 msgid "Display Stars"
 msgstr "Csillagok mutatása"
 
-#: ../hacks/config/xearth.xml.h:8
+#: hacks/config/xearth.xml.h:8
 msgid "Label Cities"
 msgstr "Városok címkézése"
 
-#: ../hacks/config/xearth.xml.h:9 ../hacks/config/xplanet.xml.h:49
+#: hacks/config/xearth.xml.h:9 hacks/config/xplanet.xml.h:49
 msgid "Lower Left"
 msgstr "Bal alsó"
 
-#: ../hacks/config/xearth.xml.h:10 ../hacks/config/xplanet.xml.h:50
+#: hacks/config/xearth.xml.h:10 hacks/config/xplanet.xml.h:50
 msgid "Lower Right"
 msgstr "Jobb alsó"
 
-#: ../hacks/config/xearth.xml.h:13 ../hacks/config/xplanet.xml.h:51
+#: hacks/config/xearth.xml.h:13 hacks/config/xplanet.xml.h:51
 msgid "Mercator Projection"
 msgstr "Mercator vetület"
 
-#: ../hacks/config/xearth.xml.h:14
+#: hacks/config/xearth.xml.h:14
 msgid "Night   Dim"
 msgstr "Éjjel   Homály"
 
-#: ../hacks/config/xearth.xml.h:15
+#: hacks/config/xearth.xml.h:15
 msgid "No Stars"
 msgstr "Csillagok ki"
 
-#: ../hacks/config/xearth.xml.h:16
+#: hacks/config/xearth.xml.h:16
 msgid "North/South Rotation"
 msgstr "Észak/Dél forgatás"
 
-#: ../hacks/config/xearth.xml.h:18 ../hacks/config/xplanet.xml.h:53
+#: hacks/config/xearth.xml.h:18 hacks/config/xplanet.xml.h:53
 msgid "Orthographic Projection"
 msgstr "Ortografikus vetület"
 
-#: ../hacks/config/xearth.xml.h:19 ../hacks/config/xplanet.xml.h:56
+#: hacks/config/xearth.xml.h:19 hacks/config/xplanet.xml.h:56
 msgid "Real Time"
 msgstr "Valós idő"
 
-#: ../hacks/config/xearth.xml.h:20
+#: hacks/config/xearth.xml.h:20
 msgid "Shaded Image"
 msgstr "Árnyékolt kép"
 
-#: ../hacks/config/xearth.xml.h:21
+#: hacks/config/xearth.xml.h:21
 msgid "Sharp"
 msgstr "Éles"
 
-#: ../hacks/config/xearth.xml.h:23
-msgid "Spacing"
-msgstr "Térköz"
-
-#: ../hacks/config/xearth.xml.h:26
+#: hacks/config/xearth.xml.h:26
 msgid "Terminator   Blurry"
 msgstr "Terminátor  Elmosódott"
 
-#: ../hacks/config/xearth.xml.h:27 ../hacks/config/xplanet.xml.h:61
+#: hacks/config/xearth.xml.h:27 hacks/config/xplanet.xml.h:61
 msgid "Time Warp"
 msgstr "Időugrás"
 
-#: ../hacks/config/xearth.xml.h:29 ../hacks/config/xplanet.xml.h:62
+#: hacks/config/xearth.xml.h:29 hacks/config/xplanet.xml.h:62
 msgid "Upper Left"
 msgstr "Bal felső"
 
-#: ../hacks/config/xearth.xml.h:30 ../hacks/config/xplanet.xml.h:63
+#: hacks/config/xearth.xml.h:30 hacks/config/xplanet.xml.h:63
 msgid "Upper Right"
 msgstr "Jobb felső"
 
-#: ../hacks/config/xearth.xml.h:31
+#: hacks/config/xearth.xml.h:31
 msgid ""
 "XEarth draws an image of the Earth, as seen from your favorite vantage point "
 "in space, correctly shaded for the current position of the Sun. Written by "
@@ -8210,19 +8527,19 @@ msgstr ""
 "általánosabb, xplanet nevű program, mely a &lt;http://xplanet.sourceforge."
 "net/&gt; címen található."
 
-#: ../hacks/config/xearth.xml.h:32
+#: hacks/config/xearth.xml.h:32
 msgid "Xearth"
 msgstr "Xearth"
 
-#: ../hacks/config/xfishtank.xml.h:5
+#: hacks/config/xfishtank.xml.h:5
 msgid "Fish"
 msgstr "Hal"
 
-#: ../hacks/config/xfishtank.xml.h:6
+#: hacks/config/xfishtank.xml.h:6
 msgid "Fish Speed"
 msgstr "Hal sebessége"
 
-#: ../hacks/config/xfishtank.xml.h:7
+#: hacks/config/xfishtank.xml.h:7
 msgid ""
 "Fish! This is not included with the XScreenSaver package, but if you don't "
 "have it already, you can find it at &lt;http://metalab.unc.edu/pub/Linux/X11/"
@@ -8231,15 +8548,15 @@ msgstr ""
 "Halak! Ez nem része az XScreenSaver csomagnak, de letölthető a következő "
 "címről: &lt;http://metalab.unc.edu/pub/Linux/X11/demos/&gt;."
 
-#: ../hacks/config/xfishtank.xml.h:12
+#: hacks/config/xfishtank.xml.h:12
 msgid "XFishTank"
 msgstr "X-Akvárium"
 
-#: ../hacks/config/xflame.xml.h:1
+#: hacks/config/xflame.xml.h:1
 msgid "Bitmap File"
 msgstr "Bitkép fájl"
 
-#: ../hacks/config/xflame.xml.h:2
+#: hacks/config/xflame.xml.h:2
 msgid ""
 "Draws a simulation of pulsing fire. It can also take an arbitrary image and "
 "set it on fire too. Written by Carsten Haitzler, hacked on by many others."
@@ -8247,16 +8564,15 @@ msgstr ""
 "Lobogó tüzet szimulál. Megadható egy tetszőleges kép, melyet szintén tűzre "
 "vethet.Írta Carsten Haitzler, de sokan mások is dolgoztak rajta."
 
-#: ../hacks/config/xflame.xml.h:3
+#: hacks/config/xflame.xml.h:3
 msgid "Enable Blooming"
 msgstr "Virágzási effektus"
 
-#: ../hacks/config/xflame.xml.h:8
+#: hacks/config/xflame.xml.h:8
 msgid "Xflame"
 msgstr "X láng"
 
-#. #### -font []
-#: ../hacks/config/xjack.xml.h:5
+#: hacks/config/xjack.xml.h:4
 msgid ""
 "This program behaves schizophrenically and makes a lot of typos. Written by "
 "Jamie Zawinski. If you haven't seen Stanley Kubrick's masterpiece, ``The "
@@ -8268,12 +8584,11 @@ msgstr ""
 "mesterművét, nem fogja érteni. Akik igen, így írják le ezt a hacket: "
 "\"ihletett\"."
 
-#: ../hacks/config/xjack.xml.h:6
+#: hacks/config/xjack.xml.h:5
 msgid "Xjack"
 msgstr "Xjack"
 
-#. #### -w []
-#: ../hacks/config/xlyap.xml.h:2
+#: hacks/config/xlyap.xml.h:1
 msgid ""
 "This generates pretty fractal pictures by doing funky math involving the "
 "``Lyapunov exponent.'' It has a cool interactive mode, too. Written by Ron "
@@ -8283,11 +8598,11 @@ msgstr ""
 "exponenst használva. A program interaktív módban is használható. Írta Ron "
 "Record."
 
-#: ../hacks/config/xlyap.xml.h:3
+#: hacks/config/xlyap.xml.h:2
 msgid "Xlyap"
 msgstr "Xlyap"
 
-#: ../hacks/config/xmatrix.xml.h:3
+#: hacks/config/xmatrix.xml.h:3
 msgid ""
 "Draws dropping characters similar to what is seen on the computer monitors "
 "in \"The Matrix\". See also \"glmatrix\" for a 3D rendering of the similar "
@@ -8298,159 +8613,159 @@ msgstr ""
 "leeső karaktereket rajzol. Lásd még a \"GL mátrix\"-ot a film főcímében "
 "megjelenő hatás háromdimenziós megjelenítéséért. Írta Jamie Zawinski."
 
-#: ../hacks/config/xmatrix.xml.h:4
+#: hacks/config/xmatrix.xml.h:4
 msgid "Expansion Algorithm"
 msgstr "Terjeszkedő algoritmus"
 
-#: ../hacks/config/xmatrix.xml.h:6
+#: hacks/config/xmatrix.xml.h:6
 msgid "Full"
 msgstr "Teljes"
 
-#: ../hacks/config/xmatrix.xml.h:9
+#: hacks/config/xmatrix.xml.h:9
 msgid "Knock Knock"
 msgstr "Kopp kopp"
 
-#: ../hacks/config/xmatrix.xml.h:12
+#: hacks/config/xmatrix.xml.h:12
 msgid "Phone Number"
 msgstr "Telefonszám"
 
-#: ../hacks/config/xmatrix.xml.h:13
+#: hacks/config/xmatrix.xml.h:13
 msgid "Run Trace Program"
 msgstr "Visszakövető program futtatása"
 
-#: ../hacks/config/xmatrix.xml.h:14
+#: hacks/config/xmatrix.xml.h:14
 msgid "Slider Algorithm"
 msgstr "Csúszka-algoritmus"
 
-#: ../hacks/config/xmatrix.xml.h:19
+#: hacks/config/xmatrix.xml.h:19
 msgid "Synergistic Algorithm"
 msgstr "Szinergisztikus algoritmus"
 
-#: ../hacks/config/xmatrix.xml.h:20
+#: hacks/config/xmatrix.xml.h:20
 msgid "Xmatrix"
 msgstr "Xmátrix"
 
-#: ../hacks/config/xmountains.xml.h:1
+#: hacks/config/xmountains.xml.h:1
 msgid "1.0"
 msgstr "1.0"
 
-#: ../hacks/config/xmountains.xml.h:3
+#: hacks/config/xmountains.xml.h:3
 msgid "14"
 msgstr "14"
 
-#: ../hacks/config/xmountains.xml.h:4
+#: hacks/config/xmountains.xml.h:4
 msgid "7"
 msgstr "7"
 
-#: ../hacks/config/xmountains.xml.h:5
+#: hacks/config/xmountains.xml.h:5
 msgid "Altitude  Low"
 msgstr "Magasság Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:6
+#: hacks/config/xmountains.xml.h:6
 msgid "Ambient  Low"
 msgstr "Körülvevő   Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:7
+#: hacks/config/xmountains.xml.h:7
 msgid "Angle of Light"
 msgstr "Fény szöge"
 
-#: ../hacks/config/xmountains.xml.h:8
+#: hacks/config/xmountains.xml.h:8
 msgid "Contour  Low"
 msgstr "Körvonalak   Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:9
+#: hacks/config/xmountains.xml.h:9
 msgid "Contrast  Low"
 msgstr "Kontraszt   Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:10
+#: hacks/config/xmountains.xml.h:10
 msgid "Craggy"
 msgstr "Sziklás"
 
-#: ../hacks/config/xmountains.xml.h:11
+#: hacks/config/xmountains.xml.h:11
 msgid "Cross Update"
 msgstr "Keresztfrissítés"
 
-#: ../hacks/config/xmountains.xml.h:12
+#: hacks/config/xmountains.xml.h:12
 msgid "Distance  Low"
 msgstr "Távolság  Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:14
+#: hacks/config/xmountains.xml.h:14
 msgid "Foreground"
 msgstr "Előtér"
 
-#: ../hacks/config/xmountains.xml.h:15
+#: hacks/config/xmountains.xml.h:15
 msgid "Fractal Options"
 msgstr "Fraktál beállításai"
 
-#: ../hacks/config/xmountains.xml.h:16
+#: hacks/config/xmountains.xml.h:16
 msgid "Height  Low"
 msgstr "Magasság Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:18
+#: hacks/config/xmountains.xml.h:18
 msgid "Horizontal  Low"
 msgstr "Vízszintes   Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:19
+#: hacks/config/xmountains.xml.h:19
 msgid "Iteration  0"
 msgstr "Iterációk  0"
 
-#: ../hacks/config/xmountains.xml.h:20
+#: hacks/config/xmountains.xml.h:20
 msgid "Light Level"
 msgstr "Fény szintje"
 
-#: ../hacks/config/xmountains.xml.h:21
+#: hacks/config/xmountains.xml.h:21
 msgid "Recursion  0"
 msgstr "Rekurzió  0"
 
-#: ../hacks/config/xmountains.xml.h:22
+#: hacks/config/xmountains.xml.h:22
 msgid "Reflections"
 msgstr "Visszaverődések"
 
-#: ../hacks/config/xmountains.xml.h:23
+#: hacks/config/xmountains.xml.h:23
 msgid "Sea Level  Low"
 msgstr "Tengerszint Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:24
+#: hacks/config/xmountains.xml.h:24
 msgid "Side View"
 msgstr "Oldalnézet"
 
-#: ../hacks/config/xmountains.xml.h:26
+#: hacks/config/xmountains.xml.h:26
 msgid "Smoothing  0"
 msgstr "Simítás   0"
 
-#: ../hacks/config/xmountains.xml.h:27
+#: hacks/config/xmountains.xml.h:27
 msgid "Speed  Slow"
 msgstr "Sebesség  Lassú"
 
-#: ../hacks/config/xmountains.xml.h:28
+#: hacks/config/xmountains.xml.h:28
 msgid "Terrain"
 msgstr "Terep"
 
-#: ../hacks/config/xmountains.xml.h:29
+#: hacks/config/xmountains.xml.h:29
 msgid "Top View"
 msgstr "Felülnézet"
 
-#: ../hacks/config/xmountains.xml.h:30
+#: hacks/config/xmountains.xml.h:30
 msgid "V. Shift  Low"
 msgstr "Függ. eltolás  Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:31
+#: hacks/config/xmountains.xml.h:31
 msgid "V. Stretch  Low"
 msgstr "Függ. nyújtás   Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:32
+#: hacks/config/xmountains.xml.h:32
 msgid "Variance  Low"
 msgstr "Változatosság  Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:33
+#: hacks/config/xmountains.xml.h:33
 msgid "Vertical  Low"
 msgstr "Függőleges   Alacsony"
 
-#: ../hacks/config/xmountains.xml.h:34
+#: hacks/config/xmountains.xml.h:34
 msgid "Viewpoint"
 msgstr "Nézőpont"
 
-#: ../hacks/config/xmountains.xml.h:35
+#: hacks/config/xmountains.xml.h:35
 msgid ""
 "XMountains generates realistic-looking fractal terrains of snow-capped "
 "mountains near water, with either a top view or a side view. Written by "
@@ -8464,356 +8779,351 @@ msgstr ""
 "http://www.epcc.ed.ac.uk/~spb/xmountains/&gt; (Legalább 2.7 vagy újabb "
 "verzió szükséges!)"
 
-#: ../hacks/config/xmountains.xml.h:36
+#: hacks/config/xmountains.xml.h:36
 msgid "Xf  0.0"
 msgstr "Xf  0.0"
 
-#: ../hacks/config/xmountains.xml.h:37
+#: hacks/config/xmountains.xml.h:37
 msgid "Xmountains"
 msgstr "X hegyek"
 
-#: ../hacks/config/xmountains.xml.h:38
+#: hacks/config/xmountains.xml.h:38
 msgid "Yf  0.0"
 msgstr "Yf  0.0"
 
-#: ../hacks/config/xplanet.xml.h:2
-#, no-c-format
-msgid "0%"
-msgstr "0%"
-
-#: ../hacks/config/xplanet.xml.h:5
+#: hacks/config/xplanet.xml.h:5
 msgid "Ancient Projection"
 msgstr "Ősi vetület"
 
-#: ../hacks/config/xplanet.xml.h:6
+#: hacks/config/xplanet.xml.h:6
 msgid "Azimuthal Projection"
 msgstr "Azimutális vetület"
 
-#: ../hacks/config/xplanet.xml.h:9
+#: hacks/config/xplanet.xml.h:9
 msgid "From Ariel"
 msgstr "Az Arielről"
 
-#: ../hacks/config/xplanet.xml.h:10
+#: hacks/config/xplanet.xml.h:10
 msgid "From Callisto"
 msgstr "A Callistoról"
 
-#: ../hacks/config/xplanet.xml.h:11
+#: hacks/config/xplanet.xml.h:11
 msgid "From Charon"
 msgstr "A Charonról"
 
-#: ../hacks/config/xplanet.xml.h:12
+#: hacks/config/xplanet.xml.h:12
 msgid "From Deimos"
 msgstr "A Deimosról"
 
-#: ../hacks/config/xplanet.xml.h:13
+#: hacks/config/xplanet.xml.h:13
 msgid "From Dione"
 msgstr "A Dione-ról"
 
-#: ../hacks/config/xplanet.xml.h:14
+#: hacks/config/xplanet.xml.h:14
 msgid "From Earth"
 msgstr "A Földről"
 
-#: ../hacks/config/xplanet.xml.h:15
+#: hacks/config/xplanet.xml.h:15
 msgid "From Enceladus"
 msgstr "Az Enceladusról"
 
-#: ../hacks/config/xplanet.xml.h:16
+#: hacks/config/xplanet.xml.h:16
 msgid "From Europa"
 msgstr "Az Európáról"
 
-#: ../hacks/config/xplanet.xml.h:17
+#: hacks/config/xplanet.xml.h:17
 msgid "From Ganymede"
 msgstr "A Ganümédészről"
 
-#: ../hacks/config/xplanet.xml.h:18
+#: hacks/config/xplanet.xml.h:18
 msgid "From Hyperion"
 msgstr "A Hyperionról"
 
-#: ../hacks/config/xplanet.xml.h:19
+#: hacks/config/xplanet.xml.h:19
 msgid "From Iapetus"
 msgstr "A Iapetusról"
 
-#: ../hacks/config/xplanet.xml.h:20
+#: hacks/config/xplanet.xml.h:20
 msgid "From Io"
 msgstr "Az Ioról"
 
-#: ../hacks/config/xplanet.xml.h:21
+#: hacks/config/xplanet.xml.h:21
 msgid "From Jupiter"
 msgstr "A Jupiterről"
 
-#: ../hacks/config/xplanet.xml.h:22
+#: hacks/config/xplanet.xml.h:22
 msgid "From Major"
 msgstr "A Majorról"
 
-#: ../hacks/config/xplanet.xml.h:23
+#: hacks/config/xplanet.xml.h:23
 msgid "From Mars"
 msgstr "A Marsról"
 
-#: ../hacks/config/xplanet.xml.h:24
+#: hacks/config/xplanet.xml.h:24
 msgid "From Mercury"
 msgstr "A Merkúrról"
 
-#: ../hacks/config/xplanet.xml.h:25
+#: hacks/config/xplanet.xml.h:25
 msgid "From Mimas"
 msgstr "A Mimasról"
 
-#: ../hacks/config/xplanet.xml.h:26
+#: hacks/config/xplanet.xml.h:26
 msgid "From Miranda"
 msgstr "A Mirandaról"
 
-#: ../hacks/config/xplanet.xml.h:27
+#: hacks/config/xplanet.xml.h:27
 msgid "From Moon"
 msgstr "A Holdról"
 
-#: ../hacks/config/xplanet.xml.h:28
+#: hacks/config/xplanet.xml.h:28
 msgid "From Neptune"
 msgstr "A Neptunról"
 
-#: ../hacks/config/xplanet.xml.h:29
+#: hacks/config/xplanet.xml.h:29
 msgid "From Nereid"
 msgstr "A Nereidről"
 
-#: ../hacks/config/xplanet.xml.h:30
+#: hacks/config/xplanet.xml.h:30
 msgid "From Oberon"
 msgstr "Az Oberonról"
 
-#: ../hacks/config/xplanet.xml.h:31
+#: hacks/config/xplanet.xml.h:31
 msgid "From Phobos"
 msgstr "A Phobosról"
 
-#: ../hacks/config/xplanet.xml.h:32
+#: hacks/config/xplanet.xml.h:32
 msgid "From Phoebe"
 msgstr "A Phoebe-ről"
 
-#: ../hacks/config/xplanet.xml.h:33
+#: hacks/config/xplanet.xml.h:33
 msgid "From Pluto"
 msgstr "A Plútóról"
 
-#: ../hacks/config/xplanet.xml.h:34
+#: hacks/config/xplanet.xml.h:34
 msgid "From Random"
 msgstr "Véletlen helyről"
 
-#: ../hacks/config/xplanet.xml.h:35
+#: hacks/config/xplanet.xml.h:35
 msgid "From Rhea"
 msgstr "A Rhearól"
 
-#: ../hacks/config/xplanet.xml.h:36
+#: hacks/config/xplanet.xml.h:36
 msgid "From Saturn"
 msgstr "A Szaturnuszról"
 
-#: ../hacks/config/xplanet.xml.h:37
+#: hacks/config/xplanet.xml.h:37
 msgid "From Sun"
 msgstr "A Napról"
 
-#: ../hacks/config/xplanet.xml.h:38
+#: hacks/config/xplanet.xml.h:38
 msgid "From Tethys"
 msgstr "A Tethysről"
 
-#: ../hacks/config/xplanet.xml.h:39
+#: hacks/config/xplanet.xml.h:39
 msgid "From Titan"
 msgstr "A Titánról"
 
-#: ../hacks/config/xplanet.xml.h:40
+#: hacks/config/xplanet.xml.h:40
 msgid "From Titania"
 msgstr "A Titániáról"
 
-#: ../hacks/config/xplanet.xml.h:41
+#: hacks/config/xplanet.xml.h:41
 msgid "From Triton"
 msgstr "A Tritonról"
 
-#: ../hacks/config/xplanet.xml.h:42
+#: hacks/config/xplanet.xml.h:42
 msgid "From Umbriel"
 msgstr "Az Umbrielről"
 
-#: ../hacks/config/xplanet.xml.h:43
+#: hacks/config/xplanet.xml.h:43
 msgid "From Uranus"
 msgstr "Az Uránuszról"
 
-#: ../hacks/config/xplanet.xml.h:44
+#: hacks/config/xplanet.xml.h:44
 msgid "From Venus"
 msgstr "A Vénuszról"
 
-#: ../hacks/config/xplanet.xml.h:45
+#: hacks/config/xplanet.xml.h:45
 msgid "Hemisphere Projection"
 msgstr "Félgömb vetület"
 
-#: ../hacks/config/xplanet.xml.h:46
+#: hacks/config/xplanet.xml.h:46
 msgid "Lambert Projection"
 msgstr "Lambert vetület"
 
-#: ../hacks/config/xplanet.xml.h:47
+#: hacks/config/xplanet.xml.h:47
 msgid "Latitude"
 msgstr "Szélesség"
 
-#: ../hacks/config/xplanet.xml.h:48
+#: hacks/config/xplanet.xml.h:48
 msgid "Longitude"
 msgstr "Hosszúság"
 
-#: ../hacks/config/xplanet.xml.h:52
+#: hacks/config/xplanet.xml.h:52
 msgid "Mollweide Projection"
 msgstr "Mollweide vetület"
 
-#: ../hacks/config/xplanet.xml.h:54
+#: hacks/config/xplanet.xml.h:54
 msgid "Peters Projection"
 msgstr "Peters vetület"
 
-#: ../hacks/config/xplanet.xml.h:57
+#: hacks/config/xplanet.xml.h:57
 msgid "Rectangular Projection"
 msgstr "Négyzetes vetület"
 
-#: ../hacks/config/xplanet.xml.h:58
+#: hacks/config/xplanet.xml.h:58
 msgid "Render as a Globe"
 msgstr "Megjelenítés gömbként"
 
-#: ../hacks/config/xplanet.xml.h:64
+#: hacks/config/xplanet.xml.h:64
 msgid "View Ariel"
 msgstr "Az Ariel mutatása"
 
-#: ../hacks/config/xplanet.xml.h:65
+#: hacks/config/xplanet.xml.h:65
 msgid "View Callisto"
 msgstr "A Callisto mutatása"
 
-#: ../hacks/config/xplanet.xml.h:66
+#: hacks/config/xplanet.xml.h:66
 msgid "View Charon"
 msgstr "A Charon mutatása"
 
-#: ../hacks/config/xplanet.xml.h:67
+#: hacks/config/xplanet.xml.h:67
 msgid "View Deimos"
 msgstr "A Deimos mutatása"
 
-#: ../hacks/config/xplanet.xml.h:68
+#: hacks/config/xplanet.xml.h:68
 msgid "View Dione"
 msgstr "A Dione mutatása"
 
-#: ../hacks/config/xplanet.xml.h:69
+#: hacks/config/xplanet.xml.h:69
 msgid "View Earth"
 msgstr "A Föld mutatása"
 
-#: ../hacks/config/xplanet.xml.h:70
+#: hacks/config/xplanet.xml.h:70
 msgid "View Enceladus"
 msgstr "Az Enceladus mutatása"
 
-#: ../hacks/config/xplanet.xml.h:71
+#: hacks/config/xplanet.xml.h:71
 msgid "View Europa"
 msgstr "Az Európa mutatása"
 
-#: ../hacks/config/xplanet.xml.h:72
+#: hacks/config/xplanet.xml.h:72
 msgid "View Ganymede"
 msgstr "A Ganümédész mutatása"
 
-#: ../hacks/config/xplanet.xml.h:73
+#: hacks/config/xplanet.xml.h:73
 msgid "View Hyperion"
 msgstr "A Hyperion mutatása"
 
-#: ../hacks/config/xplanet.xml.h:74
+#: hacks/config/xplanet.xml.h:74
 msgid "View Iapetus"
 msgstr "A Iapetus mutatása"
 
-#: ../hacks/config/xplanet.xml.h:75
+#: hacks/config/xplanet.xml.h:75
 msgid "View Io"
 msgstr "Az Io mutatása"
 
-#: ../hacks/config/xplanet.xml.h:76
+#: hacks/config/xplanet.xml.h:76
 msgid "View Jupiter"
 msgstr "A Jupiter mutatása"
 
-#: ../hacks/config/xplanet.xml.h:77
+#: hacks/config/xplanet.xml.h:77
 msgid "View Major"
 msgstr "A Major mutatása"
 
-#: ../hacks/config/xplanet.xml.h:78
+#: hacks/config/xplanet.xml.h:78
 msgid "View Mars"
 msgstr "A Mars mutatása"
 
-#: ../hacks/config/xplanet.xml.h:79
+#: hacks/config/xplanet.xml.h:79
 msgid "View Mercury"
 msgstr "A Merkúr mutatása"
 
-#: ../hacks/config/xplanet.xml.h:80
+#: hacks/config/xplanet.xml.h:80
 msgid "View Mimas"
 msgstr "A Mimas mutatása"
 
-#: ../hacks/config/xplanet.xml.h:81
+#: hacks/config/xplanet.xml.h:81
 msgid "View Miranda"
 msgstr "A Miranda mutatása"
 
-#: ../hacks/config/xplanet.xml.h:82
+#: hacks/config/xplanet.xml.h:82
 msgid "View Moon"
 msgstr "A Hold mutatása"
 
-#: ../hacks/config/xplanet.xml.h:83
+#: hacks/config/xplanet.xml.h:83
 msgid "View Neptune"
 msgstr "A Neptun mutatása"
 
-#: ../hacks/config/xplanet.xml.h:84
+#: hacks/config/xplanet.xml.h:84
 msgid "View Nereid"
 msgstr "A Nereid mutatása"
 
-#: ../hacks/config/xplanet.xml.h:85
+#: hacks/config/xplanet.xml.h:85
 msgid "View Oberon"
 msgstr "A Oberon mutatása"
 
-#: ../hacks/config/xplanet.xml.h:86
+#: hacks/config/xplanet.xml.h:86
 msgid "View Phobos"
 msgstr "A Phobos mutatása"
 
-#: ../hacks/config/xplanet.xml.h:87
+#: hacks/config/xplanet.xml.h:87
 msgid "View Phoebe"
 msgstr "A Phoebe mutatása"
 
-#: ../hacks/config/xplanet.xml.h:88
+#: hacks/config/xplanet.xml.h:88
 msgid "View Pluto"
 msgstr "A Plútó mutatása"
 
-#: ../hacks/config/xplanet.xml.h:89
+#: hacks/config/xplanet.xml.h:89
 msgid "View Random"
 msgstr "Véletlen mutatása"
 
-#: ../hacks/config/xplanet.xml.h:90
+#: hacks/config/xplanet.xml.h:90
 msgid "View Rhea"
 msgstr "A Rhea mutatása"
 
-#: ../hacks/config/xplanet.xml.h:91
+#: hacks/config/xplanet.xml.h:91
 msgid "View Saturn"
 msgstr "A Szaturnusz mutatása"
 
-#: ../hacks/config/xplanet.xml.h:92
+#: hacks/config/xplanet.xml.h:92
 msgid "View Sun"
 msgstr "A Nap mutatása"
 
-#: ../hacks/config/xplanet.xml.h:93
+#: hacks/config/xplanet.xml.h:93
 msgid "View Tethys"
 msgstr "A Tethys mutatása"
 
-#: ../hacks/config/xplanet.xml.h:94
+#: hacks/config/xplanet.xml.h:94
 msgid "View Titan"
 msgstr "A Titán mutatása"
 
-#: ../hacks/config/xplanet.xml.h:95
+#: hacks/config/xplanet.xml.h:95
 msgid "View Titania"
 msgstr "A Titánia mutatása"
 
-#: ../hacks/config/xplanet.xml.h:96
+#: hacks/config/xplanet.xml.h:96
 msgid "View Triton"
 msgstr "A Triton mutatása"
 
-#: ../hacks/config/xplanet.xml.h:97
+#: hacks/config/xplanet.xml.h:97
 msgid "View Umbriel"
 msgstr "Az Umbriel mutatása"
 
-#: ../hacks/config/xplanet.xml.h:98
+#: hacks/config/xplanet.xml.h:98
 msgid "View Uranus"
 msgstr "Az Uránusz mutatása"
 
-#: ../hacks/config/xplanet.xml.h:99
+#: hacks/config/xplanet.xml.h:99
 msgid "View Venus"
 msgstr "A Vénusz mutatása"
 
-#: ../hacks/config/xplanet.xml.h:100
+#: hacks/config/xplanet.xml.h:100
 msgid "Xplanet"
 msgstr "X bolygó"
 
-#: ../hacks/config/xplanet.xml.h:101
+#: hacks/config/xplanet.xml.h:101
 msgid ""
 "Xplanet draws an image of the Earth, as seen from your favorite vantage "
 "point in space, correctly shaded for the current position of the Sun. "
@@ -8826,7 +9136,7 @@ msgstr ""
 "része az XScreenSaver csomagnak, de letölthető a következő címről: &lt;"
 "http://xplanet.sourceforge.net/&gt;."
 
-#: ../hacks/config/xrayswarm.xml.h:1
+#: hacks/config/xrayswarm.xml.h:1
 msgid ""
 "Draws a few swarms of critters flying around the screen, with nicely faded "
 "color trails behind them. Written by Chris Leger."
@@ -8834,12 +9144,11 @@ msgstr ""
 "Rajokban áramló részecskéket jelenít meg, melyek elhalványuló színes "
 "nyomvonalat húznak maguk után. Írta Chris Leger."
 
-#: ../hacks/config/xrayswarm.xml.h:5
+#: hacks/config/xrayswarm.xml.h:5
 msgid "XRaySwarm"
 msgstr "X sugárraj"
 
-#. #### -nonopopup
-#: ../hacks/config/xsnow.xml.h:2
+#: hacks/config/xsnow.xml.h:1
 msgid ""
 "Draws falling snow and the occasional tiny Santa. By Rick Jansen. You can "
 "find it at &lt;http://www.euronet.nl/~rja/Xsnow/&gt;."
@@ -8847,41 +9156,41 @@ msgstr ""
 "Hóesést és az alkalomhoz illő kis Mikulást rajzol. Írta Rick Jansen."
 "Megtalálható a következő címen: &lt;http://www.euronet.nl/~rja/Xsnow/&gt;."
 
-#: ../hacks/config/xsnow.xml.h:3
+#: hacks/config/xsnow.xml.h:2
 msgid "Xsnow"
 msgstr "X hó"
 
-#: ../hacks/config/xspirograph.xml.h:5
+#: hacks/config/xspirograph.xml.h:5
 msgid ""
 "Simulates that pen-in-nested-plastic-gears toy from your childhood. By Rohit "
 "Singh."
 msgstr "A műanyagkerekekbe ágyazott toll játékot szimulálja. Írta Rohit Singh."
 
-#: ../hacks/config/xspirograph.xml.h:6
+#: hacks/config/xspirograph.xml.h:6
 msgid "XSpiroGraph"
 msgstr "XSpiroGraph"
 
-#: ../hacks/config/xteevee.xml.h:1
+#: hacks/config/xteevee.xml.h:1
 msgid "Color Bars Enabled"
 msgstr "Színes sávok bekapcsolása"
 
-#: ../hacks/config/xteevee.xml.h:2
+#: hacks/config/xteevee.xml.h:2
 msgid "Cycle Through Modes"
 msgstr "Módok váltogatása"
 
-#: ../hacks/config/xteevee.xml.h:3
+#: hacks/config/xteevee.xml.h:3
 msgid "Rolling Enabled"
 msgstr "Gördülés bekapcsolása"
 
-#: ../hacks/config/xteevee.xml.h:4
+#: hacks/config/xteevee.xml.h:4
 msgid "Static Enabled"
 msgstr "Zaj engedélyezése"
 
-#: ../hacks/config/xteevee.xml.h:5
+#: hacks/config/xteevee.xml.h:5
 msgid "XTeeVee"
 msgstr "XTeeVee"
 
-#: ../hacks/config/xteevee.xml.h:6
+#: hacks/config/xteevee.xml.h:6
 msgid ""
 "XTeeVee simulates various television problems, including static, loss of "
 "vertical hold, and a test pattern. By Greg Knauss."
@@ -8890,15 +9199,15 @@ msgstr ""
 "zajt, a függőleges vonalak \"hordóssá\" válását és a monoszkópot. Írta Greg "
 "Knauss."
 
-#: ../hacks/config/zoom.xml.h:3
+#: hacks/config/zoom.xml.h:3
 msgid "Lens Offset"
 msgstr "Lencse eltolása"
 
-#: ../hacks/config/zoom.xml.h:4
+#: hacks/config/zoom.xml.h:4
 msgid "Lenses"
 msgstr "Lencsék"
 
-#: ../hacks/config/zoom.xml.h:9
+#: hacks/config/zoom.xml.h:9
 msgid ""
 "Zooms in on a part of the screen and then moves around. With the -lenses "
 "option the result is like looking through many overlapping lenses rather "
index 8889d6038b12e5b59145b5308ed43f94678537ae..5c41cfc55d0a7b83ac0be61f0a493af499e1ee21 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -1,28 +1,29 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
+# Italian translation of xcsreensaver.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Roberto Inzerillo <robicd@gmx.net>, 2005.
+# 
+# 
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: xscreensaver 4.21\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2005-02-28 21:49+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2005-03-29 13:10+0100\n"
+"Last-Translator: Roberto Inzerillo <robicd@gmx.net>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
 #: driver/demo-Gtk.c:656
 msgid "For updates, check http://www.jwz.org/xscreensaver/"
-msgstr ""
+msgstr "Per gli aggiornamenti, visita http://www.jwz.org/xscreensaver/"
 
-#: driver/demo-Gtk.c:748 driver/demo-Gtk-widgets.c:1709
+#: driver/demo-Gtk.c:748
+#: driver/demo-Gtk-widgets.c:1709
 #: driver/xscreensaver-demo.glade.h:54
 msgid "OK"
-msgstr ""
+msgstr "OK"
 
 #: driver/demo-Gtk.c:786
 msgid ""
@@ -30,6 +31,9 @@ msgid ""
 "\n"
 "No Help URL has been specified.\n"
 msgstr ""
+"Errore:\n"
+"\n"
+"Non è stata specificata alcuna URL per l'Help.\n"
 
 #: driver/demo-Gtk.c:873
 msgid ""
@@ -38,6 +42,10 @@ msgid ""
 "The xscreensaver daemon did not start up properly.\n"
 "\n"
 msgstr ""
+"Errore:\n"
+"\n"
+"Il demone xscreensaver non si è avviato correttamente.\n"
+"\n"
 
 #: driver/demo-Gtk.c:885
 msgid ""
@@ -57,6 +65,22 @@ msgid ""
 "You shouldn't run X as root. Instead, you should log in as a\n"
 "normal user, and `su' as necessary."
 msgstr ""
+"Sei l'utente root. Questo in genere significa che xscreensaver non è\n"
+"capace di contattare il server X perchè è attivo il controllo di accesso.\n"
+"Prova ad eseguire il comando:\n"
+"\n"
+"                        xhost +localhost\n"
+"\n"
+"e poi a selezionare \"File / Riesegui il demone\".\n"
+"\n"
+"Si noti che disattivando il controllo di accesso, si consente ad ogni\n"
+"utente loggato in questo computer di accedere a questo schermo e\n"
+"questo potrebbe essere considerato un problema di sicurezza. Per\n"
+"ulteriori informazioni, sei pregato di leggere il manuale e le FAQ di\n"
+"xscreensaver.\n"
+"\n"
+"Non dovresti eseguire X come utente root. Invece, dovresti loggarti come\n"
+"un utente normale e usare \"su\" quando necessario."
 
 #: driver/demo-Gtk.c:901
 msgid "Please check your $PATH and permissions."
@@ -92,9 +116,12 @@ msgid ""
 "Unparsable time format: \"%s\"\n"
 msgstr ""
 
-#: driver/demo-Gtk.c:1546 driver/demo-Gtk.c:2874
-#: driver/demo-Gtk-widgets.c:1550 driver/demo-Gtk-widgets.c:1573
-#: driver/xscreensaver-demo.glade.h:5 driver/xscreensaver-demo.glade2.h:3
+#: driver/demo-Gtk.c:1546
+#: driver/demo-Gtk.c:2874
+#: driver/demo-Gtk-widgets.c:1550
+#: driver/demo-Gtk-widgets.c:1573
+#: driver/xscreensaver-demo.glade.h:5
+#: driver/xscreensaver-demo.glade2.h:3
 msgid "Any"
 msgstr ""
 
@@ -106,12 +133,14 @@ msgid ""
 "Directory does not exist: \"%s\"\n"
 msgstr ""
 
-#: driver/demo-Gtk.c:2142 driver/demo-Gtk-widgets.c:571
+#: driver/demo-Gtk.c:2142
+#: driver/demo-Gtk-widgets.c:571
 #: driver/xscreensaver-demo.glade.h:75
 msgid "Use"
 msgstr ""
 
-#: driver/demo-Gtk.c:2152 driver/demo-Gtk-widgets.c:591
+#: driver/demo-Gtk.c:2152
+#: driver/demo-Gtk-widgets.c:591
 #: driver/xscreensaver-demo.glade.h:63
 #, fuzzy
 msgid "Screen Saver"
@@ -134,10 +163,11 @@ msgstr ""
 msgid "Screen Saver Disabled"
 msgstr "Salvaschermo"
 
-#: driver/demo-Gtk.c:2855 driver/demo-Gtk-widgets.c:482
+#: driver/demo-Gtk.c:2855
+#: driver/demo-Gtk-widgets.c:482
 #: driver/xscreensaver-demo.glade.h:58
 msgid "Preview"
-msgstr ""
+msgstr "Anteprima"
 
 #: driver/demo-Gtk.c:2865
 #, c-format
@@ -230,13 +260,12 @@ msgid "%s: unknown option: %s\n"
 msgstr ""
 
 #: driver/demo-Gtk.c:4446
-#, fuzzy
 msgid "Screensaver Preferences"
-msgstr "Salvaschermo"
+msgstr "Configurazione dello screensaver"
 
 #: driver/demo-Gtk-conf.c:818
 msgid "Browse..."
-msgstr ""
+msgstr "Sfoglia..."
 
 #: driver/demo-Gtk-conf.c:1110
 msgid "Select file."
@@ -247,7 +276,8 @@ msgstr ""
 msgid "Couldn't find pixmap file: %s"
 msgstr ""
 
-#: driver/demo-Gtk-support.c:147 driver/demo-Gtk-support.c:179
+#: driver/demo-Gtk-support.c:147
+#: driver/demo-Gtk-support.c:179
 #, c-format
 msgid "Error loading pixmap file: %s"
 msgstr ""
@@ -255,479 +285,552 @@ msgstr ""
 #: driver/demo-Gtk-support.c:182
 #, c-format
 msgid "reason: %s\n"
-msgstr ""
+msgstr "motivo: %s\n"
 
-#: driver/demo-Gtk-widgets.c:161 driver/xscreensaver-demo.glade.h:89
+#: driver/demo-Gtk-widgets.c:161
+#: driver/xscreensaver-demo.glade.h:89
 #: driver/xscreensaver-demo.glade2.h:65
 #, fuzzy
 msgid "XScreenSaver"
 msgstr "Salvaschermo"
 
-#: driver/demo-Gtk-widgets.c:182 driver/xscreensaver-demo.glade2.h:76
+#: driver/demo-Gtk-widgets.c:182
+#: driver/xscreensaver-demo.glade2.h:76
 msgid "_File"
-msgstr ""
+msgstr "_File"
 
-#: driver/demo-Gtk-widgets.c:202 driver/xscreensaver-demo.glade.h:93
+#: driver/demo-Gtk-widgets.c:202
+#: driver/xscreensaver-demo.glade.h:93
 #: driver/xscreensaver-demo.glade2.h:70
 msgid "_Blank Screen Now"
-msgstr ""
+msgstr "_Annerisci lo schermo adesso"
 
-#: driver/demo-Gtk-widgets.c:211 driver/xscreensaver-demo.glade.h:2
-msgid ""
-"Activate the XScreenSaver daemon now (locking the screen if so configured.)"
+#: driver/demo-Gtk-widgets.c:211
+#: driver/xscreensaver-demo.glade.h:2
+msgid "Activate the XScreenSaver daemon now (locking the screen if so configured.)"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:215 driver/xscreensaver-demo.glade.h:97
+#: driver/demo-Gtk-widgets.c:215
+#: driver/xscreensaver-demo.glade.h:97
 #: driver/xscreensaver-demo.glade2.h:80
 msgid "_Lock Screen Now"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:224 driver/xscreensaver-demo.glade.h:51
+#: driver/demo-Gtk-widgets.c:224
+#: driver/xscreensaver-demo.glade.h:51
 msgid "Lock the screen now (even if \"Lock Screen\" is unchecked.)"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:228 driver/xscreensaver-demo.glade.h:96
+#: driver/demo-Gtk-widgets.c:228
+#: driver/xscreensaver-demo.glade.h:96
 #: driver/xscreensaver-demo.glade2.h:78
 msgid "_Kill Daemon"
-msgstr ""
+msgstr "_Termina demone"
 
-#: driver/demo-Gtk-widgets.c:237 driver/xscreensaver-demo.glade.h:71
+#: driver/demo-Gtk-widgets.c:237
+#: driver/xscreensaver-demo.glade.h:71
 msgid "Tell the running XScreenSaver daemon to exit."
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:241 driver/xscreensaver-demo.glade.h:98
+#: driver/demo-Gtk-widgets.c:241
+#: driver/xscreensaver-demo.glade.h:98
 #: driver/xscreensaver-demo.glade2.h:86
 msgid "_Restart Daemon"
-msgstr ""
+msgstr "_Riavvia demone"
 
-#: driver/demo-Gtk-widgets.c:250 driver/xscreensaver-demo.glade.h:49
+#: driver/demo-Gtk-widgets.c:250
+#: driver/xscreensaver-demo.glade.h:49
 msgid "Kill and re-launch the XScreenSaver daemon."
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:263 driver/xscreensaver-demo.glade.h:95
+#: driver/demo-Gtk-widgets.c:263
+#: driver/xscreensaver-demo.glade.h:95
 msgid "_Exit"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:272 driver/xscreensaver-demo.glade.h:33
-msgid ""
-"Exit the xscreensaver-demo program (but leave the XScreenSaver daemon "
-"running in the background.)"
+#: driver/demo-Gtk-widgets.c:272
+#: driver/xscreensaver-demo.glade.h:33
+msgid "Exit the xscreensaver-demo program (but leave the XScreenSaver daemon running in the background.)"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:276 driver/xscreensaver-demo.glade2.h:77
+#: driver/demo-Gtk-widgets.c:276
+#: driver/xscreensaver-demo.glade2.h:77
 msgid "_Help"
-msgstr ""
+msgstr "A_iuto"
 
-#: driver/demo-Gtk-widgets.c:296 driver/xscreensaver-demo.glade.h:92
+#: driver/demo-Gtk-widgets.c:296
+#: driver/xscreensaver-demo.glade.h:92
 #: driver/xscreensaver-demo.glade2.h:66
 msgid "_About..."
-msgstr ""
+msgstr "_Informazioni su..."
 
-#: driver/demo-Gtk-widgets.c:305 driver/xscreensaver-demo.glade.h:30
+#: driver/demo-Gtk-widgets.c:305
+#: driver/xscreensaver-demo.glade.h:30
 msgid "Display version information."
-msgstr ""
+msgstr "Mostra informazioni sulla versione."
 
-#: driver/demo-Gtk-widgets.c:309 driver/xscreensaver-demo.glade.h:94
+#: driver/demo-Gtk-widgets.c:309
+#: driver/xscreensaver-demo.glade.h:94
 #: driver/xscreensaver-demo.glade2.h:75
 msgid "_Documentation..."
-msgstr ""
+msgstr "_Documentazione..."
 
-#: driver/demo-Gtk-widgets.c:318 driver/xscreensaver-demo.glade.h:38
+#: driver/demo-Gtk-widgets.c:318
+#: driver/xscreensaver-demo.glade.h:38
 msgid "Go to the documentation on the XScreenSaver web page."
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:348 driver/xscreensaver-demo.glade.h:18
+#: driver/demo-Gtk-widgets.c:348
+#: driver/xscreensaver-demo.glade.h:18
 msgid "Cycle After"
-msgstr ""
+msgstr "Cambia dopo"
 
-#: driver/demo-Gtk-widgets.c:370 driver/xscreensaver-demo.glade.h:78
+#: driver/demo-Gtk-widgets.c:370
+#: driver/xscreensaver-demo.glade.h:78
 #: driver/xscreensaver-demo.glade2.h:54
 msgid "Whether a password should be required to un-blank the screen."
-msgstr ""
+msgstr "Deve essere richiesta una password per riattivare lo schermo?"
 
-#: driver/demo-Gtk-widgets.c:372 driver/xscreensaver-demo.glade.h:50
+#: driver/demo-Gtk-widgets.c:372
+#: driver/xscreensaver-demo.glade.h:50
 msgid "Lock Screen After"
-msgstr ""
+msgstr "Blocca lo schermo dopo"
 
-#: driver/demo-Gtk-widgets.c:380 driver/xscreensaver-demo.glade.h:8
+#: driver/demo-Gtk-widgets.c:380
+#: driver/xscreensaver-demo.glade.h:8
 msgid "Blank After"
-msgstr ""
+msgstr "Spegni dopo"
 
-#: driver/demo-Gtk-widgets.c:403 driver/demo-Gtk-widgets.c:453
-#: driver/demo-Gtk-widgets.c:467 driver/demo-Gtk-widgets.c:1016
+#: driver/demo-Gtk-widgets.c:403
+#: driver/demo-Gtk-widgets.c:453
+#: driver/demo-Gtk-widgets.c:467
+#: driver/demo-Gtk-widgets.c:1016
 #: driver/xscreensaver-demo.glade.h:43
 msgid "How long before the monitor goes completely black."
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:407 driver/demo-Gtk-widgets.c:419
-#: driver/demo-Gtk-widgets.c:431 driver/demo-Gtk-widgets.c:1020
-#: driver/demo-Gtk-widgets.c:1032 driver/demo-Gtk-widgets.c:1044
-#: driver/xscreensaver-demo.glade.h:99 driver/xscreensaver-demo.glade2.h:92
+#: driver/demo-Gtk-widgets.c:407
+#: driver/demo-Gtk-widgets.c:419
+#: driver/demo-Gtk-widgets.c:431
+#: driver/demo-Gtk-widgets.c:1020
+#: driver/demo-Gtk-widgets.c:1032
+#: driver/demo-Gtk-widgets.c:1044
+#: driver/xscreensaver-demo.glade.h:99
+#: driver/xscreensaver-demo.glade2.h:92
 msgid "minutes"
-msgstr ""
+msgstr "minuti"
 
-#: driver/demo-Gtk-widgets.c:490 driver/xscreensaver-demo.glade.h:21
+#: driver/demo-Gtk-widgets.c:490
+#: driver/xscreensaver-demo.glade.h:21
 #: driver/xscreensaver-demo.glade2.h:12
-msgid ""
-"Demo the selected screen saver in full-screen mode (click the mouse to "
-"return.)"
-msgstr ""
+msgid "Demo the selected screen saver in full-screen mode (click the mouse to return.)"
+msgstr "Esegui una demo a schermo intero dello screensaver selezionato (click del mouse per ritornare)."
 
-#: driver/demo-Gtk-widgets.c:492 driver/xscreensaver-demo.glade.h:65
+#: driver/demo-Gtk-widgets.c:492
+#: driver/xscreensaver-demo.glade.h:65
 msgid "Settings..."
-msgstr ""
+msgstr "Configurazione..."
 
-#: driver/demo-Gtk-widgets.c:500 driver/xscreensaver-demo.glade.h:17
+#: driver/demo-Gtk-widgets.c:500
+#: driver/xscreensaver-demo.glade.h:17
 #: driver/xscreensaver-demo.glade2.h:9
 msgid "Customization and explanation of the selected screen saver."
-msgstr ""
+msgstr "Personalizzazione e dettagli dello screensaver selezionato."
 
-#: driver/demo-Gtk-widgets.c:521 driver/xscreensaver-demo.glade.h:52
+#: driver/demo-Gtk-widgets.c:521
+#: driver/xscreensaver-demo.glade.h:52
 msgid "Mode:"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:539 driver/xscreensaver-demo.glade.h:25
+#: driver/demo-Gtk-widgets.c:539
+#: driver/xscreensaver-demo.glade.h:25
 #: driver/xscreensaver-demo.glade2.h:16
-#, fuzzy
 msgid "Disable Screen Saver"
-msgstr "Salvaschermo"
+msgstr "Disabilita lo screensaver"
 
-#: driver/demo-Gtk-widgets.c:542 driver/xscreensaver-demo.glade.h:9
+#: driver/demo-Gtk-widgets.c:542
+#: driver/xscreensaver-demo.glade.h:9
 #: driver/xscreensaver-demo.glade2.h:5
 msgid "Blank Screen Only"
-msgstr ""
+msgstr "Annerisci lo schermo"
 
-#: driver/demo-Gtk-widgets.c:545 driver/xscreensaver-demo.glade.h:56
+#: driver/demo-Gtk-widgets.c:545
+#: driver/xscreensaver-demo.glade.h:56
 #: driver/xscreensaver-demo.glade2.h:42
-#, fuzzy
 msgid "Only One Screen Saver"
-msgstr "Salvaschermo"
+msgstr "Un solo screensaver"
 
-#: driver/demo-Gtk-widgets.c:548 driver/xscreensaver-demo.glade.h:60
+#: driver/demo-Gtk-widgets.c:548
+#: driver/xscreensaver-demo.glade.h:60
 #: driver/xscreensaver-demo.glade2.h:44
-#, fuzzy
 msgid "Random Screen Saver"
-msgstr "Salvaschermo"
+msgstr "Casuale"
 
-#: driver/demo-Gtk-widgets.c:644 driver/xscreensaver-demo.glade.h:91
+#: driver/demo-Gtk-widgets.c:644
+#: driver/xscreensaver-demo.glade.h:91
 msgid "\\/"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:652 driver/xscreensaver-demo.glade.h:61
+#: driver/demo-Gtk-widgets.c:652
+#: driver/xscreensaver-demo.glade.h:61
 #: driver/xscreensaver-demo.glade2.h:45
-msgid ""
-"Run the next screen saver in the list in full-screen mode (click the mouse "
-"to return.)"
-msgstr ""
+msgid "Run the next screen saver in the list in full-screen mode (click the mouse to return.)"
+msgstr "Esegui il prossimo screensaver della lista a schermo intero (click del mouse per ritornare)"
 
 #: driver/demo-Gtk-widgets.c:654
-msgid "/\\"
+msgid "/\""
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:662 driver/xscreensaver-demo.glade.h:62
+#: driver/demo-Gtk-widgets.c:662
+#: driver/xscreensaver-demo.glade.h:62
 #: driver/xscreensaver-demo.glade2.h:46
-msgid ""
-"Run the previous screen saver in the list in full-screen mode (click the "
-"mouse to return.)"
-msgstr ""
+msgid "Run the previous screen saver in the list in full-screen mode (click the mouse to return.)"
+msgstr "Esegui lo screensaver precedente della lista a schermo intero (click del mouse per ritornare)"
 
-#: driver/demo-Gtk-widgets.c:664 driver/demo-Gtk-widgets.c:1607
-#: driver/xscreensaver-demo.glade.h:22 driver/xscreensaver-demo.glade2.h:13
+#: driver/demo-Gtk-widgets.c:664
+#: driver/demo-Gtk-widgets.c:1607
+#: driver/xscreensaver-demo.glade.h:22
+#: driver/xscreensaver-demo.glade2.h:13
 msgid "Description"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:691 driver/xscreensaver-demo.glade.h:26
+#: driver/demo-Gtk-widgets.c:691
+#: driver/xscreensaver-demo.glade.h:26
 msgid "Display Modes"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:707 driver/xscreensaver-demo.glade.h:23
+#: driver/demo-Gtk-widgets.c:707
+#: driver/xscreensaver-demo.glade.h:23
 #: driver/xscreensaver-demo.glade2.h:14
 msgid "Diagnostics"
-msgstr ""
+msgstr "Diagnostica"
 
-#: driver/demo-Gtk-widgets.c:751 driver/xscreensaver-demo.glade.h:80
+#: driver/demo-Gtk-widgets.c:751
+#: driver/xscreensaver-demo.glade.h:80
 #: driver/xscreensaver-demo.glade2.h:56
 msgid "Whether the daemon should print lots of debugging information."
-msgstr ""
+msgstr "Il demone deve comunicare parecchie informazioni di debug?"
 
-#: driver/demo-Gtk-widgets.c:753 driver/xscreensaver-demo.glade.h:76
+#: driver/demo-Gtk-widgets.c:753
+#: driver/xscreensaver-demo.glade.h:76
 msgid "Verbose Diagnostics"
-msgstr ""
+msgstr "Diagnostica dettagliata"
 
-#: driver/demo-Gtk-widgets.c:768 driver/xscreensaver-demo.glade.h:79
+#: driver/demo-Gtk-widgets.c:768
+#: driver/xscreensaver-demo.glade.h:79
 #: driver/xscreensaver-demo.glade2.h:55
-msgid ""
-"Whether any error output of the display modes should be redirected to the "
-"screen."
-msgstr ""
+msgid "Whether any error output of the display modes should be redirected to the screen."
+msgstr "Si devono redirigere a schermo tutti i messaggi di errore della modalità di visualizzazione?"
 
-#: driver/demo-Gtk-widgets.c:770 driver/xscreensaver-demo.glade.h:29
+#: driver/demo-Gtk-widgets.c:770
+#: driver/xscreensaver-demo.glade.h:29
 msgid "Display Subprocess Errors"
-msgstr ""
+msgstr "Mostra gli errori dei sottoprocessi"
 
-#: driver/demo-Gtk-widgets.c:785 driver/xscreensaver-demo.glade.h:87
+#: driver/demo-Gtk-widgets.c:785
+#: driver/xscreensaver-demo.glade.h:87
 #: driver/xscreensaver-demo.glade2.h:63
-msgid ""
-"Whether the splash screen (with the version number and `Help' button) should "
-"be momentarily displayed when the daemon first starts up."
-msgstr ""
+msgid "Whether the splash screen (with the version number and `Help' button) should be momentarily displayed when the daemon first starts up."
+msgstr "Quando il demone viene avviato, si deve mostrare lo Splash Screen (con la versione ad il bottone \"Help\")?"
 
-#: driver/demo-Gtk-widgets.c:787 driver/xscreensaver-demo.glade.h:28
+#: driver/demo-Gtk-widgets.c:787
+#: driver/xscreensaver-demo.glade.h:28
 msgid "Display Splash Screen at Startup"
-msgstr ""
+msgstr "Mostra uno Splash Screen all'avvio"
 
-#: driver/demo-Gtk-widgets.c:796 driver/xscreensaver-demo.glade.h:15
+#: driver/demo-Gtk-widgets.c:796
+#: driver/xscreensaver-demo.glade.h:15
 #: driver/xscreensaver-demo.glade2.h:8
 msgid "Colormaps"
-msgstr ""
+msgstr "Mappe colori"
 
-#: driver/demo-Gtk-widgets.c:840 driver/xscreensaver-demo.glade.h:88
+#: driver/demo-Gtk-widgets.c:840
+#: driver/xscreensaver-demo.glade.h:88
 #: driver/xscreensaver-demo.glade2.h:64
-msgid ""
-"Whether to install a private colormap when running in 8-bit mode on the "
-"default Visual."
-msgstr ""
+msgid "Whether to install a private colormap when running in 8-bit mode on the default Visual."
+msgstr "In modalità 8 bit, installare una mappa colori privata nella visualizzazione corrente?"
 
-#: driver/demo-Gtk-widgets.c:842 driver/xscreensaver-demo.glade.h:48
+#: driver/demo-Gtk-widgets.c:842
+#: driver/xscreensaver-demo.glade.h:48
 msgid "Install Colormap"
-msgstr ""
+msgstr "Utilizza una mappa colori"
 
-#: driver/demo-Gtk-widgets.c:865 driver/xscreensaver-demo.glade.h:86
+#: driver/demo-Gtk-widgets.c:865
+#: driver/xscreensaver-demo.glade.h:86
 #: driver/xscreensaver-demo.glade2.h:62
-msgid ""
-"Whether the screen should slowly fade to black when the screen saver "
-"activates."
-msgstr ""
+msgid "Whether the screen should slowly fade to black when the screen saver activates."
+msgstr "All'attivazione dello screensaver, passare dallo schermo al nero con una dissolvenza?"
 
-#: driver/demo-Gtk-widgets.c:867 driver/xscreensaver-demo.glade.h:36
+#: driver/demo-Gtk-widgets.c:867
+#: driver/xscreensaver-demo.glade.h:36
 msgid "Fade To Black When Blanking"
-msgstr ""
+msgstr "Dissolvenza verso lo schermo nero"
 
-#: driver/demo-Gtk-widgets.c:882 driver/xscreensaver-demo.glade.h:85
+#: driver/demo-Gtk-widgets.c:882
+#: driver/xscreensaver-demo.glade.h:85
 #: driver/xscreensaver-demo.glade2.h:61
-msgid ""
-"Whether the screen should slowly fade in from black when the screen saver "
-"deactivates."
-msgstr ""
+msgid "Whether the screen should slowly fade in from black when the screen saver deactivates."
+msgstr "Alla disattivazione dello screensaver, passare dal nero allo schermo con una dissolvenza?"
 
-#: driver/demo-Gtk-widgets.c:884 driver/xscreensaver-demo.glade.h:35
+#: driver/demo-Gtk-widgets.c:884
+#: driver/xscreensaver-demo.glade.h:35
 msgid "Fade From Black When Unblanking"
-msgstr ""
+msgstr "Dissolvenza dallo schermo nero"
 
-#: driver/demo-Gtk-widgets.c:910 driver/xscreensaver-demo.glade.h:34
+#: driver/demo-Gtk-widgets.c:910
+#: driver/xscreensaver-demo.glade.h:34
 msgid "Fade Duration"
-msgstr ""
+msgstr "Durata della dissolvenza"
 
-#: driver/demo-Gtk-widgets.c:928 driver/xscreensaver-demo.glade.h:44
+#: driver/demo-Gtk-widgets.c:928
+#: driver/xscreensaver-demo.glade.h:44
 #: driver/xscreensaver-demo.glade2.h:31
 msgid "How long it should take for the screen to fade in and out."
-msgstr ""
+msgstr "Durata della dissolvenza."
 
-#: driver/demo-Gtk-widgets.c:932 driver/xscreensaver-demo.glade.h:100
+#: driver/demo-Gtk-widgets.c:932
+#: driver/xscreensaver-demo.glade.h:100
 #: driver/xscreensaver-demo.glade2.h:96
 msgid "seconds"
-msgstr ""
+msgstr "secondi"
 
-#: driver/demo-Gtk-widgets.c:942 driver/xscreensaver-demo.glade.h:27
+#: driver/demo-Gtk-widgets.c:942
+#: driver/xscreensaver-demo.glade.h:27
 #: driver/xscreensaver-demo.glade2.h:17
 msgid "Display Power Management"
-msgstr ""
+msgstr "Gestione dell'alimentazione del monitor"
 
-#: driver/demo-Gtk-widgets.c:986 driver/xscreensaver-demo.glade.h:84
+#: driver/demo-Gtk-widgets.c:986
+#: driver/xscreensaver-demo.glade.h:84
 #: driver/xscreensaver-demo.glade2.h:60
 msgid "Whether the monitor should be powered down after a while."
-msgstr ""
+msgstr "Il monitor deve essere spento dopo un po'?"
 
-#: driver/demo-Gtk-widgets.c:988 driver/xscreensaver-demo.glade.h:57
+#: driver/demo-Gtk-widgets.c:988
+#: driver/xscreensaver-demo.glade.h:57
 msgid "Power Management Enabled"
-msgstr ""
+msgstr "Gestione dell'alimentazione abilitata"
 
-#: driver/demo-Gtk-widgets.c:1056 driver/xscreensaver-demo.glade.h:55
+#: driver/demo-Gtk-widgets.c:1056
+#: driver/xscreensaver-demo.glade.h:55
 msgid "Off After"
-msgstr ""
+msgstr "Spegni dopo"
 
-#: driver/demo-Gtk-widgets.c:1069 driver/xscreensaver-demo.glade.h:70
+#: driver/demo-Gtk-widgets.c:1069
+#: driver/xscreensaver-demo.glade.h:70
 msgid "Suspend After"
-msgstr ""
+msgstr "Sospendi dopo"
 
-#: driver/demo-Gtk-widgets.c:1082 driver/xscreensaver-demo.glade.h:68
+#: driver/demo-Gtk-widgets.c:1082
+#: driver/xscreensaver-demo.glade.h:68
 msgid "Standby After"
-msgstr ""
+msgstr "Standby dopo"
 
-#: driver/demo-Gtk-widgets.c:1105 driver/xscreensaver-demo.glade.h:45
+#: driver/demo-Gtk-widgets.c:1105
+#: driver/xscreensaver-demo.glade.h:45
 #: driver/xscreensaver-demo.glade2.h:33
 msgid "How long until the monitor goes into power-saving mode."
-msgstr ""
+msgstr "Dopo quanto tempo il monitor va in modalità risparmio-energetico."
 
-#: driver/demo-Gtk-widgets.c:1119 driver/xscreensaver-demo.glade.h:46
+#: driver/demo-Gtk-widgets.c:1119
+#: driver/xscreensaver-demo.glade.h:46
 #: driver/xscreensaver-demo.glade2.h:34
 msgid "How long until the monitor powers down."
-msgstr ""
+msgstr "Dopo quanto tempo il monitor si spegne."
 
-#: driver/demo-Gtk-widgets.c:1123 driver/xscreensaver-demo.glade.h:47
+#: driver/demo-Gtk-widgets.c:1123
+#: driver/xscreensaver-demo.glade.h:47
 #: driver/xscreensaver-demo.glade2.h:35
 msgid "Image Manipulation"
-msgstr ""
+msgstr "Manipolazione delle immagini"
 
-#: driver/demo-Gtk-widgets.c:1167 driver/xscreensaver-demo.glade.h:81
+#: driver/demo-Gtk-widgets.c:1167
+#: driver/xscreensaver-demo.glade.h:81
 #: driver/xscreensaver-demo.glade2.h:57
-msgid ""
-"Whether the image-manipulating modes should be allowed to operate on an "
-"image of your desktop."
-msgstr ""
+msgid "Whether the image-manipulating modes should be allowed to operate on an image of your desktop."
+msgstr "La modalità Manipolazione delle immagini deve operare sull'immagine del desktop?"
 
-#: driver/demo-Gtk-widgets.c:1169 driver/xscreensaver-demo.glade.h:39
+#: driver/demo-Gtk-widgets.c:1169
+#: driver/xscreensaver-demo.glade.h:39
 msgid "Grab Desktop Images"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1184 driver/xscreensaver-demo.glade.h:82
-msgid ""
-"Whether the image-manipulating modes should operate on images captured from "
-"the system's video input (if there is one)."
-msgstr ""
+#: driver/demo-Gtk-widgets.c:1184
+#: driver/xscreensaver-demo.glade.h:82
+msgid "Whether the image-manipulating modes should operate on images captured from the system's video input (if there is one)."
+msgstr "La modalità Manipolazione delle immagini deve operare su immagini catturate dall'input video di sistema (se ce n'è)?"
 
-#: driver/demo-Gtk-widgets.c:1186 driver/xscreensaver-demo.glade.h:40
+#: driver/demo-Gtk-widgets.c:1186
+#: driver/xscreensaver-demo.glade.h:40
 msgid "Grab Video Frames"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1201 driver/xscreensaver-demo.glade.h:83
+#: driver/demo-Gtk-widgets.c:1201
+#: driver/xscreensaver-demo.glade.h:83
 #: driver/xscreensaver-demo.glade2.h:59
-msgid ""
-"Whether the image-manipulating modes should operate on random images loaded "
-"from disk."
-msgstr ""
+msgid "Whether the image-manipulating modes should operate on random images loaded from disk."
+msgstr "La modalità Manipolazione delle immagini deve operare su immagini random prese dal disco?"
 
-#: driver/demo-Gtk-widgets.c:1203 driver/xscreensaver-demo.glade.h:12
+#: driver/demo-Gtk-widgets.c:1203
+#: driver/xscreensaver-demo.glade.h:12
 msgid "Choose Random Image:"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1236 driver/xscreensaver-demo.glade.h:73
+#: driver/demo-Gtk-widgets.c:1236
+#: driver/xscreensaver-demo.glade.h:73
 #: driver/xscreensaver-demo.glade2.h:52
 msgid "The directory from which images will be randomly chosen."
-msgstr ""
+msgstr "La directory da dove verranno scelte le immagini random."
 
-#: driver/demo-Gtk-widgets.c:1238 driver/xscreensaver-demo.glade.h:10
+#: driver/demo-Gtk-widgets.c:1238
+#: driver/xscreensaver-demo.glade.h:10
 msgid "Browse"
-msgstr ""
+msgstr "Sfoglia"
 
-#: driver/demo-Gtk-widgets.c:1246 driver/demo-Gtk-widgets.c:1599
-#: driver/xscreensaver-demo.glade.h:3 driver/xscreensaver-demo.glade2.h:2
+#: driver/demo-Gtk-widgets.c:1246
+#: driver/demo-Gtk-widgets.c:1599
+#: driver/xscreensaver-demo.glade.h:3
+#: driver/xscreensaver-demo.glade2.h:2
 msgid "Advanced"
-msgstr ""
+msgstr "Avanzate"
 
-#: driver/demo-Gtk-widgets.c:1444 driver/xscreensaver-demo.glade.h:90
+#: driver/demo-Gtk-widgets.c:1444
+#: driver/xscreensaver-demo.glade.h:90
 msgid "XScreenSaver: Mode-Specific Settings"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1466 driver/xscreensaver-demo.glade.h:64
+#: driver/demo-Gtk-widgets.c:1466
+#: driver/xscreensaver-demo.glade.h:64
 #: driver/xscreensaver-demo.glade2.h:47
 msgid "Settings"
-msgstr ""
+msgstr "Configurazione"
 
-#: driver/demo-Gtk-widgets.c:1495 driver/xscreensaver-demo.glade.h:66
+#: driver/demo-Gtk-widgets.c:1495
+#: driver/xscreensaver-demo.glade.h:66
 #: driver/xscreensaver-demo.glade2.h:49
 msgid "Standard"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1532 driver/xscreensaver-demo.glade.h:77
+#: driver/demo-Gtk-widgets.c:1532
+#: driver/xscreensaver-demo.glade.h:77
 msgid "Visual:"
-msgstr ""
+msgstr "Visualizzazione:"
 
-#: driver/demo-Gtk-widgets.c:1551 driver/xscreensaver-demo.glade.h:7
+#: driver/demo-Gtk-widgets.c:1551
+#: driver/xscreensaver-demo.glade.h:7
 #: driver/xscreensaver-demo.glade2.h:4
 msgid "Best"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1552 driver/xscreensaver-demo.glade.h:19
+#: driver/demo-Gtk-widgets.c:1552
+#: driver/xscreensaver-demo.glade.h:19
 #: driver/xscreensaver-demo.glade2.h:10
 msgid "Default"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1553 driver/xscreensaver-demo.glade.h:20
+#: driver/demo-Gtk-widgets.c:1553
+#: driver/xscreensaver-demo.glade.h:20
 #: driver/xscreensaver-demo.glade2.h:11
 msgid "Default-N"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1554 driver/xscreensaver-demo.glade.h:37
+#: driver/demo-Gtk-widgets.c:1554
+#: driver/xscreensaver-demo.glade.h:37
 #: driver/xscreensaver-demo.glade2.h:23
 msgid "GL"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1555 driver/xscreensaver-demo.glade.h:74
+#: driver/demo-Gtk-widgets.c:1555
+#: driver/xscreensaver-demo.glade.h:74
 #: driver/xscreensaver-demo.glade2.h:53
 msgid "TrueColor"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1556 driver/xscreensaver-demo.glade.h:59
+#: driver/demo-Gtk-widgets.c:1556
+#: driver/xscreensaver-demo.glade.h:59
 #: driver/xscreensaver-demo.glade2.h:43
 msgid "PseudoColor"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1557 driver/xscreensaver-demo.glade.h:69
+#: driver/demo-Gtk-widgets.c:1557
+#: driver/xscreensaver-demo.glade.h:69
 #: driver/xscreensaver-demo.glade2.h:50
 msgid "StaticGray"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1558 driver/xscreensaver-demo.glade.h:42
+#: driver/demo-Gtk-widgets.c:1558
+#: driver/xscreensaver-demo.glade.h:42
 #: driver/xscreensaver-demo.glade2.h:27
 msgid "GrayScale"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1559 driver/xscreensaver-demo.glade.h:24
+#: driver/demo-Gtk-widgets.c:1559
+#: driver/xscreensaver-demo.glade.h:24
 #: driver/xscreensaver-demo.glade2.h:15
 msgid "DirectColor"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1560 driver/xscreensaver-demo.glade.h:14
-#: driver/xscreensaver-demo.glade2.h:7 hacks/config/fuzzyflakes.xml.h:3
+#: driver/demo-Gtk-widgets.c:1560
+#: driver/xscreensaver-demo.glade.h:14
+#: driver/xscreensaver-demo.glade2.h:7
+#: hacks/config/fuzzyflakes.xml.h:3
 msgid "Color"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1561 driver/xscreensaver-demo.glade.h:41
+#: driver/demo-Gtk-widgets.c:1561
+#: driver/xscreensaver-demo.glade.h:41
 #: driver/xscreensaver-demo.glade2.h:26
 msgid "Gray"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1562 driver/xscreensaver-demo.glade.h:53
+#: driver/demo-Gtk-widgets.c:1562
+#: driver/xscreensaver-demo.glade.h:53
 #: driver/xscreensaver-demo.glade2.h:37
 msgid "Mono"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1572 driver/xscreensaver-demo.glade.h:72
-msgid ""
-"The X visual type that this demo will require.  If that visual is available "
-"it will be used, otherwise, this demo will not be run."
+#: driver/demo-Gtk-widgets.c:1572
+#: driver/xscreensaver-demo.glade.h:72
+msgid "The X visual type that this demo will require.  If that visual is available it will be used, otherwise, this demo will not be run."
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1575 driver/xscreensaver-demo.glade.h:16
+#: driver/demo-Gtk-widgets.c:1575
+#: driver/xscreensaver-demo.glade.h:16
 msgid "Command Line:"
-msgstr ""
+msgstr "Riga di comando:"
 
-#: driver/demo-Gtk-widgets.c:1647 driver/xscreensaver-demo.glade.h:31
+#: driver/demo-Gtk-widgets.c:1647
+#: driver/xscreensaver-demo.glade.h:31
 msgid "Documentation..."
-msgstr ""
+msgstr "Documentazione..."
 
-#: driver/demo-Gtk-widgets.c:1655 driver/xscreensaver-demo.glade.h:13
+#: driver/demo-Gtk-widgets.c:1655
+#: driver/xscreensaver-demo.glade.h:13
 msgid "Click here to read the manual for this display mode, if it has one."
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1680 driver/xscreensaver-demo.glade.h:4
+#: driver/demo-Gtk-widgets.c:1680
+#: driver/xscreensaver-demo.glade.h:4
 msgid "Advanced >>"
-msgstr ""
+msgstr "Avanzate >>"
 
-#: driver/demo-Gtk-widgets.c:1688 driver/xscreensaver-demo.glade.h:32
+#: driver/demo-Gtk-widgets.c:1688
+#: driver/xscreensaver-demo.glade.h:32
 msgid "Edit the command line directly."
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1690 driver/xscreensaver-demo.glade.h:67
+#: driver/demo-Gtk-widgets.c:1690
+#: driver/xscreensaver-demo.glade.h:67
 msgid "Standard <<"
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1698 driver/xscreensaver-demo.glade.h:6
+#: driver/demo-Gtk-widgets.c:1698
+#: driver/xscreensaver-demo.glade.h:6
 msgid "Back to the graphical configuration options."
 msgstr ""
 
-#: driver/demo-Gtk-widgets.c:1718 driver/xscreensaver-demo.glade.h:11
+#: driver/demo-Gtk-widgets.c:1718
+#: driver/xscreensaver-demo.glade.h:11
 msgid "Cancel"
 msgstr ""
 
@@ -750,58 +853,55 @@ msgstr ""
 
 #: driver/xscreensaver-demo.glade2.h:6
 msgid "Choose _Random Image:"
-msgstr ""
+msgstr "Usa un'immagine _random:"
 
 #: driver/xscreensaver-demo.glade2.h:18
 msgid "Display Subprocess _Errors"
-msgstr ""
+msgstr "Mostra gli _errori dei sottoprocessi"
 
 #: driver/xscreensaver-demo.glade2.h:19
-#, fuzzy
 msgid "Display _Splash Screen at Startup"
-msgstr "Salvaschermo"
+msgstr "Mostra uno _Splash Screen all'avvio"
 
 #: driver/xscreensaver-demo.glade2.h:20
 msgid "F_ade Duration"
-msgstr ""
+msgstr "_Durata della dissolvenza"
 
 #: driver/xscreensaver-demo.glade2.h:21
 msgid "Fade from Black When _Unblanking"
-msgstr ""
+msgstr "Dissolvenza dallo schermo ne_ro"
 
 #: driver/xscreensaver-demo.glade2.h:22
 msgid "Fade to Black when _Blanking"
-msgstr ""
+msgstr "Dissolvenza verso lo schermo _nero"
 
 #: driver/xscreensaver-demo.glade2.h:24
 msgid "Grab Desktop _Images"
-msgstr ""
+msgstr "Utilizza un'_istantanea del desktop"
 
 #: driver/xscreensaver-demo.glade2.h:25
 msgid "Grab _Video Frames"
-msgstr ""
+msgstr "Utilizza i fotogrammi _video"
 
 #: driver/xscreensaver-demo.glade2.h:28
 msgid "How long after the screen blanks until a password will be required."
-msgstr ""
+msgstr "Dopo lo spegnimenro dello schermo, il tempo dopo il quale viene richiesta una password."
 
 #: driver/xscreensaver-demo.glade2.h:29
 msgid "How long before the screensaver activates."
-msgstr ""
+msgstr "Quanto tempo passa prima che si attivi lo screensaver."
 
 #: driver/xscreensaver-demo.glade2.h:30
-msgid ""
-"How long each display mode should run before choosing a new one (in Random "
-"mode.)"
-msgstr ""
+msgid "How long each display mode should run before choosing a new one (in Random mode.)"
+msgstr "In modalità casuale, il tempo che intercorre tra una modalità di visualizzazione e l'altra."
 
 #: driver/xscreensaver-demo.glade2.h:32
 msgid "How long until the monitor goes completely black."
-msgstr ""
+msgstr "Dopo quanto tempo il monitor va in modalità standby."
 
 #: driver/xscreensaver-demo.glade2.h:36
 msgid "Install _Colormap"
-msgstr ""
+msgstr "Utilizza una mappa _colori"
 
 #: driver/xscreensaver-demo.glade2.h:38
 msgid ""
@@ -814,69 +914,68 @@ msgid ""
 "Not\n"
 "Installed"
 msgstr ""
+"Non\n"
+"installato"
 
 #: driver/xscreensaver-demo.glade2.h:48
 msgid "Stand_by After"
-msgstr ""
+msgstr "Stand_by dopo"
 
 #: driver/xscreensaver-demo.glade2.h:51
 msgid "Sus_pend After"
-msgstr ""
+msgstr "Sos_pendi dopo"
 
 #: driver/xscreensaver-demo.glade2.h:58
-msgid ""
-"Whether the image-manipulating modes should operate on images captured from "
-"the system's video input (if there is one.)"
+msgid "Whether the image-manipulating modes should operate on images captured from the system's video input (if there is one.)"
 msgstr ""
 
 #: driver/xscreensaver-demo.glade2.h:67
 msgid "_Advanced"
-msgstr ""
+msgstr "_Avanzate"
 
 #: driver/xscreensaver-demo.glade2.h:68
 msgid "_Advanced >>"
-msgstr ""
+msgstr "_Avanzate >>"
 
 #: driver/xscreensaver-demo.glade2.h:69
 msgid "_Blank After"
-msgstr ""
+msgstr "Annerisci lo _schermo dopo"
 
 #: driver/xscreensaver-demo.glade2.h:71
 msgid "_Browse"
-msgstr ""
+msgstr "S_foglia"
 
 #: driver/xscreensaver-demo.glade2.h:72
 msgid "_Command Line:"
-msgstr ""
+msgstr "_Riga di comando:"
 
 #: driver/xscreensaver-demo.glade2.h:73
 msgid "_Cycle After"
-msgstr ""
+msgstr "Cam_bia screensaver ogni"
 
 #: driver/xscreensaver-demo.glade2.h:74
 msgid "_Display Modes"
-msgstr ""
+msgstr "Mo_dalità di visualizzazione"
 
 #: driver/xscreensaver-demo.glade2.h:79
-#, fuzzy
 msgid "_Lock Screen After"
-msgstr "Salvaschermo"
+msgstr "B_locca lo schermo dopo"
 
 #: driver/xscreensaver-demo.glade2.h:81
 msgid "_Mode:"
-msgstr ""
+msgstr "_Modalità"
 
 #: driver/xscreensaver-demo.glade2.h:82
 msgid "_Off After"
-msgstr ""
+msgstr "Spegni d_opo"
 
 #: driver/xscreensaver-demo.glade2.h:83
 msgid "_Power Management Enabled"
-msgstr ""
+msgstr "_Gestione dell'alimentazione abilitata"
 
 #: driver/xscreensaver-demo.glade2.h:84
 msgid "_Preview"
-msgstr ""
+msgstr "Ante_prima"
 
 #: driver/xscreensaver-demo.glade2.h:85
 msgid "_Quit"
@@ -884,7 +983,7 @@ msgstr ""
 
 #: driver/xscreensaver-demo.glade2.h:87
 msgid "_Settings..."
-msgstr ""
+msgstr "C_onfigurazione..."
 
 #: driver/xscreensaver-demo.glade2.h:88
 msgid "_Standard <<"
@@ -892,11 +991,11 @@ msgstr ""
 
 #: driver/xscreensaver-demo.glade2.h:89
 msgid "_Verbose Diagnostics"
-msgstr ""
+msgstr "Diagnostica _dettagliata"
 
 #: driver/xscreensaver-demo.glade2.h:90
 msgid "_Visual:"
-msgstr ""
+msgstr "_Visualizzazione:"
 
 #: driver/xscreensaver-demo.glade2.h:91
 msgid "dialog1"
@@ -908,424 +1007,781 @@ msgstr ""
 
 #: driver/xscreensaver-demo.glade2.h:94
 msgid "not installed"
-msgstr ""
+msgstr "non installato"
 
 #: driver/xscreensaver-demo.glade2.h:95
 msgid "preview"
-msgstr ""
+msgstr "anteprima"
 
 #: hacks/config/anemone.xml.h:1
 msgid "Anemone"
-msgstr ""
+msgstr "Anemone"
 
-#: hacks/config/anemone.xml.h:2 hacks/config/fuzzyflakes.xml.h:1
+#: hacks/config/anemone.xml.h:2
+#: hacks/config/fuzzyflakes.xml.h:1
 msgid "Arms"
-msgstr ""
-
-#: hacks/config/anemone.xml.h:3 hacks/config/anemotaxis.xml.h:5
-#: hacks/config/antinspect.xml.h:4 hacks/config/antspotlight.xml.h:3
-#: hacks/config/ant.xml.h:6 hacks/config/apollonian.xml.h:5
-#: hacks/config/atlantis.xml.h:4 hacks/config/attraction.xml.h:8
-#: hacks/config/atunnel.xml.h:3 hacks/config/barcode.xml.h:4
-#: hacks/config/blaster.xml.h:3 hacks/config/blinkbox.xml.h:5
-#: hacks/config/blitspin.xml.h:4 hacks/config/blocktube.xml.h:4
-#: hacks/config/boing.xml.h:2 hacks/config/bouboule.xml.h:3
-#: hacks/config/bouncingcow.xml.h:6 hacks/config/boxed.xml.h:4
-#: hacks/config/boxfit.xml.h:7 hacks/config/braid.xml.h:4
-#: hacks/config/bubble3d.xml.h:3 hacks/config/bubbles.xml.h:8
-#: hacks/config/bumps.xml.h:3 hacks/config/cage.xml.h:2
-#: hacks/config/carousel.xml.h:5 hacks/config/circuit.xml.h:4
-#: hacks/config/cloudlife.xml.h:3 hacks/config/compass.xml.h:3
-#: hacks/config/coral.xml.h:7 hacks/config/critical.xml.h:3
-#: hacks/config/crystal.xml.h:6 hacks/config/cubenetic.xml.h:8
-#: hacks/config/cubestorm.xml.h:4 hacks/config/cynosure.xml.h:4
-#: hacks/config/dangerball.xml.h:3 hacks/config/decayscreen.xml.h:2
-#: hacks/config/deluxe.xml.h:4 hacks/config/demon.xml.h:4
-#: hacks/config/discrete.xml.h:2 hacks/config/distort.xml.h:4
-#: hacks/config/drift.xml.h:3 hacks/config/endgame.xml.h:3
-#: hacks/config/engine.xml.h:8 hacks/config/epicycle.xml.h:5
-#: hacks/config/eruption.xml.h:5 hacks/config/euler2d.xml.h:3
-#: hacks/config/extrusion.xml.h:3 hacks/config/fadeplot.xml.h:4
-#: hacks/config/fireworkx.xml.h:3 hacks/config/flag.xml.h:2
-#: hacks/config/flame.xml.h:6 hacks/config/flipflop.xml.h:1
-#: hacks/config/flipscreen3d.xml.h:1 hacks/config/flow.xml.h:2
-#: hacks/config/fluidballs.xml.h:5 hacks/config/flyingtoasters.xml.h:5
-#: hacks/config/fontglide.xml.h:4 hacks/config/forest.xml.h:1
-#: hacks/config/fuzzyflakes.xml.h:7 hacks/config/galaxy.xml.h:3
-#: hacks/config/gears.xml.h:2 hacks/config/gflux.xml.h:6
-#: hacks/config/glblur.xml.h:4 hacks/config/glforestfire.xml.h:4
-#: hacks/config/glknots.xml.h:3 hacks/config/glmatrix.xml.h:8
-#: hacks/config/glplanet.xml.h:2 hacks/config/glsnake.xml.h:6
-#: hacks/config/gltext.xml.h:3 hacks/config/goop.xml.h:4
-#: hacks/config/grav.xml.h:2 hacks/config/greynetic.xml.h:1
-#: hacks/config/halo.xml.h:2 hacks/config/hopalong.xml.h:9
-#: hacks/config/hyperball.xml.h:2 hacks/config/hypercube.xml.h:2
-#: hacks/config/hypertorus.xml.h:6 hacks/config/ifs.xml.h:1
-#: hacks/config/interference.xml.h:7 hacks/config/intermomentary.xml.h:1
-#: hacks/config/jigglypuff.xml.h:6 hacks/config/jigsaw.xml.h:3
-#: hacks/config/juggle.xml.h:2 hacks/config/julia.xml.h:2
-#: hacks/config/kaleidescope.xml.h:2 hacks/config/klein.xml.h:2
-#: hacks/config/kumppa.xml.h:3 hacks/config/lament.xml.h:2
-#: hacks/config/laser.xml.h:3 hacks/config/lavalite.xml.h:10
-#: hacks/config/lightning.xml.h:1 hacks/config/lisa.xml.h:2
-#: hacks/config/lissie.xml.h:3 hacks/config/lmorph.xml.h:3
-#: hacks/config/loop.xml.h:1 hacks/config/maze.xml.h:4
-#: hacks/config/memscroller.xml.h:5 hacks/config/menger.xml.h:3
-#: hacks/config/metaballs.xml.h:4 hacks/config/mirrorblob.xml.h:12
-#: hacks/config/mismunch.xml.h:2 hacks/config/moebius.xml.h:3
-#: hacks/config/moire2.xml.h:2 hacks/config/molecule.xml.h:10
-#: hacks/config/morph3d.xml.h:3 hacks/config/mountain.xml.h:2
-#: hacks/config/munch.xml.h:3 hacks/config/nerverot.xml.h:9
-#: hacks/config/noof.xml.h:2 hacks/config/pacman.xml.h:1
-#: hacks/config/penetrate.xml.h:3 hacks/config/penrose.xml.h:6
-#: hacks/config/petri.xml.h:5 hacks/config/phosphor.xml.h:4
-#: hacks/config/piecewise.xml.h:4 hacks/config/pinion.xml.h:5
-#: hacks/config/pipes.xml.h:5 hacks/config/polyhedra.xml.h:18
-#: hacks/config/polyominoes.xml.h:2 hacks/config/polytopes.xml.h:11
-#: hacks/config/pong.xml.h:1 hacks/config/popsquares.xml.h:3
-#: hacks/config/providence.xml.h:2 hacks/config/pulsar.xml.h:11
-#: hacks/config/pyro.xml.h:4 hacks/config/qix.xml.h:7
-#: hacks/config/queens.xml.h:1 hacks/config/rd-bomb.xml.h:9
-#: hacks/config/ripples.xml.h:4 hacks/config/rocks.xml.h:4
-#: hacks/config/rotor.xml.h:3 hacks/config/rubik.xml.h:3
-#: hacks/config/sballs.xml.h:4 hacks/config/shadebobs.xml.h:3
-#: hacks/config/sierpinski3d.xml.h:2 hacks/config/sierpinski.xml.h:2
-#: hacks/config/slidescreen.xml.h:2 hacks/config/slip.xml.h:2
-#: hacks/config/speedmine.xml.h:3 hacks/config/spheremonics.xml.h:5
-#: hacks/config/sphere.xml.h:2 hacks/config/spiral.xml.h:3
-#: hacks/config/spotlight.xml.h:2 hacks/config/sproingies.xml.h:2
-#: hacks/config/squiral.xml.h:4 hacks/config/stairs.xml.h:1
-#: hacks/config/starfish.xml.h:3 hacks/config/starwars.xml.h:6
-#: hacks/config/strange.xml.h:1 hacks/config/substrate.xml.h:7
-#: hacks/config/superquadrics.xml.h:4 hacks/config/swirl.xml.h:2
-#: hacks/config/t3d.xml.h:6 hacks/config/thornbird.xml.h:2
-#: hacks/config/triangle.xml.h:1 hacks/config/truchet.xml.h:1
-#: hacks/config/twang.xml.h:3 hacks/config/vines.xml.h:1
-#: hacks/config/wormhole.xml.h:2 hacks/config/worm.xml.h:3
-#: hacks/config/xearth.xml.h:7 hacks/config/xfishtank.xml.h:3
-#: hacks/config/xflame.xml.h:4 hacks/config/xjack.xml.h:1
-#: hacks/config/xmatrix.xml.h:5 hacks/config/xmountains.xml.h:13
-#: hacks/config/xplanet.xml.h:8 hacks/config/xrayswarm.xml.h:2
+msgstr "Braccia"
+
+#: hacks/config/anemone.xml.h:3
+#: hacks/config/anemotaxis.xml.h:5
+#: hacks/config/antinspect.xml.h:4
+#: hacks/config/antspotlight.xml.h:3
+#: hacks/config/ant.xml.h:6
+#: hacks/config/apollonian.xml.h:5
+#: hacks/config/atlantis.xml.h:4
+#: hacks/config/attraction.xml.h:8
+#: hacks/config/atunnel.xml.h:3
+#: hacks/config/barcode.xml.h:4
+#: hacks/config/blaster.xml.h:3
+#: hacks/config/blinkbox.xml.h:5
+#: hacks/config/blitspin.xml.h:4
+#: hacks/config/blocktube.xml.h:4
+#: hacks/config/boing.xml.h:2
+#: hacks/config/bouboule.xml.h:3
+#: hacks/config/bouncingcow.xml.h:6
+#: hacks/config/boxed.xml.h:4
+#: hacks/config/boxfit.xml.h:7
+#: hacks/config/braid.xml.h:4
+#: hacks/config/bubble3d.xml.h:3
+#: hacks/config/bubbles.xml.h:8
+#: hacks/config/bumps.xml.h:3
+#: hacks/config/cage.xml.h:2
+#: hacks/config/carousel.xml.h:5
+#: hacks/config/circuit.xml.h:4
+#: hacks/config/cloudlife.xml.h:3
+#: hacks/config/compass.xml.h:3
+#: hacks/config/coral.xml.h:7
+#: hacks/config/critical.xml.h:3
+#: hacks/config/crystal.xml.h:6
+#: hacks/config/cubenetic.xml.h:8
+#: hacks/config/cubestorm.xml.h:4
+#: hacks/config/cynosure.xml.h:4
+#: hacks/config/dangerball.xml.h:3
+#: hacks/config/decayscreen.xml.h:2
+#: hacks/config/deluxe.xml.h:4
+#: hacks/config/demon.xml.h:4
+#: hacks/config/discrete.xml.h:2
+#: hacks/config/distort.xml.h:4
+#: hacks/config/drift.xml.h:3
+#: hacks/config/endgame.xml.h:3
+#: hacks/config/engine.xml.h:8
+#: hacks/config/epicycle.xml.h:5
+#: hacks/config/eruption.xml.h:5
+#: hacks/config/euler2d.xml.h:3
+#: hacks/config/extrusion.xml.h:3
+#: hacks/config/fadeplot.xml.h:4
+#: hacks/config/fireworkx.xml.h:3
+#: hacks/config/flag.xml.h:2
+#: hacks/config/flame.xml.h:6
+#: hacks/config/flipflop.xml.h:1
+#: hacks/config/flipscreen3d.xml.h:1
+#: hacks/config/flow.xml.h:2
+#: hacks/config/fluidballs.xml.h:5
+#: hacks/config/flyingtoasters.xml.h:5
+#: hacks/config/fontglide.xml.h:4
+#: hacks/config/forest.xml.h:1
+#: hacks/config/fuzzyflakes.xml.h:7
+#: hacks/config/galaxy.xml.h:3
+#: hacks/config/gears.xml.h:2
+#: hacks/config/gflux.xml.h:6
+#: hacks/config/glblur.xml.h:4
+#: hacks/config/glforestfire.xml.h:4
+#: hacks/config/glknots.xml.h:3
+#: hacks/config/glmatrix.xml.h:8
+#: hacks/config/glplanet.xml.h:2
+#: hacks/config/glsnake.xml.h:6
+#: hacks/config/gltext.xml.h:3
+#: hacks/config/goop.xml.h:4
+#: hacks/config/grav.xml.h:2
+#: hacks/config/greynetic.xml.h:1
+#: hacks/config/halo.xml.h:2
+#: hacks/config/hopalong.xml.h:9
+#: hacks/config/hyperball.xml.h:2
+#: hacks/config/hypercube.xml.h:2
+#: hacks/config/hypertorus.xml.h:6
+#: hacks/config/ifs.xml.h:1
+#: hacks/config/interference.xml.h:7
+#: hacks/config/intermomentary.xml.h:1
+#: hacks/config/jigglypuff.xml.h:6
+#: hacks/config/jigsaw.xml.h:3
+#: hacks/config/juggle.xml.h:2
+#: hacks/config/julia.xml.h:2
+#: hacks/config/kaleidescope.xml.h:2
+#: hacks/config/klein.xml.h:2
+#: hacks/config/kumppa.xml.h:3
+#: hacks/config/lament.xml.h:2
+#: hacks/config/laser.xml.h:3
+#: hacks/config/lavalite.xml.h:10
+#: hacks/config/lightning.xml.h:1
+#: hacks/config/lisa.xml.h:2
+#: hacks/config/lissie.xml.h:3
+#: hacks/config/lmorph.xml.h:3
+#: hacks/config/loop.xml.h:1
+#: hacks/config/maze.xml.h:4
+#: hacks/config/memscroller.xml.h:5
+#: hacks/config/menger.xml.h:3
+#: hacks/config/metaballs.xml.h:4
+#: hacks/config/mirrorblob.xml.h:12
+#: hacks/config/mismunch.xml.h:2
+#: hacks/config/moebius.xml.h:3
+#: hacks/config/moire2.xml.h:2
+#: hacks/config/molecule.xml.h:10
+#: hacks/config/morph3d.xml.h:3
+#: hacks/config/mountain.xml.h:2
+#: hacks/config/munch.xml.h:3
+#: hacks/config/nerverot.xml.h:9
+#: hacks/config/noof.xml.h:2
+#: hacks/config/pacman.xml.h:1
+#: hacks/config/penetrate.xml.h:3
+#: hacks/config/penrose.xml.h:6
+#: hacks/config/petri.xml.h:5
+#: hacks/config/phosphor.xml.h:4
+#: hacks/config/piecewise.xml.h:4
+#: hacks/config/pinion.xml.h:5
+#: hacks/config/pipes.xml.h:5
+#: hacks/config/polyhedra.xml.h:18
+#: hacks/config/polyominoes.xml.h:2
+#: hacks/config/polytopes.xml.h:11
+#: hacks/config/pong.xml.h:1
+#: hacks/config/popsquares.xml.h:3
+#: hacks/config/providence.xml.h:2
+#: hacks/config/pulsar.xml.h:11
+#: hacks/config/pyro.xml.h:4
+#: hacks/config/qix.xml.h:7
+#: hacks/config/queens.xml.h:1
+#: hacks/config/rd-bomb.xml.h:9
+#: hacks/config/ripples.xml.h:4
+#: hacks/config/rocks.xml.h:4
+#: hacks/config/rotor.xml.h:3
+#: hacks/config/rubik.xml.h:3
+#: hacks/config/sballs.xml.h:4
+#: hacks/config/shadebobs.xml.h:3
+#: hacks/config/sierpinski3d.xml.h:2
+#: hacks/config/sierpinski.xml.h:2
+#: hacks/config/slidescreen.xml.h:2
+#: hacks/config/slip.xml.h:2
+#: hacks/config/speedmine.xml.h:3
+#: hacks/config/spheremonics.xml.h:5
+#: hacks/config/sphere.xml.h:2
+#: hacks/config/spiral.xml.h:3
+#: hacks/config/spotlight.xml.h:2
+#: hacks/config/sproingies.xml.h:2
+#: hacks/config/squiral.xml.h:4
+#: hacks/config/stairs.xml.h:1
+#: hacks/config/starfish.xml.h:3
+#: hacks/config/starwars.xml.h:6
+#: hacks/config/strange.xml.h:1
+#: hacks/config/substrate.xml.h:7
+#: hacks/config/superquadrics.xml.h:4
+#: hacks/config/swirl.xml.h:2
+#: hacks/config/t3d.xml.h:6
+#: hacks/config/thornbird.xml.h:2
+#: hacks/config/triangle.xml.h:1
+#: hacks/config/truchet.xml.h:1
+#: hacks/config/twang.xml.h:3
+#: hacks/config/vines.xml.h:1
+#: hacks/config/wormhole.xml.h:2
+#: hacks/config/worm.xml.h:3
+#: hacks/config/xearth.xml.h:7
+#: hacks/config/xfishtank.xml.h:3
+#: hacks/config/xflame.xml.h:4
+#: hacks/config/xjack.xml.h:1
+#: hacks/config/xmatrix.xml.h:5
+#: hacks/config/xmountains.xml.h:13
+#: hacks/config/xplanet.xml.h:8
+#: hacks/config/xrayswarm.xml.h:2
 #: hacks/config/zoom.xml.h:2
 msgid "Fast"
-msgstr ""
-
-#: hacks/config/anemone.xml.h:4 hacks/config/anemotaxis.xml.h:6
-#: hacks/config/blaster.xml.h:4 hacks/config/bouboule.xml.h:4
-#: hacks/config/coral.xml.h:8 hacks/config/cubenetic.xml.h:9
-#: hacks/config/eruption.xml.h:6 hacks/config/euler2d.xml.h:4
-#: hacks/config/fiberlamp.xml.h:2 hacks/config/flame.xml.h:7
-#: hacks/config/fluidballs.xml.h:6 hacks/config/fuzzyflakes.xml.h:8
-#: hacks/config/kaleidescope.xml.h:3 hacks/config/lisa.xml.h:3
-#: hacks/config/pedal.xml.h:4 hacks/config/petri.xml.h:7
-#: hacks/config/qix.xml.h:8 hacks/config/substrate.xml.h:8
-#: hacks/config/thornbird.xml.h:3 hacks/config/whirlwindwarp.xml.h:1
-#: hacks/config/wormhole.xml.h:3 hacks/config/xfishtank.xml.h:4
+msgstr "Veloce"
+
+#: hacks/config/anemone.xml.h:4
+#: hacks/config/anemotaxis.xml.h:6
+#: hacks/config/blaster.xml.h:4
+#: hacks/config/bouboule.xml.h:4
+#: hacks/config/coral.xml.h:8
+#: hacks/config/cubenetic.xml.h:9
+#: hacks/config/eruption.xml.h:6
+#: hacks/config/euler2d.xml.h:4
+#: hacks/config/fiberlamp.xml.h:2
+#: hacks/config/flame.xml.h:7
+#: hacks/config/fluidballs.xml.h:6
+#: hacks/config/fuzzyflakes.xml.h:8
+#: hacks/config/kaleidescope.xml.h:3
+#: hacks/config/lisa.xml.h:3
+#: hacks/config/pedal.xml.h:4
+#: hacks/config/petri.xml.h:7
+#: hacks/config/qix.xml.h:8
+#: hacks/config/substrate.xml.h:8
+#: hacks/config/thornbird.xml.h:3
+#: hacks/config/whirlwindwarp.xml.h:1
+#: hacks/config/wormhole.xml.h:3
+#: hacks/config/xfishtank.xml.h:4
 msgid "Few"
-msgstr ""
-
-#: hacks/config/anemone.xml.h:5 hacks/config/anemotaxis.xml.h:7
-#: hacks/config/ant.xml.h:9 hacks/config/apollonian.xml.h:7
-#: hacks/config/attraction.xml.h:18 hacks/config/blaster.xml.h:6
-#: hacks/config/bouboule.xml.h:5 hacks/config/braid.xml.h:7
-#: hacks/config/coral.xml.h:9 hacks/config/critical.xml.h:4
-#: hacks/config/crystal.xml.h:8 hacks/config/cubenetic.xml.h:13
-#: hacks/config/cynosure.xml.h:6 hacks/config/deco.xml.h:5
-#: hacks/config/deluxe.xml.h:6 hacks/config/demon.xml.h:6
-#: hacks/config/discrete.xml.h:4 hacks/config/drift.xml.h:9
-#: hacks/config/epicycle.xml.h:8 hacks/config/eruption.xml.h:12
-#: hacks/config/euler2d.xml.h:8 hacks/config/fadeplot.xml.h:6
-#: hacks/config/fiberlamp.xml.h:6 hacks/config/flag.xml.h:5
-#: hacks/config/flame.xml.h:11 hacks/config/flow.xml.h:7
-#: hacks/config/fluidballs.xml.h:13 hacks/config/forest.xml.h:3
-#: hacks/config/fuzzyflakes.xml.h:12 hacks/config/galaxy.xml.h:6
-#: hacks/config/grav.xml.h:4 hacks/config/halo.xml.h:4
-#: hacks/config/hopalong.xml.h:15 hacks/config/ifs.xml.h:3
-#: hacks/config/imsmap.xml.h:9 hacks/config/interference.xml.h:14
-#: hacks/config/julia.xml.h:6 hacks/config/kaleidescope.xml.h:5
-#: hacks/config/laser.xml.h:6 hacks/config/lightning.xml.h:3
-#: hacks/config/lisa.xml.h:5 hacks/config/lissie.xml.h:6
-#: hacks/config/loop.xml.h:4 hacks/config/metaballs.xml.h:6
-#: hacks/config/mismunch.xml.h:4 hacks/config/moire2.xml.h:3
-#: hacks/config/moire.xml.h:5 hacks/config/mountain.xml.h:4
-#: hacks/config/nerverot.xml.h:15 hacks/config/pedal.xml.h:6
-#: hacks/config/penrose.xml.h:7 hacks/config/petri.xml.h:11
-#: hacks/config/polyominoes.xml.h:5 hacks/config/qix.xml.h:14
-#: hacks/config/rd-bomb.xml.h:12 hacks/config/ripples.xml.h:7
-#: hacks/config/rocks.xml.h:5 hacks/config/rotor.xml.h:6
-#: hacks/config/shadebobs.xml.h:5 hacks/config/sierpinski.xml.h:4
-#: hacks/config/slip.xml.h:4 hacks/config/sphere.xml.h:3
-#: hacks/config/spiral.xml.h:6 hacks/config/squiral.xml.h:9
-#: hacks/config/starfish.xml.h:5 hacks/config/strange.xml.h:2
-#: hacks/config/swirl.xml.h:3 hacks/config/thornbird.xml.h:4
-#: hacks/config/triangle.xml.h:3 hacks/config/vines.xml.h:2
-#: hacks/config/whirlwindwarp.xml.h:4 hacks/config/worm.xml.h:4
-#: hacks/config/xearth.xml.h:12 hacks/config/xfishtank.xml.h:8
+msgstr "Poche"
+
+#: hacks/config/anemone.xml.h:5
+#: hacks/config/anemotaxis.xml.h:7
+#: hacks/config/ant.xml.h:9
+#: hacks/config/apollonian.xml.h:7
+#: hacks/config/attraction.xml.h:18
+#: hacks/config/blaster.xml.h:6
+#: hacks/config/bouboule.xml.h:5
+#: hacks/config/braid.xml.h:7
+#: hacks/config/coral.xml.h:9
+#: hacks/config/critical.xml.h:4
+#: hacks/config/crystal.xml.h:8
+#: hacks/config/cubenetic.xml.h:13
+#: hacks/config/cynosure.xml.h:6
+#: hacks/config/deco.xml.h:5
+#: hacks/config/deluxe.xml.h:6
+#: hacks/config/demon.xml.h:6
+#: hacks/config/discrete.xml.h:4
+#: hacks/config/drift.xml.h:9
+#: hacks/config/epicycle.xml.h:8
+#: hacks/config/eruption.xml.h:12
+#: hacks/config/euler2d.xml.h:8
+#: hacks/config/fadeplot.xml.h:6
+#: hacks/config/fiberlamp.xml.h:6
+#: hacks/config/flag.xml.h:5
+#: hacks/config/flame.xml.h:11
+#: hacks/config/flow.xml.h:7
+#: hacks/config/fluidballs.xml.h:13
+#: hacks/config/forest.xml.h:3
+#: hacks/config/fuzzyflakes.xml.h:12
+#: hacks/config/galaxy.xml.h:6
+#: hacks/config/grav.xml.h:4
+#: hacks/config/halo.xml.h:4
+#: hacks/config/hopalong.xml.h:15
+#: hacks/config/ifs.xml.h:3
+#: hacks/config/imsmap.xml.h:9
+#: hacks/config/interference.xml.h:14
+#: hacks/config/julia.xml.h:6
+#: hacks/config/kaleidescope.xml.h:5
+#: hacks/config/laser.xml.h:6
+#: hacks/config/lightning.xml.h:3
+#: hacks/config/lisa.xml.h:5
+#: hacks/config/lissie.xml.h:6
+#: hacks/config/loop.xml.h:4
+#: hacks/config/metaballs.xml.h:6
+#: hacks/config/mismunch.xml.h:4
+#: hacks/config/moire2.xml.h:3
+#: hacks/config/moire.xml.h:5
+#: hacks/config/mountain.xml.h:4
+#: hacks/config/nerverot.xml.h:15
+#: hacks/config/pedal.xml.h:6
+#: hacks/config/penrose.xml.h:7
+#: hacks/config/petri.xml.h:11
+#: hacks/config/polyominoes.xml.h:5
+#: hacks/config/qix.xml.h:14
+#: hacks/config/rd-bomb.xml.h:12
+#: hacks/config/ripples.xml.h:7
+#: hacks/config/rocks.xml.h:5
+#: hacks/config/rotor.xml.h:6
+#: hacks/config/shadebobs.xml.h:5
+#: hacks/config/sierpinski.xml.h:4
+#: hacks/config/slip.xml.h:4
+#: hacks/config/sphere.xml.h:3
+#: hacks/config/spiral.xml.h:6
+#: hacks/config/squiral.xml.h:9
+#: hacks/config/starfish.xml.h:5
+#: hacks/config/strange.xml.h:2
+#: hacks/config/swirl.xml.h:3
+#: hacks/config/thornbird.xml.h:4
+#: hacks/config/triangle.xml.h:3
+#: hacks/config/vines.xml.h:2
+#: hacks/config/whirlwindwarp.xml.h:4
+#: hacks/config/worm.xml.h:4
+#: hacks/config/xearth.xml.h:12
+#: hacks/config/xfishtank.xml.h:8
 msgid "Many"
-msgstr ""
-
-#: hacks/config/anemone.xml.h:6 hacks/config/ant.xml.h:11
-#: hacks/config/apollonian.xml.h:8 hacks/config/attraction.xml.h:19
-#: hacks/config/bouboule.xml.h:6 hacks/config/braid.xml.h:9
-#: hacks/config/critical.xml.h:5 hacks/config/crystal.xml.h:10
-#: hacks/config/cynosure.xml.h:7 hacks/config/deco.xml.h:8
-#: hacks/config/deluxe.xml.h:7 hacks/config/demon.xml.h:7
-#: hacks/config/discrete.xml.h:6 hacks/config/drift.xml.h:10
-#: hacks/config/epicycle.xml.h:9 hacks/config/eruption.xml.h:14
-#: hacks/config/euler2d.xml.h:9 hacks/config/fadeplot.xml.h:7
-#: hacks/config/flag.xml.h:6 hacks/config/flame.xml.h:12
-#: hacks/config/flow.xml.h:8 hacks/config/forest.xml.h:4
-#: hacks/config/galaxy.xml.h:7 hacks/config/grav.xml.h:5
-#: hacks/config/halo.xml.h:6 hacks/config/hopalong.xml.h:17
-#: hacks/config/ifs.xml.h:4 hacks/config/imsmap.xml.h:10
-#: hacks/config/interference.xml.h:15 hacks/config/julia.xml.h:7
-#: hacks/config/laser.xml.h:8 hacks/config/lightning.xml.h:4
-#: hacks/config/lisa.xml.h:6 hacks/config/lissie.xml.h:7
-#: hacks/config/loop.xml.h:5 hacks/config/metaballs.xml.h:10
-#: hacks/config/moire2.xml.h:5 hacks/config/moire.xml.h:7
-#: hacks/config/mountain.xml.h:6 hacks/config/penrose.xml.h:8
-#: hacks/config/polyominoes.xml.h:6 hacks/config/popsquares.xml.h:4
-#: hacks/config/rd-bomb.xml.h:13 hacks/config/rocks.xml.h:6
-#: hacks/config/rotor.xml.h:7 hacks/config/shadebobs.xml.h:6
-#: hacks/config/sierpinski.xml.h:5 hacks/config/slip.xml.h:5
-#: hacks/config/sphere.xml.h:4 hacks/config/spiral.xml.h:8
-#: hacks/config/squiral.xml.h:10 hacks/config/starfish.xml.h:6
-#: hacks/config/strange.xml.h:3 hacks/config/swirl.xml.h:5
-#: hacks/config/thornbird.xml.h:5 hacks/config/triangle.xml.h:4
-#: hacks/config/vines.xml.h:3 hacks/config/worm.xml.h:5
-#: hacks/config/xearth.xml.h:17 hacks/config/xfishtank.xml.h:9
+msgstr "Molte"
+
+#: hacks/config/anemone.xml.h:6
+#: hacks/config/ant.xml.h:11
+#: hacks/config/apollonian.xml.h:8
+#: hacks/config/attraction.xml.h:19
+#: hacks/config/bouboule.xml.h:6
+#: hacks/config/braid.xml.h:9
+#: hacks/config/critical.xml.h:5
+#: hacks/config/crystal.xml.h:10
+#: hacks/config/cynosure.xml.h:7
+#: hacks/config/deco.xml.h:8
+#: hacks/config/deluxe.xml.h:7
+#: hacks/config/demon.xml.h:7
+#: hacks/config/discrete.xml.h:6
+#: hacks/config/drift.xml.h:10
+#: hacks/config/epicycle.xml.h:9
+#: hacks/config/eruption.xml.h:14
+#: hacks/config/euler2d.xml.h:9
+#: hacks/config/fadeplot.xml.h:7
+#: hacks/config/flag.xml.h:6
+#: hacks/config/flame.xml.h:12
+#: hacks/config/flow.xml.h:8
+#: hacks/config/forest.xml.h:4
+#: hacks/config/galaxy.xml.h:7
+#: hacks/config/grav.xml.h:5
+#: hacks/config/halo.xml.h:6
+#: hacks/config/hopalong.xml.h:17
+#: hacks/config/ifs.xml.h:4
+#: hacks/config/imsmap.xml.h:10
+#: hacks/config/interference.xml.h:15
+#: hacks/config/julia.xml.h:7
+#: hacks/config/laser.xml.h:8
+#: hacks/config/lightning.xml.h:4
+#: hacks/config/lisa.xml.h:6
+#: hacks/config/lissie.xml.h:7
+#: hacks/config/loop.xml.h:5
+#: hacks/config/metaballs.xml.h:10
+#: hacks/config/moire2.xml.h:5
+#: hacks/config/moire.xml.h:7
+#: hacks/config/mountain.xml.h:6
+#: hacks/config/penrose.xml.h:8
+#: hacks/config/polyominoes.xml.h:6
+#: hacks/config/popsquares.xml.h:4
+#: hacks/config/rd-bomb.xml.h:13
+#: hacks/config/rocks.xml.h:6
+#: hacks/config/rotor.xml.h:7
+#: hacks/config/shadebobs.xml.h:6
+#: hacks/config/sierpinski.xml.h:5
+#: hacks/config/slip.xml.h:5
+#: hacks/config/sphere.xml.h:4
+#: hacks/config/spiral.xml.h:8
+#: hacks/config/squiral.xml.h:10
+#: hacks/config/starfish.xml.h:6
+#: hacks/config/strange.xml.h:3
+#: hacks/config/swirl.xml.h:5
+#: hacks/config/thornbird.xml.h:5
+#: hacks/config/triangle.xml.h:4
+#: hacks/config/vines.xml.h:3
+#: hacks/config/worm.xml.h:5
+#: hacks/config/xearth.xml.h:17
+#: hacks/config/xfishtank.xml.h:9
 msgid "Number of Colors"
 msgstr ""
 
-#: hacks/config/anemone.xml.h:7 hacks/config/fireflies.xml.h:32
+#: hacks/config/anemone.xml.h:7
+#: hacks/config/fireflies.xml.h:32
 #: hacks/config/pyro.xml.h:8
 msgid "Often"
-msgstr ""
+msgstr "Alta"
 
 #: hacks/config/anemone.xml.h:8
 msgid "Rarely"
-msgstr ""
-
-#: hacks/config/anemone.xml.h:9 hacks/config/anemotaxis.xml.h:10
-#: hacks/config/antinspect.xml.h:6 hacks/config/antspotlight.xml.h:5
-#: hacks/config/ant.xml.h:15 hacks/config/apollonian.xml.h:11
-#: hacks/config/atlantis.xml.h:13 hacks/config/attraction.xml.h:26
-#: hacks/config/atunnel.xml.h:6 hacks/config/barcode.xml.h:6
-#: hacks/config/blaster.xml.h:8 hacks/config/blinkbox.xml.h:7
-#: hacks/config/blitspin.xml.h:7 hacks/config/blocktube.xml.h:9
-#: hacks/config/boing.xml.h:10 hacks/config/bouboule.xml.h:8
-#: hacks/config/bouncingcow.xml.h:10 hacks/config/boxed.xml.h:7
-#: hacks/config/boxfit.xml.h:10 hacks/config/braid.xml.h:11
-#: hacks/config/bubble3d.xml.h:5 hacks/config/bubbles.xml.h:10
-#: hacks/config/bumps.xml.h:4 hacks/config/cage.xml.h:4
-#: hacks/config/carousel.xml.h:14 hacks/config/circuit.xml.h:10
-#: hacks/config/cloudlife.xml.h:11 hacks/config/compass.xml.h:4
-#: hacks/config/coral.xml.h:12 hacks/config/critical.xml.h:6
-#: hacks/config/crystal.xml.h:11 hacks/config/cubenetic.xml.h:22
-#: hacks/config/cubestorm.xml.h:8 hacks/config/cynosure.xml.h:9
-#: hacks/config/dangerball.xml.h:5 hacks/config/decayscreen.xml.h:17
-#: hacks/config/deluxe.xml.h:8 hacks/config/demon.xml.h:8
-#: hacks/config/discrete.xml.h:7 hacks/config/distort.xml.h:11
-#: hacks/config/drift.xml.h:12 hacks/config/endgame.xml.h:5
-#: hacks/config/engine.xml.h:15 hacks/config/epicycle.xml.h:10
-#: hacks/config/eruption.xml.h:19 hacks/config/euler2d.xml.h:14
-#: hacks/config/extrusion.xml.h:11 hacks/config/fadeplot.xml.h:8
-#: hacks/config/fireworkx.xml.h:9 hacks/config/flag.xml.h:7
-#: hacks/config/flame.xml.h:14 hacks/config/flipflop.xml.h:5
-#: hacks/config/flipscreen3d.xml.h:6 hacks/config/flow.xml.h:10
-#: hacks/config/fluidballs.xml.h:18 hacks/config/flyingtoasters.xml.h:11
-#: hacks/config/fontglide.xml.h:13 hacks/config/forest.xml.h:5
-#: hacks/config/fuzzyflakes.xml.h:15 hacks/config/galaxy.xml.h:11
-#: hacks/config/gears.xml.h:7 hacks/config/gflux.xml.h:12
-#: hacks/config/glblur.xml.h:14 hacks/config/glforestfire.xml.h:14
-#: hacks/config/glknots.xml.h:17 hacks/config/glmatrix.xml.h:18
-#: hacks/config/glplanet.xml.h:8 hacks/config/glsnake.xml.h:12
-#: hacks/config/gltext.xml.h:13 hacks/config/goop.xml.h:10
-#: hacks/config/grav.xml.h:8 hacks/config/greynetic.xml.h:3
-#: hacks/config/halo.xml.h:10 hacks/config/hopalong.xml.h:21
-#: hacks/config/hyperball.xml.h:8 hacks/config/hypercube.xml.h:7
-#: hacks/config/hypertorus.xml.h:13 hacks/config/ifs.xml.h:5
-#: hacks/config/interference.xml.h:17 hacks/config/intermomentary.xml.h:4
-#: hacks/config/jigglypuff.xml.h:16 hacks/config/jigsaw.xml.h:5
-#: hacks/config/juggle.xml.h:8 hacks/config/julia.xml.h:8
-#: hacks/config/kaleidescope.xml.h:7 hacks/config/klein.xml.h:7
-#: hacks/config/kumppa.xml.h:8 hacks/config/lament.xml.h:6
-#: hacks/config/laser.xml.h:10 hacks/config/lavalite.xml.h:27
-#: hacks/config/lightning.xml.h:5 hacks/config/lisa.xml.h:8
-#: hacks/config/lissie.xml.h:9 hacks/config/lmorph.xml.h:11
-#: hacks/config/loop.xml.h:7 hacks/config/maze.xml.h:14
-#: hacks/config/memscroller.xml.h:7 hacks/config/menger.xml.h:16
-#: hacks/config/metaballs.xml.h:13 hacks/config/mirrorblob.xml.h:19
-#: hacks/config/mismunch.xml.h:10 hacks/config/moebius.xml.h:7
-#: hacks/config/moire2.xml.h:6 hacks/config/molecule.xml.h:22
-#: hacks/config/morph3d.xml.h:6 hacks/config/mountain.xml.h:7
-#: hacks/config/munch.xml.h:7 hacks/config/nerverot.xml.h:20
-#: hacks/config/noof.xml.h:5 hacks/config/pacman.xml.h:5
-#: hacks/config/penetrate.xml.h:6 hacks/config/penrose.xml.h:11
-#: hacks/config/petri.xml.h:23 hacks/config/phosphor.xml.h:7
-#: hacks/config/piecewise.xml.h:9 hacks/config/pinion.xml.h:13
-#: hacks/config/pipes.xml.h:15 hacks/config/polyhedra.xml.h:119
-#: hacks/config/polyominoes.xml.h:10 hacks/config/polytopes.xml.h:20
-#: hacks/config/pong.xml.h:4 hacks/config/popsquares.xml.h:5
-#: hacks/config/providence.xml.h:5 hacks/config/pulsar.xml.h:15
-#: hacks/config/pyro.xml.h:13 hacks/config/qix.xml.h:19
-#: hacks/config/queens.xml.h:4 hacks/config/rd-bomb.xml.h:17
-#: hacks/config/ripples.xml.h:11 hacks/config/rocks.xml.h:9
-#: hacks/config/rotor.xml.h:11 hacks/config/rubik.xml.h:9
-#: hacks/config/sballs.xml.h:13 hacks/config/shadebobs.xml.h:9
-#: hacks/config/sierpinski3d.xml.h:8 hacks/config/sierpinski.xml.h:7
-#: hacks/config/slidescreen.xml.h:6 hacks/config/slip.xml.h:7
-#: hacks/config/speedmine.xml.h:13 hacks/config/spheremonics.xml.h:19
-#: hacks/config/sphere.xml.h:5 hacks/config/spiral.xml.h:9
-#: hacks/config/spotlight.xml.h:4 hacks/config/sproingies.xml.h:6
-#: hacks/config/squiral.xml.h:14 hacks/config/stairs.xml.h:3
-#: hacks/config/starfish.xml.h:8 hacks/config/starwars.xml.h:12
-#: hacks/config/strange.xml.h:4 hacks/config/substrate.xml.h:15
-#: hacks/config/superquadrics.xml.h:8 hacks/config/swirl.xml.h:6
-#: hacks/config/t3d.xml.h:11 hacks/config/thornbird.xml.h:7
-#: hacks/config/triangle.xml.h:5 hacks/config/truchet.xml.h:2
-#: hacks/config/twang.xml.h:9 hacks/config/vines.xml.h:4
-#: hacks/config/wormhole.xml.h:5 hacks/config/worm.xml.h:7
-#: hacks/config/xearth.xml.h:22 hacks/config/xfishtank.xml.h:10
-#: hacks/config/xflame.xml.h:5 hacks/config/xjack.xml.h:2
-#: hacks/config/xmatrix.xml.h:15 hacks/config/xplanet.xml.h:59
-#: hacks/config/xrayswarm.xml.h:3 hacks/config/zoom.xml.h:6
+msgstr "Bassa"
+
+#: hacks/config/anemone.xml.h:9
+#: hacks/config/anemotaxis.xml.h:10
+#: hacks/config/antinspect.xml.h:6
+#: hacks/config/antspotlight.xml.h:5
+#: hacks/config/ant.xml.h:15
+#: hacks/config/apollonian.xml.h:11
+#: hacks/config/atlantis.xml.h:13
+#: hacks/config/attraction.xml.h:26
+#: hacks/config/atunnel.xml.h:6
+#: hacks/config/barcode.xml.h:6
+#: hacks/config/blaster.xml.h:8
+#: hacks/config/blinkbox.xml.h:7
+#: hacks/config/blitspin.xml.h:7
+#: hacks/config/blocktube.xml.h:9
+#: hacks/config/boing.xml.h:10
+#: hacks/config/bouboule.xml.h:8
+#: hacks/config/bouncingcow.xml.h:10
+#: hacks/config/boxed.xml.h:7
+#: hacks/config/boxfit.xml.h:10
+#: hacks/config/braid.xml.h:11
+#: hacks/config/bubble3d.xml.h:5
+#: hacks/config/bubbles.xml.h:10
+#: hacks/config/bumps.xml.h:4
+#: hacks/config/cage.xml.h:4
+#: hacks/config/carousel.xml.h:14
+#: hacks/config/circuit.xml.h:10
+#: hacks/config/cloudlife.xml.h:11
+#: hacks/config/compass.xml.h:4
+#: hacks/config/coral.xml.h:12
+#: hacks/config/critical.xml.h:6
+#: hacks/config/crystal.xml.h:11
+#: hacks/config/cubenetic.xml.h:22
+#: hacks/config/cubestorm.xml.h:8
+#: hacks/config/cynosure.xml.h:9
+#: hacks/config/dangerball.xml.h:5
+#: hacks/config/decayscreen.xml.h:17
+#: hacks/config/deluxe.xml.h:8
+#: hacks/config/demon.xml.h:8
+#: hacks/config/discrete.xml.h:7
+#: hacks/config/distort.xml.h:11
+#: hacks/config/drift.xml.h:12
+#: hacks/config/endgame.xml.h:5
+#: hacks/config/engine.xml.h:15
+#: hacks/config/epicycle.xml.h:10
+#: hacks/config/eruption.xml.h:19
+#: hacks/config/euler2d.xml.h:14
+#: hacks/config/extrusion.xml.h:11
+#: hacks/config/fadeplot.xml.h:8
+#: hacks/config/fireworkx.xml.h:9
+#: hacks/config/flag.xml.h:7
+#: hacks/config/flame.xml.h:14
+#: hacks/config/flipflop.xml.h:5
+#: hacks/config/flipscreen3d.xml.h:6
+#: hacks/config/flow.xml.h:10
+#: hacks/config/fluidballs.xml.h:18
+#: hacks/config/flyingtoasters.xml.h:11
+#: hacks/config/fontglide.xml.h:13
+#: hacks/config/forest.xml.h:5
+#: hacks/config/fuzzyflakes.xml.h:15
+#: hacks/config/galaxy.xml.h:11
+#: hacks/config/gears.xml.h:7
+#: hacks/config/gflux.xml.h:12
+#: hacks/config/glblur.xml.h:14
+#: hacks/config/glforestfire.xml.h:14
+#: hacks/config/glknots.xml.h:17
+#: hacks/config/glmatrix.xml.h:18
+#: hacks/config/glplanet.xml.h:8
+#: hacks/config/glsnake.xml.h:12
+#: hacks/config/gltext.xml.h:13
+#: hacks/config/goop.xml.h:10
+#: hacks/config/grav.xml.h:8
+#: hacks/config/greynetic.xml.h:3
+#: hacks/config/halo.xml.h:10
+#: hacks/config/hopalong.xml.h:21
+#: hacks/config/hyperball.xml.h:8
+#: hacks/config/hypercube.xml.h:7
+#: hacks/config/hypertorus.xml.h:13
+#: hacks/config/ifs.xml.h:5
+#: hacks/config/interference.xml.h:17
+#: hacks/config/intermomentary.xml.h:4
+#: hacks/config/jigglypuff.xml.h:16
+#: hacks/config/jigsaw.xml.h:5
+#: hacks/config/juggle.xml.h:8
+#: hacks/config/julia.xml.h:8
+#: hacks/config/kaleidescope.xml.h:7
+#: hacks/config/klein.xml.h:7
+#: hacks/config/kumppa.xml.h:8
+#: hacks/config/lament.xml.h:6
+#: hacks/config/laser.xml.h:10
+#: hacks/config/lavalite.xml.h:27
+#: hacks/config/lightning.xml.h:5
+#: hacks/config/lisa.xml.h:8
+#: hacks/config/lissie.xml.h:9
+#: hacks/config/lmorph.xml.h:11
+#: hacks/config/loop.xml.h:7
+#: hacks/config/maze.xml.h:14
+#: hacks/config/memscroller.xml.h:7
+#: hacks/config/menger.xml.h:16
+#: hacks/config/metaballs.xml.h:13
+#: hacks/config/mirrorblob.xml.h:19
+#: hacks/config/mismunch.xml.h:10
+#: hacks/config/moebius.xml.h:7
+#: hacks/config/moire2.xml.h:6
+#: hacks/config/molecule.xml.h:22
+#: hacks/config/morph3d.xml.h:6
+#: hacks/config/mountain.xml.h:7
+#: hacks/config/munch.xml.h:7
+#: hacks/config/nerverot.xml.h:20
+#: hacks/config/noof.xml.h:5
+#: hacks/config/pacman.xml.h:5
+#: hacks/config/penetrate.xml.h:6
+#: hacks/config/penrose.xml.h:11
+#: hacks/config/petri.xml.h:23
+#: hacks/config/phosphor.xml.h:7
+#: hacks/config/piecewise.xml.h:9
+#: hacks/config/pinion.xml.h:13
+#: hacks/config/pipes.xml.h:15
+#: hacks/config/polyhedra.xml.h:119
+#: hacks/config/polyominoes.xml.h:10
+#: hacks/config/polytopes.xml.h:20
+#: hacks/config/pong.xml.h:4
+#: hacks/config/popsquares.xml.h:5
+#: hacks/config/providence.xml.h:5
+#: hacks/config/pulsar.xml.h:15
+#: hacks/config/pyro.xml.h:13
+#: hacks/config/qix.xml.h:19
+#: hacks/config/queens.xml.h:4
+#: hacks/config/rd-bomb.xml.h:17
+#: hacks/config/ripples.xml.h:11
+#: hacks/config/rocks.xml.h:9
+#: hacks/config/rotor.xml.h:11
+#: hacks/config/rubik.xml.h:9
+#: hacks/config/sballs.xml.h:13
+#: hacks/config/shadebobs.xml.h:9
+#: hacks/config/sierpinski3d.xml.h:8
+#: hacks/config/sierpinski.xml.h:7
+#: hacks/config/slidescreen.xml.h:6
+#: hacks/config/slip.xml.h:7
+#: hacks/config/speedmine.xml.h:13
+#: hacks/config/spheremonics.xml.h:19
+#: hacks/config/sphere.xml.h:5
+#: hacks/config/spiral.xml.h:9
+#: hacks/config/spotlight.xml.h:4
+#: hacks/config/sproingies.xml.h:6
+#: hacks/config/squiral.xml.h:14
+#: hacks/config/stairs.xml.h:3
+#: hacks/config/starfish.xml.h:8
+#: hacks/config/starwars.xml.h:12
+#: hacks/config/strange.xml.h:4
+#: hacks/config/substrate.xml.h:15
+#: hacks/config/superquadrics.xml.h:8
+#: hacks/config/swirl.xml.h:6
+#: hacks/config/t3d.xml.h:11
+#: hacks/config/thornbird.xml.h:7
+#: hacks/config/triangle.xml.h:5
+#: hacks/config/truchet.xml.h:2
+#: hacks/config/twang.xml.h:9
+#: hacks/config/vines.xml.h:4
+#: hacks/config/wormhole.xml.h:5
+#: hacks/config/worm.xml.h:7
+#: hacks/config/xearth.xml.h:22
+#: hacks/config/xfishtank.xml.h:10
+#: hacks/config/xflame.xml.h:5
+#: hacks/config/xjack.xml.h:2
+#: hacks/config/xmatrix.xml.h:15
+#: hacks/config/xplanet.xml.h:59
+#: hacks/config/xrayswarm.xml.h:3
+#: hacks/config/zoom.xml.h:6
 msgid "Slow"
-msgstr ""
-
-#: hacks/config/anemone.xml.h:10 hacks/config/anemotaxis.xml.h:12
-#: hacks/config/antinspect.xml.h:7 hacks/config/antspotlight.xml.h:6
-#: hacks/config/ant.xml.h:17 hacks/config/apollonian.xml.h:12
-#: hacks/config/attraction.xml.h:28 hacks/config/atunnel.xml.h:7
-#: hacks/config/barcode.xml.h:7 hacks/config/blaster.xml.h:9
-#: hacks/config/blinkbox.xml.h:8 hacks/config/blocktube.xml.h:11
-#: hacks/config/boing.xml.h:12 hacks/config/bouboule.xml.h:9
-#: hacks/config/boxfit.xml.h:12 hacks/config/braid.xml.h:12
-#: hacks/config/bubble3d.xml.h:6 hacks/config/bubbles.xml.h:11
-#: hacks/config/bumps.xml.h:5 hacks/config/cage.xml.h:6
-#: hacks/config/circuit.xml.h:11 hacks/config/cloudlife.xml.h:13
-#: hacks/config/compass.xml.h:5 hacks/config/coral.xml.h:14
-#: hacks/config/critical.xml.h:7 hacks/config/crystal.xml.h:12
-#: hacks/config/cubenetic.xml.h:24 hacks/config/cynosure.xml.h:10
-#: hacks/config/dangerball.xml.h:6 hacks/config/decayscreen.xml.h:18
-#: hacks/config/deluxe.xml.h:9 hacks/config/demon.xml.h:10
-#: hacks/config/discrete.xml.h:9 hacks/config/distort.xml.h:13
-#: hacks/config/drift.xml.h:13 hacks/config/endgame.xml.h:6
-#: hacks/config/engine.xml.h:16 hacks/config/epicycle.xml.h:11
-#: hacks/config/eruption.xml.h:20 hacks/config/euler2d.xml.h:15
-#: hacks/config/extrusion.xml.h:13 hacks/config/fadeplot.xml.h:10
-#: hacks/config/fireworkx.xml.h:11 hacks/config/flag.xml.h:9
-#: hacks/config/flame.xml.h:15 hacks/config/flipflop.xml.h:7
-#: hacks/config/flipscreen3d.xml.h:7 hacks/config/flow.xml.h:12
-#: hacks/config/fluidballs.xml.h:20 hacks/config/forest.xml.h:6
-#: hacks/config/fuzzyflakes.xml.h:17 hacks/config/galaxy.xml.h:12
-#: hacks/config/glblur.xml.h:17 hacks/config/glforestfire.xml.h:15
-#: hacks/config/glplanet.xml.h:10 hacks/config/gltext.xml.h:15
-#: hacks/config/goop.xml.h:11 hacks/config/grav.xml.h:9
-#: hacks/config/greynetic.xml.h:4 hacks/config/halo.xml.h:11
-#: hacks/config/hopalong.xml.h:23 hacks/config/hyperball.xml.h:9
-#: hacks/config/hypercube.xml.h:8 hacks/config/ifs.xml.h:6
-#: hacks/config/intermomentary.xml.h:5 hacks/config/jigsaw.xml.h:7
-#: hacks/config/juggle.xml.h:9 hacks/config/julia.xml.h:10
-#: hacks/config/kaleidescope.xml.h:8 hacks/config/klein.xml.h:8
-#: hacks/config/kumppa.xml.h:9 hacks/config/lament.xml.h:7
-#: hacks/config/laser.xml.h:11 hacks/config/lavalite.xml.h:30
-#: hacks/config/lightning.xml.h:6 hacks/config/lisa.xml.h:9
-#: hacks/config/lissie.xml.h:11 hacks/config/lmorph.xml.h:12
-#: hacks/config/loop.xml.h:9 hacks/config/memscroller.xml.h:8
-#: hacks/config/menger.xml.h:18 hacks/config/metaballs.xml.h:15
-#: hacks/config/mirrorblob.xml.h:21 hacks/config/mismunch.xml.h:12
-#: hacks/config/moebius.xml.h:10 hacks/config/moire2.xml.h:7
-#: hacks/config/molecule.xml.h:24 hacks/config/morph3d.xml.h:7
-#: hacks/config/mountain.xml.h:8 hacks/config/munch.xml.h:9
-#: hacks/config/nerverot.xml.h:22 hacks/config/noof.xml.h:6
-#: hacks/config/pacman.xml.h:6 hacks/config/penrose.xml.h:12
-#: hacks/config/petri.xml.h:25 hacks/config/phosphor.xml.h:8
-#: hacks/config/piecewise.xml.h:11 hacks/config/pipes.xml.h:16
-#: hacks/config/polyominoes.xml.h:11 hacks/config/pong.xml.h:5
-#: hacks/config/popsquares.xml.h:6 hacks/config/providence.xml.h:6
-#: hacks/config/pulsar.xml.h:17 hacks/config/qix.xml.h:22
-#: hacks/config/queens.xml.h:6 hacks/config/rotor.xml.h:12
-#: hacks/config/rubik.xml.h:11 hacks/config/sballs.xml.h:14
-#: hacks/config/shadebobs.xml.h:10 hacks/config/sierpinski3d.xml.h:10
-#: hacks/config/sierpinski.xml.h:9 hacks/config/slidescreen.xml.h:7
-#: hacks/config/slip.xml.h:9 hacks/config/speedmine.xml.h:15
-#: hacks/config/spheremonics.xml.h:22 hacks/config/sphere.xml.h:6
-#: hacks/config/spiral.xml.h:10 hacks/config/spotlight.xml.h:5
-#: hacks/config/sproingies.xml.h:8 hacks/config/squiral.xml.h:16
-#: hacks/config/stairs.xml.h:5 hacks/config/starfish.xml.h:9
-#: hacks/config/strange.xml.h:5 hacks/config/substrate.xml.h:16
-#: hacks/config/superquadrics.xml.h:10 hacks/config/swirl.xml.h:7
-#: hacks/config/t3d.xml.h:13 hacks/config/thornbird.xml.h:8
-#: hacks/config/triangle.xml.h:6 hacks/config/truchet.xml.h:3
-#: hacks/config/twang.xml.h:10 hacks/config/vines.xml.h:5
-#: hacks/config/whirlygig.xml.h:13 hacks/config/worm.xml.h:8
-#: hacks/config/xearth.xml.h:25 hacks/config/xflame.xml.h:6
-#: hacks/config/xjack.xml.h:3 hacks/config/xmatrix.xml.h:18
-#: hacks/config/xplanet.xml.h:60 hacks/config/xrayswarm.xml.h:4
+msgstr "Lento"
+
+#: hacks/config/anemone.xml.h:10
+#: hacks/config/anemotaxis.xml.h:12
+#: hacks/config/antinspect.xml.h:7
+#: hacks/config/antspotlight.xml.h:6
+#: hacks/config/ant.xml.h:17
+#: hacks/config/apollonian.xml.h:12
+#: hacks/config/attraction.xml.h:28
+#: hacks/config/atunnel.xml.h:7
+#: hacks/config/barcode.xml.h:7
+#: hacks/config/blaster.xml.h:9
+#: hacks/config/blinkbox.xml.h:8
+#: hacks/config/blocktube.xml.h:11
+#: hacks/config/boing.xml.h:12
+#: hacks/config/bouboule.xml.h:9
+#: hacks/config/boxfit.xml.h:12
+#: hacks/config/braid.xml.h:12
+#: hacks/config/bubble3d.xml.h:6
+#: hacks/config/bubbles.xml.h:11
+#: hacks/config/bumps.xml.h:5
+#: hacks/config/cage.xml.h:6
+#: hacks/config/circuit.xml.h:11
+#: hacks/config/cloudlife.xml.h:13
+#: hacks/config/compass.xml.h:5
+#: hacks/config/coral.xml.h:14
+#: hacks/config/critical.xml.h:7
+#: hacks/config/crystal.xml.h:12
+#: hacks/config/cubenetic.xml.h:24
+#: hacks/config/cynosure.xml.h:10
+#: hacks/config/dangerball.xml.h:6
+#: hacks/config/decayscreen.xml.h:18
+#: hacks/config/deluxe.xml.h:9
+#: hacks/config/demon.xml.h:10
+#: hacks/config/discrete.xml.h:9
+#: hacks/config/distort.xml.h:13
+#: hacks/config/drift.xml.h:13
+#: hacks/config/endgame.xml.h:6
+#: hacks/config/engine.xml.h:16
+#: hacks/config/epicycle.xml.h:11
+#: hacks/config/eruption.xml.h:20
+#: hacks/config/euler2d.xml.h:15
+#: hacks/config/extrusion.xml.h:13
+#: hacks/config/fadeplot.xml.h:10
+#: hacks/config/fireworkx.xml.h:11
+#: hacks/config/flag.xml.h:9
+#: hacks/config/flame.xml.h:15
+#: hacks/config/flipflop.xml.h:7
+#: hacks/config/flipscreen3d.xml.h:7
+#: hacks/config/flow.xml.h:12
+#: hacks/config/fluidballs.xml.h:20
+#: hacks/config/forest.xml.h:6
+#: hacks/config/fuzzyflakes.xml.h:17
+#: hacks/config/galaxy.xml.h:12
+#: hacks/config/glblur.xml.h:17
+#: hacks/config/glforestfire.xml.h:15
+#: hacks/config/glplanet.xml.h:10
+#: hacks/config/gltext.xml.h:15
+#: hacks/config/goop.xml.h:11
+#: hacks/config/grav.xml.h:9
+#: hacks/config/greynetic.xml.h:4
+#: hacks/config/halo.xml.h:11
+#: hacks/config/hopalong.xml.h:23
+#: hacks/config/hyperball.xml.h:9
+#: hacks/config/hypercube.xml.h:8
+#: hacks/config/ifs.xml.h:6
+#: hacks/config/intermomentary.xml.h:5
+#: hacks/config/jigsaw.xml.h:7
+#: hacks/config/juggle.xml.h:9
+#: hacks/config/julia.xml.h:10
+#: hacks/config/kaleidescope.xml.h:8
+#: hacks/config/klein.xml.h:8
+#: hacks/config/kumppa.xml.h:9
+#: hacks/config/lament.xml.h:7
+#: hacks/config/laser.xml.h:11
+#: hacks/config/lavalite.xml.h:30
+#: hacks/config/lightning.xml.h:6
+#: hacks/config/lisa.xml.h:9
+#: hacks/config/lissie.xml.h:11
+#: hacks/config/lmorph.xml.h:12
+#: hacks/config/loop.xml.h:9
+#: hacks/config/memscroller.xml.h:8
+#: hacks/config/menger.xml.h:18
+#: hacks/config/metaballs.xml.h:15
+#: hacks/config/mirrorblob.xml.h:21
+#: hacks/config/mismunch.xml.h:12
+#: hacks/config/moebius.xml.h:10
+#: hacks/config/moire2.xml.h:7
+#: hacks/config/molecule.xml.h:24
+#: hacks/config/morph3d.xml.h:7
+#: hacks/config/mountain.xml.h:8
+#: hacks/config/munch.xml.h:9
+#: hacks/config/nerverot.xml.h:22
+#: hacks/config/noof.xml.h:6
+#: hacks/config/pacman.xml.h:6
+#: hacks/config/penrose.xml.h:12
+#: hacks/config/petri.xml.h:25
+#: hacks/config/phosphor.xml.h:8
+#: hacks/config/piecewise.xml.h:11
+#: hacks/config/pipes.xml.h:16
+#: hacks/config/polyominoes.xml.h:11
+#: hacks/config/pong.xml.h:5
+#: hacks/config/popsquares.xml.h:6
+#: hacks/config/providence.xml.h:6
+#: hacks/config/pulsar.xml.h:17
+#: hacks/config/qix.xml.h:22
+#: hacks/config/queens.xml.h:6
+#: hacks/config/rotor.xml.h:12
+#: hacks/config/rubik.xml.h:11
+#: hacks/config/sballs.xml.h:14
+#: hacks/config/shadebobs.xml.h:10
+#: hacks/config/sierpinski3d.xml.h:10
+#: hacks/config/sierpinski.xml.h:9
+#: hacks/config/slidescreen.xml.h:7
+#: hacks/config/slip.xml.h:9
+#: hacks/config/speedmine.xml.h:15
+#: hacks/config/spheremonics.xml.h:22
+#: hacks/config/sphere.xml.h:6
+#: hacks/config/spiral.xml.h:10
+#: hacks/config/spotlight.xml.h:5
+#: hacks/config/sproingies.xml.h:8
+#: hacks/config/squiral.xml.h:16
+#: hacks/config/stairs.xml.h:5
+#: hacks/config/starfish.xml.h:9
+#: hacks/config/strange.xml.h:5
+#: hacks/config/substrate.xml.h:16
+#: hacks/config/superquadrics.xml.h:10
+#: hacks/config/swirl.xml.h:7
+#: hacks/config/t3d.xml.h:13
+#: hacks/config/thornbird.xml.h:8
+#: hacks/config/triangle.xml.h:6
+#: hacks/config/truchet.xml.h:3
+#: hacks/config/twang.xml.h:10
+#: hacks/config/vines.xml.h:5
+#: hacks/config/whirlygig.xml.h:13
+#: hacks/config/worm.xml.h:8
+#: hacks/config/xearth.xml.h:25
+#: hacks/config/xflame.xml.h:6
+#: hacks/config/xjack.xml.h:3
+#: hacks/config/xmatrix.xml.h:18
+#: hacks/config/xplanet.xml.h:60
+#: hacks/config/xrayswarm.xml.h:4
 #: hacks/config/zoom.xml.h:7
 msgid "Speed"
-msgstr ""
+msgstr "Velocità"
 
 #: hacks/config/anemone.xml.h:11
 msgid "Tentacles"
-msgstr ""
-
-#: hacks/config/anemone.xml.h:12 hacks/config/cubestorm.xml.h:11
-#: hacks/config/deluxe.xml.h:10 hacks/config/fuzzyflakes.xml.h:18
-#: hacks/config/glknots.xml.h:19 hacks/config/lmorph.xml.h:13
-#: hacks/config/pong.xml.h:7 hacks/config/starfish.xml.h:11
+msgstr "Tentacoli"
+
+#: hacks/config/anemone.xml.h:12
+#: hacks/config/cubestorm.xml.h:11
+#: hacks/config/deluxe.xml.h:10
+#: hacks/config/fuzzyflakes.xml.h:18
+#: hacks/config/glknots.xml.h:19
+#: hacks/config/lmorph.xml.h:13
+#: hacks/config/pong.xml.h:7
+#: hacks/config/starfish.xml.h:11
 #: hacks/config/thornbird.xml.h:9
 msgid "Thick"
-msgstr ""
+msgstr "Spesso"
 
-#: hacks/config/anemone.xml.h:13 hacks/config/fuzzyflakes.xml.h:19
-#: hacks/config/glknots.xml.h:20 hacks/config/moire2.xml.h:8
+#: hacks/config/anemone.xml.h:13
+#: hacks/config/fuzzyflakes.xml.h:19
+#: hacks/config/glknots.xml.h:20
+#: hacks/config/moire2.xml.h:8
 #: hacks/config/thornbird.xml.h:10
 msgid "Thickness"
-msgstr ""
-
-#: hacks/config/anemone.xml.h:14 hacks/config/cubestorm.xml.h:12
-#: hacks/config/deluxe.xml.h:11 hacks/config/fuzzyflakes.xml.h:20
-#: hacks/config/glknots.xml.h:21 hacks/config/lmorph.xml.h:14
-#: hacks/config/pong.xml.h:8 hacks/config/starfish.xml.h:12
+msgstr "Spessore"
+
+#: hacks/config/anemone.xml.h:14
+#: hacks/config/cubestorm.xml.h:12
+#: hacks/config/deluxe.xml.h:11
+#: hacks/config/fuzzyflakes.xml.h:20
+#: hacks/config/glknots.xml.h:21
+#: hacks/config/lmorph.xml.h:14
+#: hacks/config/pong.xml.h:8
+#: hacks/config/starfish.xml.h:12
 #: hacks/config/thornbird.xml.h:11
 msgid "Thin"
-msgstr ""
+msgstr "Sottile"
 
 #: hacks/config/anemone.xml.h:15
 msgid "Turn speed"
-msgstr ""
-
-#: hacks/config/anemone.xml.h:16 hacks/config/ant.xml.h:22
-#: hacks/config/apollonian.xml.h:13 hacks/config/attraction.xml.h:32
-#: hacks/config/bouboule.xml.h:11 hacks/config/braid.xml.h:13
-#: hacks/config/critical.xml.h:8 hacks/config/crystal.xml.h:13
-#: hacks/config/cynosure.xml.h:11 hacks/config/deco.xml.h:10
-#: hacks/config/deluxe.xml.h:14 hacks/config/demon.xml.h:13
-#: hacks/config/discrete.xml.h:11 hacks/config/drift.xml.h:14
-#: hacks/config/epicycle.xml.h:13 hacks/config/euler2d.xml.h:17
-#: hacks/config/fadeplot.xml.h:12 hacks/config/flag.xml.h:13
-#: hacks/config/flame.xml.h:16 hacks/config/flow.xml.h:15
-#: hacks/config/forest.xml.h:8 hacks/config/galaxy.xml.h:14
-#: hacks/config/grav.xml.h:11 hacks/config/halo.xml.h:13
-#: hacks/config/hopalong.xml.h:25 hacks/config/ifs.xml.h:8
-#: hacks/config/imsmap.xml.h:15 hacks/config/interference.xml.h:19
-#: hacks/config/julia.xml.h:12 hacks/config/laser.xml.h:12
-#: hacks/config/lightning.xml.h:8 hacks/config/lisa.xml.h:12
-#: hacks/config/lissie.xml.h:13 hacks/config/loop.xml.h:12
-#: hacks/config/metaballs.xml.h:16 hacks/config/moire2.xml.h:9
-#: hacks/config/moire.xml.h:11 hacks/config/mountain.xml.h:9
-#: hacks/config/nerverot.xml.h:23 hacks/config/penrose.xml.h:13
-#: hacks/config/polyominoes.xml.h:12 hacks/config/rd-bomb.xml.h:20
-#: hacks/config/rocks.xml.h:12 hacks/config/rotor.xml.h:13
-#: hacks/config/shadebobs.xml.h:12 hacks/config/sierpinski.xml.h:12
-#: hacks/config/slip.xml.h:12 hacks/config/sphere.xml.h:8
-#: hacks/config/spiral.xml.h:12 hacks/config/squiral.xml.h:18
-#: hacks/config/starfish.xml.h:14 hacks/config/strange.xml.h:8
-#: hacks/config/swirl.xml.h:9 hacks/config/thornbird.xml.h:13
-#: hacks/config/triangle.xml.h:8 hacks/config/vines.xml.h:7
-#: hacks/config/worm.xml.h:9 hacks/config/xearth.xml.h:28
+msgstr "Velocità di rotazione"
+
+#: hacks/config/anemone.xml.h:16
+#: hacks/config/ant.xml.h:22
+#: hacks/config/apollonian.xml.h:13
+#: hacks/config/attraction.xml.h:32
+#: hacks/config/bouboule.xml.h:11
+#: hacks/config/braid.xml.h:13
+#: hacks/config/critical.xml.h:8
+#: hacks/config/crystal.xml.h:13
+#: hacks/config/cynosure.xml.h:11
+#: hacks/config/deco.xml.h:10
+#: hacks/config/deluxe.xml.h:14
+#: hacks/config/demon.xml.h:13
+#: hacks/config/discrete.xml.h:11
+#: hacks/config/drift.xml.h:14
+#: hacks/config/epicycle.xml.h:13
+#: hacks/config/euler2d.xml.h:17
+#: hacks/config/fadeplot.xml.h:12
+#: hacks/config/flag.xml.h:13
+#: hacks/config/flame.xml.h:16
+#: hacks/config/flow.xml.h:15
+#: hacks/config/forest.xml.h:8
+#: hacks/config/galaxy.xml.h:14
+#: hacks/config/grav.xml.h:11
+#: hacks/config/halo.xml.h:13
+#: hacks/config/hopalong.xml.h:25
+#: hacks/config/ifs.xml.h:8
+#: hacks/config/imsmap.xml.h:15
+#: hacks/config/interference.xml.h:19
+#: hacks/config/julia.xml.h:12
+#: hacks/config/laser.xml.h:12
+#: hacks/config/lightning.xml.h:8
+#: hacks/config/lisa.xml.h:12
+#: hacks/config/lissie.xml.h:13
+#: hacks/config/loop.xml.h:12
+#: hacks/config/metaballs.xml.h:16
+#: hacks/config/moire2.xml.h:9
+#: hacks/config/moire.xml.h:11
+#: hacks/config/mountain.xml.h:9
+#: hacks/config/nerverot.xml.h:23
+#: hacks/config/penrose.xml.h:13
+#: hacks/config/polyominoes.xml.h:12
+#: hacks/config/rd-bomb.xml.h:20
+#: hacks/config/rocks.xml.h:12
+#: hacks/config/rotor.xml.h:13
+#: hacks/config/shadebobs.xml.h:12
+#: hacks/config/sierpinski.xml.h:12
+#: hacks/config/slip.xml.h:12
+#: hacks/config/sphere.xml.h:8
+#: hacks/config/spiral.xml.h:12
+#: hacks/config/squiral.xml.h:18
+#: hacks/config/starfish.xml.h:14
+#: hacks/config/strange.xml.h:8
+#: hacks/config/swirl.xml.h:9
+#: hacks/config/thornbird.xml.h:13
+#: hacks/config/triangle.xml.h:8
+#: hacks/config/vines.xml.h:7
+#: hacks/config/worm.xml.h:9
+#: hacks/config/xearth.xml.h:28
 #: hacks/config/xfishtank.xml.h:11
 msgid "Two"
 msgstr ""
@@ -1336,30 +1792,28 @@ msgstr ""
 
 #: hacks/config/anemone.xml.h:18
 msgid "Withdraw freqency"
-msgstr ""
+msgstr "Frequenza di rientro"
 
 #: hacks/config/anemotaxis.xml.h:1
 msgid "Anemotaxis"
 msgstr ""
 
 #: hacks/config/anemotaxis.xml.h:2
-msgid ""
-"Anemotaxis demonstrates a search algorithm designed for locating a source of "
-"odor in turbulent atmosphere. The searcher is able to sense the odor and "
-"determine local instantaneous wind direction. The goal is to find the source "
-"in the shortest mean time. Written by Eugene Balkovsky."
+msgid "Anemotaxis demonstrates a search algorithm designed for locating a source of odor in turbulent atmosphere. The searcher is able to sense the odor and determine local instantaneous wind direction. The goal is to find the source in the shortest mean time. Written by Eugene Balkovsky."
 msgstr ""
 
 #: hacks/config/anemotaxis.xml.h:3
 msgid "Distance"
 msgstr ""
 
-#: hacks/config/anemotaxis.xml.h:4 hacks/config/hyperball.xml.h:1
+#: hacks/config/anemotaxis.xml.h:4
+#: hacks/config/hyperball.xml.h:1
 #: hacks/config/hypercube.xml.h:1
 msgid "Far"
 msgstr ""
 
-#: hacks/config/anemotaxis.xml.h:8 hacks/config/hyperball.xml.h:7
+#: hacks/config/anemotaxis.xml.h:8
+#: hacks/config/hyperball.xml.h:7
 #: hacks/config/hypercube.xml.h:6
 msgid "Near"
 msgstr ""
@@ -1381,40 +1835,67 @@ msgid "Draw Shadows"
 msgstr ""
 
 #: hacks/config/antinspect.xml.h:3
-msgid ""
-"Draws a trio of ants moving their spheres around a circle. Written by Blair "
-"Tennessy."
-msgstr ""
-
-#: hacks/config/antinspect.xml.h:5 hacks/config/antspotlight.xml.h:4
-#: hacks/config/atlantis.xml.h:11 hacks/config/atunnel.xml.h:5
-#: hacks/config/blocktube.xml.h:8 hacks/config/boing.xml.h:8
-#: hacks/config/boxed.xml.h:6 hacks/config/bubble3d.xml.h:4
-#: hacks/config/cage.xml.h:3 hacks/config/carousel.xml.h:12
-#: hacks/config/circuit.xml.h:9 hacks/config/cubenetic.xml.h:21
-#: hacks/config/cubestorm.xml.h:7 hacks/config/dangerball.xml.h:4
-#: hacks/config/endgame.xml.h:4 hacks/config/engine.xml.h:14
-#: hacks/config/extrusion.xml.h:10 hacks/config/flipflop.xml.h:4
-#: hacks/config/flipscreen3d.xml.h:5 hacks/config/fluidballs.xml.h:17
-#: hacks/config/flurry.xml.h:9 hacks/config/flyingtoasters.xml.h:10
-#: hacks/config/gears.xml.h:6 hacks/config/gflux.xml.h:11
-#: hacks/config/glblur.xml.h:13 hacks/config/gleidescope.xml.h:10
-#: hacks/config/glforestfire.xml.h:13 hacks/config/glknots.xml.h:16
-#: hacks/config/glmatrix.xml.h:17 hacks/config/glplanet.xml.h:7
-#: hacks/config/glslideshow.xml.h:19 hacks/config/glsnake.xml.h:10
-#: hacks/config/gltext.xml.h:12 hacks/config/hypertorus.xml.h:12
-#: hacks/config/jigglypuff.xml.h:15 hacks/config/klein.xml.h:6
-#: hacks/config/lament.xml.h:5 hacks/config/lavalite.xml.h:26
-#: hacks/config/menger.xml.h:15 hacks/config/mirrorblob.xml.h:18
-#: hacks/config/moebius.xml.h:6 hacks/config/molecule.xml.h:21
-#: hacks/config/morph3d.xml.h:5 hacks/config/noof.xml.h:4
-#: hacks/config/pinion.xml.h:12 hacks/config/pipes.xml.h:14
-#: hacks/config/polyhedra.xml.h:118 hacks/config/polytopes.xml.h:18
-#: hacks/config/providence.xml.h:4 hacks/config/pulsar.xml.h:14
-#: hacks/config/queens.xml.h:3 hacks/config/rubik.xml.h:6
-#: hacks/config/sballs.xml.h:12 hacks/config/sierpinski3d.xml.h:6
-#: hacks/config/spheremonics.xml.h:18 hacks/config/sproingies.xml.h:4
-#: hacks/config/stairs.xml.h:2 hacks/config/starwars.xml.h:11
+msgid "Draws a trio of ants moving their spheres around a circle. Written by Blair Tennessy."
+msgstr ""
+
+#: hacks/config/antinspect.xml.h:5
+#: hacks/config/antspotlight.xml.h:4
+#: hacks/config/atlantis.xml.h:11
+#: hacks/config/atunnel.xml.h:5
+#: hacks/config/blocktube.xml.h:8
+#: hacks/config/boing.xml.h:8
+#: hacks/config/boxed.xml.h:6
+#: hacks/config/bubble3d.xml.h:4
+#: hacks/config/cage.xml.h:3
+#: hacks/config/carousel.xml.h:12
+#: hacks/config/circuit.xml.h:9
+#: hacks/config/cubenetic.xml.h:21
+#: hacks/config/cubestorm.xml.h:7
+#: hacks/config/dangerball.xml.h:4
+#: hacks/config/endgame.xml.h:4
+#: hacks/config/engine.xml.h:14
+#: hacks/config/extrusion.xml.h:10
+#: hacks/config/flipflop.xml.h:4
+#: hacks/config/flipscreen3d.xml.h:5
+#: hacks/config/fluidballs.xml.h:17
+#: hacks/config/flurry.xml.h:9
+#: hacks/config/flyingtoasters.xml.h:10
+#: hacks/config/gears.xml.h:6
+#: hacks/config/gflux.xml.h:11
+#: hacks/config/glblur.xml.h:13
+#: hacks/config/gleidescope.xml.h:10
+#: hacks/config/glforestfire.xml.h:13
+#: hacks/config/glknots.xml.h:16
+#: hacks/config/glmatrix.xml.h:17
+#: hacks/config/glplanet.xml.h:7
+#: hacks/config/glslideshow.xml.h:19
+#: hacks/config/glsnake.xml.h:10
+#: hacks/config/gltext.xml.h:12
+#: hacks/config/hypertorus.xml.h:12
+#: hacks/config/jigglypuff.xml.h:15
+#: hacks/config/klein.xml.h:6
+#: hacks/config/lament.xml.h:5
+#: hacks/config/lavalite.xml.h:26
+#: hacks/config/menger.xml.h:15
+#: hacks/config/mirrorblob.xml.h:18
+#: hacks/config/moebius.xml.h:6
+#: hacks/config/molecule.xml.h:21
+#: hacks/config/morph3d.xml.h:5
+#: hacks/config/noof.xml.h:4
+#: hacks/config/pinion.xml.h:12
+#: hacks/config/pipes.xml.h:14
+#: hacks/config/polyhedra.xml.h:118
+#: hacks/config/polytopes.xml.h:18
+#: hacks/config/providence.xml.h:4
+#: hacks/config/pulsar.xml.h:14
+#: hacks/config/queens.xml.h:3
+#: hacks/config/rubik.xml.h:6
+#: hacks/config/sballs.xml.h:12
+#: hacks/config/sierpinski3d.xml.h:6
+#: hacks/config/spheremonics.xml.h:18
+#: hacks/config/sproingies.xml.h:4
+#: hacks/config/stairs.xml.h:2
+#: hacks/config/starwars.xml.h:11
 #: hacks/config/superquadrics.xml.h:7
 msgid "Show Frames-per-Second"
 msgstr ""
@@ -1424,17 +1905,11 @@ msgid "AntSpotlight"
 msgstr ""
 
 #: hacks/config/antspotlight.xml.h:2
-msgid ""
-"Antspotlight draws an ant (with a headlight) who walks on top of an image of "
-"your desktop or other image. Written by Blair Tennessy."
+msgid "Antspotlight draws an ant (with a headlight) who walks on top of an image of your desktop or other image. Written by Blair Tennessy."
 msgstr ""
 
 #: hacks/config/ant.xml.h:1
-msgid ""
-"A cellular automaton that is really a two-dimensional Turing machine: as the "
-"heads (``ants'') walk along the screen, they change pixel values in their "
-"path. Then, as they pass over changed pixels, their behavior is influenced. "
-"Written by David Bagley."
+msgid "A cellular automaton that is really a two-dimensional Turing machine: as the heads (``ants'') walk along the screen, they change pixel values in their path. Then, as they pass over changed pixels, their behavior is influenced. Written by David Bagley."
 msgstr ""
 
 #: hacks/config/ant.xml.h:2
@@ -1457,19 +1932,32 @@ msgstr ""
 msgid "Four Sided Cells"
 msgstr ""
 
-#: hacks/config/ant.xml.h:8 hacks/config/attraction.xml.h:13
-#: hacks/config/cloudlife.xml.h:7 hacks/config/cubenetic.xml.h:11
-#: hacks/config/demon.xml.h:5 hacks/config/discrete.xml.h:3
-#: hacks/config/distort.xml.h:5 hacks/config/fadeplot.xml.h:5
-#: hacks/config/flag.xml.h:4 hacks/config/flow.xml.h:4
-#: hacks/config/fluidballs.xml.h:12 hacks/config/fuzzyflakes.xml.h:10
-#: hacks/config/gleidescope.xml.h:7 hacks/config/halftone.xml.h:8
-#: hacks/config/hopalong.xml.h:13 hacks/config/interference.xml.h:11
-#: hacks/config/julia.xml.h:5 hacks/config/lissie.xml.h:4
-#: hacks/config/loop.xml.h:2 hacks/config/moire.xml.h:4
-#: hacks/config/piecewise.xml.h:5 hacks/config/rd-bomb.xml.h:11
-#: hacks/config/rorschach.xml.h:5 hacks/config/rubik.xml.h:4
-#: hacks/config/sierpinski.xml.h:3 hacks/config/slip.xml.h:3
+#: hacks/config/ant.xml.h:8
+#: hacks/config/attraction.xml.h:13
+#: hacks/config/cloudlife.xml.h:7
+#: hacks/config/cubenetic.xml.h:11
+#: hacks/config/demon.xml.h:5
+#: hacks/config/discrete.xml.h:3
+#: hacks/config/distort.xml.h:5
+#: hacks/config/fadeplot.xml.h:5
+#: hacks/config/flag.xml.h:4
+#: hacks/config/flow.xml.h:4
+#: hacks/config/fluidballs.xml.h:12
+#: hacks/config/fuzzyflakes.xml.h:10
+#: hacks/config/gleidescope.xml.h:7
+#: hacks/config/halftone.xml.h:8
+#: hacks/config/hopalong.xml.h:13
+#: hacks/config/interference.xml.h:11
+#: hacks/config/julia.xml.h:5
+#: hacks/config/lissie.xml.h:4
+#: hacks/config/loop.xml.h:2
+#: hacks/config/moire.xml.h:4
+#: hacks/config/piecewise.xml.h:5
+#: hacks/config/rd-bomb.xml.h:11
+#: hacks/config/rorschach.xml.h:5
+#: hacks/config/rubik.xml.h:4
+#: hacks/config/sierpinski.xml.h:3
+#: hacks/config/slip.xml.h:3
 msgid "Large"
 msgstr ""
 
@@ -1481,7 +1969,8 @@ msgstr ""
 msgid "Random Cell Shape"
 msgstr ""
 
-#: hacks/config/ant.xml.h:13 hacks/config/speedmine.xml.h:11
+#: hacks/config/ant.xml.h:13
+#: hacks/config/speedmine.xml.h:11
 msgid "Sharp Turns"
 msgstr ""
 
@@ -1489,19 +1978,32 @@ msgstr ""
 msgid "Six Sided Cells"
 msgstr ""
 
-#: hacks/config/ant.xml.h:16 hacks/config/attraction.xml.h:27
-#: hacks/config/cloudlife.xml.h:12 hacks/config/cubenetic.xml.h:23
-#: hacks/config/demon.xml.h:9 hacks/config/discrete.xml.h:8
-#: hacks/config/distort.xml.h:12 hacks/config/fadeplot.xml.h:9
-#: hacks/config/flag.xml.h:8 hacks/config/flow.xml.h:11
-#: hacks/config/fluidballs.xml.h:19 hacks/config/fuzzyflakes.xml.h:16
-#: hacks/config/gleidescope.xml.h:12 hacks/config/halftone.xml.h:14
-#: hacks/config/hopalong.xml.h:22 hacks/config/interference.xml.h:18
-#: hacks/config/julia.xml.h:9 hacks/config/lissie.xml.h:10
-#: hacks/config/loop.xml.h:8 hacks/config/metaballs.xml.h:14
-#: hacks/config/moire.xml.h:9 hacks/config/piecewise.xml.h:10
-#: hacks/config/rd-bomb.xml.h:18 hacks/config/rorschach.xml.h:8
-#: hacks/config/rubik.xml.h:10 hacks/config/sierpinski.xml.h:8
+#: hacks/config/ant.xml.h:16
+#: hacks/config/attraction.xml.h:27
+#: hacks/config/cloudlife.xml.h:12
+#: hacks/config/cubenetic.xml.h:23
+#: hacks/config/demon.xml.h:9
+#: hacks/config/discrete.xml.h:8
+#: hacks/config/distort.xml.h:12
+#: hacks/config/fadeplot.xml.h:9
+#: hacks/config/flag.xml.h:8
+#: hacks/config/flow.xml.h:11
+#: hacks/config/fluidballs.xml.h:19
+#: hacks/config/fuzzyflakes.xml.h:16
+#: hacks/config/gleidescope.xml.h:12
+#: hacks/config/halftone.xml.h:14
+#: hacks/config/hopalong.xml.h:22
+#: hacks/config/interference.xml.h:18
+#: hacks/config/julia.xml.h:9
+#: hacks/config/lissie.xml.h:10
+#: hacks/config/loop.xml.h:8
+#: hacks/config/metaballs.xml.h:14
+#: hacks/config/moire.xml.h:9
+#: hacks/config/piecewise.xml.h:10
+#: hacks/config/rd-bomb.xml.h:18
+#: hacks/config/rorschach.xml.h:8
+#: hacks/config/rubik.xml.h:10
+#: hacks/config/sierpinski.xml.h:8
 #: hacks/config/slip.xml.h:8
 msgid "Small"
 msgstr ""
@@ -1510,11 +2012,16 @@ msgstr ""
 msgid "Three Sided Cells"
 msgstr ""
 
-#: hacks/config/ant.xml.h:19 hacks/config/demon.xml.h:12
-#: hacks/config/discrete.xml.h:10 hacks/config/fadeplot.xml.h:11
-#: hacks/config/flag.xml.h:12 hacks/config/flow.xml.h:14
-#: hacks/config/lissie.xml.h:12 hacks/config/loop.xml.h:11
-#: hacks/config/rubik.xml.h:12 hacks/config/sierpinski.xml.h:11
+#: hacks/config/ant.xml.h:19
+#: hacks/config/demon.xml.h:12
+#: hacks/config/discrete.xml.h:10
+#: hacks/config/fadeplot.xml.h:11
+#: hacks/config/flag.xml.h:12
+#: hacks/config/flow.xml.h:14
+#: hacks/config/lissie.xml.h:12
+#: hacks/config/loop.xml.h:11
+#: hacks/config/rubik.xml.h:12
+#: hacks/config/sierpinski.xml.h:11
 #: hacks/config/slip.xml.h:11
 msgid "Timeout"
 msgstr ""
@@ -1548,9 +2055,7 @@ msgid "Include Alternate Geometries"
 msgstr ""
 
 #: hacks/config/apollonian.xml.h:9
-msgid ""
-"Packs a large circle with smaller circles, demonstrating the Descartes "
-"Circle Theorem. Written by Allan R. Wilks and David Bagley."
+msgid "Packs a large circle with smaller circles, demonstrating the Descartes Circle Theorem. Written by Allan R. Wilks and David Bagley."
 msgstr ""
 
 #: hacks/config/apollonian.xml.h:10
@@ -1565,21 +2070,14 @@ msgstr ""
 msgid "Basic Programming Mode"
 msgstr ""
 
-#: hacks/config/apple2.xml.h:3 hacks/config/halo.xml.h:8
+#: hacks/config/apple2.xml.h:3
+#: hacks/config/halo.xml.h:8
 #: hacks/config/imsmap.xml.h:11
 msgid "Random Mode"
 msgstr ""
 
 #: hacks/config/apple2.xml.h:4
-msgid ""
-"Simulates an original Apple ][ Plus computer in all its 1979 glory. It also "
-"reproduces the appearance of display on a color television set of the "
-"period. In \"Text Mode\", it displays the output of a command (e.g., "
-"\"fortune\".) In \"Slideshow Mode\", it chooses a number of images from the "
-"image source you configured into XScreenSaver and displays them within the "
-"limitations of the Apple ][ display hardware. (Six available colors in hi-"
-"res mode!) In \"Basic Programming Mode\", a simulated user types in a BASIC "
-"program and runs it. By Trevor Blackwell."
+msgid "Simulates an original Apple ][ Plus computer in all its 1979 glory. It also reproduces the appearance of display on a color television set of the period. In \"Text Mode\", it displays the output of a command (e.g., \"fortune\".) In \"Slideshow Mode\", it chooses a number of images from the image source you configured into XScreenSaver and displays them within the limitations of the Apple ][ display hardware. (Six available colors in hi-res mode!) In \"Basic Programming Mode\", a simulated user types in a BASIC program and runs it. By Trevor Blackwell."
 msgstr ""
 
 #: hacks/config/apple2.xml.h:5
@@ -1590,8 +2088,10 @@ msgstr ""
 msgid "Text Mode"
 msgstr ""
 
-#: hacks/config/apple2.xml.h:7 hacks/config/fontglide.xml.h:15
-#: hacks/config/noseguy.xml.h:7 hacks/config/phosphor.xml.h:9
+#: hacks/config/apple2.xml.h:7
+#: hacks/config/fontglide.xml.h:15
+#: hacks/config/noseguy.xml.h:7
+#: hacks/config/phosphor.xml.h:9
 #: hacks/config/starwars.xml.h:17
 msgid "Text Program"
 msgstr ""
@@ -1636,48 +2136,73 @@ msgstr ""
 msgid "Shy"
 msgstr ""
 
-#: hacks/config/atlantis.xml.h:14 hacks/config/cage.xml.h:5
-#: hacks/config/extrusion.xml.h:12 hacks/config/gears.xml.h:8
-#: hacks/config/glblur.xml.h:15 hacks/config/glplanet.xml.h:9
-#: hacks/config/glsnake.xml.h:13 hacks/config/gltext.xml.h:14
-#: hacks/config/menger.xml.h:17 hacks/config/mismunch.xml.h:11
-#: hacks/config/molecule.xml.h:23 hacks/config/munch.xml.h:8
-#: hacks/config/sierpinski3d.xml.h:9 hacks/config/speedmine.xml.h:14
-#: hacks/config/spheremonics.xml.h:21 hacks/config/sproingies.xml.h:7
-#: hacks/config/stairs.xml.h:4 hacks/config/stonerview.xml.h:2
-#: hacks/config/superquadrics.xml.h:9 hacks/config/webcollage.xml.h:8
+#: hacks/config/atlantis.xml.h:14
+#: hacks/config/cage.xml.h:5
+#: hacks/config/extrusion.xml.h:12
+#: hacks/config/gears.xml.h:8
+#: hacks/config/glblur.xml.h:15
+#: hacks/config/glplanet.xml.h:9
+#: hacks/config/glsnake.xml.h:13
+#: hacks/config/gltext.xml.h:14
+#: hacks/config/menger.xml.h:17
+#: hacks/config/mismunch.xml.h:11
+#: hacks/config/molecule.xml.h:23
+#: hacks/config/munch.xml.h:8
+#: hacks/config/sierpinski3d.xml.h:9
+#: hacks/config/speedmine.xml.h:14
+#: hacks/config/spheremonics.xml.h:21
+#: hacks/config/sproingies.xml.h:7
+#: hacks/config/stairs.xml.h:4
+#: hacks/config/stonerview.xml.h:2
+#: hacks/config/superquadrics.xml.h:9
+#: hacks/config/webcollage.xml.h:8
 msgid "Solid"
 msgstr ""
 
 #: hacks/config/atlantis.xml.h:15
-msgid ""
-"This is xfishtank writ large: a GL animation of a number of sharks, "
-"dolphins, and whales. The swimming motions are great. Originally written by "
-"Mark Kilgard."
+msgid "This is xfishtank writ large: a GL animation of a number of sharks, dolphins, and whales. The swimming motions are great. Originally written by Mark Kilgard."
 msgstr ""
 
 #: hacks/config/atlantis.xml.h:16
 msgid "Whale Speed"
 msgstr ""
 
-#: hacks/config/atlantis.xml.h:17 hacks/config/atunnel.xml.h:10
-#: hacks/config/blinkbox.xml.h:9 hacks/config/blocktube.xml.h:13
-#: hacks/config/boing.xml.h:15 hacks/config/cage.xml.h:8
-#: hacks/config/cubestorm.xml.h:14 hacks/config/dangerball.xml.h:11
-#: hacks/config/extrusion.xml.h:19 hacks/config/flipflop.xml.h:8
-#: hacks/config/flyingtoasters.xml.h:14 hacks/config/gears.xml.h:11
-#: hacks/config/glblur.xml.h:20 hacks/config/glforestfire.xml.h:20
-#: hacks/config/glknots.xml.h:23 hacks/config/glplanet.xml.h:15
-#: hacks/config/glsnake.xml.h:15 hacks/config/gltext.xml.h:18
-#: hacks/config/jigglypuff.xml.h:25 hacks/config/lament.xml.h:9
-#: hacks/config/lavalite.xml.h:32 hacks/config/menger.xml.h:21
-#: hacks/config/mirrorblob.xml.h:24 hacks/config/moebius.xml.h:11
-#: hacks/config/molecule.xml.h:26 hacks/config/pinion.xml.h:15
-#: hacks/config/polyhedra.xml.h:173 hacks/config/pulsar.xml.h:20
-#: hacks/config/sballs.xml.h:18 hacks/config/sierpinski3d.xml.h:12
-#: hacks/config/speedmine.xml.h:18 hacks/config/spheremonics.xml.h:26
-#: hacks/config/sproingies.xml.h:10 hacks/config/stairs.xml.h:7
-#: hacks/config/stonerview.xml.h:4 hacks/config/superquadrics.xml.h:12
+#: hacks/config/atlantis.xml.h:17
+#: hacks/config/atunnel.xml.h:10
+#: hacks/config/blinkbox.xml.h:9
+#: hacks/config/blocktube.xml.h:13
+#: hacks/config/boing.xml.h:15
+#: hacks/config/cage.xml.h:8
+#: hacks/config/cubestorm.xml.h:14
+#: hacks/config/dangerball.xml.h:11
+#: hacks/config/extrusion.xml.h:19
+#: hacks/config/flipflop.xml.h:8
+#: hacks/config/flyingtoasters.xml.h:14
+#: hacks/config/gears.xml.h:11
+#: hacks/config/glblur.xml.h:20
+#: hacks/config/glforestfire.xml.h:20
+#: hacks/config/glknots.xml.h:23
+#: hacks/config/glplanet.xml.h:15
+#: hacks/config/glsnake.xml.h:15
+#: hacks/config/gltext.xml.h:18
+#: hacks/config/jigglypuff.xml.h:25
+#: hacks/config/lament.xml.h:9
+#: hacks/config/lavalite.xml.h:32
+#: hacks/config/menger.xml.h:21
+#: hacks/config/mirrorblob.xml.h:24
+#: hacks/config/moebius.xml.h:11
+#: hacks/config/molecule.xml.h:26
+#: hacks/config/pinion.xml.h:15
+#: hacks/config/polyhedra.xml.h:173
+#: hacks/config/pulsar.xml.h:20
+#: hacks/config/sballs.xml.h:18
+#: hacks/config/sierpinski3d.xml.h:12
+#: hacks/config/speedmine.xml.h:18
+#: hacks/config/spheremonics.xml.h:26
+#: hacks/config/sproingies.xml.h:10
+#: hacks/config/stairs.xml.h:7
+#: hacks/config/stonerview.xml.h:4
+#: hacks/config/superquadrics.xml.h:12
 msgid "Wireframe"
 msgstr ""
 
@@ -1693,7 +2218,8 @@ msgstr ""
 msgid "Ball Mass"
 msgstr ""
 
-#: hacks/config/attraction.xml.h:4 hacks/config/fluidballs.xml.h:3
+#: hacks/config/attraction.xml.h:4
+#: hacks/config/fluidballs.xml.h:3
 msgid "Balls"
 msgstr ""
 
@@ -1701,8 +2227,10 @@ msgstr ""
 msgid "Bounce Off Walls"
 msgstr ""
 
-#: hacks/config/attraction.xml.h:6 hacks/config/hopalong.xml.h:1
-#: hacks/config/interference.xml.h:5 hacks/config/qix.xml.h:2
+#: hacks/config/attraction.xml.h:6
+#: hacks/config/hopalong.xml.h:1
+#: hacks/config/interference.xml.h:5
+#: hacks/config/qix.xml.h:2
 #: hacks/config/wander.xml.h:3
 msgid "Color Contrast"
 msgstr ""
@@ -1715,21 +2243,36 @@ msgstr ""
 msgid "Filled Splines"
 msgstr ""
 
-#: hacks/config/attraction.xml.h:10 hacks/config/carousel.xml.h:7
-#: hacks/config/ccurve.xml.h:9 hacks/config/cloudlife.xml.h:5
-#: hacks/config/cubenetic.xml.h:10 hacks/config/euler2d.xml.h:5
-#: hacks/config/flame.xml.h:9 hacks/config/glslideshow.xml.h:13
-#: hacks/config/goop.xml.h:6 hacks/config/halftone.xml.h:7
-#: hacks/config/hopalong.xml.h:10 hacks/config/hyperball.xml.h:3
-#: hacks/config/hypercube.xml.h:3 hacks/config/interference.xml.h:8
-#: hacks/config/jigglypuff.xml.h:8 hacks/config/kumppa.xml.h:4
-#: hacks/config/lavalite.xml.h:12 hacks/config/nerverot.xml.h:11
-#: hacks/config/petri.xml.h:8 hacks/config/pyro.xml.h:5
-#: hacks/config/qix.xml.h:10 hacks/config/speedmine.xml.h:5
-#: hacks/config/spheremonics.xml.h:6 hacks/config/spiral.xml.h:4
-#: hacks/config/squiral.xml.h:6 hacks/config/superquadrics.xml.h:5
-#: hacks/config/t3d.xml.h:7 hacks/config/twang.xml.h:5
-#: hacks/config/wander.xml.h:8 hacks/config/xmountains.xml.h:17
+#: hacks/config/attraction.xml.h:10
+#: hacks/config/carousel.xml.h:7
+#: hacks/config/ccurve.xml.h:9
+#: hacks/config/cloudlife.xml.h:5
+#: hacks/config/cubenetic.xml.h:10
+#: hacks/config/euler2d.xml.h:5
+#: hacks/config/flame.xml.h:9
+#: hacks/config/glslideshow.xml.h:13
+#: hacks/config/goop.xml.h:6
+#: hacks/config/halftone.xml.h:7
+#: hacks/config/hopalong.xml.h:10
+#: hacks/config/hyperball.xml.h:3
+#: hacks/config/hypercube.xml.h:3
+#: hacks/config/interference.xml.h:8
+#: hacks/config/jigglypuff.xml.h:8
+#: hacks/config/kumppa.xml.h:4
+#: hacks/config/lavalite.xml.h:12
+#: hacks/config/nerverot.xml.h:11
+#: hacks/config/petri.xml.h:8
+#: hacks/config/pyro.xml.h:5
+#: hacks/config/qix.xml.h:10
+#: hacks/config/speedmine.xml.h:5
+#: hacks/config/spheremonics.xml.h:6
+#: hacks/config/spiral.xml.h:4
+#: hacks/config/squiral.xml.h:6
+#: hacks/config/superquadrics.xml.h:5
+#: hacks/config/t3d.xml.h:7
+#: hacks/config/twang.xml.h:5
+#: hacks/config/wander.xml.h:8
+#: hacks/config/xmountains.xml.h:17
 msgid "High"
 msgstr ""
 
@@ -1742,57 +2285,78 @@ msgid "Inward"
 msgstr ""
 
 #: hacks/config/attraction.xml.h:14
-msgid ""
-"Like qix, this uses a simple simple motion model to generate many different "
-"display modes. The control points attract each other up to a certain "
-"distance, and then begin to repel each other. The attraction/repulsion is "
-"proportional to the distance between any two particles, similar to the "
-"strong and weak nuclear forces. One of the most interesting ways to watch "
-"this hack is simply as bouncing balls, because their motions and "
-"interactions with each other are so odd. Sometimes two balls will get into a "
-"tight orbit around each other, to be interrupted later by a third, or by the "
-"edge of the screen. It looks quite chaotic. Written by Jamie Zawinski, based "
-"on Lisp code by John Pezaris."
-msgstr ""
-
-#: hacks/config/attraction.xml.h:15 hacks/config/deluxe.xml.h:5
-#: hacks/config/lmorph.xml.h:7 hacks/config/pedal.xml.h:5
-#: hacks/config/starfish.xml.h:4 hacks/config/whirlygig.xml.h:10
+msgid "Like qix, this uses a simple simple motion model to generate many different display modes. The control points attract each other up to a certain distance, and then begin to repel each other. The attraction/repulsion is proportional to the distance between any two particles, similar to the strong and weak nuclear forces. One of the most interesting ways to watch this hack is simply as bouncing balls, because their motions and interactions with each other are so odd. Sometimes two balls will get into a tight orbit around each other, to be interrupted later by a third, or by the edge of the screen. It looks quite chaotic. Written by Jamie Zawinski, based on Lisp code by John Pezaris."
+msgstr ""
+
+#: hacks/config/attraction.xml.h:15
+#: hacks/config/deluxe.xml.h:5
+#: hacks/config/lmorph.xml.h:7
+#: hacks/config/pedal.xml.h:5
+#: hacks/config/starfish.xml.h:4
+#: hacks/config/whirlygig.xml.h:10
 msgid "Lines"
 msgstr ""
 
-#: hacks/config/attraction.xml.h:16 hacks/config/blocktube.xml.h:5
-#: hacks/config/braid.xml.h:6 hacks/config/cynosure.xml.h:5
-#: hacks/config/drift.xml.h:8 hacks/config/eruption.xml.h:11
-#: hacks/config/euler2d.xml.h:6 hacks/config/fiberlamp.xml.h:5
-#: hacks/config/fireflies.xml.h:21 hacks/config/flow.xml.h:6
-#: hacks/config/fontglide.xml.h:8 hacks/config/galaxy.xml.h:5
-#: hacks/config/juggle.xml.h:4 hacks/config/klein.xml.h:4
-#: hacks/config/laser.xml.h:5 hacks/config/menger.xml.h:4
-#: hacks/config/metaballs.xml.h:5 hacks/config/mismunch.xml.h:3
-#: hacks/config/munch.xml.h:4 hacks/config/nerverot.xml.h:13
-#: hacks/config/petri.xml.h:9 hacks/config/polyominoes.xml.h:4
-#: hacks/config/rotor.xml.h:5 hacks/config/shadebobs.xml.h:4
-#: hacks/config/sierpinski3d.xml.h:3 hacks/config/spheremonics.xml.h:7
-#: hacks/config/substrate.xml.h:11 hacks/config/wander.xml.h:10
+#: hacks/config/attraction.xml.h:16
+#: hacks/config/blocktube.xml.h:5
+#: hacks/config/braid.xml.h:6
+#: hacks/config/cynosure.xml.h:5
+#: hacks/config/drift.xml.h:8
+#: hacks/config/eruption.xml.h:11
+#: hacks/config/euler2d.xml.h:6
+#: hacks/config/fiberlamp.xml.h:5
+#: hacks/config/fireflies.xml.h:21
+#: hacks/config/flow.xml.h:6
+#: hacks/config/fontglide.xml.h:8
+#: hacks/config/galaxy.xml.h:5
+#: hacks/config/juggle.xml.h:4
+#: hacks/config/klein.xml.h:4
+#: hacks/config/laser.xml.h:5
+#: hacks/config/menger.xml.h:4
+#: hacks/config/metaballs.xml.h:5
+#: hacks/config/mismunch.xml.h:3
+#: hacks/config/munch.xml.h:4
+#: hacks/config/nerverot.xml.h:13
+#: hacks/config/petri.xml.h:9
+#: hacks/config/polyominoes.xml.h:4
+#: hacks/config/rotor.xml.h:5
+#: hacks/config/shadebobs.xml.h:4
+#: hacks/config/sierpinski3d.xml.h:3
+#: hacks/config/spheremonics.xml.h:7
+#: hacks/config/substrate.xml.h:11
+#: hacks/config/wander.xml.h:10
 #: hacks/config/whirlwindwarp.xml.h:3
 msgid "Long"
 msgstr ""
 
-#: hacks/config/attraction.xml.h:17 hacks/config/carousel.xml.h:9
-#: hacks/config/ccurve.xml.h:10 hacks/config/cloudlife.xml.h:8
-#: hacks/config/cubenetic.xml.h:12 hacks/config/euler2d.xml.h:7
-#: hacks/config/flame.xml.h:10 hacks/config/glslideshow.xml.h:16
-#: hacks/config/goop.xml.h:7 hacks/config/halftone.xml.h:9
-#: hacks/config/hopalong.xml.h:14 hacks/config/hyperball.xml.h:6
-#: hacks/config/hypercube.xml.h:5 hacks/config/interference.xml.h:12
-#: hacks/config/jigglypuff.xml.h:11 hacks/config/kumppa.xml.h:6
-#: hacks/config/lavalite.xml.h:14 hacks/config/nerverot.xml.h:14
-#: hacks/config/petri.xml.h:10 hacks/config/pyro.xml.h:7
-#: hacks/config/qix.xml.h:13 hacks/config/speedmine.xml.h:6
-#: hacks/config/spheremonics.xml.h:8 hacks/config/spiral.xml.h:5
-#: hacks/config/squiral.xml.h:8 hacks/config/superquadrics.xml.h:6
-#: hacks/config/t3d.xml.h:8 hacks/config/twang.xml.h:7
+#: hacks/config/attraction.xml.h:17
+#: hacks/config/carousel.xml.h:9
+#: hacks/config/ccurve.xml.h:10
+#: hacks/config/cloudlife.xml.h:8
+#: hacks/config/cubenetic.xml.h:12
+#: hacks/config/euler2d.xml.h:7
+#: hacks/config/flame.xml.h:10
+#: hacks/config/glslideshow.xml.h:16
+#: hacks/config/goop.xml.h:7
+#: hacks/config/halftone.xml.h:9
+#: hacks/config/hopalong.xml.h:14
+#: hacks/config/hyperball.xml.h:6
+#: hacks/config/hypercube.xml.h:5
+#: hacks/config/interference.xml.h:12
+#: hacks/config/jigglypuff.xml.h:11
+#: hacks/config/kumppa.xml.h:6
+#: hacks/config/lavalite.xml.h:14
+#: hacks/config/nerverot.xml.h:14
+#: hacks/config/petri.xml.h:10
+#: hacks/config/pyro.xml.h:7
+#: hacks/config/qix.xml.h:13
+#: hacks/config/speedmine.xml.h:6
+#: hacks/config/spheremonics.xml.h:8
+#: hacks/config/spiral.xml.h:5
+#: hacks/config/squiral.xml.h:8
+#: hacks/config/superquadrics.xml.h:6
+#: hacks/config/t3d.xml.h:8
+#: hacks/config/twang.xml.h:7
 #: hacks/config/wander.xml.h:11
 msgid "Low"
 msgstr ""
@@ -1809,8 +2373,10 @@ msgstr ""
 msgid "Polygons"
 msgstr ""
 
-#: hacks/config/attraction.xml.h:23 hacks/config/fuzzyflakes.xml.h:13
-#: hacks/config/spotlight.xml.h:3 hacks/config/xplanet.xml.h:55
+#: hacks/config/attraction.xml.h:23
+#: hacks/config/fuzzyflakes.xml.h:13
+#: hacks/config/spotlight.xml.h:3
+#: hacks/config/xplanet.xml.h:55
 msgid "Radius"
 msgstr ""
 
@@ -1818,20 +2384,34 @@ msgstr ""
 msgid "Repulsion Threshold"
 msgstr ""
 
-#: hacks/config/attraction.xml.h:25 hacks/config/blocktube.xml.h:7
-#: hacks/config/braid.xml.h:10 hacks/config/cynosure.xml.h:8
-#: hacks/config/drift.xml.h:11 hacks/config/eruption.xml.h:18
-#: hacks/config/euler2d.xml.h:12 hacks/config/fiberlamp.xml.h:7
-#: hacks/config/fireflies.xml.h:34 hacks/config/flow.xml.h:9
-#: hacks/config/galaxy.xml.h:9 hacks/config/juggle.xml.h:7
-#: hacks/config/klein.xml.h:5 hacks/config/laser.xml.h:9
-#: hacks/config/menger.xml.h:14 hacks/config/metaballs.xml.h:12
-#: hacks/config/mismunch.xml.h:8 hacks/config/munch.xml.h:6
-#: hacks/config/nerverot.xml.h:19 hacks/config/petri.xml.h:22
-#: hacks/config/polyominoes.xml.h:9 hacks/config/rotor.xml.h:9
-#: hacks/config/shadebobs.xml.h:8 hacks/config/sierpinski3d.xml.h:5
-#: hacks/config/spheremonics.xml.h:17 hacks/config/substrate.xml.h:14
-#: hacks/config/wander.xml.h:12 hacks/config/whirlwindwarp.xml.h:6
+#: hacks/config/attraction.xml.h:25
+#: hacks/config/blocktube.xml.h:7
+#: hacks/config/braid.xml.h:10
+#: hacks/config/cynosure.xml.h:8
+#: hacks/config/drift.xml.h:11
+#: hacks/config/eruption.xml.h:18
+#: hacks/config/euler2d.xml.h:12
+#: hacks/config/fiberlamp.xml.h:7
+#: hacks/config/fireflies.xml.h:34
+#: hacks/config/flow.xml.h:9
+#: hacks/config/galaxy.xml.h:9
+#: hacks/config/juggle.xml.h:7
+#: hacks/config/klein.xml.h:5
+#: hacks/config/laser.xml.h:9
+#: hacks/config/menger.xml.h:14
+#: hacks/config/metaballs.xml.h:12
+#: hacks/config/mismunch.xml.h:8
+#: hacks/config/munch.xml.h:6
+#: hacks/config/nerverot.xml.h:19
+#: hacks/config/petri.xml.h:22
+#: hacks/config/polyominoes.xml.h:9
+#: hacks/config/rotor.xml.h:9
+#: hacks/config/shadebobs.xml.h:8
+#: hacks/config/sierpinski3d.xml.h:5
+#: hacks/config/spheremonics.xml.h:17
+#: hacks/config/substrate.xml.h:14
+#: hacks/config/wander.xml.h:12
+#: hacks/config/whirlwindwarp.xml.h:6
 msgid "Short"
 msgstr ""
 
@@ -1839,11 +2419,13 @@ msgstr ""
 msgid "Splines"
 msgstr ""
 
-#: hacks/config/attraction.xml.h:30 hacks/config/fireflies.xml.h:42
+#: hacks/config/attraction.xml.h:30
+#: hacks/config/fireflies.xml.h:42
 msgid "Tails"
 msgstr ""
 
-#: hacks/config/attraction.xml.h:31 hacks/config/euler2d.xml.h:16
+#: hacks/config/attraction.xml.h:31
+#: hacks/config/euler2d.xml.h:16
 #: hacks/config/juggle.xml.h:10
 msgid "Trail Length"
 msgstr ""
@@ -1853,20 +2435,21 @@ msgid "Atunnel"
 msgstr ""
 
 #: hacks/config/atunnel.xml.h:2
-msgid ""
-"Draws an animation of a textured tunnel in GL. Requires OpenGL, and a "
-"machine with fast hardware support for texture maps. Written by Eric "
-"Lassauge and Roman Podobedov."
+msgid "Draws an animation of a textured tunnel in GL. Requires OpenGL, and a machine with fast hardware support for texture maps. Written by Eric Lassauge and Roman Podobedov."
 msgstr ""
 
-#: hacks/config/atunnel.xml.h:4 hacks/config/distort.xml.h:9
-#: hacks/config/glforestfire.xml.h:10 hacks/config/lament.xml.h:4
+#: hacks/config/atunnel.xml.h:4
+#: hacks/config/distort.xml.h:9
+#: hacks/config/glforestfire.xml.h:10
+#: hacks/config/lament.xml.h:4
 #: hacks/config/sballs.xml.h:6
 msgid "Normal"
 msgstr ""
 
-#: hacks/config/atunnel.xml.h:8 hacks/config/glforestfire.xml.h:18
-#: hacks/config/lament.xml.h:8 hacks/config/sballs.xml.h:17
+#: hacks/config/atunnel.xml.h:8
+#: hacks/config/glforestfire.xml.h:18
+#: hacks/config/lament.xml.h:8
+#: hacks/config/sballs.xml.h:17
 msgid "Untextured"
 msgstr ""
 
@@ -1891,9 +2474,7 @@ msgid "Scrolling Barcodes"
 msgstr ""
 
 #: hacks/config/barcode.xml.h:8
-msgid ""
-"This draws a random sequence of colorful barcodes scrolling across your "
-"screen. CONSUME! By Dan Bornstein."
+msgid "This draws a random sequence of colorful barcodes scrolling across your screen. CONSUME! By Dan Bornstein."
 msgstr ""
 
 #: hacks/config/blaster.xml.h:1
@@ -1901,13 +2482,11 @@ msgid "Blaster"
 msgstr ""
 
 #: hacks/config/blaster.xml.h:2
-msgid ""
-"Draws a simulation of flying space-combat robots (cleverly disguised as "
-"colored circles) doing battle in front of a moving star field. Written by "
-"Jonathan Lin."
+msgid "Draws a simulation of flying space-combat robots (cleverly disguised as colored circles) doing battle in front of a moving star field. Written by Jonathan Lin."
 msgstr ""
 
-#: hacks/config/blaster.xml.h:5 hacks/config/penetrate.xml.h:4
+#: hacks/config/blaster.xml.h:5
+#: hacks/config/penetrate.xml.h:4
 msgid "Lasers"
 msgstr ""
 
@@ -1915,7 +2494,8 @@ msgstr ""
 msgid "Robots"
 msgstr ""
 
-#: hacks/config/blaster.xml.h:10 hacks/config/glplanet.xml.h:11
+#: hacks/config/blaster.xml.h:10
+#: hacks/config/glplanet.xml.h:11
 msgid "Stars"
 msgstr ""
 
@@ -1931,14 +2511,13 @@ msgstr ""
 msgid "Dissolve"
 msgstr ""
 
-#: hacks/config/blinkbox.xml.h:4 hacks/config/phosphor.xml.h:3
+#: hacks/config/blinkbox.xml.h:4
+#: hacks/config/phosphor.xml.h:3
 msgid "Fade"
 msgstr ""
 
 #: hacks/config/blinkbox.xml.h:6
-msgid ""
-"Shows a ball contained inside of a bounding box. Colored blocks blink in "
-"when the ball hits the edges. Written by Jeremy English."
+msgid "Shows a ball contained inside of a bounding box. Colored blocks blink in when the ball hits the edges. Written by Jeremy English."
 msgstr ""
 
 #: hacks/config/blitspin.xml.h:1
@@ -1962,16 +2541,7 @@ msgid "Grab Screen"
 msgstr ""
 
 #: hacks/config/blitspin.xml.h:8
-msgid ""
-"The ``blitspin'' hack repeatedly rotates a bitmap by 90 degrees by using "
-"logical operations: the bitmap is divided into quadrants, and the quadrants "
-"are shifted clockwise. Then the same thing is done again with progressively "
-"smaller quadrants, except that all sub-quadrants of a given size are rotated "
-"in parallel. Written by Jamie Zawinski based on some cool SmallTalk code "
-"seen in in Byte Magazine in 1981. As you watch it, the image appears to "
-"dissolve into static and then reconstitute itself, but rotated. You can "
-"provide the image to use, as an XBM or XPM file, or tell it to grab a screen "
-"image and rotate that."
+msgid "The ``blitspin'' hack repeatedly rotates a bitmap by 90 degrees by using logical operations: the bitmap is divided into quadrants, and the quadrants are shifted clockwise. Then the same thing is done again with progressively smaller quadrants, except that all sub-quadrants of a given size are rotated in parallel. Written by Jamie Zawinski based on some cool SmallTalk code seen in in Byte Magazine in 1981. As you watch it, the image appears to dissolve into static and then reconstitute itself, but rotated. You can provide the image to use, as an XBM or XPM file, or tell it to grab a screen image and rotate that."
 msgstr ""
 
 #: hacks/config/blocktube.xml.h:1
@@ -1995,16 +2565,15 @@ msgid "Solid Blocks"
 msgstr ""
 
 #: hacks/config/blocktube.xml.h:12
-msgid ""
-"This hack draws a swirling, falling tunnel of reflective slabs. They fade "
-"from hue to hue. Written by Lars R. Damerow."
+msgid "This hack draws a swirling, falling tunnel of reflective slabs. They fade from hue to hue. Written by Lars R. Damerow."
 msgstr ""
 
 #: hacks/config/boing.xml.h:1
 msgid "Boing"
 msgstr ""
 
-#: hacks/config/boing.xml.h:3 hacks/config/fireflies.xml.h:17
+#: hacks/config/boing.xml.h:3
+#: hacks/config/fireflies.xml.h:17
 #: hacks/config/pinion.xml.h:7
 msgid "Huge"
 msgstr ""
@@ -2025,12 +2594,18 @@ msgstr ""
 msgid "Scanlines"
 msgstr ""
 
-#: hacks/config/boing.xml.h:9 hacks/config/galaxy.xml.h:10
-#: hacks/config/lisa.xml.h:7 hacks/config/lissie.xml.h:8
-#: hacks/config/loop.xml.h:6 hacks/config/penrose.xml.h:10
-#: hacks/config/pong.xml.h:3 hacks/config/rotor.xml.h:10
-#: hacks/config/rubik.xml.h:8 hacks/config/sproingies.xml.h:5
-#: hacks/config/wander.xml.h:13 hacks/config/worm.xml.h:6
+#: hacks/config/boing.xml.h:9
+#: hacks/config/galaxy.xml.h:10
+#: hacks/config/lisa.xml.h:7
+#: hacks/config/lissie.xml.h:8
+#: hacks/config/loop.xml.h:6
+#: hacks/config/penrose.xml.h:10
+#: hacks/config/pong.xml.h:3
+#: hacks/config/rotor.xml.h:10
+#: hacks/config/rubik.xml.h:8
+#: hacks/config/sproingies.xml.h:5
+#: hacks/config/wander.xml.h:13
+#: hacks/config/worm.xml.h:6
 msgid "Size"
 msgstr ""
 
@@ -2039,15 +2614,11 @@ msgid "Smoothing"
 msgstr ""
 
 #: hacks/config/boing.xml.h:13
-msgid ""
-"This bouncing ball is a clone of the first graphics demo for the Amiga 1000, "
-"which was written by Dale Luck and RJ Mical during a break at the 1984 "
-"Consumer Electronics Show (or so the legend goes.) This looks like the "
-"original Amiga demo if you turn off \"smoothing\" and \"lighting\" and turn "
-"on \"scanlines\". Written by Jamie Zawinski."
+msgid "This bouncing ball is a clone of the first graphics demo for the Amiga 1000, which was written by Dale Luck and RJ Mical during a break at the 1984 Consumer Electronics Show (or so the legend goes.) This looks like the original Amiga demo if you turn off \"smoothing\" and \"lighting\" and turn on \"scanlines\". Written by Jamie Zawinski."
 msgstr ""
 
-#: hacks/config/boing.xml.h:14 hacks/config/fireflies.xml.h:43
+#: hacks/config/boing.xml.h:14
+#: hacks/config/fireflies.xml.h:43
 #: hacks/config/pinion.xml.h:14
 msgid "Tiny"
 msgstr ""
@@ -2056,7 +2627,8 @@ msgstr ""
 msgid "Bouboule"
 msgstr ""
 
-#: hacks/config/bouboule.xml.h:2 hacks/config/rocks.xml.h:3
+#: hacks/config/bouboule.xml.h:2
+#: hacks/config/rocks.xml.h:3
 msgid "Do Red/Blue 3D seperation"
 msgstr ""
 
@@ -2065,24 +2637,31 @@ msgid "Number of Spots"
 msgstr ""
 
 #: hacks/config/bouboule.xml.h:10
-msgid ""
-"This draws what looks like a spinning, deforming balloon with varying-sized "
-"spots painted on its invisible surface. Written by Jeremie Petit."
+msgid "This draws what looks like a spinning, deforming balloon with varying-sized spots painted on its invisible surface. Written by Jeremie Petit."
 msgstr ""
 
 #: hacks/config/bouncingcow.xml.h:1
 msgid "A Cow. A Trampoline. Together, they fight crime. By Jamie Zawinski."
 msgstr ""
 
-#: hacks/config/bouncingcow.xml.h:2 hacks/config/boxed.xml.h:1
-#: hacks/config/carousel.xml.h:3 hacks/config/cubestorm.xml.h:1
-#: hacks/config/flyingtoasters.xml.h:3 hacks/config/fontglide.xml.h:1
-#: hacks/config/gears.xml.h:1 hacks/config/gflux.xml.h:1
-#: hacks/config/glknots.xml.h:1 hacks/config/glmatrix.xml.h:1
-#: hacks/config/jigglypuff.xml.h:1 hacks/config/pinion.xml.h:3
-#: hacks/config/polyhedra.xml.h:3 hacks/config/pyro.xml.h:1
-#: hacks/config/rd-bomb.xml.h:6 hacks/config/rocks.xml.h:1
-#: hacks/config/starwars.xml.h:1 hacks/config/wormhole.xml.h:1
+#: hacks/config/bouncingcow.xml.h:2
+#: hacks/config/boxed.xml.h:1
+#: hacks/config/carousel.xml.h:3
+#: hacks/config/cubestorm.xml.h:1
+#: hacks/config/flyingtoasters.xml.h:3
+#: hacks/config/fontglide.xml.h:1
+#: hacks/config/gears.xml.h:1
+#: hacks/config/gflux.xml.h:1
+#: hacks/config/glknots.xml.h:1
+#: hacks/config/glmatrix.xml.h:1
+#: hacks/config/jigglypuff.xml.h:1
+#: hacks/config/pinion.xml.h:3
+#: hacks/config/polyhedra.xml.h:3
+#: hacks/config/pyro.xml.h:1
+#: hacks/config/rd-bomb.xml.h:6
+#: hacks/config/rocks.xml.h:1
+#: hacks/config/starwars.xml.h:1
+#: hacks/config/wormhole.xml.h:1
 #: hacks/config/xfishtank.xml.h:1
 msgid "Animation Speed"
 msgstr ""
@@ -2120,18 +2699,19 @@ msgid "Boxed"
 msgstr ""
 
 #: hacks/config/boxed.xml.h:3
-msgid ""
-"Draws a box full of 3D bouncing balls that explode. Written by Sander van "
-"Grieken."
+msgid "Draws a box full of 3D bouncing balls that explode. Written by Sander van Grieken."
 msgstr ""
 
-#: hacks/config/boxed.xml.h:5 hacks/config/cubestorm.xml.h:5
-#: hacks/config/fontglide.xml.h:9 hacks/config/glknots.xml.h:6
+#: hacks/config/boxed.xml.h:5
+#: hacks/config/cubestorm.xml.h:5
+#: hacks/config/fontglide.xml.h:9
+#: hacks/config/glknots.xml.h:6
 #: hacks/config/polyhedra.xml.h:85
 msgid "Motion Speed"
 msgstr ""
 
-#: hacks/config/boxfit.xml.h:1 hacks/config/popsquares.xml.h:1
+#: hacks/config/boxfit.xml.h:1
+#: hacks/config/popsquares.xml.h:1
 msgid "Border"
 msgstr ""
 
@@ -2139,7 +2719,8 @@ msgstr ""
 msgid "BoxFit"
 msgstr ""
 
-#: hacks/config/boxfit.xml.h:3 hacks/config/cubenetic.xml.h:1
+#: hacks/config/boxfit.xml.h:3
+#: hacks/config/cubenetic.xml.h:1
 msgid "Boxes"
 msgstr ""
 
@@ -2160,14 +2741,11 @@ msgid "Grow By"
 msgstr ""
 
 #: hacks/config/boxfit.xml.h:9
-msgid ""
-"Packs the screen with growing boxes or circles, colored according to a "
-"horizontal or vertical gradient. The objects grow until they touch, then "
-"stop. When the screen is full, they shrink away and the process restarts. "
-"Written by Jamie Zawinski."
+msgid "Packs the screen with growing boxes or circles, colored according to a horizontal or vertical gradient. The objects grow until they touch, then stop. When the screen is full, they shrink away and the process restarts. Written by Jamie Zawinski."
 msgstr ""
 
-#: hacks/config/boxfit.xml.h:11 hacks/config/xearth.xml.h:23
+#: hacks/config/boxfit.xml.h:11
+#: hacks/config/xearth.xml.h:23
 msgid "Spacing"
 msgstr ""
 
@@ -2176,35 +2754,53 @@ msgid "Braid"
 msgstr ""
 
 #: hacks/config/braid.xml.h:2
-msgid ""
-"Draws random color-cycling inter-braided concentric circles. Written by John "
-"Neil."
-msgstr ""
-
-#: hacks/config/braid.xml.h:3 hacks/config/bsod.xml.h:9
-#: hacks/config/ccurve.xml.h:7 hacks/config/coral.xml.h:6
-#: hacks/config/cynosure.xml.h:3 hacks/config/deco.xml.h:4
-#: hacks/config/drift.xml.h:2 hacks/config/epicycle.xml.h:3
-#: hacks/config/eruption.xml.h:3 hacks/config/euler2d.xml.h:1
-#: hacks/config/flame.xml.h:5 hacks/config/galaxy.xml.h:2
-#: hacks/config/glsnake.xml.h:5 hacks/config/helix.xml.h:3
-#: hacks/config/hopalong.xml.h:2 hacks/config/imsmap.xml.h:6
-#: hacks/config/klein.xml.h:1 hacks/config/laser.xml.h:2
-#: hacks/config/menger.xml.h:2 hacks/config/metaballs.xml.h:3
-#: hacks/config/mismunch.xml.h:1 hacks/config/moire.xml.h:3
-#: hacks/config/molecule.xml.h:9 hacks/config/munch.xml.h:2
-#: hacks/config/nerverot.xml.h:8 hacks/config/pedal.xml.h:3
-#: hacks/config/penrose.xml.h:5 hacks/config/polyhedra.xml.h:17
-#: hacks/config/polyominoes.xml.h:1 hacks/config/rorschach.xml.h:3
-#: hacks/config/rotzoomer.xml.h:5 hacks/config/shadebobs.xml.h:2
-#: hacks/config/sierpinski3d.xml.h:1 hacks/config/spheremonics.xml.h:4
-#: hacks/config/starfish.xml.h:2 hacks/config/substrate.xml.h:6
-#: hacks/config/vidwhacker.xml.h:3 hacks/config/wander.xml.h:7
+msgid "Draws random color-cycling inter-braided concentric circles. Written by John Neil."
+msgstr ""
+
+#: hacks/config/braid.xml.h:3
+#: hacks/config/bsod.xml.h:9
+#: hacks/config/ccurve.xml.h:7
+#: hacks/config/coral.xml.h:6
+#: hacks/config/cynosure.xml.h:3
+#: hacks/config/deco.xml.h:4
+#: hacks/config/drift.xml.h:2
+#: hacks/config/epicycle.xml.h:3
+#: hacks/config/eruption.xml.h:3
+#: hacks/config/euler2d.xml.h:1
+#: hacks/config/flame.xml.h:5
+#: hacks/config/galaxy.xml.h:2
+#: hacks/config/glsnake.xml.h:5
+#: hacks/config/helix.xml.h:3
+#: hacks/config/hopalong.xml.h:2
+#: hacks/config/imsmap.xml.h:6
+#: hacks/config/klein.xml.h:1
+#: hacks/config/laser.xml.h:2
+#: hacks/config/menger.xml.h:2
+#: hacks/config/metaballs.xml.h:3
+#: hacks/config/mismunch.xml.h:1
+#: hacks/config/moire.xml.h:3
+#: hacks/config/molecule.xml.h:9
+#: hacks/config/munch.xml.h:2
+#: hacks/config/nerverot.xml.h:8
+#: hacks/config/pedal.xml.h:3
+#: hacks/config/penrose.xml.h:5
+#: hacks/config/polyhedra.xml.h:17
+#: hacks/config/polyominoes.xml.h:1
+#: hacks/config/rorschach.xml.h:3
+#: hacks/config/rotzoomer.xml.h:5
+#: hacks/config/shadebobs.xml.h:2
+#: hacks/config/sierpinski3d.xml.h:1
+#: hacks/config/spheremonics.xml.h:4
+#: hacks/config/starfish.xml.h:2
+#: hacks/config/substrate.xml.h:6
+#: hacks/config/vidwhacker.xml.h:3
+#: hacks/config/wander.xml.h:7
 #: hacks/config/xspirograph.xml.h:3
 msgid "Duration"
-msgstr ""
+msgstr "Durata"
 
-#: hacks/config/braid.xml.h:5 hacks/config/epicycle.xml.h:7
+#: hacks/config/braid.xml.h:5
+#: hacks/config/epicycle.xml.h:7
 #: hacks/config/nerverot.xml.h:12
 msgid "Line Thickness"
 msgstr ""
@@ -2213,14 +2809,16 @@ msgstr ""
 msgid "Max Rings"
 msgstr ""
 
-#: hacks/config/bsod.xml.h:1 hacks/config/molecule.xml.h:1
+#: hacks/config/bsod.xml.h:1
+#: hacks/config/molecule.xml.h:1
 #: hacks/config/vidwhacker.xml.h:1
 msgid "2 minutes"
-msgstr ""
+msgstr "2 minuti"
 
-#: hacks/config/bsod.xml.h:2 hacks/config/molecule.xml.h:2
+#: hacks/config/bsod.xml.h:2
+#: hacks/config/molecule.xml.h:2
 msgid "5 seconds"
-msgstr ""
+msgstr "5 secondi"
 
 #: hacks/config/bsod.xml.h:3
 msgid "AmigaDOS"
@@ -2243,10 +2841,7 @@ msgid "BSOD"
 msgstr ""
 
 #: hacks/config/bsod.xml.h:8
-msgid ""
-"BSOD stands for ``Blue Screen of Death.'' The finest in personal computer "
-"emulation, this hack simulates popular screen savers from a number of less "
-"robust operating systems. Written by Jamie Zawinski."
+msgid "BSOD stands for ``Blue Screen of Death.'' The finest in personal computer emulation, this hack simulates popular screen savers from a number of less robust operating systems. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/bsod.xml.h:10
@@ -2334,12 +2929,11 @@ msgid "Bubble3D"
 msgstr ""
 
 #: hacks/config/bubble3d.xml.h:2
-msgid ""
-"Draws a stream of rising, undulating 3D bubbles, rising toward the top of "
-"the screen, with nice specular reflections. Written by Richard Jones."
+msgid "Draws a stream of rising, undulating 3D bubbles, rising toward the top of the screen, with nice specular reflections. Written by Richard Jones."
 msgstr ""
 
-#: hacks/config/bubbles.xml.h:1 hacks/config/xfishtank.xml.h:2
+#: hacks/config/bubbles.xml.h:1
+#: hacks/config/xfishtank.xml.h:2
 msgid "Bubbles"
 msgstr ""
 
@@ -2372,17 +2966,11 @@ msgid "Leave Trails"
 msgstr ""
 
 #: hacks/config/bubbles.xml.h:12
-msgid ""
-"This simulates the kind of bubble formation that happens when water boils:"
-"small bubbles appear, and as they get closer to each other, they combine to "
-"form larger bubbles, which eventually pop. Written by James Macnicol."
+msgid "This simulates the kind of bubble formation that happens when water boils:small bubbles appear, and as they get closer to each other, they combine to form larger bubbles, which eventually pop. Written by James Macnicol."
 msgstr ""
 
 #: hacks/config/bumps.xml.h:1
-msgid ""
-"A bit like `Spotlight', except that instead of merely exposing part of your "
-"desktop, it creates a bump map from it. Basically, it 3D-izes a roaming "
-"section of your desktop, based on color intensity. Written by Shane Smit."
+msgid "A bit like `Spotlight', except that instead of merely exposing part of your desktop, it creates a bump map from it. Basically, it 3D-izes a roaming section of your desktop, based on color intensity. Written by Shane Smit."
 msgstr ""
 
 #: hacks/config/bumps.xml.h:2
@@ -2394,43 +2982,39 @@ msgid "Cage"
 msgstr ""
 
 #: hacks/config/cage.xml.h:7
-msgid ""
-"This draws Escher's ``Impossible Cage,'' a 3d analog of a moebius strip, and "
-"rotates it in three dimensions. Written by Marcelo Vianna."
-msgstr ""
-
-#: hacks/config/carousel.xml.h:1 hacks/config/coral.xml.h:1
-#: hacks/config/deco.xml.h:1 hacks/config/helix.xml.h:1
-#: hacks/config/imsmap.xml.h:1 hacks/config/jigsaw.xml.h:2
-#: hacks/config/moire.xml.h:1 hacks/config/pedal.xml.h:1
-#: hacks/config/rorschach.xml.h:1 hacks/config/rotzoomer.xml.h:2
-#: hacks/config/wander.xml.h:2 hacks/config/xspirograph.xml.h:1
+msgid "This draws Escher's ``Impossible Cage,'' a 3d analog of a moebius strip, and rotates it in three dimensions. Written by Marcelo Vianna."
+msgstr ""
+
+#: hacks/config/carousel.xml.h:1
+#: hacks/config/coral.xml.h:1
+#: hacks/config/deco.xml.h:1
+#: hacks/config/helix.xml.h:1
+#: hacks/config/imsmap.xml.h:1
+#: hacks/config/jigsaw.xml.h:2
+#: hacks/config/moire.xml.h:1
+#: hacks/config/pedal.xml.h:1
+#: hacks/config/rorschach.xml.h:1
+#: hacks/config/rotzoomer.xml.h:2
+#: hacks/config/wander.xml.h:2
+#: hacks/config/xspirograph.xml.h:1
 msgid "1 Minute"
-msgstr ""
+msgstr "1 Minuto"
 
 #: hacks/config/carousel.xml.h:2
 msgid "5 Seconds"
-msgstr ""
+msgstr "5 Secondi"
 
 #: hacks/config/carousel.xml.h:4
 msgid "Carousel"
 msgstr ""
 
-#: hacks/config/carousel.xml.h:6 hacks/config/electricsheep.xml.h:3
+#: hacks/config/carousel.xml.h:6
+#: hacks/config/electricsheep.xml.h:3
 msgid "Frame Rate"
 msgstr ""
 
 #: hacks/config/carousel.xml.h:8
-msgid ""
-"Loads several random images, and displays them flying in a circular "
-"formation. The circle changes speed and direction randomly, tilts on its "
-"axis, and the images move in and out. To tell it where to find the images to "
-"display, go to the \"Advanced\" tab on the Screensaver Preferences window. "
-"Select \"Choose Random Images\", and enter your image directory in the text "
-"field right below that. (Note: not the the \"Advanced\" button at the bottom "
-"of this window: the tab at the top of the *other* window.) This program "
-"requires a good video card capable of supporting large textures. Written by "
-"Jamie Zawinski."
+msgid "Loads several random images, and displays them flying in a circular formation. The circle changes speed and direction randomly, tilts on its axis, and the images move in and out. To tell it where to find the images to display, go to the \"Advanced\" tab on the Screensaver Preferences window. Select \"Choose Random Images\", and enter your image directory in the text field right below that. (Note: not the the \"Advanced\" button at the bottom of this window: the tab at the top of the *other* window.) This program requires a good video card capable of supporting large textures. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/carousel.xml.h:10
@@ -2441,7 +3025,8 @@ msgstr ""
 msgid "Number of Images:"
 msgstr ""
 
-#: hacks/config/carousel.xml.h:13 hacks/config/glslideshow.xml.h:20
+#: hacks/config/carousel.xml.h:13
+#: hacks/config/glslideshow.xml.h:20
 msgid "Show Image Titles"
 msgstr ""
 
@@ -2457,7 +3042,8 @@ msgstr ""
 msgid "Tilt Left/Right Only"
 msgstr ""
 
-#: hacks/config/carousel.xml.h:18 hacks/config/glslideshow.xml.h:21
+#: hacks/config/carousel.xml.h:18
+#: hacks/config/glslideshow.xml.h:21
 #: hacks/config/mirrorblob.xml.h:22
 msgid "Time until loading a new image:"
 msgstr ""
@@ -2468,36 +3054,41 @@ msgstr ""
 
 #: hacks/config/ccurve.xml.h:1
 msgid "0 seconds"
-msgstr ""
+msgstr "0 secondi"
 
-#: hacks/config/ccurve.xml.h:2 hacks/config/epicycle.xml.h:1
+#: hacks/config/ccurve.xml.h:2
+#: hacks/config/epicycle.xml.h:1
 msgid "1 minute"
-msgstr ""
+msgstr "1 minuto"
 
-#: hacks/config/ccurve.xml.h:3 hacks/config/epicycle.xml.h:2
+#: hacks/config/ccurve.xml.h:3
+#: hacks/config/epicycle.xml.h:2
 #: hacks/config/polyhedra.xml.h:1
 msgid "1 second"
-msgstr ""
+msgstr "1 secondo"
 
 #: hacks/config/ccurve.xml.h:4
 msgid "C Curve"
 msgstr ""
 
-#: hacks/config/ccurve.xml.h:5 hacks/config/fuzzyflakes.xml.h:4
+#: hacks/config/ccurve.xml.h:5
+#: hacks/config/fuzzyflakes.xml.h:4
 msgid "Delay"
 msgstr ""
 
-#: hacks/config/ccurve.xml.h:6 hacks/config/coral.xml.h:5
-#: hacks/config/imsmap.xml.h:5 hacks/config/kumppa.xml.h:1
-#: hacks/config/qix.xml.h:6 hacks/config/squiral.xml.h:2
-#: hacks/config/wander.xml.h:4 hacks/config/xmatrix.xml.h:2
+#: hacks/config/ccurve.xml.h:6
+#: hacks/config/coral.xml.h:5
+#: hacks/config/imsmap.xml.h:5
+#: hacks/config/kumppa.xml.h:1
+#: hacks/config/qix.xml.h:6
+#: hacks/config/squiral.xml.h:2
+#: hacks/config/wander.xml.h:4
+#: hacks/config/xmatrix.xml.h:2
 msgid "Density"
 msgstr ""
 
 #: hacks/config/ccurve.xml.h:8
-msgid ""
-"Generates self-similar linear fractals, including the classic ``C Curve.'' "
-"Written by Rick Campbell."
+msgid "Generates self-similar linear fractals, including the classic ``C Curve.'' Written by Rick Campbell."
 msgstr ""
 
 #: hacks/config/circuit.xml.h:1
@@ -2508,7 +3099,8 @@ msgstr ""
 msgid "Circuit"
 msgstr ""
 
-#: hacks/config/circuit.xml.h:3 hacks/config/gflux.xml.h:4
+#: hacks/config/circuit.xml.h:3
+#: hacks/config/gflux.xml.h:4
 #: hacks/config/pulsar.xml.h:2
 msgid "Directional Lighting"
 msgstr ""
@@ -2521,22 +3113,29 @@ msgstr ""
 msgid "Parts"
 msgstr ""
 
-#: hacks/config/circuit.xml.h:7 hacks/config/flipscreen3d.xml.h:4
-#: hacks/config/gleidescope.xml.h:9 hacks/config/glplanet.xml.h:6
+#: hacks/config/circuit.xml.h:7
+#: hacks/config/flipscreen3d.xml.h:4
+#: hacks/config/gleidescope.xml.h:9
+#: hacks/config/glplanet.xml.h:6
 msgid "Rotate"
 msgstr ""
 
-#: hacks/config/circuit.xml.h:8 hacks/config/pinion.xml.h:10
+#: hacks/config/circuit.xml.h:8
+#: hacks/config/pinion.xml.h:10
 msgid "Rotation Speed"
 msgstr ""
 
-#: hacks/config/circuit.xml.h:12 hacks/config/cubestorm.xml.h:9
-#: hacks/config/dangerball.xml.h:9 hacks/config/engine.xml.h:17
-#: hacks/config/klein.xml.h:9 hacks/config/whirlygig.xml.h:14
+#: hacks/config/circuit.xml.h:12
+#: hacks/config/cubestorm.xml.h:9
+#: hacks/config/dangerball.xml.h:9
+#: hacks/config/engine.xml.h:17
+#: hacks/config/klein.xml.h:9
+#: hacks/config/whirlygig.xml.h:14
 msgid "Spin"
 msgstr ""
 
-#: hacks/config/cloudlife.xml.h:1 hacks/config/demon.xml.h:2
+#: hacks/config/cloudlife.xml.h:1
+#: hacks/config/demon.xml.h:2
 #: hacks/config/petri.xml.h:1
 msgid "Cell Size"
 msgstr ""
@@ -2546,12 +3145,7 @@ msgid "CloudLife"
 msgstr ""
 
 #: hacks/config/cloudlife.xml.h:4
-msgid ""
-"Generates cloud-like formations based on a variant of Conway's Life. The "
-"difference is that cells have a maximum age, after which they count as 3 for "
-"populating the next generation. This makes long-lived formations explode "
-"instead of just sitting there burning a hole in your screen. Written by Don "
-"Marti."
+msgid "Generates cloud-like formations based on a variant of Conway's Life. The difference is that cells have a maximum age, after which they count as 3 for populating the next generation. This makes long-lived formations explode instead of just sitting there burning a hole in your screen. Written by Don Marti."
 msgstr ""
 
 #: hacks/config/cloudlife.xml.h:6
@@ -2574,56 +3168,74 @@ msgstr ""
 msgid "Compass"
 msgstr ""
 
-#: hacks/config/compass.xml.h:2 hacks/config/deluxe.xml.h:3
-#: hacks/config/fontglide.xml.h:3 hacks/config/fuzzyflakes.xml.h:5
-#: hacks/config/interference.xml.h:6 hacks/config/kumppa.xml.h:2
-#: hacks/config/nerverot.xml.h:6 hacks/config/piecewise.xml.h:3
+#: hacks/config/compass.xml.h:2
+#: hacks/config/deluxe.xml.h:3
+#: hacks/config/fontglide.xml.h:3
+#: hacks/config/fuzzyflakes.xml.h:5
+#: hacks/config/interference.xml.h:6
+#: hacks/config/kumppa.xml.h:2
+#: hacks/config/nerverot.xml.h:6
+#: hacks/config/piecewise.xml.h:3
 #: hacks/config/pipes.xml.h:4
 msgid "Double Buffer"
 msgstr ""
 
 #: hacks/config/compass.xml.h:6
-msgid ""
-"This draws a compass, with all elements spinning about randomly, for that "
-"``lost and nauseous'' feeling. Written by Jamie Zawinski."
-msgstr ""
-
-#: hacks/config/coral.xml.h:2 hacks/config/deco.xml.h:2
-#: hacks/config/glslideshow.xml.h:1 hacks/config/helix.xml.h:2
-#: hacks/config/imsmap.xml.h:2 hacks/config/moire.xml.h:2
-#: hacks/config/pedal.xml.h:2 hacks/config/penrose.xml.h:1
-#: hacks/config/rorschach.xml.h:2 hacks/config/xspirograph.xml.h:2
+msgid "This draws a compass, with all elements spinning about randomly, for that ``lost and nauseous'' feeling. Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/coral.xml.h:2
+#: hacks/config/deco.xml.h:2
+#: hacks/config/glslideshow.xml.h:1
+#: hacks/config/helix.xml.h:2
+#: hacks/config/imsmap.xml.h:2
+#: hacks/config/moire.xml.h:2
+#: hacks/config/pedal.xml.h:2
+#: hacks/config/penrose.xml.h:1
+#: hacks/config/rorschach.xml.h:2
+#: hacks/config/xspirograph.xml.h:2
 msgid "1 Second"
-msgstr ""
+msgstr "1 Secondo"
 
 #: hacks/config/coral.xml.h:3
 msgid "Coral"
 msgstr ""
 
-#: hacks/config/coral.xml.h:4 hacks/config/fireworkx.xml.h:2
-#: hacks/config/gflux.xml.h:3 hacks/config/glblur.xml.h:2
-#: hacks/config/glmatrix.xml.h:3 hacks/config/imsmap.xml.h:4
-#: hacks/config/lavalite.xml.h:6 hacks/config/pyro.xml.h:2
-#: hacks/config/qix.xml.h:5 hacks/config/squiral.xml.h:1
+#: hacks/config/coral.xml.h:4
+#: hacks/config/fireworkx.xml.h:2
+#: hacks/config/gflux.xml.h:3
+#: hacks/config/glblur.xml.h:2
+#: hacks/config/glmatrix.xml.h:3
+#: hacks/config/imsmap.xml.h:4
+#: hacks/config/lavalite.xml.h:6
+#: hacks/config/pyro.xml.h:2
+#: hacks/config/qix.xml.h:5
+#: hacks/config/squiral.xml.h:1
 #: hacks/config/xearth.xml.h:4
 msgid "Dense"
 msgstr ""
 
-#: hacks/config/coral.xml.h:10 hacks/config/squiral.xml.h:13
+#: hacks/config/coral.xml.h:10
+#: hacks/config/squiral.xml.h:13
 msgid "Seeds"
 msgstr ""
 
 #: hacks/config/coral.xml.h:11
-msgid ""
-"Simulates coral growth, albeit somewhat slowly. Written by Frederick Roeber."
-msgstr ""
-
-#: hacks/config/coral.xml.h:13 hacks/config/fireworkx.xml.h:10
-#: hacks/config/gflux.xml.h:13 hacks/config/glblur.xml.h:16
-#: hacks/config/glmatrix.xml.h:19 hacks/config/imsmap.xml.h:13
-#: hacks/config/lavalite.xml.h:29 hacks/config/pyro.xml.h:14
-#: hacks/config/qix.xml.h:21 hacks/config/squiral.xml.h:15
-#: hacks/config/xearth.xml.h:24 hacks/config/xmatrix.xml.h:17
+msgid "Simulates coral growth, albeit somewhat slowly. Written by Frederick Roeber."
+msgstr ""
+
+#: hacks/config/coral.xml.h:13
+#: hacks/config/fireworkx.xml.h:10
+#: hacks/config/gflux.xml.h:13
+#: hacks/config/glblur.xml.h:16
+#: hacks/config/glmatrix.xml.h:19
+#: hacks/config/imsmap.xml.h:13
+#: hacks/config/lavalite.xml.h:29
+#: hacks/config/pyro.xml.h:14
+#: hacks/config/qix.xml.h:21
+#: hacks/config/squiral.xml.h:15
+#: hacks/config/xearth.xml.h:24
+#: hacks/config/xmatrix.xml.h:17
 msgid "Sparse"
 msgstr ""
 
@@ -2632,9 +3244,7 @@ msgid "Cosmos"
 msgstr ""
 
 #: hacks/config/cosmos.xml.h:2
-msgid ""
-"Draws fireworks and zooming, fading flares. By Tom Campbell. You can find it "
-"at &lt;http://www.cosmosx.org/&gt;"
+msgid "Draws fireworks and zooming, fading flares. By Tom Campbell. You can find it at &lt;http://www.cosmosx.org/&gt;"
 msgstr ""
 
 #: hacks/config/critical.xml.h:1
@@ -2642,28 +3252,39 @@ msgid "Critical"
 msgstr ""
 
 #: hacks/config/critical.xml.h:2
-msgid ""
-"Draws a system of self-organizing lines. It starts out as random squiggles, "
-"but after a few iterations, order begins to appear. Written by Martin Pool."
+msgid "Draws a system of self-organizing lines. It starts out as random squiggles, but after a few iterations, order begins to appear. Written by Martin Pool."
 msgstr ""
 
 #: hacks/config/crystal.xml.h:1
 msgid "Center on Screen"
 msgstr ""
 
-#: hacks/config/crystal.xml.h:2 hacks/config/deluxe.xml.h:1
-#: hacks/config/fadeplot.xml.h:1 hacks/config/flow.xml.h:1
-#: hacks/config/galaxy.xml.h:1 hacks/config/glforestfire.xml.h:1
-#: hacks/config/grav.xml.h:1 hacks/config/julia.xml.h:1
-#: hacks/config/laser.xml.h:1 hacks/config/lisa.xml.h:1
-#: hacks/config/lissie.xml.h:2 hacks/config/morph3d.xml.h:2
-#: hacks/config/mountain.xml.h:1 hacks/config/piecewise.xml.h:2
-#: hacks/config/qix.xml.h:4 hacks/config/rocks.xml.h:2
-#: hacks/config/rotor.xml.h:2 hacks/config/rubik.xml.h:1
-#: hacks/config/shadebobs.xml.h:1 hacks/config/sierpinski.xml.h:1
-#: hacks/config/slip.xml.h:1 hacks/config/spiral.xml.h:1
-#: hacks/config/sproingies.xml.h:1 hacks/config/superquadrics.xml.h:1
-#: hacks/config/swirl.xml.h:1 hacks/config/worm.xml.h:2
+#: hacks/config/crystal.xml.h:2
+#: hacks/config/deluxe.xml.h:1
+#: hacks/config/fadeplot.xml.h:1
+#: hacks/config/flow.xml.h:1
+#: hacks/config/galaxy.xml.h:1
+#: hacks/config/glforestfire.xml.h:1
+#: hacks/config/grav.xml.h:1
+#: hacks/config/julia.xml.h:1
+#: hacks/config/laser.xml.h:1
+#: hacks/config/lisa.xml.h:1
+#: hacks/config/lissie.xml.h:2
+#: hacks/config/morph3d.xml.h:2
+#: hacks/config/mountain.xml.h:1
+#: hacks/config/piecewise.xml.h:2
+#: hacks/config/qix.xml.h:4
+#: hacks/config/rocks.xml.h:2
+#: hacks/config/rotor.xml.h:2
+#: hacks/config/rubik.xml.h:1
+#: hacks/config/shadebobs.xml.h:1
+#: hacks/config/sierpinski.xml.h:1
+#: hacks/config/slip.xml.h:1
+#: hacks/config/spiral.xml.h:1
+#: hacks/config/sproingies.xml.h:1
+#: hacks/config/superquadrics.xml.h:1
+#: hacks/config/swirl.xml.h:1
+#: hacks/config/worm.xml.h:2
 msgid "Count"
 msgstr ""
 
@@ -2675,7 +3296,8 @@ msgstr ""
 msgid "Draw Cell"
 msgstr ""
 
-#: hacks/config/crystal.xml.h:5 hacks/config/spheremonics.xml.h:3
+#: hacks/config/crystal.xml.h:5
+#: hacks/config/spheremonics.xml.h:3
 #: hacks/config/xearth.xml.h:6
 msgid "Draw Grid"
 msgstr ""
@@ -2685,9 +3307,7 @@ msgid "Horizontal Symmetries"
 msgstr ""
 
 #: hacks/config/crystal.xml.h:9
-msgid ""
-"Moving polygons, similar to a kaleidescope (more like a kaleidescope than "
-"the hack called `kaleid,' actually.) This one by Jouk Jansen."
+msgid "Moving polygons, similar to a kaleidescope (more like a kaleidescope than the hack called `kaleid,' actually.) This one by Jouk Jansen."
 msgstr ""
 
 #: hacks/config/crystal.xml.h:14
@@ -2710,73 +3330,102 @@ msgstr ""
 msgid "Display Wireframe"
 msgstr ""
 
-#: hacks/config/cubenetic.xml.h:6 hacks/config/glblur.xml.h:3
-#: hacks/config/glknots.xml.h:2 hacks/config/gltext.xml.h:2
-#: hacks/config/lavalite.xml.h:7 hacks/config/menger.xml.h:1
-#: hacks/config/molecule.xml.h:4 hacks/config/polyhedra.xml.h:16
+#: hacks/config/cubenetic.xml.h:6
+#: hacks/config/glblur.xml.h:3
+#: hacks/config/glknots.xml.h:2
+#: hacks/config/gltext.xml.h:2
+#: hacks/config/lavalite.xml.h:7
+#: hacks/config/menger.xml.h:1
+#: hacks/config/molecule.xml.h:4
+#: hacks/config/polyhedra.xml.h:16
 #: hacks/config/spheremonics.xml.h:1
 msgid "Don't Rotate"
 msgstr ""
 
 #: hacks/config/cubenetic.xml.h:7
-msgid ""
-"Draws a pulsating set of overlapping boxes with ever-chaning blobby patterns "
-"undulating across their surfaces. It's sort of a cubist Lavalite. Written by "
-"Jamie Zawinski."
+msgid "Draws a pulsating set of overlapping boxes with ever-chaning blobby patterns undulating across their surfaces. It's sort of a cubist Lavalite. Written by Jamie Zawinski."
 msgstr ""
 
-#: hacks/config/cubenetic.xml.h:14 hacks/config/glblur.xml.h:6
-#: hacks/config/glknots.xml.h:8 hacks/config/gltext.xml.h:5
-#: hacks/config/lavalite.xml.h:19 hacks/config/menger.xml.h:7
-#: hacks/config/molecule.xml.h:14 hacks/config/polyhedra.xml.h:110
+#: hacks/config/cubenetic.xml.h:14
+#: hacks/config/glblur.xml.h:6
+#: hacks/config/glknots.xml.h:8
+#: hacks/config/gltext.xml.h:5
+#: hacks/config/lavalite.xml.h:19
+#: hacks/config/menger.xml.h:7
+#: hacks/config/molecule.xml.h:14
+#: hacks/config/polyhedra.xml.h:110
 #: hacks/config/spheremonics.xml.h:10
 msgid "Rotate around X and Y axes"
 msgstr ""
 
-#: hacks/config/cubenetic.xml.h:15 hacks/config/glblur.xml.h:7
-#: hacks/config/glknots.xml.h:9 hacks/config/gltext.xml.h:6
-#: hacks/config/lavalite.xml.h:20 hacks/config/menger.xml.h:8
-#: hacks/config/molecule.xml.h:15 hacks/config/polyhedra.xml.h:111
+#: hacks/config/cubenetic.xml.h:15
+#: hacks/config/glblur.xml.h:7
+#: hacks/config/glknots.xml.h:9
+#: hacks/config/gltext.xml.h:6
+#: hacks/config/lavalite.xml.h:20
+#: hacks/config/menger.xml.h:8
+#: hacks/config/molecule.xml.h:15
+#: hacks/config/polyhedra.xml.h:111
 #: hacks/config/spheremonics.xml.h:11
 msgid "Rotate around X and Z axes"
 msgstr ""
 
-#: hacks/config/cubenetic.xml.h:16 hacks/config/glblur.xml.h:8
-#: hacks/config/glknots.xml.h:10 hacks/config/gltext.xml.h:7
-#: hacks/config/lavalite.xml.h:21 hacks/config/menger.xml.h:9
-#: hacks/config/molecule.xml.h:16 hacks/config/polyhedra.xml.h:112
+#: hacks/config/cubenetic.xml.h:16
+#: hacks/config/glblur.xml.h:8
+#: hacks/config/glknots.xml.h:10
+#: hacks/config/gltext.xml.h:7
+#: hacks/config/lavalite.xml.h:21
+#: hacks/config/menger.xml.h:9
+#: hacks/config/molecule.xml.h:16
+#: hacks/config/polyhedra.xml.h:112
 #: hacks/config/spheremonics.xml.h:12
 msgid "Rotate around X axis"
 msgstr ""
 
-#: hacks/config/cubenetic.xml.h:17 hacks/config/glblur.xml.h:9
-#: hacks/config/glknots.xml.h:11 hacks/config/gltext.xml.h:8
-#: hacks/config/lavalite.xml.h:22 hacks/config/menger.xml.h:10
-#: hacks/config/molecule.xml.h:17 hacks/config/polyhedra.xml.h:113
+#: hacks/config/cubenetic.xml.h:17
+#: hacks/config/glblur.xml.h:9
+#: hacks/config/glknots.xml.h:11
+#: hacks/config/gltext.xml.h:8
+#: hacks/config/lavalite.xml.h:22
+#: hacks/config/menger.xml.h:10
+#: hacks/config/molecule.xml.h:17
+#: hacks/config/polyhedra.xml.h:113
 #: hacks/config/spheremonics.xml.h:13
 msgid "Rotate around Y and Z axes"
 msgstr ""
 
-#: hacks/config/cubenetic.xml.h:18 hacks/config/glblur.xml.h:10
-#: hacks/config/glknots.xml.h:12 hacks/config/gltext.xml.h:9
-#: hacks/config/lavalite.xml.h:23 hacks/config/menger.xml.h:11
-#: hacks/config/molecule.xml.h:18 hacks/config/polyhedra.xml.h:114
+#: hacks/config/cubenetic.xml.h:18
+#: hacks/config/glblur.xml.h:10
+#: hacks/config/glknots.xml.h:12
+#: hacks/config/gltext.xml.h:9
+#: hacks/config/lavalite.xml.h:23
+#: hacks/config/menger.xml.h:11
+#: hacks/config/molecule.xml.h:18
+#: hacks/config/polyhedra.xml.h:114
 #: hacks/config/spheremonics.xml.h:14
 msgid "Rotate around Y axis"
 msgstr ""
 
-#: hacks/config/cubenetic.xml.h:19 hacks/config/glblur.xml.h:11
-#: hacks/config/glknots.xml.h:13 hacks/config/gltext.xml.h:10
-#: hacks/config/lavalite.xml.h:24 hacks/config/menger.xml.h:12
-#: hacks/config/molecule.xml.h:19 hacks/config/polyhedra.xml.h:115
+#: hacks/config/cubenetic.xml.h:19
+#: hacks/config/glblur.xml.h:11
+#: hacks/config/glknots.xml.h:13
+#: hacks/config/gltext.xml.h:10
+#: hacks/config/lavalite.xml.h:24
+#: hacks/config/menger.xml.h:12
+#: hacks/config/molecule.xml.h:19
+#: hacks/config/polyhedra.xml.h:115
 #: hacks/config/spheremonics.xml.h:15
 msgid "Rotate around Z axis"
 msgstr ""
 
-#: hacks/config/cubenetic.xml.h:20 hacks/config/glblur.xml.h:12
-#: hacks/config/glknots.xml.h:14 hacks/config/gltext.xml.h:11
-#: hacks/config/lavalite.xml.h:25 hacks/config/menger.xml.h:13
-#: hacks/config/molecule.xml.h:20 hacks/config/polyhedra.xml.h:116
+#: hacks/config/cubenetic.xml.h:20
+#: hacks/config/glblur.xml.h:12
+#: hacks/config/glknots.xml.h:14
+#: hacks/config/gltext.xml.h:11
+#: hacks/config/lavalite.xml.h:25
+#: hacks/config/menger.xml.h:13
+#: hacks/config/molecule.xml.h:20
+#: hacks/config/polyhedra.xml.h:116
 #: hacks/config/spheremonics.xml.h:16
 msgid "Rotate around all three axes"
 msgstr ""
@@ -2793,13 +3442,20 @@ msgstr ""
 msgid "Surface Pattern Speed"
 msgstr ""
 
-#: hacks/config/cubenetic.xml.h:28 hacks/config/cubestorm.xml.h:13
-#: hacks/config/dangerball.xml.h:10 hacks/config/engine.xml.h:20
-#: hacks/config/glblur.xml.h:19 hacks/config/glforestfire.xml.h:19
-#: hacks/config/glknots.xml.h:22 hacks/config/glplanet.xml.h:14
-#: hacks/config/gltext.xml.h:17 hacks/config/lavalite.xml.h:31
-#: hacks/config/menger.xml.h:20 hacks/config/molecule.xml.h:25
-#: hacks/config/polyhedra.xml.h:172 hacks/config/spheremonics.xml.h:25
+#: hacks/config/cubenetic.xml.h:28
+#: hacks/config/cubestorm.xml.h:13
+#: hacks/config/dangerball.xml.h:10
+#: hacks/config/engine.xml.h:20
+#: hacks/config/glblur.xml.h:19
+#: hacks/config/glforestfire.xml.h:19
+#: hacks/config/glknots.xml.h:22
+#: hacks/config/glplanet.xml.h:14
+#: hacks/config/gltext.xml.h:17
+#: hacks/config/lavalite.xml.h:31
+#: hacks/config/menger.xml.h:20
+#: hacks/config/molecule.xml.h:25
+#: hacks/config/polyhedra.xml.h:172
+#: hacks/config/spheremonics.xml.h:25
 #: hacks/config/wander.xml.h:15
 msgid "Wander"
 msgstr ""
@@ -2809,9 +3465,7 @@ msgid "CubeStorm"
 msgstr ""
 
 #: hacks/config/cubestorm.xml.h:3
-msgid ""
-"Draws a series of rotating 3D boxes that intersect each other and eventually "
-"fill space. Written by Jamie Zawinski."
+msgid "Draws a series of rotating 3D boxes that intersect each other and eventually fill space. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/cubestorm.xml.h:6
@@ -2823,11 +3477,7 @@ msgid "Strut Thickness"
 msgstr ""
 
 #: hacks/config/cynosure.xml.h:1
-msgid ""
-"A hack similar to `greynetic', but less frenetic. The first implementation "
-"was by Stephen Linhart; then Ozymandias G. Desiderata wrote a Java applet "
-"clone. That clone was discovered by Jamie Zawinski, and ported to C for "
-"inclusion here."
+msgid "A hack similar to `greynetic', but less frenetic. The first implementation was by Stephen Linhart; then Ozymandias G. Desiderata wrote a Java applet clone. That clone was discovered by Jamie Zawinski, and ported to C for inclusion here."
 msgstr ""
 
 #: hacks/config/cynosure.xml.h:2
@@ -2839,9 +3489,7 @@ msgid "DangerBall"
 msgstr ""
 
 #: hacks/config/dangerball.xml.h:2
-msgid ""
-"Draws a ball that periodically extrudes many random spikes. Ouch! Written by "
-"Jamie Zawinski."
+msgid "Draws a ball that periodically extrudes many random spikes. Ouch! Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/dangerball.xml.h:7
@@ -2917,19 +3565,15 @@ msgid "Stretchy Melt"
 msgstr ""
 
 #: hacks/config/decayscreen.xml.h:20
-msgid ""
-"This takes an image and makes it melt. You've no doubt seen this effect "
-"before, but no screensaver would really be complete without it. It works "
-"best if there's something colorful visible. Warning, if the effect continues "
-"after the screen saver is off, seek medical attention. Written by David "
-"Wald, Vivek Khera, Jamie Zawinski, and Vince Levey."
+msgid "This takes an image and makes it melt. You've no doubt seen this effect before, but no screensaver would really be complete without it. It works best if there's something colorful visible. Warning, if the effect continues after the screen saver is off, seek medical attention. Written by David Wald, Vivek Khera, Jamie Zawinski, and Vince Levey."
 msgstr ""
 
 #: hacks/config/deco.xml.h:3
 msgid "Deco"
 msgstr ""
 
-#: hacks/config/deco.xml.h:6 hacks/config/menger.xml.h:5
+#: hacks/config/deco.xml.h:6
+#: hacks/config/menger.xml.h:5
 #: hacks/config/sierpinski3d.xml.h:4
 msgid "Max Depth"
 msgstr ""
@@ -2939,15 +3583,13 @@ msgid "Min Size"
 msgstr ""
 
 #: hacks/config/deco.xml.h:9
-msgid ""
-"This one subdivides and colors rectangles randomly. It looks kind of like "
-"Brady-Bunch-era rec-room wall paneling. (Raven says: ``this screensaver is "
-"ugly enough to peel paint.'') Written by Jamie Zawinski, inspired by Java "
-"code by Michael Bayne."
+msgid "This one subdivides and colors rectangles randomly. It looks kind of like Brady-Bunch-era rec-room wall paneling. (Raven says: ``this screensaver is ugly enough to peel paint.'') Written by Jamie Zawinski, inspired by Java code by Michael Bayne."
 msgstr ""
 
-#: hacks/config/deco.xml.h:11 hacks/config/rd-bomb.xml.h:23
-#: hacks/config/whirlygig.xml.h:20 hacks/config/xearth.xml.h:33
+#: hacks/config/deco.xml.h:11
+#: hacks/config/rd-bomb.xml.h:23
+#: hacks/config/whirlygig.xml.h:20
+#: hacks/config/xearth.xml.h:33
 #: hacks/config/zoom.xml.h:10
 msgid "x"
 msgstr ""
@@ -2957,11 +3599,7 @@ msgid "Deluxe"
 msgstr ""
 
 #: hacks/config/deluxe.xml.h:12
-msgid ""
-"This draws a pulsing sequence of stars, circles, and lines. It would look "
-"better if it was faster, but as far as I can tell, there is no way to make "
-"this be both: fast, and flicker-free. Yet another reason X sucks. Written by "
-"Jamie Zawinski."
+msgid "This draws a pulsing sequence of stars, circles, and lines. It would look better if it was faster, but as far as I can tell, there is no way to make this be both: fast, and flicker-free. Yet another reason X sucks. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/deluxe.xml.h:13
@@ -2969,9 +3607,7 @@ msgid "Transparency"
 msgstr ""
 
 #: hacks/config/demon.xml.h:1
-msgid ""
-"A cellular automaton that starts with a random field, and organizes it into "
-"stripes and spirals. Written by David Bagley."
+msgid "A cellular automaton that starts with a random field, and organizes it into stripes and spirals. Written by David Bagley."
 msgstr ""
 
 #: hacks/config/demon.xml.h:3
@@ -2987,9 +3623,7 @@ msgid "Discrete"
 msgstr ""
 
 #: hacks/config/discrete.xml.h:5
-msgid ""
-"More ``discrete map'' systems, including new variants of Hopalong and Julia, "
-"and a few others. Written by Tim Auckland."
+msgid "More ``discrete map'' systems, including new variants of Hopalong and Julia, and a few others. Written by Tim Auckland."
 msgstr ""
 
 #: hacks/config/distort.xml.h:1
@@ -3025,16 +3659,17 @@ msgid "Swamp Thing"
 msgstr ""
 
 #: hacks/config/distort.xml.h:15
-msgid ""
-"This hack grabs an image of the screen, and then lets a transparent lens "
-"wander around the screen, magnifying whatever is underneath. Written by "
-"Jonas Munsin."
+msgid "This hack grabs an image of the screen, and then lets a transparent lens wander around the screen, magnifying whatever is underneath. Written by Jonas Munsin."
 msgstr ""
 
-#: hacks/config/distort.xml.h:16 hacks/config/moire.xml.h:12
-#: hacks/config/rd-bomb.xml.h:21 hacks/config/ripples.xml.h:15
-#: hacks/config/rotzoomer.xml.h:10 hacks/config/swirl.xml.h:10
-#: hacks/config/twang.xml.h:15 hacks/config/xflame.xml.h:7
+#: hacks/config/distort.xml.h:16
+#: hacks/config/moire.xml.h:12
+#: hacks/config/rd-bomb.xml.h:21
+#: hacks/config/ripples.xml.h:15
+#: hacks/config/rotzoomer.xml.h:10
+#: hacks/config/swirl.xml.h:10
+#: hacks/config/twang.xml.h:15
+#: hacks/config/xflame.xml.h:7
 msgid "Use Shared Memory"
 msgstr ""
 
@@ -3055,10 +3690,7 @@ msgid "High Dimensional Sphere"
 msgstr ""
 
 #: hacks/config/drift.xml.h:6
-msgid ""
-"How could one possibly describe this except as ``drifting recursive fractal "
-"cosmic flames?'' Another fine hack from the Scott Draves collection of fine "
-"hacks."
+msgid "How could one possibly describe this except as ``drifting recursive fractal cosmic flames?'' Another fine hack from the Scott Draves collection of fine hacks."
 msgstr ""
 
 #: hacks/config/drift.xml.h:7
@@ -3070,14 +3702,7 @@ msgid "ElectricSheep"
 msgstr ""
 
 #: hacks/config/electricsheep.xml.h:2
-msgid ""
-"ElectricSheep is an xscreensaver module that displays mpeg video of an "
-"animated fractal flame. In the background, it contributes render cycles to "
-"the next animation. Periodically it uploades completed frames to the server, "
-"where they are compressed for distribution to all clients. This program is "
-"recommended only if you have a high bandwidth, always-on connection to the "
-"Internet. By Scott Draves. You can find it at &lt;http://www.electricsheep."
-"org/&gt;."
+msgid "ElectricSheep is an xscreensaver module that displays mpeg video of an animated fractal flame. In the background, it contributes render cycles to the next animation. Periodically it uploades completed frames to the server, where they are compressed for distribution to all clients. This program is recommended only if you have a high bandwidth, always-on connection to the Internet. By Scott Draves. You can find it at &lt;http://www.electricsheep.org/&gt;."
 msgstr ""
 
 #: hacks/config/electricsheep.xml.h:4
@@ -3105,9 +3730,7 @@ msgid "URL"
 msgstr ""
 
 #: hacks/config/endgame.xml.h:1
-msgid ""
-"Black slips out of three mating nets, but the fourth one holds him tight! A "
-"brilliant composition! Written by Blair Tennessy."
+msgid "Black slips out of three mating nets, but the fourth one holds him tight! A brilliant composition! Written by Blair Tennessy."
 msgstr ""
 
 #: hacks/config/endgame.xml.h:2
@@ -3135,9 +3758,7 @@ msgid "Dodge Viper (10 cylinders, V)"
 msgstr ""
 
 #: hacks/config/engine.xml.h:6
-msgid ""
-"Draws a simple model of an engine that floats around the screen. Written by "
-"Ben Buxton and Ed Beroset."
+msgid "Draws a simple model of an engine that floats around the screen. Written by Ben Buxton and Ed Beroset."
 msgstr ""
 
 #: hacks/config/engine.xml.h:7
@@ -3181,11 +3802,7 @@ msgid "Harmonics"
 msgstr ""
 
 #: hacks/config/epicycle.xml.h:12
-msgid ""
-"This program draws the path traced out by a point on the edge of a circle. "
-"That circle rotates around a point on the rim of another circle, and so on, "
-"several times. These were the basis for the pre-heliocentric model of "
-"planetary motion. Written by James Youngman."
+msgid "This program draws the path traced out by a point on the edge of a circle. That circle rotates around a point on the rim of another circle, and so on, several times. These were the basis for the pre-heliocentric model of planetary motion. Written by James Youngman."
 msgstr ""
 
 #: hacks/config/eruption.xml.h:1
@@ -3200,8 +3817,10 @@ msgstr ""
 msgid "Eruption"
 msgstr ""
 
-#: hacks/config/eruption.xml.h:7 hacks/config/fluidballs.xml.h:9
-#: hacks/config/qix.xml.h:9 hacks/config/speedmine.xml.h:4
+#: hacks/config/eruption.xml.h:7
+#: hacks/config/fluidballs.xml.h:9
+#: hacks/config/qix.xml.h:9
+#: hacks/config/speedmine.xml.h:4
 msgid "Gravity"
 msgstr ""
 
@@ -3237,7 +3856,8 @@ msgstr ""
 msgid "Euler2d"
 msgstr ""
 
-#: hacks/config/euler2d.xml.h:10 hacks/config/whirlwindwarp.xml.h:5
+#: hacks/config/euler2d.xml.h:10
+#: hacks/config/whirlwindwarp.xml.h:5
 msgid "Particles"
 msgstr ""
 
@@ -3246,16 +3866,11 @@ msgid "Power"
 msgstr ""
 
 #: hacks/config/euler2d.xml.h:13
-msgid ""
-"Simulates two dimensional Incompressible Inviscid Fluid Flow. Written by "
-"Stephen Montgomery-Smith."
+msgid "Simulates two dimensional Incompressible Inviscid Fluid Flow. Written by Stephen Montgomery-Smith."
 msgstr ""
 
 #: hacks/config/extrusion.xml.h:1
-msgid ""
-"Draws various rotating extruded shapes that twist around, lengthen, and turn "
-"inside out. Created by David Konerding from the samples that come with the "
-"GL Extrusion library by Linas Vepstas."
+msgid "Draws various rotating extruded shapes that twist around, lengthen, and turn inside out. Created by David Konerding from the samples that come with the GL Extrusion library by Linas Vepstas."
 msgstr ""
 
 #: hacks/config/extrusion.xml.h:2
@@ -3278,7 +3893,8 @@ msgstr ""
 msgid "Join Offset"
 msgstr ""
 
-#: hacks/config/extrusion.xml.h:8 hacks/config/polytopes.xml.h:16
+#: hacks/config/extrusion.xml.h:8
+#: hacks/config/polytopes.xml.h:16
 msgid "Random Object"
 msgstr ""
 
@@ -3298,19 +3914,19 @@ msgstr ""
 msgid "Twistoid"
 msgstr ""
 
-#: hacks/config/extrusion.xml.h:17 hacks/config/glplanet.xml.h:12
+#: hacks/config/extrusion.xml.h:17
+#: hacks/config/glplanet.xml.h:12
 #: hacks/config/pulsar.xml.h:19
 msgid "Use Flat Coloring"
 msgstr ""
 
-#: hacks/config/extrusion.xml.h:18 hacks/config/glplanet.xml.h:13
+#: hacks/config/extrusion.xml.h:18
+#: hacks/config/glplanet.xml.h:13
 msgid "Use Lighting"
 msgstr ""
 
 #: hacks/config/fadeplot.xml.h:2
-msgid ""
-"Draws what looks like a waving ribbon following a sinusoidal path. Written "
-"by Bas van Gaalen and Charles Vidal."
+msgid "Draws what looks like a waving ribbon following a sinusoidal path. Written by Bas van Gaalen and Charles Vidal."
 msgstr ""
 
 #: hacks/config/fadeplot.xml.h:3
@@ -3338,12 +3954,7 @@ msgid "10 times"
 msgstr ""
 
 #: hacks/config/fireflies.xml.h:2
-msgid ""
-"A bunch of fireflies chase a few baits around the screen, leaving colorful "
-"tails which get blown around by the wind. Written by Matt Perry. This "
-"program is not included with the XScreenSaver package, but if you don't have "
-"it already, you can find it at &lt;http://somewhere.fscked.org/fireflies/"
-"&gt;."
+msgid "A bunch of fireflies chase a few baits around the screen, leaving colorful tails which get blown around by the wind. Written by Matt Perry. This program is not included with the XScreenSaver package, but if you don't have it already, you can find it at &lt;http://somewhere.fscked.org/fireflies/&gt;."
 msgstr ""
 
 #: hacks/config/fireflies.xml.h:3
@@ -3402,7 +4013,8 @@ msgstr ""
 msgid "Half"
 msgstr ""
 
-#: hacks/config/fireflies.xml.h:18 hacks/config/fluidballs.xml.h:10
+#: hacks/config/fireflies.xml.h:18
+#: hacks/config/fluidballs.xml.h:10
 msgid "Hurricane"
 msgstr ""
 
@@ -3462,7 +4074,8 @@ msgstr ""
 msgid "Split a swarm"
 msgstr ""
 
-#: hacks/config/fireflies.xml.h:36 hacks/config/fluidballs.xml.h:21
+#: hacks/config/fireflies.xml.h:36
+#: hacks/config/fluidballs.xml.h:21
 #: hacks/config/glforestfire.xml.h:16
 msgid "Still"
 msgstr ""
@@ -3491,7 +4104,8 @@ msgstr ""
 msgid "Wide"
 msgstr ""
 
-#: hacks/config/fireflies.xml.h:45 hacks/config/fluidballs.xml.h:23
+#: hacks/config/fireflies.xml.h:45
+#: hacks/config/fluidballs.xml.h:23
 msgid "Wind"
 msgstr ""
 
@@ -3499,7 +4113,8 @@ msgstr ""
 msgid "Wind picks up"
 msgstr ""
 
-#: hacks/config/fireworkx.xml.h:1 hacks/config/lavalite.xml.h:3
+#: hacks/config/fireworkx.xml.h:1
+#: hacks/config/lavalite.xml.h:3
 msgid "Activity"
 msgstr ""
 
@@ -3536,31 +4151,31 @@ msgid "Text for Flag"
 msgstr ""
 
 #: hacks/config/flag.xml.h:11
-msgid ""
-"This draws a waving colored flag, that undulates its way around the screen. "
-"The trick is the flag can contain arbitrary text and images. By default, it "
-"displays either the current system name and OS type, or a picture of "
-"``Bob,'' but you can replace the text or the image with a command-line "
-"option. Written by Charles Vidal and Jamie Zawinski."
+msgid "This draws a waving colored flag, that undulates its way around the screen. The trick is the flag can contain arbitrary text and images. By default, it displays either the current system name and OS type, or a picture of ``Bob,'' but you can replace the text or the image with a command-line option. Written by Charles Vidal and Jamie Zawinski."
 msgstr ""
 
-#: hacks/config/flame.xml.h:1 hacks/config/jigsaw.xml.h:1
-#: hacks/config/maze.xml.h:1 hacks/config/rotzoomer.xml.h:1
+#: hacks/config/flame.xml.h:1
+#: hacks/config/jigsaw.xml.h:1
+#: hacks/config/maze.xml.h:1
+#: hacks/config/rotzoomer.xml.h:1
 #: hacks/config/wander.xml.h:1
 msgid "0 Seconds"
-msgstr ""
+msgstr "0 Secondi"
 
-#: hacks/config/flame.xml.h:2 hacks/config/gleidescope.xml.h:1
-#: hacks/config/glslideshow.xml.h:2 hacks/config/maze.xml.h:2
+#: hacks/config/flame.xml.h:2
+#: hacks/config/gleidescope.xml.h:1
+#: hacks/config/glslideshow.xml.h:2
+#: hacks/config/maze.xml.h:2
 #: hacks/config/mirrorblob.xml.h:1
 msgid "10 Seconds"
-msgstr ""
+msgstr "10 Secondi"
 
 #: hacks/config/flame.xml.h:3
 msgid "Another iterative fractal generator. Written by Scott Draves."
 msgstr ""
 
-#: hacks/config/flame.xml.h:4 hacks/config/jigglypuff.xml.h:4
+#: hacks/config/flame.xml.h:4
+#: hacks/config/jigglypuff.xml.h:4
 msgid "Complexity"
 msgstr ""
 
@@ -3577,9 +4192,7 @@ msgid "FlipFlop"
 msgstr ""
 
 #: hacks/config/flipflop.xml.h:3
-msgid ""
-"Flipflop draws a grid of 3D colored tiles that change positions with each "
-"other. Written by Kevin Ogden."
+msgid "Flipflop draws a grid of 3D colored tiles that change positions with each other. Written by Kevin Ogden."
 msgstr ""
 
 #: hacks/config/flipflop.xml.h:6
@@ -3591,9 +4204,7 @@ msgid "Flipscreen3d"
 msgstr ""
 
 #: hacks/config/flipscreen3d.xml.h:3
-msgid ""
-"Grabs an image of the desktop, turns it into a GL texture map, and spins it "
-"around and deforms it in various ways. Written by Ben Buxton."
+msgid "Grabs an image of the desktop, turns it into a GL texture map, and spins it around and deforms it in various ways. Written by Ben Buxton."
 msgstr ""
 
 #: hacks/config/flow.xml.h:3
@@ -3605,9 +4216,7 @@ msgid "Length of trails"
 msgstr ""
 
 #: hacks/config/flow.xml.h:13
-msgid ""
-"Strange attractors formed of flows in a 3D differential equation phase "
-"space. Written by Tim Auckland."
+msgid "Strange attractors formed of flows in a 3D differential equation phase space. Written by Tim Auckland."
 msgstr ""
 
 #: hacks/config/flow.xml.h:16
@@ -3650,7 +4259,8 @@ msgstr ""
 msgid "FluidBalls"
 msgstr ""
 
-#: hacks/config/fluidballs.xml.h:8 hacks/config/twang.xml.h:4
+#: hacks/config/fluidballs.xml.h:8
+#: hacks/config/twang.xml.h:4
 msgid "Friction"
 msgstr ""
 
@@ -3659,11 +4269,7 @@ msgid "Jupiter"
 msgstr ""
 
 #: hacks/config/fluidballs.xml.h:14
-msgid ""
-"Models the physics of bouncing balls, or of particles in a gas or fluid, "
-"depending on the settings. If \"Shake Box\" is selected, then every now and "
-"then, the box will be rotated, changing which direction is down (in order to "
-"keep the settled balls in motion.) By Peter Birtles and Jamie Zawinski."
+msgid "Models the physics of bouncing balls, or of particles in a gas or fluid, depending on the settings. If \"Shake Box\" is selected, then every now and then, the box will be rotated, changing which direction is down (in order to keep the settled balls in motion.) By Peter Birtles and Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/fluidballs.xml.h:15
@@ -3706,18 +4312,16 @@ msgstr ""
 msgid "RGB"
 msgstr ""
 
-#: hacks/config/flurry.xml.h:8 hacks/config/fontglide.xml.h:12
-#: hacks/config/jigglypuff.xml.h:13 hacks/config/sballs.xml.h:10
+#: hacks/config/flurry.xml.h:8
+#: hacks/config/fontglide.xml.h:12
+#: hacks/config/jigglypuff.xml.h:13
+#: hacks/config/sballs.xml.h:10
 #: hacks/config/whirlygig.xml.h:12
 msgid "Random"
 msgstr ""
 
 #: hacks/config/flurry.xml.h:10
-msgid ""
-"This port of the OSX screensaver of the same name draws a colourful star"
-"(fish)like flurry of particles. xscreensaver port by Tobias Sargeant &lt;"
-"tobias.sargeant@bigpond.com&gt; Original Mac version by Calum Robinson &lt;"
-"calumr@mac.com&gt; http://homepage.mac.com/calumr"
+msgid "This port of the OSX screensaver of the same name draws a colourful star(fish)like flurry of particles. xscreensaver port by Tobias Sargeant &lt;tobias.sargeant@bigpond.com&gt; Original Mac version by Calum Robinson &lt;calumr@mac.com&gt; http://homepage.mac.com/calumr"
 msgstr ""
 
 #: hacks/config/flurry.xml.h:11
@@ -3725,10 +4329,7 @@ msgid "Water"
 msgstr ""
 
 #: hacks/config/flyingtoasters.xml.h:1
-msgid ""
-"A fleet of 3d space-age jet-powered flying toasters (and toast!) Inspired by "
-"the ancient Berkeley Systems After Dark flying toasters. By Jamie Zawinski "
-"and Baconmonkey."
+msgid "A fleet of 3d space-age jet-powered flying toasters (and toast!) Inspired by the ancient Berkeley Systems After Dark flying toasters. By Jamie Zawinski and Baconmonkey."
 msgstr ""
 
 #: hacks/config/flyingtoasters.xml.h:2
@@ -3743,9 +4344,12 @@ msgstr ""
 msgid "Flying Toasters"
 msgstr ""
 
-#: hacks/config/flyingtoasters.xml.h:7 hacks/config/glslideshow.xml.h:17
-#: hacks/config/jigglypuff.xml.h:12 hacks/config/juggle.xml.h:5
-#: hacks/config/mirrorblob.xml.h:16 hacks/config/pipes.xml.h:10
+#: hacks/config/flyingtoasters.xml.h:7
+#: hacks/config/glslideshow.xml.h:17
+#: hacks/config/jigglypuff.xml.h:12
+#: hacks/config/juggle.xml.h:5
+#: hacks/config/mirrorblob.xml.h:16
+#: hacks/config/pipes.xml.h:10
 msgid "None"
 msgstr ""
 
@@ -3786,10 +4390,7 @@ msgid "Pages of text"
 msgstr ""
 
 #: hacks/config/fontglide.xml.h:11
-msgid ""
-"Puts text on the screen using large characters that glide in from the edges, "
-"assemble, then disperse. Alternately, it can simply scroll whole sentences "
-"from right to left. By Jamie Zawinski."
+msgid "Puts text on the screen using large characters that glide in from the edges, assemble, then disperse. Alternately, it can simply scroll whole sentences from right to left. By Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/fontglide.xml.h:14
@@ -3800,14 +4401,13 @@ msgstr ""
 msgid "Vapor Trails"
 msgstr ""
 
-#: hacks/config/forest.xml.h:2 hacks/config/glforestfire.xml.h:6
+#: hacks/config/forest.xml.h:2
+#: hacks/config/glforestfire.xml.h:6
 msgid "Forest"
 msgstr ""
 
 #: hacks/config/forest.xml.h:7
-msgid ""
-"This draws fractal trees. Written by Peter Baumung. Everybody loves "
-"fractals, right?"
+msgid "This draws fractal trees. Written by Peter Baumung. Everybody loves fractals, right?"
 msgstr ""
 
 #: hacks/config/fuzzyflakes.xml.h:2
@@ -3815,16 +4415,15 @@ msgid "Border Thickness"
 msgstr ""
 
 #: hacks/config/fuzzyflakes.xml.h:6
-msgid ""
-"Falling colored snowflake/flower shapes. Inspired by the credits of the "
-"anime \"Azumanga Daioh\". Written by Barry Dmytro."
+msgid "Falling colored snowflake/flower shapes. Inspired by the credits of the anime \"Azumanga Daioh\". Written by Barry Dmytro."
 msgstr ""
 
 #: hacks/config/fuzzyflakes.xml.h:9
 msgid "FuzzyFlakes"
 msgstr ""
 
-#: hacks/config/fuzzyflakes.xml.h:11 hacks/config/xspirograph.xml.h:4
+#: hacks/config/fuzzyflakes.xml.h:11
+#: hacks/config/xspirograph.xml.h:4
 msgid "Layers"
 msgstr ""
 
@@ -3841,10 +4440,7 @@ msgid "Rotate Viewpoint"
 msgstr ""
 
 #: hacks/config/galaxy.xml.h:13
-msgid ""
-"This draws spinning galaxies, which then collide and scatter their stars to "
-"the, uh, four winds or something. Originally an Amiga program by Uli "
-"Siegmund."
+msgid "This draws spinning galaxies, which then collide and scatter their stars to the, uh, four winds or something. Originally an Amiga program by Uli Siegmund."
 msgstr ""
 
 #: hacks/config/gears.xml.h:3
@@ -3855,15 +4451,13 @@ msgstr ""
 msgid "Planetary Gear System"
 msgstr ""
 
-#: hacks/config/gears.xml.h:5 hacks/config/goop.xml.h:9
+#: hacks/config/gears.xml.h:5
+#: hacks/config/goop.xml.h:9
 msgid "Rotational Speed"
 msgstr ""
 
 #: hacks/config/gears.xml.h:9
-msgid ""
-"This draws sets of turning, interlocking gears, rotating in three "
-"dimensions. Another GL hack, by Danny Sung, Brian Paul, Ed Mackey, and Jamie "
-"Zawinski."
+msgid "This draws sets of turning, interlocking gears, rotating in three dimensions. Another GL hack, by Danny Sung, Brian Paul, Ed Mackey, and Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/gears.xml.h:10
@@ -3875,9 +4469,7 @@ msgid "Checkerboard"
 msgstr ""
 
 #: hacks/config/gflux.xml.h:5
-msgid ""
-"Draws a rippling waves on a rotating wireframe grid, using GL. Written by "
-"Josiah Pease."
+msgid "Draws a rippling waves on a rotating wireframe grid, using GL. Written by Josiah Pease."
 msgstr ""
 
 #: hacks/config/gflux.xml.h:7
@@ -3897,11 +4489,13 @@ msgstr ""
 msgid "Screen Image"
 msgstr "Salvaschermo"
 
-#: hacks/config/gflux.xml.h:14 hacks/config/interference.xml.h:21
+#: hacks/config/gflux.xml.h:14
+#: hacks/config/interference.xml.h:21
 msgid "Wave Speed"
 msgstr ""
 
-#: hacks/config/gflux.xml.h:15 hacks/config/glmatrix.xml.h:20
+#: hacks/config/gflux.xml.h:15
+#: hacks/config/glmatrix.xml.h:20
 msgid "Waves"
 msgstr ""
 
@@ -3918,25 +4512,17 @@ msgid "GLBlur"
 msgstr ""
 
 #: hacks/config/glblur.xml.h:18
-msgid ""
-"This program draws a box and a few line segments, and generates a radial "
-"blur outward from it. This creates flowing field effects. This is done by "
-"rendering the scene into a small texture, then repeatedly rendering "
-"increasingly-enlarged and increasingly-transparent versions of that texture "
-"onto the frame buffer. As such, it's quite graphics intensive: don't bother "
-"trying to run this if you don't have hardware-accelerated OpenGL texture "
-"support. It will hurt your machine bad."
+msgid "This program draws a box and a few line segments, and generates a radial blur outward from it. This creates flowing field effects. This is done by rendering the scene into a small texture, then repeatedly rendering increasingly-enlarged and increasingly-transparent versions of that texture onto the frame buffer. As such, it's quite graphics intensive: don't bother trying to run this if you don't have hardware-accelerated OpenGL texture support. It will hurt your machine bad."
 msgstr ""
 
-#: hacks/config/gleidescope.xml.h:2 hacks/config/glslideshow.xml.h:6
+#: hacks/config/gleidescope.xml.h:2
+#: hacks/config/glslideshow.xml.h:6
 #: hacks/config/mirrorblob.xml.h:3
 msgid "5 Minutes"
-msgstr ""
+msgstr "5 Minuti"
 
 #: hacks/config/gleidescope.xml.h:3
-msgid ""
-"An OpenGL kaleidescope that operates on your desktop image, or on image "
-"files loaded from disk. Written by andrew dean."
+msgid "An OpenGL kaleidescope that operates on your desktop image, or on image files loaded from disk. Written by andrew dean."
 msgstr ""
 
 #: hacks/config/gleidescope.xml.h:4
@@ -3944,8 +4530,9 @@ msgid "Gleidescope"
 msgstr ""
 
 #: hacks/config/gleidescope.xml.h:5
+#, fuzzy
 msgid "Image Duration"
-msgstr ""
+msgstr "Durata dell'immagine"
 
 #: hacks/config/gleidescope.xml.h:6
 msgid "Image file"
@@ -3959,8 +4546,10 @@ msgstr ""
 msgid "Size of tube"
 msgstr ""
 
-#: hacks/config/gleidescope.xml.h:13 hacks/config/hyperball.xml.h:16
-#: hacks/config/hypercube.xml.h:16 hacks/config/zoom.xml.h:8
+#: hacks/config/gleidescope.xml.h:13
+#: hacks/config/hyperball.xml.h:16
+#: hacks/config/hypercube.xml.h:16
+#: hacks/config/zoom.xml.h:8
 msgid "Zoom"
 msgstr ""
 
@@ -3969,14 +4558,11 @@ msgid "Desert"
 msgstr ""
 
 #: hacks/config/glforestfire.xml.h:3
-msgid ""
-"Draws an animation of sprinkling fire-like 3D triangles in a landscape "
-"filled with trees. Requires OpenGL, and a machine with fast hardware support "
-"for texture maps. Written by Eric Lassauge &lt;lassauge@users.sourceforge."
-"net&gt;."
+msgid "Draws an animation of sprinkling fire-like 3D triangles in a landscape filled with trees. Requires OpenGL, and a machine with fast hardware support for texture maps. Written by Eric Lassauge &lt;lassauge@users.sourceforge.net&gt;."
 msgstr ""
 
-#: hacks/config/glforestfire.xml.h:5 hacks/config/glmatrix.xml.h:9
+#: hacks/config/glforestfire.xml.h:5
+#: hacks/config/glmatrix.xml.h:9
 msgid "Fog"
 msgstr ""
 
@@ -4009,12 +4595,11 @@ msgid "GLKnots"
 msgstr ""
 
 #: hacks/config/glknots.xml.h:5
-msgid ""
-"Generates some twisting 3d knot patterns. Spins 'em around. Written by Jamie "
-"Zawinski."
+msgid "Generates some twisting 3d knot patterns. Spins 'em around. Written by Jamie Zawinski."
 msgstr ""
 
-#: hacks/config/glknots.xml.h:7 hacks/config/lavalite.xml.h:17
+#: hacks/config/glknots.xml.h:7
+#: hacks/config/lavalite.xml.h:17
 #: hacks/config/spheremonics.xml.h:9
 msgid "Resolution"
 msgstr ""
@@ -4023,12 +4608,14 @@ msgstr ""
 msgid "Segmented"
 msgstr ""
 
-#: hacks/config/glknots.xml.h:18 hacks/config/lavalite.xml.h:28
+#: hacks/config/glknots.xml.h:18
+#: hacks/config/lavalite.xml.h:28
 #: hacks/config/xmountains.xml.h:25
 msgid "Smooth"
 msgstr ""
 
-#: hacks/config/glmatrix.xml.h:2 hacks/config/xmatrix.xml.h:1
+#: hacks/config/glmatrix.xml.h:2
+#: hacks/config/xmatrix.xml.h:1
 msgid "Binary Encoding"
 msgstr ""
 
@@ -4045,18 +4632,15 @@ msgid "Draw Solid Boxes"
 msgstr ""
 
 #: hacks/config/glmatrix.xml.h:7
-msgid ""
-"Draws 3D dropping characters similar to what is seen in the title sequence "
-"of \"The Matrix\". See also \"xmatrix\" for a 2D rendering of the similar "
-"effect that appeared on the computer monitors actually *in* the movie. "
-"Written by Jamie Zawinski."
+msgid "Draws 3D dropping characters similar to what is seen in the title sequence of \"The Matrix\". See also \"xmatrix\" for a 2D rendering of the similar effect that appeared on the computer monitors actually *in* the movie. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/glmatrix.xml.h:10
 msgid "GLMatrix"
 msgstr ""
 
-#: hacks/config/glmatrix.xml.h:11 hacks/config/xmatrix.xml.h:7
+#: hacks/config/glmatrix.xml.h:11
+#: hacks/config/xmatrix.xml.h:7
 msgid "Genetic Encoding"
 msgstr ""
 
@@ -4068,11 +4652,13 @@ msgstr ""
 msgid "Glyph Speed"
 msgstr ""
 
-#: hacks/config/glmatrix.xml.h:14 hacks/config/xmatrix.xml.h:8
+#: hacks/config/glmatrix.xml.h:14
+#: hacks/config/xmatrix.xml.h:8
 msgid "Hexadecimal Encoding"
 msgstr ""
 
-#: hacks/config/glmatrix.xml.h:15 hacks/config/xmatrix.xml.h:11
+#: hacks/config/glmatrix.xml.h:15
+#: hacks/config/xmatrix.xml.h:11
 msgid "Matrix Encoding"
 msgstr ""
 
@@ -4081,11 +4667,7 @@ msgid "Panning"
 msgstr ""
 
 #: hacks/config/glplanet.xml.h:1
-msgid ""
-"Draws a planet bouncing around in space. Written by David Konerding. The "
-"built-in image is a map of the earth (extracted from `xearth'), but you can "
-"wrap any texture around the sphere, e.g., the planetary textures that come "
-"with `ssystem'."
+msgid "Draws a planet bouncing around in space. Written by David Konerding. The built-in image is a map of the earth (extracted from `xearth'), but you can wrap any texture around the sphere, e.g., the planetary textures that come with `ssystem'."
 msgstr ""
 
 #: hacks/config/glplanet.xml.h:3
@@ -4100,16 +4682,20 @@ msgstr ""
 msgid "Roll"
 msgstr ""
 
-#: hacks/config/glslideshow.xml.h:4 hacks/config/rd-bomb.xml.h:5
-#: hacks/config/substrate.xml.h:4 hacks/config/xplanet.xml.h:4
+#: hacks/config/glslideshow.xml.h:4
+#: hacks/config/rd-bomb.xml.h:5
+#: hacks/config/substrate.xml.h:4
+#: hacks/config/xplanet.xml.h:4
 #, no-c-format
 msgid "100%"
 msgstr ""
 
-#: hacks/config/glslideshow.xml.h:5 hacks/config/glsnake.xml.h:2
-#: hacks/config/mirrorblob.xml.h:2 hacks/config/penrose.xml.h:2
+#: hacks/config/glslideshow.xml.h:5
+#: hacks/config/glsnake.xml.h:2
+#: hacks/config/mirrorblob.xml.h:2
+#: hacks/config/penrose.xml.h:2
 msgid "30 Seconds"
-msgstr ""
+msgstr "30 Secondi"
 
 #: hacks/config/glslideshow.xml.h:8
 #, no-c-format
@@ -4120,9 +4706,11 @@ msgstr ""
 msgid "Always show at least this much of the image:"
 msgstr ""
 
-#: hacks/config/glslideshow.xml.h:10 hacks/config/mirrorblob.xml.h:6
+#: hacks/config/glslideshow.xml.h:10
+#: hacks/config/mirrorblob.xml.h:6
+#, fuzzy
 msgid "Crossfade Duration:"
-msgstr ""
+msgstr "Durata della dissolvenza incrociata"
 
 #: hacks/config/glslideshow.xml.h:11
 msgid "Frame Rate:"
@@ -4137,22 +4725,15 @@ msgid "Letterbox"
 msgstr ""
 
 #: hacks/config/glslideshow.xml.h:15
-msgid ""
-"Loads a random sequence of images and smoothly scans and zooms around in "
-"each, fading from pan to pan. To tell it where to find the images to "
-"display, go to the \"Advanced\" tab on the Screensaver Preferences window. "
-"Select \"Choose Random Images\", and enter your image directory in the text "
-"field right below that. (Note: not the the \"Advanced\" button at the bottom "
-"of this window: the tab at the top of the *other* window.) This program "
-"requires a good video card capable of supporting large textures. Written by "
-"Jamie Zawinski and Mike Oliphant."
+msgid "Loads a random sequence of images and smoothly scans and zooms around in each, fading from pan to pan. To tell it where to find the images to display, go to the \"Advanced\" tab on the Screensaver Preferences window. Select \"Choose Random Images\", and enter your image directory in the text field right below that. (Note: not the the \"Advanced\" button at the bottom of this window: the tab at the top of the *other* window.) This program requires a good video card capable of supporting large textures. Written by Jamie Zawinski and Mike Oliphant."
 msgstr ""
 
 #: hacks/config/glslideshow.xml.h:18
 msgid "Pan/Zoom Duration:"
 msgstr ""
 
-#: hacks/config/glsnake.xml.h:1 hacks/config/lavalite.xml.h:1
+#: hacks/config/glsnake.xml.h:1
+#: hacks/config/lavalite.xml.h:1
 msgid "1"
 msgstr ""
 
@@ -4161,9 +4742,7 @@ msgid "Angular Velocity"
 msgstr ""
 
 #: hacks/config/glsnake.xml.h:4
-msgid ""
-"Draws a simulation of the Rubik's Snake puzzle. Written by Jamie Wilkinson, "
-"Andrew Bennetts, and Peter Aylett."
+msgid "Draws a simulation of the Rubik's Snake puzzle. Written by Jamie Wilkinson, Andrew Bennetts, and Peter Aylett."
 msgstr ""
 
 #: hacks/config/glsnake.xml.h:7
@@ -4195,16 +4774,15 @@ msgid "Z Angular Velocity"
 msgstr ""
 
 #: hacks/config/gltext.xml.h:1
-msgid ""
-"Displays a few lines of text spinning around in a solid 3D font. Written by "
-"Jamie Zawinski."
+msgid "Displays a few lines of text spinning around in a solid 3D font. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/gltext.xml.h:4
 msgid "GLText"
 msgstr ""
 
-#: hacks/config/gltext.xml.h:16 hacks/config/noseguy.xml.h:5
+#: hacks/config/gltext.xml.h:16
+#: hacks/config/noseguy.xml.h:5
 msgid "Text"
 msgstr ""
 
@@ -4213,9 +4791,7 @@ msgid "Goban"
 msgstr ""
 
 #: hacks/config/goban.xml.h:2
-msgid ""
-"Replays historical games of go (aka wei-chi and baduk) on the screen. By "
-"Scott Draves. You can find it at &lt;http://www.draves.org/goban/&gt;."
+msgid "Replays historical games of go (aka wei-chi and baduk) on the screen. By Scott Draves. You can find it at &lt;http://www.draves.org/goban/&gt;."
 msgstr ""
 
 #: hacks/config/goop.xml.h:1
@@ -4247,14 +4823,7 @@ msgid "Subtractive Colors (transmitted light)"
 msgstr ""
 
 #: hacks/config/goop.xml.h:14
-msgid ""
-"This draws set of animating, transparent, amoeba-like blobs. The blobs "
-"change shape as they wander around the screen, and they are translucent, so "
-"you can see the lower blobs through the higher ones, and when one passes "
-"over another, their colors merge. I got the idea for this from a cool mouse "
-"pad I have, which achieves the same kind of effect in real life by having "
-"several layers plastic with colored oil between them. Written by Jamie "
-"Zawinski."
+msgid "This draws set of animating, transparent, amoeba-like blobs. The blobs change shape as they wander around the screen, and they are translucent, so you can see the lower blobs through the higher ones, and when one passes over another, their colors merge. I got the idea for this from a cool mouse pad I have, which achieves the same kind of effect in real life by having several layers plastic with colored oil between them. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/goop.xml.h:15
@@ -4278,9 +4847,7 @@ msgid "Orbital Decay"
 msgstr ""
 
 #: hacks/config/grav.xml.h:10
-msgid ""
-"This program draws a simple orbital simulation. If you turn on trails, it "
-"looks kind of like a cloud-chamber photograph. Written by Greg Bowering."
+msgid "This program draws a simple orbital simulation. If you turn on trails, it looks kind of like a cloud-chamber photograph. Written by Greg Bowering."
 msgstr ""
 
 #: hacks/config/greynetic.xml.h:2
@@ -4288,8 +4855,7 @@ msgid "Greynetic"
 msgstr ""
 
 #: hacks/config/greynetic.xml.h:5
-msgid ""
-"This draws random colored and stippled rectangles. Written by Jamie Zawinski."
+msgid "This draws random colored and stippled rectangles. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/halftone.xml.h:1
@@ -4305,11 +4871,7 @@ msgid "Dot size"
 msgstr ""
 
 #: hacks/config/halftone.xml.h:4
-msgid ""
-"Draws the gravity force in each point on the screen seen through a halftone "
-"dot pattern. The gravity force is calculated from a set of moving mass "
-"points. View it from a distance for best effect. Written by Peter Jaric &lt;"
-"peter@jaric.org&gt;."
+msgid "Draws the gravity force in each point on the screen seen through a halftone dot pattern. The gravity force is calculated from a set of moving mass points. View it from a distance for best effect. Written by Peter Jaric &lt;peter@jaric.org&gt;."
 msgstr ""
 
 #: hacks/config/halftone.xml.h:5
@@ -4357,10 +4919,7 @@ msgid "Seuss Mode"
 msgstr ""
 
 #: hacks/config/halo.xml.h:12
-msgid ""
-"This draws trippy psychedelic circular patterns that hurt to look at. It can "
-"also animate the control-points, but that takes a lot of CPU and bandwidth. "
-"Written by Jamie Zawinski."
+msgid "This draws trippy psychedelic circular patterns that hurt to look at. It can also animate the control-points, but that takes a lot of CPU and bandwidth. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/helix.xml.h:4
@@ -4368,9 +4927,7 @@ msgid "Helix"
 msgstr ""
 
 #: hacks/config/helix.xml.h:5
-msgid ""
-"This repeatedly generates spirally string-art-ish patterns. Written by Jamie "
-"Zawinski."
+msgid "This repeatedly generates spirally string-art-ish patterns. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/hopalong.xml.h:3
@@ -4422,9 +4979,7 @@ msgid "Sine"
 msgstr ""
 
 #: hacks/config/hopalong.xml.h:24
-msgid ""
-"This draws lacy fractal patterns, based on iteration in the imaginary plane, "
-"from a 1986 Scientific American article. Mostly written by Patrick Naughton."
+msgid "This draws lacy fractal patterns, based on iteration in the imaginary plane, from a 1986 Scientific American article. Mostly written by Patrick Naughton."
 msgstr ""
 
 #: hacks/config/hyperball.xml.h:4
@@ -4432,35 +4987,36 @@ msgid "Hyperball"
 msgstr ""
 
 #: hacks/config/hyperball.xml.h:5
-msgid ""
-"Hyperball is to hypercube as dodecahedron is to cube: this displays a 2D "
-"projection of the sequence of 3D objects which are the projections of the 4D "
-"analog to the dodecahedron. Technically, it is a \"120 cell polytope.\" "
-"Written by Joe Keane. See also the \"polytopes\" hack for a more general "
-"version of this using OpenGL."
+msgid "Hyperball is to hypercube as dodecahedron is to cube: this displays a 2D projection of the sequence of 3D objects which are the projections of the 4D analog to the dodecahedron. Technically, it is a \"120 cell polytope.\" Written by Joe Keane. See also the \"polytopes\" hack for a more general version of this using OpenGL."
 msgstr ""
 
-#: hacks/config/hyperball.xml.h:10 hacks/config/hypercube.xml.h:10
+#: hacks/config/hyperball.xml.h:10
+#: hacks/config/hypercube.xml.h:10
 msgid "XW Rotation"
 msgstr ""
 
-#: hacks/config/hyperball.xml.h:11 hacks/config/hypercube.xml.h:11
+#: hacks/config/hyperball.xml.h:11
+#: hacks/config/hypercube.xml.h:11
 msgid "XY Rotation"
 msgstr ""
 
-#: hacks/config/hyperball.xml.h:12 hacks/config/hypercube.xml.h:12
+#: hacks/config/hyperball.xml.h:12
+#: hacks/config/hypercube.xml.h:12
 msgid "XZ Rotation"
 msgstr ""
 
-#: hacks/config/hyperball.xml.h:13 hacks/config/hypercube.xml.h:13
+#: hacks/config/hyperball.xml.h:13
+#: hacks/config/hypercube.xml.h:13
 msgid "YW Rotation"
 msgstr ""
 
-#: hacks/config/hyperball.xml.h:14 hacks/config/hypercube.xml.h:14
+#: hacks/config/hyperball.xml.h:14
+#: hacks/config/hypercube.xml.h:14
 msgid "YZ Rotation"
 msgstr ""
 
-#: hacks/config/hyperball.xml.h:15 hacks/config/hypercube.xml.h:15
+#: hacks/config/hyperball.xml.h:15
+#: hacks/config/hypercube.xml.h:15
 msgid "ZW Rotation"
 msgstr ""
 
@@ -4469,23 +5025,16 @@ msgid "Hypercube"
 msgstr ""
 
 #: hacks/config/hypercube.xml.h:9
-msgid ""
-"This displays 2D projections of the sequence of 3D objects which are the "
-"projections of the 4D analog to the cube: as a square is composed of four "
-"lines, each touching two others; and a cube is composed of six squares, each "
-"touching four others; a hypercube is composed of eight cubes, each touching "
-"six others. To make it easier to visualize the rotation, it uses a different "
-"color for the edges of each face. Don't think about it too long, or your "
-"brain will melt. Written by Joe Keane, Fritz Mueller, and Jamie Zawinski. "
-"See also the \"polytopes\" hack for a more general version of this using "
-"OpenGL."
-msgstr ""
-
-#: hacks/config/hypertorus.xml.h:1 hacks/config/polytopes.xml.h:1
+msgid "This displays 2D projections of the sequence of 3D objects which are the projections of the 4D analog to the cube: as a square is composed of four lines, each touching two others; and a cube is composed of six squares, each touching four others; a hypercube is composed of eight cubes, each touching six others. To make it easier to visualize the rotation, it uses a different color for the edges of each face. Don't think about it too long, or your brain will melt. Written by Joe Keane, Fritz Mueller, and Jamie Zawinski. See also the \"polytopes\" hack for a more general version of this using OpenGL."
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:1
+#: hacks/config/polytopes.xml.h:1
 msgid "-4.0"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:2 hacks/config/polytopes.xml.h:5
+#: hacks/config/hypertorus.xml.h:2
+#: hacks/config/polytopes.xml.h:5
 msgid "4.0"
 msgstr ""
 
@@ -4497,23 +5046,28 @@ msgstr ""
 msgid "Color Wheel"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:5 hacks/config/polytopes.xml.h:10
+#: hacks/config/hypertorus.xml.h:5
+#: hacks/config/polytopes.xml.h:10
 msgid "Display Speed"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:7 hacks/config/polytopes.xml.h:12
+#: hacks/config/hypertorus.xml.h:7
+#: hacks/config/polytopes.xml.h:12
 msgid "Orthographic 3d"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:8 hacks/config/polytopes.xml.h:13
+#: hacks/config/hypertorus.xml.h:8
+#: hacks/config/polytopes.xml.h:13
 msgid "Orthographic 4d"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:9 hacks/config/polytopes.xml.h:14
+#: hacks/config/hypertorus.xml.h:9
+#: hacks/config/polytopes.xml.h:14
 msgid "Perspective 3d"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:10 hacks/config/polytopes.xml.h:15
+#: hacks/config/hypertorus.xml.h:10
+#: hacks/config/polytopes.xml.h:15
 msgid "Perspective 4d"
 msgstr ""
 
@@ -4525,20 +5079,19 @@ msgstr ""
 msgid "Solid Object"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:15 hacks/config/mirrorblob.xml.h:20
-#: hacks/config/polytopes.xml.h:21 hacks/config/pulsar.xml.h:16
+#: hacks/config/hypertorus.xml.h:15
+#: hacks/config/mirrorblob.xml.h:20
+#: hacks/config/polytopes.xml.h:21
+#: hacks/config/pulsar.xml.h:16
 msgid "Solid Surface"
 msgstr ""
 
 #: hacks/config/hypertorus.xml.h:16
-msgid ""
-"This program shows a rotating Clifford Torus: a torus lying on the \"surface"
-"\" of a 4D hypersphere. Written by Carsten Steger, inspired by Thomas "
-"Banchoff's book \"Beyond the Third Dimension: Geometry, Computer Graphics, "
-"and Higher Dimensions\", Scientific American Library, 1990."
+msgid "This program shows a rotating Clifford Torus: a torus lying on the \"surface\" of a 4D hypersphere. Written by Carsten Steger, inspired by Thomas Banchoff's book \"Beyond the Third Dimension: Geometry, Computer Graphics, and Higher Dimensions\", Scientific American Library, 1990."
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:17 hacks/config/polytopes.xml.h:23
+#: hacks/config/hypertorus.xml.h:17
+#: hacks/config/polytopes.xml.h:23
 msgid "Transparent Surface"
 msgstr ""
 
@@ -4546,31 +5099,38 @@ msgstr ""
 msgid "Two-Sided"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:19 hacks/config/polytopes.xml.h:24
+#: hacks/config/hypertorus.xml.h:19
+#: hacks/config/polytopes.xml.h:24
 msgid "WX Rotation Speed"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:20 hacks/config/polytopes.xml.h:25
+#: hacks/config/hypertorus.xml.h:20
+#: hacks/config/polytopes.xml.h:25
 msgid "WY Rotation Speed"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:21 hacks/config/polytopes.xml.h:26
+#: hacks/config/hypertorus.xml.h:21
+#: hacks/config/polytopes.xml.h:26
 msgid "WZ Rotation Speed"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:22 hacks/config/polytopes.xml.h:27
+#: hacks/config/hypertorus.xml.h:22
+#: hacks/config/polytopes.xml.h:27
 msgid "Wireframe Mesh"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:23 hacks/config/polytopes.xml.h:28
+#: hacks/config/hypertorus.xml.h:23
+#: hacks/config/polytopes.xml.h:28
 msgid "XY Rotation Speed"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:24 hacks/config/polytopes.xml.h:29
+#: hacks/config/hypertorus.xml.h:24
+#: hacks/config/polytopes.xml.h:29
 msgid "XZ Rotation Speed"
 msgstr ""
 
-#: hacks/config/hypertorus.xml.h:25 hacks/config/polytopes.xml.h:30
+#: hacks/config/hypertorus.xml.h:25
+#: hacks/config/polytopes.xml.h:30
 msgid "YZ Rotation Speed"
 msgstr ""
 
@@ -4579,9 +5139,7 @@ msgid "IFS"
 msgstr ""
 
 #: hacks/config/ifs.xml.h:7
-msgid ""
-"This one draws spinning, colliding iterated-function-system images. Written "
-"by Massimino Pascal."
+msgid "This one draws spinning, colliding iterated-function-system images. Written by Massimino Pascal."
 msgstr ""
 
 #: hacks/config/imsmap.xml.h:3
@@ -4601,17 +5159,7 @@ msgid "Saturation Gradients"
 msgstr ""
 
 #: hacks/config/imsmap.xml.h:14
-msgid ""
-"This generates random cloud-like patterns. It looks quite different in "
-"monochrome and color. The basic idea is to take four points on the edge of "
-"the image, and assign each a random ``elevation''. Then find the point "
-"between them, and give it a value which is the average of the other four, "
-"plus some small random offset. Then coloration is done based on elevation. "
-"The color selection is done by binding the elevation to either hue, "
-"saturation, or brightness, and assigning random values to the others. The "
-"``brightness'' mode tends to yield cloudlike patterns, and the others tend "
-"to generate images that look like heat-maps or CAT-scans. Written by Juergen "
-"Nickelsen and Jamie Zawinski."
+msgid "This generates random cloud-like patterns. It looks quite different in monochrome and color. The basic idea is to take four points on the edge of the image, and assign each a random ``elevation''. Then find the point between them, and give it a value which is the average of the other four, plus some small random offset. Then coloration is done based on elevation. The color selection is done by binding the elevation to either hue, saturation, or brightness, and assigning random values to the others. The ``brightness'' mode tends to yield cloudlike patterns, and the others tend to generate images that look like heat-maps or CAT-scans. Written by Juergen Nickelsen and Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/interference.xml.h:1
@@ -4627,10 +5175,7 @@ msgid "Anim Speed"
 msgstr ""
 
 #: hacks/config/interference.xml.h:4
-msgid ""
-"Another color-field hack, this one works by computing decaying sinusoidal "
-"waves, and allowing them to interfere with each other as their origins move. "
-"Written by Hannu Mallat."
+msgid "Another color-field hack, this one works by computing decaying sinusoidal waves, and allowing them to interfere with each other as their origins move. Written by Hannu Mallat."
 msgstr ""
 
 #: hacks/config/interference.xml.h:9
@@ -4641,8 +5186,10 @@ msgstr ""
 msgid "Interference"
 msgstr ""
 
-#: hacks/config/interference.xml.h:13 hacks/config/t3d.xml.h:9
-#: hacks/config/xearth.xml.h:11 hacks/config/zoom.xml.h:5
+#: hacks/config/interference.xml.h:13
+#: hacks/config/t3d.xml.h:9
+#: hacks/config/xearth.xml.h:11
+#: hacks/config/zoom.xml.h:5
 msgid "Magnification"
 msgstr ""
 
@@ -4663,15 +5210,7 @@ msgid "Number of Discs"
 msgstr ""
 
 #: hacks/config/intermomentary.xml.h:6
-msgid ""
-"The Intersection Momentary is a fun visualization defining the relationships "
-"between objects with Casey Reas, William Ngan, and Robert Hodgin. "
-"Commissioned for display at the Whitney Museum of American Art. A surface "
-"filled with 100 medium to small sized circles. Each circle has a different "
-"size and direction, but moves at the same slow rate. Display: A. The "
-"instantaneous intersections of the circles. B. The aggregate intersections "
-"of the circles. Ported to XScreensaver from the art project \"InterMomentary"
-"\" at http://www.complexification.net"
+msgid "The Intersection Momentary is a fun visualization defining the relationships between objects with Casey Reas, William Ngan, and Robert Hodgin. Commissioned for display at the Whitney Museum of American Art. A surface filled with 100 medium to small sized circles. Each circle has a different size and direction, but moves at the same slow rate. Display: A. The instantaneous intersections of the circles. B. The aggregate intersections of the circles. Ported to XScreensaver from the art project \"InterMomentary\" at http://www.complexification.net"
 msgstr ""
 
 #: hacks/config/jigglypuff.xml.h:2
@@ -4702,7 +5241,8 @@ msgstr ""
 msgid "Rotation speed"
 msgstr ""
 
-#: hacks/config/jigglypuff.xml.h:17 hacks/config/sphere.xml.h:7
+#: hacks/config/jigglypuff.xml.h:17
+#: hacks/config/sphere.xml.h:7
 msgid "Sphere"
 msgstr ""
 
@@ -4718,25 +5258,14 @@ msgstr ""
 msgid "Spoooooky"
 msgstr ""
 
-#: hacks/config/jigglypuff.xml.h:21 hacks/config/polyhedra.xml.h:155
+#: hacks/config/jigglypuff.xml.h:21
+#: hacks/config/polyhedra.xml.h:155
 #: hacks/config/sballs.xml.h:16
 msgid "Tetrahedron"
 msgstr ""
 
 #: hacks/config/jigglypuff.xml.h:22
-msgid ""
-"This little gem does bad things with quasi-spherical objects. The gist of it "
-"is that you have what is, structurally, a tetrahedron with tesselated faces. "
-"the vertices on these faces have forces on them in the form of one "
-"proportional to their distance from the surface of a sphere, and one which "
-"is proportional to how far they differ from some ideal distance from their "
-"neighbors. They also have inertia. The forces and distance are parameters "
-"and there are also a couple of visual parameters. The resulting effect can "
-"range from a shape that does nothing, to a frenetic polygon storm. Somewhere "
-"in between there it usually manifests as a blob that jiggles in a kind of "
-"disturbing manner. woo. It doesn't matter, however. You should just pick "
-"'random'. It overrides all the other options, except for fps, delay and "
-"complexity. By Keith Macleod"
+msgid "This little gem does bad things with quasi-spherical objects. The gist of it is that you have what is, structurally, a tetrahedron with tesselated faces. the vertices on these faces have forces on them in the form of one proportional to their distance from the surface of a sphere, and one which is proportional to how far they differ from some ideal distance from their neighbors. They also have inertia. The forces and distance are parameters and there are also a couple of visual parameters. The resulting effect can range from a shape that does nothing, to a frenetic polygon storm. Somewhere in between there it usually manifests as a blob that jiggles in a kind of disturbing manner. woo. It doesn't matter, however. You should just pick 'random'. It overrides all the other options, except for fps, delay and complexity. By Keith Macleod"
 msgstr ""
 
 #: hacks/config/jigglypuff.xml.h:23
@@ -4772,13 +5301,7 @@ msgid "Solved Duration"
 msgstr ""
 
 #: hacks/config/jigsaw.xml.h:8
-msgid ""
-"This grabs a screen image, carves it up into a jigsaw puzzle, shuffles it, "
-"and then solves the puzzle. This works especially well when you feed it an "
-"external video signal instead of letting it grab the screen image (actually, "
-"I guess this is generally true...) When it is grabbing a video image, it is "
-"sometimes pretty hard to guess what the image is going to look like once the "
-"puzzle is solved. Written by Jamie Zawinski."
+msgid "This grabs a screen image, carves it up into a jigsaw puzzle, shuffles it, and then solves the puzzle. This works especially well when you feed it an external video signal instead of letting it grab the screen image (actually, I guess this is generally true...) When it is grabbing a video image, it is sometimes pretty hard to guess what the image is going to look like once the puzzle is solved. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/juggle.xml.h:1
@@ -4825,7 +5348,8 @@ msgstr ""
 msgid "turn on/off pattern descriptions."
 msgstr ""
 
-#: hacks/config/julia.xml.h:3 hacks/config/rorschach.xml.h:4
+#: hacks/config/julia.xml.h:3
+#: hacks/config/rorschach.xml.h:4
 msgid "Iterations"
 msgstr ""
 
@@ -4834,28 +5358,19 @@ msgid "Julia"
 msgstr ""
 
 #: hacks/config/julia.xml.h:11
-msgid ""
-"This one draws spinning, animating (are you detecting a pattern here yet?) "
-"explorations of the Julia set. You've probably seen static images of this "
-"fractal form before, but it's a lot of fun to watch in motion as well. One "
-"interesting thing is that there is a small swinging dot passing in front of "
-"the image, which indicates the control point from which the rest of the "
-"image was generated. Written by Sean McCullough."
+msgid "This one draws spinning, animating (are you detecting a pattern here yet?) explorations of the Julia set. You've probably seen static images of this fractal form before, but it's a lot of fun to watch in motion as well. One interesting thing is that there is a small swinging dot passing in front of the image, which indicates the control point from which the rest of the image was generated. Written by Sean McCullough."
 msgstr ""
 
 #: hacks/config/kaleidescope.xml.h:1
-msgid ""
-"Another clone of an ancient meme, consisting largely of frenetic rotational "
-"motion of colored lines. This one is by Ron Tapia. The motion is nice, but I "
-"think it needs more solids, or perhaps just brighter colors. More variations "
-"in the rotational speed might help, too."
+msgid "Another clone of an ancient meme, consisting largely of frenetic rotational motion of colored lines. This one is by Ron Tapia. The motion is nice, but I think it needs more solids, or perhaps just brighter colors. More variations in the rotational speed might help, too."
 msgstr ""
 
 #: hacks/config/kaleidescope.xml.h:4
 msgid "Kaleidescope"
 msgstr ""
 
-#: hacks/config/kaleidescope.xml.h:6 hacks/config/qix.xml.h:18
+#: hacks/config/kaleidescope.xml.h:6
+#: hacks/config/qix.xml.h:18
 msgid "Segments"
 msgstr ""
 
@@ -4872,9 +5387,7 @@ msgid "Klein"
 msgstr ""
 
 #: hacks/config/klein.xml.h:10
-msgid ""
-"This draws a visualization of a Klein bottle or some other interesting "
-"parametric surfaces. Written by Andrey Mirtchovski."
+msgid "This draws a visualization of a Klein bottle or some other interesting parametric surfaces. Written by Andrey Mirtchovski."
 msgstr ""
 
 #: hacks/config/klein.xml.h:11
@@ -4894,16 +5407,11 @@ msgid "Randomize"
 msgstr ""
 
 #: hacks/config/kumppa.xml.h:10
-msgid ""
-"Spiraling, spinning, and very, very fast splashes of color rush toward the "
-"screen. Written by Teemu Suutari."
+msgid "Spiraling, spinning, and very, very fast splashes of color rush toward the screen. Written by Teemu Suutari."
 msgstr ""
 
 #: hacks/config/lament.xml.h:1
-msgid ""
-"Animates a simulation of Lemarchand's Box, repeatedly solving itself. "
-"Requires OpenGL, and a machine with fast hardware support for texture maps. "
-"Warning: occasionally opens doors. Written by Jamie Zawinski."
+msgid "Animates a simulation of Lemarchand's Box, repeatedly solving itself. Requires OpenGL, and a machine with fast hardware support for texture maps. Warning: occasionally opens doors. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/lament.xml.h:3
@@ -4915,12 +5423,11 @@ msgid "Laser"
 msgstr ""
 
 #: hacks/config/laser.xml.h:7
-msgid ""
-"Moving radiating lines, that look vaguely like scanning laser beams. Written "
-"by Pascal Pensa. (Frankie say: relax.)"
+msgid "Moving radiating lines, that look vaguely like scanning laser beams. Written by Pascal Pensa. (Frankie say: relax.)"
 msgstr ""
 
-#: hacks/config/lavalite.xml.h:2 hacks/config/xmountains.xml.h:2
+#: hacks/config/lavalite.xml.h:2
+#: hacks/config/xmountains.xml.h:2
 msgid "10"
 msgstr ""
 
@@ -4933,15 +5440,7 @@ msgid "Cone Lavalite"
 msgstr ""
 
 #: hacks/config/lavalite.xml.h:8
-msgid ""
-"Draws a 3D Simulation a Lava Lite(r): odd-shaped blobs of a mysterious "
-"substance are heated, slowly rise to the top of the bottle, and then drop "
-"back down as they cool. This program requires OpenGL and a fairly fast "
-"machine (both CPU and 3D performance.) Written by Jamie Zawinski. \"LAVA LITE"
-"(r) and the configuration of the LAVA(r) brand motion lamp are registered "
-"trademarks of Haggerty Enterprises, Inc. The configuration of the globe and "
-"base of the motion lamp are registered trademarks of Haggerty Enterprises, "
-"Inc. in the U.S.A. and in other countries around the world.\""
+msgid "Draws a 3D Simulation a Lava Lite(r): odd-shaped blobs of a mysterious substance are heated, slowly rise to the top of the bottle, and then drop back down as they cool. This program requires OpenGL and a fairly fast machine (both CPU and 3D performance.) Written by Jamie Zawinski. \"LAVA LITE(r) and the configuration of the LAVA(r) brand motion lamp are registered trademarks of Haggerty Enterprises, Inc. The configuration of the globe and base of the motion lamp are registered trademarks of Haggerty Enterprises, Inc. in the U.S.A. and in other countries around the world.\""
 msgstr ""
 
 #: hacks/config/lavalite.xml.h:9
@@ -4973,9 +5472,7 @@ msgid "Lightning"
 msgstr ""
 
 #: hacks/config/lightning.xml.h:7
-msgid ""
-"This one draws crackling fractal lightning bolts. It's simple, direct, and "
-"to the point. If only it had sound... Written by Keith Romberg."
+msgid "This one draws crackling fractal lightning bolts. It's simple, direct, and to the point. If only it had sound... Written by Keith Romberg."
 msgstr ""
 
 #: hacks/config/lisa.xml.h:4
@@ -4987,16 +5484,11 @@ msgid "Steps"
 msgstr ""
 
 #: hacks/config/lisa.xml.h:11
-msgid ""
-"This draws Lisajous loops, by Caleb Cullen. Remember that device they had "
-"the Phantom Zone prisoners in during their trial in Superman? I think that "
-"was one of these."
+msgid "This draws Lisajous loops, by Caleb Cullen. Remember that device they had the Phantom Zone prisoners in during their trial in Superman? I think that was one of these."
 msgstr ""
 
 #: hacks/config/lissie.xml.h:1
-msgid ""
-"Another Lissajous figure. This one draws the progress of circular shapes "
-"along a path. Written by Alexander Jolk."
+msgid "Another Lissajous figure. This one draws the progress of circular shapes along a path. Written by Alexander Jolk."
 msgstr ""
 
 #: hacks/config/lissie.xml.h:5
@@ -5036,9 +5528,7 @@ msgid "Open and Closed Figures"
 msgstr ""
 
 #: hacks/config/lmorph.xml.h:15
-msgid ""
-"This generates random spline-ish line drawings and morphs between them. "
-"Written by Sverre H. Huseby and Glenn T. Lines."
+msgid "This generates random spline-ish line drawings and morphs between them. Written by Sverre H. Huseby and Glenn T. Lines."
 msgstr ""
 
 #: hacks/config/loop.xml.h:3
@@ -5046,16 +5536,15 @@ msgid "Loop"
 msgstr ""
 
 #: hacks/config/loop.xml.h:10
-msgid ""
-"This one produces loop-shaped colonies that spawn, age, and eventually die. "
-"Written by David Bagley."
+msgid "This one produces loop-shaped colonies that spawn, age, and eventually die. Written by David Bagley."
 msgstr ""
 
 #: hacks/config/maze.xml.h:3
 msgid "Backtracking Generator"
 msgstr ""
 
-#: hacks/config/maze.xml.h:5 hacks/config/slidescreen.xml.h:3
+#: hacks/config/maze.xml.h:5
+#: hacks/config/slidescreen.xml.h:3
 msgid "Grid Size"
 msgstr ""
 
@@ -5096,10 +5585,7 @@ msgid "Solve Speed"
 msgstr ""
 
 #: hacks/config/maze.xml.h:16
-msgid ""
-"This is the ancient X maze demo, modified to work with xscreensaver. It "
-"generates a random maze, then solves it with visual feedback. Originally by "
-"Jim Randell; modified by a cast of thousands."
+msgid "This is the ancient X maze demo, modified to work with xscreensaver. It generates a random maze, then solves it with visual feedback. Originally by Jim Randell; modified by a cast of thousands."
 msgstr ""
 
 #: hacks/config/memscroller.xml.h:1
@@ -5123,9 +5609,7 @@ msgid "MemScroller"
 msgstr ""
 
 #: hacks/config/memscroller.xml.h:9
-msgid ""
-"This draws a dump of its own process memory scrolling across the screen in "
-"three windows at three different rates. Written by Jamie Zawinski."
+msgid "This draws a dump of its own process memory scrolling across the screen in three windows at three different rates. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/menger.xml.h:6
@@ -5133,10 +5617,7 @@ msgid "Menger"
 msgstr ""
 
 #: hacks/config/menger.xml.h:19
-msgid ""
-"This draws the three-dimensional variant of the recursive Menger Gasket, a "
-"cube-based fractal object analagous to the Sierpinski Tetrahedron. Written "
-"by Jamie Zawinski."
+msgid "This draws the three-dimensional variant of the recursive Menger Gasket, a cube-based fractal object analagous to the Sierpinski Tetrahedron. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/metaballs.xml.h:1
@@ -5144,9 +5625,7 @@ msgid "Big"
 msgstr ""
 
 #: hacks/config/metaballs.xml.h:2
-msgid ""
-"Draws two dimensional metaballs: overlapping and merging balls with fuzzy "
-"edges. By W.P. van Paassen."
+msgid "Draws two dimensional metaballs: overlapping and merging balls with fuzzy edges. By W.P. van Paassen."
 msgstr ""
 
 #: hacks/config/metaballs.xml.h:7
@@ -5169,14 +5648,13 @@ msgstr ""
 msgid "Blobby"
 msgstr ""
 
-#: hacks/config/mirrorblob.xml.h:5 hacks/config/nerverot.xml.h:2
+#: hacks/config/mirrorblob.xml.h:5
+#: hacks/config/nerverot.xml.h:2
 msgid "Calm"
 msgstr ""
 
 #: hacks/config/mirrorblob.xml.h:7
-msgid ""
-"Draws a wobbly blob that distorts the image behind it. Requires OpenGL "
-"hardware acceleration for nice animation. Written by Jon Dowdall."
+msgid "Draws a wobbly blob that distorts the image behind it. Requires OpenGL hardware acceleration for nice animation. Written by Jon Dowdall."
 msgstr ""
 
 #: hacks/config/mirrorblob.xml.h:8
@@ -5228,9 +5706,7 @@ msgid "Mismunch"
 msgstr ""
 
 #: hacks/config/mismunch.xml.h:6
-msgid ""
-"Munching errors! This is a creatively broken misimplementation of the "
-"classic munching squares graphics hack. Written by Steven Hazel."
+msgid "Munching errors! This is a creatively broken misimplementation of the classic munching squares graphics hack. Written by Steven Hazel."
 msgstr ""
 
 #: hacks/config/mismunch.xml.h:7
@@ -5241,15 +5717,14 @@ msgstr ""
 msgid "Simultaneous Squares"
 msgstr ""
 
-#: hacks/config/mismunch.xml.h:13 hacks/config/munch.xml.h:10
+#: hacks/config/mismunch.xml.h:13
+#: hacks/config/munch.xml.h:10
 #: hacks/config/qix.xml.h:26
 msgid "XOR"
 msgstr ""
 
 #: hacks/config/moebius.xml.h:1
-msgid ""
-"Another M. C. Escher hack by Marcelo Vianna, this one draws ``Moebius Strip "
-"II,'' a GL image of ants walking along the surface of a moebius strip."
+msgid "Another M. C. Escher hack by Marcelo Vianna, this one draws ``Moebius Strip II,'' a GL image of ants walking along the surface of a moebius strip."
 msgstr ""
 
 #: hacks/config/moebius.xml.h:2
@@ -5268,17 +5743,13 @@ msgstr ""
 msgid "Solid Floor"
 msgstr ""
 
-#: hacks/config/moebius.xml.h:9 hacks/config/qix.xml.h:20
+#: hacks/config/moebius.xml.h:9
+#: hacks/config/qix.xml.h:20
 msgid "Solid Objects"
 msgstr ""
 
 #: hacks/config/moire2.xml.h:1
-msgid ""
-"Another example of the fun you can have with moire interference patterns; "
-"this hack generates fields of concentric circles or ovals, and combines the "
-"planes with various operations. The planes are moving independently of one "
-"another, causing the interference lines to ``spray.'' Written by Jamie "
-"Zawinski."
+msgid "Another example of the fun you can have with moire interference patterns; this hack generates fields of concentric circles or ovals, and combines the planes with various operations. The planes are moving independently of one another, causing the interference lines to ``spray.'' Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/moire2.xml.h:4
@@ -5289,19 +5760,13 @@ msgstr ""
 msgid "Moire"
 msgstr ""
 
-#: hacks/config/moire.xml.h:8 hacks/config/rorschach.xml.h:6
+#: hacks/config/moire.xml.h:8
+#: hacks/config/rorschach.xml.h:6
 msgid "Offset"
 msgstr ""
 
 #: hacks/config/moire.xml.h:10
-msgid ""
-"This one draws cool circular interference patterns. Most of the circles you "
-"see aren't explicitly rendered, but show up as a result of interactions "
-"between the other pixels that were drawn. Written by Jamie Zawinski, "
-"inspired by Java code by Michael Bayne. As he pointed out, the beauty of "
-"this one is that the heart of the display algorithm can be expressed with "
-"just a pair of loops and a handful of arithmetic, giving it a high ``display "
-"hack metric''."
+msgid "This one draws cool circular interference patterns. Most of the circles you see aren't explicitly rendered, but show up as a result of interactions between the other pixels that were drawn. Written by Jamie Zawinski, inspired by Java code by Michael Bayne. As he pointed out, the beauty of this one is that the heart of the display algorithm can be expressed with just a pair of loops and a handful of arithmetic, giving it a high ``display hack metric''."
 msgstr ""
 
 #: hacks/config/molecule.xml.h:3
@@ -5316,15 +5781,13 @@ msgstr ""
 msgid "Draw Atoms"
 msgstr ""
 
-#: hacks/config/molecule.xml.h:7 hacks/config/spheremonics.xml.h:2
+#: hacks/config/molecule.xml.h:7
+#: hacks/config/spheremonics.xml.h:2
 msgid "Draw Bounding Box"
 msgstr ""
 
 #: hacks/config/molecule.xml.h:8
-msgid ""
-"Draws several different representations of molecules. Some common molecules "
-"are built in, and it can also read PDB (Protein Data Base) files as input. "
-"Written by Jamie Zawinski."
+msgid "Draws several different representations of molecules. Some common molecules are built in, and it can also read PDB (Protein Data Base) files as input. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/molecule.xml.h:11
@@ -5340,9 +5803,7 @@ msgid "PDB File or Directory"
 msgstr ""
 
 #: hacks/config/morph3d.xml.h:1
-msgid ""
-"Another 3d shape-changing GL hack, by Marcelo Vianna. It has the same shiny-"
-"plastic feel as Superquadrics, as many computer-generated objects do..."
+msgid "Another 3d shape-changing GL hack, by Marcelo Vianna. It has the same shiny-plastic feel as Superquadrics, as many computer-generated objects do..."
 msgstr ""
 
 #: hacks/config/morph3d.xml.h:4
@@ -5350,9 +5811,7 @@ msgid "Morph3D"
 msgstr ""
 
 #: hacks/config/mountain.xml.h:3
-msgid ""
-"Generates random 3d plots that look vaguely mountainous. Written by Pascal "
-"Pensa."
+msgid "Generates random 3d plots that look vaguely mountainous. Written by Pascal Pensa."
 msgstr ""
 
 #: hacks/config/mountain.xml.h:5
@@ -5360,11 +5819,7 @@ msgid "Mountain"
 msgstr ""
 
 #: hacks/config/munch.xml.h:1
-msgid ""
-"DATAI 2 ADDB 1,2 ROTC 2,-22 XOR 1,2 JRST .-4 As reported by HAKMEM, in 1962, "
-"Jackson Wright wrote the above PDP-1 code. That code still lives on in this "
-"screenhack, some 35 years later. The number of lines of enclosing code has "
-"increased substantially, however. This version is by Tim Showalter."
+msgid "DATAI 2 ADDB 1,2 ROTC 2,-22 XOR 1,2 JRST .-4 As reported by HAKMEM, in 1962, Jackson Wright wrote the above PDP-1 code. That code still lives on in this screenhack, some 35 years later. The number of lines of enclosing code has increased substantially, however. This version is by Tim Showalter."
 msgstr ""
 
 #: hacks/config/munch.xml.h:5
@@ -5388,9 +5843,7 @@ msgid "Crunchiness"
 msgstr ""
 
 #: hacks/config/nerverot.xml.h:7
-msgid ""
-"Draws different shapes composed of nervously vibrating squiggles, as if seen "
-"through a camera operated by a monkey on crack. By Dan Bornstein."
+msgid "Draws different shapes composed of nervously vibrating squiggles, as if seen through a camera operated by a monkey on crack. By Dan Bornstein."
 msgstr ""
 
 #: hacks/config/nerverot.xml.h:10
@@ -5405,7 +5858,8 @@ msgstr ""
 msgid "Nervousness"
 msgstr ""
 
-#: hacks/config/nerverot.xml.h:18 hacks/config/pyro.xml.h:12
+#: hacks/config/nerverot.xml.h:18
+#: hacks/config/pyro.xml.h:12
 msgid "Seldom"
 msgstr ""
 
@@ -5422,11 +5876,7 @@ msgid "Noof"
 msgstr ""
 
 #: hacks/config/noseguy.xml.h:1
-msgid ""
-"A little man with a big nose wanders around your screen saying things. The "
-"things which he says can come from a file, or from an external program like "
-"`zippy' or `fortune'. This was extracted from `xnlock' by Dan Heller. "
-"Colorized by Jamie Zawinski."
+msgid "A little man with a big nose wanders around your screen saying things. The things which he says can come from a file, or from an external program like `zippy' or `fortune'. This was extracted from `xnlock' by Dan Heller. Colorized by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/noseguy.xml.h:2
@@ -5458,9 +5908,7 @@ msgid "Player Size"
 msgstr ""
 
 #: hacks/config/pacman.xml.h:4
-msgid ""
-"Simulates a game of Pac-Man on a randomly-created level. Written by Edwin de "
-"Jong."
+msgid "Simulates a game of Pac-Man on a randomly-created level. Written by Edwin de Jong."
 msgstr ""
 
 #: hacks/config/pedal.xml.h:7
@@ -5468,11 +5916,7 @@ msgid "Pedal"
 msgstr ""
 
 #: hacks/config/pedal.xml.h:8
-msgid ""
-"This is sort of a combination spirograph/string-art. It generates a large, "
-"complex polygon, and lets the X server do the bulk of the work by giving it "
-"an even/odd winding rule. Written by Dale Moore, based on some ancient PDP-"
-"11 code."
+msgid "This is sort of a combination spirograph/string-art. It generates a large, complex polygon, and lets the X server do the bulk of the work by giving it an even/odd winding rule. Written by Dale Moore, based on some ancient PDP-11 code."
 msgstr ""
 
 #: hacks/config/penetrate.xml.h:1
@@ -5492,9 +5936,7 @@ msgid "Start badly, but learn"
 msgstr ""
 
 #: hacks/config/penetrate.xml.h:8
-msgid ""
-"This hack simulates the classic arcade game Missile Command. Written by Adam "
-"Miller."
+msgid "This hack simulates the classic arcade game Missile Command. Written by Adam Miller."
 msgstr ""
 
 #: hacks/config/penrose.xml.h:3
@@ -5502,18 +5944,7 @@ msgid "Draw Ammann Lines"
 msgstr ""
 
 #: hacks/config/penrose.xml.h:4
-msgid ""
-"Draws quasiperiodic tilings; think of the implications on modern formica "
-"technology. Written by Timo Korvola. In April 1997, Sir Roger Penrose, a "
-"British math professor who has worked with Stephen Hawking on such topics as "
-"relativity, black holes, and whether time has a beginning, filed a copyright-"
-"infringement lawsuit against the Kimberly-Clark Corporation, which Penrose "
-"said copied a pattern he created (a pattern demonstrating that ``a "
-"nonrepeating pattern could exist in nature'') for its Kleenex quilted toilet "
-"paper. Penrose said he doesn't like litigation but, ``When it comes to the "
-"population of Great Britain being invited by a multinational to wipe their "
-"bottoms on what appears to be the work of a Knight of the Realm, then a last "
-"stand must be taken.'' As reported by News of the Weird #491, 4-jul-1997."
+msgid "Draws quasiperiodic tilings; think of the implications on modern formica technology. Written by Timo Korvola. In April 1997, Sir Roger Penrose, a British math professor who has worked with Stephen Hawking on such topics as relativity, black holes, and whether time has a beginning, filed a copyright-infringement lawsuit against the Kimberly-Clark Corporation, which Penrose said copied a pattern he created (a pattern demonstrating that ``a nonrepeating pattern could exist in nature'') for its Kleenex quilted toilet paper. Penrose said he doesn't like litigation but, ``When it comes to the population of Great Britain being invited by a multinational to wipe their bottoms on what appears to be the work of a Knight of the Realm, then a last stand must be taken.'' As reported by News of the Weird #491, 4-jul-1997."
 msgstr ""
 
 #: hacks/config/penrose.xml.h:9
@@ -5585,17 +6016,11 @@ msgid "Square"
 msgstr ""
 
 #: hacks/config/petri.xml.h:27
-msgid ""
-"This simulates colonies of mold growing in a petri dish. Growing colored "
-"circles overlap and leave spiral interference in their wake. Written by Dan "
-"Bornstein."
+msgid "This simulates colonies of mold growing in a petri dish. Growing colored circles overlap and leave spiral interference in their wake. Written by Dan Bornstein."
 msgstr ""
 
 #: hacks/config/phosphor.xml.h:1
-msgid ""
-"Draws a simulation of an old terminal, with large pixels and long-sustain "
-"phosphor. It can run any program as a source of the text it displays. "
-"Written by Jamie Zawinski."
+msgid "Draws a simulation of an old terminal, with large pixels and long-sustain phosphor. It can run any program as a source of the text it displays. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/phosphor.xml.h:2
@@ -5631,9 +6056,7 @@ msgid "Piecewise"
 msgstr ""
 
 #: hacks/config/piecewise.xml.h:12
-msgid ""
-"This draws a bunch of moving circles which switch from visibility to "
-"invisibility at intersection points. Written by Geoffrey Irving."
+msgid "This draws a bunch of moving circles which switch from visibility to invisibility at intersection points. Written by Geoffrey Irving."
 msgstr ""
 
 #: hacks/config/pinion.xml.h:1
@@ -5645,9 +6068,7 @@ msgid "2000"
 msgstr ""
 
 #: hacks/config/pinion.xml.h:4
-msgid ""
-"Draws an interconnected set of gears moving across the screen. Written by "
-"Jamie Zawinski."
+msgid "Draws an interconnected set of gears moving across the screen. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/pinion.xml.h:6
@@ -5687,12 +6108,11 @@ msgid "Gadgetry"
 msgstr ""
 
 #: hacks/config/pipes.xml.h:8
-msgid ""
-"If you've ever been in the same room with a Windows NT machine, you've "
-"probably seen this GL hack. This version is by Marcelo Vianna."
+msgid "If you've ever been in the same room with a Windows NT machine, you've probably seen this GL hack. This version is by Marcelo Vianna."
 msgstr ""
 
-#: hacks/config/pipes.xml.h:9 hacks/config/substrate.xml.h:12
+#: hacks/config/pipes.xml.h:9
+#: hacks/config/substrate.xml.h:12
 #: hacks/config/wormhole.xml.h:4
 msgid "Lots"
 msgstr ""
@@ -5715,9 +6135,10 @@ msgstr ""
 
 #: hacks/config/polyhedra.xml.h:2
 msgid "30 seconds"
-msgstr ""
+msgstr "30 secondi"
 
-#: hacks/config/polyhedra.xml.h:4 hacks/config/sballs.xml.h:1
+#: hacks/config/polyhedra.xml.h:4
+#: hacks/config/sballs.xml.h:1
 msgid "Cube"
 msgstr ""
 
@@ -5754,18 +6175,15 @@ msgid "Display Random Polyhedron"
 msgstr ""
 
 #: hacks/config/polyhedra.xml.h:13
-msgid ""
-"Displays different 3D solids and some information about each. A new solid is "
-"chosen every few seconds. There are 75 uniform polyhedra, plus 5 inifite "
-"sets of prisms and antiprisms; including their duals brings the total to "
-"160. Written by Dr. Zvi Har'El and Jamie Zawinski."
+msgid "Displays different 3D solids and some information about each. A new solid is chosen every few seconds. There are 75 uniform polyhedra, plus 5 inifite sets of prisms and antiprisms; including their duals brings the total to 160. Written by Dr. Zvi Har'El and Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/polyhedra.xml.h:14
 msgid "Ditrigonal Dodecadodecahedron"
 msgstr ""
 
-#: hacks/config/polyhedra.xml.h:15 hacks/config/sballs.xml.h:2
+#: hacks/config/polyhedra.xml.h:15
+#: hacks/config/sballs.xml.h:2
 msgid "Dodecahedron"
 msgstr ""
 
@@ -5981,7 +6399,8 @@ msgstr ""
 msgid "Hexahemioctacron"
 msgstr ""
 
-#: hacks/config/polyhedra.xml.h:72 hacks/config/sballs.xml.h:5
+#: hacks/config/polyhedra.xml.h:72
+#: hacks/config/sballs.xml.h:5
 msgid "Icosahedron"
 msgstr ""
 
@@ -6033,7 +6452,8 @@ msgstr ""
 msgid "Medial Triambic Icosahedron"
 msgstr ""
 
-#: hacks/config/polyhedra.xml.h:86 hacks/config/sballs.xml.h:7
+#: hacks/config/polyhedra.xml.h:86
+#: hacks/config/sballs.xml.h:7
 msgid "Octahedron"
 msgstr ""
 
@@ -6346,9 +6766,7 @@ msgid "Polyominoes"
 msgstr ""
 
 #: hacks/config/polyominoes.xml.h:8
-msgid ""
-"Repeatedly attempts to completely fill a rectangle with irregularly-shaped "
-"puzzle pieces. Written by Stephen Montgomery-Smith."
+msgid "Repeatedly attempts to completely fill a rectangle with irregularly-shaped puzzle pieces. Written by Stephen Montgomery-Smith."
 msgstr ""
 
 #: hacks/config/polytopes.xml.h:2
@@ -6388,12 +6806,7 @@ msgid "Single Color"
 msgstr ""
 
 #: hacks/config/polytopes.xml.h:22
-msgid ""
-"This program shows one of the six regular 4D polytopes rotating in 4D. "
-"Written by Carsten Steger, inspired by H.S.M Coxeter's book \"Regular "
-"Polytopes\", 3rd Edition, Dover Publications, Inc., 1973, and Thomas "
-"Banchoff's book \"Beyond the Third Dimension: Geometry, Computer Graphics, "
-"and Higher Dimensions\", Scientific American Library, 1990."
+msgid "This program shows one of the six regular 4D polytopes rotating in 4D. Written by Carsten Steger, inspired by H.S.M Coxeter's book \"Regular Polytopes\", 3rd Edition, Dover Publications, Inc., 1973, and Thomas Banchoff's book \"Beyond the Third Dimension: Geometry, Computer Graphics, and Higher Dimensions\", Scientific American Library, 1990."
 msgstr ""
 
 #: hacks/config/pong.xml.h:2
@@ -6401,10 +6814,7 @@ msgid "Pong"
 msgstr ""
 
 #: hacks/config/pong.xml.h:6
-msgid ""
-"The pong program simulates an ancient Pong home video game, as well as "
-"various artifacts from displaying it on a color TV set. Written by Jeremy "
-"English and Trevor Blackwell."
+msgid "The pong program simulates an ancient Pong home video game, as well as various artifacts from displaying it on a color TV set. Written by Jeremy English and Trevor Blackwell."
 msgstr ""
 
 #: hacks/config/popsquares.xml.h:2
@@ -6420,8 +6830,7 @@ msgid "Subdivision"
 msgstr ""
 
 #: hacks/config/popsquares.xml.h:9
-msgid ""
-"This draws a pop-art-ish looking grid of pulsing colors. By Levi Burton."
+msgid "This draws a pop-art-ish looking grid of pulsing colors. By Levi Burton."
 msgstr ""
 
 #: hacks/config/popsquares.xml.h:10
@@ -6441,9 +6850,7 @@ msgid "Providence"
 msgstr ""
 
 #: hacks/config/providence.xml.h:7
-msgid ""
-"The providence code displays an eye, shrouded in glory, set upon the base of "
-"a pyramid. Written by Blair Tennessy."
+msgid "The providence code displays an eye, shrouded in glory, set upon the base of a pyramid. Written by Blair Tennessy."
 msgstr ""
 
 #: hacks/config/pulsar.xml.h:1
@@ -6451,10 +6858,7 @@ msgid "Anti-alias Lines"
 msgstr ""
 
 #: hacks/config/pulsar.xml.h:3
-msgid ""
-"Draws some intersecting planes, making use of alpha blending, fog, textures, "
-"and mipmaps, plus a ``frames per second'' meter so that you can tell how "
-"fast your graphics card is... Requires OpenGL. Written by David Konerding."
+msgid "Draws some intersecting planes, making use of alpha blending, fog, textures, and mipmaps, plus a ``frames per second'' meter so that you can tell how fast your graphics card is... Requires OpenGL. Written by David Konerding."
 msgstr ""
 
 #: hacks/config/pulsar.xml.h:4
@@ -6514,8 +6918,7 @@ msgid "Pyro"
 msgstr ""
 
 #: hacks/config/pyro.xml.h:11
-msgid ""
-"Pyro draws exploding fireworks. Blah blah blah. Written by Jamie Zawinski."
+msgid "Pyro draws exploding fireworks. Blah blah blah. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/qix.xml.h:1
@@ -6551,11 +6954,7 @@ msgid "Subtractive Colors"
 msgstr ""
 
 #: hacks/config/qix.xml.h:24
-msgid ""
-"This is the swiss army chainsaw of qix programs. It bounces a series of line "
-"segments around the screen, and uses variations on this basic motion pattern "
-"to produce all sorts of different presentations: line segments, filled "
-"polygons, overlapping translucent areas... Written by Jamie Zawinski."
+msgid "This is the swiss army chainsaw of qix programs. It bounces a series of line segments around the screen, and uses variations on this basic motion pattern to produce all sorts of different presentations: line segments, filled polygons, overlapping translucent areas... Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/qix.xml.h:25
@@ -6567,10 +6966,7 @@ msgid "Queens"
 msgstr ""
 
 #: hacks/config/queens.xml.h:5
-msgid ""
-"Solves the N-Queens problem (where, in this program, N is between 5 and 10 "
-"queens.) The problem is: how may one place N queens on an NxN chessboard "
-"such that no queen can attack a sister? Written by Blair Tennessy."
+msgid "Solves the N-Queens problem (where, in this program, N is between 5 and 10 queens.) The problem is: how may one place N queens on an NxN chessboard such that no queen can attack a sister? Written by Blair Tennessy."
 msgstr ""
 
 #: hacks/config/rd-bomb.xml.h:1
@@ -6583,10 +6979,7 @@ msgid "1%"
 msgstr ""
 
 #: hacks/config/rd-bomb.xml.h:7
-msgid ""
-"Another variation of the `Bomb' program by Scott Draves. This draws a grid "
-"of growing square-like shapes that, once they overtake each other, react in "
-"unpredictable ways. ``RD'' stands for reaction-diffusion."
+msgid "Another variation of the `Bomb' program by Scott Draves. This draws a grid of growing square-like shapes that, once they overtake each other, react in unpredictable ways. ``RD'' stands for reaction-diffusion."
 msgstr ""
 
 #: hacks/config/rd-bomb.xml.h:8
@@ -6609,7 +7002,8 @@ msgstr ""
 msgid "Seed Radius"
 msgstr ""
 
-#: hacks/config/rd-bomb.xml.h:19 hacks/config/twang.xml.h:12
+#: hacks/config/rd-bomb.xml.h:19
+#: hacks/config/twang.xml.h:12
 msgid "Tile Size"
 msgstr ""
 
@@ -6658,10 +7052,7 @@ msgid "Storm"
 msgstr ""
 
 #: hacks/config/ripples.xml.h:14
-msgid ""
-"This draws rippling interference patterns like splashing water. With the -"
-"water option, it manipulates your desktop image to look like something is "
-"dripping into it. Written by Tom Hammersley."
+msgid "This draws rippling interference patterns like splashing water. With the -water option, it manipulates your desktop image to look like something is dripping into it. Written by Tom Hammersley."
 msgstr ""
 
 #: hacks/config/rocks.xml.h:7
@@ -6677,10 +7068,7 @@ msgid "Steering"
 msgstr ""
 
 #: hacks/config/rocks.xml.h:11
-msgid ""
-"This draws an animation of flight through an asteroid field, with changes in "
-"rotation and direction. It can also display 3D separations for red/blue "
-"glasses! Mostly written by Jamie Zawinski."
+msgid "This draws an animation of flight through an asteroid field, with changes in rotation and direction. It can also display 3D separations for red/blue glasses! Mostly written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/rocks.xml.h:13
@@ -6692,12 +7080,7 @@ msgid "Rorschach"
 msgstr ""
 
 #: hacks/config/rorschach.xml.h:9
-msgid ""
-"This generates random inkblot patterns. The algorithm is deceptively simple "
-"for how well it works; it merely walks a dot around the screen randomly, and "
-"then reflects the image horizontally, vertically, or both. Any deep-seated "
-"neurotic tendencies which this program reveals are your own problem. Written "
-"by Jamie Zawinski."
+msgid "This generates random inkblot patterns. The algorithm is deceptively simple for how well it works; it merely walks a dot around the screen randomly, and then reflects the image horizontally, vertically, or both. Any deep-seated neurotic tendencies which this program reveals are your own problem. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/rorschach.xml.h:10
@@ -6709,12 +7092,11 @@ msgid "With Y Symmetry"
 msgstr ""
 
 #: hacks/config/rotor.xml.h:1
-msgid ""
-"Another ancient xlock demo, this one by Tom Lawrence. It draws a line "
-"segment moving along a complex spiraling curve."
+msgid "Another ancient xlock demo, this one by Tom Lawrence. It draws a line segment moving along a complex spiraling curve."
 msgstr ""
 
-#: hacks/config/rotor.xml.h:4 hacks/config/wander.xml.h:9
+#: hacks/config/rotor.xml.h:4
+#: hacks/config/wander.xml.h:9
 msgid "Length"
 msgstr ""
 
@@ -6727,9 +7109,7 @@ msgid "Animate"
 msgstr ""
 
 #: hacks/config/rotzoomer.xml.h:4
-msgid ""
-"Creates a collage of rotated and scaled portions of the screen. Written by "
-"Claudio Matsuoka."
+msgid "Creates a collage of rotated and scaled portions of the screen. Written by Claudio Matsuoka."
 msgstr ""
 
 #: hacks/config/rotzoomer.xml.h:6
@@ -6753,9 +7133,7 @@ msgid "Wandering Rectangles"
 msgstr ""
 
 #: hacks/config/rubik.xml.h:2
-msgid ""
-"Draws a Rubik's Cube that rotates in three dimensions and repeatedly "
-"shuffles and solves itself. Another fine GL hack by Marcelo Vianna."
+msgid "Draws a Rubik's Cube that rotates in three dimensions and repeatedly shuffles and solves itself. Another fine GL hack by Marcelo Vianna."
 msgstr ""
 
 #: hacks/config/rubik.xml.h:5
@@ -6767,10 +7145,7 @@ msgid "Show Shuffling"
 msgstr ""
 
 #: hacks/config/sballs.xml.h:3
-msgid ""
-"Draws an animation of textured balls spinning like crazy in GL. Requires "
-"OpenGL, and a machine with fast hardware support for texture maps. Written "
-"by Eric Lassauge &lt;lassauge@users.sourceforge.net&gt;."
+msgid "Draws an animation of textured balls spinning like crazy in GL. Requires OpenGL, and a machine with fast hardware support for texture maps. Written by Eric Lassauge &lt;lassauge@users.sourceforge.net&gt;."
 msgstr ""
 
 #: hacks/config/sballs.xml.h:8
@@ -6794,9 +7169,7 @@ msgid "ShadeBobs"
 msgstr ""
 
 #: hacks/config/shadebobs.xml.h:11
-msgid ""
-"This draws smoothly-shaded oscillating oval patterns, that look something "
-"like vapor trails or neon tubes. Written by Shane Smit."
+msgid "This draws smoothly-shaded oscillating oval patterns, that look something like vapor trails or neon tubes. Written by Shane Smit."
 msgstr ""
 
 #: hacks/config/sierpinski3d.xml.h:7
@@ -6804,9 +7177,7 @@ msgid "Sierpinski3D"
 msgstr ""
 
 #: hacks/config/sierpinski3d.xml.h:11
-msgid ""
-"This draws the three-dimensional variant of the recursive Sierpinski "
-"triangle fractal, using GL. Written by Tim Robinson and Jamie Zawinski."
+msgid "This draws the three-dimensional variant of the recursive Sierpinski triangle fractal, using GL. Written by Tim Robinson and Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/sierpinski.xml.h:6
@@ -6814,12 +7185,11 @@ msgid "Sierpinski"
 msgstr ""
 
 #: hacks/config/sierpinski.xml.h:10
-msgid ""
-"This draws the two-dimensional variant of the recursive Sierpinski triangle "
-"fractal. Written by Desmond Daignault."
+msgid "This draws the two-dimensional variant of the recursive Sierpinski triangle fractal. Written by Desmond Daignault."
 msgstr ""
 
-#: hacks/config/slidescreen.xml.h:1 hacks/config/twang.xml.h:1
+#: hacks/config/slidescreen.xml.h:1
+#: hacks/config/twang.xml.h:1
 #: hacks/config/zoom.xml.h:1
 msgid "Border Width"
 msgstr ""
@@ -6833,12 +7203,7 @@ msgid "SlideScreen"
 msgstr ""
 
 #: hacks/config/slidescreen.xml.h:8
-msgid ""
-"This takes an image, divides it into a grid, and then randomly shuffles the "
-"squares around as if it was one of those annoying ``16-puzzle'' games, where "
-"there is a grid of squares, one of which is missing. I hate trying to solve "
-"those puzzles, but watching one permute itself is more amusing. Written by "
-"Jamie Zawinski."
+msgid "This takes an image, divides it into a grid, and then randomly shuffles the squares around as if it was one of those annoying ``16-puzzle'' games, where there is a grid of squares, one of which is missing. I hate trying to solve those puzzles, but watching one permute itself is more amusing. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/slip.xml.h:6
@@ -6846,14 +7211,7 @@ msgid "Slip"
 msgstr ""
 
 #: hacks/config/slip.xml.h:10
-msgid ""
-"This program throws some random bits on the screen, then sucks them through "
-"a jet engine and spews them out the other side. To avoid turning the image "
-"completely to mush, every now and then it will and then it interjects some "
-"splashes of color into the scene, or go into a spin cycle, or stretch the "
-"image like taffy, or (this is my addition) grab an image of your current "
-"desktop to chew on. Originally written by Scott Draves; whacked on by Jamie "
-"Zawinski."
+msgid "This program throws some random bits on the screen, then sucks them through a jet engine and spews them out the other side. To avoid turning the image completely to mush, every now and then it will and then it interjects some splashes of color into the scene, or go into a spin cycle, or stretch the image like taffy, or (this is my addition) grab an image of your current desktop to chew on. Originally written by Scott Draves; whacked on by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/sonar.xml.h:1
@@ -6917,12 +7275,7 @@ msgid "Team B Name"
 msgstr ""
 
 #: hacks/config/sonar.xml.h:16
-msgid ""
-"This program draws a simulation of a sonar screen. By default, it displays a "
-"random assortment of ``bogies'' on the screen, but if installed as \"setuid "
-"root\", it can ping (pun intended) your local network, and actually plot the "
-"proximity of the other hosts on your network to you. Written by Stephen "
-"Martin and Jamie Zawinski."
+msgid "This program draws a simulation of a sonar screen. By default, it displays a random assortment of ``bogies'' on the screen, but if installed as \"setuid root\", it can ping (pun intended) your local network, and actually plot the proximity of the other hosts on your network to you. Written by Stephen Martin and Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/sonar.xml.h:17
@@ -6954,9 +7307,7 @@ msgid "Rocky Walls"
 msgstr ""
 
 #: hacks/config/speedmine.xml.h:12
-msgid ""
-"Simulates speeding down a rocky mineshaft, or a funky dancing worm. Written "
-"by Conrad Parker."
+msgid "Simulates speeding down a rocky mineshaft, or a funky dancing worm. Written by Conrad Parker."
 msgstr ""
 
 #: hacks/config/speedmine.xml.h:16
@@ -6967,7 +7318,8 @@ msgstr ""
 msgid "Thrust"
 msgstr ""
 
-#: hacks/config/speedmine.xml.h:19 hacks/config/worm.xml.h:10
+#: hacks/config/speedmine.xml.h:19
+#: hacks/config/worm.xml.h:10
 msgid "Worm"
 msgstr ""
 
@@ -6976,14 +7328,7 @@ msgid "SphereEversion"
 msgstr ""
 
 #: hacks/config/sphereeversion.xml.h:2
-msgid ""
-"SphereEversion draws an animation of a sphere being turned inside out. A "
-"sphere can be turned inside out, without any tears, sharp creases or "
-"discontinuities, if the surface of the sphere is allowed to intersect "
-"itself. This program animates what is known as the Thurston Eversion. "
-"Written by Nathaniel Thurston and Michael McGuffin. This program is not "
-"included with the XScreenSaver package, but if you don't have it already, "
-"you can find it at &lt;http://www.dgp.utoronto.ca/~mjmcguff/eversion/&gt;."
+msgid "SphereEversion draws an animation of a sphere being turned inside out. A sphere can be turned inside out, without any tears, sharp creases or discontinuities, if the surface of the sphere is allowed to intersect itself. This program animates what is known as the Thurston Eversion. Written by Nathaniel Thurston and Michael McGuffin. This program is not included with the XScreenSaver package, but if you don't have it already, you can find it at &lt;http://www.dgp.utoronto.ca/~mjmcguff/eversion/&gt;."
 msgstr ""
 
 #: hacks/config/spheremonics.xml.h:20
@@ -6995,28 +7340,20 @@ msgid "Spheremonics"
 msgstr ""
 
 #: hacks/config/spheremonics.xml.h:24
-msgid ""
-"These closed objects are commonly called spherical harmonics, although they "
-"are only remotely related to the mathematical definition found in the "
-"solution to certain wave functions, most notable the eigenfunctions of "
-"angular momentum operators. Written by Paul Bourke and Jamie Zawinski."
+msgid "These closed objects are commonly called spherical harmonics, although they are only remotely related to the mathematical definition found in the solution to certain wave functions, most notable the eigenfunctions of angular momentum operators. Written by Paul Bourke and Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/sphere.xml.h:1
-msgid ""
-"Another of the classic screenhacks of the distant past, this one draws "
-"shaded spheres in multiple colors. This hack traces its lineage back to Tom "
-"Duff in 1982."
+msgid "Another of the classic screenhacks of the distant past, this one draws shaded spheres in multiple colors. This hack traces its lineage back to Tom Duff in 1982."
 msgstr ""
 
-#: hacks/config/spiral.xml.h:2 hacks/config/superquadrics.xml.h:2
+#: hacks/config/spiral.xml.h:2
+#: hacks/config/superquadrics.xml.h:2
 msgid "Cycles"
 msgstr ""
 
 #: hacks/config/spiral.xml.h:7
-msgid ""
-"Moving circular patterns, by Peter Schmitzberger. Moving circular patterns "
-"means moire; interference patterns, of course."
+msgid "Moving circular patterns, by Peter Schmitzberger. Moving circular patterns means moire; interference patterns, of course."
 msgstr ""
 
 #: hacks/config/spiral.xml.h:11
@@ -7024,9 +7361,7 @@ msgid "Spiral"
 msgstr ""
 
 #: hacks/config/spotlight.xml.h:1
-msgid ""
-"Draws a spotlight scanning across a black screen, illuminating the "
-"underlying desktop when it passes. Written by Rick Schultz."
+msgid "Draws a spotlight scanning across a black screen, illuminating the underlying desktop when it passes. Written by Rick Schultz."
 msgstr ""
 
 #: hacks/config/spotlight.xml.h:6
@@ -7042,10 +7377,7 @@ msgid "Sproingies"
 msgstr ""
 
 #: hacks/config/squiral.xml.h:3
-msgid ""
-"Draws a set of interacting, square-spiral-producing automata. The spirals "
-"grow outward until they hit something, then they go around it. Written by "
-"Jeff Epler."
+msgid "Draws a set of interacting, square-spiral-producing automata. The spirals grow outward until they hit something, then they go around it. Written by Jeff Epler."
 msgstr ""
 
 #: hacks/config/squiral.xml.h:5
@@ -7056,7 +7388,8 @@ msgstr ""
 msgid "Left"
 msgstr ""
 
-#: hacks/config/squiral.xml.h:11 hacks/config/twang.xml.h:8
+#: hacks/config/squiral.xml.h:11
+#: hacks/config/twang.xml.h:8
 msgid "Randomness"
 msgstr ""
 
@@ -7073,18 +7406,7 @@ msgid "SSystem"
 msgstr ""
 
 #: hacks/config/ssystem.xml.h:2
-msgid ""
-"SSystem is a GL Solar System simulator. It simulates flybys of Sun, the nine "
-"planets and a few major satellites, with four camera modes. Written by Raul "
-"Alonso. This is not included with the XScreenSaver package, but is packaged "
-"separately. Note: SSystem does not work as a screen saver on all systems, "
-"because it doesn't communicate with xscreensaver properly. It happens to "
-"work with some window managers, but not with others, so your mileage may "
-"vary. SSystem was once available at &lt;http://www1.las.es/~amil/ssystem/"
-"&gt;, but is now gone. You may still be able to find copies elsewhere. "
-"SSystem has since evolved into Celestia, found at &lt;http://www.shatters."
-"net/celestia/&gt;. Sadly, Celestia does not work with xscreensaver at all. "
-"You are encouraged to nag the authors into adding xscreensaver support!"
+msgid "SSystem is a GL Solar System simulator. It simulates flybys of Sun, the nine planets and a few major satellites, with four camera modes. Written by Raul Alonso. This is not included with the XScreenSaver package, but is packaged separately. Note: SSystem does not work as a screen saver on all systems, because it doesn't communicate with xscreensaver properly. It happens to work with some window managers, but not with others, so your mileage may vary. SSystem was once available at &lt;http://www1.las.es/~amil/ssystem/&gt;, but is now gone. You may still be able to find copies elsewhere. SSystem has since evolved into Celestia, found at &lt;http://www.shatters.net/celestia/&gt;. Sadly, Celestia does not work with xscreensaver at all. You are encouraged to nag the authors into adding xscreensaver support!"
 msgstr ""
 
 #: hacks/config/stairs.xml.h:6
@@ -7092,9 +7414,7 @@ msgid "Stairs"
 msgstr ""
 
 #: hacks/config/stairs.xml.h:8
-msgid ""
-"by Marcelo Vianna's third Escher GL hack, this one draws an ``infinite'' "
-"staircase."
+msgid "by Marcelo Vianna's third Escher GL hack, this one draws an ``infinite'' staircase."
 msgstr ""
 
 #: hacks/config/starfish.xml.h:1
@@ -7110,11 +7430,7 @@ msgid "Starfish"
 msgstr ""
 
 #: hacks/config/starfish.xml.h:13
-msgid ""
-"This generates a sequence of undulating, throbbing, star-like patterns which "
-"pulsate, rotate, and turn inside out. Another display mode uses these shapes "
-"to lay down a field of colors, which are then cycled. The motion is very "
-"organic. Written by Jamie Zawinski."
+msgid "This generates a sequence of undulating, throbbing, star-like patterns which pulsate, rotate, and turn inside out. Another display mode uses these shapes to lay down a field of colors, which are then cycled. The motion is very organic. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/starwars.xml.h:2
@@ -7126,10 +7442,7 @@ msgid "Centered Text"
 msgstr ""
 
 #: hacks/config/starwars.xml.h:4
-msgid ""
-"Draws a stream of text slowly scrolling into the distance at an angle, over "
-"a star field, like at the beginning of the movie of the same name. Written "
-"by Jamie Zawinski and Claudio Matauoka."
+msgid "Draws a stream of text slowly scrolling into the distance at an angle, over a star field, like at the beginning of the movie of the same name. Written by Jamie Zawinski and Claudio Matauoka."
 msgstr ""
 
 #: hacks/config/starwars.xml.h:5
@@ -7181,10 +7494,7 @@ msgid "Wrap Long Lines"
 msgstr ""
 
 #: hacks/config/stonerview.xml.h:1
-msgid ""
-"Chains of colorful squares dance around each other in complex spiral "
-"patterns. Written by Andrew Plotkin, based on SGI's `electropaint' "
-"screensaver."
+msgid "Chains of colorful squares dance around each other in complex spiral patterns. Written by Andrew Plotkin, based on SGI's `electropaint' screensaver."
 msgstr ""
 
 #: hacks/config/stonerview.xml.h:3
@@ -7196,13 +7506,11 @@ msgid "Strange"
 msgstr ""
 
 #: hacks/config/strange.xml.h:7
-msgid ""
-"This draws strange attractors: it's a colorful, unpredictably-animating "
-"field of dots that swoops and twists around. The motion is very nice. "
-"Written by Massimino Pascal."
+msgid "This draws strange attractors: it's a colorful, unpredictably-animating field of dots that swoops and twists around. The motion is very nice. Written by Massimino Pascal."
 msgstr ""
 
-#: hacks/config/substrate.xml.h:2 hacks/config/xplanet.xml.h:2
+#: hacks/config/substrate.xml.h:2
+#: hacks/config/xplanet.xml.h:2
 #, no-c-format
 msgid "0%"
 msgstr ""
@@ -7216,10 +7524,7 @@ msgid "Initial Cracks"
 msgstr ""
 
 #: hacks/config/substrate.xml.h:10
-msgid ""
-"Lines like crystals grow on a computational substrate. A simple "
-"perpendicular growth rule creates intricate city-like structures. By J. "
-"Tarbell and Mike Kershaw."
+msgid "Lines like crystals grow on a computational substrate. A simple perpendicular growth rule creates intricate city-like structures. By J. Tarbell and Mike Kershaw."
 msgstr ""
 
 #: hacks/config/substrate.xml.h:13
@@ -7235,10 +7540,7 @@ msgid "Wireframe only"
 msgstr ""
 
 #: hacks/config/superquadrics.xml.h:3
-msgid ""
-"Ed Mackey reports that he wrote the first version of this program in BASIC "
-"on a Commodore 64 in 1987, as a 320x200 black and white wireframe. Now it is "
-"GL and has specular reflections."
+msgid "Ed Mackey reports that he wrote the first version of this program in BASIC on a Commodore 64 in 1987, as a 320x200 black and white wireframe. Now it is GL and has specular reflections."
 msgstr ""
 
 #: hacks/config/superquadrics.xml.h:11
@@ -7246,10 +7548,7 @@ msgid "Superquadrics"
 msgstr ""
 
 #: hacks/config/swirl.xml.h:4
-msgid ""
-"More flowing, swirly patterns. This version is by M. Dobie and R. Taylor, "
-"but you might have seen a Mac program similar to this called FlowFazer. "
-"There is also a cool Java applet of a similar concept."
+msgid "More flowing, swirly patterns. This version is by M. Dobie and R. Taylor, but you might have seen a Mac program similar to this called FlowFazer. There is also a cool Java applet of a similar concept."
 msgstr ""
 
 #: hacks/config/swirl.xml.h:8
@@ -7289,9 +7588,7 @@ msgid "T3D"
 msgstr ""
 
 #: hacks/config/t3d.xml.h:15
-msgid ""
-"This draws a working analog clock composed of floating, throbbing bubbles. "
-"Written by Bernd Paysan."
+msgid "This draws a working analog clock composed of floating, throbbing bubbles. Written by Bernd Paysan."
 msgstr ""
 
 #: hacks/config/t3d.xml.h:16
@@ -7303,9 +7600,7 @@ msgid "Wobbliness"
 msgstr ""
 
 #: hacks/config/thornbird.xml.h:1
-msgid ""
-"Displays a view of the ``Bird in a Thornbush'' fractal. Written by Tim "
-"Auckland."
+msgid "Displays a view of the ``Bird in a Thornbush'' fractal. Written by Tim Auckland."
 msgstr ""
 
 #: hacks/config/thornbird.xml.h:6
@@ -7317,9 +7612,7 @@ msgid "Thornbird"
 msgstr ""
 
 #: hacks/config/triangle.xml.h:2
-msgid ""
-"Generates random mountain ranges using iterative subdivision of triangles. "
-"Written by Tobias Gloth."
+msgid "Generates random mountain ranges using iterative subdivision of triangles. Written by Tobias Gloth."
 msgstr ""
 
 #: hacks/config/triangle.xml.h:7
@@ -7327,9 +7620,7 @@ msgid "Triangle"
 msgstr ""
 
 #: hacks/config/truchet.xml.h:4
-msgid ""
-"This draws line- and arc-based Truchet patterns that tile the screen. "
-"Written by Adrian Likins."
+msgid "This draws line- and arc-based Truchet patterns that tile the screen. Written by Adrian Likins."
 msgstr ""
 
 #: hacks/config/truchet.xml.h:5
@@ -7337,8 +7628,7 @@ msgid "Truchet"
 msgstr ""
 
 #: hacks/config/twang.xml.h:2
-msgid ""
-"Divides the screen into a grid, and plucks them. Written by Dan Bornstein."
+msgid "Divides the screen into a grid, and plucks them. Written by Dan Bornstein."
 msgstr ""
 
 #: hacks/config/twang.xml.h:6
@@ -7367,20 +7657,14 @@ msgstr ""
 
 #: hacks/config/vidwhacker.xml.h:2
 msgid "2 seconds"
-msgstr ""
+msgstr "2 secondi"
 
 #: hacks/config/vidwhacker.xml.h:4
 msgid "Image Directory"
 msgstr ""
 
 #: hacks/config/vidwhacker.xml.h:5
-msgid ""
-"This is actually just a shell script that grabs a frame of video from the "
-"system's video input, and then uses some PBM filters (chosen at random) to "
-"manipulate and recombine the video frame in various ways (edge detection, "
-"subtracting the image from a rotated version of itself, etc.) Then it "
-"displays that image for a few seconds, and does it again. This works really "
-"well if you just feed broadcast television into it."
+msgid "This is actually just a shell script that grabs a frame of video from the system's video input, and then uses some PBM filters (chosen at random) to manipulate and recombine the video frame in various ways (edge detection, subtracting the image from a rotated version of itself, etc.) Then it displays that image for a few seconds, and does it again. This works really well if you just feed broadcast television into it."
 msgstr ""
 
 #: hacks/config/vidwhacker.xml.h:6
@@ -7388,10 +7672,7 @@ msgid "VidWhacker"
 msgstr ""
 
 #: hacks/config/vines.xml.h:6
-msgid ""
-"This one generates a continuous sequence of small, curvy geometric patterns. "
-"It scatters them around your screen until it fills up, then it clears the "
-"screen and starts over. Written by Tracy Camp and David Hansen."
+msgid "This one generates a continuous sequence of small, curvy geometric patterns. It scatters them around your screen until it fills up, then it clears the screen and starts over. Written by Tracy Camp and David Hansen."
 msgstr ""
 
 #: hacks/config/vines.xml.h:8
@@ -7403,8 +7684,7 @@ msgid "Draw Spots"
 msgstr ""
 
 #: hacks/config/wander.xml.h:6
-msgid ""
-"Draws a colorful random-walk, in various forms. Written by Rick Campbell."
+msgid "Draws a colorful random-walk, in various forms. Written by Rick Campbell."
 msgstr ""
 
 #: hacks/config/wander.xml.h:14
@@ -7440,14 +7720,7 @@ msgid "Per-Image Filter Program"
 msgstr ""
 
 #: hacks/config/webcollage.xml.h:9
-msgid ""
-"This program makes collages out of random images pulled off of the World "
-"Wide Web. It finds these images by doing random web searches, and then "
-"extracting images from the returned pages. It can also be set up to filter "
-"the images through the `VidWhacker' program. WARNING: THE INTERNET SOMETIMES "
-"CONTAINS PORNOGRAPHY. The Internet being what it is, absolutely anything "
-"might show up in the collage including -- quite possibly -- pornography, or "
-"even nudity. Please act accordingly. Written by Jamie Zawinski."
+msgid "This program makes collages out of random images pulled off of the World Wide Web. It finds these images by doing random web searches, and then extracting images from the returned pages. It can also be set up to filter the images through the `VidWhacker' program. WARNING: THE INTERNET SOMETIMES CONTAINS PORNOGRAPHY. The Internet being what it is, absolutely anything might show up in the collage including -- quite possibly -- pornography, or even nudity. Please act accordingly. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/webcollage.xml.h:10
@@ -7459,10 +7732,7 @@ msgid "WebCollage"
 msgstr ""
 
 #: hacks/config/whirlwindwarp.xml.h:2
-msgid ""
-"Floating stars are acted upon by a mixture of simple 2D forcefields. The "
-"strength of each forcefield changes continuously, and it is also switched on "
-"and off at random. By Paul 'Joey' Clark."
+msgid "Floating stars are acted upon by a mixture of simple 2D forcefields. The strength of each forcefield changes continuously, and it is also switched on and off at random. By Paul 'Joey' Clark."
 msgstr ""
 
 #: hacks/config/whirlwindwarp.xml.h:7
@@ -7546,16 +7816,11 @@ msgid "Wormhole"
 msgstr ""
 
 #: hacks/config/wormhole.xml.h:9
-msgid ""
-"Wormhole simulates flying through a colored wormhole in space. Written by "
-"Jon Rafkind."
+msgid "Wormhole simulates flying through a colored wormhole in space. Written by Jon Rafkind."
 msgstr ""
 
 #: hacks/config/worm.xml.h:1
-msgid ""
-"An ancient xlock hack that draws multicolored worms that crawl around the "
-"screen. Written by Brad Taylor, Dave Lemke, Boris Putanec, and Henrik "
-"Theiling."
+msgid "An ancient xlock hack that draws multicolored worms that crawl around the screen. Written by Brad Taylor, Dave Lemke, Boris Putanec, and Henrik Theiling."
 msgstr ""
 
 #: hacks/config/xanalogtv.xml.h:1
@@ -7563,12 +7828,7 @@ msgid "XAnalogTV"
 msgstr ""
 
 #: hacks/config/xanalogtv.xml.h:2
-msgid ""
-"XAnalogTV shows a detailed simulation of an old TV set showing various test "
-"patterns, with various picture artifacts like snow, bloom, distortion, "
-"ghosting, and hash noise. It also simulates the TV warming up. It will cycle "
-"through 12 channels, some with images you give it, and some with color bars "
-"or nothing but static. By Trevor Blackwell."
+msgid "XAnalogTV shows a detailed simulation of an old TV set showing various test patterns, with various picture artifacts like snow, bloom, distortion, ghosting, and hash noise. It also simulates the TV warming up. It will cycle through 12 channels, some with images you give it, and some with color bars or nothing but static. By Trevor Blackwell."
 msgstr ""
 
 #: hacks/config/xaos.xml.h:1
@@ -7576,11 +7836,7 @@ msgid "XaoS"
 msgstr ""
 
 #: hacks/config/xaos.xml.h:2
-msgid ""
-"XaoS generates fast fly-through animations of the Mandelbrot and other "
-"fractal sets. Written by Thomas Marsh and Jan Hubicka. This is not included "
-"with the XScreenSaver package, but if you don't have it already, you can "
-"find it at &lt;http://xaos.theory.org/&gt;."
+msgid "XaoS generates fast fly-through animations of the Mandelbrot and other fractal sets. Written by Thomas Marsh and Jan Hubicka. This is not included with the XScreenSaver package, but if you don't have it already, you can find it at &lt;http://xaos.theory.org/&gt;."
 msgstr ""
 
 #: hacks/config/xdaliclock.xml.h:1
@@ -7603,7 +7859,8 @@ msgstr ""
 msgid "Huge Font"
 msgstr ""
 
-#: hacks/config/xdaliclock.xml.h:6 hacks/config/xmatrix.xml.h:10
+#: hacks/config/xdaliclock.xml.h:6
+#: hacks/config/xmatrix.xml.h:10
 msgid "Large Font"
 msgstr ""
 
@@ -7611,7 +7868,8 @@ msgstr ""
 msgid "Medium Font"
 msgstr ""
 
-#: hacks/config/xdaliclock.xml.h:8 hacks/config/xmatrix.xml.h:16
+#: hacks/config/xdaliclock.xml.h:8
+#: hacks/config/xmatrix.xml.h:16
 msgid "Small Font"
 msgstr ""
 
@@ -7620,18 +7878,15 @@ msgid "XDaliClock"
 msgstr ""
 
 #: hacks/config/xdaliclock.xml.h:10
-msgid ""
-"XDaliClock draws a large digital clock, the numbers of which change by "
-"``melting'' into their new shapes. Written by Jamie Zawinski. This is not "
-"included with the XScreenSaver package, but if you don't have it already, "
-"you can find it at &lt;http://www.jwz.org/xdaliclock/&gt;."
+msgid "XDaliClock draws a large digital clock, the numbers of which change by ``melting'' into their new shapes. Written by Jamie Zawinski. This is not included with the XScreenSaver package, but if you don't have it already, you can find it at &lt;http://www.jwz.org/xdaliclock/&gt;."
 msgstr ""
 
 #: hacks/config/xearth.xml.h:1
 msgid "Bright"
 msgstr ""
 
-#: hacks/config/xearth.xml.h:2 hacks/config/xplanet.xml.h:7
+#: hacks/config/xearth.xml.h:2
+#: hacks/config/xplanet.xml.h:7
 msgid "Date/Time Stamp"
 msgstr ""
 
@@ -7647,15 +7902,18 @@ msgstr ""
 msgid "Label Cities"
 msgstr ""
 
-#: hacks/config/xearth.xml.h:9 hacks/config/xplanet.xml.h:49
+#: hacks/config/xearth.xml.h:9
+#: hacks/config/xplanet.xml.h:49
 msgid "Lower Left"
 msgstr ""
 
-#: hacks/config/xearth.xml.h:10 hacks/config/xplanet.xml.h:50
+#: hacks/config/xearth.xml.h:10
+#: hacks/config/xplanet.xml.h:50
 msgid "Lower Right"
 msgstr ""
 
-#: hacks/config/xearth.xml.h:13 hacks/config/xplanet.xml.h:51
+#: hacks/config/xearth.xml.h:13
+#: hacks/config/xplanet.xml.h:51
 msgid "Mercator Projection"
 msgstr ""
 
@@ -7671,11 +7929,13 @@ msgstr ""
 msgid "North/South Rotation"
 msgstr ""
 
-#: hacks/config/xearth.xml.h:18 hacks/config/xplanet.xml.h:53
+#: hacks/config/xearth.xml.h:18
+#: hacks/config/xplanet.xml.h:53
 msgid "Orthographic Projection"
 msgstr ""
 
-#: hacks/config/xearth.xml.h:19 hacks/config/xplanet.xml.h:56
+#: hacks/config/xearth.xml.h:19
+#: hacks/config/xplanet.xml.h:56
 msgid "Real Time"
 msgstr ""
 
@@ -7691,26 +7951,23 @@ msgstr ""
 msgid "Terminator   Blurry"
 msgstr ""
 
-#: hacks/config/xearth.xml.h:27 hacks/config/xplanet.xml.h:61
+#: hacks/config/xearth.xml.h:27
+#: hacks/config/xplanet.xml.h:61
 msgid "Time Warp"
 msgstr ""
 
-#: hacks/config/xearth.xml.h:29 hacks/config/xplanet.xml.h:62
+#: hacks/config/xearth.xml.h:29
+#: hacks/config/xplanet.xml.h:62
 msgid "Upper Left"
 msgstr ""
 
-#: hacks/config/xearth.xml.h:30 hacks/config/xplanet.xml.h:63
+#: hacks/config/xearth.xml.h:30
+#: hacks/config/xplanet.xml.h:63
 msgid "Upper Right"
 msgstr ""
 
 #: hacks/config/xearth.xml.h:31
-msgid ""
-"XEarth draws an image of the Earth, as seen from your favorite vantage point "
-"in space, correctly shaded for the current position of the Sun. Written by "
-"Kirk Johnson. This is not included with the XScreenSaver package, but if you "
-"don't have it already, you can find it at &lt;http://www.cs.colorado.edu/"
-"~tuna/xearth/&gt;. There is also a similar (but more recent) program called "
-"xplanet to be found at &lt;http://xplanet.sourceforge.net/&gt;."
+msgid "XEarth draws an image of the Earth, as seen from your favorite vantage point in space, correctly shaded for the current position of the Sun. Written by Kirk Johnson. This is not included with the XScreenSaver package, but if you don't have it already, you can find it at &lt;http://www.cs.colorado.edu/~tuna/xearth/&gt;. There is also a similar (but more recent) program called xplanet to be found at &lt;http://xplanet.sourceforge.net/&gt;."
 msgstr ""
 
 #: hacks/config/xearth.xml.h:32
@@ -7726,10 +7983,7 @@ msgid "Fish Speed"
 msgstr ""
 
 #: hacks/config/xfishtank.xml.h:7
-msgid ""
-"Fish! This is not included with the XScreenSaver package, but if you don't "
-"have it already, you can find it at &lt;http://metalab.unc.edu/pub/Linux/X11/"
-"demos/&gt;."
+msgid "Fish! This is not included with the XScreenSaver package, but if you don't have it already, you can find it at &lt;http://metalab.unc.edu/pub/Linux/X11/demos/&gt;."
 msgstr ""
 
 #: hacks/config/xfishtank.xml.h:12
@@ -7741,9 +7995,7 @@ msgid "Bitmap File"
 msgstr ""
 
 #: hacks/config/xflame.xml.h:2
-msgid ""
-"Draws a simulation of pulsing fire. It can also take an arbitrary image and "
-"set it on fire too. Written by Carsten Haitzler, hacked on by many others."
+msgid "Draws a simulation of pulsing fire. It can also take an arbitrary image and set it on fire too. Written by Carsten Haitzler, hacked on by many others."
 msgstr ""
 
 #: hacks/config/xflame.xml.h:3
@@ -7755,11 +8007,7 @@ msgid "Xflame"
 msgstr ""
 
 #: hacks/config/xjack.xml.h:4
-msgid ""
-"This program behaves schizophrenically and makes a lot of typos. Written by "
-"Jamie Zawinski. If you haven't seen Stanley Kubrick's masterpiece, ``The "
-"Shining,'' you won't get it. Those who have describe this hack as "
-"``inspired.''"
+msgid "This program behaves schizophrenically and makes a lot of typos. Written by Jamie Zawinski. If you haven't seen Stanley Kubrick's masterpiece, ``The Shining,'' you won't get it. Those who have describe this hack as ``inspired.''"
 msgstr ""
 
 #: hacks/config/xjack.xml.h:5
@@ -7767,10 +8015,7 @@ msgid "Xjack"
 msgstr ""
 
 #: hacks/config/xlyap.xml.h:1
-msgid ""
-"This generates pretty fractal pictures by doing funky math involving the "
-"``Lyapunov exponent.'' It has a cool interactive mode, too. Written by Ron "
-"Record."
+msgid "This generates pretty fractal pictures by doing funky math involving the ``Lyapunov exponent.'' It has a cool interactive mode, too. Written by Ron Record."
 msgstr ""
 
 #: hacks/config/xlyap.xml.h:2
@@ -7778,11 +8023,7 @@ msgid "Xlyap"
 msgstr ""
 
 #: hacks/config/xmatrix.xml.h:3
-msgid ""
-"Draws dropping characters similar to what is seen on the computer monitors "
-"in \"The Matrix\". See also \"glmatrix\" for a 3D rendering of the similar "
-"effect that appeared in the title sequence of the movie. Written by Jamie "
-"Zawinski."
+msgid "Draws dropping characters similar to what is seen on the computer monitors in \"The Matrix\". See also \"glmatrix\" for a 3D rendering of the similar effect that appeared in the title sequence of the movie. Written by Jamie Zawinski."
 msgstr ""
 
 #: hacks/config/xmatrix.xml.h:4
@@ -7938,12 +8179,7 @@ msgid "Viewpoint"
 msgstr ""
 
 #: hacks/config/xmountains.xml.h:35
-msgid ""
-"XMountains generates realistic-looking fractal terrains of snow-capped "
-"mountains near water, with either a top view or a side view. Written by "
-"Stephen Booth. This is not included with the XScreenSaver package, but if "
-"you don't have it already, you can find it at &lt;http://www.epcc.ed.ac.uk/"
-"~spb/xmountains/&gt;. (Make sure you have version 2.7 or newer!)"
+msgid "XMountains generates realistic-looking fractal terrains of snow-capped mountains near water, with either a top view or a side view. Written by Stephen Booth. This is not included with the XScreenSaver package, but if you don't have it already, you can find it at &lt;http://www.epcc.ed.ac.uk/~spb/xmountains/&gt;. (Make sure you have version 2.7 or newer!)"
 msgstr ""
 
 #: hacks/config/xmountains.xml.h:36
@@ -8291,18 +8527,11 @@ msgid "Xplanet"
 msgstr ""
 
 #: hacks/config/xplanet.xml.h:101
-msgid ""
-"Xplanet draws an image of the Earth, as seen from your favorite vantage "
-"point in space, correctly shaded for the current position of the Sun. "
-"Written by Hari Nair. This is not included with the XScreenSaver package, "
-"but if you don't have it already, you can find it at &lt;http://xplanet."
-"sourceforge.net/&gt;."
+msgid "Xplanet draws an image of the Earth, as seen from your favorite vantage point in space, correctly shaded for the current position of the Sun. Written by Hari Nair. This is not included with the XScreenSaver package, but if you don't have it already, you can find it at &lt;http://xplanet.sourceforge.net/&gt;."
 msgstr ""
 
 #: hacks/config/xrayswarm.xml.h:1
-msgid ""
-"Draws a few swarms of critters flying around the screen, with nicely faded "
-"color trails behind them. Written by Chris Leger."
+msgid "Draws a few swarms of critters flying around the screen, with nicely faded color trails behind them. Written by Chris Leger."
 msgstr ""
 
 #: hacks/config/xrayswarm.xml.h:5
@@ -8310,9 +8539,7 @@ msgid "XRaySwarm"
 msgstr ""
 
 #: hacks/config/xsnow.xml.h:1
-msgid ""
-"Draws falling snow and the occasional tiny Santa. By Rick Jansen. You can "
-"find it at &lt;http://www.euronet.nl/~rja/Xsnow/&gt;."
+msgid "Draws falling snow and the occasional tiny Santa. By Rick Jansen. You can find it at &lt;http://www.euronet.nl/~rja/Xsnow/&gt;."
 msgstr ""
 
 #: hacks/config/xsnow.xml.h:2
@@ -8320,9 +8547,7 @@ msgid "Xsnow"
 msgstr ""
 
 #: hacks/config/xspirograph.xml.h:5
-msgid ""
-"Simulates that pen-in-nested-plastic-gears toy from your childhood. By Rohit "
-"Singh."
+msgid "Simulates that pen-in-nested-plastic-gears toy from your childhood. By Rohit Singh."
 msgstr ""
 
 #: hacks/config/xspirograph.xml.h:6
@@ -8350,9 +8575,7 @@ msgid "XTeeVee"
 msgstr ""
 
 #: hacks/config/xteevee.xml.h:6
-msgid ""
-"XTeeVee simulates various television problems, including static, loss of "
-"vertical hold, and a test pattern. By Greg Knauss."
+msgid "XTeeVee simulates various television problems, including static, loss of vertical hold, and a test pattern. By Greg Knauss."
 msgstr ""
 
 #: hacks/config/zoom.xml.h:3
@@ -8364,10 +8587,7 @@ msgid "Lenses"
 msgstr ""
 
 #: hacks/config/zoom.xml.h:9
-msgid ""
-"Zooms in on a part of the screen and then moves around. With the -lenses "
-"option the result is like looking through many overlapping lenses rather "
-"than just a simple zoom. Written by James Macnicol."
+msgid "Zooms in on a part of the screen and then moves around. With the -lenses option the result is like looking through many overlapping lenses rather than just a simple zoom. Written by James Macnicol."
 msgstr ""
 
 #~ msgid "Configure the settings of the screensaver."
@@ -8376,3 +8596,4 @@ msgstr ""
 #, fuzzy
 #~ msgid "Preview of screen saver"
 #~ msgstr "Salvaschermo"
+
diff --git a/po/nb.po b/po/nb.po
new file mode 100644 (file)
index 0000000..3669f86
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,8657 @@
+# Norwegian translation of control-center (bokmål dialect).
+# Copyright (C) 1999,2000 Free Software Foundation, Inc.
+# Kjartan Maraas <kmaraas@gnome.org>, 1999,2000.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: control-center 1.5.8\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-02-28 21:49+0100\n"
+"PO-Revision-Date: 2002-09-03 18:28+0200\n"
+"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
+"Language-Team: Norwegian <no@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: driver/demo-Gtk.c:656
+msgid "For updates, check http://www.jwz.org/xscreensaver/"
+msgstr "For oppdateringer, sjekk http://www.jwz.org/xscreensaver/"
+
+#: driver/demo-Gtk.c:748 driver/demo-Gtk-widgets.c:1709
+#: driver/xscreensaver-demo.glade.h:54
+msgid "OK"
+msgstr "OK"
+
+#: driver/demo-Gtk.c:786
+msgid ""
+"Error:\n"
+"\n"
+"No Help URL has been specified.\n"
+msgstr ""
+"Feil:\n"
+"\n"
+"Ingen URL oppgitt for hjelp.\n"
+
+#: driver/demo-Gtk.c:873
+msgid ""
+"Error:\n"
+"\n"
+"The xscreensaver daemon did not start up properly.\n"
+"\n"
+msgstr ""
+"Feil:\n"
+"\n"
+"Xscreensaver daemonen startet ikke opp riktig.\n"
+
+#: driver/demo-Gtk.c:885
+msgid ""
+"You are running as root.  This usually means that xscreensaver\n"
+"was unable to contact your X server because access control is\n"
+"turned on.  Try running this command:\n"
+"\n"
+"                        xhost +localhost\n"
+"\n"
+"and then selecting `File / Restart Daemon'.\n"
+"\n"
+"Note that turning off access control will allow anyone logged\n"
+"on to this machine to access your screen, which might be\n"
+"considered a security problem.  Please read the xscreensaver\n"
+"manual and FAQ for more information.\n"
+"\n"
+"You shouldn't run X as root. Instead, you should log in as a\n"
+"normal user, and `su' as necessary."
+msgstr ""
+
+#: driver/demo-Gtk.c:901
+msgid "Please check your $PATH and permissions."
+msgstr "Vennligst sjekk $PATH og rettigheter."
+
+#: driver/demo-Gtk.c:936
+msgid ""
+"Error:\n"
+"\n"
+"Couldn't determine init file name!\n"
+msgstr ""
+"Feil:\n"
+"\n"
+"Kunne ikke bestemme navn på initieringsfil!\n"
+
+#: driver/demo-Gtk.c:941
+#, c-format
+msgid ""
+"Error:\n"
+"\n"
+"Couldn't write %s\n"
+msgstr ""
+"Feil:\n"
+"\n"
+"Kunne ikke skrive %s\n"
+
+#: driver/demo-Gtk.c:1000
+msgid ""
+"Error:\n"
+"\n"
+"no `manualCommand' resource set."
+msgstr ""
+"Feil:\n"
+"\n"
+"ingen «manualCommand»-ressurs satt."
+
+#: driver/demo-Gtk.c:1181
+#, c-format
+msgid ""
+"Error:\n"
+"\n"
+"Unparsable time format: \"%s\"\n"
+msgstr ""
+"Feil:\n"
+"\n"
+"Forstår ikke tidsformatet: «%s»\n"
+
+#: driver/demo-Gtk.c:1546 driver/demo-Gtk.c:2874
+#: driver/demo-Gtk-widgets.c:1550 driver/demo-Gtk-widgets.c:1573
+#: driver/xscreensaver-demo.glade.h:5 driver/xscreensaver-demo.glade2.h:3
+msgid "Any"
+msgstr "Enhver"
+
+#: driver/demo-Gtk.c:1837
+#, c-format
+msgid ""
+"Error:\n"
+"\n"
+"Directory does not exist: \"%s\"\n"
+msgstr ""
+"Feil:\n"
+"\n"
+"Katalogen eksisterer ikke: «%s»\n"
+
+#: driver/demo-Gtk.c:2142 driver/demo-Gtk-widgets.c:571
+#: driver/xscreensaver-demo.glade.h:75
+msgid "Use"
+msgstr "Bruk"
+
+#: driver/demo-Gtk.c:2152 driver/demo-Gtk-widgets.c:591
+#: driver/xscreensaver-demo.glade.h:63
+msgid "Screen Saver"
+msgstr "Skjermsparer"
+
+#: driver/demo-Gtk.c:2556
+msgid "Descriptions not available: no XML support compiled in."
+msgstr "Beskrivelser ikke tilgjengelig: ingen støtte for XML kompilert inn."
+
+#: driver/demo-Gtk.c:2561
+msgid "No description available."
+msgstr "Ingen beskrivelse tilgjengelig."
+
+#: driver/demo-Gtk.c:2826
+msgid "Blank Screen"
+msgstr "Blank skjerm"
+
+#: driver/demo-Gtk.c:2832
+msgid "Screen Saver Disabled"
+msgstr "Skjermsparer deaktivert"
+
+#: driver/demo-Gtk.c:2855 driver/demo-Gtk-widgets.c:482
+#: driver/xscreensaver-demo.glade.h:58
+msgid "Preview"
+msgstr "Forhåndsvisning"
+
+#: driver/demo-Gtk.c:2865
+#, c-format
+msgid "%s: %.100s Settings"
+msgstr ""
+
+#: driver/demo-Gtk.c:3020
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"file \"%s\" has changed, reloading.\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:3102
+msgid "No Preview"
+msgstr "Ingen forhåndsvisning"
+
+#: driver/demo-Gtk.c:3102
+msgid "Available"
+msgstr "Tilgjengelig"
+
+#: driver/demo-Gtk.c:3103
+msgid "Not"
+msgstr ""
+
+#: driver/demo-Gtk.c:3103
+msgid "Installed"
+msgstr ""
+
+#: driver/demo-Gtk.c:3868
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"The XScreenSaver daemon doesn't seem to be running\n"
+"on display \"%s\".  Launch it now?"
+msgstr ""
+
+#: driver/demo-Gtk.c:3878
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"%s is running as user \"%s\" on host \"%s\".\n"
+"But the xscreensaver managing display \"%s\"\n"
+"is running as user \"%s\" on host \"%s\".\n"
+"\n"
+"Since they are different users, they won't be reading/writing\n"
+"the same ~/.xscreensaver file, so %s isn't\n"
+"going to work right.\n"
+"\n"
+"You should either re-run %s as \"%s\", or re-run\n"
+"xscreensaver as \"%s\".\n"
+"\n"
+"Restart the xscreensaver daemon now?\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:3903
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"%s is running as user \"%s\" on host \"%s\".\n"
+"But the xscreensaver managing display \"%s\"\n"
+"is running as user \"%s\" on host \"%s\".\n"
+"\n"
+"If those two machines don't share a file system (that is,\n"
+"if they don't see the same ~%s/.xscreensaver file) then\n"
+"%s won't work right.\n"
+"\n"
+"Restart the daemon on \"%s\" as \"%s\" now?\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:3925
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"This is %s version %s.\n"
+"But the xscreensaver managing display \"%s\"\n"
+"is version %s.  This could cause problems.\n"
+"\n"
+"Restart the xscreensaver daemon now?\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:4382
+#, c-format
+msgid "%s: unknown option: %s\n"
+msgstr "%s: ukjent flagg: %s\n"
+
+#: driver/demo-Gtk.c:4446
+#, fuzzy
+msgid "Screensaver Preferences"
+msgstr "Skjermsparer"
+
+#: driver/demo-Gtk-conf.c:818
+msgid "Browse..."
+msgstr "Bla gjennom..."
+
+#: driver/demo-Gtk-conf.c:1110
+msgid "Select file."
+msgstr "Velg fil."
+
+#: driver/demo-Gtk-support.c:135
+#, c-format
+msgid "Couldn't find pixmap file: %s"
+msgstr "Kunne ikke finne pixmap-fil: %s"
+
+#: driver/demo-Gtk-support.c:147 driver/demo-Gtk-support.c:179
+#, c-format
+msgid "Error loading pixmap file: %s"
+msgstr "Feil under lasting av pixmap-fil: %s"
+
+#: driver/demo-Gtk-support.c:182
+#, c-format
+msgid "reason: %s\n"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:161 driver/xscreensaver-demo.glade.h:89
+#: driver/xscreensaver-demo.glade2.h:65
+msgid "XScreenSaver"
+msgstr "XScreenSaver"
+
+#: driver/demo-Gtk-widgets.c:182 driver/xscreensaver-demo.glade2.h:76
+msgid "_File"
+msgstr "_Fil"
+
+#: driver/demo-Gtk-widgets.c:202 driver/xscreensaver-demo.glade.h:93
+#: driver/xscreensaver-demo.glade2.h:70
+msgid "_Blank Screen Now"
+msgstr "_Blank ut skjermen nå"
+
+#: driver/demo-Gtk-widgets.c:211 driver/xscreensaver-demo.glade.h:2
+msgid ""
+"Activate the XScreenSaver daemon now (locking the screen if so configured.)"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:215 driver/xscreensaver-demo.glade.h:97
+#: driver/xscreensaver-demo.glade2.h:80
+msgid "_Lock Screen Now"
+msgstr "_Lås skjermen nå"
+
+#: driver/demo-Gtk-widgets.c:224 driver/xscreensaver-demo.glade.h:51
+msgid "Lock the screen now (even if \"Lock Screen\" is unchecked.)"
+msgstr "Lås skjermen nå (selv om «Lås skjerm» ikke er avkrysset.)"
+
+#: driver/demo-Gtk-widgets.c:228 driver/xscreensaver-demo.glade.h:96
+#: driver/xscreensaver-demo.glade2.h:78
+msgid "_Kill Daemon"
+msgstr "_Terminer daemon"
+
+#: driver/demo-Gtk-widgets.c:237 driver/xscreensaver-demo.glade.h:71
+msgid "Tell the running XScreenSaver daemon to exit."
+msgstr "Be kjørende XScreenSaver daemon om å avslutte."
+
+#: driver/demo-Gtk-widgets.c:241 driver/xscreensaver-demo.glade.h:98
+#: driver/xscreensaver-demo.glade2.h:86
+msgid "_Restart Daemon"
+msgstr "Sta_rt daemon på nytt"
+
+#: driver/demo-Gtk-widgets.c:250 driver/xscreensaver-demo.glade.h:49
+msgid "Kill and re-launch the XScreenSaver daemon."
+msgstr "Terminer og start XScreeSaver daemon på nytt."
+
+#: driver/demo-Gtk-widgets.c:263 driver/xscreensaver-demo.glade.h:95
+msgid "_Exit"
+msgstr "_Avslutt"
+
+#: driver/demo-Gtk-widgets.c:272 driver/xscreensaver-demo.glade.h:33
+msgid ""
+"Exit the xscreensaver-demo program (but leave the XScreenSaver daemon "
+"running in the background.)"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:276 driver/xscreensaver-demo.glade2.h:77
+msgid "_Help"
+msgstr "_Hjelp"
+
+#: driver/demo-Gtk-widgets.c:296 driver/xscreensaver-demo.glade.h:92
+#: driver/xscreensaver-demo.glade2.h:66
+msgid "_About..."
+msgstr "_Om..."
+
+#: driver/demo-Gtk-widgets.c:305 driver/xscreensaver-demo.glade.h:30
+msgid "Display version information."
+msgstr "Vis versjonsinformasjon."
+
+#: driver/demo-Gtk-widgets.c:309 driver/xscreensaver-demo.glade.h:94
+#: driver/xscreensaver-demo.glade2.h:75
+msgid "_Documentation..."
+msgstr "_Dokumentasjon..."
+
+#: driver/demo-Gtk-widgets.c:318 driver/xscreensaver-demo.glade.h:38
+msgid "Go to the documentation on the XScreenSaver web page."
+msgstr "Gå til dokumentasjonen på nettsidene til XScreenSaver."
+
+#: driver/demo-Gtk-widgets.c:348 driver/xscreensaver-demo.glade.h:18
+msgid "Cycle After"
+msgstr "Skift etter"
+
+#: driver/demo-Gtk-widgets.c:370 driver/xscreensaver-demo.glade.h:78
+#: driver/xscreensaver-demo.glade2.h:54
+msgid "Whether a password should be required to un-blank the screen."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:372 driver/xscreensaver-demo.glade.h:50
+msgid "Lock Screen After"
+msgstr "Lås skjermen etter"
+
+#: driver/demo-Gtk-widgets.c:380 driver/xscreensaver-demo.glade.h:8
+msgid "Blank After"
+msgstr "Blank ut etter"
+
+#: driver/demo-Gtk-widgets.c:403 driver/demo-Gtk-widgets.c:453
+#: driver/demo-Gtk-widgets.c:467 driver/demo-Gtk-widgets.c:1016
+#: driver/xscreensaver-demo.glade.h:43
+msgid "How long before the monitor goes completely black."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:407 driver/demo-Gtk-widgets.c:419
+#: driver/demo-Gtk-widgets.c:431 driver/demo-Gtk-widgets.c:1020
+#: driver/demo-Gtk-widgets.c:1032 driver/demo-Gtk-widgets.c:1044
+#: driver/xscreensaver-demo.glade.h:99 driver/xscreensaver-demo.glade2.h:92
+msgid "minutes"
+msgstr "minutter"
+
+#: driver/demo-Gtk-widgets.c:490 driver/xscreensaver-demo.glade.h:21
+#: driver/xscreensaver-demo.glade2.h:12
+msgid ""
+"Demo the selected screen saver in full-screen mode (click the mouse to "
+"return.)"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:492 driver/xscreensaver-demo.glade.h:65
+msgid "Settings..."
+msgstr "Innstillinger..."
+
+#: driver/demo-Gtk-widgets.c:500 driver/xscreensaver-demo.glade.h:17
+#: driver/xscreensaver-demo.glade2.h:9
+msgid "Customization and explanation of the selected screen saver."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:521 driver/xscreensaver-demo.glade.h:52
+msgid "Mode:"
+msgstr "Modus:"
+
+#: driver/demo-Gtk-widgets.c:539 driver/xscreensaver-demo.glade.h:25
+#: driver/xscreensaver-demo.glade2.h:16
+msgid "Disable Screen Saver"
+msgstr "Slå av skjermsparer"
+
+#: driver/demo-Gtk-widgets.c:542 driver/xscreensaver-demo.glade.h:9
+#: driver/xscreensaver-demo.glade2.h:5
+msgid "Blank Screen Only"
+msgstr "Kun blank ut skjerm"
+
+#: driver/demo-Gtk-widgets.c:545 driver/xscreensaver-demo.glade.h:56
+#: driver/xscreensaver-demo.glade2.h:42
+msgid "Only One Screen Saver"
+msgstr "Kun én skjermsparer"
+
+#: driver/demo-Gtk-widgets.c:548 driver/xscreensaver-demo.glade.h:60
+#: driver/xscreensaver-demo.glade2.h:44
+msgid "Random Screen Saver"
+msgstr "Tilfeldig skjermsparer"
+
+#: driver/demo-Gtk-widgets.c:644 driver/xscreensaver-demo.glade.h:91
+msgid "\\/"
+msgstr "\\/"
+
+#: driver/demo-Gtk-widgets.c:652 driver/xscreensaver-demo.glade.h:61
+#: driver/xscreensaver-demo.glade2.h:45
+msgid ""
+"Run the next screen saver in the list in full-screen mode (click the mouse "
+"to return.)"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:654
+msgid "/\\"
+msgstr "/\\"
+
+#: driver/demo-Gtk-widgets.c:662 driver/xscreensaver-demo.glade.h:62
+#: driver/xscreensaver-demo.glade2.h:46
+msgid ""
+"Run the previous screen saver in the list in full-screen mode (click the "
+"mouse to return.)"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:664 driver/demo-Gtk-widgets.c:1607
+#: driver/xscreensaver-demo.glade.h:22 driver/xscreensaver-demo.glade2.h:13
+msgid "Description"
+msgstr "Beskrivelse"
+
+#: driver/demo-Gtk-widgets.c:691 driver/xscreensaver-demo.glade.h:26
+msgid "Display Modes"
+msgstr "Visningsmodi"
+
+#: driver/demo-Gtk-widgets.c:707 driver/xscreensaver-demo.glade.h:23
+#: driver/xscreensaver-demo.glade2.h:14
+msgid "Diagnostics"
+msgstr "Diagnostikk"
+
+#: driver/demo-Gtk-widgets.c:751 driver/xscreensaver-demo.glade.h:80
+#: driver/xscreensaver-demo.glade2.h:56
+msgid "Whether the daemon should print lots of debugging information."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:753 driver/xscreensaver-demo.glade.h:76
+msgid "Verbose Diagnostics"
+msgstr "Utfyllende diagnostikk"
+
+#: driver/demo-Gtk-widgets.c:768 driver/xscreensaver-demo.glade.h:79
+#: driver/xscreensaver-demo.glade2.h:55
+msgid ""
+"Whether any error output of the display modes should be redirected to the "
+"screen."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:770 driver/xscreensaver-demo.glade.h:29
+msgid "Display Subprocess Errors"
+msgstr "Vis feil i underprosesser"
+
+#: driver/demo-Gtk-widgets.c:785 driver/xscreensaver-demo.glade.h:87
+#: driver/xscreensaver-demo.glade2.h:63
+msgid ""
+"Whether the splash screen (with the version number and `Help' button) should "
+"be momentarily displayed when the daemon first starts up."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:787 driver/xscreensaver-demo.glade.h:28
+msgid "Display Splash Screen at Startup"
+msgstr "Vis oppstartsskjerm"
+
+#: driver/demo-Gtk-widgets.c:796 driver/xscreensaver-demo.glade.h:15
+#: driver/xscreensaver-demo.glade2.h:8
+msgid "Colormaps"
+msgstr "Fargekart"
+
+#: driver/demo-Gtk-widgets.c:840 driver/xscreensaver-demo.glade.h:88
+#: driver/xscreensaver-demo.glade2.h:64
+msgid ""
+"Whether to install a private colormap when running in 8-bit mode on the "
+"default Visual."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:842 driver/xscreensaver-demo.glade.h:48
+msgid "Install Colormap"
+msgstr "Installer fargekart"
+
+#: driver/demo-Gtk-widgets.c:865 driver/xscreensaver-demo.glade.h:86
+#: driver/xscreensaver-demo.glade2.h:62
+msgid ""
+"Whether the screen should slowly fade to black when the screen saver "
+"activates."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:867 driver/xscreensaver-demo.glade.h:36
+msgid "Fade To Black When Blanking"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:882 driver/xscreensaver-demo.glade.h:85
+#: driver/xscreensaver-demo.glade2.h:61
+msgid ""
+"Whether the screen should slowly fade in from black when the screen saver "
+"deactivates."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:884 driver/xscreensaver-demo.glade.h:35
+msgid "Fade From Black When Unblanking"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:910 driver/xscreensaver-demo.glade.h:34
+msgid "Fade Duration"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:928 driver/xscreensaver-demo.glade.h:44
+#: driver/xscreensaver-demo.glade2.h:31
+msgid "How long it should take for the screen to fade in and out."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:932 driver/xscreensaver-demo.glade.h:100
+#: driver/xscreensaver-demo.glade2.h:96
+msgid "seconds"
+msgstr "sekunder"
+
+#: driver/demo-Gtk-widgets.c:942 driver/xscreensaver-demo.glade.h:27
+#: driver/xscreensaver-demo.glade2.h:17
+msgid "Display Power Management"
+msgstr "Strømstyring for skjermen"
+
+#: driver/demo-Gtk-widgets.c:986 driver/xscreensaver-demo.glade.h:84
+#: driver/xscreensaver-demo.glade2.h:60
+msgid "Whether the monitor should be powered down after a while."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:988 driver/xscreensaver-demo.glade.h:57
+msgid "Power Management Enabled"
+msgstr "Strømstyring aktivert"
+
+#: driver/demo-Gtk-widgets.c:1056 driver/xscreensaver-demo.glade.h:55
+msgid "Off After"
+msgstr "Av etter"
+
+#: driver/demo-Gtk-widgets.c:1069 driver/xscreensaver-demo.glade.h:70
+msgid "Suspend After"
+msgstr "Pause etter"
+
+#: driver/demo-Gtk-widgets.c:1082 driver/xscreensaver-demo.glade.h:68
+msgid "Standby After"
+msgstr "Ventemodus etter"
+
+#: driver/demo-Gtk-widgets.c:1105 driver/xscreensaver-demo.glade.h:45
+#: driver/xscreensaver-demo.glade2.h:33
+msgid "How long until the monitor goes into power-saving mode."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1119 driver/xscreensaver-demo.glade.h:46
+#: driver/xscreensaver-demo.glade2.h:34
+msgid "How long until the monitor powers down."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1123 driver/xscreensaver-demo.glade.h:47
+#: driver/xscreensaver-demo.glade2.h:35
+msgid "Image Manipulation"
+msgstr "Bildemanipulering"
+
+#: driver/demo-Gtk-widgets.c:1167 driver/xscreensaver-demo.glade.h:81
+#: driver/xscreensaver-demo.glade2.h:57
+msgid ""
+"Whether the image-manipulating modes should be allowed to operate on an "
+"image of your desktop."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1169 driver/xscreensaver-demo.glade.h:39
+msgid "Grab Desktop Images"
+msgstr "Hent bilder fra skrivebordet"
+
+#: driver/demo-Gtk-widgets.c:1184 driver/xscreensaver-demo.glade.h:82
+msgid ""
+"Whether the image-manipulating modes should operate on images captured from "
+"the system's video input (if there is one)."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1186 driver/xscreensaver-demo.glade.h:40
+msgid "Grab Video Frames"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1201 driver/xscreensaver-demo.glade.h:83
+#: driver/xscreensaver-demo.glade2.h:59
+msgid ""
+"Whether the image-manipulating modes should operate on random images loaded "
+"from disk."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1203 driver/xscreensaver-demo.glade.h:12
+msgid "Choose Random Image:"
+msgstr "Velg tilfeldig bilde:"
+
+#: driver/demo-Gtk-widgets.c:1236 driver/xscreensaver-demo.glade.h:73
+#: driver/xscreensaver-demo.glade2.h:52
+msgid "The directory from which images will be randomly chosen."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1238 driver/xscreensaver-demo.glade.h:10
+msgid "Browse"
+msgstr "Bla gjennom"
+
+#: driver/demo-Gtk-widgets.c:1246 driver/demo-Gtk-widgets.c:1599
+#: driver/xscreensaver-demo.glade.h:3 driver/xscreensaver-demo.glade2.h:2
+msgid "Advanced"
+msgstr "Avansert"
+
+#: driver/demo-Gtk-widgets.c:1444 driver/xscreensaver-demo.glade.h:90
+msgid "XScreenSaver: Mode-Specific Settings"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1466 driver/xscreensaver-demo.glade.h:64
+#: driver/xscreensaver-demo.glade2.h:47
+msgid "Settings"
+msgstr "Innstillinger"
+
+#: driver/demo-Gtk-widgets.c:1495 driver/xscreensaver-demo.glade.h:66
+#: driver/xscreensaver-demo.glade2.h:49
+msgid "Standard"
+msgstr "Forvalg"
+
+#: driver/demo-Gtk-widgets.c:1532 driver/xscreensaver-demo.glade.h:77
+msgid "Visual:"
+msgstr "Synlig:"
+
+#: driver/demo-Gtk-widgets.c:1551 driver/xscreensaver-demo.glade.h:7
+#: driver/xscreensaver-demo.glade2.h:4
+msgid "Best"
+msgstr "Best"
+
+#: driver/demo-Gtk-widgets.c:1552 driver/xscreensaver-demo.glade.h:19
+#: driver/xscreensaver-demo.glade2.h:10
+msgid "Default"
+msgstr "Forvalg"
+
+#: driver/demo-Gtk-widgets.c:1553 driver/xscreensaver-demo.glade.h:20
+#: driver/xscreensaver-demo.glade2.h:11
+msgid "Default-N"
+msgstr "Forvalg-N"
+
+#: driver/demo-Gtk-widgets.c:1554 driver/xscreensaver-demo.glade.h:37
+#: driver/xscreensaver-demo.glade2.h:23
+msgid "GL"
+msgstr "GL"
+
+#: driver/demo-Gtk-widgets.c:1555 driver/xscreensaver-demo.glade.h:74
+#: driver/xscreensaver-demo.glade2.h:53
+msgid "TrueColor"
+msgstr "Sanne farger"
+
+#: driver/demo-Gtk-widgets.c:1556 driver/xscreensaver-demo.glade.h:59
+#: driver/xscreensaver-demo.glade2.h:43
+msgid "PseudoColor"
+msgstr "Pseudofarge"
+
+#: driver/demo-Gtk-widgets.c:1557 driver/xscreensaver-demo.glade.h:69
+#: driver/xscreensaver-demo.glade2.h:50
+msgid "StaticGray"
+msgstr "StaticGray"
+
+#: driver/demo-Gtk-widgets.c:1558 driver/xscreensaver-demo.glade.h:42
+#: driver/xscreensaver-demo.glade2.h:27
+msgid "GrayScale"
+msgstr "GreyScale"
+
+#: driver/demo-Gtk-widgets.c:1559 driver/xscreensaver-demo.glade.h:24
+#: driver/xscreensaver-demo.glade2.h:15
+msgid "DirectColor"
+msgstr "DirectColor"
+
+#: driver/demo-Gtk-widgets.c:1560 driver/xscreensaver-demo.glade.h:14
+#: driver/xscreensaver-demo.glade2.h:7 hacks/config/fuzzyflakes.xml.h:3
+msgid "Color"
+msgstr "Farger"
+
+#: driver/demo-Gtk-widgets.c:1561 driver/xscreensaver-demo.glade.h:41
+#: driver/xscreensaver-demo.glade2.h:26
+msgid "Gray"
+msgstr "Gråtone"
+
+#: driver/demo-Gtk-widgets.c:1562 driver/xscreensaver-demo.glade.h:53
+#: driver/xscreensaver-demo.glade2.h:37
+msgid "Mono"
+msgstr "Mono"
+
+#: driver/demo-Gtk-widgets.c:1572 driver/xscreensaver-demo.glade.h:72
+msgid ""
+"The X visual type that this demo will require.  If that visual is available "
+"it will be used, otherwise, this demo will not be run."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1575 driver/xscreensaver-demo.glade.h:16
+msgid "Command Line:"
+msgstr "Kommandolinje:"
+
+#: driver/demo-Gtk-widgets.c:1647 driver/xscreensaver-demo.glade.h:31
+msgid "Documentation..."
+msgstr "Dokumentasjon..."
+
+#: driver/demo-Gtk-widgets.c:1655 driver/xscreensaver-demo.glade.h:13
+msgid "Click here to read the manual for this display mode, if it has one."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1680 driver/xscreensaver-demo.glade.h:4
+msgid "Advanced >>"
+msgstr "Avansert >>"
+
+#: driver/demo-Gtk-widgets.c:1688 driver/xscreensaver-demo.glade.h:32
+msgid "Edit the command line directly."
+msgstr "Rediger kommandolinjen direkte."
+
+#: driver/demo-Gtk-widgets.c:1690 driver/xscreensaver-demo.glade.h:67
+msgid "Standard <<"
+msgstr "Generell <<"
+
+#: driver/demo-Gtk-widgets.c:1698 driver/xscreensaver-demo.glade.h:6
+msgid "Back to the graphical configuration options."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1718 driver/xscreensaver-demo.glade.h:11
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: driver/screensaver-properties.desktop.in.h:1
+msgid "Change screensaver properties"
+msgstr ""
+
+#: driver/screensaver-properties.desktop.in.h:2
+msgid "Screensaver"
+msgstr "Skjermsparer"
+
+#: driver/xscreensaver-demo.glade.h:1
+msgid "/\");"
+msgstr "/\");"
+
+#: driver/xscreensaver-demo.glade2.h:1
+msgid "*"
+msgstr ""
+
+#: driver/xscreensaver-demo.glade2.h:6
+msgid "Choose _Random Image:"
+msgstr "Velg _tilfeldig bilde:"
+
+#: driver/xscreensaver-demo.glade2.h:18
+msgid "Display Subprocess _Errors"
+msgstr "Vis f_eil i underprosesser"
+
+#: driver/xscreensaver-demo.glade2.h:19
+msgid "Display _Splash Screen at Startup"
+msgstr "Vis opp_startsskjerm"
+
+#: driver/xscreensaver-demo.glade2.h:20
+msgid "F_ade Duration"
+msgstr "V_arighet for utfasing"
+
+#: driver/xscreensaver-demo.glade2.h:21
+msgid "Fade from Black When _Unblanking"
+msgstr ""
+
+#: driver/xscreensaver-demo.glade2.h:22
+msgid "Fade to Black when _Blanking"
+msgstr ""
+
+#: driver/xscreensaver-demo.glade2.h:24
+msgid "Grab Desktop _Images"
+msgstr "Hent b_ilder fra skrivebordet"
+
+#: driver/xscreensaver-demo.glade2.h:25
+msgid "Grab _Video Frames"
+msgstr ""
+
+#: driver/xscreensaver-demo.glade2.h:28
+msgid "How long after the screen blanks until a password will be required."
+msgstr ""
+
+#: driver/xscreensaver-demo.glade2.h:29
+msgid "How long before the screensaver activates."
+msgstr ""
+
+#: driver/xscreensaver-demo.glade2.h:30
+msgid ""
+"How long each display mode should run before choosing a new one (in Random "
+"mode.)"
+msgstr ""
+
+#: driver/xscreensaver-demo.glade2.h:32
+msgid "How long until the monitor goes completely black."
+msgstr ""
+
+#: driver/xscreensaver-demo.glade2.h:36
+msgid "Install _Colormap"
+msgstr "Installer _fargekart"
+
+#: driver/xscreensaver-demo.glade2.h:38
+msgid ""
+"No Preview\n"
+"Available"
+msgstr ""
+"Ingen forhåndsvisning\n"
+"tilgjengelig"
+
+#: driver/xscreensaver-demo.glade2.h:40
+msgid ""
+"Not\n"
+"Installed"
+msgstr ""
+
+#: driver/xscreensaver-demo.glade2.h:48
+msgid "Stand_by After"
+msgstr "_Ventemodus etter"
+
+#: driver/xscreensaver-demo.glade2.h:51
+msgid "Sus_pend After"
+msgstr "_Pause etter"
+
+#: driver/xscreensaver-demo.glade2.h:58
+msgid ""
+"Whether the image-manipulating modes should operate on images captured from "
+"the system's video input (if there is one.)"
+msgstr ""
+
+#: driver/xscreensaver-demo.glade2.h:67
+msgid "_Advanced"
+msgstr "_Avansert"
+
+#: driver/xscreensaver-demo.glade2.h:68
+msgid "_Advanced >>"
+msgstr "_Avansert >>"
+
+#: driver/xscreensaver-demo.glade2.h:69
+msgid "_Blank After"
+msgstr "_Blank ut etter"
+
+#: driver/xscreensaver-demo.glade2.h:71
+msgid "_Browse"
+msgstr "_Bla gjennom"
+
+#: driver/xscreensaver-demo.glade2.h:72
+msgid "_Command Line:"
+msgstr "_Kommandolinje:"
+
+#: driver/xscreensaver-demo.glade2.h:73
+msgid "_Cycle After"
+msgstr "_Skift etter"
+
+#: driver/xscreensaver-demo.glade2.h:74
+msgid "_Display Modes"
+msgstr "_Visningsmodi"
+
+#: driver/xscreensaver-demo.glade2.h:79
+msgid "_Lock Screen After"
+msgstr "_Lås skjermen etter"
+
+#: driver/xscreensaver-demo.glade2.h:81
+msgid "_Mode:"
+msgstr "_Modus:"
+
+#: driver/xscreensaver-demo.glade2.h:82
+msgid "_Off After"
+msgstr "_Av etter"
+
+#: driver/xscreensaver-demo.glade2.h:83
+msgid "_Power Management Enabled"
+msgstr "_Strømstyring aktivert"
+
+#: driver/xscreensaver-demo.glade2.h:84
+msgid "_Preview"
+msgstr "_Forhåndsvisning"
+
+#: driver/xscreensaver-demo.glade2.h:85
+msgid "_Quit"
+msgstr "_Avslutt"
+
+#: driver/xscreensaver-demo.glade2.h:87
+msgid "_Settings..."
+msgstr "_Innstillinger..."
+
+#: driver/xscreensaver-demo.glade2.h:88
+msgid "_Standard <<"
+msgstr "_Generelt <<"
+
+#: driver/xscreensaver-demo.glade2.h:89
+#, fuzzy
+msgid "_Verbose Diagnostics"
+msgstr "Utfyllende diagnostikk"
+
+#: driver/xscreensaver-demo.glade2.h:90
+msgid "_Visual:"
+msgstr "_Synlig:"
+
+#: driver/xscreensaver-demo.glade2.h:91
+msgid "dialog1"
+msgstr "dialog1"
+
+#: driver/xscreensaver-demo.glade2.h:93
+msgid "no preview"
+msgstr "ingen forhåndsvisning"
+
+#: driver/xscreensaver-demo.glade2.h:94
+msgid "not installed"
+msgstr ""
+
+#: driver/xscreensaver-demo.glade2.h:95
+msgid "preview"
+msgstr "forhåndsvisning"
+
+#: hacks/config/anemone.xml.h:1
+msgid "Anemone"
+msgstr "Anemone"
+
+#: hacks/config/anemone.xml.h:2 hacks/config/fuzzyflakes.xml.h:1
+msgid "Arms"
+msgstr "Armer"
+
+#: hacks/config/anemone.xml.h:3 hacks/config/anemotaxis.xml.h:5
+#: hacks/config/antinspect.xml.h:4 hacks/config/antspotlight.xml.h:3
+#: hacks/config/ant.xml.h:6 hacks/config/apollonian.xml.h:5
+#: hacks/config/atlantis.xml.h:4 hacks/config/attraction.xml.h:8
+#: hacks/config/atunnel.xml.h:3 hacks/config/barcode.xml.h:4
+#: hacks/config/blaster.xml.h:3 hacks/config/blinkbox.xml.h:5
+#: hacks/config/blitspin.xml.h:4 hacks/config/blocktube.xml.h:4
+#: hacks/config/boing.xml.h:2 hacks/config/bouboule.xml.h:3
+#: hacks/config/bouncingcow.xml.h:6 hacks/config/boxed.xml.h:4
+#: hacks/config/boxfit.xml.h:7 hacks/config/braid.xml.h:4
+#: hacks/config/bubble3d.xml.h:3 hacks/config/bubbles.xml.h:8
+#: hacks/config/bumps.xml.h:3 hacks/config/cage.xml.h:2
+#: hacks/config/carousel.xml.h:5 hacks/config/circuit.xml.h:4
+#: hacks/config/cloudlife.xml.h:3 hacks/config/compass.xml.h:3
+#: hacks/config/coral.xml.h:7 hacks/config/critical.xml.h:3
+#: hacks/config/crystal.xml.h:6 hacks/config/cubenetic.xml.h:8
+#: hacks/config/cubestorm.xml.h:4 hacks/config/cynosure.xml.h:4
+#: hacks/config/dangerball.xml.h:3 hacks/config/decayscreen.xml.h:2
+#: hacks/config/deluxe.xml.h:4 hacks/config/demon.xml.h:4
+#: hacks/config/discrete.xml.h:2 hacks/config/distort.xml.h:4
+#: hacks/config/drift.xml.h:3 hacks/config/endgame.xml.h:3
+#: hacks/config/engine.xml.h:8 hacks/config/epicycle.xml.h:5
+#: hacks/config/eruption.xml.h:5 hacks/config/euler2d.xml.h:3
+#: hacks/config/extrusion.xml.h:3 hacks/config/fadeplot.xml.h:4
+#: hacks/config/fireworkx.xml.h:3 hacks/config/flag.xml.h:2
+#: hacks/config/flame.xml.h:6 hacks/config/flipflop.xml.h:1
+#: hacks/config/flipscreen3d.xml.h:1 hacks/config/flow.xml.h:2
+#: hacks/config/fluidballs.xml.h:5 hacks/config/flyingtoasters.xml.h:5
+#: hacks/config/fontglide.xml.h:4 hacks/config/forest.xml.h:1
+#: hacks/config/fuzzyflakes.xml.h:7 hacks/config/galaxy.xml.h:3
+#: hacks/config/gears.xml.h:2 hacks/config/gflux.xml.h:6
+#: hacks/config/glblur.xml.h:4 hacks/config/glforestfire.xml.h:4
+#: hacks/config/glknots.xml.h:3 hacks/config/glmatrix.xml.h:8
+#: hacks/config/glplanet.xml.h:2 hacks/config/glsnake.xml.h:6
+#: hacks/config/gltext.xml.h:3 hacks/config/goop.xml.h:4
+#: hacks/config/grav.xml.h:2 hacks/config/greynetic.xml.h:1
+#: hacks/config/halo.xml.h:2 hacks/config/hopalong.xml.h:9
+#: hacks/config/hyperball.xml.h:2 hacks/config/hypercube.xml.h:2
+#: hacks/config/hypertorus.xml.h:6 hacks/config/ifs.xml.h:1
+#: hacks/config/interference.xml.h:7 hacks/config/intermomentary.xml.h:1
+#: hacks/config/jigglypuff.xml.h:6 hacks/config/jigsaw.xml.h:3
+#: hacks/config/juggle.xml.h:2 hacks/config/julia.xml.h:2
+#: hacks/config/kaleidescope.xml.h:2 hacks/config/klein.xml.h:2
+#: hacks/config/kumppa.xml.h:3 hacks/config/lament.xml.h:2
+#: hacks/config/laser.xml.h:3 hacks/config/lavalite.xml.h:10
+#: hacks/config/lightning.xml.h:1 hacks/config/lisa.xml.h:2
+#: hacks/config/lissie.xml.h:3 hacks/config/lmorph.xml.h:3
+#: hacks/config/loop.xml.h:1 hacks/config/maze.xml.h:4
+#: hacks/config/memscroller.xml.h:5 hacks/config/menger.xml.h:3
+#: hacks/config/metaballs.xml.h:4 hacks/config/mirrorblob.xml.h:12
+#: hacks/config/mismunch.xml.h:2 hacks/config/moebius.xml.h:3
+#: hacks/config/moire2.xml.h:2 hacks/config/molecule.xml.h:10
+#: hacks/config/morph3d.xml.h:3 hacks/config/mountain.xml.h:2
+#: hacks/config/munch.xml.h:3 hacks/config/nerverot.xml.h:9
+#: hacks/config/noof.xml.h:2 hacks/config/pacman.xml.h:1
+#: hacks/config/penetrate.xml.h:3 hacks/config/penrose.xml.h:6
+#: hacks/config/petri.xml.h:5 hacks/config/phosphor.xml.h:4
+#: hacks/config/piecewise.xml.h:4 hacks/config/pinion.xml.h:5
+#: hacks/config/pipes.xml.h:5 hacks/config/polyhedra.xml.h:18
+#: hacks/config/polyominoes.xml.h:2 hacks/config/polytopes.xml.h:11
+#: hacks/config/pong.xml.h:1 hacks/config/popsquares.xml.h:3
+#: hacks/config/providence.xml.h:2 hacks/config/pulsar.xml.h:11
+#: hacks/config/pyro.xml.h:4 hacks/config/qix.xml.h:7
+#: hacks/config/queens.xml.h:1 hacks/config/rd-bomb.xml.h:9
+#: hacks/config/ripples.xml.h:4 hacks/config/rocks.xml.h:4
+#: hacks/config/rotor.xml.h:3 hacks/config/rubik.xml.h:3
+#: hacks/config/sballs.xml.h:4 hacks/config/shadebobs.xml.h:3
+#: hacks/config/sierpinski3d.xml.h:2 hacks/config/sierpinski.xml.h:2
+#: hacks/config/slidescreen.xml.h:2 hacks/config/slip.xml.h:2
+#: hacks/config/speedmine.xml.h:3 hacks/config/spheremonics.xml.h:5
+#: hacks/config/sphere.xml.h:2 hacks/config/spiral.xml.h:3
+#: hacks/config/spotlight.xml.h:2 hacks/config/sproingies.xml.h:2
+#: hacks/config/squiral.xml.h:4 hacks/config/stairs.xml.h:1
+#: hacks/config/starfish.xml.h:3 hacks/config/starwars.xml.h:6
+#: hacks/config/strange.xml.h:1 hacks/config/substrate.xml.h:7
+#: hacks/config/superquadrics.xml.h:4 hacks/config/swirl.xml.h:2
+#: hacks/config/t3d.xml.h:6 hacks/config/thornbird.xml.h:2
+#: hacks/config/triangle.xml.h:1 hacks/config/truchet.xml.h:1
+#: hacks/config/twang.xml.h:3 hacks/config/vines.xml.h:1
+#: hacks/config/wormhole.xml.h:2 hacks/config/worm.xml.h:3
+#: hacks/config/xearth.xml.h:7 hacks/config/xfishtank.xml.h:3
+#: hacks/config/xflame.xml.h:4 hacks/config/xjack.xml.h:1
+#: hacks/config/xmatrix.xml.h:5 hacks/config/xmountains.xml.h:13
+#: hacks/config/xplanet.xml.h:8 hacks/config/xrayswarm.xml.h:2
+#: hacks/config/zoom.xml.h:2
+msgid "Fast"
+msgstr "Fort"
+
+#: hacks/config/anemone.xml.h:4 hacks/config/anemotaxis.xml.h:6
+#: hacks/config/blaster.xml.h:4 hacks/config/bouboule.xml.h:4
+#: hacks/config/coral.xml.h:8 hacks/config/cubenetic.xml.h:9
+#: hacks/config/eruption.xml.h:6 hacks/config/euler2d.xml.h:4
+#: hacks/config/fiberlamp.xml.h:2 hacks/config/flame.xml.h:7
+#: hacks/config/fluidballs.xml.h:6 hacks/config/fuzzyflakes.xml.h:8
+#: hacks/config/kaleidescope.xml.h:3 hacks/config/lisa.xml.h:3
+#: hacks/config/pedal.xml.h:4 hacks/config/petri.xml.h:7
+#: hacks/config/qix.xml.h:8 hacks/config/substrate.xml.h:8
+#: hacks/config/thornbird.xml.h:3 hacks/config/whirlwindwarp.xml.h:1
+#: hacks/config/wormhole.xml.h:3 hacks/config/xfishtank.xml.h:4
+msgid "Few"
+msgstr "Få"
+
+#: hacks/config/anemone.xml.h:5 hacks/config/anemotaxis.xml.h:7
+#: hacks/config/ant.xml.h:9 hacks/config/apollonian.xml.h:7
+#: hacks/config/attraction.xml.h:18 hacks/config/blaster.xml.h:6
+#: hacks/config/bouboule.xml.h:5 hacks/config/braid.xml.h:7
+#: hacks/config/coral.xml.h:9 hacks/config/critical.xml.h:4
+#: hacks/config/crystal.xml.h:8 hacks/config/cubenetic.xml.h:13
+#: hacks/config/cynosure.xml.h:6 hacks/config/deco.xml.h:5
+#: hacks/config/deluxe.xml.h:6 hacks/config/demon.xml.h:6
+#: hacks/config/discrete.xml.h:4 hacks/config/drift.xml.h:9
+#: hacks/config/epicycle.xml.h:8 hacks/config/eruption.xml.h:12
+#: hacks/config/euler2d.xml.h:8 hacks/config/fadeplot.xml.h:6
+#: hacks/config/fiberlamp.xml.h:6 hacks/config/flag.xml.h:5
+#: hacks/config/flame.xml.h:11 hacks/config/flow.xml.h:7
+#: hacks/config/fluidballs.xml.h:13 hacks/config/forest.xml.h:3
+#: hacks/config/fuzzyflakes.xml.h:12 hacks/config/galaxy.xml.h:6
+#: hacks/config/grav.xml.h:4 hacks/config/halo.xml.h:4
+#: hacks/config/hopalong.xml.h:15 hacks/config/ifs.xml.h:3
+#: hacks/config/imsmap.xml.h:9 hacks/config/interference.xml.h:14
+#: hacks/config/julia.xml.h:6 hacks/config/kaleidescope.xml.h:5
+#: hacks/config/laser.xml.h:6 hacks/config/lightning.xml.h:3
+#: hacks/config/lisa.xml.h:5 hacks/config/lissie.xml.h:6
+#: hacks/config/loop.xml.h:4 hacks/config/metaballs.xml.h:6
+#: hacks/config/mismunch.xml.h:4 hacks/config/moire2.xml.h:3
+#: hacks/config/moire.xml.h:5 hacks/config/mountain.xml.h:4
+#: hacks/config/nerverot.xml.h:15 hacks/config/pedal.xml.h:6
+#: hacks/config/penrose.xml.h:7 hacks/config/petri.xml.h:11
+#: hacks/config/polyominoes.xml.h:5 hacks/config/qix.xml.h:14
+#: hacks/config/rd-bomb.xml.h:12 hacks/config/ripples.xml.h:7
+#: hacks/config/rocks.xml.h:5 hacks/config/rotor.xml.h:6
+#: hacks/config/shadebobs.xml.h:5 hacks/config/sierpinski.xml.h:4
+#: hacks/config/slip.xml.h:4 hacks/config/sphere.xml.h:3
+#: hacks/config/spiral.xml.h:6 hacks/config/squiral.xml.h:9
+#: hacks/config/starfish.xml.h:5 hacks/config/strange.xml.h:2
+#: hacks/config/swirl.xml.h:3 hacks/config/thornbird.xml.h:4
+#: hacks/config/triangle.xml.h:3 hacks/config/vines.xml.h:2
+#: hacks/config/whirlwindwarp.xml.h:4 hacks/config/worm.xml.h:4
+#: hacks/config/xearth.xml.h:12 hacks/config/xfishtank.xml.h:8
+msgid "Many"
+msgstr "Mange"
+
+#: hacks/config/anemone.xml.h:6 hacks/config/ant.xml.h:11
+#: hacks/config/apollonian.xml.h:8 hacks/config/attraction.xml.h:19
+#: hacks/config/bouboule.xml.h:6 hacks/config/braid.xml.h:9
+#: hacks/config/critical.xml.h:5 hacks/config/crystal.xml.h:10
+#: hacks/config/cynosure.xml.h:7 hacks/config/deco.xml.h:8
+#: hacks/config/deluxe.xml.h:7 hacks/config/demon.xml.h:7
+#: hacks/config/discrete.xml.h:6 hacks/config/drift.xml.h:10
+#: hacks/config/epicycle.xml.h:9 hacks/config/eruption.xml.h:14
+#: hacks/config/euler2d.xml.h:9 hacks/config/fadeplot.xml.h:7
+#: hacks/config/flag.xml.h:6 hacks/config/flame.xml.h:12
+#: hacks/config/flow.xml.h:8 hacks/config/forest.xml.h:4
+#: hacks/config/galaxy.xml.h:7 hacks/config/grav.xml.h:5
+#: hacks/config/halo.xml.h:6 hacks/config/hopalong.xml.h:17
+#: hacks/config/ifs.xml.h:4 hacks/config/imsmap.xml.h:10
+#: hacks/config/interference.xml.h:15 hacks/config/julia.xml.h:7
+#: hacks/config/laser.xml.h:8 hacks/config/lightning.xml.h:4
+#: hacks/config/lisa.xml.h:6 hacks/config/lissie.xml.h:7
+#: hacks/config/loop.xml.h:5 hacks/config/metaballs.xml.h:10
+#: hacks/config/moire2.xml.h:5 hacks/config/moire.xml.h:7
+#: hacks/config/mountain.xml.h:6 hacks/config/penrose.xml.h:8
+#: hacks/config/polyominoes.xml.h:6 hacks/config/popsquares.xml.h:4
+#: hacks/config/rd-bomb.xml.h:13 hacks/config/rocks.xml.h:6
+#: hacks/config/rotor.xml.h:7 hacks/config/shadebobs.xml.h:6
+#: hacks/config/sierpinski.xml.h:5 hacks/config/slip.xml.h:5
+#: hacks/config/sphere.xml.h:4 hacks/config/spiral.xml.h:8
+#: hacks/config/squiral.xml.h:10 hacks/config/starfish.xml.h:6
+#: hacks/config/strange.xml.h:3 hacks/config/swirl.xml.h:5
+#: hacks/config/thornbird.xml.h:5 hacks/config/triangle.xml.h:4
+#: hacks/config/vines.xml.h:3 hacks/config/worm.xml.h:5
+#: hacks/config/xearth.xml.h:17 hacks/config/xfishtank.xml.h:9
+msgid "Number of Colors"
+msgstr "Antall farger"
+
+#: hacks/config/anemone.xml.h:7 hacks/config/fireflies.xml.h:32
+#: hacks/config/pyro.xml.h:8
+msgid "Often"
+msgstr "Ofte"
+
+#: hacks/config/anemone.xml.h:8
+msgid "Rarely"
+msgstr ""
+
+#: hacks/config/anemone.xml.h:9 hacks/config/anemotaxis.xml.h:10
+#: hacks/config/antinspect.xml.h:6 hacks/config/antspotlight.xml.h:5
+#: hacks/config/ant.xml.h:15 hacks/config/apollonian.xml.h:11
+#: hacks/config/atlantis.xml.h:13 hacks/config/attraction.xml.h:26
+#: hacks/config/atunnel.xml.h:6 hacks/config/barcode.xml.h:6
+#: hacks/config/blaster.xml.h:8 hacks/config/blinkbox.xml.h:7
+#: hacks/config/blitspin.xml.h:7 hacks/config/blocktube.xml.h:9
+#: hacks/config/boing.xml.h:10 hacks/config/bouboule.xml.h:8
+#: hacks/config/bouncingcow.xml.h:10 hacks/config/boxed.xml.h:7
+#: hacks/config/boxfit.xml.h:10 hacks/config/braid.xml.h:11
+#: hacks/config/bubble3d.xml.h:5 hacks/config/bubbles.xml.h:10
+#: hacks/config/bumps.xml.h:4 hacks/config/cage.xml.h:4
+#: hacks/config/carousel.xml.h:14 hacks/config/circuit.xml.h:10
+#: hacks/config/cloudlife.xml.h:11 hacks/config/compass.xml.h:4
+#: hacks/config/coral.xml.h:12 hacks/config/critical.xml.h:6
+#: hacks/config/crystal.xml.h:11 hacks/config/cubenetic.xml.h:22
+#: hacks/config/cubestorm.xml.h:8 hacks/config/cynosure.xml.h:9
+#: hacks/config/dangerball.xml.h:5 hacks/config/decayscreen.xml.h:17
+#: hacks/config/deluxe.xml.h:8 hacks/config/demon.xml.h:8
+#: hacks/config/discrete.xml.h:7 hacks/config/distort.xml.h:11
+#: hacks/config/drift.xml.h:12 hacks/config/endgame.xml.h:5
+#: hacks/config/engine.xml.h:15 hacks/config/epicycle.xml.h:10
+#: hacks/config/eruption.xml.h:19 hacks/config/euler2d.xml.h:14
+#: hacks/config/extrusion.xml.h:11 hacks/config/fadeplot.xml.h:8
+#: hacks/config/fireworkx.xml.h:9 hacks/config/flag.xml.h:7
+#: hacks/config/flame.xml.h:14 hacks/config/flipflop.xml.h:5
+#: hacks/config/flipscreen3d.xml.h:6 hacks/config/flow.xml.h:10
+#: hacks/config/fluidballs.xml.h:18 hacks/config/flyingtoasters.xml.h:11
+#: hacks/config/fontglide.xml.h:13 hacks/config/forest.xml.h:5
+#: hacks/config/fuzzyflakes.xml.h:15 hacks/config/galaxy.xml.h:11
+#: hacks/config/gears.xml.h:7 hacks/config/gflux.xml.h:12
+#: hacks/config/glblur.xml.h:14 hacks/config/glforestfire.xml.h:14
+#: hacks/config/glknots.xml.h:17 hacks/config/glmatrix.xml.h:18
+#: hacks/config/glplanet.xml.h:8 hacks/config/glsnake.xml.h:12
+#: hacks/config/gltext.xml.h:13 hacks/config/goop.xml.h:10
+#: hacks/config/grav.xml.h:8 hacks/config/greynetic.xml.h:3
+#: hacks/config/halo.xml.h:10 hacks/config/hopalong.xml.h:21
+#: hacks/config/hyperball.xml.h:8 hacks/config/hypercube.xml.h:7
+#: hacks/config/hypertorus.xml.h:13 hacks/config/ifs.xml.h:5
+#: hacks/config/interference.xml.h:17 hacks/config/intermomentary.xml.h:4
+#: hacks/config/jigglypuff.xml.h:16 hacks/config/jigsaw.xml.h:5
+#: hacks/config/juggle.xml.h:8 hacks/config/julia.xml.h:8
+#: hacks/config/kaleidescope.xml.h:7 hacks/config/klein.xml.h:7
+#: hacks/config/kumppa.xml.h:8 hacks/config/lament.xml.h:6
+#: hacks/config/laser.xml.h:10 hacks/config/lavalite.xml.h:27
+#: hacks/config/lightning.xml.h:5 hacks/config/lisa.xml.h:8
+#: hacks/config/lissie.xml.h:9 hacks/config/lmorph.xml.h:11
+#: hacks/config/loop.xml.h:7 hacks/config/maze.xml.h:14
+#: hacks/config/memscroller.xml.h:7 hacks/config/menger.xml.h:16
+#: hacks/config/metaballs.xml.h:13 hacks/config/mirrorblob.xml.h:19
+#: hacks/config/mismunch.xml.h:10 hacks/config/moebius.xml.h:7
+#: hacks/config/moire2.xml.h:6 hacks/config/molecule.xml.h:22
+#: hacks/config/morph3d.xml.h:6 hacks/config/mountain.xml.h:7
+#: hacks/config/munch.xml.h:7 hacks/config/nerverot.xml.h:20
+#: hacks/config/noof.xml.h:5 hacks/config/pacman.xml.h:5
+#: hacks/config/penetrate.xml.h:6 hacks/config/penrose.xml.h:11
+#: hacks/config/petri.xml.h:23 hacks/config/phosphor.xml.h:7
+#: hacks/config/piecewise.xml.h:9 hacks/config/pinion.xml.h:13
+#: hacks/config/pipes.xml.h:15 hacks/config/polyhedra.xml.h:119
+#: hacks/config/polyominoes.xml.h:10 hacks/config/polytopes.xml.h:20
+#: hacks/config/pong.xml.h:4 hacks/config/popsquares.xml.h:5
+#: hacks/config/providence.xml.h:5 hacks/config/pulsar.xml.h:15
+#: hacks/config/pyro.xml.h:13 hacks/config/qix.xml.h:19
+#: hacks/config/queens.xml.h:4 hacks/config/rd-bomb.xml.h:17
+#: hacks/config/ripples.xml.h:11 hacks/config/rocks.xml.h:9
+#: hacks/config/rotor.xml.h:11 hacks/config/rubik.xml.h:9
+#: hacks/config/sballs.xml.h:13 hacks/config/shadebobs.xml.h:9
+#: hacks/config/sierpinski3d.xml.h:8 hacks/config/sierpinski.xml.h:7
+#: hacks/config/slidescreen.xml.h:6 hacks/config/slip.xml.h:7
+#: hacks/config/speedmine.xml.h:13 hacks/config/spheremonics.xml.h:19
+#: hacks/config/sphere.xml.h:5 hacks/config/spiral.xml.h:9
+#: hacks/config/spotlight.xml.h:4 hacks/config/sproingies.xml.h:6
+#: hacks/config/squiral.xml.h:14 hacks/config/stairs.xml.h:3
+#: hacks/config/starfish.xml.h:8 hacks/config/starwars.xml.h:12
+#: hacks/config/strange.xml.h:4 hacks/config/substrate.xml.h:15
+#: hacks/config/superquadrics.xml.h:8 hacks/config/swirl.xml.h:6
+#: hacks/config/t3d.xml.h:11 hacks/config/thornbird.xml.h:7
+#: hacks/config/triangle.xml.h:5 hacks/config/truchet.xml.h:2
+#: hacks/config/twang.xml.h:9 hacks/config/vines.xml.h:4
+#: hacks/config/wormhole.xml.h:5 hacks/config/worm.xml.h:7
+#: hacks/config/xearth.xml.h:22 hacks/config/xfishtank.xml.h:10
+#: hacks/config/xflame.xml.h:5 hacks/config/xjack.xml.h:2
+#: hacks/config/xmatrix.xml.h:15 hacks/config/xplanet.xml.h:59
+#: hacks/config/xrayswarm.xml.h:3 hacks/config/zoom.xml.h:6
+msgid "Slow"
+msgstr "Sakte"
+
+#: hacks/config/anemone.xml.h:10 hacks/config/anemotaxis.xml.h:12
+#: hacks/config/antinspect.xml.h:7 hacks/config/antspotlight.xml.h:6
+#: hacks/config/ant.xml.h:17 hacks/config/apollonian.xml.h:12
+#: hacks/config/attraction.xml.h:28 hacks/config/atunnel.xml.h:7
+#: hacks/config/barcode.xml.h:7 hacks/config/blaster.xml.h:9
+#: hacks/config/blinkbox.xml.h:8 hacks/config/blocktube.xml.h:11
+#: hacks/config/boing.xml.h:12 hacks/config/bouboule.xml.h:9
+#: hacks/config/boxfit.xml.h:12 hacks/config/braid.xml.h:12
+#: hacks/config/bubble3d.xml.h:6 hacks/config/bubbles.xml.h:11
+#: hacks/config/bumps.xml.h:5 hacks/config/cage.xml.h:6
+#: hacks/config/circuit.xml.h:11 hacks/config/cloudlife.xml.h:13
+#: hacks/config/compass.xml.h:5 hacks/config/coral.xml.h:14
+#: hacks/config/critical.xml.h:7 hacks/config/crystal.xml.h:12
+#: hacks/config/cubenetic.xml.h:24 hacks/config/cynosure.xml.h:10
+#: hacks/config/dangerball.xml.h:6 hacks/config/decayscreen.xml.h:18
+#: hacks/config/deluxe.xml.h:9 hacks/config/demon.xml.h:10
+#: hacks/config/discrete.xml.h:9 hacks/config/distort.xml.h:13
+#: hacks/config/drift.xml.h:13 hacks/config/endgame.xml.h:6
+#: hacks/config/engine.xml.h:16 hacks/config/epicycle.xml.h:11
+#: hacks/config/eruption.xml.h:20 hacks/config/euler2d.xml.h:15
+#: hacks/config/extrusion.xml.h:13 hacks/config/fadeplot.xml.h:10
+#: hacks/config/fireworkx.xml.h:11 hacks/config/flag.xml.h:9
+#: hacks/config/flame.xml.h:15 hacks/config/flipflop.xml.h:7
+#: hacks/config/flipscreen3d.xml.h:7 hacks/config/flow.xml.h:12
+#: hacks/config/fluidballs.xml.h:20 hacks/config/forest.xml.h:6
+#: hacks/config/fuzzyflakes.xml.h:17 hacks/config/galaxy.xml.h:12
+#: hacks/config/glblur.xml.h:17 hacks/config/glforestfire.xml.h:15
+#: hacks/config/glplanet.xml.h:10 hacks/config/gltext.xml.h:15
+#: hacks/config/goop.xml.h:11 hacks/config/grav.xml.h:9
+#: hacks/config/greynetic.xml.h:4 hacks/config/halo.xml.h:11
+#: hacks/config/hopalong.xml.h:23 hacks/config/hyperball.xml.h:9
+#: hacks/config/hypercube.xml.h:8 hacks/config/ifs.xml.h:6
+#: hacks/config/intermomentary.xml.h:5 hacks/config/jigsaw.xml.h:7
+#: hacks/config/juggle.xml.h:9 hacks/config/julia.xml.h:10
+#: hacks/config/kaleidescope.xml.h:8 hacks/config/klein.xml.h:8
+#: hacks/config/kumppa.xml.h:9 hacks/config/lament.xml.h:7
+#: hacks/config/laser.xml.h:11 hacks/config/lavalite.xml.h:30
+#: hacks/config/lightning.xml.h:6 hacks/config/lisa.xml.h:9
+#: hacks/config/lissie.xml.h:11 hacks/config/lmorph.xml.h:12
+#: hacks/config/loop.xml.h:9 hacks/config/memscroller.xml.h:8
+#: hacks/config/menger.xml.h:18 hacks/config/metaballs.xml.h:15
+#: hacks/config/mirrorblob.xml.h:21 hacks/config/mismunch.xml.h:12
+#: hacks/config/moebius.xml.h:10 hacks/config/moire2.xml.h:7
+#: hacks/config/molecule.xml.h:24 hacks/config/morph3d.xml.h:7
+#: hacks/config/mountain.xml.h:8 hacks/config/munch.xml.h:9
+#: hacks/config/nerverot.xml.h:22 hacks/config/noof.xml.h:6
+#: hacks/config/pacman.xml.h:6 hacks/config/penrose.xml.h:12
+#: hacks/config/petri.xml.h:25 hacks/config/phosphor.xml.h:8
+#: hacks/config/piecewise.xml.h:11 hacks/config/pipes.xml.h:16
+#: hacks/config/polyominoes.xml.h:11 hacks/config/pong.xml.h:5
+#: hacks/config/popsquares.xml.h:6 hacks/config/providence.xml.h:6
+#: hacks/config/pulsar.xml.h:17 hacks/config/qix.xml.h:22
+#: hacks/config/queens.xml.h:6 hacks/config/rotor.xml.h:12
+#: hacks/config/rubik.xml.h:11 hacks/config/sballs.xml.h:14
+#: hacks/config/shadebobs.xml.h:10 hacks/config/sierpinski3d.xml.h:10
+#: hacks/config/sierpinski.xml.h:9 hacks/config/slidescreen.xml.h:7
+#: hacks/config/slip.xml.h:9 hacks/config/speedmine.xml.h:15
+#: hacks/config/spheremonics.xml.h:22 hacks/config/sphere.xml.h:6
+#: hacks/config/spiral.xml.h:10 hacks/config/spotlight.xml.h:5
+#: hacks/config/sproingies.xml.h:8 hacks/config/squiral.xml.h:16
+#: hacks/config/stairs.xml.h:5 hacks/config/starfish.xml.h:9
+#: hacks/config/strange.xml.h:5 hacks/config/substrate.xml.h:16
+#: hacks/config/superquadrics.xml.h:10 hacks/config/swirl.xml.h:7
+#: hacks/config/t3d.xml.h:13 hacks/config/thornbird.xml.h:8
+#: hacks/config/triangle.xml.h:6 hacks/config/truchet.xml.h:3
+#: hacks/config/twang.xml.h:10 hacks/config/vines.xml.h:5
+#: hacks/config/whirlygig.xml.h:13 hacks/config/worm.xml.h:8
+#: hacks/config/xearth.xml.h:25 hacks/config/xflame.xml.h:6
+#: hacks/config/xjack.xml.h:3 hacks/config/xmatrix.xml.h:18
+#: hacks/config/xplanet.xml.h:60 hacks/config/xrayswarm.xml.h:4
+#: hacks/config/zoom.xml.h:7
+msgid "Speed"
+msgstr "Hastighet"
+
+#: hacks/config/anemone.xml.h:11
+msgid "Tentacles"
+msgstr "Tentakler"
+
+#: hacks/config/anemone.xml.h:12 hacks/config/cubestorm.xml.h:11
+#: hacks/config/deluxe.xml.h:10 hacks/config/fuzzyflakes.xml.h:18
+#: hacks/config/glknots.xml.h:19 hacks/config/lmorph.xml.h:13
+#: hacks/config/pong.xml.h:7 hacks/config/starfish.xml.h:11
+#: hacks/config/thornbird.xml.h:9
+msgid "Thick"
+msgstr "Tykk"
+
+#: hacks/config/anemone.xml.h:13 hacks/config/fuzzyflakes.xml.h:19
+#: hacks/config/glknots.xml.h:20 hacks/config/moire2.xml.h:8
+#: hacks/config/thornbird.xml.h:10
+msgid "Thickness"
+msgstr "Tykkhet"
+
+#: hacks/config/anemone.xml.h:14 hacks/config/cubestorm.xml.h:12
+#: hacks/config/deluxe.xml.h:11 hacks/config/fuzzyflakes.xml.h:20
+#: hacks/config/glknots.xml.h:21 hacks/config/lmorph.xml.h:14
+#: hacks/config/pong.xml.h:8 hacks/config/starfish.xml.h:12
+#: hacks/config/thornbird.xml.h:11
+msgid "Thin"
+msgstr "Tynn"
+
+#: hacks/config/anemone.xml.h:15
+msgid "Turn speed"
+msgstr ""
+
+#: hacks/config/anemone.xml.h:16 hacks/config/ant.xml.h:22
+#: hacks/config/apollonian.xml.h:13 hacks/config/attraction.xml.h:32
+#: hacks/config/bouboule.xml.h:11 hacks/config/braid.xml.h:13
+#: hacks/config/critical.xml.h:8 hacks/config/crystal.xml.h:13
+#: hacks/config/cynosure.xml.h:11 hacks/config/deco.xml.h:10
+#: hacks/config/deluxe.xml.h:14 hacks/config/demon.xml.h:13
+#: hacks/config/discrete.xml.h:11 hacks/config/drift.xml.h:14
+#: hacks/config/epicycle.xml.h:13 hacks/config/euler2d.xml.h:17
+#: hacks/config/fadeplot.xml.h:12 hacks/config/flag.xml.h:13
+#: hacks/config/flame.xml.h:16 hacks/config/flow.xml.h:15
+#: hacks/config/forest.xml.h:8 hacks/config/galaxy.xml.h:14
+#: hacks/config/grav.xml.h:11 hacks/config/halo.xml.h:13
+#: hacks/config/hopalong.xml.h:25 hacks/config/ifs.xml.h:8
+#: hacks/config/imsmap.xml.h:15 hacks/config/interference.xml.h:19
+#: hacks/config/julia.xml.h:12 hacks/config/laser.xml.h:12
+#: hacks/config/lightning.xml.h:8 hacks/config/lisa.xml.h:12
+#: hacks/config/lissie.xml.h:13 hacks/config/loop.xml.h:12
+#: hacks/config/metaballs.xml.h:16 hacks/config/moire2.xml.h:9
+#: hacks/config/moire.xml.h:11 hacks/config/mountain.xml.h:9
+#: hacks/config/nerverot.xml.h:23 hacks/config/penrose.xml.h:13
+#: hacks/config/polyominoes.xml.h:12 hacks/config/rd-bomb.xml.h:20
+#: hacks/config/rocks.xml.h:12 hacks/config/rotor.xml.h:13
+#: hacks/config/shadebobs.xml.h:12 hacks/config/sierpinski.xml.h:12
+#: hacks/config/slip.xml.h:12 hacks/config/sphere.xml.h:8
+#: hacks/config/spiral.xml.h:12 hacks/config/squiral.xml.h:18
+#: hacks/config/starfish.xml.h:14 hacks/config/strange.xml.h:8
+#: hacks/config/swirl.xml.h:9 hacks/config/thornbird.xml.h:13
+#: hacks/config/triangle.xml.h:8 hacks/config/vines.xml.h:7
+#: hacks/config/worm.xml.h:9 hacks/config/xearth.xml.h:28
+#: hacks/config/xfishtank.xml.h:11
+msgid "Two"
+msgstr "To"
+
+#: hacks/config/anemone.xml.h:17
+msgid "Wiggling tentacles. By Gabriel Finch."
+msgstr ""
+
+#: hacks/config/anemone.xml.h:18
+msgid "Withdraw freqency"
+msgstr ""
+
+#: hacks/config/anemotaxis.xml.h:1
+#, fuzzy
+msgid "Anemotaxis"
+msgstr "Xfjell"
+
+#: hacks/config/anemotaxis.xml.h:2
+msgid ""
+"Anemotaxis demonstrates a search algorithm designed for locating a source of "
+"odor in turbulent atmosphere. The searcher is able to sense the odor and "
+"determine local instantaneous wind direction. The goal is to find the source "
+"in the shortest mean time. Written by Eugene Balkovsky."
+msgstr ""
+
+#: hacks/config/anemotaxis.xml.h:3
+#, fuzzy
+msgid "Distance"
+msgstr "Diskre"
+
+#: hacks/config/anemotaxis.xml.h:4 hacks/config/hyperball.xml.h:1
+#: hacks/config/hypercube.xml.h:1
+msgid "Far"
+msgstr "Fjern"
+
+#: hacks/config/anemotaxis.xml.h:8 hacks/config/hyperball.xml.h:7
+#: hacks/config/hypercube.xml.h:6
+msgid "Near"
+msgstr "Nær"
+
+#: hacks/config/anemotaxis.xml.h:9
+msgid "Searchers"
+msgstr ""
+
+#: hacks/config/anemotaxis.xml.h:11
+#, fuzzy
+msgid "Sources"
+msgstr "Sprett"
+
+#: hacks/config/antinspect.xml.h:1
+msgid "AntInspect"
+msgstr ""
+
+#: hacks/config/antinspect.xml.h:2
+#, fuzzy
+msgid "Draw Shadows"
+msgstr "Tegn flekker"
+
+#: hacks/config/antinspect.xml.h:3
+msgid ""
+"Draws a trio of ants moving their spheres around a circle. Written by Blair "
+"Tennessy."
+msgstr ""
+
+#: hacks/config/antinspect.xml.h:5 hacks/config/antspotlight.xml.h:4
+#: hacks/config/atlantis.xml.h:11 hacks/config/atunnel.xml.h:5
+#: hacks/config/blocktube.xml.h:8 hacks/config/boing.xml.h:8
+#: hacks/config/boxed.xml.h:6 hacks/config/bubble3d.xml.h:4
+#: hacks/config/cage.xml.h:3 hacks/config/carousel.xml.h:12
+#: hacks/config/circuit.xml.h:9 hacks/config/cubenetic.xml.h:21
+#: hacks/config/cubestorm.xml.h:7 hacks/config/dangerball.xml.h:4
+#: hacks/config/endgame.xml.h:4 hacks/config/engine.xml.h:14
+#: hacks/config/extrusion.xml.h:10 hacks/config/flipflop.xml.h:4
+#: hacks/config/flipscreen3d.xml.h:5 hacks/config/fluidballs.xml.h:17
+#: hacks/config/flurry.xml.h:9 hacks/config/flyingtoasters.xml.h:10
+#: hacks/config/gears.xml.h:6 hacks/config/gflux.xml.h:11
+#: hacks/config/glblur.xml.h:13 hacks/config/gleidescope.xml.h:10
+#: hacks/config/glforestfire.xml.h:13 hacks/config/glknots.xml.h:16
+#: hacks/config/glmatrix.xml.h:17 hacks/config/glplanet.xml.h:7
+#: hacks/config/glslideshow.xml.h:19 hacks/config/glsnake.xml.h:10
+#: hacks/config/gltext.xml.h:12 hacks/config/hypertorus.xml.h:12
+#: hacks/config/jigglypuff.xml.h:15 hacks/config/klein.xml.h:6
+#: hacks/config/lament.xml.h:5 hacks/config/lavalite.xml.h:26
+#: hacks/config/menger.xml.h:15 hacks/config/mirrorblob.xml.h:18
+#: hacks/config/moebius.xml.h:6 hacks/config/molecule.xml.h:21
+#: hacks/config/morph3d.xml.h:5 hacks/config/noof.xml.h:4
+#: hacks/config/pinion.xml.h:12 hacks/config/pipes.xml.h:14
+#: hacks/config/polyhedra.xml.h:118 hacks/config/polytopes.xml.h:18
+#: hacks/config/providence.xml.h:4 hacks/config/pulsar.xml.h:14
+#: hacks/config/queens.xml.h:3 hacks/config/rubik.xml.h:6
+#: hacks/config/sballs.xml.h:12 hacks/config/sierpinski3d.xml.h:6
+#: hacks/config/spheremonics.xml.h:18 hacks/config/sproingies.xml.h:4
+#: hacks/config/stairs.xml.h:2 hacks/config/starwars.xml.h:11
+#: hacks/config/superquadrics.xml.h:7
+msgid "Show Frames-per-Second"
+msgstr ""
+
+#: hacks/config/antspotlight.xml.h:1
+#, fuzzy
+msgid "AntSpotlight"
+msgstr "Følgelys"
+
+#: hacks/config/antspotlight.xml.h:2
+msgid ""
+"Antspotlight draws an ant (with a headlight) who walks on top of an image of "
+"your desktop or other image. Written by Blair Tennessy."
+msgstr ""
+
+#: hacks/config/ant.xml.h:1
+msgid ""
+"A cellular automaton that is really a two-dimensional Turing machine: as the "
+"heads (``ants'') walk along the screen, they change pixel values in their "
+"path. Then, as they pass over changed pixels, their behavior is influenced. "
+"Written by David Bagley."
+msgstr ""
+
+#: hacks/config/ant.xml.h:2
+msgid "Ant"
+msgstr "Maur"
+
+#: hacks/config/ant.xml.h:3
+msgid "Ant Size"
+msgstr "Størrelse på maur"
+
+#: hacks/config/ant.xml.h:4
+msgid "Ants Count"
+msgstr "Antall maur"
+
+#: hacks/config/ant.xml.h:5
+#, fuzzy
+msgid "Draw Eyes"
+msgstr "Tegn etiketter"
+
+#: hacks/config/ant.xml.h:7
+msgid "Four Sided Cells"
+msgstr "Firesidede celler"
+
+#: hacks/config/ant.xml.h:8 hacks/config/attraction.xml.h:13
+#: hacks/config/cloudlife.xml.h:7 hacks/config/cubenetic.xml.h:11
+#: hacks/config/demon.xml.h:5 hacks/config/discrete.xml.h:3
+#: hacks/config/distort.xml.h:5 hacks/config/fadeplot.xml.h:5
+#: hacks/config/flag.xml.h:4 hacks/config/flow.xml.h:4
+#: hacks/config/fluidballs.xml.h:12 hacks/config/fuzzyflakes.xml.h:10
+#: hacks/config/gleidescope.xml.h:7 hacks/config/halftone.xml.h:8
+#: hacks/config/hopalong.xml.h:13 hacks/config/interference.xml.h:11
+#: hacks/config/julia.xml.h:5 hacks/config/lissie.xml.h:4
+#: hacks/config/loop.xml.h:2 hacks/config/moire.xml.h:4
+#: hacks/config/piecewise.xml.h:5 hacks/config/rd-bomb.xml.h:11
+#: hacks/config/rorschach.xml.h:5 hacks/config/rubik.xml.h:4
+#: hacks/config/sierpinski.xml.h:3 hacks/config/slip.xml.h:3
+msgid "Large"
+msgstr "Stor"
+
+#: hacks/config/ant.xml.h:10
+msgid "Nine Sided Cells"
+msgstr "Nisidede celler"
+
+#: hacks/config/ant.xml.h:12
+msgid "Random Cell Shape"
+msgstr "Tilfeldig form på celler"
+
+#: hacks/config/ant.xml.h:13 hacks/config/speedmine.xml.h:11
+msgid "Sharp Turns"
+msgstr "Skarpe svinger"
+
+#: hacks/config/ant.xml.h:14
+msgid "Six Sided Cells"
+msgstr "Sekssidede celler"
+
+#: hacks/config/ant.xml.h:16 hacks/config/attraction.xml.h:27
+#: hacks/config/cloudlife.xml.h:12 hacks/config/cubenetic.xml.h:23
+#: hacks/config/demon.xml.h:9 hacks/config/discrete.xml.h:8
+#: hacks/config/distort.xml.h:12 hacks/config/fadeplot.xml.h:9
+#: hacks/config/flag.xml.h:8 hacks/config/flow.xml.h:11
+#: hacks/config/fluidballs.xml.h:19 hacks/config/fuzzyflakes.xml.h:16
+#: hacks/config/gleidescope.xml.h:12 hacks/config/halftone.xml.h:14
+#: hacks/config/hopalong.xml.h:22 hacks/config/interference.xml.h:18
+#: hacks/config/julia.xml.h:9 hacks/config/lissie.xml.h:10
+#: hacks/config/loop.xml.h:8 hacks/config/metaballs.xml.h:14
+#: hacks/config/moire.xml.h:9 hacks/config/piecewise.xml.h:10
+#: hacks/config/rd-bomb.xml.h:18 hacks/config/rorschach.xml.h:8
+#: hacks/config/rubik.xml.h:10 hacks/config/sierpinski.xml.h:8
+#: hacks/config/slip.xml.h:8
+msgid "Small"
+msgstr "Liten"
+
+#: hacks/config/ant.xml.h:18
+msgid "Three Sided Cells"
+msgstr "Tresidede celler"
+
+#: hacks/config/ant.xml.h:19 hacks/config/demon.xml.h:12
+#: hacks/config/discrete.xml.h:10 hacks/config/fadeplot.xml.h:11
+#: hacks/config/flag.xml.h:12 hacks/config/flow.xml.h:14
+#: hacks/config/lissie.xml.h:12 hacks/config/loop.xml.h:11
+#: hacks/config/rubik.xml.h:12 hacks/config/sierpinski.xml.h:11
+#: hacks/config/slip.xml.h:11
+msgid "Timeout"
+msgstr "Tidsavbrudd"
+
+#: hacks/config/ant.xml.h:20
+msgid "Truchet Lines"
+msgstr "Truchet-linjer"
+
+#: hacks/config/ant.xml.h:21
+msgid "Twelve Sided Cells"
+msgstr "Tolvsidede celler"
+
+#: hacks/config/apollonian.xml.h:1
+msgid "Apollonian"
+msgstr ""
+
+#: hacks/config/apollonian.xml.h:2
+msgid "Deep"
+msgstr "Dyp"
+
+#: hacks/config/apollonian.xml.h:3
+msgid "Depth"
+msgstr "Dybde"
+
+#: hacks/config/apollonian.xml.h:4
+msgid "Draw Labels"
+msgstr "Tegn etiketter"
+
+#: hacks/config/apollonian.xml.h:6
+msgid "Include Alternate Geometries"
+msgstr ""
+
+#: hacks/config/apollonian.xml.h:9
+msgid ""
+"Packs a large circle with smaller circles, demonstrating the Descartes "
+"Circle Theorem. Written by Allan R. Wilks and David Bagley."
+msgstr ""
+
+#: hacks/config/apollonian.xml.h:10
+msgid "Shallow"
+msgstr "Grunn"
+
+#: hacks/config/apple2.xml.h:1
+msgid "Apple ]["
+msgstr ""
+
+#: hacks/config/apple2.xml.h:2
+msgid "Basic Programming Mode"
+msgstr ""
+
+#: hacks/config/apple2.xml.h:3 hacks/config/halo.xml.h:8
+#: hacks/config/imsmap.xml.h:11
+msgid "Random Mode"
+msgstr "Tilfeldig modus"
+
+#: hacks/config/apple2.xml.h:4
+msgid ""
+"Simulates an original Apple ][ Plus computer in all its 1979 glory. It also "
+"reproduces the appearance of display on a color television set of the "
+"period. In \"Text Mode\", it displays the output of a command (e.g., "
+"\"fortune\".) In \"Slideshow Mode\", it chooses a number of images from the "
+"image source you configured into XScreenSaver and displays them within the "
+"limitations of the Apple ][ display hardware. (Six available colors in hi-"
+"res mode!) In \"Basic Programming Mode\", a simulated user types in a BASIC "
+"program and runs it. By Trevor Blackwell."
+msgstr ""
+
+#: hacks/config/apple2.xml.h:5
+msgid "Slideshow Mode"
+msgstr ""
+
+#: hacks/config/apple2.xml.h:6
+#, fuzzy
+msgid "Text Mode"
+msgstr "Tekstfil"
+
+#: hacks/config/apple2.xml.h:7 hacks/config/fontglide.xml.h:15
+#: hacks/config/noseguy.xml.h:7 hacks/config/phosphor.xml.h:9
+#: hacks/config/starwars.xml.h:17
+msgid "Text Program"
+msgstr "Tekstprogram"
+
+#: hacks/config/atlantis.xml.h:1
+msgid "Agressive"
+msgstr "Agressiv"
+
+#: hacks/config/atlantis.xml.h:2
+msgid "Atlantis"
+msgstr "Atlantis"
+
+#: hacks/config/atlantis.xml.h:3
+msgid "Clear Water"
+msgstr "Klart vann"
+
+#: hacks/config/atlantis.xml.h:5
+msgid "Flat Background"
+msgstr "Flat bakgrunn"
+
+#: hacks/config/atlantis.xml.h:6
+msgid "Gradient Background"
+msgstr "Gradient bakgrunn"
+
+#: hacks/config/atlantis.xml.h:7
+msgid "Number of Sharks"
+msgstr "Antall haier"
+
+#: hacks/config/atlantis.xml.h:8
+msgid "Shark Proximity"
+msgstr "Haiens nærhet"
+
+#: hacks/config/atlantis.xml.h:9
+msgid "Shark Speed"
+msgstr "Haiens hastighet"
+
+#: hacks/config/atlantis.xml.h:10
+msgid "Shimmering Water"
+msgstr ""
+
+#: hacks/config/atlantis.xml.h:12
+msgid "Shy"
+msgstr "Sky"
+
+#: hacks/config/atlantis.xml.h:14 hacks/config/cage.xml.h:5
+#: hacks/config/extrusion.xml.h:12 hacks/config/gears.xml.h:8
+#: hacks/config/glblur.xml.h:15 hacks/config/glplanet.xml.h:9
+#: hacks/config/glsnake.xml.h:13 hacks/config/gltext.xml.h:14
+#: hacks/config/menger.xml.h:17 hacks/config/mismunch.xml.h:11
+#: hacks/config/molecule.xml.h:23 hacks/config/munch.xml.h:8
+#: hacks/config/sierpinski3d.xml.h:9 hacks/config/speedmine.xml.h:14
+#: hacks/config/spheremonics.xml.h:21 hacks/config/sproingies.xml.h:7
+#: hacks/config/stairs.xml.h:4 hacks/config/stonerview.xml.h:2
+#: hacks/config/superquadrics.xml.h:9 hacks/config/webcollage.xml.h:8
+msgid "Solid"
+msgstr "Helfylt"
+
+#: hacks/config/atlantis.xml.h:15
+msgid ""
+"This is xfishtank writ large: a GL animation of a number of sharks, "
+"dolphins, and whales. The swimming motions are great. Originally written by "
+"Mark Kilgard."
+msgstr ""
+
+#: hacks/config/atlantis.xml.h:16
+msgid "Whale Speed"
+msgstr "Hvalens hastighet"
+
+#: hacks/config/atlantis.xml.h:17 hacks/config/atunnel.xml.h:10
+#: hacks/config/blinkbox.xml.h:9 hacks/config/blocktube.xml.h:13
+#: hacks/config/boing.xml.h:15 hacks/config/cage.xml.h:8
+#: hacks/config/cubestorm.xml.h:14 hacks/config/dangerball.xml.h:11
+#: hacks/config/extrusion.xml.h:19 hacks/config/flipflop.xml.h:8
+#: hacks/config/flyingtoasters.xml.h:14 hacks/config/gears.xml.h:11
+#: hacks/config/glblur.xml.h:20 hacks/config/glforestfire.xml.h:20
+#: hacks/config/glknots.xml.h:23 hacks/config/glplanet.xml.h:15
+#: hacks/config/glsnake.xml.h:15 hacks/config/gltext.xml.h:18
+#: hacks/config/jigglypuff.xml.h:25 hacks/config/lament.xml.h:9
+#: hacks/config/lavalite.xml.h:32 hacks/config/menger.xml.h:21
+#: hacks/config/mirrorblob.xml.h:24 hacks/config/moebius.xml.h:11
+#: hacks/config/molecule.xml.h:26 hacks/config/pinion.xml.h:15
+#: hacks/config/polyhedra.xml.h:173 hacks/config/pulsar.xml.h:20
+#: hacks/config/sballs.xml.h:18 hacks/config/sierpinski3d.xml.h:12
+#: hacks/config/speedmine.xml.h:18 hacks/config/spheremonics.xml.h:26
+#: hacks/config/sproingies.xml.h:10 hacks/config/stairs.xml.h:7
+#: hacks/config/stonerview.xml.h:4 hacks/config/superquadrics.xml.h:12
+msgid "Wireframe"
+msgstr ""
+
+#: hacks/config/attraction.xml.h:1
+msgid "Attraction"
+msgstr "Tiltrekning"
+
+#: hacks/config/attraction.xml.h:2
+msgid "Ball Count"
+msgstr "Antall baller"
+
+#: hacks/config/attraction.xml.h:3
+msgid "Ball Mass"
+msgstr "Ballens masse"
+
+#: hacks/config/attraction.xml.h:4 hacks/config/fluidballs.xml.h:3
+msgid "Balls"
+msgstr "Baller"
+
+#: hacks/config/attraction.xml.h:5
+msgid "Bounce Off Walls"
+msgstr ""
+
+#: hacks/config/attraction.xml.h:6 hacks/config/hopalong.xml.h:1
+#: hacks/config/interference.xml.h:5 hacks/config/qix.xml.h:2
+#: hacks/config/wander.xml.h:3
+msgid "Color Contrast"
+msgstr "Fargekontrast"
+
+#: hacks/config/attraction.xml.h:7
+msgid "Environmental Viscosity"
+msgstr ""
+
+#: hacks/config/attraction.xml.h:9
+msgid "Filled Splines"
+msgstr "Fylte splines"
+
+#: hacks/config/attraction.xml.h:10 hacks/config/carousel.xml.h:7
+#: hacks/config/ccurve.xml.h:9 hacks/config/cloudlife.xml.h:5
+#: hacks/config/cubenetic.xml.h:10 hacks/config/euler2d.xml.h:5
+#: hacks/config/flame.xml.h:9 hacks/config/glslideshow.xml.h:13
+#: hacks/config/goop.xml.h:6 hacks/config/halftone.xml.h:7
+#: hacks/config/hopalong.xml.h:10 hacks/config/hyperball.xml.h:3
+#: hacks/config/hypercube.xml.h:3 hacks/config/interference.xml.h:8
+#: hacks/config/jigglypuff.xml.h:8 hacks/config/kumppa.xml.h:4
+#: hacks/config/lavalite.xml.h:12 hacks/config/nerverot.xml.h:11
+#: hacks/config/petri.xml.h:8 hacks/config/pyro.xml.h:5
+#: hacks/config/qix.xml.h:10 hacks/config/speedmine.xml.h:5
+#: hacks/config/spheremonics.xml.h:6 hacks/config/spiral.xml.h:4
+#: hacks/config/squiral.xml.h:6 hacks/config/superquadrics.xml.h:5
+#: hacks/config/t3d.xml.h:7 hacks/config/twang.xml.h:5
+#: hacks/config/wander.xml.h:8 hacks/config/xmountains.xml.h:17
+msgid "High"
+msgstr "Høy"
+
+#: hacks/config/attraction.xml.h:11
+msgid "Ignore Screen Edges"
+msgstr ""
+
+#: hacks/config/attraction.xml.h:12
+msgid "Inward"
+msgstr ""
+
+#: hacks/config/attraction.xml.h:14
+msgid ""
+"Like qix, this uses a simple simple motion model to generate many different "
+"display modes. The control points attract each other up to a certain "
+"distance, and then begin to repel each other. The attraction/repulsion is "
+"proportional to the distance between any two particles, similar to the "
+"strong and weak nuclear forces. One of the most interesting ways to watch "
+"this hack is simply as bouncing balls, because their motions and "
+"interactions with each other are so odd. Sometimes two balls will get into a "
+"tight orbit around each other, to be interrupted later by a third, or by the "
+"edge of the screen. It looks quite chaotic. Written by Jamie Zawinski, based "
+"on Lisp code by John Pezaris."
+msgstr ""
+
+#: hacks/config/attraction.xml.h:15 hacks/config/deluxe.xml.h:5
+#: hacks/config/lmorph.xml.h:7 hacks/config/pedal.xml.h:5
+#: hacks/config/starfish.xml.h:4 hacks/config/whirlygig.xml.h:10
+msgid "Lines"
+msgstr "Linjer"
+
+#: hacks/config/attraction.xml.h:16 hacks/config/blocktube.xml.h:5
+#: hacks/config/braid.xml.h:6 hacks/config/cynosure.xml.h:5
+#: hacks/config/drift.xml.h:8 hacks/config/eruption.xml.h:11
+#: hacks/config/euler2d.xml.h:6 hacks/config/fiberlamp.xml.h:5
+#: hacks/config/fireflies.xml.h:21 hacks/config/flow.xml.h:6
+#: hacks/config/fontglide.xml.h:8 hacks/config/galaxy.xml.h:5
+#: hacks/config/juggle.xml.h:4 hacks/config/klein.xml.h:4
+#: hacks/config/laser.xml.h:5 hacks/config/menger.xml.h:4
+#: hacks/config/metaballs.xml.h:5 hacks/config/mismunch.xml.h:3
+#: hacks/config/munch.xml.h:4 hacks/config/nerverot.xml.h:13
+#: hacks/config/petri.xml.h:9 hacks/config/polyominoes.xml.h:4
+#: hacks/config/rotor.xml.h:5 hacks/config/shadebobs.xml.h:4
+#: hacks/config/sierpinski3d.xml.h:3 hacks/config/spheremonics.xml.h:7
+#: hacks/config/substrate.xml.h:11 hacks/config/wander.xml.h:10
+#: hacks/config/whirlwindwarp.xml.h:3
+msgid "Long"
+msgstr "Langt"
+
+#: hacks/config/attraction.xml.h:17 hacks/config/carousel.xml.h:9
+#: hacks/config/ccurve.xml.h:10 hacks/config/cloudlife.xml.h:8
+#: hacks/config/cubenetic.xml.h:12 hacks/config/euler2d.xml.h:7
+#: hacks/config/flame.xml.h:10 hacks/config/glslideshow.xml.h:16
+#: hacks/config/goop.xml.h:7 hacks/config/halftone.xml.h:9
+#: hacks/config/hopalong.xml.h:14 hacks/config/hyperball.xml.h:6
+#: hacks/config/hypercube.xml.h:5 hacks/config/interference.xml.h:12
+#: hacks/config/jigglypuff.xml.h:11 hacks/config/kumppa.xml.h:6
+#: hacks/config/lavalite.xml.h:14 hacks/config/nerverot.xml.h:14
+#: hacks/config/petri.xml.h:10 hacks/config/pyro.xml.h:7
+#: hacks/config/qix.xml.h:13 hacks/config/speedmine.xml.h:6
+#: hacks/config/spheremonics.xml.h:8 hacks/config/spiral.xml.h:5
+#: hacks/config/squiral.xml.h:8 hacks/config/superquadrics.xml.h:6
+#: hacks/config/t3d.xml.h:8 hacks/config/twang.xml.h:7
+#: hacks/config/wander.xml.h:11
+msgid "Low"
+msgstr "Lav "
+
+#: hacks/config/attraction.xml.h:20
+msgid "Orbital Mode"
+msgstr ""
+
+#: hacks/config/attraction.xml.h:21
+msgid "Outward"
+msgstr ""
+
+#: hacks/config/attraction.xml.h:22
+msgid "Polygons"
+msgstr "Polygoner"
+
+#: hacks/config/attraction.xml.h:23 hacks/config/fuzzyflakes.xml.h:13
+#: hacks/config/spotlight.xml.h:3 hacks/config/xplanet.xml.h:55
+msgid "Radius"
+msgstr ""
+
+#: hacks/config/attraction.xml.h:24
+msgid "Repulsion Threshold"
+msgstr ""
+
+#: hacks/config/attraction.xml.h:25 hacks/config/blocktube.xml.h:7
+#: hacks/config/braid.xml.h:10 hacks/config/cynosure.xml.h:8
+#: hacks/config/drift.xml.h:11 hacks/config/eruption.xml.h:18
+#: hacks/config/euler2d.xml.h:12 hacks/config/fiberlamp.xml.h:7
+#: hacks/config/fireflies.xml.h:34 hacks/config/flow.xml.h:9
+#: hacks/config/galaxy.xml.h:9 hacks/config/juggle.xml.h:7
+#: hacks/config/klein.xml.h:5 hacks/config/laser.xml.h:9
+#: hacks/config/menger.xml.h:14 hacks/config/metaballs.xml.h:12
+#: hacks/config/mismunch.xml.h:8 hacks/config/munch.xml.h:6
+#: hacks/config/nerverot.xml.h:19 hacks/config/petri.xml.h:22
+#: hacks/config/polyominoes.xml.h:9 hacks/config/rotor.xml.h:9
+#: hacks/config/shadebobs.xml.h:8 hacks/config/sierpinski3d.xml.h:5
+#: hacks/config/spheremonics.xml.h:17 hacks/config/substrate.xml.h:14
+#: hacks/config/wander.xml.h:12 hacks/config/whirlwindwarp.xml.h:6
+msgid "Short"
+msgstr "Kort"
+
+#: hacks/config/attraction.xml.h:29
+msgid "Splines"
+msgstr "Splines"
+
+#: hacks/config/attraction.xml.h:30 hacks/config/fireflies.xml.h:42
+msgid "Tails"
+msgstr "Haler"
+
+#: hacks/config/attraction.xml.h:31 hacks/config/euler2d.xml.h:16
+#: hacks/config/juggle.xml.h:10
+msgid "Trail Length"
+msgstr "Lengde på spor"
+
+#: hacks/config/atunnel.xml.h:1
+msgid "Atunnel"
+msgstr ""
+
+#: hacks/config/atunnel.xml.h:2
+msgid ""
+"Draws an animation of a textured tunnel in GL. Requires OpenGL, and a "
+"machine with fast hardware support for texture maps. Written by Eric "
+"Lassauge and Roman Podobedov."
+msgstr ""
+
+#: hacks/config/atunnel.xml.h:4 hacks/config/distort.xml.h:9
+#: hacks/config/glforestfire.xml.h:10 hacks/config/lament.xml.h:4
+#: hacks/config/sballs.xml.h:6
+msgid "Normal"
+msgstr "Normal"
+
+#: hacks/config/atunnel.xml.h:8 hacks/config/glforestfire.xml.h:18
+#: hacks/config/lament.xml.h:8 hacks/config/sballs.xml.h:17
+msgid "Untextured"
+msgstr "Uten tekstur"
+
+#: hacks/config/atunnel.xml.h:9
+#, fuzzy
+msgid "Use light"
+msgstr "Bruk lyn"
+
+#: hacks/config/barcode.xml.h:1
+#, fuzzy
+msgid "Barcode"
+msgstr "Bla gjennom"
+
+#: hacks/config/barcode.xml.h:2
+msgid "Barcode Clock (24 Hour)"
+msgstr ""
+
+#: hacks/config/barcode.xml.h:3
+msgid "Barcode Clock (AM/PM)"
+msgstr ""
+
+#: hacks/config/barcode.xml.h:5
+msgid "Scrolling Barcodes"
+msgstr ""
+
+#: hacks/config/barcode.xml.h:8
+msgid ""
+"This draws a random sequence of colorful barcodes scrolling across your "
+"screen. CONSUME! By Dan Bornstein."
+msgstr ""
+
+#: hacks/config/blaster.xml.h:1
+msgid "Blaster"
+msgstr "Blaster"
+
+#: hacks/config/blaster.xml.h:2
+msgid ""
+"Draws a simulation of flying space-combat robots (cleverly disguised as "
+"colored circles) doing battle in front of a moving star field. Written by "
+"Jonathan Lin."
+msgstr ""
+
+#: hacks/config/blaster.xml.h:5 hacks/config/penetrate.xml.h:4
+msgid "Lasers"
+msgstr "Lasere"
+
+#: hacks/config/blaster.xml.h:7
+msgid "Robots"
+msgstr "Roboter"
+
+#: hacks/config/blaster.xml.h:10 hacks/config/glplanet.xml.h:11
+msgid "Stars"
+msgstr "Stjerner"
+
+#: hacks/config/blinkbox.xml.h:1
+msgid "BlinkBox"
+msgstr ""
+
+#: hacks/config/blinkbox.xml.h:2
+#, fuzzy
+msgid "Box Size"
+msgstr "Maks størrelse"
+
+#: hacks/config/blinkbox.xml.h:3
+msgid "Dissolve"
+msgstr ""
+
+#: hacks/config/blinkbox.xml.h:4 hacks/config/phosphor.xml.h:3
+msgid "Fade"
+msgstr ""
+
+#: hacks/config/blinkbox.xml.h:6
+msgid ""
+"Shows a ball contained inside of a bounding box. Colored blocks blink in "
+"when the ball hits the edges. Written by Jeremy English."
+msgstr ""
+
+#: hacks/config/blitspin.xml.h:1
+msgid "90 deg Rotation Speed"
+msgstr "Roteringshastighet for 90 grader"
+
+#: hacks/config/blitspin.xml.h:2
+msgid "Bitmap to rotate"
+msgstr "Bilde som skal roteres"
+
+#: hacks/config/blitspin.xml.h:3
+msgid "BlitSpin"
+msgstr "BlitSpin"
+
+#: hacks/config/blitspin.xml.h:5
+msgid "Fuzzy Rotation Speed"
+msgstr ""
+
+#: hacks/config/blitspin.xml.h:6
+msgid "Grab Screen"
+msgstr "Hent skjerm"
+
+#: hacks/config/blitspin.xml.h:8
+msgid ""
+"The ``blitspin'' hack repeatedly rotates a bitmap by 90 degrees by using "
+"logical operations: the bitmap is divided into quadrants, and the quadrants "
+"are shifted clockwise. Then the same thing is done again with progressively "
+"smaller quadrants, except that all sub-quadrants of a given size are rotated "
+"in parallel. Written by Jamie Zawinski based on some cool SmallTalk code "
+"seen in in Byte Magazine in 1981. As you watch it, the image appears to "
+"dissolve into static and then reconstitute itself, but rotated. You can "
+"provide the image to use, as an XBM or XPM file, or tell it to grab a screen "
+"image and rotate that."
+msgstr ""
+
+#: hacks/config/blocktube.xml.h:1
+msgid "BlockTube"
+msgstr ""
+
+#: hacks/config/blocktube.xml.h:2
+msgid "Color Change Time"
+msgstr ""
+
+#: hacks/config/blocktube.xml.h:3
+msgid "Color Hold Time"
+msgstr ""
+
+#: hacks/config/blocktube.xml.h:6
+msgid "Reflective Blocks"
+msgstr ""
+
+#: hacks/config/blocktube.xml.h:10
+#, fuzzy
+msgid "Solid Blocks"
+msgstr "Helfylt gulv"
+
+#: hacks/config/blocktube.xml.h:12
+msgid ""
+"This hack draws a swirling, falling tunnel of reflective slabs. They fade "
+"from hue to hue. Written by Lars R. Damerow."
+msgstr ""
+
+#: hacks/config/boing.xml.h:1
+#, fuzzy
+msgid "Boing"
+msgstr "Lys"
+
+#: hacks/config/boing.xml.h:3 hacks/config/fireflies.xml.h:17
+#: hacks/config/pinion.xml.h:7
+#, fuzzy
+msgid "Huge"
+msgstr "Storbrann"
+
+#: hacks/config/boing.xml.h:4
+#, fuzzy
+msgid "Lighting"
+msgstr "Lyn"
+
+#: hacks/config/boing.xml.h:5
+msgid "Meridians"
+msgstr ""
+
+#: hacks/config/boing.xml.h:6
+#, fuzzy
+msgid "Parallels"
+msgstr "Partikler"
+
+#: hacks/config/boing.xml.h:7
+#, fuzzy
+msgid "Scanlines"
+msgstr "Splines"
+
+#: hacks/config/boing.xml.h:9 hacks/config/galaxy.xml.h:10
+#: hacks/config/lisa.xml.h:7 hacks/config/lissie.xml.h:8
+#: hacks/config/loop.xml.h:6 hacks/config/penrose.xml.h:10
+#: hacks/config/pong.xml.h:3 hacks/config/rotor.xml.h:10
+#: hacks/config/rubik.xml.h:8 hacks/config/sproingies.xml.h:5
+#: hacks/config/wander.xml.h:13 hacks/config/worm.xml.h:6
+msgid "Size"
+msgstr "Størrelse"
+
+#: hacks/config/boing.xml.h:11
+#, fuzzy
+msgid "Smoothing"
+msgstr "Myk"
+
+#: hacks/config/boing.xml.h:13
+msgid ""
+"This bouncing ball is a clone of the first graphics demo for the Amiga 1000, "
+"which was written by Dale Luck and RJ Mical during a break at the 1984 "
+"Consumer Electronics Show (or so the legend goes.) This looks like the "
+"original Amiga demo if you turn off \"smoothing\" and \"lighting\" and turn "
+"on \"scanlines\". Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/boing.xml.h:14 hacks/config/fireflies.xml.h:43
+#: hacks/config/pinion.xml.h:14
+#, fuzzy
+msgid "Tiny"
+msgstr "Tynn"
+
+#: hacks/config/bouboule.xml.h:1
+msgid "Bouboule"
+msgstr "Bouboule"
+
+#: hacks/config/bouboule.xml.h:2 hacks/config/rocks.xml.h:3
+msgid "Do Red/Blue 3D seperation"
+msgstr "Utfør rød/blå 3D-separasjon"
+
+#: hacks/config/bouboule.xml.h:7
+msgid "Number of Spots"
+msgstr "Antall punkter"
+
+#: hacks/config/bouboule.xml.h:10
+#, fuzzy
+msgid ""
+"This draws what looks like a spinning, deforming balloon with varying-sized "
+"spots painted on its invisible surface. Written by Jeremie Petit."
+msgstr "Gjenopprett konfigurasjonen fra et bestemt punkt"
+
+#: hacks/config/bouncingcow.xml.h:1
+msgid "A Cow. A Trampoline. Together, they fight crime. By Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/bouncingcow.xml.h:2 hacks/config/boxed.xml.h:1
+#: hacks/config/carousel.xml.h:3 hacks/config/cubestorm.xml.h:1
+#: hacks/config/flyingtoasters.xml.h:3 hacks/config/fontglide.xml.h:1
+#: hacks/config/gears.xml.h:1 hacks/config/gflux.xml.h:1
+#: hacks/config/glknots.xml.h:1 hacks/config/glmatrix.xml.h:1
+#: hacks/config/jigglypuff.xml.h:1 hacks/config/pinion.xml.h:3
+#: hacks/config/polyhedra.xml.h:3 hacks/config/pyro.xml.h:1
+#: hacks/config/rd-bomb.xml.h:6 hacks/config/rocks.xml.h:1
+#: hacks/config/starwars.xml.h:1 hacks/config/wormhole.xml.h:1
+#: hacks/config/xfishtank.xml.h:1
+msgid "Animation Speed"
+msgstr "Animasjonshastighet"
+
+#: hacks/config/bouncingcow.xml.h:3
+msgid "Beefy Cow"
+msgstr ""
+
+#: hacks/config/bouncingcow.xml.h:4
+#, fuzzy
+msgid "Bounce Speed"
+msgstr "Løsningshastighet"
+
+#: hacks/config/bouncingcow.xml.h:5
+msgid "BouncingCow"
+msgstr ""
+
+#: hacks/config/bouncingcow.xml.h:7
+msgid "Herd"
+msgstr ""
+
+#: hacks/config/bouncingcow.xml.h:8
+#, fuzzy
+msgid "Moo"
+msgstr "Mono"
+
+#: hacks/config/bouncingcow.xml.h:9
+#, fuzzy
+msgid "Number of Cows"
+msgstr "Antall farger"
+
+#: hacks/config/bouncingcow.xml.h:11
+msgid "Wireframe Cow"
+msgstr ""
+
+#: hacks/config/boxed.xml.h:2
+msgid "Boxed"
+msgstr ""
+
+#: hacks/config/boxed.xml.h:3
+msgid ""
+"Draws a box full of 3D bouncing balls that explode. Written by Sander van "
+"Grieken."
+msgstr ""
+
+#: hacks/config/boxed.xml.h:5 hacks/config/cubestorm.xml.h:5
+#: hacks/config/fontglide.xml.h:9 hacks/config/glknots.xml.h:6
+#: hacks/config/polyhedra.xml.h:85
+#, fuzzy
+msgid "Motion Speed"
+msgstr "Roteringshastighet"
+
+#: hacks/config/boxfit.xml.h:1 hacks/config/popsquares.xml.h:1
+#, fuzzy
+msgid "Border"
+msgstr "Kantbredde"
+
+#: hacks/config/boxfit.xml.h:2
+msgid "BoxFit"
+msgstr ""
+
+#: hacks/config/boxfit.xml.h:3 hacks/config/cubenetic.xml.h:1
+msgid "Boxes"
+msgstr "Bokser"
+
+#: hacks/config/boxfit.xml.h:4
+#, fuzzy
+msgid "Boxes Only"
+msgstr "Bokser"
+
+#: hacks/config/boxfit.xml.h:5
+#, fuzzy
+msgid "Boxes or Circles"
+msgstr "Antall sirkler"
+
+#: hacks/config/boxfit.xml.h:6
+#, fuzzy
+msgid "Circles Only"
+msgstr "Omganger"
+
+#: hacks/config/boxfit.xml.h:8
+msgid "Grow By"
+msgstr ""
+
+#: hacks/config/boxfit.xml.h:9
+msgid ""
+"Packs the screen with growing boxes or circles, colored according to a "
+"horizontal or vertical gradient. The objects grow until they touch, then "
+"stop. When the screen is full, they shrink away and the process restarts. "
+"Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/boxfit.xml.h:11 hacks/config/xearth.xml.h:23
+msgid "Spacing"
+msgstr "Mellomrom"
+
+#: hacks/config/braid.xml.h:1
+msgid "Braid"
+msgstr "Flette"
+
+#: hacks/config/braid.xml.h:2
+msgid ""
+"Draws random color-cycling inter-braided concentric circles. Written by John "
+"Neil."
+msgstr ""
+
+#: hacks/config/braid.xml.h:3 hacks/config/bsod.xml.h:9
+#: hacks/config/ccurve.xml.h:7 hacks/config/coral.xml.h:6
+#: hacks/config/cynosure.xml.h:3 hacks/config/deco.xml.h:4
+#: hacks/config/drift.xml.h:2 hacks/config/epicycle.xml.h:3
+#: hacks/config/eruption.xml.h:3 hacks/config/euler2d.xml.h:1
+#: hacks/config/flame.xml.h:5 hacks/config/galaxy.xml.h:2
+#: hacks/config/glsnake.xml.h:5 hacks/config/helix.xml.h:3
+#: hacks/config/hopalong.xml.h:2 hacks/config/imsmap.xml.h:6
+#: hacks/config/klein.xml.h:1 hacks/config/laser.xml.h:2
+#: hacks/config/menger.xml.h:2 hacks/config/metaballs.xml.h:3
+#: hacks/config/mismunch.xml.h:1 hacks/config/moire.xml.h:3
+#: hacks/config/molecule.xml.h:9 hacks/config/munch.xml.h:2
+#: hacks/config/nerverot.xml.h:8 hacks/config/pedal.xml.h:3
+#: hacks/config/penrose.xml.h:5 hacks/config/polyhedra.xml.h:17
+#: hacks/config/polyominoes.xml.h:1 hacks/config/rorschach.xml.h:3
+#: hacks/config/rotzoomer.xml.h:5 hacks/config/shadebobs.xml.h:2
+#: hacks/config/sierpinski3d.xml.h:1 hacks/config/spheremonics.xml.h:4
+#: hacks/config/starfish.xml.h:2 hacks/config/substrate.xml.h:6
+#: hacks/config/vidwhacker.xml.h:3 hacks/config/wander.xml.h:7
+#: hacks/config/xspirograph.xml.h:3
+msgid "Duration"
+msgstr "Varighet"
+
+#: hacks/config/braid.xml.h:5 hacks/config/epicycle.xml.h:7
+#: hacks/config/nerverot.xml.h:12
+msgid "Line Thickness"
+msgstr ""
+
+#: hacks/config/braid.xml.h:8
+msgid "Max Rings"
+msgstr "Maks antall ringer"
+
+#: hacks/config/bsod.xml.h:1 hacks/config/molecule.xml.h:1
+#: hacks/config/vidwhacker.xml.h:1
+msgid "2 minutes"
+msgstr "2 minutter"
+
+#: hacks/config/bsod.xml.h:2 hacks/config/molecule.xml.h:2
+msgid "5 seconds"
+msgstr "5 sekunder"
+
+#: hacks/config/bsod.xml.h:3
+msgid "AmigaDOS"
+msgstr "AmigaDOS"
+
+#: hacks/config/bsod.xml.h:4
+msgid "Apple II"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:5
+msgid "Atari"
+msgstr "Atari"
+
+#: hacks/config/bsod.xml.h:6
+msgid "BSD"
+msgstr "BSD"
+
+#: hacks/config/bsod.xml.h:7
+msgid "BSOD"
+msgstr "BSOD"
+
+#: hacks/config/bsod.xml.h:8
+msgid ""
+"BSOD stands for ``Blue Screen of Death.'' The finest in personal computer "
+"emulation, this hack simulates popular screen savers from a number of less "
+"robust operating systems. Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/bsod.xml.h:10
+msgid "HPUX"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:11
+msgid "HVX/GCOS6"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:12
+msgid "Linux (fsck)"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:13
+msgid "Linux (hppa)"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:14
+msgid "Linux (sparc)"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:15
+msgid "MS-DOS"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:16
+msgid "Mac Bomb"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:17
+msgid "MacOS X"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:18
+msgid "MacsBug"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:19
+#, fuzzy
+msgid "NCD X Terminal  "
+msgstr "NCD X-terminal"
+
+#: hacks/config/bsod.xml.h:20
+msgid "Nvidia"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:21
+msgid "OS/390"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:22
+msgid "SCO"
+msgstr "SCO"
+
+#: hacks/config/bsod.xml.h:23
+msgid "Sad Mac"
+msgstr "Trist Mac"
+
+#: hacks/config/bsod.xml.h:24
+msgid "Solaris"
+msgstr "Solaris"
+
+#: hacks/config/bsod.xml.h:25
+msgid "Tru64"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:26
+msgid "VMS"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:27
+#, fuzzy
+msgid "Windows 2000  "
+msgstr "Windows 2000"
+
+#: hacks/config/bsod.xml.h:28
+#, fuzzy
+msgid "Windows 3.1"
+msgstr "Windows"
+
+#: hacks/config/bsod.xml.h:29
+msgid "Windows NT"
+msgstr "Windows NT"
+
+#: hacks/config/bubble3d.xml.h:1
+msgid "Bubble3D"
+msgstr "Boble3D"
+
+#: hacks/config/bubble3d.xml.h:2
+msgid ""
+"Draws a stream of rising, undulating 3D bubbles, rising toward the top of "
+"the screen, with nice specular reflections. Written by Richard Jones."
+msgstr ""
+
+#: hacks/config/bubbles.xml.h:1 hacks/config/xfishtank.xml.h:2
+msgid "Bubbles"
+msgstr "Bobler"
+
+#: hacks/config/bubbles.xml.h:2
+msgid "Bubbles Fall"
+msgstr "Bobler faller"
+
+#: hacks/config/bubbles.xml.h:3
+msgid "Bubbles Float"
+msgstr "Bobler flyter"
+
+#: hacks/config/bubbles.xml.h:4
+msgid "Bubbles Rise"
+msgstr "Bobler stiger"
+
+#: hacks/config/bubbles.xml.h:5
+msgid "Bubbles exist in three dimensions"
+msgstr "Bobler eksisterer i tre dimensjoner"
+
+#: hacks/config/bubbles.xml.h:6
+msgid "Don't hide bubbles when they pop"
+msgstr "Ikke skjul bobler når de sprekker"
+
+#: hacks/config/bubbles.xml.h:7
+msgid "Draw circles instead of pixmap bubbles"
+msgstr "Tegn sirkler istedet for pixmap-bobler"
+
+#: hacks/config/bubbles.xml.h:9
+msgid "Leave Trails"
+msgstr "Etterlat spor"
+
+#: hacks/config/bubbles.xml.h:12
+msgid ""
+"This simulates the kind of bubble formation that happens when water boils:"
+"small bubbles appear, and as they get closer to each other, they combine to "
+"form larger bubbles, which eventually pop. Written by James Macnicol."
+msgstr ""
+
+#: hacks/config/bumps.xml.h:1
+msgid ""
+"A bit like `Spotlight', except that instead of merely exposing part of your "
+"desktop, it creates a bump map from it. Basically, it 3D-izes a roaming "
+"section of your desktop, based on color intensity. Written by Shane Smit."
+msgstr ""
+
+#: hacks/config/bumps.xml.h:2
+msgid "Bumps"
+msgstr "Humper"
+
+#: hacks/config/cage.xml.h:1
+msgid "Cage"
+msgstr "Bur"
+
+#: hacks/config/cage.xml.h:7
+msgid ""
+"This draws Escher's ``Impossible Cage,'' a 3d analog of a moebius strip, and "
+"rotates it in three dimensions. Written by Marcelo Vianna."
+msgstr ""
+
+#: hacks/config/carousel.xml.h:1 hacks/config/coral.xml.h:1
+#: hacks/config/deco.xml.h:1 hacks/config/helix.xml.h:1
+#: hacks/config/imsmap.xml.h:1 hacks/config/jigsaw.xml.h:2
+#: hacks/config/moire.xml.h:1 hacks/config/pedal.xml.h:1
+#: hacks/config/rorschach.xml.h:1 hacks/config/rotzoomer.xml.h:2
+#: hacks/config/wander.xml.h:2 hacks/config/xspirograph.xml.h:1
+msgid "1 Minute"
+msgstr "1 minutt"
+
+#: hacks/config/carousel.xml.h:2
+#, fuzzy
+msgid "5 Seconds"
+msgstr "0 scekunder"
+
+#: hacks/config/carousel.xml.h:4
+msgid "Carousel"
+msgstr ""
+
+#: hacks/config/carousel.xml.h:6 hacks/config/electricsheep.xml.h:3
+msgid "Frame Rate"
+msgstr ""
+
+#: hacks/config/carousel.xml.h:8
+msgid ""
+"Loads several random images, and displays them flying in a circular "
+"formation. The circle changes speed and direction randomly, tilts on its "
+"axis, and the images move in and out. To tell it where to find the images to "
+"display, go to the \"Advanced\" tab on the Screensaver Preferences window. "
+"Select \"Choose Random Images\", and enter your image directory in the text "
+"field right below that. (Note: not the the \"Advanced\" button at the bottom "
+"of this window: the tab at the top of the *other* window.) This program "
+"requires a good video card capable of supporting large textures. Written by "
+"Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/carousel.xml.h:10
+msgid "No Tilting"
+msgstr ""
+
+#: hacks/config/carousel.xml.h:11
+#, fuzzy
+msgid "Number of Images:"
+msgstr "Antall bølger"
+
+#: hacks/config/carousel.xml.h:13 hacks/config/glslideshow.xml.h:20
+#, fuzzy
+msgid "Show Image Titles"
+msgstr "Bildefil"
+
+#: hacks/config/carousel.xml.h:15
+msgid "Tilt In/Out Only"
+msgstr ""
+
+#: hacks/config/carousel.xml.h:16
+msgid "Tilt In/Out and Left/Right"
+msgstr ""
+
+#: hacks/config/carousel.xml.h:17
+msgid "Tilt Left/Right Only"
+msgstr ""
+
+#: hacks/config/carousel.xml.h:18 hacks/config/glslideshow.xml.h:21
+#: hacks/config/mirrorblob.xml.h:22
+msgid "Time until loading a new image:"
+msgstr ""
+
+#: hacks/config/carousel.xml.h:19
+msgid "Zoom In/Out"
+msgstr ""
+
+#: hacks/config/ccurve.xml.h:1
+msgid "0 seconds"
+msgstr "0 sekunder"
+
+#: hacks/config/ccurve.xml.h:2 hacks/config/epicycle.xml.h:1
+msgid "1 minute"
+msgstr "1 minutt"
+
+#: hacks/config/ccurve.xml.h:3 hacks/config/epicycle.xml.h:2
+#: hacks/config/polyhedra.xml.h:1
+msgid "1 second"
+msgstr "1 sekund"
+
+#: hacks/config/ccurve.xml.h:4
+msgid "C Curve"
+msgstr "C-kurve"
+
+#: hacks/config/ccurve.xml.h:5 hacks/config/fuzzyflakes.xml.h:4
+msgid "Delay"
+msgstr "Pause"
+
+#: hacks/config/ccurve.xml.h:6 hacks/config/coral.xml.h:5
+#: hacks/config/imsmap.xml.h:5 hacks/config/kumppa.xml.h:1
+#: hacks/config/qix.xml.h:6 hacks/config/squiral.xml.h:2
+#: hacks/config/wander.xml.h:4 hacks/config/xmatrix.xml.h:2
+msgid "Density"
+msgstr "Tetthet"
+
+#: hacks/config/ccurve.xml.h:8
+msgid ""
+"Generates self-similar linear fractals, including the classic ``C Curve.'' "
+"Written by Rick Campbell."
+msgstr ""
+
+#: hacks/config/circuit.xml.h:1
+msgid "Animates a number of 3D electronic components. Written by Ben Buxton."
+msgstr ""
+
+#: hacks/config/circuit.xml.h:2
+msgid "Circuit"
+msgstr ""
+
+#: hacks/config/circuit.xml.h:3 hacks/config/gflux.xml.h:4
+#: hacks/config/pulsar.xml.h:2
+msgid "Directional Lighting"
+msgstr ""
+
+#: hacks/config/circuit.xml.h:5
+msgid "Flat Coloring"
+msgstr "Flate farger"
+
+#: hacks/config/circuit.xml.h:6
+msgid "Parts"
+msgstr "Deler"
+
+#: hacks/config/circuit.xml.h:7 hacks/config/flipscreen3d.xml.h:4
+#: hacks/config/gleidescope.xml.h:9 hacks/config/glplanet.xml.h:6
+msgid "Rotate"
+msgstr "Roter"
+
+#: hacks/config/circuit.xml.h:8 hacks/config/pinion.xml.h:10
+msgid "Rotation Speed"
+msgstr "Roteringshastighet"
+
+#: hacks/config/circuit.xml.h:12 hacks/config/cubestorm.xml.h:9
+#: hacks/config/dangerball.xml.h:9 hacks/config/engine.xml.h:17
+#: hacks/config/klein.xml.h:9 hacks/config/whirlygig.xml.h:14
+msgid "Spin"
+msgstr "Spinn"
+
+#: hacks/config/cloudlife.xml.h:1 hacks/config/demon.xml.h:2
+#: hacks/config/petri.xml.h:1
+msgid "Cell Size"
+msgstr "Cellestørrelse"
+
+#: hacks/config/cloudlife.xml.h:2
+msgid "CloudLife"
+msgstr ""
+
+#: hacks/config/cloudlife.xml.h:4
+msgid ""
+"Generates cloud-like formations based on a variant of Conway's Life. The "
+"difference is that cells have a maximum age, after which they count as 3 for "
+"populating the next generation. This makes long-lived formations explode "
+"instead of just sitting there burning a hole in your screen. Written by Don "
+"Marti."
+msgstr ""
+
+#: hacks/config/cloudlife.xml.h:6
+#, fuzzy
+msgid "Initial Density"
+msgstr "Partikkeltetthet"
+
+#: hacks/config/cloudlife.xml.h:9
+#, fuzzy
+msgid "Max Age"
+msgstr "Maks størrelse"
+
+#: hacks/config/cloudlife.xml.h:10
+msgid "Old"
+msgstr ""
+
+#: hacks/config/cloudlife.xml.h:14
+#, fuzzy
+msgid "Young"
+msgstr "Langt"
+
+#: hacks/config/compass.xml.h:1
+msgid "Compass"
+msgstr "Kompass"
+
+#: hacks/config/compass.xml.h:2 hacks/config/deluxe.xml.h:3
+#: hacks/config/fontglide.xml.h:3 hacks/config/fuzzyflakes.xml.h:5
+#: hacks/config/interference.xml.h:6 hacks/config/kumppa.xml.h:2
+#: hacks/config/nerverot.xml.h:6 hacks/config/piecewise.xml.h:3
+#: hacks/config/pipes.xml.h:4
+msgid "Double Buffer"
+msgstr "Double buffer"
+
+#: hacks/config/compass.xml.h:6
+msgid ""
+"This draws a compass, with all elements spinning about randomly, for that "
+"``lost and nauseous'' feeling. Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/coral.xml.h:2 hacks/config/deco.xml.h:2
+#: hacks/config/glslideshow.xml.h:1 hacks/config/helix.xml.h:2
+#: hacks/config/imsmap.xml.h:2 hacks/config/moire.xml.h:2
+#: hacks/config/pedal.xml.h:2 hacks/config/penrose.xml.h:1
+#: hacks/config/rorschach.xml.h:2 hacks/config/xspirograph.xml.h:2
+msgid "1 Second"
+msgstr "1 sekund"
+
+#: hacks/config/coral.xml.h:3
+msgid "Coral"
+msgstr "Korall"
+
+#: hacks/config/coral.xml.h:4 hacks/config/fireworkx.xml.h:2
+#: hacks/config/gflux.xml.h:3 hacks/config/glblur.xml.h:2
+#: hacks/config/glmatrix.xml.h:3 hacks/config/imsmap.xml.h:4
+#: hacks/config/lavalite.xml.h:6 hacks/config/pyro.xml.h:2
+#: hacks/config/qix.xml.h:5 hacks/config/squiral.xml.h:1
+#: hacks/config/xearth.xml.h:4
+msgid "Dense"
+msgstr "Tett"
+
+#: hacks/config/coral.xml.h:10 hacks/config/squiral.xml.h:13
+msgid "Seeds"
+msgstr "Utgangsverdier"
+
+#: hacks/config/coral.xml.h:11
+msgid ""
+"Simulates coral growth, albeit somewhat slowly. Written by Frederick Roeber."
+msgstr ""
+
+#: hacks/config/coral.xml.h:13 hacks/config/fireworkx.xml.h:10
+#: hacks/config/gflux.xml.h:13 hacks/config/glblur.xml.h:16
+#: hacks/config/glmatrix.xml.h:19 hacks/config/imsmap.xml.h:13
+#: hacks/config/lavalite.xml.h:29 hacks/config/pyro.xml.h:14
+#: hacks/config/qix.xml.h:21 hacks/config/squiral.xml.h:15
+#: hacks/config/xearth.xml.h:24 hacks/config/xmatrix.xml.h:17
+msgid "Sparse"
+msgstr ""
+
+#: hacks/config/cosmos.xml.h:1
+msgid "Cosmos"
+msgstr "Kosmos"
+
+#: hacks/config/cosmos.xml.h:2
+msgid ""
+"Draws fireworks and zooming, fading flares. By Tom Campbell. You can find it "
+"at &lt;http://www.cosmosx.org/&gt;"
+msgstr ""
+
+#: hacks/config/critical.xml.h:1
+msgid "Critical"
+msgstr "Kritisk"
+
+#: hacks/config/critical.xml.h:2
+msgid ""
+"Draws a system of self-organizing lines. It starts out as random squiggles, "
+"but after a few iterations, order begins to appear. Written by Martin Pool."
+msgstr ""
+
+#: hacks/config/crystal.xml.h:1
+msgid "Center on Screen"
+msgstr "Sentrer på skjermen"
+
+#: hacks/config/crystal.xml.h:2 hacks/config/deluxe.xml.h:1
+#: hacks/config/fadeplot.xml.h:1 hacks/config/flow.xml.h:1
+#: hacks/config/galaxy.xml.h:1 hacks/config/glforestfire.xml.h:1
+#: hacks/config/grav.xml.h:1 hacks/config/julia.xml.h:1
+#: hacks/config/laser.xml.h:1 hacks/config/lisa.xml.h:1
+#: hacks/config/lissie.xml.h:2 hacks/config/morph3d.xml.h:2
+#: hacks/config/mountain.xml.h:1 hacks/config/piecewise.xml.h:2
+#: hacks/config/qix.xml.h:4 hacks/config/rocks.xml.h:2
+#: hacks/config/rotor.xml.h:2 hacks/config/rubik.xml.h:1
+#: hacks/config/shadebobs.xml.h:1 hacks/config/sierpinski.xml.h:1
+#: hacks/config/slip.xml.h:1 hacks/config/spiral.xml.h:1
+#: hacks/config/sproingies.xml.h:1 hacks/config/superquadrics.xml.h:1
+#: hacks/config/swirl.xml.h:1 hacks/config/worm.xml.h:2
+msgid "Count"
+msgstr "Antall"
+
+#: hacks/config/crystal.xml.h:3
+msgid "Crystal"
+msgstr "Krystall"
+
+#: hacks/config/crystal.xml.h:4
+msgid "Draw Cell"
+msgstr "Tegn celle"
+
+#: hacks/config/crystal.xml.h:5 hacks/config/spheremonics.xml.h:3
+#: hacks/config/xearth.xml.h:6
+msgid "Draw Grid"
+msgstr "Tegn rutenett"
+
+#: hacks/config/crystal.xml.h:7
+msgid "Horizontal Symmetries"
+msgstr "Horisontal symmetri"
+
+#: hacks/config/crystal.xml.h:9
+msgid ""
+"Moving polygons, similar to a kaleidescope (more like a kaleidescope than "
+"the hack called `kaleid,' actually.) This one by Jouk Jansen."
+msgstr ""
+
+#: hacks/config/crystal.xml.h:14
+msgid "Vertical Symmetries"
+msgstr "Vertikal symmetri"
+
+#: hacks/config/cubenetic.xml.h:2
+msgid "Cubenetic"
+msgstr "Kubenetikk"
+
+#: hacks/config/cubenetic.xml.h:3
+msgid "Display Solid Colors"
+msgstr "Vis helfylte farger"
+
+#: hacks/config/cubenetic.xml.h:4
+msgid "Display Surface Patterns"
+msgstr "Vis overflatemønster"
+
+#: hacks/config/cubenetic.xml.h:5
+msgid "Display Wireframe"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:6 hacks/config/glblur.xml.h:3
+#: hacks/config/glknots.xml.h:2 hacks/config/gltext.xml.h:2
+#: hacks/config/lavalite.xml.h:7 hacks/config/menger.xml.h:1
+#: hacks/config/molecule.xml.h:4 hacks/config/polyhedra.xml.h:16
+#: hacks/config/spheremonics.xml.h:1
+msgid "Don't Rotate"
+msgstr "Ikke roter"
+
+#: hacks/config/cubenetic.xml.h:7
+msgid ""
+"Draws a pulsating set of overlapping boxes with ever-chaning blobby patterns "
+"undulating across their surfaces. It's sort of a cubist Lavalite. Written by "
+"Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:14 hacks/config/glblur.xml.h:6
+#: hacks/config/glknots.xml.h:8 hacks/config/gltext.xml.h:5
+#: hacks/config/lavalite.xml.h:19 hacks/config/menger.xml.h:7
+#: hacks/config/molecule.xml.h:14 hacks/config/polyhedra.xml.h:110
+#: hacks/config/spheremonics.xml.h:10
+msgid "Rotate around X and Y axes"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:15 hacks/config/glblur.xml.h:7
+#: hacks/config/glknots.xml.h:9 hacks/config/gltext.xml.h:6
+#: hacks/config/lavalite.xml.h:20 hacks/config/menger.xml.h:8
+#: hacks/config/molecule.xml.h:15 hacks/config/polyhedra.xml.h:111
+#: hacks/config/spheremonics.xml.h:11
+msgid "Rotate around X and Z axes"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:16 hacks/config/glblur.xml.h:8
+#: hacks/config/glknots.xml.h:10 hacks/config/gltext.xml.h:7
+#: hacks/config/lavalite.xml.h:21 hacks/config/menger.xml.h:9
+#: hacks/config/molecule.xml.h:16 hacks/config/polyhedra.xml.h:112
+#: hacks/config/spheremonics.xml.h:12
+msgid "Rotate around X axis"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:17 hacks/config/glblur.xml.h:9
+#: hacks/config/glknots.xml.h:11 hacks/config/gltext.xml.h:8
+#: hacks/config/lavalite.xml.h:22 hacks/config/menger.xml.h:10
+#: hacks/config/molecule.xml.h:17 hacks/config/polyhedra.xml.h:113
+#: hacks/config/spheremonics.xml.h:13
+msgid "Rotate around Y and Z axes"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:18 hacks/config/glblur.xml.h:10
+#: hacks/config/glknots.xml.h:12 hacks/config/gltext.xml.h:9
+#: hacks/config/lavalite.xml.h:23 hacks/config/menger.xml.h:11
+#: hacks/config/molecule.xml.h:18 hacks/config/polyhedra.xml.h:114
+#: hacks/config/spheremonics.xml.h:14
+msgid "Rotate around Y axis"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:19 hacks/config/glblur.xml.h:11
+#: hacks/config/glknots.xml.h:13 hacks/config/gltext.xml.h:10
+#: hacks/config/lavalite.xml.h:24 hacks/config/menger.xml.h:12
+#: hacks/config/molecule.xml.h:19 hacks/config/polyhedra.xml.h:115
+#: hacks/config/spheremonics.xml.h:15
+msgid "Rotate around Z axis"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:20 hacks/config/glblur.xml.h:12
+#: hacks/config/glknots.xml.h:14 hacks/config/gltext.xml.h:11
+#: hacks/config/lavalite.xml.h:25 hacks/config/menger.xml.h:13
+#: hacks/config/molecule.xml.h:20 hacks/config/polyhedra.xml.h:116
+#: hacks/config/spheremonics.xml.h:16
+msgid "Rotate around all three axes"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:25
+msgid "Surface Pattern Complexity"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:26
+msgid "Surface Pattern Overlap"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:27
+msgid "Surface Pattern Speed"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:28 hacks/config/cubestorm.xml.h:13
+#: hacks/config/dangerball.xml.h:10 hacks/config/engine.xml.h:20
+#: hacks/config/glblur.xml.h:19 hacks/config/glforestfire.xml.h:19
+#: hacks/config/glknots.xml.h:22 hacks/config/glplanet.xml.h:14
+#: hacks/config/gltext.xml.h:17 hacks/config/lavalite.xml.h:31
+#: hacks/config/menger.xml.h:20 hacks/config/molecule.xml.h:25
+#: hacks/config/polyhedra.xml.h:172 hacks/config/spheremonics.xml.h:25
+#: hacks/config/wander.xml.h:15
+msgid "Wander"
+msgstr "Vandre"
+
+#: hacks/config/cubestorm.xml.h:2
+#, fuzzy
+msgid "CubeStorm"
+msgstr "Storm"
+
+#: hacks/config/cubestorm.xml.h:3
+msgid ""
+"Draws a series of rotating 3D boxes that intersect each other and eventually "
+"fill space. Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/cubestorm.xml.h:6
+#, fuzzy
+msgid "Number of Cubes"
+msgstr "Antall sirkler"
+
+#: hacks/config/cubestorm.xml.h:10
+#, fuzzy
+msgid "Strut Thickness"
+msgstr "Tykkhet"
+
+#: hacks/config/cynosure.xml.h:1
+msgid ""
+"A hack similar to `greynetic', but less frenetic. The first implementation "
+"was by Stephen Linhart; then Ozymandias G. Desiderata wrote a Java applet "
+"clone. That clone was discovered by Jamie Zawinski, and ported to C for "
+"inclusion here."
+msgstr ""
+
+#: hacks/config/cynosure.xml.h:2
+msgid "Cynosure"
+msgstr "Cynosure"
+
+#: hacks/config/dangerball.xml.h:1
+msgid "DangerBall"
+msgstr "FareBall"
+
+#: hacks/config/dangerball.xml.h:2
+msgid ""
+"Draws a ball that periodically extrudes many random spikes. Ouch! Written by "
+"Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/dangerball.xml.h:7
+msgid "Spike Count"
+msgstr ""
+
+#: hacks/config/dangerball.xml.h:8
+msgid "Spike Growth"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:1
+msgid "DecayScreen"
+msgstr "Nedbrutt skjerm"
+
+#: hacks/config/decayscreen.xml.h:3
+msgid "Fuzzy Melt"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:4
+msgid "Melt Away From Center"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:5
+msgid "Melt Down"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:6
+msgid "Melt Down, Left"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:7
+msgid "Melt Down, Right"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:8
+msgid "Melt Left"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:9
+msgid "Melt Right"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:10
+msgid "Melt Towards Center"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:11
+msgid "Melt Up"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:12
+msgid "Melt Up, Left"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:13
+msgid "Melt Up, Right"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:14
+msgid "Melty Melt"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:15
+msgid "Random Melt Style"
+msgstr "Tilfeldig stil for smelting"
+
+#: hacks/config/decayscreen.xml.h:16
+msgid "Shuffle Melt"
+msgstr ""
+
+#: hacks/config/decayscreen.xml.h:19
+msgid "Stretchy Melt"
+msgstr "Strukket smelting"
+
+#: hacks/config/decayscreen.xml.h:20
+msgid ""
+"This takes an image and makes it melt. You've no doubt seen this effect "
+"before, but no screensaver would really be complete without it. It works "
+"best if there's something colorful visible. Warning, if the effect continues "
+"after the screen saver is off, seek medical attention. Written by David "
+"Wald, Vivek Khera, Jamie Zawinski, and Vince Levey."
+msgstr ""
+
+#: hacks/config/deco.xml.h:3
+msgid "Deco"
+msgstr "Deko"
+
+#: hacks/config/deco.xml.h:6 hacks/config/menger.xml.h:5
+#: hacks/config/sierpinski3d.xml.h:4
+msgid "Max Depth"
+msgstr ""
+
+#: hacks/config/deco.xml.h:7
+msgid "Min Size"
+msgstr "Minste størrelse"
+
+#: hacks/config/deco.xml.h:9
+msgid ""
+"This one subdivides and colors rectangles randomly. It looks kind of like "
+"Brady-Bunch-era rec-room wall paneling. (Raven says: ``this screensaver is "
+"ugly enough to peel paint.'') Written by Jamie Zawinski, inspired by Java "
+"code by Michael Bayne."
+msgstr ""
+
+#: hacks/config/deco.xml.h:11 hacks/config/rd-bomb.xml.h:23
+#: hacks/config/whirlygig.xml.h:20 hacks/config/xearth.xml.h:33
+#: hacks/config/zoom.xml.h:10
+msgid "x"
+msgstr "x"
+
+#: hacks/config/deluxe.xml.h:2
+msgid "Deluxe"
+msgstr "Deluxe"
+
+#: hacks/config/deluxe.xml.h:12
+msgid ""
+"This draws a pulsing sequence of stars, circles, and lines. It would look "
+"better if it was faster, but as far as I can tell, there is no way to make "
+"this be both: fast, and flicker-free. Yet another reason X sucks. Written by "
+"Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/deluxe.xml.h:13
+msgid "Transparency"
+msgstr "Gjennomsiktighet"
+
+#: hacks/config/demon.xml.h:1
+msgid ""
+"A cellular automaton that starts with a random field, and organizes it into "
+"stripes and spirals. Written by David Bagley."
+msgstr ""
+
+#: hacks/config/demon.xml.h:3
+msgid "Demon"
+msgstr "Demon"
+
+#: hacks/config/demon.xml.h:11
+msgid "States"
+msgstr "Stater"
+
+#: hacks/config/discrete.xml.h:1
+msgid "Discrete"
+msgstr "Diskre"
+
+#: hacks/config/discrete.xml.h:5
+msgid ""
+"More ``discrete map'' systems, including new variants of Hopalong and Julia, "
+"and a few others. Written by Tim Auckland."
+msgstr ""
+
+#: hacks/config/distort.xml.h:1
+msgid "Black Hole"
+msgstr "Sort hull"
+
+#: hacks/config/distort.xml.h:2
+msgid "Bounce"
+msgstr "Sprett"
+
+#: hacks/config/distort.xml.h:3
+msgid "Distort"
+msgstr "Forvreng"
+
+#: hacks/config/distort.xml.h:6
+msgid "Lens Count"
+msgstr "Antall linser"
+
+#: hacks/config/distort.xml.h:7
+msgid "Lens Size"
+msgstr "Linsestørrelse"
+
+#: hacks/config/distort.xml.h:8
+msgid "Magnify"
+msgstr "Forstørr"
+
+#: hacks/config/distort.xml.h:10
+msgid "Reflect"
+msgstr "Reflekter"
+
+#: hacks/config/distort.xml.h:14
+msgid "Swamp Thing"
+msgstr "Sumpting"
+
+#: hacks/config/distort.xml.h:15
+msgid ""
+"This hack grabs an image of the screen, and then lets a transparent lens "
+"wander around the screen, magnifying whatever is underneath. Written by "
+"Jonas Munsin."
+msgstr ""
+
+#: hacks/config/distort.xml.h:16 hacks/config/moire.xml.h:12
+#: hacks/config/rd-bomb.xml.h:21 hacks/config/ripples.xml.h:15
+#: hacks/config/rotzoomer.xml.h:10 hacks/config/swirl.xml.h:10
+#: hacks/config/twang.xml.h:15 hacks/config/xflame.xml.h:7
+msgid "Use Shared Memory"
+msgstr "Bruk delt minne"
+
+#: hacks/config/distort.xml.h:17
+msgid "Vortex"
+msgstr ""
+
+#: hacks/config/drift.xml.h:1
+msgid "Drift"
+msgstr "Driv"
+
+#: hacks/config/drift.xml.h:4
+msgid "Fractal Growth"
+msgstr "Fraktal vekst"
+
+#: hacks/config/drift.xml.h:5
+msgid "High Dimensional Sphere"
+msgstr ""
+
+#: hacks/config/drift.xml.h:6
+msgid ""
+"How could one possibly describe this except as ``drifting recursive fractal "
+"cosmic flames?'' Another fine hack from the Scott Draves collection of fine "
+"hacks."
+msgstr ""
+
+#: hacks/config/drift.xml.h:7
+msgid "Lissojous Figures"
+msgstr ""
+
+#: hacks/config/electricsheep.xml.h:1
+msgid "ElectricSheep"
+msgstr ""
+
+#: hacks/config/electricsheep.xml.h:2
+msgid ""
+"ElectricSheep is an xscreensaver module that displays mpeg video of an "
+"animated fractal flame. In the background, it contributes render cycles to "
+"the next animation. Periodically it uploades completed frames to the server, "
+"where they are compressed for distribution to all clients. This program is "
+"recommended only if you have a high bandwidth, always-on connection to the "
+"Internet. By Scott Draves. You can find it at &lt;http://www.electricsheep."
+"org/&gt;."
+msgstr ""
+
+#: hacks/config/electricsheep.xml.h:4
+#, fuzzy
+msgid "Hide Sheep"
+msgstr "Lysbildehastighet"
+
+#: hacks/config/electricsheep.xml.h:5
+msgid "Megabytes of Local Sheep Storage"
+msgstr ""
+
+#: hacks/config/electricsheep.xml.h:6
+msgid "Nickname"
+msgstr ""
+
+#: hacks/config/electricsheep.xml.h:7
+msgid "Repititions of each Sheep"
+msgstr ""
+
+#: hacks/config/electricsheep.xml.h:8
+#, fuzzy
+msgid "Standalone"
+msgstr "Forvalg"
+
+#: hacks/config/electricsheep.xml.h:9
+msgid "URL"
+msgstr ""
+
+#: hacks/config/endgame.xml.h:1
+msgid ""
+"Black slips out of three mating nets, but the fourth one holds him tight! A "
+"brilliant composition! Written by Blair Tennessy."
+msgstr ""
+
+#: hacks/config/endgame.xml.h:2
+msgid "Endgame"
+msgstr ""
+
+#: hacks/config/engine.xml.h:1
+msgid "Audi Quattro (5 cylinders)"
+msgstr ""
+
+#: hacks/config/engine.xml.h:2
+msgid "BMW M3 (4 cylinders)"
+msgstr ""
+
+#: hacks/config/engine.xml.h:3
+msgid "BMW M5 (6 cylinders)"
+msgstr ""
+
+#: hacks/config/engine.xml.h:4
+msgid "Corvette Z06 (8 cylinders, V)"
+msgstr ""
+
+#: hacks/config/engine.xml.h:5
+msgid "Dodge Viper (10 cylinders, V)"
+msgstr ""
+
+#: hacks/config/engine.xml.h:6
+msgid ""
+"Draws a simple model of an engine that floats around the screen. Written by "
+"Ben Buxton and Ed Beroset."
+msgstr ""
+
+#: hacks/config/engine.xml.h:7
+msgid "Engine"
+msgstr ""
+
+#: hacks/config/engine.xml.h:9
+msgid "Honda Insight (3 cylinders)"
+msgstr ""
+
+#: hacks/config/engine.xml.h:10
+msgid "Jaguar XKE (12 cylinders, V)"
+msgstr ""
+
+#: hacks/config/engine.xml.h:11
+msgid "Porsche 911 (6 cylinders, flat)"
+msgstr ""
+
+#: hacks/config/engine.xml.h:12
+#, fuzzy
+msgid "Random Engine"
+msgstr "Gjør tilfeldig"
+
+#: hacks/config/engine.xml.h:13
+msgid "Show Engine Name"
+msgstr ""
+
+#: hacks/config/engine.xml.h:18
+msgid "Subaru XT (6 cylinders, V)"
+msgstr ""
+
+#: hacks/config/engine.xml.h:19
+msgid "VW Beetle (4 cylinders, flat)"
+msgstr ""
+
+#: hacks/config/epicycle.xml.h:4
+msgid "Epicycle"
+msgstr "Episyklus"
+
+#: hacks/config/epicycle.xml.h:6
+msgid "Harmonics"
+msgstr ""
+
+#: hacks/config/epicycle.xml.h:12
+msgid ""
+"This program draws the path traced out by a point on the edge of a circle. "
+"That circle rotates around a point on the rim of another circle, and so on, "
+"several times. These were the basis for the pre-heliocentric model of "
+"planetary motion. Written by James Youngman."
+msgstr ""
+
+#: hacks/config/eruption.xml.h:1
+msgid "An exposive version of XFlame. By W.P. van Paassen."
+msgstr ""
+
+#: hacks/config/eruption.xml.h:2
+msgid "Cooling factor"
+msgstr ""
+
+#: hacks/config/eruption.xml.h:4
+#, fuzzy
+msgid "Eruption"
+msgstr "Ekstrusjon"
+
+#: hacks/config/eruption.xml.h:7 hacks/config/fluidballs.xml.h:9
+#: hacks/config/qix.xml.h:9 hacks/config/speedmine.xml.h:4
+msgid "Gravity"
+msgstr "Gravitet"
+
+#: hacks/config/eruption.xml.h:8
+msgid "Heat"
+msgstr ""
+
+#: hacks/config/eruption.xml.h:9
+#, fuzzy
+msgid "Inferno"
+msgstr "Forstyrrelse"
+
+#: hacks/config/eruption.xml.h:10
+msgid "Little"
+msgstr ""
+
+#: hacks/config/eruption.xml.h:13
+msgid "Negative"
+msgstr ""
+
+#: hacks/config/eruption.xml.h:15
+#, fuzzy
+msgid "Number of Particles"
+msgstr "Antall sirkler"
+
+#: hacks/config/eruption.xml.h:16
+#, fuzzy
+msgid "Pleasant"
+msgstr "GLPlanet"
+
+#: hacks/config/eruption.xml.h:17
+msgid "Positive"
+msgstr ""
+
+#: hacks/config/euler2d.xml.h:2
+msgid "Euler2d"
+msgstr ""
+
+#: hacks/config/euler2d.xml.h:10 hacks/config/whirlwindwarp.xml.h:5
+msgid "Particles"
+msgstr "Partikler"
+
+#: hacks/config/euler2d.xml.h:11
+msgid "Power"
+msgstr "Kraft"
+
+#: hacks/config/euler2d.xml.h:13
+msgid ""
+"Simulates two dimensional Incompressible Inviscid Fluid Flow. Written by "
+"Stephen Montgomery-Smith."
+msgstr ""
+
+#: hacks/config/extrusion.xml.h:1
+msgid ""
+"Draws various rotating extruded shapes that twist around, lengthen, and turn "
+"inside out. Created by David Konerding from the samples that come with the "
+"GL Extrusion library by Linas Vepstas."
+msgstr ""
+
+#: hacks/config/extrusion.xml.h:2
+msgid "Extrusion"
+msgstr "Ekstrusjon"
+
+#: hacks/config/extrusion.xml.h:4
+msgid "Helix 2"
+msgstr "Helix 2"
+
+#: hacks/config/extrusion.xml.h:5
+msgid "Helix 3"
+msgstr "Helix 3"
+
+#: hacks/config/extrusion.xml.h:6
+msgid "Helix 4"
+msgstr "Helix 4"
+
+#: hacks/config/extrusion.xml.h:7
+msgid "Join Offset"
+msgstr "Avstand for sammenslåing"
+
+#: hacks/config/extrusion.xml.h:8 hacks/config/polytopes.xml.h:16
+msgid "Random Object"
+msgstr "Tilfeldig objekt"
+
+#: hacks/config/extrusion.xml.h:9
+msgid "Screw"
+msgstr "Skru"
+
+#: hacks/config/extrusion.xml.h:14
+msgid "Taper"
+msgstr ""
+
+#: hacks/config/extrusion.xml.h:15
+msgid "Texture Image"
+msgstr "Teksturbilde"
+
+#: hacks/config/extrusion.xml.h:16
+msgid "Twistoid"
+msgstr "Vridning"
+
+#: hacks/config/extrusion.xml.h:17 hacks/config/glplanet.xml.h:12
+#: hacks/config/pulsar.xml.h:19
+msgid "Use Flat Coloring"
+msgstr ""
+
+#: hacks/config/extrusion.xml.h:18 hacks/config/glplanet.xml.h:13
+msgid "Use Lighting"
+msgstr "Bruk lyn"
+
+#: hacks/config/fadeplot.xml.h:2
+msgid ""
+"Draws what looks like a waving ribbon following a sinusoidal path. Written "
+"by Bas van Gaalen and Charles Vidal."
+msgstr ""
+
+#: hacks/config/fadeplot.xml.h:3
+msgid "FadePlot"
+msgstr "FadePlot"
+
+#: hacks/config/fiberlamp.xml.h:1
+msgid "Draws a groovy rotating fiber optic lamp. Written by Tim Auckland."
+msgstr ""
+
+#: hacks/config/fiberlamp.xml.h:3
+msgid "Fiberlamp"
+msgstr ""
+
+#: hacks/config/fiberlamp.xml.h:4
+#, fuzzy
+msgid "Fibers"
+msgstr "Fisk"
+
+#: hacks/config/fiberlamp.xml.h:8
+msgid "Time between Knocks"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:1
+msgid "10 times"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:2
+msgid ""
+"A bunch of fireflies chase a few baits around the screen, leaving colorful "
+"tails which get blown around by the wind. Written by Matt Perry. This "
+"program is not included with the XScreenSaver package, but if you don't have "
+"it already, you can find it at &lt;http://somewhere.fscked.org/fireflies/"
+"&gt;."
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:3
+msgid "Add some fireflies"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:4
+msgid "Bait accel"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:5
+#, fuzzy
+msgid "Bait speed"
+msgstr "Animasjonshastighet"
+
+#: hacks/config/fireflies.xml.h:6
+msgid "Color cycle speed"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:7
+#, fuzzy
+msgid "Draw baits"
+msgstr "Tegn maur"
+
+#: hacks/config/fireflies.xml.h:8
+#, fuzzy
+msgid "Faded colors"
+msgstr "Skremmende farger"
+
+#: hacks/config/fireflies.xml.h:9
+msgid "Fast Forward speed"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:10
+#, fuzzy
+msgid "Fireflies"
+msgstr "_Fil"
+
+#: hacks/config/fireflies.xml.h:11
+msgid "Firefly accel"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:12
+msgid "Firefly size"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:13
+#, fuzzy
+msgid "Firefly speed"
+msgstr "Animasjonshastighet"
+
+#: hacks/config/fireflies.xml.h:14
+msgid "Frames per sec"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:15
+msgid "Glow factor"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:16
+#, fuzzy
+msgid "Half"
+msgstr "Halo"
+
+#: hacks/config/fireflies.xml.h:18 hacks/config/fluidballs.xml.h:10
+msgid "Hurricane"
+msgstr "Virvelvind"
+
+#: hacks/config/fireflies.xml.h:19
+msgid "Invisible"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:20
+msgid "Kill some fireflies"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:22
+msgid "Make all swarms do something"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:23
+msgid "Matrix (pause and rotate)"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:24
+#, fuzzy
+msgid "Maximum baits"
+msgstr "Animasjonshastighet"
+
+#: hacks/config/fireflies.xml.h:25
+#, fuzzy
+msgid "Maximum flies"
+msgstr "Animasjonshastighet"
+
+#: hacks/config/fireflies.xml.h:26
+msgid "Merge two swarms"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:27
+#, fuzzy
+msgid "Minimum baits"
+msgstr "Animasjonshastighet"
+
+#: hacks/config/fireflies.xml.h:28
+#, fuzzy
+msgid "Minimum flies"
+msgstr "Animasjonshastighet"
+
+#: hacks/config/fireflies.xml.h:29
+#, fuzzy
+msgid "Narrow"
+msgstr "Nær"
+
+#: hacks/config/fireflies.xml.h:30
+#, fuzzy
+msgid "Never"
+msgstr "Nær"
+
+#: hacks/config/fireflies.xml.h:31
+msgid "Normal swarm motion"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:33
+msgid "Opaque"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:35
+msgid "Split a swarm"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:36 hacks/config/fluidballs.xml.h:21
+#: hacks/config/glforestfire.xml.h:16
+msgid "Still"
+msgstr "Stille"
+
+#: hacks/config/fireflies.xml.h:37
+msgid "Swarm bursts into rainbow               "
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:38
+msgid "Swarm comes to a halt"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:39
+msgid "Swarm does loops"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:40
+msgid "Swarm hyperspeed"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:41
+msgid "Swarm tails glow"
+msgstr ""
+
+#: hacks/config/fireflies.xml.h:44
+#, fuzzy
+msgid "Wide"
+msgstr "Vind"
+
+#: hacks/config/fireflies.xml.h:45 hacks/config/fluidballs.xml.h:23
+msgid "Wind"
+msgstr "Vind"
+
+#: hacks/config/fireflies.xml.h:46
+msgid "Wind picks up"
+msgstr ""
+
+#: hacks/config/fireworkx.xml.h:1 hacks/config/lavalite.xml.h:3
+msgid "Activity"
+msgstr ""
+
+#: hacks/config/fireworkx.xml.h:4
+msgid "Fast Fade (more realistic)"
+msgstr ""
+
+#: hacks/config/fireworkx.xml.h:5
+#, fuzzy
+msgid "Fireworkx"
+msgstr "_Fil"
+
+#: hacks/config/fireworkx.xml.h:6
+#, fuzzy
+msgid "Light effect"
+msgstr "Lyneffekt"
+
+#: hacks/config/fireworkx.xml.h:7
+msgid "Pyrotechnics simulation eye-candy. Written by Rony B. Chandran."
+msgstr ""
+
+#: hacks/config/fireworkx.xml.h:8
+#, fuzzy
+msgid "Shoot"
+msgstr "Kort"
+
+#: hacks/config/flag.xml.h:1
+msgid "Bitmap for Flag"
+msgstr "Bitkart for flagg"
+
+#: hacks/config/flag.xml.h:3
+msgid "Flag"
+msgstr "Flagg"
+
+#: hacks/config/flag.xml.h:10
+msgid "Text for Flag"
+msgstr "Tekst for flagg"
+
+#: hacks/config/flag.xml.h:11
+msgid ""
+"This draws a waving colored flag, that undulates its way around the screen. "
+"The trick is the flag can contain arbitrary text and images. By default, it "
+"displays either the current system name and OS type, or a picture of "
+"``Bob,'' but you can replace the text or the image with a command-line "
+"option. Written by Charles Vidal and Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/flame.xml.h:1 hacks/config/jigsaw.xml.h:1
+#: hacks/config/maze.xml.h:1 hacks/config/rotzoomer.xml.h:1
+#: hacks/config/wander.xml.h:1
+msgid "0 Seconds"
+msgstr "0 scekunder"
+
+#: hacks/config/flame.xml.h:2 hacks/config/gleidescope.xml.h:1
+#: hacks/config/glslideshow.xml.h:2 hacks/config/maze.xml.h:2
+#: hacks/config/mirrorblob.xml.h:1
+msgid "10 Seconds"
+msgstr "10 sekunder"
+
+#: hacks/config/flame.xml.h:3
+msgid "Another iterative fractal generator. Written by Scott Draves."
+msgstr ""
+
+#: hacks/config/flame.xml.h:4 hacks/config/jigglypuff.xml.h:4
+msgid "Complexity"
+msgstr "Kompleksitet"
+
+#: hacks/config/flame.xml.h:8
+msgid "Flame"
+msgstr "Flamme"
+
+#: hacks/config/flame.xml.h:13
+msgid "Number of Fractals"
+msgstr "Antall fraktaler"
+
+#: hacks/config/flipflop.xml.h:2
+msgid "FlipFlop"
+msgstr ""
+
+#: hacks/config/flipflop.xml.h:3
+msgid ""
+"Flipflop draws a grid of 3D colored tiles that change positions with each "
+"other. Written by Kevin Ogden."
+msgstr ""
+
+#: hacks/config/flipflop.xml.h:6
+#, fuzzy
+msgid "Solid Tiles"
+msgstr "Helfylt gulv"
+
+#: hacks/config/flipscreen3d.xml.h:2
+msgid "Flipscreen3d"
+msgstr ""
+
+#: hacks/config/flipscreen3d.xml.h:3
+msgid ""
+"Grabs an image of the desktop, turns it into a GL texture map, and spins it "
+"around and deforms it in various ways. Written by Ben Buxton."
+msgstr ""
+
+#: hacks/config/flow.xml.h:3
+msgid "Flow"
+msgstr "Flyt"
+
+#: hacks/config/flow.xml.h:5
+#, fuzzy
+msgid "Length of trails"
+msgstr "Etterlat spor"
+
+#: hacks/config/flow.xml.h:13
+msgid ""
+"Strange attractors formed of flows in a 3D differential equation phase "
+"space. Written by Tim Auckland."
+msgstr ""
+
+#: hacks/config/flow.xml.h:16
+msgid "turn on/off bounding box."
+msgstr ""
+
+#: hacks/config/flow.xml.h:17
+#, fuzzy
+msgid "turn on/off double buffering."
+msgstr "Double buffer"
+
+#: hacks/config/flow.xml.h:18
+msgid "turn on/off periodic attractors."
+msgstr ""
+
+#: hacks/config/flow.xml.h:19
+msgid "turn on/off ride in the flow."
+msgstr ""
+
+#: hacks/config/flow.xml.h:20
+msgid "turn on/off rotating around attractor."
+msgstr ""
+
+#: hacks/config/flow.xml.h:21
+msgid "turn on/off search for new attractors."
+msgstr ""
+
+#: hacks/config/fluidballs.xml.h:1
+#, fuzzy
+msgid "      Freefall"
+msgstr "FrittFall"
+
+#: hacks/config/fluidballs.xml.h:2
+msgid "Ball Size"
+msgstr "Størrelse på ball"
+
+#: hacks/config/fluidballs.xml.h:4
+#, fuzzy
+msgid "Clay"
+msgstr "Pause"
+
+#: hacks/config/fluidballs.xml.h:7
+msgid "FluidBalls"
+msgstr "FlytendeBaller"
+
+#: hacks/config/fluidballs.xml.h:8 hacks/config/twang.xml.h:4
+msgid "Friction"
+msgstr "Friksjon"
+
+#: hacks/config/fluidballs.xml.h:11
+msgid "Jupiter"
+msgstr "Jupiter"
+
+#: hacks/config/fluidballs.xml.h:14
+msgid ""
+"Models the physics of bouncing balls, or of particles in a gas or fluid, "
+"depending on the settings. If \"Shake Box\" is selected, then every now and "
+"then, the box will be rotated, changing which direction is down (in order to "
+"keep the settled balls in motion.) By Peter Birtles and Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/fluidballs.xml.h:15
+#, fuzzy
+msgid "Rubber"
+msgstr "Bobler"
+
+#: hacks/config/fluidballs.xml.h:16
+msgid "Shake Box"
+msgstr "Risteboks"
+
+#: hacks/config/fluidballs.xml.h:22
+msgid "Various Ball Sizes"
+msgstr ""
+
+#: hacks/config/flurry.xml.h:1
+msgid "Binary"
+msgstr ""
+
+#: hacks/config/flurry.xml.h:2
+#, fuzzy
+msgid "Classic"
+msgstr "Glass"
+
+#: hacks/config/flurry.xml.h:3
+#, fuzzy
+msgid "Fire"
+msgstr "_Fil"
+
+#: hacks/config/flurry.xml.h:4
+msgid "Flurry"
+msgstr ""
+
+#: hacks/config/flurry.xml.h:5
+msgid "Insane"
+msgstr ""
+
+#: hacks/config/flurry.xml.h:6
+#, fuzzy
+msgid "Psychedelic"
+msgstr "Psykedeliske farger"
+
+#: hacks/config/flurry.xml.h:7
+msgid "RGB"
+msgstr ""
+
+#: hacks/config/flurry.xml.h:8 hacks/config/fontglide.xml.h:12
+#: hacks/config/jigglypuff.xml.h:13 hacks/config/sballs.xml.h:10
+#: hacks/config/whirlygig.xml.h:12
+msgid "Random"
+msgstr "Tilfeldig"
+
+#: hacks/config/flurry.xml.h:10
+msgid ""
+"This port of the OSX screensaver of the same name draws a colourful star"
+"(fish)like flurry of particles. xscreensaver port by Tobias Sargeant &lt;"
+"tobias.sargeant@bigpond.com&gt; Original Mac version by Calum Robinson &lt;"
+"calumr@mac.com&gt; http://homepage.mac.com/calumr"
+msgstr ""
+
+#: hacks/config/flurry.xml.h:11
+#, fuzzy
+msgid "Water"
+msgstr "Vandre"
+
+#: hacks/config/flyingtoasters.xml.h:1
+msgid ""
+"A fleet of 3d space-age jet-powered flying toasters (and toast!) Inspired by "
+"the ancient Berkeley Systems After Dark flying toasters. By Jamie Zawinski "
+"and Baconmonkey."
+msgstr ""
+
+#: hacks/config/flyingtoasters.xml.h:2
+#, fuzzy
+msgid "Air Speed"
+msgstr "Animasjonshastighet"
+
+#: hacks/config/flyingtoasters.xml.h:4
+msgid "Chrome Toasters"
+msgstr ""
+
+#: hacks/config/flyingtoasters.xml.h:6
+msgid "Flying Toasters"
+msgstr ""
+
+#: hacks/config/flyingtoasters.xml.h:7 hacks/config/glslideshow.xml.h:17
+#: hacks/config/jigglypuff.xml.h:12 hacks/config/juggle.xml.h:5
+#: hacks/config/mirrorblob.xml.h:16 hacks/config/pipes.xml.h:10
+msgid "None"
+msgstr "Ingen"
+
+#: hacks/config/flyingtoasters.xml.h:8
+#, fuzzy
+msgid "Number of Slices"
+msgstr "Antall sirkler"
+
+#: hacks/config/flyingtoasters.xml.h:9
+#, fuzzy
+msgid "Number of Toasters"
+msgstr "Antall punkter"
+
+#: hacks/config/flyingtoasters.xml.h:12
+#, fuzzy
+msgid "Solid Colors"
+msgstr "Helfylt gulv"
+
+#: hacks/config/flyingtoasters.xml.h:13
+#, fuzzy
+msgid "Swarm"
+msgstr "XStråleSverm"
+
+#: hacks/config/fontglide.xml.h:2
+#, fuzzy
+msgid "Brief"
+msgstr "Driv"
+
+#: hacks/config/fontglide.xml.h:5
+#, fuzzy
+msgid "Font Border Thickness"
+msgstr "Tykkhet"
+
+#: hacks/config/fontglide.xml.h:6
+msgid "FontGlide"
+msgstr ""
+
+#: hacks/config/fontglide.xml.h:7
+msgid "Horizontally scrolling text"
+msgstr ""
+
+#: hacks/config/fontglide.xml.h:10
+msgid "Pages of text"
+msgstr ""
+
+#: hacks/config/fontglide.xml.h:11
+msgid ""
+"Puts text on the screen using large characters that glide in from the edges, "
+"assemble, then disperse. Alternately, it can simply scroll whole sentences "
+"from right to left. By Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/fontglide.xml.h:14
+#, fuzzy
+msgid "Text Linger"
+msgstr "Tekstlinjer"
+
+#: hacks/config/fontglide.xml.h:16
+#, fuzzy
+msgid "Vapor Trails"
+msgstr "Spor"
+
+#: hacks/config/forest.xml.h:2 hacks/config/glforestfire.xml.h:6
+msgid "Forest"
+msgstr "Skog"
+
+#: hacks/config/forest.xml.h:7
+msgid ""
+"This draws fractal trees. Written by Peter Baumung. Everybody loves "
+"fractals, right?"
+msgstr ""
+
+#: hacks/config/fuzzyflakes.xml.h:2
+#, fuzzy
+msgid "Border Thickness"
+msgstr "Tykkhet"
+
+#: hacks/config/fuzzyflakes.xml.h:6
+msgid ""
+"Falling colored snowflake/flower shapes. Inspired by the credits of the "
+"anime \"Azumanga Daioh\". Written by Barry Dmytro."
+msgstr ""
+
+#: hacks/config/fuzzyflakes.xml.h:9
+msgid "FuzzyFlakes"
+msgstr ""
+
+#: hacks/config/fuzzyflakes.xml.h:11 hacks/config/xspirograph.xml.h:4
+msgid "Layers"
+msgstr "Lag"
+
+#: hacks/config/fuzzyflakes.xml.h:14
+#, fuzzy
+msgid "Random Colors"
+msgstr "Tilfeldig bevegelse"
+
+#: hacks/config/galaxy.xml.h:4
+msgid "Galaxy"
+msgstr "Galakse"
+
+#: hacks/config/galaxy.xml.h:8
+#, fuzzy
+msgid "Rotate Viewpoint"
+msgstr "Lineær bevegelse"
+
+#: hacks/config/galaxy.xml.h:13
+msgid ""
+"This draws spinning galaxies, which then collide and scatter their stars to "
+"the, uh, four winds or something. Originally an Amiga program by Uli "
+"Siegmund."
+msgstr ""
+
+#: hacks/config/gears.xml.h:3
+msgid "Gears"
+msgstr "Gears"
+
+#: hacks/config/gears.xml.h:4
+msgid "Planetary Gear System"
+msgstr ""
+
+#: hacks/config/gears.xml.h:5 hacks/config/goop.xml.h:9
+msgid "Rotational Speed"
+msgstr ""
+
+#: hacks/config/gears.xml.h:9
+msgid ""
+"This draws sets of turning, interlocking gears, rotating in three "
+"dimensions. Another GL hack, by Danny Sung, Brian Paul, Ed Mackey, and Jamie "
+"Zawinski."
+msgstr ""
+
+#: hacks/config/gears.xml.h:10
+msgid "Three Gear System"
+msgstr ""
+
+#: hacks/config/gflux.xml.h:2
+msgid "Checkerboard"
+msgstr "Sjakkbrett"
+
+#: hacks/config/gflux.xml.h:5
+msgid ""
+"Draws a rippling waves on a rotating wireframe grid, using GL. Written by "
+"Josiah Pease."
+msgstr ""
+
+#: hacks/config/gflux.xml.h:7
+msgid "Flat Lighting"
+msgstr "Flatt lyn"
+
+#: hacks/config/gflux.xml.h:8
+msgid "GFlux"
+msgstr "GFlux"
+
+#: hacks/config/gflux.xml.h:9
+msgid "Mesh Density"
+msgstr ""
+
+#: hacks/config/gflux.xml.h:10
+msgid "Screen Image"
+msgstr "Skjermbilde"
+
+#: hacks/config/gflux.xml.h:14 hacks/config/interference.xml.h:21
+msgid "Wave Speed"
+msgstr "Bølgehastighet"
+
+#: hacks/config/gflux.xml.h:15 hacks/config/glmatrix.xml.h:20
+msgid "Waves"
+msgstr "Bølger"
+
+#: hacks/config/gflux.xml.h:16
+msgid "Wire Mesh"
+msgstr ""
+
+#: hacks/config/glblur.xml.h:1
+#, fuzzy
+msgid "Blur Smoothness"
+msgstr "Myke linjer"
+
+#: hacks/config/glblur.xml.h:5
+msgid "GLBlur"
+msgstr ""
+
+#: hacks/config/glblur.xml.h:18
+msgid ""
+"This program draws a box and a few line segments, and generates a radial "
+"blur outward from it. This creates flowing field effects. This is done by "
+"rendering the scene into a small texture, then repeatedly rendering "
+"increasingly-enlarged and increasingly-transparent versions of that texture "
+"onto the frame buffer. As such, it's quite graphics intensive: don't bother "
+"trying to run this if you don't have hardware-accelerated OpenGL texture "
+"support. It will hurt your machine bad."
+msgstr ""
+
+#: hacks/config/gleidescope.xml.h:2 hacks/config/glslideshow.xml.h:6
+#: hacks/config/mirrorblob.xml.h:3
+#, fuzzy
+msgid "5 Minutes"
+msgstr "1 minutt"
+
+#: hacks/config/gleidescope.xml.h:3
+msgid ""
+"An OpenGL kaleidescope that operates on your desktop image, or on image "
+"files loaded from disk. Written by andrew dean."
+msgstr ""
+
+#: hacks/config/gleidescope.xml.h:4
+#, fuzzy
+msgid "Gleidescope"
+msgstr "Kaleidoskop"
+
+#: hacks/config/gleidescope.xml.h:5
+#, fuzzy
+msgid "Image Duration"
+msgstr "V_arighet for utfasing"
+
+#: hacks/config/gleidescope.xml.h:6
+#, fuzzy
+msgid "Image file"
+msgstr "Bildefil"
+
+#: hacks/config/gleidescope.xml.h:8
+#, fuzzy
+msgid "Move"
+msgstr "Flere"
+
+#: hacks/config/gleidescope.xml.h:11
+msgid "Size of tube"
+msgstr ""
+
+#: hacks/config/gleidescope.xml.h:13 hacks/config/hyperball.xml.h:16
+#: hacks/config/hypercube.xml.h:16 hacks/config/zoom.xml.h:8
+msgid "Zoom"
+msgstr "Zoom"
+
+#: hacks/config/glforestfire.xml.h:2
+msgid "Desert"
+msgstr "Ørken"
+
+#: hacks/config/glforestfire.xml.h:3
+msgid ""
+"Draws an animation of sprinkling fire-like 3D triangles in a landscape "
+"filled with trees. Requires OpenGL, and a machine with fast hardware support "
+"for texture maps. Written by Eric Lassauge &lt;lassauge@users.sourceforge."
+"net&gt;."
+msgstr ""
+
+#: hacks/config/glforestfire.xml.h:5 hacks/config/glmatrix.xml.h:9
+msgid "Fog"
+msgstr "Tåke"
+
+#: hacks/config/glforestfire.xml.h:7
+msgid "GLForestFire"
+msgstr "GLSkogbrann"
+
+#: hacks/config/glforestfire.xml.h:8
+msgid "Huge Fire"
+msgstr "Storbrann"
+
+#: hacks/config/glforestfire.xml.h:9
+msgid "No shadow"
+msgstr "Ingen skygge"
+
+#: hacks/config/glforestfire.xml.h:11
+msgid "Number of trees"
+msgstr "Antall trær"
+
+#: hacks/config/glforestfire.xml.h:12
+msgid "Rain"
+msgstr "Regn"
+
+#: hacks/config/glforestfire.xml.h:17
+msgid "Track mouse"
+msgstr ""
+
+#: hacks/config/glknots.xml.h:4
+msgid "GLKnots"
+msgstr ""
+
+#: hacks/config/glknots.xml.h:5
+msgid ""
+"Generates some twisting 3d knot patterns. Spins 'em around. Written by Jamie "
+"Zawinski."
+msgstr ""
+
+#: hacks/config/glknots.xml.h:7 hacks/config/lavalite.xml.h:17
+#: hacks/config/spheremonics.xml.h:9
+msgid "Resolution"
+msgstr "Oppløsing"
+
+#: hacks/config/glknots.xml.h:15
+#, fuzzy
+msgid "Segmented"
+msgstr "Segmenter"
+
+#: hacks/config/glknots.xml.h:18 hacks/config/lavalite.xml.h:28
+#: hacks/config/xmountains.xml.h:25
+msgid "Smooth"
+msgstr "Myk"
+
+#: hacks/config/glmatrix.xml.h:2 hacks/config/xmatrix.xml.h:1
+msgid "Binary Encoding"
+msgstr ""
+
+#: hacks/config/glmatrix.xml.h:4
+#, fuzzy
+msgid "Draw Glyphs"
+msgstr "Tegn flekker"
+
+#: hacks/config/glmatrix.xml.h:5
+#, fuzzy
+msgid "Draw Outlines"
+msgstr "Tegn maur"
+
+#: hacks/config/glmatrix.xml.h:6
+#, fuzzy
+msgid "Draw Solid Boxes"
+msgstr "Tegn flekker"
+
+#: hacks/config/glmatrix.xml.h:7
+msgid ""
+"Draws 3D dropping characters similar to what is seen in the title sequence "
+"of \"The Matrix\". See also \"xmatrix\" for a 2D rendering of the similar "
+"effect that appeared on the computer monitors actually *in* the movie. "
+"Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/glmatrix.xml.h:10
+#, fuzzy
+msgid "GLMatrix"
+msgstr "Xmatrise"
+
+#: hacks/config/glmatrix.xml.h:11 hacks/config/xmatrix.xml.h:7
+msgid "Genetic Encoding"
+msgstr ""
+
+#: hacks/config/glmatrix.xml.h:12
+#, fuzzy
+msgid "Glyph Density"
+msgstr "Tetthet"
+
+#: hacks/config/glmatrix.xml.h:13
+#, fuzzy
+msgid "Glyph Speed"
+msgstr "Hastighet på fisk"
+
+#: hacks/config/glmatrix.xml.h:14 hacks/config/xmatrix.xml.h:8
+msgid "Hexadecimal Encoding"
+msgstr ""
+
+#: hacks/config/glmatrix.xml.h:15 hacks/config/xmatrix.xml.h:11
+msgid "Matrix Encoding"
+msgstr ""
+
+#: hacks/config/glmatrix.xml.h:16
+#, fuzzy
+msgid "Panning"
+msgstr "Pakking"
+
+#: hacks/config/glplanet.xml.h:1
+msgid ""
+"Draws a planet bouncing around in space. Written by David Konerding. The "
+"built-in image is a map of the earth (extracted from `xearth'), but you can "
+"wrap any texture around the sphere, e.g., the planetary textures that come "
+"with `ssystem'."
+msgstr ""
+
+#: hacks/config/glplanet.xml.h:3
+msgid "GLPlanet"
+msgstr "GLPlanet"
+
+#: hacks/config/glplanet.xml.h:4
+msgid "Image File"
+msgstr "Bildefil"
+
+#: hacks/config/glplanet.xml.h:5
+msgid "Roll"
+msgstr ""
+
+#: hacks/config/glslideshow.xml.h:4 hacks/config/rd-bomb.xml.h:5
+#: hacks/config/substrate.xml.h:4 hacks/config/xplanet.xml.h:4
+#, no-c-format
+msgid "100%"
+msgstr "100%"
+
+#: hacks/config/glslideshow.xml.h:5 hacks/config/glsnake.xml.h:2
+#: hacks/config/mirrorblob.xml.h:2 hacks/config/penrose.xml.h:2
+msgid "30 Seconds"
+msgstr "30 sekunder"
+
+#: hacks/config/glslideshow.xml.h:8
+#, no-c-format
+msgid "50%"
+msgstr ""
+
+#: hacks/config/glslideshow.xml.h:9
+msgid "Always show at least this much of the image:"
+msgstr ""
+
+#: hacks/config/glslideshow.xml.h:10 hacks/config/mirrorblob.xml.h:6
+#, fuzzy
+msgid "Crossfade Duration:"
+msgstr "V_arighet for utfasing"
+
+#: hacks/config/glslideshow.xml.h:11
+msgid "Frame Rate:"
+msgstr ""
+
+#: hacks/config/glslideshow.xml.h:12
+msgid "GLSlideshow"
+msgstr ""
+
+#: hacks/config/glslideshow.xml.h:14
+msgid "Letterbox"
+msgstr ""
+
+#: hacks/config/glslideshow.xml.h:15
+msgid ""
+"Loads a random sequence of images and smoothly scans and zooms around in "
+"each, fading from pan to pan. To tell it where to find the images to "
+"display, go to the \"Advanced\" tab on the Screensaver Preferences window. "
+"Select \"Choose Random Images\", and enter your image directory in the text "
+"field right below that. (Note: not the the \"Advanced\" button at the bottom "
+"of this window: the tab at the top of the *other* window.) This program "
+"requires a good video card capable of supporting large textures. Written by "
+"Jamie Zawinski and Mike Oliphant."
+msgstr ""
+
+#: hacks/config/glslideshow.xml.h:18
+#, fuzzy
+msgid "Pan/Zoom Duration:"
+msgstr "V_arighet for utfasing"
+
+#: hacks/config/glsnake.xml.h:1 hacks/config/lavalite.xml.h:1
+msgid "1"
+msgstr "1"
+
+#: hacks/config/glsnake.xml.h:3
+#, fuzzy
+msgid "Angular Velocity"
+msgstr "Maks fart"
+
+#: hacks/config/glsnake.xml.h:4
+msgid ""
+"Draws a simulation of the Rubik's Snake puzzle. Written by Jamie Wilkinson, "
+"Andrew Bennetts, and Peter Aylett."
+msgstr ""
+
+#: hacks/config/glsnake.xml.h:7
+msgid "GlSnake"
+msgstr "GLSlange"
+
+#: hacks/config/glsnake.xml.h:8
+msgid "Loose"
+msgstr "Løs"
+
+#: hacks/config/glsnake.xml.h:9
+msgid "Packing"
+msgstr "Pakking"
+
+#: hacks/config/glsnake.xml.h:11
+#, fuzzy
+msgid "Show Titles"
+msgstr "Vis etiketter"
+
+#: hacks/config/glsnake.xml.h:14
+msgid "Tight"
+msgstr "Tett"
+
+#: hacks/config/glsnake.xml.h:16
+#, fuzzy
+msgid "Y Angular Velocity"
+msgstr "Maks fart"
+
+#: hacks/config/glsnake.xml.h:17
+#, fuzzy
+msgid "Z Angular Velocity"
+msgstr "Maks fart"
+
+#: hacks/config/gltext.xml.h:1
+msgid ""
+"Displays a few lines of text spinning around in a solid 3D font. Written by "
+"Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/gltext.xml.h:4
+msgid "GLText"
+msgstr "GLTekst"
+
+#: hacks/config/gltext.xml.h:16 hacks/config/noseguy.xml.h:5
+msgid "Text"
+msgstr "Tekst"
+
+#: hacks/config/goban.xml.h:1
+msgid "Goban"
+msgstr "Goban"
+
+#: hacks/config/goban.xml.h:2
+msgid ""
+"Replays historical games of go (aka wei-chi and baduk) on the screen. By "
+"Scott Draves. You can find it at &lt;http://www.draves.org/goban/&gt;."
+msgstr ""
+
+#: hacks/config/goop.xml.h:1
+msgid "Additive Colors (reflected light)"
+msgstr ""
+
+#: hacks/config/goop.xml.h:2
+msgid "Blob Count"
+msgstr "Antall blubber"
+
+#: hacks/config/goop.xml.h:3
+msgid "Elasticity"
+msgstr "Elastisitet"
+
+#: hacks/config/goop.xml.h:5
+msgid "Goop"
+msgstr "Goop"
+
+#: hacks/config/goop.xml.h:8
+msgid "Opaque Blobs"
+msgstr ""
+
+#: hacks/config/goop.xml.h:12
+msgid "Speed Limit"
+msgstr "Fartsgrense"
+
+#: hacks/config/goop.xml.h:13
+msgid "Subtractive Colors (transmitted light)"
+msgstr ""
+
+#: hacks/config/goop.xml.h:14
+msgid ""
+"This draws set of animating, transparent, amoeba-like blobs. The blobs "
+"change shape as they wander around the screen, and they are translucent, so "
+"you can see the lower blobs through the higher ones, and when one passes "
+"over another, their colors merge. I got the idea for this from a cool mouse "
+"pad I have, which achieves the same kind of effect in real life by having "
+"several layers plastic with colored oil between them. Written by Jamie "
+"Zawinski."
+msgstr ""
+
+#: hacks/config/goop.xml.h:15
+msgid "Transparent Blobs"
+msgstr "Gjennomsiktige blubber"
+
+#: hacks/config/goop.xml.h:16
+msgid "XOR Blobs"
+msgstr "XOR-blubber"
+
+#: hacks/config/grav.xml.h:3
+msgid "Grav"
+msgstr "Grav"
+
+#: hacks/config/grav.xml.h:6
+msgid "Object Trails"
+msgstr "Objektspor"
+
+#: hacks/config/grav.xml.h:7
+msgid "Orbital Decay"
+msgstr "Avtagning i banen"
+
+#: hacks/config/grav.xml.h:10
+msgid ""
+"This program draws a simple orbital simulation. If you turn on trails, it "
+"looks kind of like a cloud-chamber photograph. Written by Greg Bowering."
+msgstr ""
+
+#: hacks/config/greynetic.xml.h:2
+msgid "Greynetic"
+msgstr "Greynetic"
+
+#: hacks/config/greynetic.xml.h:5
+msgid ""
+"This draws random colored and stippled rectangles. Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/halftone.xml.h:1
+msgid "Delay (Large = low cpu load)"
+msgstr ""
+
+#: hacks/config/halftone.xml.h:2
+msgid "Dot fill factor"
+msgstr ""
+
+#: hacks/config/halftone.xml.h:3
+#, fuzzy
+msgid "Dot size"
+msgstr "Størrelse på maur"
+
+#: hacks/config/halftone.xml.h:4
+msgid ""
+"Draws the gravity force in each point on the screen seen through a halftone "
+"dot pattern. The gravity force is calculated from a set of moving mass "
+"points. View it from a distance for best effect. Written by Peter Jaric &lt;"
+"peter@jaric.org&gt;."
+msgstr ""
+
+#: hacks/config/halftone.xml.h:5
+#, fuzzy
+msgid "Gravity points"
+msgstr "Gravitet"
+
+#: hacks/config/halftone.xml.h:6
+#, fuzzy
+msgid "Halftone"
+msgstr "Halo"
+
+#: hacks/config/halftone.xml.h:10
+msgid "Maximum mass"
+msgstr ""
+
+#: hacks/config/halftone.xml.h:11
+#, fuzzy
+msgid "Maximum speed"
+msgstr "Animasjonshastighet"
+
+#: hacks/config/halftone.xml.h:12
+msgid "Minimum mass"
+msgstr ""
+
+#: hacks/config/halftone.xml.h:13
+#, fuzzy
+msgid "Minimum speed"
+msgstr "Animasjonshastighet"
+
+#: hacks/config/halo.xml.h:1
+msgid "Animate Circles"
+msgstr "Animer sirkler"
+
+#: hacks/config/halo.xml.h:3
+msgid "Halo"
+msgstr "Halo"
+
+#: hacks/config/halo.xml.h:5
+msgid "Number of Circles"
+msgstr "Antall sirkler"
+
+#: hacks/config/halo.xml.h:7
+#, fuzzy
+msgid "Ramp Mode"
+msgstr "Tilfeldig modus"
+
+#: hacks/config/halo.xml.h:9
+msgid "Seuss Mode"
+msgstr ""
+
+#: hacks/config/halo.xml.h:12
+msgid ""
+"This draws trippy psychedelic circular patterns that hurt to look at. It can "
+"also animate the control-points, but that takes a lot of CPU and bandwidth. "
+"Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/helix.xml.h:4
+msgid "Helix"
+msgstr "Helix"
+
+#: hacks/config/helix.xml.h:5
+msgid ""
+"This repeatedly generates spirally string-art-ish patterns. Written by Jamie "
+"Zawinski."
+msgstr ""
+
+#: hacks/config/hopalong.xml.h:3
+msgid "EJK1"
+msgstr ""
+
+#: hacks/config/hopalong.xml.h:4
+msgid "EJK2"
+msgstr ""
+
+#: hacks/config/hopalong.xml.h:5
+msgid "EJK3"
+msgstr ""
+
+#: hacks/config/hopalong.xml.h:6
+msgid "EJK4"
+msgstr ""
+
+#: hacks/config/hopalong.xml.h:7
+msgid "EJK5"
+msgstr ""
+
+#: hacks/config/hopalong.xml.h:8
+msgid "EJK6"
+msgstr ""
+
+#: hacks/config/hopalong.xml.h:11
+msgid "Hopalong"
+msgstr "Hopalong"
+
+#: hacks/config/hopalong.xml.h:12
+msgid "Jong"
+msgstr "Jong"
+
+#: hacks/config/hopalong.xml.h:16
+msgid "Martin"
+msgstr "Martin"
+
+#: hacks/config/hopalong.xml.h:18
+msgid "Popcorn"
+msgstr "Popcorn"
+
+#: hacks/config/hopalong.xml.h:19
+msgid "RR"
+msgstr "RR"
+
+#: hacks/config/hopalong.xml.h:20
+msgid "Sine"
+msgstr "Sinus"
+
+#: hacks/config/hopalong.xml.h:24
+msgid ""
+"This draws lacy fractal patterns, based on iteration in the imaginary plane, "
+"from a 1986 Scientific American article. Mostly written by Patrick Naughton."
+msgstr ""
+
+#: hacks/config/hyperball.xml.h:4
+msgid "Hyperball"
+msgstr "Hyperball"
+
+#: hacks/config/hyperball.xml.h:5
+msgid ""
+"Hyperball is to hypercube as dodecahedron is to cube: this displays a 2D "
+"projection of the sequence of 3D objects which are the projections of the 4D "
+"analog to the dodecahedron. Technically, it is a \"120 cell polytope.\" "
+"Written by Joe Keane. See also the \"polytopes\" hack for a more general "
+"version of this using OpenGL."
+msgstr ""
+
+#: hacks/config/hyperball.xml.h:10 hacks/config/hypercube.xml.h:10
+msgid "XW Rotation"
+msgstr ""
+
+#: hacks/config/hyperball.xml.h:11 hacks/config/hypercube.xml.h:11
+msgid "XY Rotation"
+msgstr ""
+
+#: hacks/config/hyperball.xml.h:12 hacks/config/hypercube.xml.h:12
+msgid "XZ Rotation"
+msgstr ""
+
+#: hacks/config/hyperball.xml.h:13 hacks/config/hypercube.xml.h:13
+msgid "YW Rotation"
+msgstr ""
+
+#: hacks/config/hyperball.xml.h:14 hacks/config/hypercube.xml.h:14
+msgid "YZ Rotation"
+msgstr ""
+
+#: hacks/config/hyperball.xml.h:15 hacks/config/hypercube.xml.h:15
+msgid "ZW Rotation"
+msgstr ""
+
+#: hacks/config/hypercube.xml.h:4
+msgid "Hypercube"
+msgstr "Hyperkube"
+
+#: hacks/config/hypercube.xml.h:9
+msgid ""
+"This displays 2D projections of the sequence of 3D objects which are the "
+"projections of the 4D analog to the cube: as a square is composed of four "
+"lines, each touching two others; and a cube is composed of six squares, each "
+"touching four others; a hypercube is composed of eight cubes, each touching "
+"six others. To make it easier to visualize the rotation, it uses a different "
+"color for the edges of each face. Don't think about it too long, or your "
+"brain will melt. Written by Joe Keane, Fritz Mueller, and Jamie Zawinski. "
+"See also the \"polytopes\" hack for a more general version of this using "
+"OpenGL."
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:1 hacks/config/polytopes.xml.h:1
+msgid "-4.0"
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:2 hacks/config/polytopes.xml.h:5
+msgid "4.0"
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:3
+msgid "4D Hypertorus"
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:4
+#, fuzzy
+msgid "Color Wheel"
+msgstr "Farger"
+
+#: hacks/config/hypertorus.xml.h:5 hacks/config/polytopes.xml.h:10
+#, fuzzy
+msgid "Display Speed"
+msgstr "Stil"
+
+#: hacks/config/hypertorus.xml.h:7 hacks/config/polytopes.xml.h:12
+msgid "Orthographic 3d"
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:8 hacks/config/polytopes.xml.h:13
+msgid "Orthographic 4d"
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:9 hacks/config/polytopes.xml.h:14
+msgid "Perspective 3d"
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:10 hacks/config/polytopes.xml.h:15
+msgid "Perspective 4d"
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:11
+#, fuzzy
+msgid "See-Through Bands"
+msgstr "Veksle mellom farger."
+
+#: hacks/config/hypertorus.xml.h:14
+#, fuzzy
+msgid "Solid Object"
+msgstr "Helfylte objekter"
+
+#: hacks/config/hypertorus.xml.h:15 hacks/config/mirrorblob.xml.h:20
+#: hacks/config/polytopes.xml.h:21 hacks/config/pulsar.xml.h:16
+msgid "Solid Surface"
+msgstr "Hel overflate"
+
+#: hacks/config/hypertorus.xml.h:16
+msgid ""
+"This program shows a rotating Clifford Torus: a torus lying on the \"surface"
+"\" of a 4D hypersphere. Written by Carsten Steger, inspired by Thomas "
+"Banchoff's book \"Beyond the Third Dimension: Geometry, Computer Graphics, "
+"and Higher Dimensions\", Scientific American Library, 1990."
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:17 hacks/config/polytopes.xml.h:23
+#, fuzzy
+msgid "Transparent Surface"
+msgstr "Gjennomsiktig"
+
+#: hacks/config/hypertorus.xml.h:18
+msgid "Two-Sided"
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:19 hacks/config/polytopes.xml.h:24
+#, fuzzy
+msgid "WX Rotation Speed"
+msgstr "Roteringshastighet"
+
+#: hacks/config/hypertorus.xml.h:20 hacks/config/polytopes.xml.h:25
+#, fuzzy
+msgid "WY Rotation Speed"
+msgstr "Roteringshastighet"
+
+#: hacks/config/hypertorus.xml.h:21 hacks/config/polytopes.xml.h:26
+#, fuzzy
+msgid "WZ Rotation Speed"
+msgstr "Roteringshastighet"
+
+#: hacks/config/hypertorus.xml.h:22 hacks/config/polytopes.xml.h:27
+msgid "Wireframe Mesh"
+msgstr ""
+
+#: hacks/config/hypertorus.xml.h:23 hacks/config/polytopes.xml.h:28
+#, fuzzy
+msgid "XY Rotation Speed"
+msgstr "Roteringshastighet"
+
+#: hacks/config/hypertorus.xml.h:24 hacks/config/polytopes.xml.h:29
+#, fuzzy
+msgid "XZ Rotation Speed"
+msgstr "Roteringshastighet"
+
+#: hacks/config/hypertorus.xml.h:25 hacks/config/polytopes.xml.h:30
+#, fuzzy
+msgid "YZ Rotation Speed"
+msgstr "Roteringshastighet"
+
+#: hacks/config/ifs.xml.h:2
+msgid "IFS"
+msgstr "IFS"
+
+#: hacks/config/ifs.xml.h:7
+msgid ""
+"This one draws spinning, colliding iterated-function-system images. Written "
+"by Massimino Pascal."
+msgstr ""
+
+#: hacks/config/imsmap.xml.h:3
+msgid "Brightness Gradients"
+msgstr ""
+
+#: hacks/config/imsmap.xml.h:7
+msgid "Hue Gradients"
+msgstr "Gradienter for glød"
+
+#: hacks/config/imsmap.xml.h:8
+msgid "IMSmap"
+msgstr "IMSkart"
+
+#: hacks/config/imsmap.xml.h:12
+msgid "Saturation Gradients"
+msgstr "Metningsgradienter"
+
+#: hacks/config/imsmap.xml.h:14
+msgid ""
+"This generates random cloud-like patterns. It looks quite different in "
+"monochrome and color. The basic idea is to take four points on the edge of "
+"the image, and assign each a random ``elevation''. Then find the point "
+"between them, and give it a value which is the average of the other four, "
+"plus some small random offset. Then coloration is done based on elevation. "
+"The color selection is done by binding the elevation to either hue, "
+"saturation, or brightness, and assigning random values to the others. The "
+"``brightness'' mode tends to yield cloudlike patterns, and the others tend "
+"to generate images that look like heat-maps or CAT-scans. Written by Juergen "
+"Nickelsen and Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/interference.xml.h:1
+msgid "0"
+msgstr ""
+
+#: hacks/config/interference.xml.h:2
+msgid "360"
+msgstr ""
+
+#: hacks/config/interference.xml.h:3
+msgid "Anim Speed"
+msgstr "Animasjonshastighet"
+
+#: hacks/config/interference.xml.h:4
+msgid ""
+"Another color-field hack, this one works by computing decaying sinusoidal "
+"waves, and allowing them to interfere with each other as their origins move. "
+"Written by Hannu Mallat."
+msgstr ""
+
+#: hacks/config/interference.xml.h:9
+msgid "Hue"
+msgstr ""
+
+#: hacks/config/interference.xml.h:10
+msgid "Interference"
+msgstr "Forstyrrelse"
+
+#: hacks/config/interference.xml.h:13 hacks/config/t3d.xml.h:9
+#: hacks/config/xearth.xml.h:11 hacks/config/zoom.xml.h:5
+msgid "Magnification"
+msgstr "Forstørrelse"
+
+#: hacks/config/interference.xml.h:16
+msgid "Number of Waves"
+msgstr "Antall bølger"
+
+#: hacks/config/interference.xml.h:20
+msgid "Wave Size"
+msgstr "Bølgestørrelse"
+
+#: hacks/config/intermomentary.xml.h:2
+msgid "Intermomentary"
+msgstr ""
+
+#: hacks/config/intermomentary.xml.h:3
+#, fuzzy
+msgid "Number of Discs"
+msgstr "Antall sirkler"
+
+#: hacks/config/intermomentary.xml.h:6
+msgid ""
+"The Intersection Momentary is a fun visualization defining the relationships "
+"between objects with Casey Reas, William Ngan, and Robert Hodgin. "
+"Commissioned for display at the Whitney Museum of American Art. A surface "
+"filled with 100 medium to small sized circles. Each circle has a different "
+"size and direction, but moves at the same slow rate. Display: A. The "
+"instantaneous intersections of the circles. B. The aggregate intersections "
+"of the circles. Ported to XScreensaver from the art project \"InterMomentary"
+"\" at http://www.complexification.net"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:2
+msgid "Chrome"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:3
+msgid "Clown barf"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:5
+#, fuzzy
+msgid "Cycle"
+msgstr "Omganger"
+
+#: hacks/config/jigglypuff.xml.h:7
+msgid "Flower box"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:9
+msgid "Inertial damping"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:10
+msgid "JigglyPuff"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:14
+#, fuzzy
+msgid "Rotation speed"
+msgstr "Roteringshastighet"
+
+#: hacks/config/jigglypuff.xml.h:17 hacks/config/sphere.xml.h:7
+msgid "Sphere"
+msgstr "Sfære"
+
+#: hacks/config/jigglypuff.xml.h:18
+msgid "Sphere strength"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:19
+#, fuzzy
+msgid "Spookiness"
+msgstr "Splines"
+
+#: hacks/config/jigglypuff.xml.h:20
+msgid "Spoooooky"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:21 hacks/config/polyhedra.xml.h:155
+#: hacks/config/sballs.xml.h:16
+msgid "Tetrahedron"
+msgstr "Tetrahedron"
+
+#: hacks/config/jigglypuff.xml.h:22
+msgid ""
+"This little gem does bad things with quasi-spherical objects. The gist of it "
+"is that you have what is, structurally, a tetrahedron with tesselated faces. "
+"the vertices on these faces have forces on them in the form of one "
+"proportional to their distance from the surface of a sphere, and one which "
+"is proportional to how far they differ from some ideal distance from their "
+"neighbors. They also have inertia. The forces and distance are parameters "
+"and there are also a couple of visual parameters. The resulting effect can "
+"range from a shape that does nothing, to a frenetic polygon storm. Somewhere "
+"in between there it usually manifests as a blob that jiggles in a kind of "
+"disturbing manner. woo. It doesn't matter, however. You should just pick "
+"'random'. It overrides all the other options, except for fps, delay and "
+"complexity. By Keith Macleod"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:23
+msgid "Vertex-vertex behavior"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:24
+msgid "Vertex-vertex force"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:26
+msgid "collapse"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:27
+msgid "expand"
+msgstr ""
+
+#: hacks/config/jigglypuff.xml.h:28
+#, fuzzy
+msgid "none"
+msgstr "Ingen"
+
+#: hacks/config/jigglypuff.xml.h:29
+#, fuzzy
+msgid "strong"
+msgstr "Rar"
+
+#: hacks/config/jigsaw.xml.h:4
+msgid "Jigsaw"
+msgstr "Puslespill"
+
+#: hacks/config/jigsaw.xml.h:6
+msgid "Solved Duration"
+msgstr ""
+
+#: hacks/config/jigsaw.xml.h:8
+msgid ""
+"This grabs a screen image, carves it up into a jigsaw puzzle, shuffles it, "
+"and then solves the puzzle. This works especially well when you feed it an "
+"external video signal instead of letting it grab the screen image (actually, "
+"I guess this is generally true...) When it is grabbing a video image, it is "
+"sometimes pretty hard to guess what the image is going to look like once the "
+"puzzle is solved. Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/juggle.xml.h:1
+msgid "Draws a juggling stick-man. Written by Tim Auckland."
+msgstr ""
+
+#: hacks/config/juggle.xml.h:3
+msgid "Juggle"
+msgstr "Jongler"
+
+#: hacks/config/juggle.xml.h:6
+#, fuzzy
+msgid "Performance Length"
+msgstr "Lengde på spor"
+
+#: hacks/config/juggle.xml.h:11
+msgid "Use Pattern "
+msgstr ""
+
+#: hacks/config/juggle.xml.h:12
+msgid "turn on/off Balls."
+msgstr ""
+
+#: hacks/config/juggle.xml.h:13
+#, fuzzy
+msgid "turn on/off Bowling Balls."
+msgstr "Double buffer"
+
+#: hacks/config/juggle.xml.h:14
+#, fuzzy
+msgid "turn on/off Clubs."
+msgstr "Double buffer"
+
+#: hacks/config/juggle.xml.h:15
+msgid "turn on/off Flaming Torches."
+msgstr ""
+
+#: hacks/config/juggle.xml.h:16
+msgid "turn on/off Knives."
+msgstr ""
+
+#: hacks/config/juggle.xml.h:17
+#, fuzzy
+msgid "turn on/off Rings."
+msgstr "Double buffer"
+
+#: hacks/config/juggle.xml.h:18
+#, fuzzy
+msgid "turn on/off pattern descriptions."
+msgstr "Double buffer"
+
+#: hacks/config/julia.xml.h:3 hacks/config/rorschach.xml.h:4
+msgid "Iterations"
+msgstr "Gjennomganger"
+
+#: hacks/config/julia.xml.h:4
+msgid "Julia"
+msgstr "Julia"
+
+#: hacks/config/julia.xml.h:11
+msgid ""
+"This one draws spinning, animating (are you detecting a pattern here yet?) "
+"explorations of the Julia set. You've probably seen static images of this "
+"fractal form before, but it's a lot of fun to watch in motion as well. One "
+"interesting thing is that there is a small swinging dot passing in front of "
+"the image, which indicates the control point from which the rest of the "
+"image was generated. Written by Sean McCullough."
+msgstr ""
+
+#: hacks/config/kaleidescope.xml.h:1
+msgid ""
+"Another clone of an ancient meme, consisting largely of frenetic rotational "
+"motion of colored lines. This one is by Ron Tapia. The motion is nice, but I "
+"think it needs more solids, or perhaps just brighter colors. More variations "
+"in the rotational speed might help, too."
+msgstr ""
+
+#: hacks/config/kaleidescope.xml.h:4
+msgid "Kaleidescope"
+msgstr "Kaleidoskop"
+
+#: hacks/config/kaleidescope.xml.h:6 hacks/config/qix.xml.h:18
+msgid "Segments"
+msgstr "Segmenter"
+
+#: hacks/config/kaleidescope.xml.h:9
+msgid "Symmetry"
+msgstr ""
+
+#: hacks/config/kaleidescope.xml.h:10
+msgid "Trails"
+msgstr "Spor"
+
+#: hacks/config/klein.xml.h:3
+msgid "Klein"
+msgstr ""
+
+#: hacks/config/klein.xml.h:10
+msgid ""
+"This draws a visualization of a Klein bottle or some other interesting "
+"parametric surfaces. Written by Andrey Mirtchovski."
+msgstr ""
+
+#: hacks/config/klein.xml.h:11
+msgid "Use Randomized Surfaces and Primitives"
+msgstr ""
+
+#: hacks/config/klein.xml.h:12
+#, fuzzy
+msgid "Wander Around the Screen"
+msgstr "Sentrer på skjermen"
+
+#: hacks/config/kumppa.xml.h:5
+msgid "Kumppa"
+msgstr "Kumppa"
+
+#: hacks/config/kumppa.xml.h:7
+msgid "Randomize"
+msgstr "Gjør tilfeldig"
+
+#: hacks/config/kumppa.xml.h:10
+msgid ""
+"Spiraling, spinning, and very, very fast splashes of color rush toward the "
+"screen. Written by Teemu Suutari."
+msgstr ""
+
+#: hacks/config/lament.xml.h:1
+msgid ""
+"Animates a simulation of Lemarchand's Box, repeatedly solving itself. "
+"Requires OpenGL, and a machine with fast hardware support for texture maps. "
+"Warning: occasionally opens doors. Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/lament.xml.h:3
+msgid "Lament"
+msgstr "Lament"
+
+#: hacks/config/laser.xml.h:4
+msgid "Laser"
+msgstr "Laser"
+
+#: hacks/config/laser.xml.h:7
+msgid ""
+"Moving radiating lines, that look vaguely like scanning laser beams. Written "
+"by Pascal Pensa. (Frankie say: relax.)"
+msgstr ""
+
+#: hacks/config/lavalite.xml.h:2 hacks/config/xmountains.xml.h:2
+msgid "10"
+msgstr ""
+
+#: hacks/config/lavalite.xml.h:4
+msgid "Classic Lavalite"
+msgstr ""
+
+#: hacks/config/lavalite.xml.h:5
+msgid "Cone Lavalite"
+msgstr ""
+
+#: hacks/config/lavalite.xml.h:8
+msgid ""
+"Draws a 3D Simulation a Lava Lite(r): odd-shaped blobs of a mysterious "
+"substance are heated, slowly rise to the top of the bottle, and then drop "
+"back down as they cool. This program requires OpenGL and a fairly fast "
+"machine (both CPU and 3D performance.) Written by Jamie Zawinski. \"LAVA LITE"
+"(r) and the configuration of the LAVA(r) brand motion lamp are registered "
+"trademarks of Haggerty Enterprises, Inc. The configuration of the globe and "
+"base of the motion lamp are registered trademarks of Haggerty Enterprises, "
+"Inc. in the U.S.A. and in other countries around the world.\""
+msgstr ""
+
+#: hacks/config/lavalite.xml.h:9
+msgid "Faceted"
+msgstr ""
+
+#: hacks/config/lavalite.xml.h:11
+msgid "Giant Lavalite"
+msgstr ""
+
+#: hacks/config/lavalite.xml.h:13
+msgid "LavaLite"
+msgstr ""
+
+#: hacks/config/lavalite.xml.h:15
+msgid "Max Blobs"
+msgstr "Maks antall blubber"
+
+#: hacks/config/lavalite.xml.h:16
+msgid "Random Lamp Style"
+msgstr "Tilfeldig lampestil"
+
+#: hacks/config/lavalite.xml.h:18
+msgid "Rocket Lavalite"
+msgstr ""
+
+#: hacks/config/lightning.xml.h:2
+msgid "Lightning"
+msgstr "Lyn"
+
+#: hacks/config/lightning.xml.h:7
+msgid ""
+"This one draws crackling fractal lightning bolts. It's simple, direct, and "
+"to the point. If only it had sound... Written by Keith Romberg."
+msgstr ""
+
+#: hacks/config/lisa.xml.h:4
+msgid "Lisa"
+msgstr "Lisa"
+
+#: hacks/config/lisa.xml.h:10
+msgid "Steps"
+msgstr "Steg"
+
+#: hacks/config/lisa.xml.h:11
+msgid ""
+"This draws Lisajous loops, by Caleb Cullen. Remember that device they had "
+"the Phantom Zone prisoners in during their trial in Superman? I think that "
+"was one of these."
+msgstr ""
+
+#: hacks/config/lissie.xml.h:1
+msgid ""
+"Another Lissajous figure. This one draws the progress of circular shapes "
+"along a path. Written by Alexander Jolk."
+msgstr ""
+
+#: hacks/config/lissie.xml.h:5
+msgid "Lissie"
+msgstr "Lissie"
+
+#: hacks/config/lmorph.xml.h:1
+msgid "Closed Figures"
+msgstr ""
+
+#: hacks/config/lmorph.xml.h:2
+msgid "Control Points"
+msgstr "Kontrollpunkter"
+
+#: hacks/config/lmorph.xml.h:4
+msgid "Interpolation Steps"
+msgstr "Steg i interpolasjon"
+
+#: hacks/config/lmorph.xml.h:5
+msgid "LMorph"
+msgstr "LMorph"
+
+#: hacks/config/lmorph.xml.h:6
+msgid "Less"
+msgstr "Færre"
+
+#: hacks/config/lmorph.xml.h:8
+msgid "More"
+msgstr "Flere"
+
+#: hacks/config/lmorph.xml.h:9
+msgid "Open Figures"
+msgstr "Åpne figurer"
+
+#: hacks/config/lmorph.xml.h:10
+msgid "Open and Closed Figures"
+msgstr "Åpne og lukkede figurer"
+
+#: hacks/config/lmorph.xml.h:15
+msgid ""
+"This generates random spline-ish line drawings and morphs between them. "
+"Written by Sverre H. Huseby and Glenn T. Lines."
+msgstr ""
+
+#: hacks/config/loop.xml.h:3
+msgid "Loop"
+msgstr "Løkke"
+
+#: hacks/config/loop.xml.h:10
+msgid ""
+"This one produces loop-shaped colonies that spawn, age, and eventually die. "
+"Written by David Bagley."
+msgstr ""
+
+#: hacks/config/maze.xml.h:3
+msgid "Backtracking Generator"
+msgstr ""
+
+#: hacks/config/maze.xml.h:5 hacks/config/slidescreen.xml.h:3
+msgid "Grid Size"
+msgstr ""
+
+#: hacks/config/maze.xml.h:6
+msgid "Head Toward Exit"
+msgstr ""
+
+#: hacks/config/maze.xml.h:7
+msgid "Ignorant of Exit Direction"
+msgstr ""
+
+#: hacks/config/maze.xml.h:8
+msgid "Joining Generator"
+msgstr ""
+
+#: hacks/config/maze.xml.h:9
+msgid "Maze"
+msgstr "Labyrint"
+
+#: hacks/config/maze.xml.h:10
+#, fuzzy
+msgid "Post-Solve Delay"
+msgstr "Lengre pause"
+
+#: hacks/config/maze.xml.h:11
+#, fuzzy
+msgid "Pre-Solve Delay"
+msgstr "Lengre pause"
+
+#: hacks/config/maze.xml.h:12
+msgid "Random Generator"
+msgstr "Tilfeldighetsgenerator"
+
+#: hacks/config/maze.xml.h:13
+msgid "Seeding Generator"
+msgstr ""
+
+#: hacks/config/maze.xml.h:15
+msgid "Solve Speed"
+msgstr "Løsningshastighet"
+
+#: hacks/config/maze.xml.h:16
+msgid ""
+"This is the ancient X maze demo, modified to work with xscreensaver. It "
+"generates a random maze, then solves it with visual feedback. Originally by "
+"Jim Randell; modified by a cast of thousands."
+msgstr ""
+
+#: hacks/config/memscroller.xml.h:1
+#, fuzzy
+msgid "Draw Green"
+msgstr "Tegn rutenett"
+
+#: hacks/config/memscroller.xml.h:2
+#, fuzzy
+msgid "Draw Random Numbers"
+msgstr "Tegn etiketter"
+
+#: hacks/config/memscroller.xml.h:3
+#, fuzzy
+msgid "Draw in RGB"
+msgstr "Tegn maur"
+
+#: hacks/config/memscroller.xml.h:4
+msgid "Dump Memory"
+msgstr ""
+
+#: hacks/config/memscroller.xml.h:6
+#, fuzzy
+msgid "MemScroller"
+msgstr "Rullehastighet"
+
+#: hacks/config/memscroller.xml.h:9
+msgid ""
+"This draws a dump of its own process memory scrolling across the screen in "
+"three windows at three different rates. Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/menger.xml.h:6
+msgid "Menger"
+msgstr "Menger"
+
+#: hacks/config/menger.xml.h:19
+msgid ""
+"This draws the three-dimensional variant of the recursive Menger Gasket, a "
+"cube-based fractal object analagous to the Sierpinski Tetrahedron. Written "
+"by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/metaballs.xml.h:1
+#, fuzzy
+msgid "Big"
+msgstr "Lys"
+
+#: hacks/config/metaballs.xml.h:2
+msgid ""
+"Draws two dimensional metaballs: overlapping and merging balls with fuzzy "
+"edges. By W.P. van Paassen."
+msgstr ""
+
+#: hacks/config/metaballs.xml.h:7
+msgid "MetaBall Movement"
+msgstr ""
+
+#: hacks/config/metaballs.xml.h:8
+#, fuzzy
+msgid "MetaBall Radius"
+msgstr "Utgangsverdier"
+
+#: hacks/config/metaballs.xml.h:9
+#, fuzzy
+msgid "MetaBalls"
+msgstr "Baller"
+
+#: hacks/config/metaballs.xml.h:11
+#, fuzzy
+msgid "Number of MetaBalls"
+msgstr "Antall fraktaler"
+
+#: hacks/config/mirrorblob.xml.h:4
+msgid "Blobby"
+msgstr ""
+
+#: hacks/config/mirrorblob.xml.h:5 hacks/config/nerverot.xml.h:2
+msgid "Calm"
+msgstr "Rolig"
+
+#: hacks/config/mirrorblob.xml.h:7
+msgid ""
+"Draws a wobbly blob that distorts the image behind it. Requires OpenGL "
+"hardware acceleration for nice animation. Written by Jon Dowdall."
+msgstr ""
+
+#: hacks/config/mirrorblob.xml.h:8
+#, fuzzy
+msgid "Enable Background Image"
+msgstr "Flat bakgrunn"
+
+#: hacks/config/mirrorblob.xml.h:9
+#, fuzzy
+msgid "Enable Colouring"
+msgstr "Aktiver teksturer"
+
+#: hacks/config/mirrorblob.xml.h:10
+msgid "Enable Reflected Image"
+msgstr ""
+
+#: hacks/config/mirrorblob.xml.h:11
+#, fuzzy
+msgid "Enable Walls"
+msgstr "Aktiver tåke"
+
+#: hacks/config/mirrorblob.xml.h:13
+#, fuzzy
+msgid "Field Points"
+msgstr "Punkter"
+
+#: hacks/config/mirrorblob.xml.h:14
+#, fuzzy
+msgid "Freaky"
+msgstr "_Fil"
+
+#: hacks/config/mirrorblob.xml.h:15
+msgid "MirrorBlob"
+msgstr ""
+
+#: hacks/config/mirrorblob.xml.h:17
+msgid "Offset Texture Coordinates"
+msgstr ""
+
+#: hacks/config/mirrorblob.xml.h:23
+msgid "Very Freaky"
+msgstr ""
+
+#: hacks/config/mirrorblob.xml.h:25
+#, fuzzy
+msgid "X Resolution"
+msgstr "Oppløsing"
+
+#: hacks/config/mirrorblob.xml.h:26
+#, fuzzy
+msgid "Y Resolution"
+msgstr "Oppløsing"
+
+#: hacks/config/mismunch.xml.h:5
+#, fuzzy
+msgid "Mismunch"
+msgstr "Munch"
+
+#: hacks/config/mismunch.xml.h:6
+msgid ""
+"Munching errors! This is a creatively broken misimplementation of the "
+"classic munching squares graphics hack. Written by Steven Hazel."
+msgstr ""
+
+#: hacks/config/mismunch.xml.h:7
+msgid "One"
+msgstr ""
+
+#: hacks/config/mismunch.xml.h:9
+msgid "Simultaneous Squares"
+msgstr ""
+
+#: hacks/config/mismunch.xml.h:13 hacks/config/munch.xml.h:10
+#: hacks/config/qix.xml.h:26
+msgid "XOR"
+msgstr "XOR"
+
+#: hacks/config/moebius.xml.h:1
+msgid ""
+"Another M. C. Escher hack by Marcelo Vianna, this one draws ``Moebius Strip "
+"II,'' a GL image of ants walking along the surface of a moebius strip."
+msgstr ""
+
+#: hacks/config/moebius.xml.h:2
+msgid "Draw Ants"
+msgstr "Tegn maur"
+
+#: hacks/config/moebius.xml.h:4
+msgid "Mesh Floor"
+msgstr ""
+
+#: hacks/config/moebius.xml.h:5
+msgid "Moebius"
+msgstr "Moebius"
+
+#: hacks/config/moebius.xml.h:8
+msgid "Solid Floor"
+msgstr "Helfylt gulv"
+
+#: hacks/config/moebius.xml.h:9 hacks/config/qix.xml.h:20
+msgid "Solid Objects"
+msgstr "Helfylte objekter"
+
+#: hacks/config/moire2.xml.h:1
+msgid ""
+"Another example of the fun you can have with moire interference patterns; "
+"this hack generates fields of concentric circles or ovals, and combines the "
+"planes with various operations. The planes are moving independently of one "
+"another, causing the interference lines to ``spray.'' Written by Jamie "
+"Zawinski."
+msgstr ""
+
+#: hacks/config/moire2.xml.h:4
+msgid "Moire2"
+msgstr "Moire2"
+
+#: hacks/config/moire.xml.h:6
+msgid "Moire"
+msgstr "Moire"
+
+#: hacks/config/moire.xml.h:8 hacks/config/rorschach.xml.h:6
+msgid "Offset"
+msgstr "Avstand"
+
+#: hacks/config/moire.xml.h:10
+msgid ""
+"This one draws cool circular interference patterns. Most of the circles you "
+"see aren't explicitly rendered, but show up as a result of interactions "
+"between the other pixels that were drawn. Written by Jamie Zawinski, "
+"inspired by Java code by Michael Bayne. As he pointed out, the beauty of "
+"this one is that the heart of the display algorithm can be expressed with "
+"just a pair of loops and a handful of arithmetic, giving it a high ``display "
+"hack metric''."
+msgstr ""
+
+#: hacks/config/molecule.xml.h:3
+msgid "Describe Molecule"
+msgstr "Beskriv molekyl"
+
+#: hacks/config/molecule.xml.h:5
+msgid "Draw Atomic Bonds"
+msgstr ""
+
+#: hacks/config/molecule.xml.h:6
+msgid "Draw Atoms"
+msgstr "Tegn atomer"
+
+#: hacks/config/molecule.xml.h:7 hacks/config/spheremonics.xml.h:2
+msgid "Draw Bounding Box"
+msgstr ""
+
+#: hacks/config/molecule.xml.h:8
+msgid ""
+"Draws several different representations of molecules. Some common molecules "
+"are built in, and it can also read PDB (Protein Data Base) files as input. "
+"Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/molecule.xml.h:11
+msgid "Label Atoms"
+msgstr ""
+
+#: hacks/config/molecule.xml.h:12
+msgid "Molecule"
+msgstr "Molekyl"
+
+#: hacks/config/molecule.xml.h:13
+#, fuzzy
+msgid "PDB File or Directory"
+msgstr "Bildekatalog"
+
+#: hacks/config/morph3d.xml.h:1
+msgid ""
+"Another 3d shape-changing GL hack, by Marcelo Vianna. It has the same shiny-"
+"plastic feel as Superquadrics, as many computer-generated objects do..."
+msgstr ""
+
+#: hacks/config/morph3d.xml.h:4
+msgid "Morph3D"
+msgstr "Morph3D"
+
+#: hacks/config/mountain.xml.h:3
+msgid ""
+"Generates random 3d plots that look vaguely mountainous. Written by Pascal "
+"Pensa."
+msgstr ""
+
+#: hacks/config/mountain.xml.h:5
+msgid "Mountain"
+msgstr "Fjell"
+
+#: hacks/config/munch.xml.h:1
+msgid ""
+"DATAI 2 ADDB 1,2 ROTC 2,-22 XOR 1,2 JRST .-4 As reported by HAKMEM, in 1962, "
+"Jackson Wright wrote the above PDP-1 code. That code still lives on in this "
+"screenhack, some 35 years later. The number of lines of enclosing code has "
+"increased substantially, however. This version is by Tim Showalter."
+msgstr ""
+
+#: hacks/config/munch.xml.h:5
+msgid "Munch"
+msgstr "Munch"
+
+#: hacks/config/nerverot.xml.h:1
+msgid "Blot Count"
+msgstr ""
+
+#: hacks/config/nerverot.xml.h:3
+msgid "Changes"
+msgstr "Endringer"
+
+#: hacks/config/nerverot.xml.h:4
+msgid "Colors"
+msgstr "Farger"
+
+#: hacks/config/nerverot.xml.h:5
+msgid "Crunchiness"
+msgstr ""
+
+#: hacks/config/nerverot.xml.h:7
+msgid ""
+"Draws different shapes composed of nervously vibrating squiggles, as if seen "
+"through a camera operated by a monkey on crack. By Dan Bornstein."
+msgstr ""
+
+#: hacks/config/nerverot.xml.h:10
+msgid "Frequent"
+msgstr ""
+
+#: hacks/config/nerverot.xml.h:16
+msgid "NerveRot"
+msgstr ""
+
+#: hacks/config/nerverot.xml.h:17
+msgid "Nervousness"
+msgstr "Nervøshet"
+
+#: hacks/config/nerverot.xml.h:18 hacks/config/pyro.xml.h:12
+msgid "Seldom"
+msgstr "Sjelden"
+
+#: hacks/config/nerverot.xml.h:21
+msgid "Spastic"
+msgstr "Spastisk"
+
+#: hacks/config/noof.xml.h:1
+msgid "Draws some rotatey patterns, using OpenGL. Written by Mark Kilgard."
+msgstr ""
+
+#: hacks/config/noof.xml.h:3
+msgid "Noof"
+msgstr ""
+
+#: hacks/config/noseguy.xml.h:1
+msgid ""
+"A little man with a big nose wanders around your screen saying things. The "
+"things which he says can come from a file, or from an external program like "
+"`zippy' or `fortune'. This was extracted from `xnlock' by Dan Heller. "
+"Colorized by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/noseguy.xml.h:2
+msgid "Get Text from File"
+msgstr ""
+
+#: hacks/config/noseguy.xml.h:3
+msgid "Get Text from Program"
+msgstr ""
+
+#: hacks/config/noseguy.xml.h:4
+msgid "Noseguy"
+msgstr "Nesefyr"
+
+#: hacks/config/noseguy.xml.h:6
+msgid "Text File"
+msgstr "Tekstfil"
+
+#: hacks/config/noseguy.xml.h:8
+msgid "Use Text Below"
+msgstr ""
+
+#: hacks/config/pacman.xml.h:2
+#, fuzzy
+msgid "Pacman"
+msgstr "Pakking"
+
+#: hacks/config/pacman.xml.h:3
+#, fuzzy
+msgid "Player Size"
+msgstr "Flisstørrelse"
+
+#: hacks/config/pacman.xml.h:4
+msgid ""
+"Simulates a game of Pac-Man on a randomly-created level. Written by Edwin de "
+"Jong."
+msgstr ""
+
+#: hacks/config/pedal.xml.h:7
+msgid "Pedal"
+msgstr "Pedal"
+
+#: hacks/config/pedal.xml.h:8
+msgid ""
+"This is sort of a combination spirograph/string-art. It generates a large, "
+"complex polygon, and lets the X server do the bulk of the work by giving it "
+"an even/odd winding rule. Written by Dale Moore, based on some ancient PDP-"
+"11 code."
+msgstr ""
+
+#: hacks/config/penetrate.xml.h:1
+msgid "Always play well"
+msgstr ""
+
+#: hacks/config/penetrate.xml.h:2
+msgid "Explosions"
+msgstr "Eksplosjoner"
+
+#: hacks/config/penetrate.xml.h:5
+msgid "Penetrate"
+msgstr "Gjennomtreng"
+
+#: hacks/config/penetrate.xml.h:7
+msgid "Start badly, but learn"
+msgstr ""
+
+#: hacks/config/penetrate.xml.h:8
+msgid ""
+"This hack simulates the classic arcade game Missile Command. Written by Adam "
+"Miller."
+msgstr ""
+
+#: hacks/config/penrose.xml.h:3
+msgid "Draw Ammann Lines"
+msgstr ""
+
+#: hacks/config/penrose.xml.h:4
+#, fuzzy
+msgid ""
+"Draws quasiperiodic tilings; think of the implications on modern formica "
+"technology. Written by Timo Korvola. In April 1997, Sir Roger Penrose, a "
+"British math professor who has worked with Stephen Hawking on such topics as "
+"relativity, black holes, and whether time has a beginning, filed a copyright-"
+"infringement lawsuit against the Kimberly-Clark Corporation, which Penrose "
+"said copied a pattern he created (a pattern demonstrating that ``a "
+"nonrepeating pattern could exist in nature'') for its Kleenex quilted toilet "
+"paper. Penrose said he doesn't like litigation but, ``When it comes to the "
+"population of Great Britain being invited by a multinational to wipe their "
+"bottoms on what appears to be the work of a Knight of the Realm, then a last "
+"stand must be taken.'' As reported by News of the Weird #491, 4-jul-1997."
+msgstr ""
+"Tegner kvasiperiodiske fliser; tenk på implikasjonene for moderne formica-"
+"teknologi. Skrevet av Timo Korvola. \n"
+"I april 1997 anla Sir Roger Penrose, som har jobbet med Stephen Hawking med "
+"emner som relativitet, sorte hull og om tiden har en start, en rettsak om "
+"brudd på opphavsrett mot Kimberly-Clark Corporation fordi Penrose mente de "
+"hadde stjålet et mønster han hadde laget (et mønster som demonstrerer at "
+"\"et ikke-repeterende mønster kan eksistere i naturen\") til bruk på sitt "
+"Kleenex toalettpapir. Penrose sa han ikke likte det, men \"Når det kommer "
+"til at den engelske befolkningen blir invitert til å tørke seg i baken med "
+"noe som ser ut til å være arbeidet til en 'Knight of the realm', så må noen "
+"ta standpunkt.\" \t\t\t\t\t\t\t\t    \n"
+"\n"
+"Som rapportert av News of the Weird #491, 4-jul-1997."
+
+#: hacks/config/penrose.xml.h:9
+msgid "Penrose"
+msgstr "Pennerose"
+
+#: hacks/config/petri.xml.h:2
+msgid "Colony Shape"
+msgstr ""
+
+#: hacks/config/petri.xml.h:3
+msgid "Death Comes"
+msgstr ""
+
+#: hacks/config/petri.xml.h:4
+msgid "Diamond"
+msgstr "Diamant"
+
+#: hacks/config/petri.xml.h:6
+msgid "Fertility"
+msgstr "Fruktbarhet"
+
+#: hacks/config/petri.xml.h:12
+msgid "Maxium Lifespan"
+msgstr ""
+
+#: hacks/config/petri.xml.h:13
+msgid "Maxium Rate of Death"
+msgstr ""
+
+#: hacks/config/petri.xml.h:14
+msgid "Maxium Rate of Growth"
+msgstr ""
+
+#: hacks/config/petri.xml.h:15
+msgid "Minium Lifespan"
+msgstr ""
+
+#: hacks/config/petri.xml.h:16
+msgid "Minium Rate of Death"
+msgstr ""
+
+#: hacks/config/petri.xml.h:17
+msgid "Minium Rate of Growth"
+msgstr ""
+
+#: hacks/config/petri.xml.h:18
+msgid "Mold Varieties"
+msgstr "Variasjoner for mugg"
+
+#: hacks/config/petri.xml.h:19
+msgid "Offspring"
+msgstr "Avkom"
+
+#: hacks/config/petri.xml.h:20
+msgid "Petri"
+msgstr "Petri"
+
+#: hacks/config/petri.xml.h:21
+msgid "Quickly"
+msgstr "Raskt"
+
+#: hacks/config/petri.xml.h:24
+msgid "Slowly"
+msgstr "Sakte"
+
+#: hacks/config/petri.xml.h:26
+msgid "Square"
+msgstr "Firkantet"
+
+#: hacks/config/petri.xml.h:27
+msgid ""
+"This simulates colonies of mold growing in a petri dish. Growing colored "
+"circles overlap and leave spiral interference in their wake. Written by Dan "
+"Bornstein."
+msgstr ""
+
+#: hacks/config/phosphor.xml.h:1
+msgid ""
+"Draws a simulation of an old terminal, with large pixels and long-sustain "
+"phosphor. It can run any program as a source of the text it displays. "
+"Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/phosphor.xml.h:2
+msgid "Dump pipe"
+msgstr ""
+
+#: hacks/config/phosphor.xml.h:5
+msgid "Phosphor"
+msgstr "Fosfor"
+
+#: hacks/config/phosphor.xml.h:6
+msgid "Scale"
+msgstr "Skala"
+
+#: hacks/config/phosphor.xml.h:10
+#, fuzzy
+msgid "Use PTY"
+msgstr "Bruk"
+
+#: hacks/config/piecewise.xml.h:1
+msgid "Color shifting speed"
+msgstr ""
+
+#: hacks/config/piecewise.xml.h:6
+msgid "Maximum radius"
+msgstr ""
+
+#: hacks/config/piecewise.xml.h:7
+msgid "Minimum radius"
+msgstr ""
+
+#: hacks/config/piecewise.xml.h:8
+msgid "Piecewise"
+msgstr ""
+
+#: hacks/config/piecewise.xml.h:12
+msgid ""
+"This draws a bunch of moving circles which switch from visibility to "
+"invisibility at intersection points. Written by Geoffrey Irving."
+msgstr ""
+
+#: hacks/config/pinion.xml.h:1
+#, fuzzy
+msgid "100"
+msgstr "100%"
+
+#: hacks/config/pinion.xml.h:2
+msgid "2000"
+msgstr ""
+
+#: hacks/config/pinion.xml.h:4
+msgid ""
+"Draws an interconnected set of gears moving across the screen. Written by "
+"Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/pinion.xml.h:6
+#, fuzzy
+msgid "Gear Size"
+msgstr "Maks størrelse"
+
+#: hacks/config/pinion.xml.h:8
+#, fuzzy
+msgid "Max RPM"
+msgstr "Maks antall ringer"
+
+#: hacks/config/pinion.xml.h:9
+#, fuzzy
+msgid "Pinion"
+msgstr "Pakking"
+
+#: hacks/config/pinion.xml.h:11
+#, fuzzy
+msgid "Scrolling Speed"
+msgstr "Rullehastighet"
+
+#: hacks/config/pipes.xml.h:1
+msgid "Allow Tight Turns"
+msgstr ""
+
+#: hacks/config/pipes.xml.h:2
+#, fuzzy
+msgid "Ball Joints"
+msgstr "Baller"
+
+#: hacks/config/pipes.xml.h:3
+msgid "Curved Pipes"
+msgstr "Kurvede rør"
+
+#: hacks/config/pipes.xml.h:6
+msgid "Fisheye Lens"
+msgstr "Fiskeøyelinse"
+
+#: hacks/config/pipes.xml.h:7
+msgid "Gadgetry"
+msgstr ""
+
+#: hacks/config/pipes.xml.h:8
+msgid ""
+"If you've ever been in the same room with a Windows NT machine, you've "
+"probably seen this GL hack. This version is by Marcelo Vianna."
+msgstr ""
+
+#: hacks/config/pipes.xml.h:9 hacks/config/substrate.xml.h:12
+#: hacks/config/wormhole.xml.h:4
+msgid "Lots"
+msgstr ""
+
+#: hacks/config/pipes.xml.h:11
+msgid "Number of Pipe Systems"
+msgstr "Antall rørsystemer"
+
+#: hacks/config/pipes.xml.h:12
+msgid "Pipe Fittings"
+msgstr ""
+
+#: hacks/config/pipes.xml.h:13
+msgid "Pipes"
+msgstr "Rør"
+
+#: hacks/config/pipes.xml.h:17
+msgid "System Length"
+msgstr "Systemlengde"
+
+#: hacks/config/polyhedra.xml.h:2
+#, fuzzy
+msgid "30 seconds"
+msgstr "0 sekunder"
+
+#: hacks/config/polyhedra.xml.h:4 hacks/config/sballs.xml.h:1
+msgid "Cube"
+msgstr "Kube"
+
+#: hacks/config/polyhedra.xml.h:5
+msgid "Cubitruncated Cuboctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:6
+#, fuzzy
+msgid "Cuboctahedron"
+msgstr "Oktahedron"
+
+#: hacks/config/polyhedra.xml.h:7
+#, fuzzy
+msgid "Cubohemioctahedron"
+msgstr "Oktahedron"
+
+#: hacks/config/polyhedra.xml.h:8
+msgid "Deltoidal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:9
+msgid "Deltoidal Icositetrahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:10
+msgid "Disdyakisdodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:11
+msgid "Disdyakistriacontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:12
+msgid "Display Random Polyhedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:13
+msgid ""
+"Displays different 3D solids and some information about each. A new solid is "
+"chosen every few seconds. There are 75 uniform polyhedra, plus 5 inifite "
+"sets of prisms and antiprisms; including their duals brings the total to "
+"160. Written by Dr. Zvi Har'El and Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:14
+msgid "Ditrigonal Dodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:15 hacks/config/sballs.xml.h:2
+msgid "Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:19
+msgid "Great Cubicuboctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:20
+msgid "Great Deltoidal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:21
+msgid "Great Deltoidal Icositetrahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:22
+msgid "Great Dirhombicosidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:23
+msgid "Great Dirhombicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:24
+msgid "Great Disdyakisdodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:25
+msgid "Great Disdyakistriacontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:26
+msgid "Great Ditrigonal Dodecacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:27
+msgid "Great Ditrigonal Dodecicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:28
+msgid "Great Ditrigonal Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:29
+msgid "Great Dodecacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:30
+msgid "Great Dodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:31
+#, fuzzy
+msgid "Great Dodecahedron"
+msgstr "Tetrahedron"
+
+#: hacks/config/polyhedra.xml.h:32
+msgid "Great Dodecahemicosacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:33
+msgid "Great Dodecahemicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:34
+msgid "Great Dodecahemidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:35
+msgid "Great Dodecahemidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:36
+msgid "Great Dodecicosacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:37
+msgid "Great Dodecicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:38
+msgid "Great Dodecicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:39
+msgid "Great Hexacronic Icositetrahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:40
+msgid "Great Hexagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:41
+msgid "Great Icosacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:42
+#, fuzzy
+msgid "Great Icosahedron"
+msgstr "Tetrahedron"
+
+#: hacks/config/polyhedra.xml.h:43
+msgid "Great Icosicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:44
+msgid "Great Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:45
+msgid "Great Icosihemidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:46
+msgid "Great Icosihemidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:47
+msgid "Great Inverted Pentagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:48
+msgid "Great Inverted Snub Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:49
+msgid "Great Pentagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:50
+msgid "Great Pentagrammic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:51
+msgid "Great Pentakisdodekahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:52
+msgid "Great Retrosnub Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:53
+msgid "Great Rhombic Triacontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:54
+msgid "Great Rhombicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:55
+msgid "Great Rhombicuboctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:56
+msgid "Great Rhombidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:57
+msgid "Great Rhombidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:58
+msgid "Great Rhombihexacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:59
+msgid "Great Rhombihexahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:60
+msgid "Great Snub Dodecicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:61
+msgid "Great Snub Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:62
+msgid "Great Stellapentakisdodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:63
+msgid "Great Stellated Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:64
+msgid "Great Stellated Truncated Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:65
+msgid "Great Triakisicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:66
+msgid "Great Triakisoctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:67
+msgid "Great Triambic Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:68
+msgid "Great Truncated Cuboctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:69
+msgid "Great Truncated Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:70
+msgid "Great Truncated Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:71
+msgid "Hexahemioctacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:72 hacks/config/sballs.xml.h:5
+msgid "Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:73
+msgid "Icosidodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:74
+msgid "Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:75
+msgid "Icositruncated Dodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:76
+msgid "Inverted Snub Dodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:77
+msgid "Medial Deltoidal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:78
+msgid "Medial Disdyakistriacontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:79
+msgid "Medial Hexagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:80
+msgid "Medial Icosacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:81
+msgid "Medial Inverted Pentagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:82
+msgid "Medial Pentagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:83
+msgid "Medial Rhombic Triacontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:84
+msgid "Medial Triambic Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:86 hacks/config/sballs.xml.h:7
+msgid "Octahedron"
+msgstr "Oktahedron"
+
+#: hacks/config/polyhedra.xml.h:87
+#, fuzzy
+msgid "Octahemioctacron"
+msgstr "Oktahedron"
+
+#: hacks/config/polyhedra.xml.h:88
+#, fuzzy
+msgid "Octahemioctahedron"
+msgstr "Oktahedron"
+
+#: hacks/config/polyhedra.xml.h:89
+msgid "Pentagonal Antiprism"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:90
+msgid "Pentagonal Deltohedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:91
+msgid "Pentagonal Dipyramid"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:92
+msgid "Pentagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:93
+msgid "Pentagonal Icositetrahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:94
+msgid "Pentagonal Prism"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:95
+msgid "Pentagrammic Antiprism"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:96
+msgid "Pentagrammic Concave Deltohedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:97
+msgid "Pentagrammic Crossed Antiprism"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:98
+msgid "Pentagrammic Deltohedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:99
+msgid "Pentagrammic Dipyramid"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:100
+msgid "Pentagrammic Prism"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:101
+msgid "Pentakisdodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:102
+msgid "Polyhedra"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:103
+msgid "Rhombic Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:104
+msgid "Rhombic Triacontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:105
+msgid "Rhombicosacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:106
+#, fuzzy
+msgid "Rhombicosahedron"
+msgstr "Oktahedron"
+
+#: hacks/config/polyhedra.xml.h:107
+msgid "Rhombicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:108
+#, fuzzy
+msgid "Rhombicuboctahedron"
+msgstr "Oktahedron"
+
+#: hacks/config/polyhedra.xml.h:109
+msgid "Rhombidodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:117
+#, fuzzy
+msgid "Show Description"
+msgstr "Beskrivelse"
+
+#: hacks/config/polyhedra.xml.h:120
+msgid "Small Cubicuboctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:121
+msgid "Small Ditrigonal Dodecacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:122
+msgid "Small Ditrigonal Dodecicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:123
+msgid "Small Ditrigonal Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:124
+msgid "Small Dodecacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:125
+msgid "Small Dodecahemicosacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:126
+msgid "Small Dodecahemicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:127
+msgid "Small Dodecahemidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:128
+msgid "Small Dodecahemidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:129
+msgid "Small Dodecicosacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:130
+msgid "Small Dodecicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:131
+msgid "Small Dodecicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:132
+msgid "Small Hexacronic Icositetrahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:133
+msgid "Small Hexagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:134
+msgid "Small Hexagrammic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:135
+msgid "Small Icosacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:136
+msgid "Small Icosicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:137
+msgid "Small Icosihemidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:138
+msgid "Small Icosihemidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:139
+msgid "Small Retrosnub Icosicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:140
+msgid "Small Rhombidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:141
+msgid "Small Rhombidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:142
+msgid "Small Rhombihexacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:143
+msgid "Small Rhombihexahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:144
+msgid "Small Snub Icosicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:145
+msgid "Small Stellapentakisdodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:146
+msgid "Small Stellated Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:147
+msgid "Small Stellated Truncated Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:148
+msgid "Small Triambic Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:149
+#, fuzzy
+msgid "Snub Cube"
+msgstr "Kube"
+
+#: hacks/config/polyhedra.xml.h:150
+msgid "Snub Dodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:151
+msgid "Snub Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:152
+msgid "Snub Icosidodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:153
+msgid "Stellated Truncated Hexahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:154
+#, fuzzy
+msgid "Tetradyakishexahedron"
+msgstr "Tetrahedron"
+
+#: hacks/config/polyhedra.xml.h:156
+#, fuzzy
+msgid "Tetrahemihexacron"
+msgstr "Tetrahedron"
+
+#: hacks/config/polyhedra.xml.h:157
+#, fuzzy
+msgid "Tetrahemihexahedron"
+msgstr "Tetrahedron"
+
+#: hacks/config/polyhedra.xml.h:158
+#, fuzzy
+msgid "Tetrakishexahedron"
+msgstr "Tetrahedron"
+
+#: hacks/config/polyhedra.xml.h:159
+#, fuzzy
+msgid "Triakisicosahedron"
+msgstr "Tetrahedron"
+
+#: hacks/config/polyhedra.xml.h:160
+#, fuzzy
+msgid "Triakisoctahedron"
+msgstr "Oktahedron"
+
+#: hacks/config/polyhedra.xml.h:161
+#, fuzzy
+msgid "Triakistetrahedron"
+msgstr "Tetrahedron"
+
+#: hacks/config/polyhedra.xml.h:162
+msgid "Tridyakisicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:163
+msgid "Truncated Cube"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:164
+msgid "Truncated Cuboctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:165
+msgid "Truncated Dodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:166
+msgid "Truncated Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:167
+msgid "Truncated Great Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:168
+msgid "Truncated Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:169
+msgid "Truncated Icosidodechedon"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:170
+#, fuzzy
+msgid "Truncated Octahedron"
+msgstr "Oktahedron"
+
+#: hacks/config/polyhedra.xml.h:171
+#, fuzzy
+msgid "Truncated Tetrahedron"
+msgstr "Tetrahedron"
+
+#: hacks/config/polyominoes.xml.h:3
+msgid "Identical Pieces"
+msgstr "Identiske deler"
+
+#: hacks/config/polyominoes.xml.h:7
+msgid "Polyominoes"
+msgstr "Polyminoer"
+
+#: hacks/config/polyominoes.xml.h:8
+msgid ""
+"Repeatedly attempts to completely fill a rectangle with irregularly-shaped "
+"puzzle pieces. Written by Stephen Montgomery-Smith."
+msgstr ""
+
+#: hacks/config/polytopes.xml.h:2
+msgid "120-Cell"
+msgstr ""
+
+#: hacks/config/polytopes.xml.h:3
+msgid "16-Cell (Hyper-Octahedron)"
+msgstr ""
+
+#: hacks/config/polytopes.xml.h:4
+msgid "24-Cell"
+msgstr ""
+
+#: hacks/config/polytopes.xml.h:6
+msgid "5-Cell (Hyper-Tetrahedron)"
+msgstr ""
+
+#: hacks/config/polytopes.xml.h:7
+msgid "600-Cell"
+msgstr ""
+
+#: hacks/config/polytopes.xml.h:8
+msgid "8-Cell (Hypercube / Tesseract)"
+msgstr ""
+
+#: hacks/config/polytopes.xml.h:9
+msgid "Colors By 4D Depth"
+msgstr ""
+
+#: hacks/config/polytopes.xml.h:17
+msgid "Regular 4D Polytopes"
+msgstr ""
+
+#: hacks/config/polytopes.xml.h:19
+#, fuzzy
+msgid "Single Color"
+msgstr "Veksle mellom farger."
+
+#: hacks/config/polytopes.xml.h:22
+msgid ""
+"This program shows one of the six regular 4D polytopes rotating in 4D. "
+"Written by Carsten Steger, inspired by H.S.M Coxeter's book \"Regular "
+"Polytopes\", 3rd Edition, Dover Publications, Inc., 1973, and Thomas "
+"Banchoff's book \"Beyond the Third Dimension: Geometry, Computer Graphics, "
+"and Higher Dimensions\", Scientific American Library, 1990."
+msgstr ""
+
+#: hacks/config/pong.xml.h:2
+#, fuzzy
+msgid "Pong"
+msgstr "Langt"
+
+#: hacks/config/pong.xml.h:6
+msgid ""
+"The pong program simulates an ancient Pong home video game, as well as "
+"various artifacts from displaying it on a color TV set. Written by Jeremy "
+"English and Trevor Blackwell."
+msgstr ""
+
+#: hacks/config/popsquares.xml.h:2
+msgid "End color"
+msgstr ""
+
+#: hacks/config/popsquares.xml.h:7
+#, fuzzy
+msgid "Start color"
+msgstr "Skremmende farger"
+
+#: hacks/config/popsquares.xml.h:8
+msgid "Subdivision"
+msgstr ""
+
+#: hacks/config/popsquares.xml.h:9
+msgid ""
+"This draws a pop-art-ish looking grid of pulsing colors. By Levi Burton."
+msgstr ""
+
+#: hacks/config/popsquares.xml.h:10
+msgid "Twitch"
+msgstr ""
+
+#: hacks/config/popsquares.xml.h:11
+#, fuzzy
+msgid "popsquares"
+msgstr "Firkantet"
+
+#: hacks/config/providence.xml.h:1
+#, fuzzy
+msgid "Draw Eye"
+msgstr "Tegn etiketter"
+
+#: hacks/config/providence.xml.h:3
+msgid "Providence"
+msgstr ""
+
+#: hacks/config/providence.xml.h:7
+msgid ""
+"The providence code displays an eye, shrouded in glory, set upon the base of "
+"a pyramid. Written by Blair Tennessy."
+msgstr ""
+
+#: hacks/config/pulsar.xml.h:1
+msgid "Anti-alias Lines"
+msgstr ""
+
+#: hacks/config/pulsar.xml.h:3
+msgid ""
+"Draws some intersecting planes, making use of alpha blending, fog, textures, "
+"and mipmaps, plus a ``frames per second'' meter so that you can tell how "
+"fast your graphics card is... Requires OpenGL. Written by David Konerding."
+msgstr ""
+
+#: hacks/config/pulsar.xml.h:4
+msgid "Enable Blending"
+msgstr "Bruk blanding"
+
+#: hacks/config/pulsar.xml.h:5
+msgid "Enable Depth Buffer"
+msgstr ""
+
+#: hacks/config/pulsar.xml.h:6
+msgid "Enable Fog"
+msgstr "Aktiver tåke"
+
+#: hacks/config/pulsar.xml.h:7
+msgid "Enable Lighting"
+msgstr "Aktiver lyn"
+
+#: hacks/config/pulsar.xml.h:8
+msgid "Enable Texture Filtering"
+msgstr ""
+
+#: hacks/config/pulsar.xml.h:9
+msgid "Enable Texture Mipmaps"
+msgstr ""
+
+#: hacks/config/pulsar.xml.h:10
+msgid "Enable Texturing"
+msgstr "Aktiver teksturer"
+
+#: hacks/config/pulsar.xml.h:12
+msgid "Pulsar"
+msgstr "Pulsar"
+
+#: hacks/config/pulsar.xml.h:13
+#, fuzzy
+msgid "Quad Count"
+msgstr "Antall:"
+
+#: hacks/config/pulsar.xml.h:18
+msgid "Texture PPM File"
+msgstr "PPM-fil for tekstur"
+
+#: hacks/config/pyro.xml.h:3
+msgid "Explosive Yield"
+msgstr ""
+
+#: hacks/config/pyro.xml.h:6
+msgid "Launch Frequency"
+msgstr ""
+
+#: hacks/config/pyro.xml.h:9
+msgid "Particle Density"
+msgstr "Partikkeltetthet"
+
+#: hacks/config/pyro.xml.h:10
+msgid "Pyro"
+msgstr "Pyro"
+
+#: hacks/config/pyro.xml.h:11
+msgid ""
+"Pyro draws exploding fireworks. Blah blah blah. Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/qix.xml.h:1
+msgid "Additive Colors"
+msgstr "Additive farger"
+
+#: hacks/config/qix.xml.h:3
+msgid "Corners"
+msgstr "Hjørner"
+
+#: hacks/config/qix.xml.h:11
+msgid "Line Segments"
+msgstr "Linjesegmenter"
+
+#: hacks/config/qix.xml.h:12
+msgid "Linear Motion"
+msgstr "Lineær bevegelse"
+
+#: hacks/config/qix.xml.h:15
+msgid "Max Size"
+msgstr "Maks størrelse"
+
+#: hacks/config/qix.xml.h:16
+msgid "Qix"
+msgstr "Qix"
+
+#: hacks/config/qix.xml.h:17
+msgid "Random Motion"
+msgstr "Tilfeldig bevegelse"
+
+#: hacks/config/qix.xml.h:23
+msgid "Subtractive Colors"
+msgstr ""
+
+#: hacks/config/qix.xml.h:24
+msgid ""
+"This is the swiss army chainsaw of qix programs. It bounces a series of line "
+"segments around the screen, and uses variations on this basic motion pattern "
+"to produce all sorts of different presentations: line segments, filled "
+"polygons, overlapping translucent areas... Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/qix.xml.h:25
+msgid "Transparent"
+msgstr "Gjennomsiktig"
+
+#: hacks/config/queens.xml.h:2
+msgid "Queens"
+msgstr "Dronninger"
+
+#: hacks/config/queens.xml.h:5
+msgid ""
+"Solves the N-Queens problem (where, in this program, N is between 5 and 10 "
+"queens.) The problem is: how may one place N queens on an NxN chessboard "
+"such that no queen can attack a sister? Written by Blair Tennessy."
+msgstr ""
+
+#: hacks/config/rd-bomb.xml.h:1
+msgid "/"
+msgstr "/"
+
+#: hacks/config/rd-bomb.xml.h:3
+#, no-c-format
+msgid "1%"
+msgstr "1%"
+
+#: hacks/config/rd-bomb.xml.h:7
+msgid ""
+"Another variation of the `Bomb' program by Scott Draves. This draws a grid "
+"of growing square-like shapes that, once they overtake each other, react in "
+"unpredictable ways. ``RD'' stands for reaction-diffusion."
+msgstr ""
+
+#: hacks/config/rd-bomb.xml.h:8
+msgid "Epoch"
+msgstr "Epoke"
+
+#: hacks/config/rd-bomb.xml.h:10
+msgid "Fill Screen"
+msgstr "Fyll skjermen"
+
+#: hacks/config/rd-bomb.xml.h:14
+msgid "RD-Bomb"
+msgstr "RD-bombe"
+
+#: hacks/config/rd-bomb.xml.h:15
+msgid "Reaction/Difusion"
+msgstr ""
+
+#: hacks/config/rd-bomb.xml.h:16
+#, fuzzy
+msgid "Seed Radius"
+msgstr "Utgangsverdier"
+
+#: hacks/config/rd-bomb.xml.h:19 hacks/config/twang.xml.h:12
+msgid "Tile Size"
+msgstr "Flisstørrelse"
+
+#: hacks/config/rd-bomb.xml.h:22
+msgid "Wander Speed"
+msgstr "Vandrehastighet"
+
+#: hacks/config/ripples.xml.h:1
+msgid "Big Drops"
+msgstr "Store dråper"
+
+#: hacks/config/ripples.xml.h:2
+msgid "Colors    Two"
+msgstr "Farger    To"
+
+#: hacks/config/ripples.xml.h:3
+msgid "Drizzle"
+msgstr ""
+
+#: hacks/config/ripples.xml.h:5
+msgid "Grab Screen Image"
+msgstr ""
+
+#: hacks/config/ripples.xml.h:6
+msgid "Lighting Effect"
+msgstr "Lyneffekt"
+
+#: hacks/config/ripples.xml.h:8
+msgid "Moving Splashes"
+msgstr ""
+
+#: hacks/config/ripples.xml.h:9
+msgid "Psychedelic Colors"
+msgstr "Psykedeliske farger"
+
+#: hacks/config/ripples.xml.h:10
+msgid "Ripples"
+msgstr "Bølger"
+
+#: hacks/config/ripples.xml.h:12
+msgid "Small Drops"
+msgstr "Små dråper"
+
+#: hacks/config/ripples.xml.h:13
+msgid "Storm"
+msgstr "Storm"
+
+#: hacks/config/ripples.xml.h:14
+msgid ""
+"This draws rippling interference patterns like splashing water. With the -"
+"water option, it manipulates your desktop image to look like something is "
+"dripping into it. Written by Tom Hammersley."
+msgstr ""
+
+#: hacks/config/rocks.xml.h:7
+msgid "Rocks"
+msgstr "Steiner"
+
+#: hacks/config/rocks.xml.h:8
+msgid "Rotation"
+msgstr "Rotasjon"
+
+#: hacks/config/rocks.xml.h:10
+msgid "Steering"
+msgstr "Styring"
+
+#: hacks/config/rocks.xml.h:11
+msgid ""
+"This draws an animation of flight through an asteroid field, with changes in "
+"rotation and direction. It can also display 3D separations for red/blue "
+"glasses! Mostly written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/rocks.xml.h:13
+msgid "Velocity"
+msgstr ""
+
+#: hacks/config/rorschach.xml.h:7
+msgid "Rorschach"
+msgstr "Rorschach"
+
+#: hacks/config/rorschach.xml.h:9
+msgid ""
+"This generates random inkblot patterns. The algorithm is deceptively simple "
+"for how well it works; it merely walks a dot around the screen randomly, and "
+"then reflects the image horizontally, vertically, or both. Any deep-seated "
+"neurotic tendencies which this program reveals are your own problem. Written "
+"by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/rorschach.xml.h:10
+msgid "With X Symmetry"
+msgstr "Med symmetri om X-aksen"
+
+#: hacks/config/rorschach.xml.h:11
+msgid "With Y Symmetry"
+msgstr "Med symmetri om Y-aksen"
+
+#: hacks/config/rotor.xml.h:1
+msgid ""
+"Another ancient xlock demo, this one by Tom Lawrence. It draws a line "
+"segment moving along a complex spiraling curve."
+msgstr ""
+
+#: hacks/config/rotor.xml.h:4 hacks/config/wander.xml.h:9
+msgid "Length"
+msgstr "Lengde"
+
+#: hacks/config/rotor.xml.h:8
+msgid "Rotor"
+msgstr "Rotor"
+
+#: hacks/config/rotzoomer.xml.h:3
+msgid "Animate"
+msgstr "Animer"
+
+#: hacks/config/rotzoomer.xml.h:4
+msgid ""
+"Creates a collage of rotated and scaled portions of the screen. Written by "
+"Claudio Matsuoka."
+msgstr ""
+
+#: hacks/config/rotzoomer.xml.h:6
+msgid "Rectangle Count"
+msgstr "Antall rektangler"
+
+#: hacks/config/rotzoomer.xml.h:7
+msgid "RotZoomer"
+msgstr "RotZoomer"
+
+#: hacks/config/rotzoomer.xml.h:8
+msgid "Stationary Rectangles"
+msgstr ""
+
+#: hacks/config/rotzoomer.xml.h:9
+msgid "Sweeping Arcs"
+msgstr ""
+
+#: hacks/config/rotzoomer.xml.h:11
+msgid "Wandering Rectangles"
+msgstr "Vandrende rektangler"
+
+#: hacks/config/rubik.xml.h:2
+msgid ""
+"Draws a Rubik's Cube that rotates in three dimensions and repeatedly "
+"shuffles and solves itself. Another fine GL hack by Marcelo Vianna."
+msgstr ""
+
+#: hacks/config/rubik.xml.h:5
+msgid "Rubik"
+msgstr "Rubik"
+
+#: hacks/config/rubik.xml.h:7
+msgid "Show Shuffling"
+msgstr "Vis stokking"
+
+#: hacks/config/sballs.xml.h:3
+msgid ""
+"Draws an animation of textured balls spinning like crazy in GL. Requires "
+"OpenGL, and a machine with fast hardware support for texture maps. Written "
+"by Eric Lassauge &lt;lassauge@users.sourceforge.net&gt;."
+msgstr ""
+
+#: hacks/config/sballs.xml.h:8
+msgid "Plane"
+msgstr "Plan"
+
+#: hacks/config/sballs.xml.h:9
+msgid "Pyramid"
+msgstr "Pyramide"
+
+#: hacks/config/sballs.xml.h:11
+msgid "Sballs"
+msgstr "Sballer"
+
+#: hacks/config/sballs.xml.h:15
+msgid "Star"
+msgstr "Stjerne"
+
+#: hacks/config/shadebobs.xml.h:7
+msgid "ShadeBobs"
+msgstr ""
+
+#: hacks/config/shadebobs.xml.h:11
+msgid ""
+"This draws smoothly-shaded oscillating oval patterns, that look something "
+"like vapor trails or neon tubes. Written by Shane Smit."
+msgstr ""
+
+#: hacks/config/sierpinski3d.xml.h:7
+msgid "Sierpinski3D"
+msgstr "Sierpinski3D"
+
+#: hacks/config/sierpinski3d.xml.h:11
+msgid ""
+"This draws the three-dimensional variant of the recursive Sierpinski "
+"triangle fractal, using GL. Written by Tim Robinson and Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/sierpinski.xml.h:6
+msgid "Sierpinski"
+msgstr "Sierpinski"
+
+#: hacks/config/sierpinski.xml.h:10
+msgid ""
+"This draws the two-dimensional variant of the recursive Sierpinski triangle "
+"fractal. Written by Desmond Daignault."
+msgstr ""
+
+#: hacks/config/slidescreen.xml.h:1 hacks/config/twang.xml.h:1
+#: hacks/config/zoom.xml.h:1
+msgid "Border Width"
+msgstr "Kantbredde"
+
+#: hacks/config/slidescreen.xml.h:4
+msgid "Slide Speed"
+msgstr "Lysbildehastighet"
+
+#: hacks/config/slidescreen.xml.h:5
+msgid "SlideScreen"
+msgstr "Lysbildeskjerm"
+
+#: hacks/config/slidescreen.xml.h:8
+msgid ""
+"This takes an image, divides it into a grid, and then randomly shuffles the "
+"squares around as if it was one of those annoying ``16-puzzle'' games, where "
+"there is a grid of squares, one of which is missing. I hate trying to solve "
+"those puzzles, but watching one permute itself is more amusing. Written by "
+"Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/slip.xml.h:6
+msgid "Slip"
+msgstr "Skli"
+
+#: hacks/config/slip.xml.h:10
+msgid ""
+"This program throws some random bits on the screen, then sucks them through "
+"a jet engine and spews them out the other side. To avoid turning the image "
+"completely to mush, every now and then it will and then it interjects some "
+"splashes of color into the scene, or go into a spin cycle, or stretch the "
+"image like taffy, or (this is my addition) grab an image of your current "
+"desktop to chew on. Originally written by Scott Draves; whacked on by Jamie "
+"Zawinski."
+msgstr ""
+
+#: hacks/config/sonar.xml.h:1
+msgid "Ping known hosts"
+msgstr ""
+
+#: hacks/config/sonar.xml.h:2
+msgid "Ping mode..."
+msgstr ""
+
+#: hacks/config/sonar.xml.h:3
+msgid "Ping subnet/24 (254 hosts)"
+msgstr ""
+
+#: hacks/config/sonar.xml.h:4
+msgid "Ping subnet/25 (126 hosts)"
+msgstr ""
+
+#: hacks/config/sonar.xml.h:5
+msgid "Ping subnet/26 (62 hosts)"
+msgstr ""
+
+#: hacks/config/sonar.xml.h:6
+msgid "Ping subnet/27 (31 hosts)"
+msgstr ""
+
+#: hacks/config/sonar.xml.h:7
+msgid "Ping subnet/28 (14 hosts)"
+msgstr ""
+
+#: hacks/config/sonar.xml.h:8
+msgid "Ping subnet/29 (6 hosts)"
+msgstr ""
+
+#: hacks/config/sonar.xml.h:9
+msgid "Ping subnet/30 (2 hosts)"
+msgstr ""
+
+#: hacks/config/sonar.xml.h:10
+msgid "Resolve Host Names"
+msgstr ""
+
+#: hacks/config/sonar.xml.h:11
+#, fuzzy
+msgid "Show Ping Times"
+msgstr "Vis etiketter"
+
+#: hacks/config/sonar.xml.h:12
+msgid "Simulation Team Members"
+msgstr "Lagmedlemmer i simulasjonen"
+
+#: hacks/config/sonar.xml.h:13
+msgid "Sonar"
+msgstr "Sonar"
+
+#: hacks/config/sonar.xml.h:14
+msgid "Team A Name"
+msgstr "Navn på lag A"
+
+#: hacks/config/sonar.xml.h:15
+msgid "Team B Name"
+msgstr "Navn på lag B"
+
+#: hacks/config/sonar.xml.h:16
+msgid ""
+"This program draws a simulation of a sonar screen. By default, it displays a "
+"random assortment of ``bogies'' on the screen, but if installed as \"setuid "
+"root\", it can ping (pun intended) your local network, and actually plot the "
+"proximity of the other hosts on your network to you. Written by Stephen "
+"Martin and Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/sonar.xml.h:17
+msgid "vs."
+msgstr "mot"
+
+#: hacks/config/speedmine.xml.h:1
+msgid "Allow Wall Collisions"
+msgstr "Tillat kollisjoner med vegg"
+
+#: hacks/config/speedmine.xml.h:2
+msgid "Display Crosshair"
+msgstr ""
+
+#: hacks/config/speedmine.xml.h:7
+msgid "Max Velocity"
+msgstr "Maks fart"
+
+#: hacks/config/speedmine.xml.h:8
+msgid "Mine Shaft"
+msgstr ""
+
+#: hacks/config/speedmine.xml.h:9
+msgid "Present Bonuses"
+msgstr ""
+
+#: hacks/config/speedmine.xml.h:10
+msgid "Rocky Walls"
+msgstr "Steinete vegger"
+
+#: hacks/config/speedmine.xml.h:12
+msgid ""
+"Simulates speeding down a rocky mineshaft, or a funky dancing worm. Written "
+"by Conrad Parker."
+msgstr ""
+
+#: hacks/config/speedmine.xml.h:16
+msgid "SpeedMine"
+msgstr "HurtigMine"
+
+#: hacks/config/speedmine.xml.h:17
+msgid "Thrust"
+msgstr ""
+
+#: hacks/config/speedmine.xml.h:19 hacks/config/worm.xml.h:10
+msgid "Worm"
+msgstr "Orm"
+
+#: hacks/config/sphereeversion.xml.h:1
+msgid "SphereEversion"
+msgstr ""
+
+#: hacks/config/sphereeversion.xml.h:2
+msgid ""
+"SphereEversion draws an animation of a sphere being turned inside out. A "
+"sphere can be turned inside out, without any tears, sharp creases or "
+"discontinuities, if the surface of the sphere is allowed to intersect "
+"itself. This program animates what is known as the Thurston Eversion. "
+"Written by Nathaniel Thurston and Michael McGuffin. This program is not "
+"included with the XScreenSaver package, but if you don't have it already, "
+"you can find it at &lt;http://www.dgp.utoronto.ca/~mjmcguff/eversion/&gt;."
+msgstr ""
+
+#: hacks/config/spheremonics.xml.h:20
+msgid "Smoothed Lines"
+msgstr "Myke linjer"
+
+#: hacks/config/spheremonics.xml.h:23
+msgid "Spheremonics"
+msgstr ""
+
+#: hacks/config/spheremonics.xml.h:24
+msgid ""
+"These closed objects are commonly called spherical harmonics, although they "
+"are only remotely related to the mathematical definition found in the "
+"solution to certain wave functions, most notable the eigenfunctions of "
+"angular momentum operators. Written by Paul Bourke and Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/sphere.xml.h:1
+msgid ""
+"Another of the classic screenhacks of the distant past, this one draws "
+"shaded spheres in multiple colors. This hack traces its lineage back to Tom "
+"Duff in 1982."
+msgstr ""
+
+#: hacks/config/spiral.xml.h:2 hacks/config/superquadrics.xml.h:2
+msgid "Cycles"
+msgstr "Omganger"
+
+#: hacks/config/spiral.xml.h:7
+msgid ""
+"Moving circular patterns, by Peter Schmitzberger. Moving circular patterns "
+"means moire; interference patterns, of course."
+msgstr ""
+
+#: hacks/config/spiral.xml.h:11
+msgid "Spiral"
+msgstr "Spiral"
+
+#: hacks/config/spotlight.xml.h:1
+msgid ""
+"Draws a spotlight scanning across a black screen, illuminating the "
+"underlying desktop when it passes. Written by Rick Schultz."
+msgstr ""
+
+#: hacks/config/spotlight.xml.h:6
+msgid "Spotlight"
+msgstr "Følgelys"
+
+#: hacks/config/sproingies.xml.h:3
+msgid "Q-Bert meets Marble Madness! Written by Ed Mackey."
+msgstr ""
+
+#: hacks/config/sproingies.xml.h:9
+msgid "Sproingies"
+msgstr "Sproingies"
+
+#: hacks/config/squiral.xml.h:3
+msgid ""
+"Draws a set of interacting, square-spiral-producing automata. The spirals "
+"grow outward until they hit something, then they go around it. Written by "
+"Jeff Epler."
+msgstr ""
+
+#: hacks/config/squiral.xml.h:5
+msgid "Handedness"
+msgstr ""
+
+#: hacks/config/squiral.xml.h:7
+msgid "Left"
+msgstr "Venstre"
+
+#: hacks/config/squiral.xml.h:11 hacks/config/twang.xml.h:8
+msgid "Randomness"
+msgstr "Tilfeldighet"
+
+#: hacks/config/squiral.xml.h:12
+msgid "Right"
+msgstr "Høyre"
+
+#: hacks/config/squiral.xml.h:17
+msgid "Squiral"
+msgstr "Squiral"
+
+#: hacks/config/ssystem.xml.h:1
+msgid "SSystem"
+msgstr "SSystem"
+
+#: hacks/config/ssystem.xml.h:2
+msgid ""
+"SSystem is a GL Solar System simulator. It simulates flybys of Sun, the nine "
+"planets and a few major satellites, with four camera modes. Written by Raul "
+"Alonso. This is not included with the XScreenSaver package, but is packaged "
+"separately. Note: SSystem does not work as a screen saver on all systems, "
+"because it doesn't communicate with xscreensaver properly. It happens to "
+"work with some window managers, but not with others, so your mileage may "
+"vary. SSystem was once available at &lt;http://www1.las.es/~amil/ssystem/"
+"&gt;, but is now gone. You may still be able to find copies elsewhere. "
+"SSystem has since evolved into Celestia, found at &lt;http://www.shatters."
+"net/celestia/&gt;. Sadly, Celestia does not work with xscreensaver at all. "
+"You are encouraged to nag the authors into adding xscreensaver support!"
+msgstr ""
+
+#: hacks/config/stairs.xml.h:6
+msgid "Stairs"
+msgstr "Trapper"
+
+#: hacks/config/stairs.xml.h:8
+msgid ""
+"by Marcelo Vianna's third Escher GL hack, this one draws an ``infinite'' "
+"staircase."
+msgstr ""
+
+#: hacks/config/starfish.xml.h:1
+msgid "Color Gradients"
+msgstr "Fargegradienter"
+
+#: hacks/config/starfish.xml.h:7
+msgid "Pulsating Blob"
+msgstr "Pulserende blubbe"
+
+#: hacks/config/starfish.xml.h:10
+msgid "Starfish"
+msgstr "Stjernefisk"
+
+#: hacks/config/starfish.xml.h:13
+msgid ""
+"This generates a sequence of undulating, throbbing, star-like patterns which "
+"pulsate, rotate, and turn inside out. Another display mode uses these shapes "
+"to lay down a field of colors, which are then cycled. The motion is very "
+"organic. Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/starwars.xml.h:2
+msgid "Anti-aliased Lines"
+msgstr "Linjer med antialiasing"
+
+#: hacks/config/starwars.xml.h:3
+msgid "Centered Text"
+msgstr "Sentrert tekst"
+
+#: hacks/config/starwars.xml.h:4
+msgid ""
+"Draws a stream of text slowly scrolling into the distance at an angle, over "
+"a star field, like at the beginning of the movie of the same name. Written "
+"by Jamie Zawinski and Claudio Matauoka."
+msgstr ""
+
+#: hacks/config/starwars.xml.h:5
+#, fuzzy
+msgid "Fade Out"
+msgstr "FadePlot"
+
+#: hacks/config/starwars.xml.h:7
+msgid "Flush Left Text"
+msgstr ""
+
+#: hacks/config/starwars.xml.h:8
+msgid "Flush Right Text"
+msgstr ""
+
+#: hacks/config/starwars.xml.h:9
+msgid "Font Point Size"
+msgstr ""
+
+#: hacks/config/starwars.xml.h:10
+msgid "Scroll Speed"
+msgstr "Rullehastighet"
+
+#: hacks/config/starwars.xml.h:13
+msgid "Star Rotation Speed"
+msgstr ""
+
+#: hacks/config/starwars.xml.h:14
+msgid "StarWars"
+msgstr "Stjernekrig"
+
+#: hacks/config/starwars.xml.h:15
+msgid "Text Columns"
+msgstr "Tekstkolonner"
+
+#: hacks/config/starwars.xml.h:16
+msgid "Text Lines"
+msgstr "Tekstlinjer"
+
+#: hacks/config/starwars.xml.h:18
+#, fuzzy
+msgid "Texture-Mapped Font"
+msgstr "Tetrahedron"
+
+#: hacks/config/starwars.xml.h:19
+msgid "Thick Lines"
+msgstr "Tykke linjer"
+
+#: hacks/config/starwars.xml.h:20
+msgid "Wrap Long Lines"
+msgstr "Bryt lange linjer"
+
+#: hacks/config/stonerview.xml.h:1
+msgid ""
+"Chains of colorful squares dance around each other in complex spiral "
+"patterns. Written by Andrew Plotkin, based on SGI's `electropaint' "
+"screensaver."
+msgstr ""
+
+#: hacks/config/stonerview.xml.h:3
+msgid "StonerView"
+msgstr "Steinvisning"
+
+#: hacks/config/strange.xml.h:6
+msgid "Strange"
+msgstr "Rar"
+
+#: hacks/config/strange.xml.h:7
+msgid ""
+"This draws strange attractors: it's a colorful, unpredictably-animating "
+"field of dots that swoops and twists around. The motion is very nice. "
+"Written by Massimino Pascal."
+msgstr ""
+
+#: hacks/config/substrate.xml.h:2 hacks/config/xplanet.xml.h:2
+#, fuzzy, no-c-format
+msgid "0%"
+msgstr "100%"
+
+#: hacks/config/substrate.xml.h:5
+msgid "Circle Percentage"
+msgstr ""
+
+#: hacks/config/substrate.xml.h:9
+#, fuzzy
+msgid "Initial Cracks"
+msgstr "Partikkeltetthet"
+
+#: hacks/config/substrate.xml.h:10
+msgid ""
+"Lines like crystals grow on a computational substrate. A simple "
+"perpendicular growth rule creates intricate city-like structures. By J. "
+"Tarbell and Mike Kershaw."
+msgstr ""
+
+#: hacks/config/substrate.xml.h:13
+#, fuzzy
+msgid "Sandgrains"
+msgstr "Forvalg"
+
+#: hacks/config/substrate.xml.h:17
+#, fuzzy
+msgid "Substrate"
+msgstr "Stater"
+
+#: hacks/config/substrate.xml.h:18
+msgid "Wireframe only"
+msgstr ""
+
+#: hacks/config/superquadrics.xml.h:3
+msgid ""
+"Ed Mackey reports that he wrote the first version of this program in BASIC "
+"on a Commodore 64 in 1987, as a 320x200 black and white wireframe. Now it is "
+"GL and has specular reflections."
+msgstr ""
+
+#: hacks/config/superquadrics.xml.h:11
+msgid "Superquadrics"
+msgstr "Superkvadratisk"
+
+#: hacks/config/swirl.xml.h:4
+msgid ""
+"More flowing, swirly patterns. This version is by M. Dobie and R. Taylor, "
+"but you might have seen a Mac program similar to this called FlowFazer. "
+"There is also a cool Java applet of a similar concept."
+msgstr ""
+
+#: hacks/config/swirl.xml.h:8
+msgid "Swirl"
+msgstr "Swirl"
+
+#: hacks/config/t3d.xml.h:1
+msgid "0 deg"
+msgstr ""
+
+#: hacks/config/t3d.xml.h:2
+msgid "5 Minute Tick Marks"
+msgstr ""
+
+#: hacks/config/t3d.xml.h:3
+msgid "90 deg"
+msgstr ""
+
+#: hacks/config/t3d.xml.h:4
+msgid "Bigger"
+msgstr ""
+
+#: hacks/config/t3d.xml.h:5
+#, fuzzy
+msgid "Cycle Seconds"
+msgstr "Sekunder"
+
+#: hacks/config/t3d.xml.h:10
+msgid "Minute Tick Marks"
+msgstr ""
+
+#: hacks/config/t3d.xml.h:12
+msgid "Smaller"
+msgstr "Mindre"
+
+#: hacks/config/t3d.xml.h:14
+msgid "T3D"
+msgstr "T3D"
+
+#: hacks/config/t3d.xml.h:15
+msgid ""
+"This draws a working analog clock composed of floating, throbbing bubbles. "
+"Written by Bernd Paysan."
+msgstr ""
+
+#: hacks/config/t3d.xml.h:16
+msgid "Turn Side-to-Side"
+msgstr ""
+
+#: hacks/config/t3d.xml.h:17
+msgid "Wobbliness"
+msgstr "Skjelvenhet"
+
+#: hacks/config/thornbird.xml.h:1
+msgid ""
+"Displays a view of the ``Bird in a Thornbush'' fractal. Written by Tim "
+"Auckland."
+msgstr ""
+
+#: hacks/config/thornbird.xml.h:6
+msgid "Points"
+msgstr "Punkter"
+
+#: hacks/config/thornbird.xml.h:12
+msgid "Thornbird"
+msgstr ""
+
+#: hacks/config/triangle.xml.h:2
+msgid ""
+"Generates random mountain ranges using iterative subdivision of triangles. "
+"Written by Tobias Gloth."
+msgstr ""
+
+#: hacks/config/triangle.xml.h:7
+msgid "Triangle"
+msgstr "Triangel"
+
+#: hacks/config/truchet.xml.h:4
+msgid ""
+"This draws line- and arc-based Truchet patterns that tile the screen. "
+"Written by Adrian Likins."
+msgstr ""
+
+#: hacks/config/truchet.xml.h:5
+msgid "Truchet"
+msgstr "Truchet"
+
+#: hacks/config/twang.xml.h:2
+msgid ""
+"Divides the screen into a grid, and plucks them. Written by Dan Bornstein."
+msgstr ""
+
+#: hacks/config/twang.xml.h:6
+msgid "Jumpy"
+msgstr "Spretten"
+
+#: hacks/config/twang.xml.h:11
+msgid "Springiness"
+msgstr "Fjærethet"
+
+#: hacks/config/twang.xml.h:13
+msgid "Transference"
+msgstr ""
+
+#: hacks/config/twang.xml.h:14
+msgid "Twang"
+msgstr "Spjoing"
+
+#: hacks/config/vermiculate.xml.h:1
+msgid "Draws squiggly worm-like paths. Written by Tyler Pierce."
+msgstr ""
+
+#: hacks/config/vermiculate.xml.h:2
+msgid "Vermiculate"
+msgstr ""
+
+#: hacks/config/vidwhacker.xml.h:2
+msgid "2 seconds"
+msgstr "2 sekunder"
+
+#: hacks/config/vidwhacker.xml.h:4
+msgid "Image Directory"
+msgstr "Bildekatalog"
+
+#: hacks/config/vidwhacker.xml.h:5
+msgid ""
+"This is actually just a shell script that grabs a frame of video from the "
+"system's video input, and then uses some PBM filters (chosen at random) to "
+"manipulate and recombine the video frame in various ways (edge detection, "
+"subtracting the image from a rotated version of itself, etc.) Then it "
+"displays that image for a few seconds, and does it again. This works really "
+"well if you just feed broadcast television into it."
+msgstr ""
+
+#: hacks/config/vidwhacker.xml.h:6
+msgid "VidWhacker"
+msgstr ""
+
+#: hacks/config/vines.xml.h:6
+msgid ""
+"This one generates a continuous sequence of small, curvy geometric patterns. "
+"It scatters them around your screen until it fills up, then it clears the "
+"screen and starts over. Written by Tracy Camp and David Hansen."
+msgstr ""
+
+#: hacks/config/vines.xml.h:8
+msgid "Vines"
+msgstr "Lianer"
+
+#: hacks/config/wander.xml.h:5
+msgid "Draw Spots"
+msgstr "Tegn flekker"
+
+#: hacks/config/wander.xml.h:6
+msgid ""
+"Draws a colorful random-walk, in various forms. Written by Rick Campbell."
+msgstr ""
+
+#: hacks/config/wander.xml.h:14
+msgid "Sustain"
+msgstr ""
+
+#: hacks/config/webcollage.xml.h:1
+#, fuzzy
+msgid "2 min"
+msgstr "2 minutter"
+
+#: hacks/config/webcollage.xml.h:2
+#, fuzzy
+msgid "30 secs"
+msgstr "0 sekunder"
+
+#: hacks/config/webcollage.xml.h:3
+msgid "Delay:                    None"
+msgstr ""
+
+#: hacks/config/webcollage.xml.h:4
+msgid "Dictionary File"
+msgstr "Ordbokfil"
+
+#: hacks/config/webcollage.xml.h:5
+#, fuzzy
+msgid "Opacity:      Transparent"
+msgstr "Gjennomsiktig"
+
+#: hacks/config/webcollage.xml.h:6
+msgid "Overall Filter Program"
+msgstr ""
+
+#: hacks/config/webcollage.xml.h:7
+msgid "Per-Image Filter Program"
+msgstr ""
+
+#: hacks/config/webcollage.xml.h:9
+msgid ""
+"This program makes collages out of random images pulled off of the World "
+"Wide Web. It finds these images by doing random web searches, and then "
+"extracting images from the returned pages. It can also be set up to filter "
+"the images through the `VidWhacker' program. WARNING: THE INTERNET SOMETIMES "
+"CONTAINS PORNOGRAPHY. The Internet being what it is, absolutely anything "
+"might show up in the collage including -- quite possibly -- pornography, or "
+"even nudity. Please act accordingly. Written by Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/webcollage.xml.h:10
+#, fuzzy
+msgid "URL Timeout:     2 secs"
+msgstr "Tidsavbrudd for URL"
+
+#: hacks/config/webcollage.xml.h:11
+msgid "WebCollage"
+msgstr "WebCollage"
+
+#: hacks/config/whirlwindwarp.xml.h:2
+msgid ""
+"Floating stars are acted upon by a mixture of simple 2D forcefields. The "
+"strength of each forcefield changes continuously, and it is also switched on "
+"and off at random. By Paul 'Joey' Clark."
+msgstr ""
+
+#: hacks/config/whirlwindwarp.xml.h:7
+msgid "Trail Size"
+msgstr "Størrelse på spor"
+
+#: hacks/config/whirlwindwarp.xml.h:8
+msgid "WhirlwindWarp"
+msgstr ""
+
+#: hacks/config/whirlygig.xml.h:1
+msgid "Amplitude"
+msgstr "Amplityde"
+
+#: hacks/config/whirlygig.xml.h:2
+#, fuzzy
+msgid "Circle"
+msgstr "Omganger"
+
+#: hacks/config/whirlygig.xml.h:3
+msgid "Draws zooming chains of sinusoidal spots. Written by Ashton Trey Belew."
+msgstr ""
+
+#: hacks/config/whirlygig.xml.h:4
+#, fuzzy
+msgid "Explain modes"
+msgstr "Visningsmodi"
+
+#: hacks/config/whirlygig.xml.h:5
+msgid "Fun"
+msgstr ""
+
+#: hacks/config/whirlygig.xml.h:6
+msgid "Funky"
+msgstr ""
+
+#: hacks/config/whirlygig.xml.h:7
+msgid "Innie"
+msgstr ""
+
+#: hacks/config/whirlygig.xml.h:8
+#, fuzzy
+msgid "Leave a trail"
+msgstr "Etterlat spor"
+
+#: hacks/config/whirlygig.xml.h:9
+#, fuzzy
+msgid "Linear"
+msgstr "Linjer"
+
+#: hacks/config/whirlygig.xml.h:11
+#, fuzzy
+msgid "Lissajous"
+msgstr "Lisa"
+
+#: hacks/config/whirlygig.xml.h:15
+#, fuzzy
+msgid "Test"
+msgstr "Best"
+
+#: hacks/config/whirlygig.xml.h:16
+#, fuzzy
+msgid "Use Double Buffering"
+msgstr "Double buffer"
+
+#: hacks/config/whirlygig.xml.h:17
+msgid "Whirlies"
+msgstr ""
+
+#: hacks/config/whirlygig.xml.h:18
+msgid "WhirlyGig"
+msgstr "WhirlyGig"
+
+#: hacks/config/whirlygig.xml.h:19
+#, fuzzy
+msgid "Wrap the screen"
+msgstr "Hent skjerm"
+
+#: hacks/config/wormhole.xml.h:6
+#, fuzzy
+msgid "Star speed"
+msgstr "Haiens hastighet"
+
+#: hacks/config/wormhole.xml.h:7
+msgid "Stars Created"
+msgstr ""
+
+#: hacks/config/wormhole.xml.h:8
+#, fuzzy
+msgid "Wormhole"
+msgstr "Orm"
+
+#: hacks/config/wormhole.xml.h:9
+msgid ""
+"Wormhole simulates flying through a colored wormhole in space. Written by "
+"Jon Rafkind."
+msgstr ""
+
+#: hacks/config/worm.xml.h:1
+msgid ""
+"An ancient xlock hack that draws multicolored worms that crawl around the "
+"screen. Written by Brad Taylor, Dave Lemke, Boris Putanec, and Henrik "
+"Theiling."
+msgstr ""
+
+#: hacks/config/xanalogtv.xml.h:1
+msgid "XAnalogTV"
+msgstr ""
+
+#: hacks/config/xanalogtv.xml.h:2
+msgid ""
+"XAnalogTV shows a detailed simulation of an old TV set showing various test "
+"patterns, with various picture artifacts like snow, bloom, distortion, "
+"ghosting, and hash noise. It also simulates the TV warming up. It will cycle "
+"through 12 channels, some with images you give it, and some with color bars "
+"or nothing but static. By Trevor Blackwell."
+msgstr ""
+
+#: hacks/config/xaos.xml.h:1
+msgid "XaoS"
+msgstr "XaoS"
+
+#: hacks/config/xaos.xml.h:2
+msgid ""
+"XaoS generates fast fly-through animations of the Mandelbrot and other "
+"fractal sets. Written by Thomas Marsh and Jan Hubicka. This is not included "
+"with the XScreenSaver package, but if you don't have it already, you can "
+"find it at &lt;http://xaos.theory.org/&gt;."
+msgstr ""
+
+#: hacks/config/xdaliclock.xml.h:1
+msgid "12-Hour Time"
+msgstr "12-timers klokke"
+
+#: hacks/config/xdaliclock.xml.h:2
+msgid "24-Hour Time"
+msgstr "24-timers klokke"
+
+#: hacks/config/xdaliclock.xml.h:3
+#, fuzzy
+msgid "Cycle Colors"
+msgstr "Veksle mellom farger."
+
+#: hacks/config/xdaliclock.xml.h:4
+#, fuzzy
+msgid "Display Seconds"
+msgstr "Stil"
+
+#: hacks/config/xdaliclock.xml.h:5
+msgid "Huge Font"
+msgstr "Enorm skrift"
+
+#: hacks/config/xdaliclock.xml.h:6 hacks/config/xmatrix.xml.h:10
+msgid "Large Font"
+msgstr "Stor skrift"
+
+#: hacks/config/xdaliclock.xml.h:7
+msgid "Medium Font"
+msgstr "Middels skrift"
+
+#: hacks/config/xdaliclock.xml.h:8 hacks/config/xmatrix.xml.h:16
+msgid "Small Font"
+msgstr "Liten skrift"
+
+#: hacks/config/xdaliclock.xml.h:9
+msgid "XDaliClock"
+msgstr "XDaliKlokke"
+
+#: hacks/config/xdaliclock.xml.h:10
+msgid ""
+"XDaliClock draws a large digital clock, the numbers of which change by "
+"``melting'' into their new shapes. Written by Jamie Zawinski. This is not "
+"included with the XScreenSaver package, but if you don't have it already, "
+"you can find it at &lt;http://www.jwz.org/xdaliclock/&gt;."
+msgstr ""
+
+#: hacks/config/xearth.xml.h:1
+msgid "Bright"
+msgstr "Lys"
+
+#: hacks/config/xearth.xml.h:2 hacks/config/xplanet.xml.h:7
+msgid "Date/Time Stamp"
+msgstr ""
+
+#: hacks/config/xearth.xml.h:3
+msgid "Day  Dim"
+msgstr ""
+
+#: hacks/config/xearth.xml.h:5
+msgid "Display Stars"
+msgstr "Vis stjerner"
+
+#: hacks/config/xearth.xml.h:8
+msgid "Label Cities"
+msgstr ""
+
+#: hacks/config/xearth.xml.h:9 hacks/config/xplanet.xml.h:49
+msgid "Lower Left"
+msgstr "Nedre venstre"
+
+#: hacks/config/xearth.xml.h:10 hacks/config/xplanet.xml.h:50
+msgid "Lower Right"
+msgstr "Nedre høyre"
+
+#: hacks/config/xearth.xml.h:13 hacks/config/xplanet.xml.h:51
+msgid "Mercator Projection"
+msgstr ""
+
+#: hacks/config/xearth.xml.h:14
+msgid "Night   Dim"
+msgstr ""
+
+#: hacks/config/xearth.xml.h:15
+msgid "No Stars"
+msgstr "Ingen stjerner"
+
+#: hacks/config/xearth.xml.h:16
+msgid "North/South Rotation"
+msgstr ""
+
+#: hacks/config/xearth.xml.h:18 hacks/config/xplanet.xml.h:53
+msgid "Orthographic Projection"
+msgstr ""
+
+#: hacks/config/xearth.xml.h:19 hacks/config/xplanet.xml.h:56
+msgid "Real Time"
+msgstr ""
+
+#: hacks/config/xearth.xml.h:20
+msgid "Shaded Image"
+msgstr ""
+
+#: hacks/config/xearth.xml.h:21
+msgid "Sharp"
+msgstr "Skarp"
+
+#: hacks/config/xearth.xml.h:26
+msgid "Terminator   Blurry"
+msgstr ""
+
+#: hacks/config/xearth.xml.h:27 hacks/config/xplanet.xml.h:61
+msgid "Time Warp"
+msgstr ""
+
+#: hacks/config/xearth.xml.h:29 hacks/config/xplanet.xml.h:62
+msgid "Upper Left"
+msgstr "Øvre venstre"
+
+#: hacks/config/xearth.xml.h:30 hacks/config/xplanet.xml.h:63
+msgid "Upper Right"
+msgstr "Øvre høyre"
+
+#: hacks/config/xearth.xml.h:31
+msgid ""
+"XEarth draws an image of the Earth, as seen from your favorite vantage point "
+"in space, correctly shaded for the current position of the Sun. Written by "
+"Kirk Johnson. This is not included with the XScreenSaver package, but if you "
+"don't have it already, you can find it at &lt;http://www.cs.colorado.edu/"
+"~tuna/xearth/&gt;. There is also a similar (but more recent) program called "
+"xplanet to be found at &lt;http://xplanet.sourceforge.net/&gt;."
+msgstr ""
+
+#: hacks/config/xearth.xml.h:32
+msgid "Xearth"
+msgstr "Xklode"
+
+#: hacks/config/xfishtank.xml.h:5
+msgid "Fish"
+msgstr "Fisk"
+
+#: hacks/config/xfishtank.xml.h:6
+msgid "Fish Speed"
+msgstr "Hastighet på fisk"
+
+#: hacks/config/xfishtank.xml.h:7
+msgid ""
+"Fish! This is not included with the XScreenSaver package, but if you don't "
+"have it already, you can find it at &lt;http://metalab.unc.edu/pub/Linux/X11/"
+"demos/&gt;."
+msgstr ""
+
+#: hacks/config/xfishtank.xml.h:12
+msgid "XFishTank"
+msgstr "Xakvarie"
+
+#: hacks/config/xflame.xml.h:1
+msgid "Bitmap File"
+msgstr "Bildefil"
+
+#: hacks/config/xflame.xml.h:2
+msgid ""
+"Draws a simulation of pulsing fire. It can also take an arbitrary image and "
+"set it on fire too. Written by Carsten Haitzler, hacked on by many others."
+msgstr ""
+
+#: hacks/config/xflame.xml.h:3
+msgid "Enable Blooming"
+msgstr ""
+
+#: hacks/config/xflame.xml.h:8
+msgid "Xflame"
+msgstr "Xflamme"
+
+#: hacks/config/xjack.xml.h:4
+msgid ""
+"This program behaves schizophrenically and makes a lot of typos. Written by "
+"Jamie Zawinski. If you haven't seen Stanley Kubrick's masterpiece, ``The "
+"Shining,'' you won't get it. Those who have describe this hack as "
+"``inspired.''"
+msgstr ""
+
+#: hacks/config/xjack.xml.h:5
+msgid "Xjack"
+msgstr "Xjack"
+
+#: hacks/config/xlyap.xml.h:1
+msgid ""
+"This generates pretty fractal pictures by doing funky math involving the "
+"``Lyapunov exponent.'' It has a cool interactive mode, too. Written by Ron "
+"Record."
+msgstr ""
+
+#: hacks/config/xlyap.xml.h:2
+msgid "Xlyap"
+msgstr "Xlyap"
+
+#: hacks/config/xmatrix.xml.h:3
+msgid ""
+"Draws dropping characters similar to what is seen on the computer monitors "
+"in \"The Matrix\". See also \"glmatrix\" for a 3D rendering of the similar "
+"effect that appeared in the title sequence of the movie. Written by Jamie "
+"Zawinski."
+msgstr ""
+
+#: hacks/config/xmatrix.xml.h:4
+msgid "Expansion Algorithm"
+msgstr ""
+
+#: hacks/config/xmatrix.xml.h:6
+msgid "Full"
+msgstr ""
+
+#: hacks/config/xmatrix.xml.h:9
+msgid "Knock Knock"
+msgstr ""
+
+#: hacks/config/xmatrix.xml.h:12
+msgid "Phone Number"
+msgstr "Telefonnummer"
+
+#: hacks/config/xmatrix.xml.h:13
+msgid "Run Trace Program"
+msgstr ""
+
+#: hacks/config/xmatrix.xml.h:14
+msgid "Slider Algorithm"
+msgstr ""
+
+#: hacks/config/xmatrix.xml.h:19
+msgid "Synergistic Algorithm"
+msgstr ""
+
+#: hacks/config/xmatrix.xml.h:20
+msgid "Xmatrix"
+msgstr "Xmatrise"
+
+#: hacks/config/xmountains.xml.h:1
+msgid "1.0"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:3
+#, fuzzy
+msgid "14"
+msgstr "1"
+
+#: hacks/config/xmountains.xml.h:4
+msgid "7"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:5
+#, fuzzy
+msgid "Altitude  Low"
+msgstr "Amplityde"
+
+#: hacks/config/xmountains.xml.h:6
+msgid "Ambient  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:7
+#, fuzzy
+msgid "Angle of Light"
+msgstr "Aktiver lyn"
+
+#: hacks/config/xmountains.xml.h:8
+msgid "Contour  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:9
+msgid "Contrast  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:10
+#, fuzzy
+msgid "Craggy"
+msgstr "Pause"
+
+#: hacks/config/xmountains.xml.h:11
+msgid "Cross Update"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:12
+msgid "Distance  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:14
+msgid "Foreground"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:15
+#, fuzzy
+msgid "Fractal Options"
+msgstr "Fraktal vekst"
+
+#: hacks/config/xmountains.xml.h:16
+msgid "Height  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:18
+#, fuzzy
+msgid "Horizontal  Low"
+msgstr "Horisontal symmetri"
+
+#: hacks/config/xmountains.xml.h:19
+#, fuzzy
+msgid "Iteration  0"
+msgstr "Gjennomganger"
+
+#: hacks/config/xmountains.xml.h:20
+msgid "Light Level"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:21
+msgid "Recursion  0"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:22
+msgid "Reflections"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:23
+msgid "Sea Level  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:24
+msgid "Side View"
+msgstr "Sidevisning"
+
+#: hacks/config/xmountains.xml.h:26
+#, fuzzy
+msgid "Smoothing  0"
+msgstr "Myk"
+
+#: hacks/config/xmountains.xml.h:27
+#, fuzzy
+msgid "Speed  Slow"
+msgstr "Hastighet"
+
+#: hacks/config/xmountains.xml.h:28
+#, fuzzy
+msgid "Terrain"
+msgstr "Spor"
+
+#: hacks/config/xmountains.xml.h:29
+msgid "Top View"
+msgstr "Toppvisning"
+
+#: hacks/config/xmountains.xml.h:30
+msgid "V. Shift  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:31
+msgid "V. Stretch  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:32
+msgid "Variance  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:33
+msgid "Vertical  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:34
+#, fuzzy
+msgid "Viewpoint"
+msgstr "Lineær bevegelse"
+
+#: hacks/config/xmountains.xml.h:35
+msgid ""
+"XMountains generates realistic-looking fractal terrains of snow-capped "
+"mountains near water, with either a top view or a side view. Written by "
+"Stephen Booth. This is not included with the XScreenSaver package, but if "
+"you don't have it already, you can find it at &lt;http://www.epcc.ed.ac.uk/"
+"~spb/xmountains/&gt;. (Make sure you have version 2.7 or newer!)"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:36
+msgid "Xf  0.0"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:37
+msgid "Xmountains"
+msgstr "Xfjell"
+
+#: hacks/config/xmountains.xml.h:38
+msgid "Yf  0.0"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:5
+msgid "Ancient Projection"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:6
+msgid "Azimuthal Projection"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:9
+msgid "From Ariel"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:10
+msgid "From Callisto"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:11
+msgid "From Charon"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:12
+msgid "From Deimos"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:13
+msgid "From Dione"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:14
+msgid "From Earth"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:15
+msgid "From Enceladus"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:16
+msgid "From Europa"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:17
+msgid "From Ganymede"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:18
+msgid "From Hyperion"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:19
+msgid "From Iapetus"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:20
+msgid "From Io"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:21
+#, fuzzy
+msgid "From Jupiter"
+msgstr "Jupiter"
+
+#: hacks/config/xplanet.xml.h:22
+msgid "From Major"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:23
+msgid "From Mars"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:24
+msgid "From Mercury"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:25
+msgid "From Mimas"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:26
+msgid "From Miranda"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:27
+#, fuzzy
+msgid "From Moon"
+msgstr "Tilfeldig bevegelse"
+
+#: hacks/config/xplanet.xml.h:28
+msgid "From Neptune"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:29
+msgid "From Nereid"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:30
+msgid "From Oberon"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:31
+msgid "From Phobos"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:32
+msgid "From Phoebe"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:33
+msgid "From Pluto"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:34
+#, fuzzy
+msgid "From Random"
+msgstr "Tilfeldig"
+
+#: hacks/config/xplanet.xml.h:35
+msgid "From Rhea"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:36
+msgid "From Saturn"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:37
+msgid "From Sun"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:38
+msgid "From Tethys"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:39
+msgid "From Titan"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:40
+msgid "From Titania"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:41
+#, fuzzy
+msgid "From Triton"
+msgstr "Friksjon"
+
+#: hacks/config/xplanet.xml.h:42
+msgid "From Umbriel"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:43
+msgid "From Uranus"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:44
+msgid "From Venus"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:45
+msgid "Hemisphere Projection"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:46
+msgid "Lambert Projection"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:47
+msgid "Latitude"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:48
+#, fuzzy
+msgid "Longitude"
+msgstr "Langt"
+
+#: hacks/config/xplanet.xml.h:52
+msgid "Mollweide Projection"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:54
+msgid "Peters Projection"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:57
+msgid "Rectangular Projection"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:58
+msgid "Render as a Globe"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:64
+msgid "View Ariel"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:65
+msgid "View Callisto"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:66
+msgid "View Charon"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:67
+msgid "View Deimos"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:68
+msgid "View Dione"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:69
+#, fuzzy
+msgid "View Earth"
+msgstr "Xklode"
+
+#: hacks/config/xplanet.xml.h:70
+msgid "View Enceladus"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:71
+msgid "View Europa"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:72
+msgid "View Ganymede"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:73
+msgid "View Hyperion"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:74
+msgid "View Iapetus"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:75
+msgid "View Io"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:76
+#, fuzzy
+msgid "View Jupiter"
+msgstr "Jupiter"
+
+#: hacks/config/xplanet.xml.h:77
+msgid "View Major"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:78
+msgid "View Mars"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:79
+msgid "View Mercury"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:80
+msgid "View Mimas"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:81
+msgid "View Miranda"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:82
+#, fuzzy
+msgid "View Moon"
+msgstr "Lineær bevegelse"
+
+#: hacks/config/xplanet.xml.h:83
+msgid "View Neptune"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:84
+msgid "View Nereid"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:85
+msgid "View Oberon"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:86
+msgid "View Phobos"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:87
+msgid "View Phoebe"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:88
+msgid "View Pluto"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:89
+#, fuzzy
+msgid "View Random"
+msgstr "Tilfeldig"
+
+#: hacks/config/xplanet.xml.h:90
+msgid "View Rhea"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:91
+msgid "View Saturn"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:92
+msgid "View Sun"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:93
+msgid "View Tethys"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:94
+msgid "View Titan"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:95
+msgid "View Titania"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:96
+msgid "View Triton"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:97
+msgid "View Umbriel"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:98
+msgid "View Uranus"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:99
+msgid "View Venus"
+msgstr ""
+
+#: hacks/config/xplanet.xml.h:100
+#, fuzzy
+msgid "Xplanet"
+msgstr "Plan"
+
+#: hacks/config/xplanet.xml.h:101
+msgid ""
+"Xplanet draws an image of the Earth, as seen from your favorite vantage "
+"point in space, correctly shaded for the current position of the Sun. "
+"Written by Hari Nair. This is not included with the XScreenSaver package, "
+"but if you don't have it already, you can find it at &lt;http://xplanet."
+"sourceforge.net/&gt;."
+msgstr ""
+
+#: hacks/config/xrayswarm.xml.h:1
+msgid ""
+"Draws a few swarms of critters flying around the screen, with nicely faded "
+"color trails behind them. Written by Chris Leger."
+msgstr ""
+
+#: hacks/config/xrayswarm.xml.h:5
+msgid "XRaySwarm"
+msgstr "XStråleSverm"
+
+#: hacks/config/xsnow.xml.h:1
+msgid ""
+"Draws falling snow and the occasional tiny Santa. By Rick Jansen. You can "
+"find it at &lt;http://www.euronet.nl/~rja/Xsnow/&gt;."
+msgstr ""
+
+#: hacks/config/xsnow.xml.h:2
+msgid "Xsnow"
+msgstr "Xsnø"
+
+#: hacks/config/xspirograph.xml.h:5
+msgid ""
+"Simulates that pen-in-nested-plastic-gears toy from your childhood. By Rohit "
+"Singh."
+msgstr ""
+
+#: hacks/config/xspirograph.xml.h:6
+msgid "XSpiroGraph"
+msgstr ""
+
+#: hacks/config/xteevee.xml.h:1
+msgid "Color Bars Enabled"
+msgstr ""
+
+#: hacks/config/xteevee.xml.h:2
+#, fuzzy
+msgid "Cycle Through Modes"
+msgstr "Veksle mellom farger."
+
+#: hacks/config/xteevee.xml.h:3
+msgid "Rolling Enabled"
+msgstr "Rulling aktivert"
+
+#: hacks/config/xteevee.xml.h:4
+msgid "Static Enabled"
+msgstr ""
+
+#: hacks/config/xteevee.xml.h:5
+msgid "XTeeVee"
+msgstr "XTeeVee"
+
+#: hacks/config/xteevee.xml.h:6
+msgid ""
+"XTeeVee simulates various television problems, including static, loss of "
+"vertical hold, and a test pattern. By Greg Knauss."
+msgstr ""
+
+#: hacks/config/zoom.xml.h:3
+msgid "Lens Offset"
+msgstr "Linseavstand"
+
+#: hacks/config/zoom.xml.h:4
+msgid "Lenses"
+msgstr "Linser"
+
+#: hacks/config/zoom.xml.h:9
+msgid ""
+"Zooms in on a part of the screen and then moves around. With the -lenses "
+"option the result is like looking through many overlapping lenses rather "
+"than just a simple zoom. Written by James Macnicol."
+msgstr ""
+
+#, fuzzy
+#~ msgid "Linux"
+#~ msgstr "Sparc Linux"
+
+#~ msgid "Sparc Linux"
+#~ msgstr "Sparc Linux"
+
+#~ msgid "Checkered Balls"
+#~ msgstr "Rutete baller"
+
+#~ msgid "Ping Subnet"
+#~ msgstr "Ping subnett"
+
+#~ msgid "Scary Colors"
+#~ msgstr "Skremmende farger"
+
+#~ msgid "Y Rotation"
+#~ msgstr "Y-rotasjon"
+
+#~ msgid "Z Rotation"
+#~ msgstr "Z-rotasjon"
+
+#~ msgid "Curviness"
+#~ msgstr "Kurvethet"
index fc0e55e315c959755ad007e6a5de7cc2f21c950b..b15b962a1ca0e43bfee9d3587fef0e0dfaa4d67c 100644 (file)
--- a/setup.com
+++ b/setup.com
@@ -57,6 +57,7 @@ $ hyperball   :== $'mydir'hyperball
 $ hypercube    :== $'mydir'hypercube
 $ ifs          :== $'mydir'ifs
 $ imsmap       :== $'mydir'imsmap
+$ interaggregate       :== $'mydir'interaggregate
 $ interference :== $'mydir'interference
 $ intermomentary       :== $'mydir'intermomentary
 $ jigsaw       :== $'mydir'jigsaw
@@ -74,8 +75,8 @@ $ maze                :== $'mydir'maze
 $ memscroller  :== $'mydir'memscroller
 $ metaballs    :== $'mydir'metaballs
 $ mismunch     :== $'mydir'mismunch
-$ moire2       :== $'mydir'moire2
 $ moire                :== $'mydir'moire
+$ moire2       :== $'mydir'moire2
 $ mountain     :== $'mydir'mountain
 $ munch                :== $'mydir'munch
 $ nerverot     :== $'mydir'nerverot
@@ -123,8 +124,8 @@ $ wander    :== $'mydir'wander
 $ webcollage-helper    :== $'mydir'webcollage-helper
 $ whirlwindwarp        :== $'mydir'whirlwindwarp
 $ whirlygig    :== $'mydir'whirlygig
-$ wormhole     :== $'mydir'wormhole
 $ worm         :== $'mydir'worm
+$ wormhole     :== $'mydir'wormhole
 $ xanalogtv    :== $'mydir'xanalogtv
 $ xflame       :== $'mydir'xflame
 $ xjack                :== $'mydir'xjack
old mode 100755 (executable)
new mode 100644 (file)
index 18e940680a1fb8d607118d66ac68e57058a12f23..a45ae4807daa6ab02c9e075366ea2ffff60931e9 100644 (file)
@@ -159,7 +159,7 @@ fade_screens (Display *dpy, Colormap *cmaps,
 
 /* The business with `cmaps_per_screen' is to fake out the SGI 8-bit video
    hardware, which is capable of installing multiple (4) colormaps
-   simultaniously.  We have to install multiple copies of the same set of
+   simultaneously.  We have to install multiple copies of the same set of
    colors in order to fill up all the available slots in the hardware color
    lookup table, so we install an extra N colormaps per screen to make sure
    that all screens really go black.
index 613cecd1777fec0c5983c99e3fd55f990c09e094..716a2d7cc6223445a237fe5a71eaadf88aed9eee 100644 (file)
@@ -1,2 +1,2 @@
 static const char screensaver_id[] =
-       "@(#)xscreensaver 4.21 (01-Mar-2005), by Jamie Zawinski (jwz@jwz.org)";
+       "@(#)xscreensaver 4.22 (22-Jun-2005), by Jamie Zawinski (jwz@jwz.org)";
index 78fb1607deebfa0e259fc8012e45dfd6dda9e326..12c529b181d1e14a187078705649b420541c8ade 100644 (file)
@@ -1,5 +1,5 @@
 %define        name xscreensaver
-%define        version 4.21
+%define        version 4.22
 
 Summary:       X screen saver and locker
 Name:          %{name}
@@ -16,9 +16,21 @@ Buildroot:   %{_tmppath}/%{name}-root
 %package base
 Summary: A minimal installation of xscreensaver.
 Group: Amusements/Graphics
-BuildPrereq: bc, pam-devel, xorg-x11-devel
-BuildPrereq: gtk2-devel libglade2-devel
-Requires: /etc/pam.d/system-auth, htmlview, desktop-backgrounds-basic
+BuildRequires: bc
+BuildRequires: gettext
+BuildRequires: pam-devel
+BuildRequires: gtk2-devel
+BuildRequires: desktop-file-utils
+# Red Hat:
+BuildRequires: xorg-x11-devel
+BuildRequires: libglade2-devel
+# Mandrake:
+#BuildRequires:        libxorg-x11-devel
+#BuildRequires:        libglade2.0_0-devel
+Requires: SysVinit
+Requires: /etc/pam.d/system-auth
+Requires: htmlview
+Requires: desktop-backgrounds-basic
 Provides: xscreensaver
 Provides: xscreensaver-base
 Obsoletes: xscreensaver
@@ -126,11 +138,11 @@ dd=%{_builddir}/%{name}-%{version}
 (  cd hacks     ; list_files install ) >  $dd/extras.files
 (  cd hacks/glx ; list_files install ) >  $dd/gl-extras.files
 (  cd driver    ; list_files install ) >  $dd/base.files
-(  cd po        ; list_files install ) >> $dd/base.files
+#( cd po        ; list_files install ) >> $dd/base.files
+
+%find_lang %{name}
+cat %{name}.lang >> $dd/base.files
 
-# jwz: I get "find-lang.sh: No translations found for xscreensaver" on FC3
-#%find_lang %{name}
-#cat %{name}.lang >> $dd/base.files
 
 # Make sure all files are readable by all, and writable only by owner.
 #