Put the output from any script or program into your macOS Menu Bar (the BitBar reboot)

Overview

Welcome to xbar

xbar (the BitBar reboot) lets you put the output from any script/program in your macOS menu bar.

Digging deeper:

And finally...

Get started

Install

Installing plugins

From an xbar menu, choose Preferences > Plugins... to use the xbar app to discover and manage plugins.

You can browse all the plugins online, or write your own.

The Plugin Directory

The plugin directory is folder on your Mac where the plugins live, located at ~/Library/Application Support/xbar/plugins.

  • If you're transitioning from Bitbar, move your plugins into this new folder to install them

Contributing

If you'd like to contribute a plugin, head over to https://github.com/matryer/xbar-plugins to get started.

Please do not send pull requests to this repo. Open an issue and start a conversation first. PRs will likely not be accepted.

Writing plugins

To write a plugin, you need to be able to produce some kind of executable (usually a script) that prints out lines of text.

The text is converted into menus by xbar.

Share your plugin

If you want to add your plugin to the app, please send us a pull request to https://github.com/matryer/xbar-plugins.

  • Ensure the plugin is executable
  • Be sure to include appropriate Metadata to enhance the plugin's entry on xbarapp.com

Configure the refresh time

The refresh time is in the filename of the plugin, following this format:

{name}.{time}.{ext}
  • name - The name of the file
  • time - 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 using the app:

  • 10s - ten seconds
  • 1m - one minute
  • 2h - two hours
  • 1d - a day

Ensure the plugin is executable

Ensure the plugin is executable by running chmod +x plugin.sh.

Plugin API

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 contains a line consisting only of ---, the lines below it will appear in the dropdown for that plugin, but won't appear inthe menu bar itself.
  • Lines beginning with -- will appear in submenus.
    • Use ---- etc. for nested submenus. Two dashes per level of nesting.
  • Your lines might contain | to separate the title from other parameters

Parameters

Use the pipe | character to specify extra parameters onto the menu item.

For example:

Open website | href=https://xbarapp.com | color=red | key=CmdOrCtrl+o
Open home folder | shell=open | param1="~/"
App version: v1.0 | disabled=true | size=10

The supported parameters are:

  • key=shift+k to add a key shortcut
    • Use + to create combinations
    • Example options: CmdOrCtrl, OptionOrAlt, shift, ctrl, super, tab, plus, return, escape, f12, up, down, space
  • href=.. to make the item clickable
  • color=.. to change the text color. eg. color=red or color=#ff0000
  • font=.. to change the text font. eg. font=UbuntuMono-Bold
  • size=.. to change the text size. eg. size=12
  • shell=.. to make the item run a given script terminal with your script e.g. shell=/Users/user/xbar_Plugins/scripts/nginx.restart.sh if there are spaces in the file path you will need quotes e.g. shell="/Users/user/xbar Plugins/scripts/nginx.restart.sh" (bash is also supported but is deprecated)
  • param1= to specify arguments to the script. Additional params like this param2=foo param3=bar
    • For example shell="/Users/user/xbar_Plugins/scripts/nginx.restart.sh" param1=--verbose assuming that nginx.restart.sh is executable or shell=/usr/bin/ruby param1=/Users/user/rubyscript.rb param2=arg1 param3=arg2 if script is not executable
  • terminal=.. start bash script without opening Terminal. true or false
  • refresh=.. to make the item refresh the plugin it belongs to. If the item runs a script, refresh is performed after the script finishes. eg. refresh=true
  • dropdown=.. May be set to true or false. If false, the line will only appear and cycle in the status bar but not in the dropdown
  • length=.. 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
  • trim=.. whether to trim leading/trailing whitespace from the title. true or false (defaults to true)
  • alternate=true to mark a line as an alternate to the previous one for when the Option key is pressed in the dropdown
  • templateImage=.. set an image for this item. The image data must be passed as base64 encoded string and should consist of only black and clear pixels. The alpha channel in the image can be used to adjust the opacity of black content, however. This is the recommended way to set an image for the statusbar. Use a 144 DPI resolution to support Retina displays. The imageformat can be any of the formats supported by Mac OS X
  • image=.. set an image for this item. The image data must be passed as base64 encoded string. Use a 144 DPI resolution to support Retina displays. The imageformat can be any of the formats supported by Mac OS X
  • emojize=false will disable parsing of github style :mushroom: into 🍄
  • ansi=false turns off parsing of ANSI codes.

