Displays an icon in your macOS menu bar with a dropdown showing the CI check statuses of your open GitHub Pull Requests.
A rewrite of jordanandree/bitbar-github-ci in Python, using the GitHub CLI (gh) for authentication instead of a personal access token.
- Shows CI status for all your open PRs across configured repos
- Supports both GitHub Actions (check runs) and legacy commit statuses
- Sends macOS notifications when CI status changes (e.g. pending -> passed/failed)
- Clickable links to PRs and individual check runs
- GitHub Enterprise support
- xbar (v2.x)
- Python 3
- GitHub CLI (
gh), authenticated:
brew install gh
gh auth login- Copy
github-ci.1m.pyto your xbar plugins directory:
cp github-ci.1m.py ~/Library/Application\ Support/xbar/plugins/
chmod +x ~/Library/Application\ Support/xbar/plugins/github-ci.1m.py- Configure the plugin variables in xbar (Preferences > Plugins > Github CI Status):
| Variable | Description | Example |
|---|---|---|
VAR_GITHUB_USERNAME |
Your GitHub username | joloppo |
VAR_GITHUB_REPOS |
Comma-separated list of repos to monitor | owner/repo1,owner/repo2 |
VAR_GITHUB_HOSTNAME |
GitHub hostname (default: github.com) |
github.example.com |
- Refresh xbar or wait for the next poll interval (default: 1 minute).
The refresh interval is encoded in the filename. Rename the file to change it:
github-ci.1m.py- every minutegithub-ci.5m.py- every 5 minutesgithub-ci.30s.py- every 30 seconds
The plugin tracks CI state between runs and sends native macOS notifications when a PR's CI status changes (e.g. from pending to passed or failed). State is stored in a .state.json sidecar file alongside the plugin.
Originally created by Jordan Andree as a PHP/BitBar plugin. Rewritten in Python for xbar with gh CLI authentication by Joscha Gutjahr.