tzmate is a lightweight native macOS menu bar app for checking your local time alongside equivalent times across curated world timezones.
- Menu bar clock that updates every second
- Convert your local time across curated world timezones
- Enable or disable timezone presets from Settings
- Persist timezone preferences with
UserDefaults - Native SwiftUI + AppKit menu bar experience
- Lightweight footprint designed to live in the menu bar
- macOS 13.0 (Ventura) or later
- Xcode 15 or later
-
Clone the repository:
git clone <your-repo-url> cd <local-folder>
-
Open the project in Xcode:
open tzmate.xcodeproj
-
Build and run the app in Xcode.
Build a release app bundle from the command line:
./build.shThe built app is produced at build/Build/Products/Release/tzmate.app.
The repository includes a Homebrew cask at Casks/tzmate.rb. Generate the release DMG and update the cask metadata with the release script:
./scripts/release.sh 1.2.0The script will:
- update the Xcode marketing version
- update the app bundle identifier
- build the app in
Release - create
dist/1.2.0/tzmate-1.2.0.dmg - compute the DMG SHA256
- update the Homebrew cask version, SHA256, homepage, URL, and
zappaths
After the script completes, upload the generated DMG to the GitHub release tagged v1.2.0, then commit the updated project, cask, and docs changes.
Installation can then follow the standard pattern:
brew tap <your-username>/tzmate
brew install --cask tzmateHomebrew tap repositories use the homebrew-<tapname> naming convention, so brew tap Ri5ha6h/tzmate maps to the GitHub repository Ri5ha6h/homebrew-tzmate.
-
Create a GitHub repository named
homebrew-tzmate. -
Add the cask file:
tzmate/ └── Casks/ └── tzmate.rb -
Update
Casks/tzmate.rb:- confirm the release
urlmatches your GitHub release asset naming - confirm the
homepagematcheshttps://github.com/<your-username>/homebrew-tzmate - commit the script-updated
sha256 - adjust the
zapbundle preference paths if you ship with a different bundle identifier
- confirm the release
-
Push the tap repository to GitHub.
-
Install via Homebrew:
brew tap <your-username>/tzmate brew install --cask tzmate
The install command uses the tap name tzmate, while the backing GitHub repository is named homebrew-tzmate.
- Launch
tzmate. - Click the menu bar clock to open the popover.
- Review your local time and enabled timezone rows.
- Open
Settingsto enable or disable additional presets. - Open
Aboutto view the app version and summary information.
- UTC - Coordinated Universal Time
- PST - Pacific Time (
America/Los_Angeles) - EST - Eastern Time (
America/New_York) - CET - Central European Time (
Europe/Paris) - GMT - Greenwich Mean Time (
Europe/London) - IST - India Standard Time (
Asia/Kolkata) - JST - Japan Standard Time (
Asia/Tokyo) - AEST - Australian Eastern Time (
Australia/Sydney) - CST - Central Time (
America/Chicago) - MST - Mountain Time (
America/Denver) - HKT - Hong Kong Time (
Asia/Hong_Kong) - SGT - Singapore Time (
Asia/Singapore)
tzmate/
├── tzmate.xcodeproj/
├── tzmate/
│ ├── App/
│ ├── Models/
│ ├── Services/
│ ├── ViewModels/
│ ├── Views/
│ ├── Resources/
│ └── Support/
├── Casks/
│ └── tzmate.rb
├── scripts/
│ └── release.sh
├── build.sh
└── README.md