/raining-in-vscode

Primary LanguageTypeScriptMIT LicenseMIT

RAINING IN V S C O D E

Inspired by RAINING IN M I A M I, I bring you:

RAINING IN V S C O D E demo code

For all of your soothing rain lofi vibes while coding.

Installation

This extension is based heavily on the method of custom CSS/JS demonstrated by Synthwave '84. The instructions are largely the same.

Install this extension from the VS Marketplace.

From the command palette, run Enable Downpour and select restart to start the rain. To disable, run Disable Downpour.

To remove corruption warning and [unsupported] from title-bar

Because of modifying the actual html of VS Code, it will interpret this as the core being 'corrupted' and you may see an error message on restarting your editor. You can remove it entirely with the Fix VSCode Checksums extension.

Upon installation of 'Fix VSCode Checksums', open the command palette and execute Fix Checksums: Apply. You will need to completely restart VSCode after execution, reopening without fully exiting might not be enough.

Customization

Raining In offers several settings to customize the appearance of the rain:

  • rainingin.raindrop.minFallHeight and maxFallHeight: Raindrops end up somewhere in between these values. I recommend setting maxFallHeight to the height of your editor/monitor, and min around 200 pixels less than that.
  • rainingin.window.width: Set this to the maximum width you foresee using your editor at. If it's less, you won't get rain across the whole thing. If greater, might waste raindrops outside of the viewport.
  • rainingin.autoreload: Set this to true to automatically reload on enable/disable.
  • rainingin.foregroundOpacity: Rain works by making the foreground slightly transparent. I recommend setting this to the highest possible value between 0 and 1 that you can see the rain (to not wash out your editor too much)
  • rainingin.raindrop.color: Simple. The tint of the rain as a hex value.
  • rainingin.raindrop.minOpacity and maxOpacity: Raindrops will have a random opacity between these values. Max should probably be 1, but making min smaller will have more variation in opacity.
  • rainingin.raindrop.count: How many raindrops. This will probably have the greatest performance hit, so on a less powerful machine try reducing this if you're not hitting your desired fps or seeing any kind of slowdown in your editor.
  • rainingin.raindrop.minSpeed and maxSpeed: How fast the rain falls, pixels per second.
  • rainingin.raindrop.minDelay and maxDelay: The randomness effect is achieved by staggering when the rain starts. If both are set to the same value, rain will start pretty much synchronized, so having a good margin here is key to organic look. Increasing both delays overall will have the effect of more of a drizzle.
  • rainingin.raindrop.minAngle and maxAngle: The rain chooses a random angle between these values. Positive is rain falling to the right. Might look weird if min is negative and max is positive.
  • rainingin.raindrop.minSize and maxSize: The raindrops choose a width in pixels between these values. Might look weird if too thick.
  • rainingin.raindrop.minLength and maxLength: Raindrops choose a lenght between these values. Gives the rain a motion blur effect essentially. Longer drops work well in combination with faster speeds.

Contributing

Feel free to add issues/PRs for any small bugfixes or bigger additions to the extension you'd want to see. Check out TODO.md for stuff I want to add eventually.