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§
- attr
- Parameters for modifying the appearance or behavior of
ContentItem
s. - 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
command
orfallback_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::command
matches. - main
- Annotate your
main
function with this.