1Overview

Totem Bar is a macOS accessory app that keeps a piece of text pinned to your menu bar at all times. Named after the totem from Inception — the small object you check to confirm which reality you're in — Totem Bar is built for people who juggle multiple Macs.

Work and personal, client A and client B, production and staging — set any text you want on each machine so you always know which one you're looking at.

Key features:

2Getting Started

From install to your first label in five steps.

  1. Launch Totem Bar. A placeholder reading Enter your Totem appears on the right-hand side of the menu bar. Nothing shows up in the Dock.
  2. Click the Totem label in the menu bar to open its menu, then choose Settings… (⌘,).
  3. Type the string you want in the Display Text field (e.g. MacBook-Work, PROD, 🏠 Home).
  4. Optionally adjust Width Mode, Colors, and Launch at Login.
  5. Close the Settings window. Changes are applied to the menu bar immediately.
Tip
Start simple — just the machine name is fine. Over time you'll settle on conventions, like using the White on Red preset for any Mac that has a production shell open.

4Settings Window

Open from the Totem label in the menu bar → Settings… (⌘,). Every change applies to the menu bar immediately and is persisted in UserDefaults.

Settings
Display
Display Text MacBook-Work
Width Mode AutoFixed
Fixed Width 120 pt
Preview
MacBook-Work
Colors
White on Red
Yellow on Black
White on Blue
Text Color
Background Color
System
Launch at Login
Feature Flags
Enable overflow scroll

Sections

SectionContents
DisplayDisplay Text / Width Mode / Fixed Width / Overflow Behavior
PreviewLive preview mirroring the actual menu bar rendering
ColorsColor presets / Text Color / Background Color (Pro)
SystemLaunch at Login
Feature FlagsEnable overflow scroll
URL SchemeInstructions and sample commands for the totem:// scheme
Tip
The Preview section shares the same rendering path as the actual menu bar item, so you see exactly how tail truncation and marquee scrolling will look — including the scroll speed.

5Display Text

Sets the string rendered in the menu bar.

What you can enter

Specs

ItemValue
DefaultEnter your Totem
Length limitNo soft limit (constrained by width)
FontSystem, 13 pt
PersistenceUserDefaults key displayText
External updateURL scheme totem://set?text=...
Tip
Adding a single emoji makes each Mac's role intuitive at a glance. A simple convention like 🏠 for personal, 💼 for work, and 🔥 for the production-access machine goes a long way.

6Width Mode

Controls how much menu bar space Totem Bar reserves for its label.

ModeBehaviorWhen to use
Auto Width tracks the measured size of the current text Always-short labels, or you don't mind a bit of reflow
Fixed Locked to a chosen pt width (40–300 pt); overflow is truncated or scrolled You want a stable menu bar footprint regardless of text length

Fixed Width settings

Fixed-width examples

MacBook-Work 2:28 PM

Fixed 120 pt — text fits within the width

staging-de… 2:28 PM

Fixed 60 pt — overflow is truncated with a tail ellipsis

Note
If you pipe text in from scripts (Git branch, hostname, etc.) the width will jitter in Auto and shift neighbouring menu bar items around. Fixed keeps everything still.

7Overflow Behavior

Controls how text that doesn't fit a Fixed width is shown.

Feature Flag
Overflow Scroll lives behind a feature flag. Turn on Enable overflow scroll under Feature Flags in the Settings window, and set Width Mode to Fixed, for the Overflow Behavior picker to appear.

Truncate (tail ellipsis)

Anything past the fixed width is replaced with a trailing . This is the default.

Scroll (marquee)

The full text loops smoothly across the fixed width. Use this when you want the entire label readable.

  DO NOT DEPLOY TO PRODUCTION · DO NOT DEPLOY TO PRODUCTION ·   2:28 PM
ItemValue
Scroll speed30 pixels/sec
Gap between repetitions24 pt
Required conditionsFeature flag ON and Width Mode = Fixed
Note
Scroll is visually louder than Truncate — it draws your eye. If you prefer a quieter menu bar, stick with Truncate.

8Color Customization

Pair a text color with a background color to get an instantly recognizable look.

Color presets

Built-in presets, free to use. One click applies both text and background.

