|
This catches up to a maintained version, almost 20 years later. Most
notably, it uses gtk3 instead of raw Xlib.
Joint work with is@.
Upstream changes:
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'
combo
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 documention 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:
gdk_window_set_type_hint(gdk_window,GDK_WINDOW_TYPE_HINT_DOCK);
wmctrl.c: add check for _NET_SHOWING_DESKTOP for visibility of
windows
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
alloca
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-4.1.3.1
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
snow_includes.h
Create script 'simplemake.sh', to be used on systems where the
'./configure;make;make install' suite does not work.
version 3.1.4
1:remove AC_FUNC_MALLOC AC_FUNC_REALLOC AC_FUNC_ALLOCA from
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
$HOME/xsnow/pixmaps
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
numbers
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 seperators 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
FallenSnow.win
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
one.
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
version 3.0.4.30
Some trivial changes to settings tab.
Better handling of clicking BGColor button.
Removed root window choice.
Birds: set meanspeed before creation, not after.
version 3.0.4.29
Gray out all birds buttons when appropriate
version 3.0.4.28
In settings: gray out and make inactive not usable buttons
version 3.0.4.27
better logic to determine what kind of windows are used
simplified ui settings window
version 3.0.4.21
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.
version 3.0.4.20
ui: colors, and slight layout improvements
corrected error after going to full screen of behind windows
removed setting of kde background (kdesetbg)
version 3.0.4.19
re-instated the stopafter functionality
ui: set colors
version 3.0.4.18
added a warning for a too high system load
version 3.0.4.17
convert snow_on_tree done, together with some other minor adjustments
version 3.0.4.16
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)
version 3.0.4.15
blowoff in standard
made timeout callbacks conform doc
version 3.0.4.14
fallensnow in standard
version 3.0.4.13
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
version 3.0.4.12
draw stars using surfaces
version 3.0.4.11
added stdlkib.h where desirable
version 3.0.4.10
stars done
version 3.0.4.09
some minor things in snow.c
version 3.0.4.08
wind done
version 3.0.4.07
meteorite done
version 3.0.4.06
snow in standard form for the major part
version 3.0.4.05
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()
version 3.0.4.03/4
put birds in 'standard form'
version 3.0.4.02
gtk-scenery working
use timeout time at computing birds position (contrary to 3.0.3)
version 3.0.4.01
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.
version 3.0.3.01
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
time
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
transparent.c:
keep xsnow visible after 'show desktop', and show xsnow on all
desktops
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 subtituted
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
tree.
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
fix
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
2019-01
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
nosnowarea's
and some more ...
|