Metadata

You must add the following metadata to your source code (usually in comments somewhere):

# Metadata allows your plugin to show up in the app, and website.
#
#  <xbar.title>Title goes here</xbar.title>
#  <xbar.version>v1.0</xbar.version>
#  <xbar.author>Your Name, Another author name</xbar.author>
#  <xbar.author.github>your-github-username,another-github-username</xbar.author.github>
#  <xbar.desc>Short description of what your plugin does.</xbar.desc>
#  <xbar.image>http://www.hosted-somewhere/pluginimage</xbar.image>
#  <xbar.dependencies>python,ruby,node</xbar.dependencies>
#  <xbar.abouturl>http://url-to-about.com/</xbar.abouturl>

# Variables become preferences in the app:
#
#  <xbar.var>string(VAR_NAME="Mat Ryer"): Your name.</xbar.var>
#  <xbar.var>number(VAR_COUNTER=1): A counter.</xbar.var>
#  <xbar.var>boolean(VAR_VERBOSE=true): Whether to be verbose or not.</xbar.var>
#  <xbar.var>select(VAR_STYLE="normal"): Which style to use. [small, normal, big]</xbar.var>
  • The comment characters can be anything - use what is suitable for your language
  • xbar.title - The title of the plugin
  • xbar.version - The version of the plugin (start with v1.0)
  • xbar.author - Comma separated list of authors (primary author first)
  • xbar.author.github - Comma separated list of github usernames (without @)
  • xbar.desc - A short description of what your plugin does
  • xbar.image - A hosted image showing a preview of your plugin (ideally open)
  • xbar.dependencies - Comma separated list of dependencies
  • xbar.abouturl - Absolute URL to about information
  • xbar.var - A user-input parameter which will be available as an environment variable with the same name (learn more about Variables in xbar)

For a real example, see the Cycle text and detail plugin source code.

Useful tips

  • If you're writing scripts, ensure it has a shebang at the top.
  • You can add to PATH by including something like export 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.
  • If you want to call the plugin script for action, you can use bash=$0
  • If your plugin should support Retina displays, export your icon at 36x36 with a resolution of 144 DPI (see this issue for a more thorough explanation).

Examples

One line plugin

#!/bin/bash
date

Multi-line plugin

#!/bin/bash

# the current date and time
date

# the current username
echo $USER

# the current user id
id -u

Multi-line plugin with extra data

#!/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 the remaining items in the dropdown

Multi-line plugin with links and colors

#!/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"

Multi-line plugin with fonts and colors

xbar Example showing colored fonts

#!/bin/zsh
FONT=( 'size=14' 'font=UbuntuMono' )
if ((0)); then echo "DO | $FONT color=orange"
else           echo "DO | $FONT color=cadetblue"
echo "---"
...

Plugin with variables

Specifying variables in the metadata will cause end-users to be prompted for values when they install the plugin.

From there, the values will be available as environment variables.

#!/bin/zsh

# ... other metadata ...
#
# <xbar.var>string(VAR_API_KEY=""): API key to get access to remote data.</xbar.var>

# VAR_API_KEY will be available as an environment variable
load_data -apikey=$VAR_API_KEY

Detecting dark mode

When the system appearance changes, xbar will update the following environment variable:

XBARDarkMode=true|false
  • Use XBARDarkMode in your plugins to render different things in light/dark modes

Supported languages

