2023-02-01 23:42:05 +03:00
|
|
|
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
|
|
|
|
```
|
|
|
|
|
2023-02-25 17:28:37 +03:00
|
|
|
## Build requirements
|
|
|
|
|
|
|
|
To build from source, you must have GTK (>= 3.22) and GTK Layer Shell installed.
|
2023-05-06 00:29:16 +03:00
|
|
|
You also need rust; only the latest stable version is supported.
|
2023-02-25 17:28:37 +03:00
|
|
|
|
|
|
|
### Arch
|
|
|
|
|
|
|
|
```shell
|
|
|
|
pacman -S gtk3 gtk-layer-shell
|
2023-10-30 00:19:53 +03:00
|
|
|
# for http support
|
|
|
|
pacman -S openssl
|
2023-02-25 17:28:37 +03:00
|
|
|
```
|
|
|
|
|
|
|
|
### Ubuntu/Debian
|
|
|
|
|
|
|
|
```shell
|
2023-05-06 00:29:16 +03:00
|
|
|
apt install build-essential libgtk-3-dev libgtk-layer-shell-dev
|
|
|
|
# for http support
|
|
|
|
apt install libssl-dev
|
2023-02-25 17:28:37 +03:00
|
|
|
```
|
|
|
|
|
|
|
|
### Fedora
|
|
|
|
|
|
|
|
```shell
|
2023-10-30 00:19:53 +03:00
|
|
|
dnf install gtk3-devel gtk-layer-shell-devel
|
|
|
|
# for http support
|
|
|
|
dnf install openssl-devel
|
2023-02-25 17:28:37 +03:00
|
|
|
```
|
|
|
|
|
2023-02-01 23:42:05 +03:00
|
|
|
## 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. |
|
2023-06-29 18:13:15 +03:00
|
|
|
| ipc | Enables the IPC server. |
|
|
|
|
| cli | Enables the CLI. Will also enable `ipc`. |
|
2023-02-01 23:42:05 +03:00
|
|
|
| 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. |
|
2023-05-06 00:29:26 +03:00
|
|
|
| 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). |
|
2023-02-01 23:42:05 +03:00
|
|
|
| **Modules** | |
|
2023-02-25 17:30:45 +03:00
|
|
|
| clipboard | Enables the `clipboard` module. |
|
2023-02-01 23:42:05 +03:00
|
|
|
| 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. |
|
2023-02-02 00:08:03 +03:00
|
|
|
| music+mpd | Enables the `music` module with MPD support. |
|
2023-02-01 23:42:05 +03:00
|
|
|
| sys_info | Enables the `sys_info` module. |
|
|
|
|
| tray | Enables the `tray` module. |
|
2023-05-01 15:30:57 +03:00
|
|
|
| upower | Enables the `upower` module. |
|
2023-02-01 23:42:05 +03:00
|
|
|
| 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. |
|
|
|
|
|