XSNOW(6)

πŸ’– XSNOW(6) πŸ’–

User Commands β€” yeah bestie, this is the manual page for xsnow, section 6, and honestly? it's the cutest thing in the whole manual. Santa. Snow. On your actual desktop. πŸŽ…β„οΈ


✨ NAME ✨

xsnow β€” Snow and Santa on your desktop πŸŽ€πŸ¦‹


πŸŽ€ SYNOPSIS πŸŽ€

xsnow [OPTION]...

πŸ’… DESCRIPTION πŸ’…

xsnow shows an animation of Santa and snow on your desktop. like, literally, Santa running around on top of your windows while it snows. iconic behavior, no notes. ✨

xsnow can also run in one or more windows β€” see the options -xwininfo and -id. (Heads up though: these options only work satisfactorily in an X11 environment. iykyk.) 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. (not me deleting my own config to fix my life 😭 but okay, slay.)

🌈 General options 🌈

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.
  • -config <f> β€” use <f> as config file, default is '.xsnowrc'. If <f> does not start with '/', <f> is taken relative to your HOME directory. <f> MUST contain the string 'xsnow'. Examples:
.myxsnowrc          # will expand to '$HOME/.myxsnowrc'.
.config/xsnow       # will expand to '$HOME/.config/xsnow'.
/etc/default/xsnow  # will be used as is.
  • -display <c> β€” Drop the snowflakes on the given display. Make sure the display is nearby, so you can hear them enjoy... πŸ”‰ (yes, fr, that's what it says.)
  • -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. πŸ•°οΈ aesthetic.
  • -defaults β€” Do not read config file (see FILES).
  • -noconfig β€” Do not read or write config file (see FILES). not even a little.
  • -hidemenu β€” Start with hidden interactive menu.
  • -nomenu β€” Do not show interactive menu.
  • -lang <c> β€” Set language, example: -lang it, see LANGUAGES below. Default: sys.
  • -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).
  • --window-id <n> β€” see -id.
  • -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. πŸ’€ so like, cute but you can't click anything. choose wisely.
this next one has lore, so buckle up.
  • -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, --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 ~.xsnowrc 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).
  • -screenshot <n> β€” 1: use screenshots to find the windows, 0: use X11 (default: 0).

❄️ Snow options ❄️

  • -snowflakes <n> β€” The higher, the more snowflakes are generated per second. Default: 100. 🌨️
  • -blowsnow β€” (Default) Animate blow-off snow.
  • -noblowsnow β€” Do not animate blowing snow from trees or windows
  • -sc <c> β€” Use the given string as color for the flakes (default: #fffafa).
  • -sc2 <c> β€” Use the given string as second color for the flakes (default: #87ceff).
  • -enablesc2 <n> β€” 1: enable usage of second color for the flakes (default: 0).
  • -snowspeedfactor <n> β€” Multiply the speed of snow with this number/100 (default: 100).
  • -snowsize <n> β€” Set size of (non-vintage) snow flakes (default: 8).
  • -snow β€” (Default) Show snow.
  • -nosnow, -nosnowflakes β€” Do not show snow. πŸš«β„οΈ
  • -flakecountmax <n> β€” Maximum number of active flakes (default: 300).
  • -blowofffactor <n> β€” The higher, the more snow is generated in blow-off scenarios (default: 40).

🌲 Tree options 🌲

  • -treetype <n>[,<n> ...] β€” Choose tree types: minimum 0, maximum 8 (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).
  • -treescale <n> β€” Scale scenery (default: 100).
  • -treeoverlap β€” Allow scenery items to overlap each other (default).
  • -notreeoverlap β€” Do not allow scenery items to overlap each other.
  • -xmastrees <n> β€” Around Xmas: Show replace n scenery items with a nice Xmas-tree. Default 1. Thanks to Mujhaid Wakeel. 🎁

πŸŽ… Santa options πŸŽ…

  • -showsanta β€” (Default) Display Santa running all over the screen. main character energy, honestly.
  • -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).
  • -santascale <n> β€” The scale to be used when drawing Santa (default: 100).

πŸŒ™ Celestial options πŸŒ™

  • -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: 40). ⭐
  • -starsize <n> β€” Relative size of stars, default value is 50.
  • -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).
  • -moonx <n> β€” Horizontal position of moon (only if speed = 0) (default: 50).
  • -moony <n> β€” Vertical position of moon (only if speed = 0) (default: 20).
  • -moonsize <n> β€” Relative size of moon (default: 100).
  • -mooncolor <n> β€” Color of moon 0: yellow-ish; 1: white-ish (default: 0).
  • -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! 🌈
