4 个版本 (1 个稳定版)
| 1.0.0 | 2021 年 11 月 13 日 | 
|---|---|
| 0.2.0 | 2021 年 7 月 29 日 | 
| 0.1.1 | 2020 年 5 月 25 日 | 
| 0.1.0 | 2020 年 5 月 24 日 | 
#668 in 文件系统
43KB
930 行
Rust Blocks
用 Rust 编写的轻量级 i3/sway 状态栏。

背景
Linux 窗口管理器/合成器,如 i3 和 sway 允许指定生成状态栏的命令。有许多替代方案,但它们往往过于复杂或占用资源过多,所以这是一个既不复杂也不占用资源的实现。
注意:此项目高度针对我的个人设置进行优化。如果您遇到问题,请提出问题!
详情请参阅 i3 协议。
安装
- 获取 Rust
- 克隆此仓库(可选)
- 运行 cargo install -- path <repo path>(如果进行了步骤 2)或cargo install rs-blocks
- 使用 rs-blocks! (有关选项,请参阅rs-blocks-help)
配置
rs-blocks 会查找 $XDG_CONFIG_HOME/rs-blocks/config 下的配置文件。或者,您可以使用 --config 或 -c 参数指定配置文件。
配置文件应采用 TOML 格式。章节标题必须匹配一个可用的块类型,每个章节中剩余的配置将用于配置该块。
基本配置文件看起来像
[memory]
[cpu]
[battery]
[time]
只要指定不同的 name,就可以提供同一块类型的多个条目。例如:
[time]
name = "time1"
format = "%D"
[time]
name = "time2"
format = "%S"
块将按照在配置文件中给出的顺序出现,最顶层的章节将作为状态栏中最左侧的条目显示。
可用的块有
- 电池
- 亮度
- CPU
- 内存
- 网络
- 时间
- 音量(使用 pulsemixer)
有关每个块的更多详细信息,请参阅 src/blocks/ 下的文档。
信号
某些块会监听信号以立即触发更新。例如,当使用键盘快捷键更改亮度时,这将在状态栏中提供即时反馈。当前实现此功能的块有
- 亮度
- 音量
在这种情况下,可以使用块配置文件中的 update_signal 值来指定要监听的信号。在窗口管理器/合成器配置中,需要将发送此信号的事件添加到相关事件中。例如,在 sway 中,这看起来可能像
bindsym XF86MonBrightnessUp exec brightness +10 && pkill -SIGUSR1 rs-blocks
以及相应的配置部分
[brightness]
update_signal = 10 # SIGUSR1 is 10 on most Linux system
有关信号的信息可以在 Linux 的 man 页面 中找到。
实现细节
- 大多数块从内核文件(/proc/*或/sys/class/*)读取信息。这可能会影响某些 Linux 发行版。到目前为止,它只在alpine和arch上进行了测试。
- 块由线程中的无限循环表示,通过通道发送 (name, text)元组,并在主线程中接收(然后发布)。
- 使用 Configure特性根据配置文件(将 TOML 字符串作为配置参数传递)配置块。必须为所有块实现此特性。
- 应实现 Sender特性以创建消息发送函数(有关详细信息,请参阅这些特性)。
依赖项
~6–16MB
~184K SLoC