Native macOS menu‑bar apps · in pure Go

Menu​bar apps,
written in Go.

menuet handles the NSStatusBar plumbing — live title, dropdown menu, notifications, global shortcuts, auto‑update — so you write Go and ship a real macOS .app.

$ go get github.com/caseymrm/menuet/v2
Read the docs Browse apps →
MIT licensed·macOS 11+·v2
THE WHOLE PROGRAM

A title, a menu,
one blocking call.

Set what shows in the menu bar with SetMenuState, return your dropdown from Children, then call RunApplication. That’s a working app.

Read the getting‑started guide →
main.go
package main

import "github.com/caseymrm/menuet/v2"

func main() {
    app := menuet.App()
    app.SetMenuState(&menuet.MenuState{
        Title: "Hello World",
    })
    app.Children = func() []menuet.MenuItem {
        return []menuet.MenuItem{
            menuet.Regular{Text: "Refresh", Clicked: refresh},
        }
    }
    app.RunApplication()
}
WHAT YOU GET

Everything a menu‑bar app needs, none of the Objective‑C.

Live, styled titles

Mix weights, colors, monospaced digits and pill badges right in the menu bar with Runs.

MenuState · TextRun

Rich dropdown menus

Rows, separators, checkmarks, subtitles and nested submenus — built from a Go slice.

Regular · Separator · Children

Global shortcuts

Register system‑wide hotkeys that fire even when your app isn’t frontmost.

Shortcut · ModCmd

Notifications & alerts

Native banners with action buttons and inline replies, plus modal dialogs with inputs.

Notification · Alert

Search in the menu

Drop a live search field into your menu — results update on every keystroke.

Search

Auto‑update & launch at login

Pull new releases straight from GitHub and register with macOS Login Items.

AutoUpdate · SMAppService
IN THE WILD

Apps built with menuet.

View all apps →

Sportsbar

Live scores in your menu bar — without spoilers.

caseymrm/sportsbar ↗

Why Awake?

Find out what's keeping your Mac up.

caseymrm/whyawake ↗

Not a Fan

CPU temperature and fan speed, always visible.

caseymrm/notafan ↗

Catalog

A live tour of every menuet feature.

menuet/cmd/catalog ↗
Built something with menuet? Run make web-preview to generate a menuet-demo.json snapshot, commit it to your repo, and open a PR adding it here.

Ship your menu‑bar app today.

One import, a few dozen lines of Go, and a real signed .app in your menu bar.

$go get github.com/caseymrm/menuet/v2
Read the docs Star on GitHub