Anything that can write to standard out is supported, but here is a list that have been explicitly tested, along with some helpful tips.

  1. Ruby
    • Status: Working
    • Output: puts "your string here"
  2. Python2
    • Status: Working
    • Output: print "your string here"
  3. Python3
    • Status: Working
    • Output: print("your string here")
    • Caveats: To output unicode shebang has to be in the format #!/usr/bin/env PYTHONIOENCODING=UTF-8 /path/to/the/python3
  4. 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:
      • process.stdout.write doesn't output desired text.
      • There may be a better way to run JavaScript files.
    • Tips:
  5. CoffeeScript (coffee)
    • Status: Working
    • Caveats:
      • Shebang has to be in the format #!/usr/bin/env /path/to/the/coffee/executable
      • coffee shebang also had to be modified.
        • #!/usr/bin/env /path/to/the/node/executable
    • Output: console.log "your string here"
    • Notes:
      • process.stdout.write doesn't output desired text.
      • There may be a better way to run CoffeeScript files.
  6. Swift (Interpreted)
    • Status: Working
    • Output: print("your string here")
  7. Swift (Compiled)
    • Status: Working
    • Caveats: You still need a file extension (file.1s.cswift)
    • Output: print("your string here")
    • Notes:
      • To compile a swift file, use: xcrun -sdk macosx swiftc -o file.1s.cswift file.1s.swift
  8. Go (Interpreted)
    • Status: Working
    • Caveats:
      • Your script's shebang must be: //usr/bin/env go run $0 [email protected]; exit
      • go must be in your PATH
    • Output: Println("your string here")
  9. Go (Compiled)
    • Status: Working
    • Caveats: You still need a file extension (file.1s.cgo)
    • Output: Println("your string here")
    • Notes
      • To compile a Go file, use: go build file.1s.go
  10. Lisp
    • Status: Working
    • Caveats: lisp/clisp must be in your PATH
    • Output: (format t "your string here")
  11. Perl5
    • Status: Working
    • Output: print "your string here"
    • Notes
      • Add -l to shebang to automatic add newline to print function: #!/usr/bin/perl -l
  12. PHP

Advanced APIs

xbar:// control API

It is possible to control xbar using special xbar:// URLs:

  • xbar://app.xbarapp.com/openPlugin?path=path/to/plugin - openPlugin opens a plugin in the app
  • xbar://app.xbarapp.com/refreshPlugin?path=path/to/plugin - refreshPlugin refreshes a specific plugin

Plugin variable JSON files

Variables are stored in JSON files alongside your plugin. The key is the name of the Variable and the name of the environment variable. The values are the user's preferences.

You can programmatically modify the JSON files to adjust the values. Use the refresh control API above to refresh plugins after changing variables.

For example, the variables file for the tail.5s.sh plugin looks like this:

{
	"VAR_FILE": "./001-tail.5s.sh",
	"VAR_LINES": 15
}

Xbar config

You can control xbar behaviour by modifying the /Library/Application Support/xbar/xbar.config.json file:

  • This file doesn't exist by default, you may need to create it.
{
	"autoupdate": true,
	"terminal": {
		"appleScriptWithVarsTemplate": ""
   }
}
  • Changes take effect next time xbar starts
  • autoupdate - (boolean) whether to keep xbar automatically updated or not
  • terminal.appleScriptWithVarsTemplate - (string) the AppleScript to use when Run in terminal option is used (use "false" to turn this feature off)

You can delete this file and restart xbar to reset to defaults.

Thanks

