29 个版本 (稳定版)

1.8.1 2022年12月19日
1.8.0 2022年9月25日
1.7.3 2022年1月22日
1.7.2 2021年5月8日
0.1.0 2018年3月23日

#178 in GUI

Download history 1/week @ 2024-03-08 255/week @ 2024-03-29 45/week @ 2024-04-05

每月下载量 64

MIT 许可证

130KB
3.5K SLoC

dwm-status

Github Workflow Crates.io The MIT License

DWM 状态服务,在需要时动态更新。深受 i3status-rust 启发。

示例状态栏: example-sceenshot

要求

cargorustclib{dbus,gdk-pixbuf,notify,x11}-dev 是构建二进制文件所需的。

构建和运行

$ # dev mode
$ cargo run -- <config-file>
$ # release mode
$ cargo build --release
$ ./target/release/dwm-status <config-file>

或全局安装到 ~/.cargo/bin

$ cargo install dwm-status

Nix 支持

作为 flake 构建

$ nix build

然后运行

$ ./result/bin/dwm-status <config-file>

配置

config-file 可以是 HJSON、JSON、TOML 或 YAML 文件。每个可能的格式都提供了一个填充默认值的配置文件,可以在 examples/default-settings 中找到。文件类型由其后缀确定。

有关如何在状态栏中使用图标的示例,请参阅 examples/icon-settings/nerd-font.toml。您需要在 dwm 中的 config.h 中安装并指定可用的 nerd fonts 之一,例如。

static const char *fonts[] = { "Ubuntu Mono Nerd Font:size=9" };

通用选项

name default description
debug - 已弃用,将在 2.0.0 版本中删除。默认日志级别现在是 INFO。
order [] 按顺序列出启用的功能。
separator " / " 每个功能之间的分隔符字符串。

功能:音频

注意: 需要 alsa-utils

显示已配置的alsa控制设备的状态。监听alsactl monitor以获取更改。

配置选项

name default description
控制 "主控制" 监听alsactl的alsa控制设备。
图标 [] 图标列表,代表与当前音量的不同阶段,例如["LOW", "MIDDLE, "HIGH"]
静音 "静音" 静音时的文本表示。
模板 "S {VOL}%" 未静音时的文本表示。({VOL}被替换为当前音量,{ICO}被替换为图标)

功能:背光

显示背光值的状态并监视/sys/class/backlight的更改。

配置选项

name default description
设备 "intel_backlight" /sys/class/backlight中的背光设备。
后备 如果device不存在,则在/sys/class/backlight中匹配第一个元素(Unix shell风格模式)。例如amdgpu_*
图标 [] 图标列表,代表与当前值的不同阶段,例如["LOW", "MIDDLE, "HIGH"]
模板 "L {BL}%" 文本表示。({BL}被替换为当前背光值,{ICO}被替换为图标)

功能:电池

注意:要接收DBus消息,必须运行upower守护进程。

监视UPower DBus信号,以检测添加或删除的电池以及电池状态的变化。

如果启用通知器,当前正在放电且最满电池的容量低于配置的值时,将发送紧急通知(根据配置的紧急值,正常或关键)。

显示每个电池的以下信息

状态 示例 备注
充电 10% (01:23) 括号内是充满电所需时间
放电 50% (02:03) 括号内是放电到空所需时间

以下信息作为功能块显示(如果定义了图标,则ICO将被替换为图标)

电池计数 示例 备注
0 NO BATT
1 ICO 50% (02:03)
2 ICO 50% (02:03)·ICO 50% 按名称字母顺序排列的电池

配置选项

name default description
充电 "" 充电状态的文本表示。
放电 "" 放电状态的文本表示。
enable_notifier true 是否启用通知器。
图标 [] 图标列表,代表与当前电池状态的不同阶段,例如["LOW", "MIDDLE, "HIGH"]
no_battery "NO BATT" 无电池时的文本表示。
notifier_critical 10 通过关键通知通知的最大电池值。
通知级别 [2, 5, 10, 15, 20] 要通知的电池值。
separator "·" 多个电池信息之间的分隔字符串。

功能:CPU负载

显示从 /proc/loadavg 获取的CPU负载,以配置的格式显示,并每 n 秒刷新一次。

配置选项

name default description
模板 "{CL1} {CL5} {CL15}" 文本表示。({CLx} 将被替换为 x 分钟内的负载,其中 x{1, 5, 15} 中)
更新间隔 20 以秒为单位更新间隔。

功能:网络

注意: 命令 ipdigiwgetid 需要在 PATH 中。

显示连接的ESSID、公网IPv4和IPv6地址。通过监听 ip monitor address link 触发更新。

配置选项

name default description
无值 "NA" 未定义元素的值。
模板 "{IPv4} · {IPv6} · {ESSID}" 文本表示。花括号内的占位符是 {IPv4}{IPv6}{ESSID}

功能:时间

以配置的格式显示时间,并每秒或每分钟刷新一次。

配置选项

name default description
格式 "%Y-%m-%d %H:%M" chrono crate 的时间格式。
更新秒数 false 是否每秒或每分钟更新时间功能,由解析 format 自动设置。

贡献

您需要带有夜间工具链的 rustup、rustfmt、clippy 以及 lib{dbus,gdk-pixbuf,notify,x11}-dev。我推荐安装 racer。

如果您使用 nix,可以使用 shell.nix 为所有依赖项安装,除了 rustup 工具链和组件。

$ nix-shell
[nix-shell]$ rustup install nightly
[nix-shell]$ rustup default nightly

依赖项

~16–24MB
~394K SLoC