Ironbar

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.

Screenshot of fully configured bar with MPD widget open

Installation

Install with cargo:

sh cargo install ironbar

Then just run with ironbar.

Configuration

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:

Same configuration across all monitors

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": [] }

Different configuration across monitors

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. |

Styling

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.

Project Status

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.

Contribution Guidelines

I welcome contributions of any kind with open arms. That said, please do stick to some basics:

Acknowledgements