Expand description
This is bitbar, a library crate which includes helpers for writing BitBar plugins in Rust. BitBar is a system that makes it easy to add menus to the macOS menu bar. There are two apps implementing the BitBar system: SwiftBar and xbar. This crate supports both of them, as well as the discontinued original BitBar app.
There are two main entry points:
- It’s recommended to use the
mainattribute and write amainfunction that returns aMenu, along with optionalcommandfunctions and an optionalfallback_commandfunction. - For additional control over your plugin’s behavior, you can directly
DisplayaMenu.
BitBar plugins must have filenames of the format name.duration.extension, even though macOS binaries normally don’t have extensions. You will have to add an extension, e.g. .o, to make Rust binaries work as plugins.
§Example
use bitbar::{Menu, MenuItem};
#[bitbar::main]
fn main() -> Menu {
Menu(vec![
MenuItem::new("Title"),
MenuItem::Sep,
MenuItem::new("Menu Item"),
])
}Or:
use bitbar::{Menu, MenuItem};
fn main() {
print!("{}", Menu(vec![
MenuItem::new("Title"),
MenuItem::Sep,
MenuItem::new("Menu Item"),
]));
}There is also a list of real-world examples.
Re-exports§
pub use crate::flavor::Flavor;
Modules§
- attr
- Parameters for modifying the appearance or behavior of
ContentItems. - flavor
- Features specific to individual BitBar implementations (e.g. SwiftBar)
Structs§
- Content
Item - A menu item that’s not a separator.
- Menu
- A BitBar menu.
Enums§
- Menu
Item - A menu item can either be a separator or a content item.
Traits§
- Async
Main Output tokio - Members of this trait can be returned from a main function annotated with
main. - Command
Output - Members of this trait can be returned from a subcommand function annotated with
commandorfallback_command. - Main
Output - Members of this trait can be returned from a main function annotated with
main.
Attribute Macros§
- command
- Registers a subcommand that you can run from a menu item’s
command. - fallback_
command - Defines a function that is called when no other
bitbar::commandmatches. - main
- Annotate your
mainfunction with this.