Issues
  • Duplicated menu items

    Duplicated menu items

    MBP, El Capitan, v. 1.3.1

    When I wake computer from sleep multiple instances are shown in menubar.

    screen shot 2015-12-27 at 10 13 21 bug 
    opened by alesf 73
  • [WIP] Migrate to Swift

    [WIP] Migrate to Swift

    This pull request aims to add support for Swift 3. It's based up-on the beta branch and implements support for all parameters described in the README. The main goal has been to modernize the application stack by implementing a combinatory LL parser verified using property-based testing.

    The parser

    The parser, the piece of software responsible for processing script outputs, is implemented using the FootlessParser parser and is located in App/BitBar/Parser/Parser.swift. It's build up-on 50+ smaller parser (hence the name; parser combinator), such as Length.init <^> attribute("length") { digits() } for parsing the length attribute (length=X).

    The parser is context aware and will handle nested sub menus as well as invalid arguments, i.e length=false. One of the major benefits of using a parser like this ability to generate easy-to-understand error messages much similar to those generated by a compiler/transpiler. This makes implementing plugins easier as errors are caught and raised early. An example is Expected 'a number' on 3:12, but got 'false' when passing length=false.

    Testing

    The parser is verified using the SwiftCheck library, a property-based testing framework for generating test data. The current test suit is ran against 1400 random examples.

    The rest of the implementation is partially tested (about 80 tests) using the Quick testing framework.

    Run make test to run the suit once or make watch to run make test each time a file is changed. Don't forget to install the dependencies listed below.

    The application is ready for travis-ci and the latest builds can be found here.

    Dependencies

    I've tried to "out source" as much of the implementation as possible to external libraries using CocoaPods. There's currently 11 dependencies which can be found the in the App/Podfile file. They are automatically installed when running make deps.

    How to use

    1. Clone the project
    2. Install project dependencies using
      1. gem install cocoapods xcpretty
      2. make deps to install the pods
    3. Run tests suit using make test
    4. Build and run using XCode by opening App/BitBar.xcworkspace. This will use the App/Scripts/sub.1m.sh example script and output something like

    skarmavbild 2017-01-14 kl 18 37 31

    What's next

    • Test quoted values, i.e href="...". Implementation is done but hasn't been tested using SwiftCheck
    • Better error messages
    • (Re)implement
      • The preference menus
      • Sparkle for updates
    • Dynamic plugin path. The current one is hard coded
    • Refactor test suit, custom matchers?
    • Handle both ANSI and truncate for the same title
    • The font size is a bit off right now, not really sure why

    Flow

    This is the basic flow of data in the application. I tried to use the same naming convention as the existing application.

    skarmavbild 2017-01-14 kl 19 18 09

    A summery

    • Parser with support for
      • ANSI colors
      • Params (length, trim and so on)
      • Menus
      • Infinitive number of sub menus
    • CocoaPods for dependency management
    • Property-based testing using SwiftCheck
    • BDD/TDD using the Quick framework
    • XCode independent, using xcpretty for output formatting and make watch as file watcher
    • Swiftlint compatible (make fix and make lint uses this)
    • Makefile based on the Alcatraz project
    • Gitignore from github/gitignore
    • Travis-ci compatible (make ci) (latest builds)

    Epilog

    I might have gone a bit overboard with this pull request. The initial idea was to fix #379 but after spending hours with segmentation faults and other obscure errors, caused by my lack of understanding of the language, I decided to look for alternatives. After searching for "swift" in issue tracker I found a few comments from @matryer regarding migrating to Swift – so I decided to give it a go my self.

    With that said I understand if this is "to much" and if you decide not to merge.

    A side note; I might have removed files from the original project when simplifying the implementation a few weeks ago. If you find something that should be in the project but isn't, such as assets files, let me know and I'll add it.

    ~ L

    opened by oleander 58
  • LOOKING FOR MAINTAINERS

    LOOKING FOR MAINTAINERS

    Hey I am curious is this still maintained at all? Thanks!

    opened by austinbv 39
  • Configuration for bitbar and plugins

    Configuration for bitbar and plugins

    Read config from something like ~/.bitbarrc. This should also enable plugins to hook into it.

    For example, for the jenkins plugin, within ~/.bitbarrc:

    [jenkins]
    user="user"
    password="password"
    

    If not for this approach, some config management will be of use.

    opened by manojlds 39
  • Refresh from URL steals focus, displays

    Refresh from URL steals focus, displays "Updating..."

    When I tell BitBar to refresh using the URL syntax "bitbar://refreshPlugin?name=blablabla", two things happen which I find undesirable.

    1. BitBar steals the application focus, or at least un-focuses the app I'm in. An example of this is that I'm using Keyboard Maestro which will periodically ask BitBar to refresh a plugin. This happens in the background, as a result of some action like a timer. When it happens, The app I'm in loses focus.

    2. When I use the URL plugin refresh, BitBar displays "Updating" in the Mac Menubar. Is this really necessary, when I'm only refreshing one plugin? It's annoying and distracting. ;p

    Or is there another syntax which will not cause this to happen? I'm really just saying "I know you're supposed to run on the hour, but please run right now". So perhaps "refresh" is the wrong thing to use? Thanks.

    PS: Love BitBar!!

    ♡ todo 
    opened by dagware 32
  • Is there any way to set the order of your BitBar icons in menu?

    Is there any way to set the order of your BitBar icons in menu?

    Hi all,

    My question is basically the above: I have 5 or 6 BitBar icons running at any one time and their order is changing, which I think happens based on their respective refresh rates. Is there any way to give their position relative to each other in the menu bar a permanent order? I've read all of the documentation I can find and can't see any way of setting this.

    Thanks in advance for any help!

    opened by zverhope 32
  • Feature Request: Ability to add 'tooltip' text to any line

    Feature Request: Ability to add 'tooltip' text to any line

    Similar to how menu items behave when being truncated in the resulting menu per #131 , it would be great to be able to manually add a tooltip string to any menu line. Perhaps with a new flag, like tooltip='some string', or tip='some string' but of course the tooltip text could be a variable dynamically generated within the plug-in script itself, and not necessarily hardcoded per line. I could make use of this to tidy up some plug-ins I use. Rather than including too much information directly rendered in the menu, I can place the less important but still relevant info into a tooltip that only appears when hovered over. It could also be used to explain what the menu line is referencing for example. I'm thinking since BitBar already supports automatic tooltips based on truncated lines, adding them in manually per line may also be possible in a future rev. The only issue I see with this is, what would get displayed in a case where a manual tooltip string was added, and the line gets truncated because of the default or set length attribute? Some decision would need to be made on what to show in the tooltip in such a case. Thoughts?

    ♡ todo 
    opened by mm2270 30
  • Here is how you build bitbar (includes recent build with vertical text align fix)

    Here is how you build bitbar (includes recent build with vertical text align fix)

    I was excited about this project until I saw the text was vertically misaligned, then couldn't believe a fix has been published since forever but wasn't released because of politics or something.

    So here is how you can build this project yourself, approximative guide. Will save you 30 minutes of your time. I myself had no clue so it took that long.

    1. Fetch either the updated repository or the one with a fix you care about, say the one in #496. You need to use --recursive and git clone (my first mistake) git clone --recursive https://github.com/guillaumewuip/bitbar.git (this is not the official repository)!
    2. Replace the Makefile with what's suggested in this other pr: #503
    3. Do the same for App/BitBar.xcodeproj/project.pbxproj
    4. Open the project in xcode, compile it
    5. Go back to the root directory and run make
    6. The compiled file will be in App/build/Release/BitBar.app, move that to /Applications and you are done

    Now if you really trust me for some reason or another you can fetch the binary directly from here - please note that while I have no malicious intention and I kinda trust the code I downloaded I might have been fooled.

    https://github.com/cedivad/bitbar-binary

    Cheers Davide

    opened by cedivad 29
  • Refresh is not cleaning out previous version of script?

    Refresh is not cleaning out previous version of script?

    Not exactly sure what is going on, but here are the symptoms. It seems bitbar runs hot on "Avg Energy Impact," so I created a quick and dirty plugin to watch the cpu level. The plugin writes out cpu value from top every 3 secs to a /tmp file - and then displays the contents of the file with tail. Correct behavior would be a new entry every 3 secs. When I select refresh from the menu, it will now write two entries every 3 secs... hit refresh again, now you get three entries, and so on. Somehow "refresh" is not clearing out the "old" plugin - it is still running in the background. Expected (last 4 entries) image

    After 3x refresh (last 4 entries) image

    On refresh, it is leaving "something" behind.

    BTW, excellent article on app resource usage.

    opened by JaredVogt 27
  • Terminal param is not working on latest xbar

    Terminal param is not working on latest xbar

    The following xbar plugin will not work on version 2.0.35-beta

    #!/bin/bash
    echo "terminal | shell=/bin/bash terminal=true"
    

    When clicking on the menu it doesn't do anything.

    bug 
    opened by bluescreen10 26
  • Disable check for updates

    Disable check for updates

    How do I disable xbar checking for updates?

    I've installed via brew, and I update it via brew. I don't want xbar to check for updates, and I really don't want it interrupting me every day to tell me an update is available. Is there a way to turn the whole update-checking-and-automatic-updating subsystem off completely? (I've looked and failed to find any way of doing this.)

    opened by OpinionatedGeek 2
  • Possible to run a command on xbar quit?

    Possible to run a command on xbar quit?

    Wondering if this is possible? I've set xbar up for connecting to openfortivpn and this is working well but would like to add a check that if I call quit or xbar quits - it will auto disconnect the VPN. Is something like this possible?

    Thanks

    opened by Jiriteach 0
  • Possible to rename xbar in dropdown?

    Possible to rename xbar in dropdown?

    Hi - Anyone know if its possible to rename xbar in the dropdown or customise the xbar > menu? Have my dropdown working well but would like to rename xbar to Preferences for example.

    Thanks

    opened by Jiriteach 0
  • pbpaste not working

    pbpaste not working

    test.1m.sh

    echo "--pbpaste_test | shell=/path/to/test.sh"
    

    test.sh

    /usr/bin/pbpaste >> /path/to/pbpaste_test.txt
    
    opened by kzhui125 4
  • Commuter API not usable with German locale

    Commuter API not usable with German locale

    I think it should be mentioned that its a python2 script which is deprecated. Hence it was not so straightforward to install the missing dependency (simplejson).

    Also the script cannot process German Umlaute in the response JSON and can thus not be used in Germany. It would be nice to mention the install steps also as a comment at the top:

    1. Install simplejson dependency and use python2
    2. Create 'origin.txt' and 'dest.txt' in commute_folder
    3. Add API key
    opened by elchead 1
  • "Unicorn!" plugin crashes xbar for me

    @mnin - this plugin brakes xbar for me. Would not display anything in the menu bar. Once I deleted "Unicorn!" from the Plugin folder xbar went back to working. Is this replicated for others?

    @matryer - Feature request: once xbar is running in the background if I 'open' xbar again from the Applications folder it would bring up xbar setttings -- in this case xbar Plugin folder, similar to how Bartender or Pastebot function. (would have made fixing the above issue much eaiser)

    opened by leland359 3
  • Always use indirection to locate interpreter

    Always use indirection to locate interpreter

    When I first installed xbar, I downloaded a whole load of different plugins and realised almost none of them are working correctly, i.e. many bash script features such as command substitutions were not working.

    I made a plugin named 001-test1.1s.bash which is simply:

    #!/bin/bash
    echo $BASH_VERSION
    

    Running this script in terminal with $ bash 001-test1.1s.bash gives an output of 5.1.8(1)-release, which is what I would expect the output to be when running with xbar. However xbar outputs 3.2.57(1)-release, a very old version of bash.

    After further research, I found that /bin/sh in macOS is just an old version of /bin/bash running in sh compatibility mode, and if I run the script with sh in terminal i.e. $ sh 001-test1.1s.bash this gives exactly the same output, so I am guessing that xbar is running the script with /bin/sh, and not respecting the shebang at the top of the file or the .bash file extension.

    opened by ryan-mooore 8
  • If a plugin returns no output, don't update the menu.

    If a plugin returns no output, don't update the menu.

    ...However, it seems if the script produces no output it wipes out the menu portion which defeats my purpose. If you could somehow build a fix such that if the script sends no output that nothing is changed in the current display that would be great...

    Originally posted by @mlcampbe in https://github.com/matryer/xbar/issues/738#issuecomment-872254018

    ? question 
    opened by matryer 2
  • retries on api calls

    retries on api calls

    to avoid https://github.com/matryer/xbar/issues/757

    opened by matryer 0