Default
White on Red
White on Blue
White on Green
Yellow on Black
Black on Yellow
PresetTextBackgroundSuggested use
DefaultSystem color (adaptive)Transparent (menu bar)Understated, always-on
White on Red#FFFFFF#D9342BProduction warning
White on Blue#FFFFFF#2563EBDev environment
White on Green#FFFFFF#16A34AStaging / all-clear
Yellow on Black#F5C518#111111Caution / hold
Black on Yellow#111111#F5C518Hazard

PRO Custom Colors (In-App Purchase)

The one-time Totem Bar Pro unlock opens up full color customization.

Tip
A partially transparent background color blends naturally with the menu bar (light or dark) while still tinting your label — a good balance between identifiable and unobtrusive.

9URL Scheme

Update the display text from the command line or a script via a URL. Great for shell integration and automation.

Syntax

totem://set?text=<your text here>

The text parameter accepts a URL-encoded string.

Usage

Open the URL from the terminal with open:

# Plain text
open "totem://set?text=Hello"

# Show the local hostname
open "totem://set?text=$(scutil --get LocalHostName)"

# Show the current Git branch
open "totem://set?text=$(git rev-parse --abbrev-ref HEAD)"

# IP address
open "totem://set?text=$(ipconfig getifaddr en0)"

# With an emoji (URL-encoded)
open "totem://set?text=%F0%9F%94%A5%20PROD"

Example: update on directory change

A zsh chpwd hook that updates the label whenever you cd into a Git repository:

chpwd() {
  if git rev-parse --is-inside-work-tree &>/dev/null; then
    local branch=$(git rev-parse --abbrev-ref HEAD)
    open "totem://set?text=$branch"
  fi
}

Behavior

ItemBehavior
ApplyImmediate (also persisted to UserDefaults)
If the app isn't runningLaunch Services starts it, then applies
Unknown commandIgnored silently (no error)
Empty textFalls back to the default placeholder
Note
A value set via URL scheme is equivalent to editing it in Settings — it persists across relaunches. For temporary display, have your script set it back when the triggering condition ends.

10Login Item & More

Launch at Login

Toggle on Launch at Login under the System section of the Settings window to start Totem Bar automatically when you log in.

No Dock icon (Accessory App)

Totem Bar uses the .accessory activation policy.

Resource usage

Data storage

11FAQ

Nothing shows up in the menu bar.
Totem Bar has no Dock icon, so you won't see anything unless the app is running. Launch it from Launchpad or your Applications folder. Enable Launch at Login so it starts automatically next time.
My label is missing from the menu bar.
If you have lots of status items, the Totem label can be hidden behind other app icons on smaller displays. Trim down other menu bar icons, or switch Width Mode to Fixed with a smaller pt width.
What happens to long text in Fixed mode?
By default it's tail-truncated with an ellipsis. Turn on Enable overflow scroll under Feature Flags, keep Width Mode at Fixed, and set Overflow Behavior to Scroll to marquee the full string instead.
I can't change the colors.
Custom colors are unlocked by the Totem Bar Pro in-app purchase. Buy it from the Colors section of Settings. If you've purchased before, use Restore Purchases in the same section.
totem://set?text=... doesn't do anything.
Make sure the URL is wrapped in double quotes — any & in the URL is otherwise interpreted by your shell. Example: open "totem://set?text=Hi". Also, multi-byte characters must be URL-encoded.
How do I quit?
Click the Totem label in the menu bar → Quit (or ⌘Q). There's no Dock icon, so the usual "Quit App" shortcuts don't apply.
I enabled Launch at Login but it doesn't start automatically.
Check System Settings → General → Login Items and confirm Totem Bar is allowed. Also note that macOS 13 or later is required — SMAppService isn't available on older versions, and the app will not run on those systems at all.
Can I sync the same settings across Macs?
Settings are stored per-Mac in UserDefaults and do not sync automatically. In practice, having each Mac show its own label (e.g. Home vs. Work) is the whole point. Only the Pro unlock is shared — it's tied to your Apple ID.
Where is the data stored? Is anything sent off-device?
Everything lives in the app's sandboxed UserDefaults. Nothing is sent over the network. The App Privacy label on the App Store is Data Not Collected.

12About This App

App nameTotem Bar
Bundle IDjp.prototypelabs.totem
Supported OSmacOS 13 Ventura or later
CategoryUtilities / Productivity
LanguagesEnglish, Japanese
ImplementationSwift / SwiftUI (MenuBarExtra)
DeveloperPrototype Labs
PriceFree (Totem Bar Pro is an in-app purchase)