Ironbar is a customisable and feature-rich bar targeting the Sway compositor, written in Rust. It uses GTK3 and gtk-layer-shell.
The bar can be styled to your liking using CSS and hot-loads style changes. For information and examples on styling please see the wiki.
Install with cargo:
sh
cargo install ironbar
Then just run with ironbar
.
By default, running will get you a blank bar. To start, you will need a configuration file in .config/ironbar
. This could be called config.<fmt>
, using one of the available extensions:
For a full list of modules and their configuration options, please see the wiki.
There are two different approaches to configuring the bar:
If you have a single monitor, or want the same bar to appear across each of your monitors, choose this option.
The top-level object takes any combination of left
, center
, and right
. These each take a list of modules and determine where they are positioned.
json
{
"left": [],
"center": [],
"right": []
}
If you have multiple monitors and want them to differ in configuration, choose this option.
The top-level object takes a single key called monitors
. This takes an array where each entry is an object with a configuration for each monitor.
The monitor's config object takes any combination of left
, center
, and right
. These each take a list of modules and determine where they are positioned.
json
{
"monitors": [
{
"left": [],
"center": [],
"right": []
},
{
"left": [],
"center": [],
"right": []
}
]
}
| Name | Type | Default | Description |
|------------|-------------------|---------|-----------------------------------------------------------------------------|
| position
| top
or bottom
| []
| The bar's position on screen. |
| height
| integer
| 42
| The bar's height in pixels. |
| left
| Module[]
| []
| Array of left modules. |
| center
| Module[]
| []
| Array of center modules. |
| right
| Module[]
| []
| Array of right modules. |
| monitors
| RootConfig[]
| null
| Array of root config objects for each monitor. Overrides left/center/right. |
To get started, create a stylesheet at .config/ironbar/style.css
. Changes will be hot-reloaded every time you save the file.
An example stylesheet and information about each module's styling information can be found on the wiki.
This project is in very early stages:
That said, it will be actively developed as I am using it on my daily driver. Bugs will be fixed, features will be added, code will be refactored.
I welcome contributions of any kind with open arms. That said, please do stick to some basics:
For code contributions:
cargo clippy
warnings, using at least the default configuration.cargo fmt
.For PRs:
For issues: