Skip to content

๐ŸŒธ Improved little plugin that can be used as a screensaver and on your dashboard

License

Notifications You must be signed in to change notification settings

igorktech/rain.nvim

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

74 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒง๏ธ Rain

Fun little plugin that can be used as a screensaver and on your dashboard.

Rain demo

Features

  • Automatically enables/disables on these dashboard plugins:
  • Runs as a screen-saver when there is no activity for a specified amount of time.
  • Holiday theme switcher with default holidays that can be overridden.

Full video (MP4)

Available Themes

Currently, the following default themes are available:

  1. april_fools - ๐Ÿคก, ๐ŸŽญ, ๐Ÿƒ, ๐ŸŽ‰, ๐Ÿ˜‚, ๐Ÿ™ƒ, ๐ŸŽˆ, ๐ŸŽ, ๐Ÿคฃ, ๐Ÿ˜œ
  2. arcade - ๐ŸŽฎ ๐Ÿ•น๏ธ ๐Ÿ‘พ ๐Ÿ’พ โš”๏ธ ๐Ÿ›ก๏ธ ๐Ÿฐ
  3. art - ๐ŸŽจ ๐Ÿ–ผ๏ธ ๐Ÿ–Œ๏ธ ๐ŸŽญ ๐ŸŽถ ๐Ÿ“š ๐Ÿ–‹๏ธ
  4. bakery - ๐Ÿž ๐Ÿฅ– ๐Ÿฅ ๐Ÿฉ ๐Ÿฐ ๐Ÿง ๐Ÿช
  5. beach - ๐ŸŒด ๐Ÿ–๏ธ ๐Ÿน ๐ŸŒ… ๐Ÿ„ ๐Ÿš ๐ŸŒž
  6. binary - 0, 1
  7. blood - โฆ, ๐Ÿฉธ, โข, โ—, ยท, โšฐ๏ธ, ๐Ÿ’€, ๐Ÿฉธ, โšฑ๏ธ, ๐Ÿซ€
  8. bugs - ๐Ÿž, ๐Ÿœ, ๏ฟฝ๏ฟฝ, ๐Ÿฆ—, ๐Ÿ•ท๏ธ, ๐Ÿ•ธ๏ธ, ๐Ÿ›
  9. business - ๐Ÿ’ผ, ๐Ÿ–Š๏ธ, ๐Ÿ“ˆ, ๐Ÿ“‰, ๐Ÿ’น, ๐Ÿ’ฒ, ๐Ÿข
  10. candy - ๐Ÿฌ ๐Ÿญ ๐Ÿซ ๐Ÿฉ ๐Ÿฐ ๐Ÿง ๐Ÿช
  11. cards - โ™ ๏ธ, โ™ฅ๏ธ, โ™ฆ๏ธ, โ™ฃ๏ธ, ๏ฟฝ๏ฟฝ
  12. carnival - ๐ŸŽช ๐ŸŽญ ๐Ÿฟ ๐ŸŽ  ๐ŸŽก ๐ŸŽˆ ๐Ÿคน
  13. casino - ๐ŸŽฐ โ™ ๏ธ โ™ฆ๏ธ โ™ฃ๏ธ โ™ฅ๏ธ ๐ŸŽฒ ๐Ÿƒ
  14. cats - ๐Ÿฑ, ๐Ÿฆ, ๐Ÿฏ, ๐Ÿˆ, ๐Ÿ…, ๐Ÿ†
  15. coffee - โ˜• ๐Ÿฅ ๐Ÿฐ ๐Ÿช ๐Ÿฉ ๐Ÿฅ› ๐Ÿซ
  16. cyberpunk - ๐ŸŒƒ ๐Ÿ’ฟ ๐Ÿ•ถ๏ธ โš™๏ธ ๐Ÿ–ฅ๏ธ ๐ŸŽฎ ๐Ÿ”Œ
  17. deepsea - ๏ฟฝ๏ฟฝ ๐Ÿ™ ๐Ÿฆˆ ๐ŸŒŠ ๐Ÿฆ‘ ๐Ÿก ๐ŸŸ
  18. desert - ๐ŸŒต ๐Ÿช ๐Ÿœ๏ธ ๐ŸŒž ๐Ÿฆ‚ ๐Ÿชจ ๐Ÿ’ง
  19. dice - โš€, โš, โš‚, โšƒ, โš„, โš…
  20. diner - ๐Ÿ” ๏ฟฝ๏ฟฝ ๐Ÿฅค ๐Ÿณ ๐Ÿฅž ๐Ÿฅ“ ๐Ÿฆ
  21. easter - ๐Ÿฃ ๐Ÿฅ ๐Ÿค ๐Ÿฅš ๐ŸŒธ ๐Ÿซ ๐Ÿ‡ ๐ŸŒท ๐ŸŒผ ๐Ÿƒ ๐Ÿฆ‹ ๐Ÿฌ ๐ŸŒˆ ๐ŸŽ€ ๐Ÿ’’
  22. emotional - ๐Ÿ˜€, ๐Ÿ˜ƒ, ๐Ÿ˜„, ๐Ÿ˜, ๐Ÿ˜†, ๐Ÿ˜…, ๐Ÿ˜‚, ๐Ÿคฃ, ๐Ÿ˜Š, ๐Ÿ˜‡, ๐Ÿ™‚, ๐Ÿ™ƒ, ๐Ÿ˜‰, ๐Ÿ˜Œ, ๐Ÿ˜, ๐Ÿ˜˜, ๐Ÿ˜—, ๐Ÿ˜™, ๐Ÿ˜š, ๐Ÿ˜‹, ๐Ÿ˜›, ๐Ÿ˜, ๐Ÿ˜œ, ๐Ÿคช, ๐Ÿคจ, ๐Ÿง, ๐Ÿค“, ๐Ÿ˜Ž, ๐Ÿคฉ, ๐Ÿ˜, ๐Ÿ˜’, ๐Ÿ˜”, ๐Ÿ˜Ÿ, ๐Ÿ˜•, ๐Ÿ™, โ˜น๏ธ, ๐Ÿ˜ฃ, ๐Ÿ˜–, ๐Ÿ˜ซ, ๐Ÿ˜ฉ, ๐Ÿฅบ, ๐Ÿ˜ข, ๐Ÿ˜ญ, ๐Ÿ˜ค, ๐Ÿ˜ , ๐Ÿ˜ก, ๐Ÿคฌ, ๐Ÿคฏ, ๐Ÿ˜ณ, ๐Ÿฅต, ๐Ÿฅถ, ๐Ÿ˜ฑ, ๐Ÿ˜จ, ๐Ÿ˜ฐ, ๐Ÿ˜ฅ, ๐Ÿ˜“, ๐Ÿ˜ถ, ๐Ÿ˜, ๐Ÿ˜‘, ๐Ÿ˜ฌ, ๐Ÿ˜ฏ, ๐Ÿ˜ฆ, ๐Ÿ˜ง, ๐Ÿ˜ฎ, ๐Ÿ˜ฒ, ๐Ÿฅฑ, ๐Ÿ˜ด, ๐Ÿคค, ๐Ÿ˜ช, ๐Ÿ˜ต, ๐Ÿค, ๐Ÿฅด, ๐Ÿคข, ๐Ÿคฎ, ๐Ÿค•, ๐Ÿค’, ๐Ÿ˜ท, ๐Ÿฅฐ, ๐Ÿ˜ธ, ๐Ÿ˜บ, ๐Ÿ˜ป, ๐Ÿ˜ผ, ๐Ÿ˜ฝ, ๐Ÿ™€, ๐Ÿ˜ฟ, ๐Ÿ˜น
  23. explorer - ๐ŸŒ ๐ŸŒ ๐Ÿ—บ๏ธ ๐Ÿ” โ›บ ๐ŸŒ„ ๐Ÿงญ
  24. fantasy - ๐Ÿ‰ ๐Ÿฐ ๏ฟฝ๏ฟฝ ๐Ÿง™ ๐Ÿ›ก๏ธ ๐Ÿ—ก๏ธ ๐ŸŒŒ ๐Ÿ‘‘
  25. farm - ๐Ÿ„ ๐Ÿ– ๐Ÿ“ ๐ŸŒพ ๐ŸŽ ๐Ÿ ๐Ÿšœ
  26. garden - ๐ŸŒฑ, ๐ŸŒธ, ๐ŸŒป, ๐ŸŒฟ, ๐Ÿ‚, ๐Ÿƒ, ๐ŸŒพ
  27. halloween - ๐ŸŽƒ, ๐Ÿ‘ป, ๐Ÿฆ‡, ๐Ÿ•ท๏ธ, ๐Ÿ•ธ๏ธ, ๐Ÿฆ‰, ๐Ÿ”ฎ, ๐Ÿ’€, ๐Ÿ‘ฝ, ๐ŸŒ™, ๐Ÿฌ, ๐Ÿญ, ๐Ÿ–ค, ๐Ÿ”ช, ๐Ÿง›, ๐Ÿชฆ, ๐Ÿ˜ฑ, ๐Ÿ™€, ๐ŸŒ•, โšฐ๏ธ
  28. jungle - ๐Ÿฆœ ๐Ÿฆ ๐ŸŒด ๐Ÿ… ๐Ÿ ๐ŸŒบ ๐ŸฆŽ
  29. leaves - ๐Ÿ‚ ๏ฟฝ๏ฟฝ ๐Ÿ€ ๐ŸŒฟ ๏ฌ ๏ฌ ๏ฌ
  30. lunar - ๐ŸŒ‘, ๐ŸŒ’, ๐ŸŒ“, ๐ŸŒ”, ๐ŸŒ•, ๐ŸŒ–, ๐ŸŒ—, ๐ŸŒ˜
  31. magical - ๐Ÿ”ฎ ๐ŸŒŸ ๐Ÿงน ๐ŸŽฉ ๐Ÿ‡ ๐Ÿช„ ๐Ÿ’ซ
  32. mathematical - โž•, โž–, โœ–๏ธ, โž—, โ‰ , โ‰ˆ, โˆž
  33. matrix - ๏ฝฆ, ๏ฝง, ๏ฝจ, ๏ฝฉ, ๏ฝช, ๏ฝซ, ๏ฝฌ, ๏ฝญ, ๏ฝฎ, ๏ฝฏ, ๏ฝฐ, ๏ฝฑ, ๏ฝฒ, ๏ฝณ, ๏ฝด, ๏ฝต, ๏ฝถ, ๏ฝท, ๏ฝธ, ๏ฝน, ๏ฝบ, ๏ฝป, ๏ฝผ, ๏ฝฝ, ๏ฝพ, ๏ฝฟ, ๏พ€, ๏พ, ๏พ‚, ๏พƒ, ๏พ„, ๏พ…, ๏พ†, ๏พ‡, ๏พˆ, ๏พ‰, ๏พŠ, ๏พ‹, ๏พŒ, ๏พ, ๏พŽ, ๏พ, ๏พ, ๏พ‘, ๏พ’, ๏พ“, ๏พ”, ๏พ•, ๏พ–, ๏พ—, ๏พ˜, ๏พ™, ๏พš, ๏พ›, ๏พœ, ๏พ, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, *, _, +, |, :, <, >, "
  34. medieval - ๐Ÿฐ ๐Ÿ›ก๏ธ โš”๏ธ ๐ŸŽ  ๐Ÿ‘‘ ๐Ÿน ๐Ÿบ
  35. musical - ๐ŸŽต ๐ŸŽถ ๐ŸŽค ๐ŸŽท ๐ŸŽธ ๐ŸŽบ ๐ŸŽป
  36. mystery - ๐Ÿ•ต๏ธ, ๐Ÿ”Ž, ๏ฟฝ๏ฟฝ, ๐Ÿ”‘, ๐Ÿ“œ, ๐Ÿ–‹๏ธ, ๐Ÿ—๏ธ
  37. mystical - ๐Ÿ”ฎ ๐ŸŒ• ๐ŸŒŸ ๐Ÿ“œ โœจ ๐Ÿ”ฅ ๐Ÿ’ซ
  38. new_year - ๐ŸŽ† ๐ŸŽ‰ ๐Ÿพ ๐Ÿฅ‚ โฐ ๐Ÿ•› ๐ŸŽˆ ๐ŸŒŸ โœจ ๐ŸŽŠ ๐Ÿฅณ ๐Ÿ’ซ ๐Ÿ“… 2๏ธโƒฃ 0๏ธโƒฃ 2๏ธโƒฃ 4๏ธโƒฃ
  39. nocturnal - ๐Ÿฆ‰ ๐ŸŒ™ ๐Ÿฆ‡ ๐ŸŒŒ ๐ŸŒ  ๐Ÿ”ญ ๐ŸŒš
  40. ocean - ๐ŸŒŠ ๐Ÿ  ๐ŸŸ ๐Ÿก ๐Ÿฌ ๐Ÿณ ๐Ÿฆˆ ๐Ÿš โ›ต
  41. pirate - โ˜ ๏ธ โš“ ๐Ÿดโ€โ˜ ๏ธ ๐Ÿ—บ๏ธ ๐Ÿฆœ โš”๏ธ ๐Ÿ’ฐ
  42. retro - ๏ฟฝ๏ฟฝ ๐Ÿ“บ ๐ŸŽž๏ธ ๐Ÿ“ผ ๐ŸŽ™๏ธ ๐Ÿ•ฐ๏ธ โ˜Ž๏ธ
  43. snow - โ„๏ธ ๏‹œ โ… โ‡ * .
  44. spa - ๐Ÿ•ฏ๏ธ ๐Ÿ› ๐ŸŒธ ๐Ÿ’† ๐Ÿต ๐Ÿง˜ ๐Ÿ’…
  45. space - ๐Ÿช ๐ŸŒŒ โญ ๐ŸŒ™ ๐Ÿš€ ๐Ÿ›ฐ๏ธ โ˜„๏ธ ๐ŸŒ  ๐Ÿ‘ฉโ€๐Ÿš€
  46. sports - โšฝ ๐Ÿ€ ๐Ÿˆ โšพ ๐ŸŽพ ๐Ÿ“ ๐Ÿ’
  47. spring - ๐Ÿ‘ ๐Ÿ‡ ๐Ÿฆ” ๐Ÿฃ ๐Ÿฆข ๐Ÿ ๐ŸŒป ๐ŸŒผ ๐ŸŒท ๐ŸŒฑ ๐ŸŒณ ๐ŸŒพ ๐Ÿ€ ๐Ÿƒ ๏ฟฝ๏ฟฝ
  48. stars - โ˜… โญ โœฎ โœฆ โœฌ โœฏ ๐ŸŒŸ
  49. steampunk - โš™๏ธ ๐Ÿ•ฐ๏ธ ๐ŸŽฉ ๐Ÿš‚ ๐Ÿงญ ๐Ÿ”ญ ๐Ÿ—๏ธ
  50. st_patricks_day - ๐Ÿ€ ๐ŸŒˆ ๐Ÿ’š ๐Ÿ‡ฎ๐Ÿ‡ช ๐ŸŽฉ ๐Ÿฅ” ๐Ÿบ ๐Ÿป ๐Ÿฅƒ ๏ฟฝ๏ฟฝ ๐Ÿ’ฐ ๐ŸŒŸ ๐Ÿต ๐Ÿ ๐Ÿช„
  51. summer - ๐Ÿ˜Ž ๐Ÿ„ ๐ŸŠ ๐ŸŒป ๐ŸŒด ๐Ÿน ๏ฟฝ๏ฟฝ๏ธ โ˜€๏ธ ๐ŸŒž ๐Ÿ•ถ๏ธ ๐Ÿ‘• โ›ต ๐Ÿฅฅ ๐ŸŒŠ
  52. temporal - ๐Ÿ•, ๐Ÿ•‘, ๐Ÿ•’, ๐Ÿ•“, ๐Ÿ•”, ๐Ÿ••, ๐Ÿ•–, ๐Ÿ•—, ๐Ÿ•˜, ๐Ÿ•™, ๐Ÿ•š, ๐Ÿ•›
  53. thanksgiving - ๐Ÿฆƒ ๐Ÿ‚ ๐Ÿ ๐ŸŒฝ ๐Ÿฅง ๐Ÿ  ๐ŸŽ ๐Ÿ– ๐Ÿ— ๐Ÿฅ– ๐Ÿฅ” ๐Ÿ‡ ๐Ÿท ๐ŸŒฐ ๐Ÿฅ•
  54. travel - โœˆ๏ธ, ๐ŸŒ, ๐Ÿ—บ๏ธ, ๐Ÿจ, ๐Ÿงณ, ๐Ÿ—ฝ, ๏ฟฝ๏ฟฝ
  55. tropical - ๐ŸŒด ๏ฟฝ๏ฟฝ ๐Ÿ‰ ๐Ÿฅฅ ๐ŸŒบ ๐Ÿข ๐ŸŒŠ
  56. urban - ๐Ÿข ๏ฟฝ๏ฟฝ ๐Ÿš‡ ๐Ÿ• ๐Ÿšฆ ๐Ÿ›ด ๐ŸŽง
  57. us_independence_day - ๐Ÿ‡บ๐Ÿ‡ธ ๐ŸŽ† ๐Ÿ—ฝ ๐Ÿฆ… ๐ŸŒญ ๐Ÿ” โญ ๐ŸŽ‰ ๐Ÿฅณ ๐Ÿป ๐Ÿฅ ๐ŸŽต ๐ŸŽถ ๐Ÿš€ ๐Ÿ’ฅv
  58. valentines_day - โค๏ธ ๐Ÿ’– ๐Ÿ’˜ ๐Ÿ’ ๐Ÿ’• ๐Ÿ’“ ๐Ÿ’ž ๐Ÿ’Ÿ ๐Ÿ’Œ ๐ŸŒน ๐Ÿซ ๐Ÿ’ ๐Ÿ’ ๐Ÿท ๐Ÿ•ฏ๏ธ
  59. wilderness - ๐ŸŒฒ ๐Ÿบ ๐ŸฆŒ ๐Ÿž๏ธ ๐Ÿ”ฅ โ›บ ๏ฟฝ๏ฟฝ
  60. wildwest - ๐Ÿค  ๏ฟฝ๏ฟฝ ๐ŸŒต ๐Ÿ”ซ โ›๏ธ ๐ŸŒ„ ๐Ÿš‚
  61. winter_wonderland - โ„๏ธ โ›„ ๐ŸŒจ๏ธ ๐ŸŽฟ ๐Ÿ›ท ๐Ÿ”๏ธ ๐Ÿงฃ
  62. xmas - ๐ŸŽ„ ๏ฟฝ๏ฟฝ ๐Ÿคถ ๐ŸŽ… ๐Ÿ›ท โ„ โ›„ ๐ŸŒŸ ๏ฟฝ๏ฟฝ ๐ŸŽถ โ„๏ธ ๏‹œ โ… โ‡ *
  63. zodiac - โ™ˆ, โ™‰, โ™Š, โ™‹, โ™Œ, โ™, โ™Ž, โ™, โ™, โ™‘, โ™’, โ™“
  64. zoo - ๐Ÿฆ ๐Ÿ˜ ๐Ÿฆ“ ๐Ÿฆ’ ๐Ÿฆ… ๐Ÿฆ‰ ๐Ÿ†

