跳转至内容

Polybar

来自 ArchWiki

polybar 是一个快速且易于使用的状态栏创建工具。它的目标是实现高度可自定义,通过使用许多模块来提供广泛的(可编辑)功能,例如显示工作区、日期或系统音量。Polybar 对于状态栏有限或没有状态栏的 窗口管理器 尤其有用,例如 awesomei3。Polybar 也可以与 桌面环境(如 Plasma)一起使用。

安装

安装 polybar 软件包。

配置

将配置示例从 /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
注意 通过额外配置,可以将类似的单元安装在 .config/systemd/ 中,从而使其可以随其他 dotfiles 一起管理
/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 单元。

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.