• Stars
    star
    453
  • Rank 93,603 (Top 2 %)
  • Language
    Rust
  • License
    MIT License
  • Created almost 2 years ago
  • Updated about 15 hours ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Customisable Wayland gtk bar written in Rust.

--- Ironbar ---


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 | Configuration Guide | Style Guide


Screenshot of fully configured bar with MPD widget open

✨ Looking for a starting point, or want to show off? Head to Show and tell ✨


Features

  • 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

Installation

Cargo

crate

Ensure you have the build dependencies installed.

cargo install ironbar

Arch Linux

aur package

yay -S ironbar-git

Nix Flake

A flake is included with the repo which can be used with Home Manager.

Example usage
{
  # 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"];
          };
        }
      ];
    };
  };
}

There is a Cachix cache available at https://app.cachix.org/cache/jakestanger.

Source

repo

Ensure you have the build dependencies installed.

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 for controlling which features are included.

Running

Once installed, you will need to create a config and optionally a stylesheet in .config/ironbar. See the Configuration Guide and Style Guide for full details.

Ironbar can be launched using the ironbar binary.

Log verbosity can be changed using IRONBAR_LOG or IRONBAR_FILE_LOG. You can use any of error, warn, info, debug or trace.

These default to IRONBAR_LOG=info and IRONBAR_FILE_LOG=error.

File output can be found at ~/.local/share/ironbar/error.log.

Status

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.

If you would like to take the risk and help shape development, any bug reports, feature requests and discussion is welcome.

I use Ironbar on my daily driver, so development is active. Features aim to be stable and well documented before being merged.

Contribution Guidelines

All are welcome, but I ask a few basic things to help make things easier. Please check here for details.

Acknowledgements

  • Waybar - A lot of the initial inspiration, and a pretty great bar.
  • Rustbar - Served as a good demo for writing a basic GTK bar in Rust
  • Smithay Client Toolkit - Essential in being able to communicate to Wayland
  • gtk-layer-shell - Ironbar and many other projects would be impossible without this

More Repositories

1

mpd-discord-rpc

Rust application which displays your currently playing song / album / artist from MPD in Discord using Rich Presence.
Rust
77
star
2

Rofi_MPD

A rofi menu for interacting with MPD written in Python.
Python
20
star
3

filexplorer

A lightweight highly extensible, and highly configurable NodeJS web-based file explorer and utility kit.
TypeScript
13
star
4

MPD-Discord

Discord bot to interact with an MPD server.
Python
6
star
5

corn

🌽 A simple and pain-free configuration language.
Rust
5
star
6

stamp

A command line tool for creating one or more files from templates, written in Rust.
Rust
4
star
7

Plex-Music-Viewer

Bootstrap 4 web app which connects to Plex Media Server and allows browsing and downloading of music.
Python
2
star
8

.conky

Conky files
Lua
2
star
9

rust-simple-http

Simple (incomplete) HTTP implementation.
Rust
2
star
10

Discord-Friend-Timezones

A small Discord timezones bot for keeping track of other users' timezones and local times.
Python
2
star
11

jstanger.dev

Website
TypeScript
2
star
12

dotfiles

Personal linux configs
CSS
1
star
13

discord-idle-status

Tiny daemon which sets your rich presence status in Discord to "idle"
Rust
1
star
14

BittorrentMusicSyncer

Android app, pairs with plex server 'API frontend' (coming soon) to download albums via bittorent.
Java
1
star
15

Recipe-Remover

A small Minecraft mod which allows you to remove recipes from the game.
Java
1
star
16

Discord-Bot

A bot for Discord written in Java. Can play sounds and perform several tasks.
Java
1
star
17

next-gallery

Web gallery built with nextjs
TypeScript
1
star
18

tree-sitter-corn

Tree-Sitter and syntax highlighting support for Corn configuration language
C
1
star
19

system-tray

Async implementation of the StatusNotifierItem and DbusMenu protocols for building system trays.
Rust
1
star