โšก๏ธ Requirements

๐Ÿ“ฆ Installation

Install the plugin with your preferred package manager:

-- Packer
use({
  "igorktech/rain.nvim",
  event = "VimEnter",
  config = function()
    require("rain").setup()
  end,
})

-- Lazy.nvim
{
  "igorktech/rain.nvim",
  opts = {
    -- ...
  }
}

โš™๏ธ Configuration

rain.nvim comes with the following defaults:

{
  ---@type RainTheme|string
  theme = "auto", -- when auto, it will choose a theme based on the date
  ---@type ({theme: string}|RainDate|{from:RainDate, to:RainDate}|{holiday:"us_thanksgiving"|"easter"})[]
  themes = {
    { theme = "new_year", month = 1, day = 1 },
    { theme = "valentines_day", month = 2, day = 14 },
    { theme = "st_patricks_day", month = 3, day = 17 },
    { theme = "easter", holiday = "easter" },
    { theme = "april_fools", month = 4, day = 1 },
    { theme = "us_independence_day", month = 7, day = 4 },
    { theme = "halloween", month = 10, day = 31 },
    { theme = "us_thanksgiving", holiday = "us_thanksgiving" },
    { theme = "xmas", from = { month = 12, day = 24 }, to = { month = 12, day = 25 } },
    { theme = "leaves", from = { month = 9, day = 22 }, to = { month = 12, day = 20 } },
    { theme = "snow", from = { month = 12, day = 21 }, to = { month = 3, day = 19 } },
    { theme = "spring", from = { month = 3, day = 20 }, to = { month = 6, day = 20 } },
    { theme = "summer", from = { month = 6, day = 21 }, to = { month = 9, day = 21 } },
  },
  max = 75, -- maximum number of drops on the screen
  interval = 100, -- every 150ms we update the drops
  screensaver = 1000 * 60 * 5, -- show after 5 minutes. Set to false, to disable
  filetypes = { "dashboard", "alpha", "ministarter" }, -- will enable/disable automatically for the following filetypes
  winblend = 100, -- winblend for the rain window
  tail = { enable = true, length = 5, delta = 5, dynamic = true }, -- enable/disable tail
  wind = { enable = true, speed = 10, direction = "both" }, -- enable/disable wind effect
}