that last note is literally a dare, bestie. go try it.
  • -aurorax <n> β€” Place aurora horizontally in percents of screen-width (default: 50).
  • -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).

🧊 Fallen snow options 🧊

  • -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> β€” a lil correction for the x-coordinate of the window that your window manager hands over. Default: 4.
  • -offsety <n> β€” same energy, but for the y-coordinate your window manager gives us. Default: 0.
  • -offsetw <n> β€” correction for the width of the window. Default: -8.
  • -offsets <n> β€” correction for the bottom coordinate of your screen. A negative value lifts the xsnow screen up. Default: 0.
  • -ignoretop <n> β€” don't let snow collect on windows that sit closer than <n> pixels from the top. Sometimes there's a hidden window lurking up there and xsnow treats it like a totally normal window (rude of it, honestly). Default: 0.
  • -ignorebottom <n> β€” literally the -ignoretop of the bottom edge. Default: 0.

Birds options

okay bestie, this is the bird section and it is so much. πŸ¦…

  • -anarchy <n> β€” anarchy factor (0..100, default: 50).
  • -birdscolor <c> β€” use the given string as color for the birds (default: #361A07).
  • -birdsonly <n> β€” show only birds (0/1, default: 0).
  • -birdsspeed <n> β€” speed of birds (0..300, default: 100).
  • -disweight <n> β€” how eager they are to keep their desired distance (0..100, default: 20).
  • -focuscentre <n> β€” eagerness to fly to the focus (0..300, default: 100).
  • -followneighbours <n> β€” eagerness to follow neighbours (0..100, default: 30).
  • -nbirds <n> β€” number of birds (0..400, default: 20).
  • -neighbours <n> β€” number of neighbours to watch (0..20, default: 7).
  • -prefdistance <n> β€” preferred distance to neighbours (0..100, default: 40).
  • -showbirds <n> β€” show birds (0/1, default: 1).
  • -showattr <n> β€” show attraction point (0/1, default: 0).
  • -attrspace <n> β€” vertical space to be used by the attraction point (default: 40).
  • -followsanta <n> β€” birds like Santa (0/1, default: 0).
  • -viewingdistance <n> β€” viewing distance (0..95, default: 40).
  • -birdsscale <n> β€” scalefactor used painting the birds (default: 100).

🌍 LANGUAGES 🌍

Xsnow comes with some translations to non-english languages. The translations are done with the aid of translate.google.com (implemented in package 'trans'), so there will be room for improvement. Any suggestions are welcome: contact@ratrabbit.nl .


πŸ“ FILES πŸ“

  • $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
NOTE: the file also contains the screen locations of a number of buttons, which can be used for testing purposes.
  • $HOME/.xsnowstop β€” Xsnow checks regularly the existence of this file. If present, xsnow will remove the file and stop. πŸ‘‹
  • $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 .
  • $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: To show: activate the first Santa in the menu.

πŸ“‘ SIGNALS πŸ“‘

On receiving the SIGUSR1 signal, xsnow writes the file ~/.xsnowrc.


✨ EXAMPLES ✨

$ xsnow -defaults        # run with defaults.
$ xsnow                  # run using values from the config file.
$ xsnow -treetype 1,2    # use tree types 1 and 2.

πŸͺŸ WINDOW MANAGER ISSUES πŸͺŸ

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: icons in snow window disappear.

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

πŸ’€ BUGS πŸ’€

ngl this list is long but every single one is real, bestie:

  • 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...
  • 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
  • Depending on the window manager, snowing in 'all monitors' results in snowing in one of the monitors. This happens for example in KDE.
  • In multi-screen environments, it depends on the display settings if it is snowing on all screens. Experiment!
  • No snow on windows with 'desktop' or 'Desktop' in the name.
  • In multi-screen environments, it depends on the window manager if panels remain visible when running on 'all monitors'.

Please report your comments via: https://ratrabbit.nl/ratrabbit/contact .


🏠 HOMEPAGE 🏠

https://ratrabbit.nl/ratrabbit/xsnow


This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


okay that's the whole thing, you made it to the end, icon behavior fr fr πŸŽ€ this was xsnow-3.9.4 from 2026, filed under XSNOW(6) β€” now go forth and make it snow, periodt πŸ’…β„οΈ

πŸ“¦ where this page comes from