i3blocks 开源项目教程
项目介绍
i3blocks 是一个为文本型状态栏生成内容的工具,适用于 Sway 和 i3 窗口管理器。它通过执行用户定义的命令行并从输出中生成状态行,支持定时调度、信号接收和点击事件。i3blocks 是 i3status 的替代品,可以直接与 i3bar 组件配合使用,也可以在 Wayland 合成器 Sway 中作为 i3 的替代品。
项目快速启动
安装 i3blocks
i3blocks 已经打包在多个 Linux 发行版中,可以直接通过包管理器安装:
- Archlinux:
i3blocks
在社区仓库,i3blocks-git
在 AUR - Gentoo:
x11-misc/i3blocks
- Debian:
i3blocks
- Ubuntu:
i3blocks
- Fedora (COPR):
i3blocks
- Void Linux:
i3blocks
或者从源码安装:
git clone https://github.com/vivien/i3blocks.git
cd i3blocks
./autogen.sh
./configure
make
sudo make install
配置 i3blocks
在你的 i3 配置文件中定义 i3blocks 作为状态行命令:
bar {
status_command i3blocks
}
i3blocks 默认查找配置文件的路径如下:
$XDG_CONFIG_HOME/i3blocks/config
或~/.config/i3blocks/config
~/i3blocks.conf
$XDG_CONFIG_DIRS/i3blocks/config
或/etc/xdg/i3blocks/config
/etc/i3blocks.conf
你可以使用 -c
选项指定其他路径。
示例配置
以下是一个简单的 i3blocks 配置示例:
# 每小时猜测天气
[weather]
command=curl -Ss 'https://wttr.in?0&T&Q' | cut -c 16- | head -2 | xargs echo
interval=3600
# 只在启动时查询默认 IP 地址
[ip]
command=hostname -I | awk '{print "IP:" $1}'
interval=once
# 每 5 秒更新时间
[time]
command=date +%T
interval=5
应用案例和最佳实践
天气更新
使用 curl
和 wttr.in
服务获取天气信息,并每小时更新一次:
[weather]
command=curl -Ss 'https://wttr.in?0&T&Q' | cut -c 16- | head -2 | xargs echo
interval=3600
IP 地址显示
在启动时获取并显示本地 IP 地址:
[ip]
command=hostname -I | awk '{print "IP:" $1}'
interval=once
时间显示
每 5 秒更新一次当前时间:
[time]
command=date +%T
interval=5
典型生态项目
i3blocks 可以与以下项目配合使用,以增强状态栏的功能:
- i3status: i3blocks 是 i3status 的替代品,提供更灵活的配置和功能。
- Sway: 作为 Wayland 合成器,Sway 可以直接使用 i3blocks 作为状态栏命令。
- i3blocks-contrib: 官方收集的 i3blocks 脚本集合,提供各种实用脚本:
git clone https://github.com/vivien/i3blocks-contrib ~/.config/i3blocks
通过这些项目和脚本,你可以定制一个功能丰富且个性化的状态栏。