Tail Configuration

The tail option controls the trailing effect behind each drop:

  • enable (boolean): Enable/disable the tail effect
  • length (number): Base length of the tail (default: 5)
  • delta (number): Maximum variation in tail length (default: 5)
  • dynamic (boolean): Whether tail length should change dynamically over time

Wind Configuration

The wind option controls the horizontal movement of drops:

  • enable (boolean): Enable/disable the wind effect
  • speed (number): Maximum speed of horizontal movement (default: 10)
  • direction (string): Wind direction - "both", "left", or "right" (default: "both")

๐ŸŽจ Customization

You can customize the appearance of the rain effect by:

  1. Creating your own theme:
require("rain").setup({
  theme = {
    symbols = { "๐ŸŒง๏ธ", "๐Ÿ’ง", "โ˜”", "๐ŸŒ‚" }, -- your custom symbols
    colors = { "Rain1", "Rain2", "Rain3" }, -- your custom highlight groups
  }
})
  1. Adding custom highlight groups:
vim.api.nvim_set_hl(0, "Rain1", { fg = "#88ccff" })
vim.api.nvim_set_hl(0, "Rain2", { fg = "#66aaff" })
vim.api.nvim_set_hl(0, "Rain3", { fg = "#44aaff" })

๐Ÿ“ License

MIT

About

๐ŸŒธ Improved little plugin that can be used as a screensaver and on your dashboard

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 100.0%