Bar
Workspace pills, weather, media and a status light. What the bar carries, what each pill does, and how to turn any of it off.
sill replaces the macOS menu bar with a scriptable status bar, painted in your palette and wired to your tiling. While it's on, the native menu bar is hidden; the bar is the one place to glance.
Enable it
haus.sill.enable = true;What's on it
Far left: the house. Where macOS puts the Apple menu. It opens a menu, and its colour tells you whether the machine is fine. See the logo pill.
Left: your workspaces. One pill each, showing the workspace's id or its icon, with the focused one highlighted and the front app's title alongside. Switch workspaces and the highlight follows; tap the Caps-Lock leader and the whole left side flips into launcher letters.
Right: the status cluster. Clock, battery, Wi-Fi, weather and media, all on by default and each one hideable. More readouts are available and off by default; see toggling pills.
Dropdowns
Several pills open a dropdown on click: weather, the calendar's timeline, the coffee pill's durations, the cpu and memory breakdowns. They behave like every other menu on the Mac: click elsewhere and it closes, click the pill again and it closes, open a second one and the first closes.
The media pill is the exception: its left click is play/pause, so its dropdown is on right-click.
The logo pill
It opens a menu
| Gesture | What you get |
|---|---|
| Click | System Settings, Activity Monitor, Lock Screen, your config, Rebuild System |
| ⌘ click | haus rebuild, in a floating terminal |
| Right click | The full palette, the same thing ⌘Space opens |
Every row of that menu is a palette command, so anything you can click you
can also type. haus.sill.logo.gestures = false turns all three off, so the
pill is plainly not a button rather than a button that does nothing.
It tells you the machine is fine
| Colour | Meaning |
|---|---|
| Your accent | Everything is running |
| Yellow | A newer version is available: haus update |
| Red | Something is enabled but not running |
Red is the one worth having. A wedged background agent is otherwise invisible: tiling stops but leaves every window where it was, and a dead bar keeps the last frame it drew on screen. The check is local, free, and runs every five minutes.
The yellow half asks GitHub whether a new version exists (the only thing
this pill does that leaves your machine), so it's off by default. Turn it
on with haus.sill.logo.updateCheck = true.
Hover it
Resting the pointer on the pill sweeps it through the six hausfold accents. It
only runs at the pill's resting colour: a pill that has gone yellow or red has
something to say and doesn't also get a rainbow. haus.sill.logo.sweep = false
if you'd rather it sat still.
Changing the glyph
haus.sill.logo.icon = "⌂";
haus.sill.logo.size = 25; # ⌂ is drawn thin; it needs the extra points
haus.sill.logo.color = "teal";Left alone, the colour follows haus.theme.accent. The default is a solid
Nerd Font house at 20pt. Whatever you pick has to hold up in a 28pt pill, which rules out more than
you'd expect; the options reference lists six that work. You can't point it at
an image file: a picture couldn't follow your accent or show any of the states
above.
The media pill
It reads the same system-wide session Control Center does, so it follows a browser tab as readily as Apple Music, and it hides itself entirely when nothing is playing.
| Gesture | What it does |
|---|---|
| Left click | Play / pause |
| Right click | The dropdown |
| ⌥ click | Next track |
| ⇧ click | Previous track |
| ⌘ click | Bring the app making the sound forward |
| Scroll | Seek ±10s |
| Hover | Sweep a long title, once |
That ⌘ click is the one to remember: it's the answer to something is making noise and I can't find the tab.
Two habits. A long title never scrolls on its own, only on hover, and a sweep
always finishes once started. And anything over twenty minutes counts down
(-38m) instead of scrolling a name you already know.
The dropdown carries cover art, title, artist, album, and a position slider you can click to scrub.
haus.sill.media.collapse = true; # glyph only until you hover, good on a notched Mac
haus.sill.media.width = 16; # characters of title before it sweeps. 25 by default.width is a maximum, not a fixed size: a short title still draws a short pill.
Toggling pills
Every right-side pill is one boolean. The five core pills (clock, weather,
media, battery, wifi) default on; everything else defaults off. Set
only what you want to change:
haus.sill.items = {
weather = false; # drop a core pill
cpu = true; # add an off-by-default readout
caffeinate = true;
};A pill set false is never created; its update script doesn't even run.
The extra readouts
| Pill | What it is |
|---|---|
cpu | Load, drawn as a graph of the last two minutes. Hover splits user vs system; click lists what's responsible, per app; right-click opens Activity Monitor. |
memory | Memory in use, as a graph. Coloured by the kernel's own pressure level, not the percentage: 60% in use is a Mac working correctly. |
volume | Output volume and mute state. |
calendar | Your next meeting and one gesture to join it. Reads in 12m · Design review; the whole pill fills five minutes either side of the start. Right-click joins the conferencing link; left-click opens the day as a timeline. |
caffeinate | A coffee pill: click for 1, 2, 4, 8 hours or until stopped; right-click stops. Survives a bar reload. |
agents | Tracks your agent panes: amber when one is waiting on you, click to jump to it. |
aiUsage | How much of your AI usage you've spent, as a gauge. Click for every provider's windows and reset times. |
elgato | Toggles an Elgato Key Light on your network. |
harvest | Harvest time tracking. Reads credentials from a file you provide. |
The keep-awake engine is also a command, with or without the pill:
awake 3h
awake indefinitely
awake offThe hush (Do Not Disturb) pill is separate: whether it exists is
haus.hush.enable, not haus.sill.items. Where it goes is still a bar
setting, which is why it can appear in haus.sill.bottom.items below.
Secrets stay out of Nix
sill never bakes a token into the build. The Harvest pill sources your own
credentials file at runtime; aiUsage reads your existing Codex login the same
way. Keep those files out of git.
A second bar along the bottom
If you want more room, or you'd rather keep the readouts off the menu bar entirely, sill can draw a second bar along the bottom of the screen at the same time:
haus.sill.bottom = {
enable = true;
items = { weather = "left"; media = "center"; hush = "right"; };
};A pill named here moves: it's drawn on the bottom bar and not the top one,
whatever haus.sill.items says. Never two copies racing each other.
The value is where it goes: "left", "center" or "right"; true means
"right". The menu bar only has one usable group (its left is the workspaces,
its middle is under the notch on a MacBook), so the bottom strip is where all
three are yours.
Three things before you turn it on:
- macOS reserves nothing at the bottom of the screen. Tiling carves the room out instead, so with tiling off, windows will run underneath it.
- The Dock shares that edge. Move it to a side, or hide it.
- Don't put both bars on the same edge.
haus.sill.position = "bottom"plus a second bar is two bars in one place; you'll get a warning on rebuild.
Turning it off
haus.sill.enable = false;The native menu bar comes back, and the bottom bar goes with it. Tiling and everything else are unaffected.
Works with
Every pill that isn't the bar's own comes from another room, and appears only when that room is on:
- Windows: the workspace pills and the leader's letter hints;
- Focus: the quiet switch's pill;
- AI: the agents readout, amber when a session is waiting on you;
- Launcher: what a click on the logo pill can reach.
A missing room removes its pill and nothing else.
Options
Every setting, with types and defaults: Bar.
Windows
Tiling, named workspaces and window navigation from the keyboard. How prowl arranges the Mac, and how to keep the arranging without the key claims.
Launcher
Pounce on ⌘Space. The room that installs the palette, hands it the key Spotlight was holding, and keeps its Accessibility grant alive across rebuilds.