This literate configuration is available online on my GitHub Pages. Please, if you appreciate my work, consider making a donation.
This is my laptop’s Polybar. It is the primary status bar, and started by default by the window manager.
This first block registers the bar “laptop” with Polybar, and assigns it to the display eDP1.
; ____ __ __
; / __ \____ / /_ __/ /_ ____ ______
; / /_/ / __ \/ / / / / __ \/ __ `/ ___/
; / ____/ /_/ / / /_/ / /_/ / /_/ / /
;/_/ \____/_/\__, /_.___/\__,_/_/
; /____/
[bar/laptop]
bottom = true
width = 100%
height = 33
radius = 0
fixed-center = false
enable-ipc = true
monitor = eDP1
monitor-exact = true
monitor-strict = true
Here are some general appearance settings, like colors, padding, and font. Remember, in the hex colors for Polybar’s config, the first two digits are
for the alpha channel. Like this: #aarrggbb . So a color beginning with “#ff” would render with 100% opacity. Hex colors with only 6 digits will be
rendered fully opaque, and the colors will be interpreted like #rrggbb.
background = ${xrdb:polybar.color0}
foreground = ${xrdb:polybar.color1}
line-size = 3
line-color = #f00
padding-left = 0
padding-right = 0
font-0 = SpaceMono Nerd Font:size=16:antialias=true
Here we define the modules on the left and right sides of the laptop’s Polybar. Some system tray properties are also set. Modules appear
in the order they are listed on these next two lines. Notice the expressions that look like
${xrdb:polybar.colorx}, these will retrieve color strings from Xresources, so ricing is a little easier.
modules-left = bspwm
modules-right = mpd pulse memory cpu battery date
tray-position = right
tray-padding = 2
tray-maxsize = 33
tray-background = ${xrdb:polybar.color2}
wm-restack = bspwm
scroll-up = #bspwm.next
scroll-down = #bspwm.prev
The monitor’s Polybar has three modules the laptop’s (my primary) bar doesn’t: The network module, the window title, and the HDD module.
This block registers the monitor’s Polybar and assigns it to the display HDMI2.
[bar/monitor]
bottom = true
width = 100%
height = 32
radius = 0
fixed-center = false
enable-ipc = true
monitor = HDMI2
monitor-exact = true
monitor-strict = true
The font size should be a little bigger for the monitor’s bar.
background = ${xrdb:polybar.color0}
foreground = ${xrdb:polybar.color1}
tray-position = right
tray-padding = 2
tray-maxsize = 40
font-0 = SpaceMono Nerd Font:size=16:antialias=true
line-size = 2
line-color = #f00
border-size = 0
padding-left = 0
padding-right = 0
Here are the modules.
scroll-up = #bspwm.next
scroll-down = #bspwm.prev
modules-left = bspwm
modules-right = title hdd network battery date
wm-restack = bspwm
Show remaining disk space.
[module/hdd]
type = internal/fs
mount-0 = /
interval = 1
fixed-values = true
spacing = 2
format-mounted = <label-mounted>
label-mounted = " %free% "
format-mounted-foreground = #ffee7369
#format-mounted-underline = ${xrdb:polybar.color4}
format-mounted-background = #6acd5349
Shows the title of the currently focused window.
[module/title]
type = internal/xwindow
format = <label>
format-foreground = #efedc4c4
format-padding = 3
label = %title%
label-maxlen = 58
label-empty = bspwm
label-empty-foreground = #bfddb4b4
Shows upload and download traffic. Uncomment those lines to have underlines.
[module/network]
type = internal/network
interface = wlp0s20f3
interval = 1.0
format = <ramp-signal> <label-connected>
format-connected = <ramp-signal> <label-connected>
format-disconnected = "not connected"
format-disconnected-foreground = #ccedc2c2
#format-disconnected-underline = ${xrdb:polybar.color14}
label-connected = "%downspeed:5% %upspeed:5% "
label-connected-foreground = #ef83d288
format-connected-foreground = #ef83d288
#format-connected-underline = ${xrdb:polybar.color13}
format-connected-background = #7a539f58
ramp-signal-0 = " "
The Bspwm workspace listing, including focused colors, occupied colors, and
empty colors. The roman numerals in the icon strings are taken from bspwmrc.
[module/bspwm]
type = internal/bspwm
ws-icon-0 = "I;"
ws-icon-1 = "II;爵"
ws-icon-2 = "III;"
ws-icon-4 = "V;"
ws-icon-5 = "VI;"
ws-icon-3 = "IV;"
ws-icon-6 = "VII;"
ws-icon-7 = "VIII;"
ws-icon-8 = "IX;"
label-focused = %icon%
label-focused-background = #9acd5349
label-focused-foreground = #ffefcdcd
#label-focused-underline = ${xrdb:polybar.color6}
label-focused-padding = 1
label-occupied = %icon%
label-occupied-padding = 1
label-occupied-foreground = #ef5b9ad1
label-occupied-background = #9a4b8ac0
#label-occupied-underline = ${xrdb:polybar.color8}
label-urgent = %icon%!
label-urgent-background = #ffff0000
label-urgent-padding = 1
label-empty = %icon%
label-empty-background = #7addb474
label-empty-foreground = #efeec484
label-empty-padding = 1
scroll-up = bspwm-desknext
scroll-down = bspwm-deskprev
MPD music player.
[module/mpd]
type = internal/mpd
format-online = <label-song> <icon-prev> <toggle> <icon-next>
format-online-foreground = #efedc1c1
host = 127.0.0.2
port = 6600
label-active-font = 2
icon-play =
icon-pause =
icon-stop = +
icon-prev =
icon-next =
label-song-maxlen = 56
label-song-ellipsis = true
Pulseaudio volume.
[module/pulse]
type = internal/pulseaudio
sink = alsa_output.pci-0000_00_1f.3.analog-stereo
interval = 2
format-volume = <ramp-volume> <label-volume>
format-muted = "<label-muted> "
label-muted = " 奄 %percentage%%"
label-muted-foreground = #ffeec484
ramp-volume-0 = " 奄"
ramp-volume-0-foreground = #efdd6359
ramp-volume-1 = " 奔"
ramp-volume-2 = " 墳"
spacing = 2
label-volume = "%percentage%% "
format-volume-foreground = #ffeec484
#format-volume-underline = ${xrdb:polybar.color4}
format-volume-background = #7addb474
#format-muted-underline = ${xrdb:polybar.color4}
click-right = pavucontrol
Average CPU percentage.
[module/cpu]
type = internal/cpu
interval = 1
format-prefix = " "
format-foreground = #efdd6359
#format-underline = ${xrdb:polybar.color14}
format-background = #6acd5349
format-prefix-foreground = #ffdd6359
format-padding = 1
label = %percentage:2%%
Percentage of RAM in use.
[module/memory]
type = internal/memory
interval = 1
format-prefix = " "
format-padding = 1
format-foreground = #ef63b268
#format-underline = ${xrdb:polybar.color16}
format-background = #6a539f58
format-prefix-foreground = #ff63b268
label = %percentage_used%%
Notice the animations, and the red and yellow colors, to draw attention to low battery levels.
[module/battery]
type = internal/battery
battery = BAT0
adapter = AC0
full-at = 92
format-foreground = #efe99781
format-charging-foreground = #efe99781
format-charging-background = #7ad98771
format-charging = <animation-charging> <label-charging>
#format-charging-underline = ${xrdb:polybar.color8}
format-charging-padding = 1
format-discharging-foreground = #efedc5c5
format-discharging-prefix-foreground = #efe99781
format-discharging = <ramp-capacity> <label-discharging>
#format-discharging-underline = ${xrdb:polybar.color8}
format-discharging-background = #7ad98771
format-discharging-padding = 1
format-full-prefix = " "
format-full-prefix-foreground = #efe99781
format-full-foreground = #efe99781
#format-full-underline = ${xrdb:polybar.color8}
format-full-background = #00000000
format-full-padding = 1
ramp-capacity-4 = " "
ramp-capacity-3 = " "
ramp-capacity-2 = " "
ramp-capacity-1 = " "
ramp-capacity-0 = " "
ramp-capacity-1-foreground = #efeec484
ramp-capacity-0-foreground = #efdd6359
ramp-capacity-foreground = #efe99781
animation-charging-0 = " "
animation-charging-1 = " "
animation-charging-2 = " "
animation-charging-3 = " "
animation-charging-4 = " "
animation-charging-foreground = #efe99781
animation-charging-framerate = 400
Tried and true date module.
[module/date]
type = internal/date
interval = 1
format-prefix = " "
date = " %a %b %d"
time = " %I:%M:%S"
format-foreground = #ef78c4c1
format-prefix-foreground = #ef78c4c1
#format-underline = ${xrdb:polybar.color18}
format-background = #6b489390
label = %date% %time%