BitBar (by Mat Ryer - @matryer) lets you put the output from any script/program in your Mac OS X Menu Bar.
- Download and View plugin repository
- Get started
- Installing plugins
- Contributing
- Thanks
- Guide to writing plugins
Example showing the latest Buy and Sell figures for BitCoins:
Click to see the full output, and more options:
Example showing your internal and external IP addresses:
Get the latest version of BitBar. Copy it to your Applications folder and run it - it will ask you to (create and) select a plugins folder, do so.
Homebrew Cask users can, alternatively, install BitBar by running brew cask install bitbar
.
Browse our plugins to find useful scripts, or write your own.
If you love this, any BitCoin donations are most welcome, to 1DGoNEYAnjE5DqK7y5zMPR4PLU5HLKpLNR
or send something useful (Amazon Wishlist).
Just download the plugin of your choice into your BitBar plugins directory and choose 'Reset' from one of the BitBar menus.
The refresh time is in the filename of the plugin, following this format:
{name}.{time}.{ext}
name
- The name of the filetime
- The refresh rate (see below)ext
- The file extension
For example:
date.1m.sh
would refresh every minute.
Most plugins will come with a default, but you can change it to anything you like:
- 10s - ten seconds
- 1m - one minute
- 2h - two hours
- 1d - a day
Ensure the plugin is executable by running chmod +x plugin.sh
.
Because Git will ignore everything in Plugins/Enabled
, you can use it to maintain your own plugins directory while still benefitting from tracking (upstream) changes.
cd Plugins/Enabled
# Enable spotify plugin
ln -s ../Music/spotify.10s.sh
# Enable uptime plugin and change update interval to 30 seconds
ln -s ../System/uptime.1m.sh uptime.30s.sh
Then select the Enabled
folder in your BitBar preferences.
In case you made the mistake of choosing a directory with thousands of files as the plugin directory and BitBar getting stuck forever, do this from terminal to reset it:
defaults delete com.matryer.BitBar
- If you want to contribute a plugin, please head over to the Plugin repository and submit a pull request. Be sure to read our guide to writing plugins below.
To work on the BitBar app, fork, then clone this repo.
In terminal, navigate to the project directory and run:
git submodule init && git submodule update
- Special thanks to @muhqu and @tylerb for all their help (see commit history for details)
- Thanks to Chris Ryer for the app logo - and to @mazondo for the original
- Thanks for all our plugin contributors who have come up with some pretty genius things
We're always looking for new plugins, so please send us pull requests if you write anything cool or useful.
If you've got ideas, or want to report a bug, nip over to our issues page and let us know.
If you want to contribute, please send us a pull request and we'll add it to our repos.
- Ensure the plugin is executable
- Include an update to the list of plugins
- Please add your name and a link to the Contributors list
- To write a plugin, just write some form of executable script that outputs to the standard output.
- Multiple lines will be cycled through over and over.
- If your output contians a line consisting only of
---
, the lines below it will appear in the dropdown for that plugin, but won't appear in the menu bar itself. - Your lines might contain
|
to separate the title from other parameters, such as...href=..
to make the dropdown items clickablecolor=..
to change their text color. eg.color=red
orcolor=#ff0000
font=..
to change their text font. eg.font=UbuntuMono-Bold
size=..
to change their text size. eg.size=12
bash=..
to make the dropdown run a given script terminal with your script e.g.bash="/Users/user/BitBar_Plugins/scripts/nginx.restart.sh --verbose"
terminal=..
if need to start bash script without open Terminal may be true or falserefresh=..
to make the dropdown items refresh the plugin it belongs todropdown=..
May be set totrue
orfalse
. Iffalse
, the line will only appear and cycle in the status bar but not in the dropdownlength=..
to truncate the line to the specified number of characters. A…
will be added to any truncated strings, as well as a tooltip displaying the full string. eg.length=10
- If you're writing scripts, ensure it has a shebang at the top.
- You can add to
PATH
by including something likeexport PATH='/usr/local/bin:/usr/bin:$PATH'
in your plugin script. - You can use emoji in the output (find an example in the Music/vox Plugin).
- If your bash script generates text in another language, set the
LANG
variable with:export LANG="es_ES.UTF-8"
(for Spanish) to show the text in correct format.
#!/bin/bash
date
#!/bin/bash
# the current date and time
date
# the current username
echo $USER
# the current user id
id -u
#!/bin/bash
echo "One"
echo "Two"
echo "Three"
echo "---"
echo "Four"
echo "Five"
echo "Six"
- Only One, Two and Three will appear in the top bar
- Clicking the plugin menu item will show all lines
#!/bin/bash
curl -m 1 http://example.com -I >/dev/null 2>&1
[ $? -gt 0 ] && echo "FAIL | color=red" || echo "OK | color=green"
echo "---"
echo "Show Graphs | color=#123def href=http://example.com/graph?foo=bar"
echo "Show KPI Report | color=purple href=http://example.com/report"
#!/bin/zsh
FONT=( 'size=14' 'font=UbuntuMono' )
if ((0)); then echo "DO | $FONT color=orange"
else echo "DO | $FONT color=cadetblue"
echo "---"
...
Anything that can write to standard out is supported, but here is a list that have been explicitly tested.
- Ruby
- Status: Working
- Output:
puts "your string here"
- Python2
- Status: Working
- Output:
print "your string here"
- Python3
- Status: Working
- Output:
print("your string here")
- JavaScript (
node
) - Status: Working
- Caveats: Shebang has to be in the format
#!/usr/bin/env /path/to/the/node/executable
- Output:
console.log("your string here")
- Notes:
1.
process.stdout.write
doesn't output desired text. 1. There may be a better way to run JavaScript files. - CoffeeScript (
coffee
) - Status: Working
- Caveats:
1. Shebang has to be in the format
#!/usr/bin/env /path/to/the/coffee/executable
1.coffee
shebang also had to be modified.#!/usr/bin/env /path/to/the/node/executable
- Output:
console.log "your string here"
- Notes:
1.
process.stdout.write
doesn't output desired text. 1. There may be a better way to run CoffeeScript files. - Swift (Interpreted)
- Status: Working
- Output:
print("your string here")
- Swift (Compiled)
- Status: Working
- Caveats: You still need a file extension (
file.cswift
) - Output:
print("your string here")
- Notes:
1. To compile a swift file, use:
xcrun -sdk macosx swiftc -o file.1s.cswift file.1s.swift