Releases(v2.1.6-beta)
Owner
Mat Ryer
pace.dev and firesearch.dev - Gopher, developer, speaker, author (Go Programming Blueprints) - Xbar (BitBar reboot) xbarapp.com (now in beta)
Mat Ryer
Menu Bar RSS reader for macOS

baRSS – Menu Bar RSS Reader What is it? A RSS & Atom feed reader that lives in the system status bar. Very much inspired by RSS Menu; go ahead and che

Helena Schobs 34 Sep 16, 2021
🎶 Control Apple Music right from your macOS menu bar.

About Music Bar is macOS application that places music controls right in your menu bar. Installation Download and unzip the latest release. Drag the a

Musa 138 Sep 13, 2021
An ultra-light MacOS utility that helps hide menu bar icons

Hidden Bar Hidden Bar lets you hide menu bar items to give your Mac a cleaner look. ?? Install  App Store Others The Hidden Bar is notarized before d

Dwarves Foundation 4.7k Sep 16, 2021
macOS app that allows the control of Spotify and AppleMusic/iTunes music playback from the menu bar.

PlayStatus is a simple macOS app that allows the control of Spotify, Apple Music(macOS 10.15+) and iTunes including iTunes Radio/Beats1 playback from

Nikhil Bolar 79 Sep 16, 2021
Free system monitor for OSX and macOS. See all system information at a glance in the menu bar.

