Changelog xsnow

========== test version ===========
version 3.7.4
        01: utils.c: fix bug in using xdo_search_windows(): the search
            parameter must be filled in completely (probably bug in
        02: flags.c, docs.c: add flags --root and --window-id 
            same as -root and -window-id for usage under xscreensaver
        03: main.c: do_display_dimensions: put fflush() and return in proper
            remove prevent-remakes
            utils.c: use memset to initialize xdo_search_t search
            bootstrap: rm -f po/*.gmo po/*.po
        04: bootstrap: get rid of Makevars.template

version 3.7.3
        01: removed debug output
version 3.7.2
        01: make 'hide menu' button working in WM's that do not support
            add xdo_search.c, make it g++ compilable
            ui.c: trivia to make it g++ compilable again
            windows.{c,h}, wmctrl.{c,h}: remove unused functions
            main.c, utils.{c,h}: use xdo function to find window "pcmanfm"
        02: fix bug that caused error when configuring with --disable-selfrep
version 3.7.1
        01: choose between two moon colors (as suggested by Lewis Smith)
        02: xsnow.h, Santa.c, Fallensnow.c: make Santa bidirectional
        03: Makefile.am: add -DENABLE_NLS=1 where appropriate
        04: correct moonseeking behaviour if Santa rides from right to left
            correct wind-dependency for R-L Santa
        05: Santa.c: call init_Santa_surfaces only at initialisation
            scenery.c: fix bug which caused core dump when using external tree
        06: Santa.c: reorder indices of Santa_surfaces.
        07: Implement -treescale
        08: Implement -santascale
        09: ui.glade: avoid use of deprecated settings
        10: adapt languages to changes, change ee.po in et.po
        11: scenery.c: some code cleaning

version 3.7.0
        01: add contact button on welcome page and ratrabbit url in man page
            add gettext (using gettextize) (thanks to suggestion by
              Albano Battistella)
            add languages de en es fi fr it nl pt
            re-arrange programming of selfrep capability
            add 2023 to copyright
        04: add more languages
            m4/gettext.m4: Upgrade to gettext-0.21.
            m4/host-cpu-c-abi.m4: New file, from gettext-0.21.
            m4/iconv.m4: Upgrade to gettext-0.21.
            m4/intlmacosx.m4: Upgrade to gettext-0.21.
            m4/lib-ld.m4: Upgrade to gettext-0.21.
            m4/lib-link.m4: Upgrade to gettext-0.21.
            m4/lib-prefix.m4: Upgrade to gettext-0.21.
            m4/nls.m4: Upgrade to gettext-0.21.
            m4/po.m4: Upgrade to gettext-0.21.
            m4/progtest.m4: Upgrade to gettext-0.21.
            configure.ac (AM_GNU_GETTEXT_VERSION): remove
            add gettext.h
            take appropriate action if no languages are available
               : no language button
            configure.ac, src/Makefile.am: trigger on USE_NLS macro
            simplemake.sh: some improvements
        05: Santa.c: ResetSanta(): let Santa start somewhat left of the screen so
              that His (re-)appearance is a surprise, more or less
            ui.c: button_santa(), Santa.c: SantaVisible: when changing Santa,
              place Santa on a visibla area.

version 3.6.1
        01: add centos deps to file dependencies
            (thanks to Joachim Ruebenschuss)
        02: src/Makefile.am: add PTHREAD_CFLAGS and PTHREAD_LIBS

version 3.6.0
        01: implement xinerama-awareness
           implement -outline
           introduce usage of libxdo, make it g++ compliant, fix some non-fatal
           fallensnow.c: fix bug that causes crash when snowing on a window
               less than 10 pixels width
           birds.c: fix bug that caused a hang when using -doublebuffer 0
           docs.c: update window manager/desktop issues
           main.c: print info when snow window changes size (thanks to Gim Kami)
           configure.ac: chack for availability of gsl_interp_steffen, 
               gsl_interp_akima, gsl_interp_cspline and gsl_interp_linear
               (Thanks to Joachim Ruebenschuss)
           utils.c: somewhat nicer print-out of version

version 3.5.3
        01: main.c: drawit(): do now draw the first second or so to hide
            unstable configurations of scenery, stars, etc.
            fallensnow.c, birds.c, aurora.c: make them C++ compliant by
              rewriting goto and typecast pointer assignment
            meteor.c: rewrite goto
            santa.c: continue Santa animation, irrespective of His speed
            fallensnow.c: paint fallensnow one pixel higher
            fallensnow.c: generate more snow when Santa is ploughing
        02: loadmeasure.c: maximum 5 warnings about to busy system
        03: doit.h: change defaults for aurora_width/height to 60/30

version 3.5.2
        01: fallensnow.c: draw fallensnow only on regions where fallensnow is present,
            to prevent a continuously present line on regions where there is
            no fallensnow (yet)
        02: main.c: when user changes offsety, call UpdateFallenSnowRegionsWithLock()
            in stead of UpdateFallenSnowRegions().
            fallensnow.c: on change of MaxScrSnowDepth, call
            SetMaxScreenSnowDepthWithLock() in stead of
            snow.c: set fallensnow lock when examining fallensnow regions
               thus preventing prevents random crashes
            fallensnow.h a.o: create and use macros for semaphores to
            facilitate debugging

version 3.5.1
        01: configure.ac: reproducible build is now complete, it seems, also
            when building outside the xsnow-tree
        02: aurora.c, spline_interpol.c: use steffen's method for splines
            aurora.c: small correction in determining the points to
                      evaluate the splne at
        03: spline_interpol.{h,c}, aurora.c: use macro SPLINE_INTERP to choose
            for spline type (steffen, cspline)
        04: change some meteor code: other call-back logic, other
            names for variables (meteorite -> meteor)
        05: change filenames meteo.c, meteo.h into meteor.c, meteor.h
            change flags -meteorites, -nometeorites into -meteors, -nometeors
            meteor.c: some minor changes, including different colors
        06: snow.c: do_UpdateSnowFlake(): fix non-fatal bug in updating
               horizontal speed of flakes
            xsnow.c, snow.c: change some parameters for a more dramatic
               dependency from wind on flakes
            flag 'auroraheight' is now height of aurora
            flag 'aurorabase' determines the vertical placement of the aurora
        07: fallensnow.c, treesnow.c: use random flake for blowoff snow
            fallensnow.c: change initial velocity and position of blowoff snow
        08: fallensnow.c: use spline for desh shape of bottom fallensnow
            main.c: correct non-fatal bug in using srand48() for 32 bit systems
            snow.c: correct not-fatal bug: compare acth[] with desh[] in stead
                     of h
            xsnow.h: change time_change_bottom to 10 minutes
        09: use splines to paint fallensnow 
        10: try pthreads for computing fallensnow
        11: finish pthreads for fallensnow
        12: aurora.c: do not use mutexes, use semaphores
                      fix bug that caused creation of new threads after
                      resizing of corona
        13: fallensnow.c: use splines for fallensnow also on windows
        14: birds.c: make birds multithreading
        15: fallensnow.c, utils.{c,h}: check on availability of traceback()
            fallensnow.h: threads.h -> pthread.h

version 3.5.0
        1: add aurora
        2: aurora.c: half implemented and disabled other method to handle sharp bends. 
        3: windows.c: remove calls to DrawFallen()
           on second thought: use other method, combined with better code
        4: optimized determining of fuzz somewhat
           set all horizontal scales to width 100
        5: ui.xml: size all horizontal scales to 7 em
           aurora.c: add high frequency alpha to aurora 
        6: implemented safe_malloc.{c.h} in a desperate try to get the 32 bit
           version running in amd64. No success.
           Add pthread.h at the start of every c,cpp file.
           main.c: initialize global.NewWind to 100.0
           Problems with 32 bit version were caused by optimization of the
              compiler and me not realizing the floating point arithmetic can 
              have some surprises, such as 64-bit and 80-bit compares.
              Problem solved by rearranging code in create_aurora_base().
        7: aurora.c: allow arora surface to be somewhat wider than the screen
           and allow it start somewhat left of the screen
        8: moon.c: randomize starting position from moon
           aurora.c: randomize starting theta and alpha of aurora
           aurora.c: adjust theta change, add slant change
           ixpm.c: correct two non fatal errors in scanf(... %100s...)
              thanks to dcb314 https://sourceforge.net/p/xsnow/tickets/11/
           docs.c: add va_end()
           wmctrl.c, birds.c: make cppcheck happy
           make all, except kdtree.c, cppcheck happy using a check after
           aurora.c: prevent too large vertical movements in position of aurora
        10: add more random slant for aurora
        11: aurora.c: create aurora_erase(), to be called in main() and when 
               changing the look of the aurora when no double buffering is
            fallensnow.c: do not call XClearArea when double buffer is used.
            doit.h: Change aurora defaults.

version 3.4.4
        1: birds.c: attraction point goes now from 0.1..0.9 of the horizontal 
           dimension of the screen
        2: configure.ac: try to create a reproducible build:
           definition for DATE, re-timestamping the selfrep tar file
        3: some enhancements with regard to 2:
        4: main.c:  add some fflush(stdout)
           birds.c: take care that AttrSpace is always honored from the beginning
                    When using as xscreensaver background, this was not the
           xsnow.desktop.in: change Version into 1.0
version 3.4.3
        1: enhance dependencies with Suse package names
           main.c, ui.c, flags,c, doit.h: solve bug concerning the flag -above
           Extend documentation about xsnow's behaviour in a few window
           main.c: fix bug: Xsnow in TWM did start in non-existing window.
           utils.c: add some randomness to add_to_mainloop
        2: implement -attrspace, including button and man page
           if Santa is not shown, let Him run anyway, so 'Follow Santa' has effect
        3: somewhat better implementation of -attrspace
version 3.4.2
        1: fallensnow.c: other algorithm for drawing fallen snow
           Santa.c: Santa is now moon-seeking, also when birds are not showing 
              but only half of the time
        3: fallensnow.c: fallen snow at the bottom changes shape every few
        4: no spikes anymore on top of fallensnow
           define minimum height of bottom fallensnow
           ui.c: set_default_tab(): remove memory leak
           fallensnow.c: CreateSurfaceFromFallen(): some minor details
        5: fix issue that 'make install' always remakes selfrep.o
           selfrep.c: if sizeof(tarfile) < 1000 characters, assume that this 
              can be safely send to a tty
version 3.4.1
        1: ui.c: more checks on ui_running
        2: configure.ac, Makefile.am, data: some small adaptions for
version 3.4.0
        1: first try to add background to the xscreensaver mode:
           use ~/xsnowbackground.jpg
        2: src:Makefile.am: remove .deps/* from CLEANFILES
           configure.ac: move execution of 'make dist' to the very end
           replace imagemagick for background with gtk/gdk
        3: implement choose-background button
           xsnow.desktop: change version to 1.5, include xsnow-version 
           in comment
           implement flag -bg
        4: xsnow.h: set time_snowflakes to 0.02 * global.cpufactor
           improve file selector for xscreensaver
           flags.c: add -treeoverlap and -notreeoverlap
                    add -birdsscale
                    add -transparency
           ui.xml: add corresponding command line flag to tooltips
        5: remove all from libmagickwand
        6: minor changes in xscreensaver menu
           prevent calling gtk_label_set_text() when there is no menu
        7: ui.c: ui(): move setting of ui_running to start of ui(), in order
           to see version number in 'settings' tab
version 3.3.6
        1: selfrep.c, utils.c: better implementation of writing the tar ball.
        2: windows.c: do_wupdate(): force update windows every 6th call
           implement -ignoretop -ignorebottom, inclusive buttons in 'snow'
        3: some minor adjustments in the ui
        4: snow.c: genxpmflake(): place first dot indeed in the middle (0,0)
           and not in a corner
           simplemake.sh: correct call to toascii.sh
        5: windows.c: do_wupdate(): force update windows every 10th call
           xsnow.h: re-evaluated timings
           scenery.c: add ClearScreen() in do_initbaum()

version 3.3.5
        1: docs.c: document XFCE compositing requirement
        2: implemented -selfrep
           adapted simplemake.sh

version 3.3.4
        1: flags.c: remove dependency from libxml2, .xsnowrc has now different
           main.c: add check for existing colors for TreeColor, BirdsColor and 
           doit.h: change colors "snow" and "chartreuse" into hex
           scenery.c: scenery_init(): sanitize Flags.TreeType

version 3.3.3
        1: add metainfo: data/xsnow.appdata.xml
           mv src/xsnow.desktop to data/xsnow.desktop
           add flag '-b' to awk in gen_ui_xml.sh
        2: implement flag -changelog
           add some old ChangeLogs, found in the README of version 1.42
           gen_ui_xml.sh: remove flag '-b' from awk ('-b' only valid for gawk)
               return exit code of awk command
        3: docs.c: document xcompmgr problem
           scenery.c: explicit convert (myScale*w+2) and (myScale*h+2)
             to int, to keep g++ happy.
           dependencies: made up-to-date
           simplemake.sh: made up-to-date
           moon.c: add #include <stdlib.h> for drand48

version 3.3.2
        remove redundant files maketar, makectags

version 3.3.1
        1:fix issues with LXDE desktop and xscreensaver

version 3.3.0
        1:replace transparent.{c,h} with maketrans.{c,h}
          add overall scale factor
          all drawings using cairo
          use xdbe (double buffer) when not using cairo
          moon and birds also when painting on root window
        45: doit.h:default followsanta = 0
            windows.c: do not snow on window with exactly width=SnowWinWidth, x=0, y<100
        47: sanitize scenery.c with respect to color of the vintage tree

version 3.2.3
        1:minor adaption in simplemake.sh
         :make use of VERSION in config.h
          adapt simplemake.sh 
        6:ixpm.c: correct stupid bug in xpm_set_color()
        7:remove UNUSED
        9:extended range of XSelectInput somewhat
          change timing of do_wupdate to look more frequently if 
          something has changed

version 3.2.2
        1:change 'changes' into Flags.Changes
        2:change gdkwindow -> NULL, several files
          ui.c: better behaviour of 'below windows' - 'confirm to click'
        3:flags.c flags.h: separate FLAGS for default and vintage
          docs.c: some minor additions
        4:buttons.h: change togglecode into scalecode
          flags.h uitils.h: transport some macro's
          ui.c: add documentation about flags and buttons
          main.c: optionally move windows to 0,0 (movewindow())
            Flags.MoveWindow --movewindow
        5:some tweaks MoveWindow
        6:more tweaks for MoveWindow
          Use also XConfigureWindow to set below or above. Now behaviour is
          OK when running in FVWM + xcompmgr or compton
          transparent.c: fixed 'show desktop' issue by re-adding:
          wmctrl.c: add check for _NET_SHOWING_DESKTOP for visibility of
          windows.c: keep SnowWin below if Flags.BelowAll. Needed when SnowWin
            is not click-through.
        7:add -theme flag. No button: too complicated for me.
        9:make theme chooseable with a button
        11:ui.c: minor tweaks

version 3.2.1
        1:utils.h: add fflush(NULL) to UIDO and UIDOS
          moon.c: create halo surface for painting.
        2:fine tuning of ui graphics
        3:start simplifying ui.c
        11:finished 3:
        12:doit.h flags.h: change DOIT macro's
        13:docs.c:make it better
        14:add option -hidemenu, add this to xsnow.desktop
           better format noisy output
           use #include "undefall.inc" to undef frquently used macros
        15:simplify glade-id's
        16:stratify ui.c code
        17:stratify ui.c code
        18:stratify ui.c code

version 3.2.0
        1:use 256x256 xpm for moon
          start Santa, aware of moon position
          adapt some trivial texts
        2:add halo around moon
          add show-stars button
          add grey-out for moon buttons if not compositing manager
          add notice about that in the celestials tab
        3:fix bug in moon.c: show moon, independent of birds
          some experiments with halo colours
        4:moon.c: fix memory leak: halo_draw()
          docs.c: adapt man page
          ui.c: better way to grey out moon buttons 
          configure.ac: remove test for alloca, and tell kdtree.c not to use
        6:ui.c: remove malicious assert from report_tree_type()
          utils.h: create macros UIDO and UIDOS to better deal with
            if(Flags.x != OldFlags.x) ....
          many functions: replace construct above with UIDO or UIDOS
        7:Ack in man page for picture of moon.

version 3.1.10
        1:add moon and show-noshow for moon
        2:put wind, stars, moon, meteorites in celestials
          add slider for moon speed
        3:add button for moon size
        4:let Santa like to hover the moon

version 3.1.9
        1:place 'Xsnow running' to a place wher this does not appear in
          xsnow -h or xsnow-H
        2:wmctrl.c: a second check if window is hidden, based on WM_STATE
          see: https://tronche.com/gui/x/icccm/sec-4.html#s-
        3: typos in docs.c
        5:wmctrl.c: use XQueryTree to find windows to snow on if
          _NET and _GTK are not available.
          Use also XGetWindowAttributes to determine if a window
          is visible.
        6:change max number of scenery items to 60
          wmctrl.c: use XGetWindowAttributes in stead of XGetGeometry

version 3.1.8
        1:use config.h to determine if alloca.h should be included
          configure.ac, Makefile.am: use pkg-config to locate 
          X11, Xpm, xt, xproto
        2:configure.ac: remove tests for libraries, relying on pkg-config now
        3:remove uses of alloca, except ik kdtree.c
          define USE_LIST_NODE_ALLOCATOR and  NO_ALLOCA in kdtree.c
          remove USE_LIST_NODE_ALLOCATOR from Makefile.am
          snow.c: free local variables in genxpmflake()

version 3.1.7
        1:windows.c: take care of redfining Rootwindow if xscreensaver
          is detected
version 3.1.6
        1:add xscreensaver support and vroot.h
version 3.1.5
        1:remove .png and .jpg from bootstrap and src/Pixmaps/ from tar.gz
        2:main.c drawit(): draw stars and meteorites behind birds
        3:fallensnow.c: GenerateFlakesFromFallen(): reduce the amount of
             generated snow 
          Changed info text by 'Blow off' slider.
        4:src/Makefile.am: separate scripts for generating ui_xml.h and
          Create script 'simplemake.sh', to be used on systems where the
            './configure;make;make install' suite does not work.
version 3.1.4
           configure.ac (see comment there)
          Checked all malloc's, alloca's and realloc's for allocating >0 bytes
version 3.1.3
        1:add flag -showrudolph
          add flag -blowsnow
          remove FullScreen from .xsnowrc
          add flag -usebg
          add flag -snow
          add flag -nosnow
          add flag -showtrees
          add flag -wind
          add flag -keepsnowonwindows
          add flag -keepsnowonscreen
          add flag -keepsnowontrees
          add flag -keepsnow
          add flag -fluffy
          add flag -meteorites
          stratified version.h
          moved PrintVersion to utils.c
version 3.1.2
        1:hashtable.cpp: do not use 'auto'
          docs.c: added note about no menu when files are present in
          Check on version of GTK. If too low, give option to start
            without ui.
        2:simplify code for running without menu if level of GTK is too low
        3:stratify above mentioned code
version 3.1.1
        moved debian stuff out of the distribution
version 3.1.0
        1:change version number
          some trivia in transparent.c
        2:take care that only generated flakes are used when snow->defaults
        3:snow flakes size adjustable
        4:limit snowsize
          start snowflake always above window
          all generated snow xpm's: width multiple of 8
          also all off the vintage xpm's in Pixmaps
          change defaults for max number of flakes and blow-off to more humane
        5:use effective width for flakes (weff in snow.c)
          small changes in GenerateFlakesFromFallen()
          it appears that the height of an xpm should be >=2 to prevent
            terrible degradation of performance. snow.c: genxpmflake()
        6:snow.h, snow.c: remove w and h from type Snow, these were redundant
        7:changed some defaults and ranges
        8:snow.c: reduce extra_flakes to 300. I have the impression that this
             is beneficial for cramped systems
          correct bug: blowoff.c: do not generate blow-off snow if Flags.NoSnowFlakes
        9:utils.c: wrapper for cairo_paint_with_alpha(). If alpha > 0.9, use
             cairo_paint(). Seems to have some performance gain (less stress
             on Xorg), but I am not sure.
          main.c: hide gtk_widget TransB when not used.
                  gray out transparency when running in fvwm-like environment
          added test2.sh for 'make check' and 'autopkgtest'
          GetCurrentWorkspace now always returns 0 if there are problems 
        10:added tests using simulated mouse clicks, test2.sh and test3.sh
           xsnow reports now which Santa is chosen, needed for 
             'make check' and autopkgtest
           in Pixmaps: changed snowtree.xpm, eland.xpm, polarbear.xpm,
              huis4.xpm, AltSanta*.xpm to use one char to encode color
              using 'convert in.xpm -colors nn out.xpm'
        11:removed references to test2.sh and test3.sh
           add flag '-noisy'
           corrected non fatal bugs in xpmtobits
           implemented 'birds follow Santa'
        12:main.c: do_display_dimensions(): restart stars etc. not in the
           first call
           add scale button for 'Lift snow windows' == OffsetY
        13:corrected handling of fluff in snow.c
           corrected: if !ShowBirds, Santa should be shown (main.c)
        14:some fine tuning snow on trees
        15:trivia in snow.h
        16:fixed serious bug in snow.c which caused freezing
           snow flakes when changing size of flakes
version 3.0.10
        1:Better icons
        2:better flakes
        3:more flakes, auto generate snow includes and macro's for pixmaps.c
        4:more flakes
        5:more flakes
          birds.c: made attraction point transparent again
          ui.xml: remove separators from snow tab
        7:get rid of snow??.xbm. Conversion from xpm is done with xpmtoxbm().
          rename snow*.xpm to flake*.xpm
        8:next to the 7 archaic flakes, generate random flakes
          changed the addcopyright.sh script to only trigger on
          the first -copyright- line
        9:some code clean up
version 3.0.9
        1:Windows.c: remove useless call to DisplayDimensions from do_wupdate()
        2:fallensnow.c xsnow.h: shorter time between updates fallensnow
          better simulation of plowing
          3:snow.c: InitFlake takes now care of inserting flake in set
            of flakes
version 3.0.8
        1:check op _NET_WIM_WINDOW_TYPE_DOCK: do not fall snow on
          such a window
        2:changed 0 -> NULL where appropriate
          insert __attribute__ ((unused)) via macro UNUSED where appropriate
        3:create GetProperty32() in wmctrl.c
        4:fallenshow.h: moved window-specific items in FallenSnow to
        6:stratify windows.c
          transparent.c: make also click-through in draw callback
        8:ask for confirmation before permanently de-activating 
          'Below windows'.
          Remove 'BelowAll' from .xsnowrc.
        9:also in Cairo fluff
        12:better display of blown snow
        13:change code for going in and out full screen mode
           default is now full screen
           transparent.c: draw1(): remember two previous widgets in stead of
           removed full-screen button, see comment at Flags.FullScreen
           in main.c
        14:Solution for refusing to go below windows: first
           ask the opposite.
        15:Use absolute x,y coordinates for determining snow window placement
           and dimensions.
           Created a call back to check coordinates and dimensions of
           snowwindow once per second.
        16:Changed css color for troughs.
           No flakes: no fallensnow, no fluff, no blowoff, no treesnow.
           Flakes blown off trees&window&bottom: smallest type of snow.
           Flakes from disappearing fallensnow: all types.
           Somewhat more randominess in generateflakesfromfallensnow
           in the x-value of the flakes. Better ploughing!
         17:yellow confirm button.
            Bigger logo santa.xpm
            Stratified MakeFlake-InitFlake combo.
            Corrected two typos in flags.c
         18:take care that trees are not placed partially right from screen
            removed -noquiet flag
version 3.0.7
        1:adapt hovertext for 'Below windows' button.
        some code-cleanup
version 3.0.6
        1:Correct some typo's
        Removed memory-leak in birds.c: birds_draw
        birds.c: birds_draw: Correct position of birds by their width and height
        2:Paint with transparency if ~Flags.BelowAll
        3:No need for restart after changing below/above
        4:introduction of transparency used by painting
        fixed bug concerning removing trees
        5:scenery.c: change definition of Tree to **Treeinfo and changed a few 
          lines accordingly
        RedrawTrees now clears fallensnow on scenery
        Change factor -> cpufactor
        fallensnow.c: HandleFallenSnow: do not collect snow on bottom when Flags.NoKeepSBot
        6:Changed actions at interrupt.
        Removed unused CleanGC
        transparent.c: simplified applying skip-taskbar-hint
                       added skip-pager-hint
version 3.0.5
        New major release
        transparent.c: Prevent icons for transparent windows showing up in taskbar
        windows.c: no update of windows if not snowing on a desktop
        DetermineWindow (windows.c): make sure IsDesktop is initialized
        SigHandler (main.c): Nicer exit after interrupt.
        Use execvp instead of execve restarting xsnow.
        Stratified some code starting from main.c: drawit
        wmctrl.c: also sticky=1 if (int)ws == -1
        Adapt for uploading to debian
        Some trivial changes to settings tab.
        Better handling of clicking BGColor button.
        Removed root window choice.
        Birds: set meanspeed before creation, not after.
        Gray out all birds buttons when appropriate
        In settings: gray out and make inactive not usable buttons
        better logic to determine what kind of windows are used
        simplified ui settings window
        transparent.c: remove sticky hint for gdkwindow: this is ierreversible
        made do_wupdate conform. Created windows.c. This is a mess, have to
        look into it.
        ui: colors, and slight layout improvements
        corrected error after going to full screen of behind windows
        removed setting of kde background (kdesetbg)
        re-instated the stopafter functionality
        ui: set colors
        added a warning for a too high system load
        convert snow_on_tree done, together with some other minor adjustments
        produce output with -h, -help, -H, -manpage, -v, -version without
            calling gtk_init()
        made parsing of flags conformant with the docs: added -v
        place test for wayland before gtk_init()
        do not draw fallensnow when window is hidden (iconized)
        blowoff in standard
        made timeout callbacks conform doc
        fallensnow in standard
        place gtk_init before handling the flags
        changed code for 'on all workspaces' (settings)
        do not collect snow if y <= 0
        implemented part of standard form for fallensnow
          todo: snow disappears now from windows that show on all workspaces
        draw stars using surfaces
        added stdlkib.h where desirable
        stars done
        some minor things in snow.c
        wind done
        meteorite done
        snow in standard form for the major part
        start with snow in standard form.
        hashtable.{cpp,h}: added set functions
        turned macro's delflake and makeflake into functions
        stratified declarations of xpm's (pixmap.(c,h}
        added snow xpm's (it seems there is no standard function to convert
           bitmap to GdkPixbuf)
        implemented canonical update of sreen, using gtk_widget_queue_draw()
        put birds in 'standard form'
        gtk-scenery working
        use timeout time at computing birds position (contrary to 3.0.3)
        Santa.c: handle usage of user-defined Santa
        if Flags.NoMenu: do not write to ui labels or make ui sticky/unsticky
        Made start with gtk-ing scenery.
        All santa stuff moved from main.c to Santa.c
        Added utils.c utils.h
version 3.0.3-gtk-0.1
        Santa runs in gtk
version 3.0.3
        birds.c: use actual time to compute bird positions instead of callback
        birds.c: make speed adjustment of birds dependent on time elapsed
        previous line: not a good idea, removed corresponding code
        birds.c: more dramatic (re)start

version 3.0.2
        If birds not on active workspace, do not updte and paint them
        Add 'extern' to all function prototypes for consistency.
        Diversify debian/copyright

version 3.0.1
        make ui stickiness same as snow and birds windows
        resolve some debian copyright issues in debian/copyright

version 3.0.0
        use wallcl()*1.0e6 to initialize drand48, not wallclock()
        mv ui.glade ui.xml
        add css to minimize ui.
        add birds page, not functioning yet.
        make xsnow compilable with g++
        adding birds ....

version 2.0.22
        xsnow.desktop: in xfce icon does not show in
          panel: change 'xsnow.xpm' into 'xsnow'
        do not show flake count when option -nomenu is given
        fixed bug: when no desktop session can be determined
          from environment: make it 'unknown_desktop_session'
           - Thanks to Xose Vazquez Perez
version 2.0.21
        attempt better layout of settings screen
        Somewhat better layout for all menus
        Rudolf -> Rudolph in displayable strings
        Show number of flakes in 'snow' tab
        Added some id's in ui.glade
version 2.0.20
        replace timing loop with g_timeout_add()
        add polarbear
        use g_get_monotonic_time() for wallclock
        give every snowflake its own g_timeout_add()
        give Santa highest priority (not that it matters much, it seems)
        Change fuse algorithm: now Updatesnowflake kills flake when number
          of flakes is above threshold
        Initsnowflake: start y above above window
        updatesnowflake: do not force y >=0
        add button for flake-count-max
        put refresh of trees in g_timeout_add()
        idem for stars
        Smooyth vertical movements of Santa
        remove nosnowarea's. Replace nosnowarea_static by TreeRegion
        reinstate nosnowarea_dynamic
        fix issue with erasing flakes that are in a tree
        if FlakeCount > max, high probabilty to remove blown-off flakes
        all scales show now numerical value
        removed -showstats option
version 2.0.19
        debian/tests/control: removed test2.sh
version 2.0.18
        main.c: test if WAYLAND_DISPLAY is set before setting GDK_BACKEND
        main.c: restart after changing display settings 
        main.c: no Thanks after man page or help
        docs.c: minor adjustments
        debug.h: added
        main.c, flags.c: do not assume getenv("HOME") works as expected.
version 2.0.17
        main.c: The output of PrintVersion() appeared in the top of the man page.
           Corrected this.
        main.c: CleanFallenArea() marked the fallensnow region always as clean,
           but this must be done only when whole x-range is cleared.
version 2.0.16
        dsimple.c: int screen = 0; -> static int screen = 0;
           and move to the top of the file. Ticket 1: gcc-10 related
          keep xsnow visible after 'show desktop', and show xsnow on all 
        wmctrl.c: special care for compiz
version 2.0.15
        ui.glade: added 'Donate' button
version 2.0.14
        src/Makefile.am: use exec_prefix in stead of prefix for gamesdir
        transparent.c: simplify creation of transparent window
        main.c: removed use of SigHupHandler 
        docs.c: corrected misspelled default values
        test1.sh: check 'xsnow -h' if default values are substituted
        main.c, ui.glade: better algorithm to determine number of flakes
            to generate
version 2.0.13
        main.c: do_genflakes(): take into account that do_genflakes()
           can be disabled by SnowRunning
        flags.c: add forgotten -alpha flag
version 2.0.12
        pixmaps.c: corrected width and height for snow.
        main.c: simplified create rectangular region
        debian/copyright: corrected
        main.c: remove flakes that fall below bottom of screen, also if
           no fallensnow on bottom
        main.c: corrected bug which coaused no snow at all with -nomenu
        Lower default snowspeed (SNOWSPEED in xsnow.h)
        update snowflakes in chunks, so that other animations run at
           desired speed.
        remove option -kde: settings are the same as for -gnome
        do not add or delete flakes when updating snowflakes
           is running (test on SnowRunning)
        for updatesanta, gensnowflakes, snowflakes: after a suspend
           or sleep the elapsed time can have a strange
           value. Take care of that.

version 2.0.10
        prepare for running in wayland by setting environment
          variable GDK_BACKEND=x11 (main.c)
        fix some typo's in docs.c

version 2.0.9
        some debian adjustments
        fix xfce problems: the workspace of the transparent
          snow window is not available in xfce
          some windows have both the _NET_FRAME_EXTENTS and
          _GTK_FRAME_EXTENTS. Priority is given to the latter.
        Snowflakes that touch fallen snow are not erased any more:
          erasure caused bad looking effects.
        Removed 'showstats' from config
version 2.0.8
        some more debian stuff
        add support for xfce desktop
version 2.0.7
        added some debian stuff
version 2.05
        Fixed issues when trees are not shown: snow was still
        collecting on trees, snow was not visible after not-shown

version 2.04
        Fixed bug in main.c: check for valid return value of 
        FindWindow() in do_wupdate().

Version 2.03
        Fixed bug in main.c: only set transworkspace if usingtrans.

Version 2.02
        Snowing halted when a workspade before the snow workspace was
        removed. Fixed by checking the workspace of SnowWin in do_wupdate().

Solved in 2.01
        tree-xpm's are mirrored randomly
        flag -treeregion implemented
        fluff on bottom in snow window when nokeepsnowonscreen
        parametrize MAXONTREES
        implement vintage
        in fvwm: after minimize window, no snow is shown on the
          window when it is restored. 
        Handle window that is visible on all workspaces
        implement no snow when window disappears
        implement nowplow
        Try to snow on trees
        plowing should be partial: only take snow away where Santa was: Won't
        stars are competing with fallen snow: let snow win: Won't fix
        Create precise region from bitmap vintage tree
        Implement nokeepsnowonwindows etc
        when wind: make generated flakes at bottom cyclic
        Solved strange behaviour with system monitor window
          and others: gedit, nautilus etc. on gnome desktop
          no problem on fvwm desktop
        find automatically desired offsets
          determine size of decoration from a partial screendump ?
          use xwininfo to point to a gauge window ?
        no rounding of edges of fallen snow at the bottom
        automatically determine tree regions
        create 'fuse': remove nearly all flakes when number is really too high
        for testing purposes: color a region see do_testing()
        read tree.xpm from ~/xsnow/pixmaps/tree.xpm if present
        let Santa plough through fallensnow: do not redraw fallen snow
           if overlap with Santa
        faster update of fallen snow after move of window
        animation of blown fallen  snow
        extra snow not cyclic
        get rid of flake.x and y, use only rx and ry
        animation of snow fallen from disappeared windows
        gracefully exit when window where is snowing in, disappears
        let trees not overlap
        fallensnow surfaces often too jerky
        round snow at the edges
        animation of do_clean
        let Santa be affected by strong wind
        replace old wind by storm now and then
        offsets for windows & bottom
        wind is changing continuously
        cyclic disappear, appear of flakes
        Solve floating point exception when starting in too small
          window (oclock) (div by 0 in RandInt)
        move to other workspace of a window: bad behaviour:
          snow stays on original workspace, window does no
          receive snow any more: see put correct workspace in fallensnow areas
          in xsnow.c
        snow on windows: implemented
        ctrl-c sometimes causes: cannot parse output of wmctrl: solved by
          letting wmctrl return -1 in case of problems

        A few minor changes after 1.42:
        changed timing loop
        find Desktop in Gnome and KDE
        can run in user-pointed window (-xwininfo)
        added another kind of tree
        added starts
        added meteorite
        changed algorithm for fallen snow
        and some more ...

version 1.42 
        Xsnow now works with KDE
version 1.41 
        -santaupdatefactor, fix for X-servers that use backing store, new
          Santa by Thomas Linder
version 1.40 
        -solidbg for improved performance, memory leak fixed.
version 1.39 
        usSleep fixed for VMS. Bug resulted in using too much resources.
version 1.38 
        Santa is a real snow plough now.
version 1.37 
        Offset for certain window managers like twm, nokeepsnowonwindows
        and nokeepsnowonscreen are back.
version 1.35 
        Snow really builds up on windows now, and does not snow on pop-ups.
version 1.32 
        unsigned long snowDelay changed to long, as strtoul is troublesome
version 1.31 
        Make.com and xsnow.hlp for VMS
version 1.30 
        Performance improved. Wind.
version 1.27 
        Bug with erasing snow on top of windows removed
        Erasing of snow at bottom of screen improved in case of expose event
version 1.25 
        Rudolf's red nose. Silly. Grmbll.
        Bug with -nokeepsnowonwindows removed
version 1.24 
        Deleted PaintSnowAtBottom. It's more of a surprise this way.
        Bug removed with windows off-screen to the left
version 1.23
        Aaaargh! gnu C doesn't like the initialization of the new
        Santa pixmaps. Extra braces do the trick, which is so often the case
version 1.22
        Really building up snow at bottom of screen
        A choice of Santa's. Thanks to Holger Veit (Holger.Veit@gmd.de)
        for Santa no. 2. Santa 1 was derived from 2 by scaling down.