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
main
attribute and write amain
function that returns aMenu
, along with optionalcommand
functions and an optionalfallback_command
function. - For additional control over your plugin’s behavior, you can directly
Display
aMenu
.
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
Parameters for modifying the appearance or behavior of ContentItem
s.
Structs
A menu item that’s not a separator.
A BitBar menu.
Enums
A menu item can either be a separator or a content item.
Traits
tokio
or tokio02
or tokio03
Members of this trait can be returned from a main function annotated with main
.
Members of this trait can be returned from a subcommand function annotated with command
or fallback_command
.
Members of this trait can be returned from a main function annotated with main
.
Attribute Macros
Registers a subcommand that you can run from a menu item’s command
.
Registers a function that is called when no other bitbar::command
matches.
Annotate your main
function with this.