Polybar
polybar 是一个快速且易于使用的状态栏创建工具。它的目标是实现高度可自定义,通过使用许多模块来提供广泛的(可编辑)功能,例如显示工作区、日期或系统音量。Polybar 对于状态栏有限或没有状态栏的 窗口管理器 尤其有用,例如 awesome 或 i3。Polybar 也可以与 桌面环境(如 Plasma)一起使用。
安装
配置
将配置示例从 /etc/polybar/config.ini 复制到 $XDG_CONFIG_HOME/polybar/config.ini。默认情况下,polybar 将根据查找顺序,依次从 ~/.config/polybar/config.ini、/etc/xdg/polybar/config.ini 或 /etc/polybar/config.ini 加载配置文件。
运行 Polybar
请参阅 polybar --help 以获取手动运行的选项列表。不过,你可能希望将 Polybar 放入窗口管理器的引导程序中运行。请参阅 #配合窗口管理器运行。
示例配置
一个非常基础的 polybar 配置可能如下所示
config.ini
[bar/mybar] modules-right = date [module/date] type = internal/date date = %Y-%m-%d%
它定义了一个名为 mybar 的状态栏,其中包含一个名为 date 的模块。
Polybar 还会将包含许多预配置模块的默认配置安装在 /etc/polybar/config.ini 中。
配合窗口管理器运行
创建一个包含启动逻辑的 可执行文件,例如 $HOME/.config/polybar/launch.sh
#!/bin/bash # Terminate already running bar instances killall -q polybar # If all your bars have ipc enabled, you can also use # polybar-msg cmd quit # Launch Polybar, using default config location ~/.config/polybar/config.ini polybar mybar 2>&1 | tee -a /tmp/polybar.log & disown echo "Polybar launched..."
该脚本意味着重启窗口管理器时也会重启 Polybar。
有关如何让窗口管理器在启动时执行此脚本,请参阅 自动启动#在窗口管理器启动时。
多显示器
如果你希望状态栏在多个显示器上重复出现,你需要启动多个状态栏。
在你的启动脚本中添加类似以下内容
if type "xrandr"; then
for m in $(xrandr --query | grep " connected" | cut -d" " -f1); do
MONITOR=$m polybar --reload example &
done
else
polybar --reload example &
fi
然后配置 Polybar 从环境变量中读取显示器信息
config.ini
[bar/example]
monitor = ${env:MONITOR:}
[..]
故障排除
ThinkPad 电池显示
在 Lenovo ThinkPad X200 及相关型号上,由于这些型号的固件存在问题,电池电量显示在系统从暂停状态恢复(如重新打开盖子)后经常停止更新。[1] 重启 polybar 可以使其重新获取电池状态。这可以通过一个 systemd 单元来自动化,在 从暂停恢复时 运行 polybar-msg cmd restart。
确保 polybar 已配置为使用 polybar-msg
config.ini
[bar/example] enable-ipc = true
/etc/systemd/system/polybar-resume@.service
[Unit] Description=Restart polybar after suspend After=suspend.target hibernate.target [Service] Type=exec ExecStart=/usr/bin/systemd-run --machine=%i@ --user polybar-msg cmd restart [Install] WantedBy=suspend.target hibernate.target
启用 polybar-resume@user.service 单元。