iGlance is a small system monitor that displays current stats about your Mac on the menu bar. It is built to be highly customizable so that everyone c

iGlance 1.7k Sep 23, 2021
Replacement for MacOS' volume, brightness and keyboard backlight HUDs.

SlimHUD Replacement for MacOS' HUDs. Every day you change your volume or brightness and an ugly and unbelievably old overlay animation appears. SlimHU

Alex Perathoner 133 Sep 13, 2021
Control the listening mode on your AirPods Pro in the Touch Bar or Menu Bar.

NoiseBuddy Change noise cancelling settings on your AirPods Pro or Beats Solo Pro directly from your Mac's Menu Bar or Touch Bar. I wanted an easier w

Guilherme Rambo 622 Sep 22, 2021
Hide menu bar icons on macOS

Hide menu bar icons to give your Mac a cleaner look. ⚙️ Install Using Homebrew Cask: brew install --cask dozer Manual: Download, open and drag the app

Morten 5.3k Sep 24, 2021
Your next meeting always before your eyes in the macOS menu bar

MeetingBar is a menu bar app for your calendar meetings (macOS 10.15+). Integrated with 20+ meeting services so you can quickly join meetings from eve

Andrii Leitsius 2.4k Sep 21, 2021
A simple (bare-bones) macOS menubar extra to apply display presets.

