xsnow - Snow and Santa on your desktop
Xsnow shows an animation of Santa and snow on your desktop. Xsnow
can also run in one or more windows, see options -xwininfo, -id . (These
options only work satisfactorily in an X11 environment.) Xsnow depends on an
X11 environment. This is forced by setting the environment variable
GDK_BACKEND=x11 before initializing the GTK. Hopefully, this will ensure
that xsnow also runs in a Wayland environment for some time.
If xsnow is misbehaving, try to remove the file
$HOME/.xsnowrc.
Below:
<n> denotes an unsigned decimal (e.g 123) or octal (e.g. 017) or hex
(e.g. 0x50009) number.
<c> denotes a string like "red" or "#123456".
<f> denotes a file name, like
"/home/rick/Pictures/background.jpg".
- -h, -help
- print this text.
- -H, -manpage
- print man page.
- -v, -version
- prints version of xsnow.
- -changelog
- prints ChangeLog.
- -selfrep
- put tar ball on stdout, so you can do:
xsnow -selfrep > xsnow.tar.gz
- -display
<c>
- Drop the snowflakes on the given display. Make sure the display is nearby,
so you can hear them enjoy...
- -screen
<n>
- If you have multiple monitors: snow in monitor n.
-1: use all monitors (default: -1)
Note: for this to work, Xinerama has to be functional.
- -outline
<n>
- 1: draw outline around snow window. 0: no outline.
Default: 0.
- -vintage
- Run xsnow in vintage settings.
- -defaults
- Do not read config file (see FILES).
- -noconfig
- Do not read or write config file (see FILES).
- Start with hidden interactive menu.
- Do not show interactive menu.
- -scale
<n>
- Apply scalefactor (default: 100).
- -doublebuffer
<n>
- 1: use double buffering; 0: do not use double buffering (default: 1). Only
effective with '-root' or '-id' or '-xwininfo'.
- -transparency
<n>
- Transparency in % (default: 0)
- -theme
<n>
- 1: use xsnow theme for menu; 0: use system theme (default: 1)
- -checkgtk
<n>
- 0: Do not check gtk version before starting the user interface. 1: Check
gtk version before starting the user interface. (default: 1).
- -id <n>, -window-id
<n>
- Snow in window with id (for example from xwininfo).
- -desktop
- Act as if window is a desktop.
- -allworkspaces
<n>
- 0: use one desktop for snow, 1: use all desktops (default: 1).
- -above
- Snow above your windows. Default is to snow below your windows. NOTE: in
some environments this results in an un-clickable desktop.
- -xwininfo
- Use a cursor to point at the window you want the snow to be fallen
in.
- -stopafter
<n>
- Stop xsnow after so many seconds.
- -root
- Force to paint on (virtual) root window.
Use this for xscreensaver:
Make sure xscreensaver is running, either as a start-up application
or from the command line, e.g:
nohup xscreensaver &
or
nohup xscreensaver -no-capture-stderr &
Run the program xscreensaver-demo to create the file ~/.xscreensaver
In the file ~.xscreensaver add after the line 'programs:' this line:
xsnow -root
Use the program xscreensaver-demo to select xsnow as screensaver.
You probably want to select: Mode: Only One Screen Saver.
- -bg <f>
- file to be used as background when running under xscreensaver.
- -noisy
- Write extra info about some mouse clicks, X errors etc, to stdout.
- -cpuload
<n>
- How busy is your system with xsnow: the higher, the more load on the
system (default: 100).
- -treetype
<n>[,<n> ...]
- Choose tree types: minimum 0, maximum 7 (default: 1,2,3,4,5,6,7,). Thanks
to Carla Vermin for numbers >=3! Credits: Image by b0red on
Pixabay.
- -treetype
all
- (Default) Use all non-vintage available tree types.
- -tc <c>
- Use the given string as the color for the vintage tree (default: #7fff00).
Works only for treetype 0.
- -notrees
- Do not display the trees.
- -showtrees
- (Default) Display the trees.
- -trees
<n>
- Desired number of trees. Default 10.
- -treefill
<n>
- Region in percents of the height of the window where trees grow (default:
30).
- -treeoverlap
- Allow scenery items to overlap each other (default).
- -notreeoverlap
- Do not allow scenery items to overlap each other.
- -showsanta
- (Default) Display Santa running all over the screen.
- -nosanta
- Do not display Santa running all over the screen.
- -showrudolph
- (Default) With Rudolph.
- -norudolph
- No Rudolph.
- -santa
<n>
- The minimum size of Santa is 0, the maximum size is 4. Default is 3.
Thanks to Thomas Linder for the (big) Santa 2! Santa 3 is derived from
Santa 2, and shows the required eight reindeer. The appearance of Santa 4
may be a surprise, thanks to Carla Vermin for this one.
- -santaspeedfactor
<n>
- The speed Santa should not be excessive if he doesn't want to get fined.
The appropriate speed for the Santa chosen will be multiplied by
santaspeedfactor/100 (default: 100).
- -wind
- (Default) It will get windy now and then.
- -nowind
- By default it gets windy now and then. If you prefer quiet weather specify
-nowind.
- -whirlfactor
<n>
- This sets the whirl factor, i.e. the maximum adjustment of the horizontal
speed. The default value is 100.
- -windtimer
<n>
- With -windtimer you can specify how often it gets windy. It's sort of a
period in seconds, default value is 30.
- -stars
<n>
- The number of stars (default: 20).
- -meteors
- (Default) Show meteors.
- -nometeors
- Do not show meteors.
- -meteorfrequency
- Frequency of falling of meteors, 0..100 (default: 40).
- -moon
<n>
- 1: show moon, 0: do not show moon (default: 1).
Picture of moon thanks to Pedro Lasta on Unsplash.
https://unsplash.com/photos/wCujVcf0JDw
- -moonspeed
<n>
- Speed of moon in pixels/minute (default: 120).
- -moonsize
<n>
- Realtive size of moon (default: 100).
- -halo
<n>
- 1: show halo around moon, 0: do not show halo (default: 1).
- -halobrightness
<n>
- Brightness of halo (default: 25).
- -aurora
<n>
- To show (1) or not to show(0) aurora (default: 1).
On most desktops aurora works, but not on all. Try!
- -auroraleft
- Place aurora in top left of screen.
- -auroramiddle
- Place aurora in top middle of screen.
- -auroraright
- Place aurora in top right of screen (default).
- -aurorawidth
<n>
- Width of aurora in percentage of screen width (default: 60).
- -aurorabase
<n>
- Height of aurora's base line in percentage of screen height (default:
50).
- -auroraheight
<n>
- Height of aurora (default: 30).
- -auroraspeed
<n>
- Animation speed of aurora (default: 50).
10: about real value, 100: timelapse.
- -aurorabrightness
<n>
- Brightness of aurora (default: 15).
- -wsnowdepth
<n>
- Maximum thickness of snow on top of windows (default: 30).
- -ssnowdepth
<n>
- Maximum thickness of snow at the bottom of the screen (default: 50).
- -maxontrees
<n>
- Maximum number of flakes on trees. Default 200.
- -keepsnowonwindows
- (Default) Keep snow on top of the windows.
- -nokeepsnowonwindows
- Do not keep snow on top of the windows.
- -keepsnowonscreen
- (Default) Keep snow at the bottom of the screen.
- -nokeepsnowonscreen
- Do not keep snow at the bottom of the screen.
- -keepsnowontrees
- (Default) Keep snow on trees.
- -nokeepsnowontrees
- Do not keep snow on trees.
- -keepsnow
- (Default) Have snow sticking anywhere.
- -nokeepsnow
- Do not have snow sticking anywhere.
- -fluffy
- (Default) Create fluff on fallen snow.
- -nofluffy
- Do not create fluff on fallen snow.
- -offsetx
<n>
- Correction for window-manager provided x-coordinate of window. Default
4.
- -offsety
<n>
- Correction for window-manager provided y-coordinate of window. Default
0.
- -offsetw
<n>
- Correction for window-manager provided width of window. Default -8.
- -offsets
<n>
- Correction for bottom coordinate of your screen. A negative value lifts
the xsnow screen up. Default 0.
- -ignoretop
<n>
- Do not collect snow on window > 0.8*width of screen and closer than
<n> pixels from the top. Sometimes an hidden window is sitting
there, but treated as a normal window by xsnow. Default 0.
- -ignorebottom
<n>
- Analog to -ignoretop, but now for the bottom. Default 0.
- $HOME/.xsnowrc
- Settings are read from and written to this file. See flags -noconfig and
-defaults how to influence this behaviour.
NOTE: the following settings are not read or written:
-above -defaults -desktop -fullscreen -noconfig -id
-nomenu -stopafter -xwininfo -display -noisy -checkgtk
- $HOME/xsnow/pixmaps/tree.xpm
- If present, xsnow will try this file for displaying the trees. The format
must be xpm (X PixMap) format, see https://en.wikipedia.org/wiki/X_PixMap
.
NOTE: when this file is present, no menu will appear.
- $HOME/xsnow/pixmaps/santa<n>.xpm
- where <n> = 1,2,3,4. If present, xsnow will try this files (4 of
them) for displaying Santa. The format must be xpm (X PixMap) format, see
https://en.wikipedia.org/wiki/X_PixMap .
NOTE: when these files are present, no menu will appear.
$ xsnow -defaults # run with defaults.
$ xsnow # run using values from the config file.
$ xsnow -treetype 1,2 # use tree types 1 and 2.
In general, xsnow works better when using a compositing window
manager like xcompmgr, compton or picom. However, with some window managers
(FVWM for example), the xsnow-window is transparent, but not click-through.
Flags to be tried in this case include: -root, -doublebuffer, -xwininfo,
-id.
Here follow some window managers with their issues:
- Tiling window
managers
- Here you need to float windows with class=Xsnow.
- AWESOME
- Without compositor: no issues.
With compositor: no click-through xsnow window, and issues with
multi-monitor setup.
- BSPWM
- No issues if you add to your bspwmrc (the bspwm configuration file):
bspc rule -a Xsnow state=floating border=off
- CINNAMON
- No issues.
- DWM
- No issues, except the "Below Windows" setting in the
"settings" panel.
- ENLIGHTENMENT
- With one monitor: no issuses.
With more montors: probems with showing in 'all monitors'
- FLUXBOX
- Without compositor: no issues.
With compositor: no click-through xsnow window
- FVWM
- Without compositor: no issues.
With compositor: no click-through xsnow window
- GNOME on
Xorg
- No issues.
- GNOME on
Wayland
- Most windows don't catch snow.
- HERBSTLUFTWM
- No issues.
- I3
- Without compositor: windows don't catch snow, use the next line in
"config":
for_window [class="Xsnow"] floating enable;border none
With compositor: unworkable.
- JVM
- No issues.
- LXDE
- With compositor: no issues.
Without compositor: works with one monitor.
Maybe you need to run with the flag -xwininfo
- LXQT
- Without compositor: unworkable. With compositor: no issues.
- MATE
- No issues.
- OPENBOX
- No issues.
- PLASMA
(KDE)
- No issues.
- SPECTRWM
- Various issues. In any case you need in spectrwm.conf:
quirk[Xsnow] = FLOAT
- TWM
- Without compositor: no issues.
With compositor: no click-through xsnow window and
you need to tweak settings->lift snow on windows.
- WINDOW
MAKER
- Without compositor: no issues. With compositor: no click-through xsnow
window
- XFCE
- No issues when compositing is on, unworkable when compositing is off.
See settings -> Window Manager Tweaks -> Compositor
- XMONAD
- No issues if you add to your xmonad.hs:
import XMonad.Hooks.EwmhDesktops
xmonad $ ewmh $ defaultConfig
in the ManageHook section:
className = ? "Xsnow" --> doFloat
- Xsnow needs a complete rewrite: the code is a mess.
- The flags are not consistent, caused by trying to be
compatible with older versions.
- Xsnow stresses the Xserver too much.
- Xsnow does run in Wayland, but will not snow on all windows.
- Xsnow tries to create a click-through window. This is not successful
in for example FVWM/xcompmgr. In that case, xsnow tries to keep
the snow window below all others, resulting in a transient effect
when you click on the desktop. Sadly, no FVWM menu will appear...
- Remnants of fluffy snow can persist after removing the
fallen snow. These will gradually disappear, so no big deal.
- Remnants of meteors can persist after passage of Santa.
These will eventually be wiped out by snow or Santa.
- Xsnow tries to adapt its snowing window if the display
settings are changed while xsnow is running.
This does not function always well.
- Xsnow does not play well with 'xcompmgr -a'. In some environments
(Raspberry 64 bit) xcompmgr is started with the flag '-a',
resulting in a black snow window. Remedy:
In a terminal window type:
killall xcompmgr
nohup xcompmgr -n &
and try again.
- In XFCE, compositing must be enabled for xsnow.
Settings -> Window Manager Tweaks -> Compositor -> Enable display
compositing
- In multi-screen environments, it depends on the display settings
if it is snowing on all screens. Experiment!
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.