Eén van de dingen die ik het leukst vind aan Linux is de flexibiliteit. Ik kan alles wat me niet bevalt aanpassen zoals ik dat wil. Ik heb onlangs geëxperimenteerd met het aanpassen van mijn bureaublad naar mijn eigen wensen en gebruikte daarvoor Polybar, een statusbalk voor Linux-bureaubladen. Het stelt me in staat om essentiële informatie bij de hand te houden en mijn schermruimte beter te benutten.
Polybar is een zeer aanpasbare statusbalk voor Linux-bureaubladen. Met Polybar kunt je een eigen aangepast paneel maken aan de boven- of onderkant van jouw scherm, waarin je de informatie kunt weergeven die je wilt. Het is snel, licht en eenvoudig in te stellen, dus je hoeft geen expert te zijn in het schrijven van shell-scripts om het te kunnen gebruiken.
Het doel van Polybar is om je te helpen bij het maken van een statusbalk die er geweldig uitziet en waarin je essentiële informatie altijd bij de hand hebt. Dit kan bijvoorbeeld informatie zijn over jouw werkruimtes, het gebruik van systeembronnen, de netwerkstatus, de batterijstatus, de muziekweergave, de datum en tijd, enzovoort.
Het programma is vooral handig voor degenen die gebruikmaken van vensterbeheerders met tegels, zoals Hyprland, i3, bspwm of AwesomeWM, die vaak geen of slechts een minimale ingebouwde statusbalk hebben. In dergelijke configuraties kan Polybar de standaardbalk vervangen of uitbreiden om systeemgegevens weer te geven, zoals de CPU-belasting, geheugen, temperatuur enzovoort.
Polybar is niet beperkt tot vensterbeheerders met tegels. Het is onafhankelijk van de vensterbeheerder en werkt in vrijwel elke grafische omgeving op Linux. Zelfs als je een volledig desktop-omgeving gebruikt, zoals Xfce of KDE, kun je Polybar gebruiken om het uiterlijk van jouw desktop te verbeteren of om een extra paneel toe te voegen voor extra functionaliteit.
Polybar is beschikbaar in de officiële pakketbronnen van de meeste grote Linux-distributies. Je kunt het in Debian installeren met de apt-opdracht:
dany@pindabook:~$ sudo apt install polybar
[sudo] wachtwoord voor dany:
Het volgende pakket is automatisch geïnstalleerd en is niet langer nodig:
linux-image-6.12.86+deb13-amd64
Gebruik 'sudo apt autoremove' om het te verwijderen.
Installeren:
polybar
Installeren van vereisten:
libjsoncpp26 libmpdclient2t64 libxcb-ewmh2 libxcb-xrm0
Samenvatting:
Opwaarderen: 0, Installeren: 5, Verwijderen: 0, Niet opwaarderen: 0
Downloadgrootte: 983 kB
Benodigde ruimte: 3.806 kB / 84,3 GB beschikbaar
Doorgaan? [J/n]
Ophalen:1 http://deb.debian.org/debian trixie/main amd64 libjsoncpp26 amd64 1.9.6-3 [81,7 kB]
Ophalen:2 http://deb.debian.org/debian trixie/main amd64 libmpdclient2t64 amd64 2.22-1.1+b1 [49,4 kB]
Ophalen:3 http://deb.debian.org/debian trixie/main amd64 libxcb-ewmh2 amd64 0.4.2-1 [32,8 kB]
Ophalen:4 http://deb.debian.org/debian trixie/main amd64 libxcb-xrm0 amd64 1.3+git20230724.a17de57-1 [12,2 kB]
Ophalen:5 http://deb.debian.org/debian trixie/main amd64 polybar amd64 3.7.2-1 [807 kB]
983 kB opgehaald in 0s (10,6 MB/s)
Voorheen niet geselecteerd pakket libjsoncpp26:amd64 wordt geselecteerd.
(Database wordt ingelezen ... 211797 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../libjsoncpp26_1.9.6-3_amd64.deb wordt voorbereid...
Bezig met uitpakken van libjsoncpp26:amd64 (1.9.6-3) ...
Voorheen niet geselecteerd pakket libmpdclient2t64:amd64 wordt geselecteerd.
Uitpakken van .../libmpdclient2t64_2.22-1.1+b1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libmpdclient2t64:amd64 (2.22-1.1+b1) ...
Voorheen niet geselecteerd pakket libxcb-ewmh2:amd64 wordt geselecteerd.
Uitpakken van .../libxcb-ewmh2_0.4.2-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libxcb-ewmh2:amd64 (0.4.2-1) ...
Voorheen niet geselecteerd pakket libxcb-xrm0:amd64 wordt geselecteerd.
Uitpakken van .../libxcb-xrm0_1.3+git20230724.a17de57-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libxcb-xrm0:amd64 (1.3+git20230724.a17de57-1) ...
Voorheen niet geselecteerd pakket polybar wordt geselecteerd.
Uitpakken van .../polybar_3.7.2-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van polybar (3.7.2-1) ...
Instellen van libxcb-xrm0:amd64 (1.3+git20230724.a17de57-1) ...
Instellen van libjsoncpp26:amd64 (1.9.6-3) ...
Instellen van libmpdclient2t64:amd64 (2.22-1.1+b1) ...
Instellen van libxcb-ewmh2:amd64 (0.4.2-1) ...
Instellen van polybar (3.7.2-1) ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
Bezig met afhandelen van triggers voor libc-bin (2.41-12+deb13u3) ...
Zodra Polybar is geïnstalleerd, kun je het meteen uitproberen.
Het programma wordt geleverd met een standaardconfiguratie.
Je hoeft dus alleen maar de polybar opdracht in een terminal uit te voeren en je krijgt een basisversie van de balk op het scherm.
De standaardconfiguratie bevat een balk met een aantal vooraf geconfigureerde modules.
Je krijgt dus een voorbeeld van een balk te zien met een klok, werkruimtes en meer, als bewijs dat het programma werkt.
dany@pindabook:~$ polybar
notice: Parsing config file: /etc/polybar/config.ini
notice: Listening for IPC messages (PID: 9393)
notice: Loading module 'xworkspaces' of type 'internal/xworkspaces'
notice: Loading module 'xwindow' of type 'internal/xwindow'
notice: Loading module 'filesystem' of type 'internal/fs'
notice: Loading module 'pulseaudio' of type 'internal/pulseaudio'
notice: pulseaudio: using default sink alsa_output.pci-0000_00_1b.0.analog-stereo
notice: Loading module 'xkeyboard' of type 'internal/xkeyboard'
notice: Loading module 'memory' of type 'internal/memory'
notice: Loading module 'cpu' of type 'internal/cpu'
notice: Loading module 'wlan' of type 'internal/network'
notice: module/wlan: Discovered wireless interface wlp4s0
notice: Loading module 'eth' of type 'internal/network'
error: Disabling module "eth" (reason: No interface found for type 'wired')
notice: Loading module 'date' of type 'internal/date'
notice: Loaded 9 modules
notice: Loaded font "monospace" (name=DejaVu Sans Mono, offset=2, file=/usr/share/fonts/truetype/dejavu/DejaVu
SansMono.ttf)
warn: background_manager: Failed to get root pixmap, default to black (is there a wallpaper?)
warn: background_manager: Failed to get root pixmap, default to black (is there a wallpaper?)
warn: background_manager: Failed to get root pixmap, default to black (is there a wallpaper?)
warn: background_manager: Failed to get root pixmap, default to black (is there a wallpaper?)

Sommige onderdelen in de balk kan je aanklikken. Zo kan je door te klikken op het Volume onderdeel het geluid dempen of terug inschakelen. Daarenboven veranderd de muiswijzer bij aanklikbare onderdelen. Klik op de tijdaanduiding om ook de datum en seconden weer te geven of te verbergen.
Zolang Polybar actief is kan je in de terminal geen opdrachten meer uitvoeren. Dat merk je aan het ontbreken van de prompt. Om Polybar af te sluiten, activeer je de terminal en druk je op de sneltoets Ctrl+c.
notice: Received signal(2): Interrupt
notice: Termination signal received, shutting down...
Nu komen we bij het leuke deel: Polybar aanpassen naar jouw eigen wensen. Het is een uiterst flexibel programma dat naar wens kan worden aangepast en ingesteld. Je kunt kiezen welke modules worden weergegeven en het zelfs uitbreiden met aangepaste scripts. De configuratie gebeurt via één enkel tekstbestand in het INI-formaat, wat in het begin misschien intimiderend lijkt, maar als je de structuur eenmaal begrijpt, is het eigenlijk heel logisch.
We beginnen met het aanmaken van een persoonlijke Polybar configuratiemap:
dany@pindabook:~$ mkdir -p .config/polybar
Daarna kunnen we met een teksteditor het configuratiebestand aanmaken.
dany@pindabook:~$ nano .config/polybar/config.ini
Het configuratiebestand is verdeeld in secties die worden gemarkeerd door vierkante haken.
In een kleuren-sectie ([colors]) definieert je een palet van waarden zoals achtergrondkleur, voorgrondkleur en primaire kleur, zodat je later gemakkelijk de uitstraling van de balk kunt wijzigen.
De balk-sectie ([bar/example]) definieert de balk zelf en de eigenschappen ervan, zoals de grootte, lettertypes en welke modules op welke zijden worden weergegeven.
Voor de eenvoudige configuratie van een balk met een datum aan de rechterkant typ je de volgende vijf configuratieregels:
GNU nano 8.4 .config/polybar/config.ini [bar/statusbalk]
modules-right = date
[module/date]
type = internal/date
date = %Y-%m-%d%
^G Hulp ^O Opslaan ^F Zoeken ^K Knippen ^T Opdracht ^C Positie M-U Terugdraaien
^X Afsluiten ^R Inlezen ^\ Vervangen ^U Plakken ^J Uitvullen ^/ Naar regel M-E Herdoen
Elke module heeft zijn eigen sectie en vertegenwoordigt een widget op de balk, zoals een klok, een batterijindicator of een netwerkstatus. Een basisklokmodule bijvoorbeeld, wordt elke 60 seconden bijgewerkt en toont de datum en het uur in een zelf gekozen formaat.
Sla het configuratiebestand op met de sneltoets Ctrl+s en sluit de nano teksteditor met Ctrl+x.
Test de nieuwe configuratie door de polybar opdracht in een terminal uit te voeren.
Sluit daarna de polybar terug af met de sneltoets Ctrl+c.
Polybar wordt standaard geleverd met een configuratiebestand voor het hele systeem, maar het is beter om dit niet direct te bewerken. Maak in plaats daarvan jouw persoonlijke gebruikersconfiguratie. Je kunt beginnen door de standaardconfiguratie te kopiëren en deze aan te passen aan jouw wensen:
dany@pindabook:~$ cp /etc/polybar/config.ini .config/polybar/
In de nano teksteditor ziet het configuratiebestand er zo uit:
GNU nano 8.4 .config/polybar/config.ini
;==========================================================
;
;
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
;
;
; To learn more about how to configure Polybar
; go to https://github.com/polybar/polybar
;
; The README contains a lot of information
;
;==========================================================
[colors]
background = #282A2E
background-alt = #373B41
foreground = #C5C8C6
primary = #F0C674
secondary = #8ABEB7
alert = #A54242
disabled = #707880
^G Hulp ^O Opslaan ^F Zoeken ^K Knippen ^T Opdracht ^C Positie M-U Terugdraaien
^X Afsluiten ^R Inlezen ^\ Vervangen ^U Plakken ^J Uitvullen ^/ Naar regel M-E Herdoen
Naast deze voorbeeld configuratie, kan je de volledige handleiding online raadplegen. Persoonlijk moest ik echter wel even mijn weg zoeken in de nogal eigenzinnige structuur.
Ik gebruik een minicomputer (10 inch scherm) om onderweg, in wachtzalen, enz. tijdschriften en strips te lezen en de tijd te doden met spelletjes zoals Patience. Bij het geven van lezingen, gebruik ik het toestel als leidraad. Al deze toepassingen werken fijner als je ze schermvullend gebruikt. Maar dan verlies ik vlug de tijd uit het oog. Ik heb dus een Polybar configuratie gemaakt om de tijd in de rechter bovenhoek te plaatsen.
[colors]
background = #00000000
background-alt = #373B41
foreground = #C5C8C6
primary = #000000
secondary = #8ABEB7
alert = #A54242
disabled = #707880
[bar/example]
width = 10%
offset-x = 87%
height = 24pt
offset-y = 9px
radius = 6
;bottom = true
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3pt
border-size = 4pt
border-color = #00000000
padding-left = 0
padding-right = 1
module-margin = 1
separator = |
separator-foreground = ${colors.disabled}
font-0 = monospace:size=18:weight=bold;2
modules-right = date
cursor-click = pointer
cursor-scroll = ns-resize
enable-ipc = true
override-redirect = true
[module/date]
type = internal/date
interval = 1
date = %H:%M
date-alt = %Y-%m-%d %H:%M:%S
label = %date%
label-foreground = ${colors.primary}
[settings]
screenchange-reload = true
pseudo-transparency = true
Daarbij zijn de volgende eigenschappen aangepast:
primary = #000000: bepaald de kleur (zwart) van de tijdweergavebackground = #00000000: bepaald de kleur (doorzichtig) van de statusbalkwidth = 10%: bepaald de breedte van de statusbalk (in %: ten opzichte van de schermbreedte)offset-x = 87%: bepaald de positie van de status balk (in %: ten opzichte van de linkerrand en de schermbreedte)font-0 = monospace:size=18:weight=bold;2: bepaald het lettertype, -grootte en -gewicht.modules-right = date: plaats enkel de tijd/datum in het rechterdeel van de statusbalk.modules-left: verwijderd, linkerdeel van de statusbalk wordt niet gebruiktoverride-redirect = true: plaats de statusbalk boven alle vensters, ook schermvullende.Dit is het resultaat met een schermvullend Patiencespel:

Als je zoals ik graag wat afwisselt, kan dit venster schermvullend blijven. Schakel in KDE over naar het Bureaublad mei de sneltoets Meta+d waarbij de Meta-toets standaard overeenkomt met de Windows-toets. Je kunt nu een tweede schermvullend programma starten, bijvoorbeeld om een tijdschrift te lezen:

Met de sneltoets Alt+Tab kan je schakelen tussen de twee gestarte schermvullende toepassingen.
De meeste toepassingen kan je sluiten met de sneltoets Ctrl+q.
Zodra je hebt gecontroleerd of de aangepaste Polybar werkt, wil je het waarschijnlijk automatisch laten starten bij het inloggen. Hoe je dit doet, hangt af van jouw systeem. In KDE kun je Polybar toevoegen aan de opstarttoepassingen van uw sessie, zodat het programma automatisch wordt gestart bij het inloggen.
Autostart./usr/bin/polybar in.Je kunt een automatisch gestarte toepassing op twee manieren stoppen, grafisch en met een terminalopdracht.
Autostart.
killall gevolgd door de opdracht om de toepassing te starten.
Voor Polybar wordt dit dus:
dany@pindabook:~$ killall polybar
Polybar ondersteunt ook aangepaste modules die externe scripts/opdrachten uitvoeren en hun uitvoer direct in de balk weergeven. Je kunt bijvoorbeeld een script maken om te controleren of er systeemupdates beschikbaar zijn en dit script periodiek laten uitvoeren. Als voorbeeld maken we zelf een eenvoudige datum module, de volledige Polybar configuratie wordt dan:
[colors]
background = #00000000
background-alt = #373B41
foreground = #C5C8C6
primary = #000000
secondary = #8ABEB7
alert = #A54242
disabled = #707880
[bar/example]
width = 20%
offset-x = 77%
height = 24pt
offset-y = 9px
radius = 6
;bottom = true
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3pt
border-size = 4pt
border-color = #00000000
padding-left = 0
padding-right = 1
module-margin = 1
separator = |
separator-foreground = ${colors.disabled}
font-0 = monospace:size=18:weight=bold;2
modules-right = date datum
cursor-click = pointer
cursor-scroll = ns-resize
enable-ipc = true
override-redirect = true
[module/date]
type = internal/date
interval = 1
date = %H:%M
date-alt = %Y-%m-%d %H:%M:%S
label = %date%
label-foreground = ${colors.primary}
[module/datum]
type = custom/script
exec = date +"%d/%m/%Y"
interval = 60
[settings]
screenchange-reload = true
pseudo-transparency = true
Elke module heeft zijn eigen handleiding, deze kan je eveneens online raadplegen, zoals deze voor de script module. Wie inspiratie zoekt of reeds geschreven script modules van anderen wil gebruiken, kan terecht op deze overzichtspagina.
Zorg dat Polybar niet meer automatisch opstart en afgesloten is.
Autostart.Verwijder het geïnstalleerde softwarepakket in een terminal met de volgende opdracht:
dany@pindabook:~$ sudo apt remove polybar
[sudo] wachtwoord voor dany:
De volgende pakketten zijn automatisch geïnstalleerd en zijn niet langer nodig:
libjsoncpp26 libmpdclient2t64 libxcb-ewmh2 libxcb-xrm0 linux-image-6.12.86+deb13-amd64
Gebruik 'sudo apt autoremove' om ze te verwijderen.
VERWIJDEREN:
polybar
Samenvatting:
Opwaarderen: 0, Installeren: 0, Verwijderen: 1, Niet opwaarderen: 0
Vrijgemaakte ruimte: 3.219 kB
Doorgaan? [J/n]
(Database wordt ingelezen ... 211840 bestanden en mappen momenteel geïnstalleerd.)
polybar (3.7.2-1) wordt verwijderd ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
Om meer schijfruimte vrij te maken, verwijderen we ook de niet langer gebruikte afhankelijke pakketten met:
dany@pindabook:~$ sudo apt autoremove
VERWIJDEREN:
libjsoncpp26 libmpdclient2t64 libxcb-ewmh2 libxcb-xrm0 linux-image-6.12.86+deb13-amd64
Samenvatting:
Opwaarderen: 0, Installeren: 0, Verwijderen: 5, Niet opwaarderen: 0
Vrijgemaakte ruimte: 111 MB
Doorgaan? [J/n]
(Database wordt ingelezen ... 211826 bestanden en mappen momenteel geïnstalleerd.)
libjsoncpp26:amd64 (1.9.6-3) wordt verwijderd ...
libmpdclient2t64:amd64 (2.22-1.1+b1) wordt verwijderd ...
libxcb-ewmh2:amd64 (0.4.2-1) wordt verwijderd ...
libxcb-xrm0:amd64 (1.3+git20230724.a17de57-1) wordt verwijderd ...
linux-image-6.12.86+deb13-amd64 (6.12.86-1) wordt verwijderd ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-6.12.86+deb13-amd64
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.12.90+deb13.1-amd64
Found initrd image: /boot/initrd.img-6.12.90+deb13.1-amd64
Found linux image: /boot/vmlinuz-6.12.88+deb13-amd64
Found initrd image: /boot/initrd.img-6.12.88+deb13-amd64
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
Bezig met afhandelen van triggers voor libc-bin (2.41-12+deb13u3) ...
De configuratiemap van Polybar verwijder je met:
dany@pindabook:~$ rm -rf .config/polybar