i3-polybar配置美化

安装

sudo pacman -S polybar

i3 配置使用 polybar

编写启动 polybar 的脚本

#!/bin/bash

# 终端可能已经有在运行的实例
killall -q polybar

# 等待进程被终止
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done

# 运行Polybar,使用默认的配置文件路径 ~/.config/polybar/config
polybar mybar &

echo "Polybar runing..."

注释 i3 自带的 bar 或 i3blocks ,配置使用 polybar 启动脚本启动 polybar

#bar {
#	i3bar_command i3bar --transparency
#	status_command i3blocks
#	position top
#	colors {
#		background #9370DB3F
#		separator #778899
#			# 使用RGBA颜色  #边界 背景 文本
#		focused_workspace  	#778899A5 #87CEEBA5 #FFFAFAF5
#		inactive_workspace 	#7788993F #AFEEEE3F #FFFAFAF5
#		urgent_workspace   	#80808072 #FF450072 #FFFAFAF5
#    }
#}

exec_always --no-startup-id $HOME/.config/polybar/polybar_run.sh

定义自己的 polybar 配置

配置文件使用的是 ini 格式编写,具体每个插件查考官方 wiki 的说明(英文有些吃力就用翻译),也可使用第三方脚本插件。

;==========================================================
;
;
;   ██████╗  ██████╗ ██╗  ██╗   ██╗██████╗  █████╗ ██████╗
;   ██╔══██╗██╔═══██╗██║  ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
;   ██████╔╝██║   ██║██║   ╚████╔╝ ██████╔╝███████║██████╔╝
;   ██╔═══╝ ██║   ██║██║    ╚██╔╝  ██╔══██╗██╔══██║██╔══██╗
;   ██║     ╚██████╔╝███████╗██║   ██████╔╝██║  ██║██║  ██║
;   ╚═╝      ╚═════╝ ╚══════╝╚═╝   ╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝
;
;
;   https://github.com/polybar/polybar
;   https://github.com/polybar/polybar/wiki
;
;==========================================================

