You can compile Ironbar from source using `cargo`. Just clone the repo and build: ```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 ``` ## Build requirements To build from source, you must have GTK (>= 3.22) and GTK Layer Shell installed. You also need rust; only the latest stable version is supported. ### Arch ```shell pacman -S gtk3 gtk-layer-shell # for http support pacman -S openssl ``` ### Ubuntu/Debian ```shell apt install build-essential libgtk-3-dev libgtk-layer-shell-dev # for http support apt install libssl-dev ``` ### Fedora ```shell dnf install gtk3-devel gtk-layer-shell-devel # for http support dnf install openssl-devel ``` ## Features By default, all features are enabled for convenience. This can result in a significant compile time. If you know you are not going to need all the features, you can compile with only the features you need. As of `v0.10.0`, compiling with no features is about 33% faster. On a 3800X, it takes about 60 seconds for no features and 90 seconds for all. This difference is expected to increase as the bar develops. Features containing a `+` can be stacked, for example `config+json` and `config+yaml` could both be enabled. To build using only specific features, disable default features and pass a comma separated list to `cargo build`: ```shell cargo build --release --no-default-features \ --features http,config+json,clock ``` > ⚠ Make sure you enable at least one `config` feature otherwise you will not be able to start the bar! | Feature | Description | |---------------------|-----------------------------------------------------------------------------------| | **Core** | | | http | Enables HTTP features. Currently this includes the ability to load remote images. | | ipc | Enables the IPC server. | | cli | Enables the CLI. Will also enable `ipc`. | | config+all | Enables support for all configuration languages. | | config+json | Enables configuration support for JSON. | | config+yaml | Enables configuration support for YAML. | | config+toml | Enables configuration support for TOML. | | config+corn | Enables configuration support for [Corn](https://github.com/jakestanger/corn). | | config+ron | Enables configuration support for [Ron](https://github.com/ron-rs/ron). | | **Modules** | | | clipboard | Enables the `clipboard` module. | | clock | Enables the `clock` module. | | music+all | Enables the `music` module with support for all player types. | | music+mpris | Enables the `music` module with MPRIS support. | | music+mpd | Enables the `music` module with MPD support. | | sys_info | Enables the `sys_info` module. | | tray | Enables the `tray` module. | | upower | Enables the `upower` module. | | workspaces+all | Enables the `workspaces` module with support for all compositors. | | workspaces+sway | Enables the `workspaces` module with support for Sway. | | workspaces+hyprland | Enables the `workspaces` module with support for Hyprland. |