A slime-skinned bar suite for Omarchy: a shader-drawn bar of dripping ooze (or sinew, or bone), widgets that float in it, panels that drip out of it, and a command centre, app launcher and notifications to match. Everything takes its colours from your Omarchy theme, and it runs on any screen edge and any screen size.
Mix a material (slime, sinew, bone, plain, muscle — striated fibres, tendon plaques and burn scarring, the fibres stretching into strands down the drips) with a shape (classic, pills, islands, notch, blob — the three sections huddled together in the middle of the edge as one slime) and a shading style (soft, anime, manga, print, cel, sketch):
Pick how the ooze moves (Settings → Motion → Drip style, or
omarchy-shell slime-shell drip <style>):
…and how much of it there is (Drip amount):
| Amount | |
|---|---|
| dry | |
| ooze | |
| gush | |
| torrent — longer and more of them | |
| variable — each drip waxes and wanes |
The system font, or a display face for clocks, temperatures and headings (small text stays in the rounded, readable Sniglet):
* Styro, Nippo and Array are free Fontshare
fonts whose licence doesn't allow bundling them, so Slime Shell doesn't ship
them: download them from Fontshare and install them (e.g. copy the .otf
files to ~/.local/share/fonts and run fc-cache -f) and they show up as
font options.
The slimes on the workspaces, the agents robot and the launcher can be pale paper (they pop off the ooze), the theme's colours (each workspace a different hue), or shaded with the bar gradient (Settings → Slime, or the workspaces' right-click menu):
With bar debris on, eyeballs, bones, teeth, bubbles, frogs, hats, swords and tankards drift through the bar and behind the command centre, the launcher, every widget panel and the karaoke's lyric drips (matched to the material: teeth and eyes in sinew, bones and skulls in bone). Every bit comes in its own size — some a good deal bigger — but never too big for the goo it's floating in. In a lyric drip they ride along inside the bead as it sinks, and burst out and scatter with the words when it pops. Now and then a little adventurer — a gnome, goblin, skeleton, knight, wizard or priest — gets stuck in a fat drip and falls off with it, or turns up trapped in a panel's ooze.
-
The bar (
slime.bar) — Omarchy's bar engine (layout, drag-to-reorder, popouts, IPC) with the slime skin painted behind it. Top, bottom, left or right; widgets bob in the goo. -
Command centre — Home (quick toggles, clock, cloud-shaped weather, sound, the media monster, calendar, notifications), System (adventurers marching on a dungeon), Wallpapers (the theme's, plus any you drop in
~/Pictures/SlimeS-Wallpapers— stills, or videos and gifs that play as motion wallpapers, muted and looping, paused while a window is fullscreen or you're idle; each section folds away; sort by name or type, and switch on a timer — in order or shuffled, from the theme's, yours or all), Tasks, Start-Up (apps to launch at login, and on which workspace — it adds one hook line to~/.config/hypr/autostart.lua) and Settings tabs. It fits any screen: capped to the space there is (tall tabs scroll) and scaled down on narrow or portrait screens. Keyboard driven too: arrows move a highlight between controls, Enter presses, ←/→ turn sliders, 1–6 or Ctrl+Tab switch tabs, t folds the tab sidebar down to icons (or the arrow at its corner), ? shows the keys (Settings → Command centre to turn it off). Its text size has its own slider (80–140%). -
Widgets — launcher, workspaces, agents (its robot gets worried as your session usage climbs), media, clock & weather, indicators, tray, treasure chest (widget picker), bluetooth, network, audio, display, power, keyboard layout, system update, spacers. See docs/widgets.md for what every click does.
-
Karaoke (SlimeS-Karaoke, the media widget) — a lich, wizard, priest, dryad, witch, wand-stuffed slime or wisp (right-click to choose) casting the visualizer — that's its idle form. Left-click the caster (or the visualizer) and it sings, a ♪ bubble on its shoulder: each line of the song's lyrics hangs from the bar as a round bead of goo on a neck, sinking lower as the line is sung, the word being sung lit in a glossy bubble of goo (the rest still to come fainter); when the line ends the neck snaps and the bead drops and bursts into droplets, words scattering, as the next line drips down. The beads take the bar's material, colours, shading and debris, and never block a click. Lyrics come from LRCLIB (only the artist, title, album and length are sent; cached per song). Right-click for the caster, the visualizer, karaoke on/off, the whole song (every line in a big drip panel, the current one lit; click a line to jump there), refresh lyrics and which player to follow. Hover for a drip card with the album art, track, progress and which player to follow (whatever's playing, or stick to one). While hovering it — or the media slime in the command centre — Space plays/pauses and M mutes; a middle click plays/pauses too:
-
Spacers — as many as you like, each holding plain ooze, a sagging lump or any floating bit; scroll to resize, right-click for options.
-
Launcher — fuzzy search over apps, every Omarchy menu command (
>for commands only) and your files (/for files only); drips from the bar when clicked, floats centred when summoned by keybind. Set in a castle the slime has swallowed: towers and a broken wall sunk in the goo, blocks of its shattered top drifting up, the king, queen, princess, knights, a jester and a horse adrift with goblins, skeletons, slimes, a witch and a lich. Results bob in the ooze, bubble up as you scroll, and can sit in bubbles (the bubbles button, orslime-launcher bubbles on|off). -
Dock (SlimeS-Dock) — apps, folders and files in a lump of the bar's own slime on any edge the bar isn't on, dripping like the bar. Centred or at either end (where it melts into the bar or the corner slime), optionally hidden until hovered — hidden, it draws nothing at all. + oozes out a panel to search and add apps; drag folders and files onto it; right-click an icon for a slime menu to launch, move or remove it:
-
Notifications — toasts drip out of the bar (top bar).
-
Slime-Tasks — a todo, task-log and progress suite in the command centre's Tasks tab, or as a pop-out over everything (
omarchy-shell slime-shell tasks). The slime has swallowed a whole tavern: signs on a beam, mead barrels, a bar, broken boards, and bards, knights, rogues and orcs adrift in the goo. Todos with sub-todos, coloured groups and super groups (groups of groups); pictures pinned to sub-todos (a drip-panel file picker, or drop them on); a live task log that you and your agents (slime-tasks) write to while sub-todos shift across to do / in progress / done, tagged super group › group › todo › sub-todo and viewable per todo or across everything by todo, group or super group (L jumps from any of them to its part of the log); progress by group with an archive that takes and gives back whole groups and super groups. Fully keyboard driven, drag to reorder, plain markdown in~/Documents/Slime-Notesso Envy or any notes app can open it: docs/tasks.md.
- Drag widgets to reorder them. In the pills shape, drop one onto the middle of another to join their pills. Inside a joined pill, drag a widget between its pill-mates to shuffle it, or onto one to swap them. Drag it to either end of the pill and two markers appear: the one just inside swaps it with the end widget, the one just past the end splits it into its own pill. A spacer on its own gets a pill of its own.
- Above or behind windows — draw the drips over your windows or tucked
behind them (
toggleLayer, or Settings → Slime). - Any plugin — third-party Omarchy bar widgets work as normal and float in the goo; their panels open from the bar, or from Settings → Widgets.
Needs an up-to-date Omarchy (the Quickshell-based shell) plus git, jq and
python3. Optional: cava for the visualizers and the cava drip style;
qt6-multimedia (plus ffmpeg and imagemagick for their thumbnails) for
video and gif wallpapers; qt6-shadertools if you edit the shader.
git clone https://github.com/DasPoxy/slime-shell.git ~/Work/slime-shell
~/Work/slime-shell/bin/slime-shell useuse links the plugins into ~/.config/omarchy/plugins/, backs up your
current bar layout, switches the bar to Slime, swaps in Slime's notification
server and restarts the shell. It also links slime-tasks into
~/.local/bin and makes ~/Pictures/SlimeS-Wallpapers. To go back:
~/Work/slime-shell/bin/slime-shell restore # your previous bar, exactly
~/Work/slime-shell/bin/slime-shell status
~/Work/slime-shell/bin/slime-shell install # just (re)link the pluginsThe plugins are symlinks into the clone, so editing the repo changes the live
bar (restart with omarchy restart shell to be sure).
Nothing is bound for you. Suggested lines for ~/.config/hypr/bindings.lua
(unbind anything already on those keys first with hl.unbind("...")):
o.bind("SUPER + ALT + C", "Slime command centre", "omarchy-shell slime-shell toggleTab home")
o.bind("SUPER + R", "Slime launcher", "omarchy-shell slime-launcher apps")
o.bind("SUPER + ALT + S", "Slime settings", "omarchy-shell slime-shell toggleTab settings")
o.bind("SUPER + ALT + M", "Slime system monitor", "omarchy-shell slime-shell toggleTab system")
o.bind("SUPER + ALT + X", "Slime tasks", "omarchy-shell slime-shell toggleTab tasks")
o.bind("SUPER + ALT + W", "Slime wallpapers", "omarchy-shell slime-shell toggleTab wallpapers")
o.bind("SUPER + CTRL + SHIFT + Z", "Slime above/behind windows", "omarchy-shell slime-shell toggleLayer")
o.bind("SUPER + CTRL + SHIFT + RETURN", "Slime-Tasks pop-out", "omarchy-shell slime-shell tasks")Other IPC for binds or scripts:
omarchy-shell slime-shell toggle | open | close | tab <name> | toggleTab <name>
omarchy-shell slime-shell tasks # Slime-Tasks pop-out
omarchy-shell slime-shell material slime|sinew|bone|plain|muscle
omarchy-shell slime-shell shape classic|pills|islands|notch|blob
omarchy-shell slime-shell shading 0|1|2|3|4|5 # soft, anime, manga, print, cel, sketch
omarchy-shell slime-shell drip drip|honey|rain|tar|frozen|stringy|lava|gelatinous|cava
omarchy-shell slime-shell cava drips|ripple # the cava style's look
omarchy-shell slime-shell dock toggle|on|off|apps|top|bottom|left|right|start|center|end|autohide|pinned
omarchy-shell slime-shell corners on|off|toggle
omarchy-shell slime-shell wallpaper <path> # a still, or a video / gif to play
omarchy-shell slime-shell nextWallpaper # the next one (the Wallpapers tab's switching order)
omarchy-shell slime-shell layer above|behind # draw over or behind windows
omarchy-shell slime-shell toggleLayer # flip between the two
omarchy-shell slime-shell color <theme role> # accent, green, cyan, …
omarchy-shell slime-shell gradient <theme role> # the gradient partner, auto or none
omarchy-shell slime-shell fps <n> # 0 pauses the animation
omarchy-shell slime-shell egg # (shh) summon a trapped adventurer
omarchy-shell slime-launcher apps | icons | bubbles on|off
omarchy-shell slime-media toggle | next | previous
omarchy-shell slime-media karaoke | lyrics # karaoke on/off, the whole song's lyrics
omarchy-shell slime-media follow <player> # "" follows whatever's playing
omarchy-shell slime-plugins toggle
omarchy-shell slime-workspaces menu
omarchy-shell slime-clock settings
omarchy-shell shell toggle <widget id> # any bar widget's panel, e.g. slime.audioCommand centre → Settings (sections fold open and closed):
- Command centre — keyboard navigation on / off, and a text size slider (80–140%) for the command centre and its tabs (the bar clock keeps its own size, in its menu)
- Desktop styling — rounded screen corners (off / small / medium / large) and slime patches in the corners across from the bar, mirroring its look
- Dock (SlimeS-Dock) — a dock of apps, folders and files made of the bar's own
slime, on any screen edge the bar isn't on (move the bar onto it and the
dock moves across); centred or at either end — at the end next to the bar
it sits just past the bar and melts into it, one slime bracketing the
corner; at the far end it melts into the corner slime; optionally hidden until hovered; three icon sizes. The +
on the dock oozes out a panel to search apps and add or remove them
(↑↓, Enter, Esc); drag folders or files onto the dock to pin them;
right-click an icon for a little drip of a menu to launch, move or remove
it (↑↓ Enter, Esc or a click elsewhere closes it). Pins live in
~/.config/omarchy/slime-shell/dock.json. - Slime — colour, gradient partner, material, bar position, bar shape (classic, pills, islands, notch, blob), draw above/behind windows, bar debris, slime icon colours, shading (soft, anime, manga, print, cel, sketch)
- Font & clock — system font or a display face (blobby, drippy, bubble, runic; styro, nippo, array when installed), date/time order
- Motion — frame rate, drip style, drip amount; with the cava style, its bar count, bass → treble or mirrored, sensitivity, reach, thickness and smoothing
- Updates — check GitHub, update & restart
- Widgets — each Slime widget's settings; whether Power shows without a battery and System update without updates; and a button for every bar widget (yours and third-party) that drips its panel open
Skin settings are saved in ~/.config/omarchy/slime-shell/skin.json (dock
pins in dock.json, start-up apps in startup.json, beside it);
per-widget settings in the widget's entry in ~/.config/omarchy/shell.json.
Settings → Updates → Check for updates, then Update & restart (it only fast-forwards, and stays off if you have local changes). Or by hand:
git -C ~/Work/slime-shell pull && omarchy restart shell| Path | What |
|---|---|
plugins/slime.bar/ |
the bar; shaders/slime.frag (the skin), commandcenter/ (tabs, slime_tasks.py, slime-startup), dock/ (the dock's icons, menu and apps panel), ui/ (shared panels, monsters, gear, debris, the motion-wallpaper player), fonts/ |
plugins/slime.* |
widgets, mostly cloned from Omarchy's and restyled |
plugins/slime.notifications/ |
notification service |
layouts/default.json |
the bar layout slime-shell use installs |
bin/slime-shell |
install / use / restore / status |
bin/clone-omarchy-plugin |
clone another Omarchy plugin as slime.<name> |
bin/slime-tasks |
the tasks backend on the command line (for agents) |
docs/ |
widget reference, tasks guide, pictures |
spike/ |
the original standalone prototype |
How it's drawn: one signed-distance-field shader draws the whole scene (bar, drips, bulbs under widgets, panels, the command centre). The bar window is exactly the bar — so widget panels, including third-party ones, size and place themselves as they would on Omarchy's own bar — and a second, fixed-size, click-through window just past it carries the drips and the command centre. Both run the same shader with the same inputs, so the goo is seamless across them. The corner patches and the dock are more small windows running that shader with their own shapes.
After editing the shader, recompile it:
/usr/lib/qt6/bin/qsb --qt6 -o plugins/slime.bar/shaders/slime.frag.qsb plugins/slime.bar/shaders/slime.fragBuilt on Omarchy's shell plugins (MIT). Fonts: Chewy (Apache-2.0); Rubik Wet
Paint, Rubik Bubbles, Sniglet, MedievalSharp and IM Fell English (SIL OFL).
Styro, Nippo and Array (Fontshare) are not included — see Fonts above. Licences in plugins/slime.bar/fonts/.
MIT — see LICENSE, which also carries Omarchy's MIT notice for the parts derived from its plugins. Fonts keep their own licences.