ironbar/README.md

210 lines
6.8 KiB
Markdown
Raw Permalink Normal View History

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
![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>
---
## 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
## Installation
2022-08-15 02:03:04 +03:00
2024-03-27 16:22:08 +03:00
[![Packaging status](https://repology.org/badge/vertical-allrepos/ironbar.svg)](https://repology.org/project/ironbar/versions)
Ironbar can be installed from source or using your preferred package manager.
It is also recommended to install a [Nerd Font](https://www.nerdfonts.com/#home) for displaying symbols.
### Cargo
2022-08-14 16:30:13 +03:00
2023-05-08 16:04:30 +03:00
[crate](https://crates.io/crates/ironbar)
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
```
### Arch Linux
2023-05-08 16:04:30 +03:00
[aur package](https://aur.archlinux.org/packages/ironbar-git)
```sh
yay -S ironbar-git
```
### Nix
[nix package](https://search.nixos.org/packages?channel=unstable&show=ironbar)
```sh
nix-shell -p ironbar
```
#### Flake
2023-05-08 16:04:30 +03:00
A flake is included with the repo which can be used with Home Manager.
2023-05-08 16:04:30 +03:00
<details>
<summary>Example usage</summary>
```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 = "";
package = inputs.ironbar;
features = ["feature" "another_feature"];
};
}
];
};
};
}
```
2023-05-08 16:04:30 +03:00
</details>
2024-02-26 00:19:49 +03:00
CI builds are automatically cached by Garnix.
You can use their binary cache by following the steps [here](https://garnix.io/docs/caching).
### Fedora
[fedora package](https://copr.fedorainfracloud.org/coprs/victorvintorez/tilingtools/packages/)
``` sh
dnf copr enable victorvintorez/tilingtools
dnf install ironbar
```
2024-03-26 18:19:57 +03:00
### Void Linux
[void package](https://github.com/void-linux/void-packages/tree/master/srcpkgs/ironbar)
```sh
xbps-install ironbar
```
### Source
2023-05-08 16:04:30 +03:00
[repo](https://github.com/jakestanger/ironbar)
Ensure you have the [build dependencies](https://github.com/JakeStanger/ironbar/wiki/compiling#Build-requirements) installed.
```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
```
By default, all features are enabled.
See [here](https://github.com/JakeStanger/ironbar/wiki/compiling#features) for controlling which features are included.
## 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.
2023-05-08 16:04:30 +03:00
Ironbar can be launched using the `ironbar` binary.
2022-08-14 16:30:13 +03:00
The `IRONBAR_LOG` and `IRONBAR_FILE_LOG` environment variables can be set
to change console and file log verbosity respectively.
You can use any of `error`, `warn`, `info`, `debug` or `trace`.
These default to `IRONBAR_LOG=info` and `IRONBAR_FILE_LOG=warn`.
Note that you cannot increase the file log verbosity above console verbosity.
2022-08-14 16:30:13 +03:00
Log files can be found at `~/.local/share/ironbar/.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.
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
- [Smithay Client Toolkit](https://github.com/Smithay/client-toolkit) - Essential in being able to communicate to Wayland
- [gtk-layer-shell](https://github.com/wmww/gtk-layer-shell) - Ironbar and many other projects would be impossible without this
2024-03-26 18:19:57 +03:00
- [Mixxc](https://github.com/Elvyria/Mixxc) - Basis for Ironbar's PulseAudio client code and a cool standalone volume widget.