by tommyhedgerow
Play a short pixel-art animation over the vault as it opens, then get out of the way.
Mimir Splash
Plays a short pixel-art animation over the vault as Obsidian opens, once, then takes itself away. Any key, a click or Escape dismisses it early, and it never traps focus or blocks the workspace behind it. The animation is decoration, and it leaves on its own when it ends.
What it does
When the workspace has finished laying itself out, the plugin draws a curtain over the window and plays one clip on it. The clip runs once and holds its last frame; there is no loop.
- One frame, one build. A light Obsidian plays the light build, a dark one plays the dark build. The two are not the same kind of file: the light build is a transparent WebM with an alpha plane, so it composites over the paper, and the dark build is an opaque MP4. Each build has a poster still, which is what plays when motion is reduced.
- The curtain wears the animation's own ground. The piece was drawn on a near-black and on a lavender grey, neither of which is the vault's paper. The curtain uses the piece's colour while it is on screen, and the vault's own paper is what is revealed when it leaves. No theme token is changed.
- It leaves on its own. The end of the clip closes it. If playback never starts, a ceiling of 12 seconds closes it instead.
- It can be dismissed at any moment. Any key leaves, and the key press is swallowed, so the first press belongs to the splash rather than to the app. A click and Escape leave as well.
- Reduced motion is respected. Where
prefers-reduced-motion: reduceis set, the still poster is shown for 1.5 seconds and then faded out. - It is marked as decoration. No text is shown, nothing takes focus, and the curtain is hidden from assistive technology.
The animation files live in your vault, not in the plugin
The plugin reads four files from a fixed folder in the vault, and the folder is not configurable:
<Vault>/Tools/splash/
mimir_startup_dark.mp4
mimir_startup_dark_poster.png
mimir_startup_light.webm
mimir_startup_light_poster.png
They are not downloaded and not bundled into main.js: a copy has to be in each vault that should play it. The four files are in this repository under media/, so copy that folder to <Vault>/Tools/splash/. If you use the Mimir vault they are already there and there is nothing to do.
If a file is missing, nothing is drawn and one line is written to the developer console; the vault is not interrupted with a notice. The folder name is the DIR constant at the top of src/main.js for anyone who needs to move it.
Mimir Splash is part of the Mimir learning vault; the project is at https://github.com/tommyhedgerow/Mimir.
Install
Mimir Splash is not in the community directory yet. Submission is pending, so the manual path is the one that works today.
Manual install:
- Download
main.js,manifest.jsonandstyles.cssfrom the latest release at https://github.com/tommyhedgerow/obsidian-mimir-splash/releases. - Put the three files in
<Vault>/.obsidian/plugins/mimir-splash/. - Copy the four animation files from
media/into<Vault>/Tools/splash/. - Reload Obsidian, then enable Mimir Splash in Settings → Community plugins.
Once the listing is live, the plugin can be installed from Settings → Community plugins → Browse, by searching for "Mimir Splash".
Usage
The animation plays when the vault opens, if that is switched on. Two commands are the whole interface:
Play the startup animationplays it now.Play the startup animation when the vault opensswitches the on-open behaviour on and off, and says which way it went.
Settings
There is no settings tab. The one setting, whether to play when the vault opens, is stored through Obsidian's data API in the plugin's own data.json, and it is toggled by the second command above. It is on by default.
Disclosures
- Network use: none. Nothing is downloaded or uploaded, and no remote media is requested.
- Files read: the four files listed above, read from inside your vault through Obsidian's vault adapter, and no others.
- Files outside the vault: none. The plugin never uses Node's filesystem modules.
- Data stored: one boolean, whether to play on open, in the plugin's
data.json. - What it adds to the page: one element covering the window while the animation plays. It is removed when the animation ends or is dismissed, and again if the plugin is unloaded. The object URLs made for the media are revoked when the plugin unloads.
- Accounts and payments: none.
- Ads: none.
- Telemetry: none. Nothing is collected or sent anywhere.
Licence
MIT. See LICENSE.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.