Menu bar macOS app that displays:
- Public IP address
- Estimated IP-based location
- ISP / network organization
The app runs as an accessory app (LSUIElement) and refreshes every 60 seconds, plus on network path changes.
- Menu bar title format:
<IP> · <Location> · <ISP> - Visibility toggles for location and ISP in the menu bar title
- First-launch prompt to enable open-at-login, with persistent toggle in menu
- Location display format:
City, Region, Country - Status states: startup, updating, ready, and error
- Manual actions in menu: refresh, copy IP, open Network settings, toggle open-at-login, quit
- Public IP:
api.ipify.org, with fallback providers - Geolocation + ISP:
ipapi.co(city,region,country/country_name,org/asn)
- Language: Swift 6
- Package type: Swift Package Manager executable target
- Platform: macOS 13+
- Main components:
IPService: fetches public IPGeoService: resolves location and ISPAppState: refresh cadence/state handlingMenuBarController: status item and menu UI
Bundle generation is handled by scripts/package-app.sh.
Supported environment variables:
| Variable | Default | Purpose |
|---|---|---|
VERSION |
1.0.0 |
CFBundleShortVersionString |
BUILD_NUMBER |
1 |
CFBundleVersion |
BUNDLE_ID |
com.moises.menuip |
CFBundleIdentifier |
SIGN_IDENTITY |
- |
Code signing identity (- for ad-hoc) |
ICON_SOURCE |
~/Downloads/MenuIP.icon |
Icon source (.icon, .iconset, .icns, or .png) |
Packaging output:
dist/MenuIP.appdist/MenuIP-<VERSION>-macOS.zip