Home

Awesome

xbar

Simplifies xbar app plugin creation

Create your plugin using a nice API instead of having to manually construct a big string.

Requires xbar v2 or later.

<img src="screenshot.png" width="232" height="196">

Install

npm install xbar

Usage

#!/usr/bin/env node
import xbar, {separator, isDarkMode} from 'xbar';

xbar([
	{
		text: '❤',
		color: isDarkMode ? 'white' : 'red',
		dropdown: false
	},
	separator,
	{
		text: 'Unicorns',
		color: '#ff79d7',
		submenu: [
			{
				text: ':tv: Video',
				href: 'https://www.youtube.com/watch?v=9auOCbH5Ns4'
			},
			{
				text: ':book: Wiki',
				href: 'https://en.wikipedia.org/wiki/Unicorn'
			}
		]
	},
	separator,
	'Ponies'
]);

Create a file with the above code in the xbar plugins directory and make sure to chmod +x filename.js it. Read more.

Note: You need to either have a package.json file with {"type": "module"} or use the .mjs extension instead of .js.

Change node in #!/usr/bin/env node to the path of your Node.js binary. This is a known issue in xbar.

API

xbar(items, options?)

items

Type: Array<string | object>

An item can be a string with the text or an object with the text in a text property and any of the options. The text can be multiple lines, but for the first item, only the first line will be shown in the menubar.

submenu

Type: Array<string | object>

It will add a submenu to the current item. A submenu is composed of an array of items.

options

Type: object

You can use any of the supported options.

Applies to all items unless overridden in the item.

separator

Add a separator.

isDarkMode

Type: boolean

Check whether dark mode is enabled.

isXbar

Type: boolean

Check whether the script is running from xbar.