12 个版本 (5 个破坏性版本)
0.13.1 | 2024 年 4 月 18 日 |
---|---|
0.13.0 | 2024 年 4 月 16 日 |
0.12.0 | 2024 年 1 月 8 日 |
0.11.0 | 2023 年 12 月 28 日 |
0.8.0 | 2023 年 11 月 4 日 |
#262 in 配置
380KB
8K SLoC
i3stat
: i3 (或 sway) 的状态命令
请注意 这之前被称为
istat
并 被重命名。
我之前使用 i3blocks
来为 i3 的状态命令,但我发现将所有配置放在单独的脚本中有点繁琐。
此外,我也找不到一个好的音量控制块,它既不笨拙也不慢。
因此,我决定编写自己的状态命令生成器,而用什么语言来写它呢?当然是 Rust!
功能
- ⚡ 完全单线程(更少的资源使用)
- 🔎 它是状态命令,它不应该很重
- ⏩ Powerline 主题和可定制性
- 🎮 IPC 控制
- 🖱️ 通过命令发送点击事件
- 📜 通过命令刷新项目
- 📜 为某些集成提供自定义事件(例如,控制 PulseAudio/PipeWire 等)
- 🤯 运行时更新 - 无需重启
- 🖇️ 许多不同的条形图项目(继续阅读以获取截图)
每个条形图项目都是可配置的,请参阅 示例配置 以获取选项。
截图
这是一张 i3 中条形的图片
另一张启用 powerline
模式的图片
此表包含一些条形图的截图
项目 | 描述 | 截图 |
---|---|---|
电池 |
百分比、充电等。支持多个电池。 | |
cpu |
百分比表示的使用情况 | |
磁盘 |
使用情况,显示可用磁盘空间。支持多个挂载点。 | |
dunst |
显示“请勿打扰”状态(如果它已暂停或未暂停) | |
kbd |
显示 CapsLock/Numlock 等 state | |
krb |
检查是否存在有效的 kerberos 令牌(例如,klist -s ) |
|
内存 |
以字节或百分比显示空闲内存 | |
net_usage |
上传和下载统计信息 | |
网络接口 |
网络接口状态 - 连接状态和 ip 地址 | |
脉冲 |
输入/输出音量状态,全面控制和当前扬声器类型(插孔,蓝牙等) | |
脚本 |
运行任意脚本并显示其输出 | |
传感器 |
温度传感器 | |
时间 |
显示当前日期和时间 |
安装
从 GitHub 下载最新版本
使用 Rust (通过 cargo)
cargo install i3stat
# Make sure to look at the `sample_config.toml` file for configuration options!
通过 AUR (Arch Linux)
# just download the latest release and install it
paru -S i3stat-bin
# build the latest release with cargo
paru -S i3stat
# build the latest commit on `next`
paru -S i3stat-git
使用方法
设置
首先,为i3stat
创建一个配置文件。查看示例配置以了解可用功能。此文件应放置在
$XDG_CONFIG_HOME/i3stat/<这里>
,或$HOME/.config/i3stat/<这里>
尽管示例配置文件是TOML文件,但也支持YAML和JSON。
然后,更新您的i3/sway配置以使用i3stat
作为status_command
bar {
status_command i3stat
# ... other config
}
与 i3stat
交互
i3stat
提供了多种与其交互的方式
- i3/sway的标准点击事件
- 实时信号
- 它自己的ipc
信号
考虑以下条目,它输出CapsLock和NumLock键的状态
type = "kbd"
show = ["caps_lock", "num_lock"]
interval = "30s"
它每30秒刷新一次,或者每次条目收到点击事件时都会刷新。这很好,但我们可以通过信号做得更好。将signal = 8
添加到配置中,并删除interval
,我们得到
type = "kbd"
show = ["caps_lock", "num_lock"]
signal = 8
现在,每当i3stat
收到SIGRTMIN+8
信号时,条目将会刷新。与以下i3/sway中的配置配对,您将有一个始终反映您按键状态的条目
bindsym --release Caps_Lock exec --no-startup-id pkill -RTMIN+8 i3stat
bindsym --release Num_Lock exec --no-startup-id pkill -RTMIN+8 i3stat
Linux提供了许多实时信号,要查看您的机器支持哪些,请使用i3stat-signals
命令
$ i3stat-signals
{"count":30,"sigrtmax":64,"sigrtmin":34}
可以为多个条目配置相同的信号,因此可以使用相同的信号刷新许多条目!
自定义 IPC 事件
提供了i3stat-ipc
命令来与i3stat
接口。它支持
- 获取所有当前运行条目的名称和索引
- 同时刷新所有条目
- 向每个条目发送
click
事件 - 向条目发送自定义事件
- 某些条目(如
pulse
)公开了高级API,可以通过这些事件访问
- 某些条目(如
同时刷新所有条目:
i3stat-ipc refresh-all
向条目发送点击事件 - 而不实际点击它!:
# emulate a left click on the disk item:
i3stat-ipc click disk left
通过自定义ipc事件控制PulseAudio/Pipewire:
# see all the custom events that pulse has to offer:
i3stat-ipc custom pulse
# Some examples:
# turn the output (speakers) volume up
i3stat-ipc custom pulse volume-down sink
# turn the input (microphone) volume down
i3stat-ipc custom pulse volume-up source
# mute or unmute the output
i3stat-ipc custom pulse mute-toggle sink
开发
查看justfile!
还要阅读IDEAS.md。
依赖关系
~18–51MB
~812K SLoC