Is there any way to let it snow on my linux mint destkop?

Use xsnow after having killed the desktop application that covers the root window. Run xkill and click on the desktop. That works at least in LXDE where pcmanfm usually handles the desktop, but should work in other environments as long as they don't require there being a desktop window in the background and don't restart it automatically when it dies.


I thought that a lua script (started by Conky) would be a good tool for this job. There's loads of conky examples on the internet (e.g. here and here), which could be used to make it snow on your desktop only when it's snowing outside, for example.

I saw on a forum that some guy had posted some video tutorials on how to write a lua script for fireworks as well as snow, but unfortunately he's taken them down from YouTube...

There is however some leftover code that could be used as a template, but unfortunately doesn't work in isolation.

If I had the time and inclination to learn lua and fix this myself, here's what I'd do:

  1. Install conky. Mint probably has it in its package manager.
  2. Save that snowfall fragment somewhere (e.g. ~/.conky/lua/snowfall.lua)
  3. Add the following lines to ~/.conkyrc

    lua_load /path/to/home/.conky/lua/snowfall.lua
    lua_draw_hook_pre snowday

  4. Run conky. Look for errors, and debug / comment lines out / add functions where necessary...

This is the basics of the snowday function, as usable by conky. I'd love to see this work actually!
What's missing? The timer and Vector classes, at least..

function conky_snowday()
    timer.Stop("fuller")

    local emt2 = ParticleEmitter(Vector(0,0,400))
        timer.Create("fuller", 0.1, 0, function()
        for i=1, 1000 do
            local snowparty = emt2:Add("particle/snow",LocalPlayer():GetPos() + Vector(0,0,1000))
            snowparty:SetVelocity(Vector(math.random(-700,700),math.random(-700,700),math.random(-300,-100)))
            snowparty:SetDieTime(4)
            snowparty:SetStartAlpha(0)
            snowparty:SetEndAlpha(255)
            snowparty:SetStartSize(5)
            snowparty:SetEndSize(math.random(0,3))
            snowparty:SetColor(255,255,255)
            snowparty:SetRoll(math.random(0,360))
            end
        end)
    emt2:Finish()
end