home-manager/tests/modules/programs/i3status-rust/with-extra-settings.nix
Thiago Kenji Okada b832390db3
i3status-rust: update it to handle 0.30.x releases (#3773)
* i3status-rust: update it to handle 0.30.x releases

0.30.0 is a major release that brings many breaking changes to the
configuration file. See:
https://github.com/greshake/i3status-rust/blob/master/NEWS.md#i3status-rust-0300

The only one that actually affects the module though is the change in
how the theme/icons are defined. Other changes are mostly on how to
specify formatting/blocks, and since we just generate the TOML as-is, it
needs changes in the user side.

So most changes in this commit are documentation updates, having
up-to-date examples from things that changed, e.g.: the new `click`
attribute that now can be applied to any block.

* i3status-rust: only use new format if i3status-rust >= 0.30.0

* news: document the i3status-rust changes

* i3status-rust: add thiagokokada as maintainer
2023-03-16 12:48:55 +01:00

210 lines
5.3 KiB
Nix

{ config, lib, pkgs, ... }:
{
config = {
programs.i3status-rust = {
enable = true;
bars = {
extra-settings = {
blocks = [
{
block = "disk_space";
path = "/";
info_type = "available";
interval = 60;
warning = 20.0;
alert = 10.0;
}
{
block = "memory";
display_type = "memory";
format_mem = "{Mug}GB ({Mup}%)";
format_swap = "{SUp}%";
}
{
block = "cpu";
interval = 1;
format = " $icon $barchart ";
}
{
block = "load";
interval = 1;
format = " $icon $1m $5m ";
}
{
block = "temperature";
interval = 10;
format = "$icon $min min, $max max, $average avg";
chip = "*-isa-*";
}
{
block = "net";
device = "enp9s0u2u1u2c2";
interval = 5;
}
{
block = "speedtest";
format = " ^icon_ping $ping ";
}
{
block = "xrandr";
interval =
6000; # Because running the commands causes screen lag, see https://github.com/greshake/i3status-rust/issues/668
}
{
block = "sound";
format = "{output_name} {volume}%";
click = [{
button = "left";
cmd = "pavucontrol --tab=3";
}];
mappings = {
"alsa_output.pci-0000_00_1f.3.analog-stereo" = "";
"bluez_sink.70_26_05_DA_27_A4.a2dp_sink" = "";
};
}
{
block = "music";
player = "spotify";
buttons = [ "play" "prev" "next" ];
click = [
{
button = "play";
action = "music_play";
}
{
button = "prev";
action = "music_prev";
}
{
button = "next";
action = "music_next";
}
];
}
{
block = "time";
interval = 60;
format = " $timestamp.datetime(f:'%a %d/%m %R') ";
}
{ block = "battery"; }
];
icons = "awesome5";
settings = {
theme = {
theme = "solarized-dark";
overrides = {
idle_bg = "#123456";
idle_fg = "#abcdef";
};
};
};
theme = "gruvbox-dark";
};
};
};
test.stubs.i3status-rust = { version = "0.30.0"; };
nmt.script = ''
assertFileExists home-files/.config/i3status-rust/config-extra-settings.toml
assertFileContent home-files/.config/i3status-rust/config-extra-settings.toml \
${
pkgs.writeText "i3status-rust-expected-config" ''
[[block]]
alert = 10.0
block = "disk_space"
info_type = "available"
interval = 60
path = "/"
warning = 20.0
[[block]]
block = "memory"
display_type = "memory"
format_mem = "{Mug}GB ({Mup}%)"
format_swap = "{SUp}%"
[[block]]
block = "cpu"
format = " $icon $barchart "
interval = 1
[[block]]
block = "load"
format = " $icon $1m $5m "
interval = 1
[[block]]
block = "temperature"
chip = "*-isa-*"
format = "$icon $min min, $max max, $average avg"
interval = 10
[[block]]
block = "net"
device = "enp9s0u2u1u2c2"
interval = 5
[[block]]
block = "speedtest"
format = " ^icon_ping $ping "
[[block]]
block = "xrandr"
interval = 6000
[[block]]
block = "sound"
format = "{output_name} {volume}%"
[[block.click]]
button = "left"
cmd = "pavucontrol --tab=3"
[block.mappings]
"alsa_output.pci-0000_00_1f.3.analog-stereo" = ""
"bluez_sink.70_26_05_DA_27_A4.a2dp_sink" = ""
[[block]]
block = "music"
buttons = ["play", "prev", "next"]
player = "spotify"
[[block.click]]
action = "music_play"
button = "play"
[[block.click]]
action = "music_prev"
button = "prev"
[[block.click]]
action = "music_next"
button = "next"
[[block]]
block = "time"
format = " $timestamp.datetime(f:'%a %d/%m %R') "
interval = 60
[[block]]
block = "battery"
[icons]
icons = "awesome5"
[theme]
theme = "solarized-dark"
[theme.overrides]
idle_bg = "#123456"
idle_fg = "#abcdef"
''
}
'';
};
}