2023-05-08 16:04:30 +03:00
< h1 align = "center" > --- Ironbar ---< / h1 >
2022-08-14 16:30:13 +03:00
2023-05-08 16:04:30 +03:00
< div align = "center" >
< a href = "https://github.com/JakeStanger/ironbar/releases" >
< img src = "https://img.shields.io/crates/v/ironbar?label=version&style=for-the-badge" alt = "Current version" / >
< / a >
< a href = "https://github.com/JakeStanger/ironbar/actions/workflows/build.yml" >
< img src = "https://img.shields.io/github/actions/workflow/status/jakestanger/ironbar/build.yml?style=for-the-badge" alt = "Build status" / >
< / a >
< a href = "https://github.com/JakeStanger/ironbar/issues" >
< img src = "https://img.shields.io/github/issues/jakestanger/ironbar?style=for-the-badge" alt = "Open issues" / >
< / a >
< a href = "https://github.com/JakeStanger/ironbar/blob/master/LICENSE" >
< img src = "https://img.shields.io/github/license/jakestanger/ironbar?style=for-the-badge" alt = "License" / >
< / a >
< a href = "https://crates.io/crates/ironbar" >
< img src = "https://img.shields.io/crates/d/ironbar?label=crates.io%20downloads&style=for-the-badge" alt = "Crates.io downloads" / >
< / a >
< / div >
2022-08-14 16:30:13 +03:00
2023-05-08 16:04:30 +03:00
---
< div align = "center" >
A customisable and feature-rich GTK bar for wlroots compositors, written in Rust.
Ironbar is designed to support anything from a lightweight bar to a full desktop panel with ease.
---
## Getting Started
[Wiki ](https://github.com/JakeStanger/ironbar/wiki )
|
[Configuration Guide ](https://github.com/JakeStanger/ironbar/wiki/configuration-guide )
|
[Style Guide ](https://github.com/JakeStanger/ironbar/wiki/styling-guide )
---
2022-08-14 16:30:13 +03:00
2023-02-25 17:28:37 +03:00
![Screenshot of fully configured bar with MPD widget open ](https://f.jstanger.dev/github/ironbar/bar.png?raw )
2023-05-08 16:04:30 +03:00
✨ Looking for a starting point, or want to show off? Head to [Show and tell ](https://github.com/JakeStanger/ironbar/discussions/categories/show-and-tell ) ✨
< / div >
---
2023-02-25 17:28:37 +03:00
## Features
2023-05-08 16:04:30 +03:00
- First-class support for Sway and Hyprland
- Fully themeable with hot-loaded CSS
- Popups to show rich content
- Ability to create custom widgets, run scripts and embed dynamic content
- Easy to configure anything from a single bar across all monitors, to multiple different unique bars per monitor
- Support for multiple config languages
2022-08-14 16:30:13 +03:00
2022-10-16 15:42:59 +03:00
## Installation
2022-08-15 02:03:04 +03:00
2022-08-15 02:01:38 +03:00
### Cargo
2022-08-14 16:30:13 +03:00
2023-05-08 16:04:30 +03:00
[crate ](https://crates.io/crates/ironbar )
2023-02-25 17:28:37 +03:00
Ensure you have the [build dependencies ](https://github.com/JakeStanger/ironbar/wiki/compiling#Build-requirements ) installed.
2022-08-14 16:30:13 +03:00
```sh
cargo install ironbar
```
2022-08-15 02:01:38 +03:00
### Arch Linux
2023-05-08 16:04:30 +03:00
[aur package ](https://aur.archlinux.org/packages/ironbar-git )
2022-08-15 02:01:38 +03:00
```sh
yay -S ironbar-git
```
2022-11-27 00:29:16 +03:00
### Nix Flake
2023-05-08 16:04:30 +03:00
A flake is included with the repo which can be used with Home Manager.
2023-02-01 23:42:05 +03:00
2023-05-08 16:04:30 +03:00
< details >
< summary > Example usage< / summary >
2022-11-27 00:29:16 +03:00
```nix
{
# Add the ironbar flake input
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
inputs.ironbar = {
url = "github:JakeStanger/ironbar";
inputs.nixpkgs.follows = "nixpkgs";
};
inputs.hm = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs: {
homeManagerConfigurations."USER@HOSTNAME" = inputs.hm.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
modules = [
# And add the home-manager module
inputs.ironbar.homeManagerModules.default
{
# And configure
programs.ironbar = {
enable = true;
config = {};
style = "";
2023-03-29 11:45:40 +03:00
package = inputs.ironbar;
features = ["feature" "another_feature"];
2022-11-27 00:29:16 +03:00
};
}
];
};
};
}
```
2023-05-08 16:04:30 +03:00
< / details >
2023-02-01 23:42:05 +03:00
2023-05-08 16:04:30 +03:00
There is a Cachix cache available at `https://app.cachix.org/cache/jakestanger` .
2022-11-27 00:29:16 +03:00
2022-08-22 01:36:07 +03:00
### Source
2023-05-08 16:04:30 +03:00
[repo ](https://github.com/jakestanger/ironbar )
2023-02-25 17:28:37 +03:00
Ensure you have the [build dependencies ](https://github.com/JakeStanger/ironbar/wiki/compiling#Build-requirements ) installed.
2022-08-22 01:36:07 +03:00
```sh
git clone https://github.com/jakestanger/ironbar.git
cd ironbar
cargo build --release
# change path to wherever you want to install
install target/release/ironbar ~/.local/bin/ironbar
```
2023-02-01 23:42:05 +03:00
By default, all features are enabled.
2023-02-25 17:28:37 +03:00
See [here ](https://github.com/JakeStanger/ironbar/wiki/compiling#features ) for controlling which features are included.
2023-02-01 23:42:05 +03:00
2022-10-16 15:42:59 +03:00
## Running
2023-05-08 16:04:30 +03:00
Once installed, you will need to create a config and optionally a stylesheet in `.config/ironbar` .
See the [Configuration Guide ](https://github.com/JakeStanger/ironbar/wiki/configuration-guide ) and [Style Guide ](https://github.com/JakeStanger/ironbar/wiki/styling-guide ) for full details.
2022-10-16 15:42:59 +03:00
2023-05-08 16:04:30 +03:00
Ironbar can be launched using the `ironbar` binary.
2022-08-14 16:30:13 +03:00
2023-05-08 16:04:30 +03:00
Log verbosity can be changed using `IRONBAR_LOG` or `IRONBAR_FILE_LOG` . You can use any of `error` , `warn` , `info` , `debug` or `trace` .
2022-08-14 17:56:21 +03:00
2023-05-08 16:04:30 +03:00
These default to `IRONBAR_LOG=info` and `IRONBAR_FILE_LOG=error` .
2022-08-14 16:30:13 +03:00
2023-05-08 16:04:30 +03:00
File output can be found at `~/.local/share/ironbar/error.log` .
2022-08-14 16:30:13 +03:00
2023-05-08 16:04:30 +03:00
## Status
2022-08-14 16:30:13 +03:00
2023-05-08 16:04:30 +03:00
Ironbar is an **alpha** project.
It is unfinished and subject to constant breaking changes, and will continue that way until the foundation is rock solid.
2022-08-22 01:36:07 +03:00
2023-05-08 16:04:30 +03:00
If you would like to take the risk and help shape development, any bug reports, feature requests and discussion is welcome.
2022-08-14 16:30:13 +03:00
2023-05-08 16:04:30 +03:00
I use Ironbar on my daily driver, so development is active. Features aim to be stable and well documented before being merged.
2022-08-14 16:30:13 +03:00
## Contribution Guidelines
2023-05-08 16:04:30 +03:00
All are welcome, but I ask a few basic things to help make things easier. Please check [here ](https://github.com/JakeStanger/ironbar/blob/master/CONTRIBUTING.md ) for details.
2022-08-14 16:30:13 +03:00
## Acknowledgements
- [Waybar ](https://github.com/Alexays/Waybar ) - A lot of the initial inspiration, and a pretty great bar.
2022-08-14 16:36:43 +03:00
- [Rustbar ](https://github.com/zeroeightysix/rustbar ) - Served as a good demo for writing a basic GTK bar in Rust
2022-11-27 00:29:16 +03:00
- [Smithay Client Toolkit ](https://github.com/Smithay/client-toolkit ) - Essential in being able to communicate to Wayland
2023-05-08 16:04:30 +03:00
- [gtk-layer-shell ](https://github.com/wmww/gtk-layer-shell ) - Ironbar and many other projects would be impossible without this