[colors]
;background = ${xrdb:color0:#222}
background = #cc222222
background-alt = #444
;foreground = ${xrdb:color7:#222}
foreground = #b6a49b
foreground-alt = #555
primary = #ffb52a
secondary = #e60053
alert = #bd2c40


[settings]
screenchange-reload = true
;compositing-background = xor
;compositing-background = screen
;compositing-foreground = source
;compositing-border = over
;pseudo-transparency = false

[global/wm]
margin-top = 1
margin-bottom = 3


[bar/mybar]
;monitor = ${env:MONITOR:HDMI-1}
;width = 100%
;height = 25
;offset-x = 1%
;offset-y = 1%
radius = 12
fixed-center = true

background = ${colors.background}
foreground = ${colors.foreground}

line-size = 4
line-color = #f00

border-size = 4
border-color = #00000000

padding-left = 2
padding-right = 2

module-margin-left = 1
module-margin-right = 2

; https://github.com/ryanoasis/nerd-fonts
; https://www.nerdfonts.com/cheat-sheet
font-0 = fixed:pixelsize=10;1
font-1 = unifont:fontformat=truetype:size=10:antialias=false;0
font-2 = Noto Sans Symbols2:style=Regular:size=12
font-3 = Font Awesome 5 Free:style=Solid:size=12
font-4 = Font Awesome 5 Brands:style=Regular:size=12
font-5 = DejaVu Sans:style=Bold:size=12


modules-left = menu-apps i3
;modules-center = mpd
modules-center = wireless-network wired-network cpu memory
modules-right = system-usb-udev xkeyboard pulseaudio backlight date battery


tray-position = right
tray-padding = 2
tray-background = ${colors.background}
transparent = true


cursor-click = pointer
cursor-scroll = ns-resize

;====================================


; ===菜单===
; https://github.com/polybar/polybar/wiki/Module:-menu
[module/menu-apps]
type = custom/menu

; 若为 true, <label-toggle> 将在左边,若为 false, 将在右边
expand-right = true

; menu-LEVEL-N 与 label-NAME 属性相同,并附加 exec 属性
; 命令将使用 /bin/sh -c $COMMAND

menu-0-0 = 浏览器
menu-0-0-exec = #menu-apps.open.1
menu-0-1 = 多媒体
menu-0-1-exec = #menu-apps.open.2

menu-1-0 =  Firefox
menu-1-0-exec = firefox
menu-1-1 =  Chromium
menu-1-1-exec = chromium

menu-2-0 = Gimp
menu-2-0-exec = gimp
menu-2-1 = Scrot
menu-2-1-exec = scrot

; <label-toggle> 可替换为 <label-(open|close)>
; 如果 expand-right 为 true ,则默认值为"<label-toggle><menu>"。注意,如果使用<label-toggle> 就必须定义 <label-open>
; format = <label-toggle> <menu>

label-open = 
label-close = 

; 分隔元件
label-separator = |


; ===i3 工作区===
; https://github.com/polybar/polybar/wiki/Module:-i3
[module/i3]
type = internal/i3
format = <label-state> <label-mode>
index-sort = true
wrapping-scroll = false

label-mode-padding = 2
label-mode-foreground = #000
label-mode-background = ${colors.primary}

; 聚焦在显示器上的活动工作区
label-focused = %index%
label-focused-background = ${colors.background-alt}
label-focused-underline= ${colors.primary}
label-focused-padding = 2

; 任何显示器上的非活动工作区
label-unfocused = %index%
label-unfocused-padding = 2

; 未聚焦在显示器生的活动工作区
label-visible = %index%
label-visible-background = ${self.label-focused-background}
label-visible-underline = ${self.label-focused-underline}
label-visible-padding = ${self.label-focused-padding}

; 设置紧急提示的工作区
label-urgent = %index%
label-urgent-background = ${colors.alert}
label-urgent-padding = 2

; 工作区之间的分隔符
; label-separator = |


; ===网络===
; https://github.com/polybar/polybar/wiki/Module:-network
[module/wired-network]
type = internal/network
interface = enp4s0
interval = 3.0

; 间隔宽度
udspeed-minwidth = 3
; 所以端口累计
accumulate-stats = true
; 对未知状态的网络设备启用
unknown-as-up = true

format-connected = <label-connected>
format-disconnected = <label-disconnected>

label-connected =   %linkspeed% %upspeed% %downspeed%
label-connected-foreground = #00FFFF

;label-disconnected = 
;label-disconnected-foreground = #66ffffff


[module/wireless-network]
type = internal/network
interface = wlp3s0

interval = 3.0

; 间隔宽度
udspeed-minwidth = 3
; 所以端口累计
accumulate-stats = true
; 对未知状态的网络设备启用
unknown-as-up = true

format-connected = <ramp-signal> <label-connected>
format-disconnected = <label-disconnected>

label-connected =  %essid% %upspeed% %downspeed%
label-connected-foreground = #00FFFF

;label-disconnected = 
;label-disconnected-foreground = #66ffffff

ramp-signal-0 = 
ramp-signal-1 = 
ramp-signal-2 = 
ramp-signal-3 = 
ramp-signal-4 = 
ramp-signal-5 = 

ramp-signal-0-foreground = #ff5555
ramp-signal-1-foreground = #ff5555
ramp-signal-2-foreground = #fba922
ramp-signal-3-foreground = #fba922
ramp-signal-4-foreground = #aaff77
ramp-signal-5-foreground = #aaff77


; ===键盘提示===
; https://github.com/polybar/polybar/wiki/Module:-xkeyboard
[module/xkeyboard]
type = internal/xkeyboard


; 忽略列表
blacklist-0 = scroll lock

; <label-indicator>
format =  <label-indicator>
format-spacing = 1

label-indicator-on-capslock = 
label-indicator-off-capslock =
;label-indicator-on-numlock = 🅽
;label-indicator-off-numlock =

label-indicator-on-capslock-foreground = #ff5555


; ===音量===
; https://github.com/polybar/polybar/wiki/Module:-pulseaudio
[module/pulseaudio]
type = internal/pulseaudio
sink = alsa_output.pci-0000_12_00.3.analog-stereo
use-ui-max = true
interval = 5

format-volume = <ramp-volume> <label-volume>

label-muted = 
label-muted-foreground = #666

ramp-volume-0 = 
ramp-volume-1 = 
ramp-volume-2 = 

; 左右键功能,pavucontrol 用于开关音量
click-right = pavucontrol
; click-middle =


; ===CPU===
; https://github.com/polybar/polybar/wiki/Module:-cpu
[module/cpu]
type = internal/cpu

; 刷新间隔,默认: 1
interval = 0.5

format = <label> <ramp-coreload>

label =  %percentage%%
label-foreground = #9A32DB

; Spacing between individual per-core ramps
ramp-coreload-spacing = 1
ramp-coreload-0 = ▁
ramp-coreload-1 = ▂
ramp-coreload-2 = ▃
ramp-coreload-3 = ▄
ramp-coreload-4 = ▅
ramp-coreload-5 = ▆
ramp-coreload-6 = ▇
ramp-coreload-7 = █

ramp-coreload-0-foreground = #aaff77
ramp-coreload-1-foreground = #aaff77
ramp-coreload-2-foreground = #aaff77
ramp-coreload-3-foreground = #aaff77
ramp-coreload-4-foreground = #fba922
ramp-coreload-5-foreground = #fba922
ramp-coreload-6-foreground = #ff5555
ramp-coreload-7-foreground = #ff5555

; ===内存===
; https://github.com/polybar/polybar/wiki/Module:-memory
[module/memory]
type = internal/memory

; 刷新间隔,默认: 1
interval = 3

format = <label> <ramp-used> <ramp-free>

label =  %gb_used%/%gb_free%
label-foreground = #9A32DB

; 用于 <ramp-used>
ramp-used-0 = ▁
ramp-used-1 = ▂
ramp-used-2 = ▃
ramp-used-3 = ▄
ramp-used-4 = ▅
ramp-used-5 = ▆
ramp-used-6 = ▇
ramp-used-7 = █

ramp-used-0-foreground = #aaff77
ramp-used-1-foreground = #aaff77
ramp-used-2-foreground = #aaff77
ramp-used-3-foreground = #aaff77
ramp-used-4-foreground = #fba922
ramp-used-5-foreground = #fba922
ramp-used-6-foreground = #ff5555
ramp-used-7-foreground = #ff5555

; 用于 <ramp-free>
ramp-free-0 = ▁
ramp-free-1 = ▂
ramp-free-2 = ▃
ramp-free-3 = ▄
ramp-free-4 = ▅
ramp-free-5 = ▆
ramp-free-6 = ▇
ramp-free-7 = █

ramp-free-0-foreground = #ff5555
ramp-free-1-foreground = #ff5555
ramp-free-2-foreground = #fba922
ramp-free-3-foreground = #fba922
ramp-free-4-foreground = #aaff77
ramp-free-5-foreground = #aaff77
ramp-free-6-foreground = #aaff77
ramp-free-7-foreground = #aaff77


; ===屏幕亮度===
; https://github.com/polybar/polybar/wiki/Module:-xbacklight
[module/backlight]
type = internal/backlight

; 使用命令查询到设备文件:
; ls -1 /sys/class/backlight/
card = intel_backlight

; 滚轮调节亮度
; sudo chown video /sys/class/backlight/intel_backlight/brightness
; sudo chmod g+w /sys/class/backlight/intel_backlight/brightness
; usermod -a -G video eonun
; Default: false
enable-scroll = true

format = <ramp> <label>

label = %percentage%%

; 用于 <ramp>
ramp-0 = 🌕
ramp-1 = 🌔
ramp-2 = 🌓
ramp-3 = 🌒
ramp-4 = 🌑

; 用于 <bar>
bar-width = 10
bar-indicator = |
bar-fill = -
bar-empty = -


; ===日期时间===
; https://github.com/polybar/polybar/wiki/Module:-date
[module/date]
type = internal/date

; 更新间隔, 默认: 1.0
interval = 1.0
format = <label>

date = %Y-%m-%d%
time = %H:%M

; 另一中格式
date-alt = %A, %d %B %Y
time-alt = %H:%M:%S

label =  %date%  %time%
label-font = 1
label-foreground = #eefafafa


; ===电源提示===
; https://github.com/polybar/polybar/wiki/Module:-battery
[module/battery]
type = internal/battery

; 电量大于 99% 显示充电完成
full-at = 99

; 使用以下命令列出电池和适配器:
; ls -1 /sys/class/power_supply/
battery = BAT1
adapter = ACAD

poll-interval = 3

; 时间过格式,默认: %H:%M:%S
time-format = %H:%M

; 充电
format-charging =  <animation-charging> <label-charging>

; 放电
format-discharging =  <animation-discharging> <label-discharging>

; 充电完成
;format-full = <ramp-capacity> <label-full>

; 充电状态
label-charging =  %percentage%(%time%)


; 放电状态
label-discharging = %percentage%(%time%)

;充电完成
label-full =  %percentage%
label-full-foreground = #aaff77

ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 

bar-capacity-width = 10

animation-charging-0 = 
animation-charging-1 = 
animation-charging-2 = 
animation-charging-3 = 
animation-charging-4 = 
; 动画帧率(毫秒)
animation-charging-framerate = 750

animation-discharging-0 = 
animation-discharging-1 = 
animation-discharging-2 = 
animation-discharging-3 = 
animation-discharging-4 = 
; 动画帧率(毫秒)
animation-discharging-framerate = 500

; ===USB===
; https://github.com/polybar/polybar-scripts/tree/master/polybar-scripts/system-usb-udev
[module/system-usb-udev]
type = custom/script
exec = ~/.config/polybar/scripts/system-usb-udev.sh
tail = true
click-left = ~/.config/polybar/scripts/system-usb-udev.sh --mount &
click-right = ~/.config/polybar/scripts/system-usb-udev.sh --unmount &

使用已有的 polybar 主题配置

https://github.com/Yucklys/polybar-nord-theme

https://github.com/adi1090x/polybar-themes

nerd 字体(各类字体的集合)

参考

Polybar 的配置笔记

Polybar的主题配置