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