Skip to content

sindresorhus/xbar

main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

xbar

Simplifies xbar (previous known as BitBar) app plugin creation

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

Requires xbar v2 or later.

Install

npm install @sindresorhus/xbar

Usage

#!/usr/bin/env node
import xbar, {separator, isDarkMode} from '@sindresorhus/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.