Display Menu A simple macOS menubar extra to apply display presets. A preset consists of screen resolutions, mirroring configurations, and dock settin

Chris Warrick 36 Mar 12, 2021
A Dimness and Night Shift menu bar app for macOS 🌙

Nocturnal Have more control over your screen at night About Nocturnal is a menu bar app for macOS that allows you to go the extra mile in controlling

Joshua Jon 230 Sep 14, 2021
CloudyTabs is a simple menu bar application that lists your iCloud Tabs.

CloudyTabs CloudyTabs is a simple menu bar application that lists your iCloud Tabs and Reading List. Installation Download CloudyTabs and copy it to y

Josh Parnham 725 Sep 23, 2021
A macOS menu bar app that enables system-wide navigation functionality for the side buttons on third-party mice.

macOS mostly ignores the M4/M5 mouse buttons, commonly used for navigation. Third-party apps can bind them to ⌘+[ and ⌘+], but this only works in a sm

Alexei Baboulevitch 1.4k Sep 17, 2021
A macOS menu bar APP helps you stay focused

A macOS menu bar APP helps you stay focused

Tim Qian 62 Aug 23, 2021
Menu Bar App for Managing Kubernetes Contexts on Mac

KubeContext A small menu bar app for managing Kubernetes contexts. Easily switch between contexts Import/export contexts from/to kubeconfig files Cont

Hasan Turken 260 Sep 21, 2021
A macOS menu bar app that gives you more control over Grayscale Mode.

Grayscale Mode An open source macOS menu bar app that gives you more control over Grayscale Mode. Features Quickly toggle grayscale mode from status b

Rajendra Bhochalya 48 Sep 1, 2021
macOS menu bar app that allows control over the gpu on dual gpu macbooks

gSwitch gSwitch lets you set which graphics card your macbook pro can use, mainly to prevent it from using the discrete graphics card when it is simpl

Cody Schrank 707 Sep 20, 2021
A mac menu bar app that provides note taking functionality though a quick dropdown menu.

Quickeys A mac menu bar app that provides note taking and other functionality through a quick dropdown window. Please download the most recent release

Alex Rosenfeld 47 Jun 24, 2021
☀️ A macOS menu bar app that gives you more control over Night Shift.

Shifty was made to expand the capabilities of the built in Night Shift feature in macOS. You can disable Night Shift for specific apps, websites, and

Nate Thompson 1k Sep 21, 2021