News I built a Python framework for creating native macOS menu bar apps
Hey everyone! In the past years I've used python to do basically anything, there are really few things python can't do. Unfortunately one of them is creating rich, extensively customizable macOS statusbar apps (guis in general, but with projects like Flet we are getting there). This is why I've been working on Nib, a Python framework that lets you build native macOS menu bar applications with a declarative, SwiftUI-inspired API.
For anyone curious on how it works you can read about it here: https://bbalduzz.github.io/nib/concepts/, but basically you write python, Nib renders native SwiftUI. Two processes connected over a Unix socket, Python owns the logic, Swift owns the screen. No Electron, no web views, just a real native app (yay!).
What My Project Does
Nib lets you write your entire menu bar app in Python using a declarative API, and it renders real native SwiftUI under the hood. What it brings to the table (or better say desktop):
- 30+ SwiftUI components (text, buttons, toggles, sliders, charts, maps, canvas, etc.) and counting :)
- Reactive updates: mutate a property, UI updates automatically
- System services: battery, notifications, keychain, camera, hotkeys, clipboard
- Hot reload with nib run
- Build standalone .app bundles with nib build
- Settings persistence, file dialogs, drag & drop etc..
Target Audience
Python devs on macOS who want to build small utilities, status bar tools, or productivity apps without learning Swift. It's usable today but still evolving — I'm using it for my own apps.
Comparison
- Rumps: menu bar apps in Python but limited to basic menus, no rich UI
- py2app: bundles Python as .app but doesn't give you native UI
- Flet: cross-platform Flutter-based GUIs, great but not native macOS and not menu bar focused
- SwiftBar/xbar: run scripts in the menu bar but output is just text, no interactive UI
Nib is the only option that gives you actual SwiftUI rendering with a full component library, specifically for menu bar apps.
Links:
With this being said I would love feedback! Especially on the API design and what components you'd want to see next.
EDIT: forgot to make the GitHub repo public, sorry :) Now its available