nakeDeb -- polybar

sources : wiki officiel polybar (EN)

polybar est une application qui permet de formater des données afin de les afficher dans une barre de statut. polybar est utilisée dans la session i3wm sur nakeDeb mais vous pouvez l'activer sur un autre environnement.

présentation de polybar

Polybar vise à aider les utilisateurs à créer des barres d'état hautement personnalisables pour leur environnement de bureau, sans avoir besoin d'être expert en scripts shell. Polybar permet d'afficher des informations sur les services les plus couramment utilisés. Certains des services inclus jusqu'à présent :

configuration de polybar

la configuration de polybar passe par l'édition de son fichier principal ~/.config/i3/config.

sources

syntaxe du fichier de configuration

La configuration utilise le format de fichier INI, la spécification complète peut être trouvée ici.

[section/name]
str = My string
bool = true
bool = on
int = 10
float = 10.0

; Placez votre lable entre guillemets pour conserver l'espace additionnel
str = "   My string"

; Les listes sont en index base 0
mylist-0 = value
mylist-1 = value
mylist-2 = value
; Les listes doivent être continues. Pour utiliser mylist-4
; il fauda aussi définir mylist-3

variables de référence

; Vous pouvez référencer une valeur depuis une autre section en utilisant :
key = ${section.key}

; Les valeurs de la même section peuvent être référencées en utilisant :
key = ${self.key}

; Les valeurs d'une barre définie peuvent être référencées en utilisant :
key = ${bar/top.foreground}

; Les valeurs de la barre actuelle peuvent être référencées en utilisant :
key = ${root.foreground}

; Les variables d'environnement peuvent être référencées en utilisant :
key = ${env:VAR:fallback value}

; Les valeurs de la base de données des .Xresources peuvent être référencées en utilisant:
; Exemple :
; Config Polybar :
; background = $ {xrdb: color2: # 00ff00}
; .Xresources :
; * couleur2: # 8C9440
key = ${xrdb:KEY:fallback value}

; Le contenu d'un fichier peut être référencé en utilisant :
key = ${file:/absolute/file/path:fallback value}

héritage des propriétés

Les valeurs peuvent être héritées d'une autre section en définissant le paramètre inherit = section/base. Toutes les clés non définies seront clonées.

[section/base]
foo = 1
bar = 0.15
baz = true

[section/child]
inherit = section/base
baz = false

; Résultat
[section/child]
foo = 1
bar = 0.15
baz = false

inclusion de fichiers

Il est possible d'inclure un fichier avec des paires clé-valeur prédéfinies en utilisant :

[section/base]
include-file = /absolute/path/to/file

Cela remplacera la clé include-file par le contenu du fichier /absolute/path/to/file.
La clé include-directory inclura tous les fichiers dans le répertoire donné (de manière non récursive) de la même manière que plusieurs include-file. Les fichiers sont classés par ordre alphabétique.

include-directory = /absolute/path/to/directory

variables personnelles

Vous pouvez aussi créer vos variables 'perso' afin d'y faire références au long du fichier de config.

[colors]
black = #000
white = #fff
blue = #00f
green = #0f0

[modules/tmp]
format-background = ${colors.black}
format-foreground = ${colors.white}

police(s) de caractère

Si vous ne définissez pas explicitement l'index de police pour une balise, polybar parcourra la liste des polices et choisira la première capable de dessiner le caractère spécifié. Pour en savoir plus sur le formatage et sur les balises vous permettant de définir un index de police spécifique, rendez-vous au chapitre suivant.
NOTE : la propriété -font est un index basé sur 1 des polices disponibles, ce qui signifie que * -font = 1 utilisera font-0.
Lorsque vous utilisez des polices d'icônes (glyphes), vous n'aurez normalement pas à spécifier d'index de police car les autres polices ne contiennent probablement pas le glyphe d'icône. Mais au cas où l'icône n'apparaît pas ou si le résultat semble étrange, vous devez spécifier manuellement la police à utiliser.

[bar/example]
; font-N = <fontconfig pattern>;<vertical offset>
font-0 = "Tamsyn:pixelsize=12;0"
font-1 = "Roboto:size=11:weight=bold;2"
font-2 = "Noto Sans:size=11;1"

[module/example]
label-active = %token%

; définir Roboto comme police par défaut pour le module
label-active-font = 2

; Utiliser une police spécifique pour une séquence.
; %{T3} indique à polybar d'utiliser la police Noto Sans et %{T-} restore la police par défaut.
label-inactive = %{T3}Inactive%{T-} %time%

pour obtenir la liste des polices accessibles sur votre système, utilisez la commande fc-list. un exemple de résultat pour une police listée :

/usr/share/fonts/noto/NotoSansMono-Regular.ttf: Noto Sans Mono:style=Regular

pour utiliser cette police, vous devez renseigner son nom de cette façon :

font-0 = Noto Sans Mono:style=Regular

certaines polices possèdent plusieurs variantes. par exemple 'AwesomeFonts' possède 3 variantes d'après fc-list | grep -i awesome, que vous devrez toutes renseigner :

/usr/share/fonts/TTF/fa-brands-400.ttf: Font Awesome 5 Brands,Font Awesome 5 Brands Regular:style=Regular
/usr/share/fonts/TTF/fa-solid-900.ttf: Font Awesome 5 Free,Font Awesome 5 Free Solid:style=Solid
/usr/share/fonts/TTF/fa-regular-400.ttf: Font Awesome 5 Free,Font Awesome 5 Free Regular:style=Regular

notez que vous pouvez aussi désactiver l'antialiasing directement dans la configuration de polybar :

font-0 = "myfont:antialias=false"

pour trouver les bons glyhes à afficher, vous pouvez utiliser guchamarp ou font-manager.

formatage de la sortie

Format-NAME

La plupart des modules définissent un champ format-NAME, qui vous permet de configurer le format de sortie du module.
Par exemple, le module mpd définit les formats suivants qui seront utilisés en fonction de l'état de la connexion

[module/mpd]
format-online = ...
format-offline = ...

Tous les formats peuvent être configurés à l'aide des paramètres suivants :

format-NAME = ...
; Les propriétés de préfixe et de suffixe contiennent les
; propriétés qui sont disponibles pour tout `<label>`.
format-NAME-prefix = ...
format-NAME-prefix-foreground = #f00
format-NAME-suffix = ...
format-NAME-suffix-background = #0f0

; En spécifiant uniquement la valeur alpha, ce sera
; appliqué à la couleur de premier plan/arrière-plan par défaut de polybar
format-NAME-foreground = #aa[rrggbb]
format-NAME-background = #aa[rrggbb]
format-NAME-underline  = #aa[rrggbb]
format-NAME-overline   = #aa[rrggbb]

; Nombre d'espaces
format-NAME-padding = N
format-NAME-margin  = N
format-NAME-spacing = N

; Utiliser le Nième pour ce format (1-indexed)
format-NAME-font = N

; Décale le format de +/- N pixels
format-NAME-offset  = N
Les commandes-token

Les commandes peuvent être utilisées dans de nombreux label pour afficher les valeurs dynamiques définies par le module. Par exemple, dans le module interne/date, %time% sera remplacé par la chaîne d'heure formatée.

label = %token%
; Définir la largeur minimale de la valeur
; Si la largeur min commence par un '0', la chaîne sera complétée par zéro
label = %token:3%

; Définir la largeur maximale de la valeur
; NOTE : la longueur de la commande comprend les suffixes ajoutés en interne (Ko/s,%, etc.)
label = %token:0:10%

; Spécifiez le suffixe à utiliser s'il est tronqué à la largeur maximale
label = %token:0:10:...%
label = %token:0:10:---%
Les 'label'

un 'label' est un simple texte que vous pourrez agrémenter d'un commande

label-NAME = foobar
;label-NAME-foreground = #aarrggbb
;label-NAME-background = #aarrggbb
;label-NAME-overline = #aarrggbb
;label-NAME-underline = #aarrggbb
;label-NAME-font = N

; Ajouter un espace de chaque côté du label
; Default: 0
label-NAME-padding = N

; Couper le label s'il dépasse une certaine limite
; Default: 0
label-NAME-maxlen = 30

; Remplir l'espace libre si le text ne remplit pas l'espace minimum renseigné
; Default: 0
label-NAME-minlen = 10
; Alignement du text s'il ne remplit pas le label
; Possible Values: left, center, right
; Default: left
label-NAME-alignment = center

; Ajouter "..." aux sorties coupées
; Default: true
label-NAME-ellipsis = false
Barre de pogression
bar-NAME-format = %fill%%indicator%%empty%
bar-NAME-width = 10

bar-NAME-gradient = true
bar-NAME-foreground-0 = #00ff00
bar-NAME-foreground-1 = #ff9900
bar-NAME-foreground-2 = #ff0000

; les secteurs pleins ou vides ainsi que l'indicateur peuvent être configurés
; comme n'importe quel <label>
bar-NAME-fill = o
bar-NAME-indicator = 0
bar-NAME-empty = o
Les palliers 'ramp'

l'option 'ramp' permet de dessiner des graphiques mais aussi, en spécifiant une même icône, de changer la couleur selon l'état.

ramp-NAME-0 = 🔈
ramp-NAME-1 = 🔉
ramp-NAME-2 = 🔊

ramp-NAME-background = #fff
ramp-NAME-foreground = #000
ramp-NAME-0 = A
ramp-NAME-0-foreground = #f00
ramp-NAME-1 = B
ramp-NAME-2 = C
les Actions

Les gestionnaires d'actions sont définis à l'aide de la syntaxe suivante :

%{A<button-index>:<command>:}<inner-text>%{A}

NOTE : Si la commande contient deux-points ":", vous devez les échapper avec une barre oblique inverse comme ceci: \:. Sinon, le signe deux-points agit comme le délimiteur de commande et polybar analyserait uniquement la commande jusqu'aux deux points.

les valeurs pour <button-index> :

exemple d'actions combinées :

%{A1:firefox:}%{A1:chromium:}This opens chromium%{A} and this one firefox%{A}
Changer le formatage à l'intérieur d'une séquence

en plus du formatage configuré pour un module complet, vous pouvez spécifier un formatage différent pour chaque partie de la sortie affichée. par exemple :

label-volume = %{F#f00}%percentage%%{F-}%

notez que les variable ne fonctionnent pas pour le formatage spécifique : vous devez spécifier le formatage 'manuellement' en indiquant la couleur.
Voici les modifications possibles dans les sorties polybar :

format exemple
Foreground color %{F} %{F#f00} red text %{F-} default text
Background color %{B} %{B#f00}%{F#000} black text on red background %{B- F-}
Reverse back-/foreground colors %{R} black bg, white fg %{R} white bg, black fg
Underline color %{u} %{u#ff9900}%{+u} orange underline %{u#0000ff} blue underline %{u-} default underline color %{-u} underline disabled
Overline color %{o} %{o#ff9900}%{+o} orange overline %{o#0000ff} blue overline %{o-} default overline color %{-o} overline disabled
Font %{T} %{T3} Uses font-2 %{T-} use first (default) font
Offset %{O} %{O10} pushed 10 pixels to the right %{O-5} 5 pixels to the left
Action %{A} %{A1:command:} clickable text %{A}

configuration de la barre

[bar/mybar]

; Utilisez l'une des commandes suivantes pour lister les écrans disponibles :
; S'il n'est pas spécifié, l'application choisira le premier qu'elle trouve.
; $ polybar -m | cut -d ':' -f 1
; $ xrandr -q | grep " connected" | cut -d ' ' -f1
monitor =

; Utilisez l'écran spécifié comme solution de secours si le moniteur principal est introuvable.
monitor-fallback =

; Exiger que le moniteur soit en état "connecté"
; XRandR signale parfois que mon moniteur est déconnecté (lorsqu'il est utilisé)
monitor-strict = false

; Utilisez la correspondance pour les moniteurs (ignore uniquement les tirets -)
; Utile lorsque les moniteurs sont nommés différemment avec différents pilotes.
monitor-exact = true

; Dites au gestionnaire de fenêtres de ne pas configurer la fenêtre.
; Utilisez ceci pour détacher la barre si votre WM verrouille sa taille/position.
; NOTE : avec cela, la plupart des WM ne réserveront plus d'espace pour
; la barre et il chevauchera d'autres fenêtres. Vous devez configurer
; votre WM pour ajouter un espace où la barre sera placée.
override-redirect = false

; Placer polybar au haut de l'écran
bottom = false

; Préférez une position centrale fixe pour le bloc 'modules-center'.
; Le bloc central restera au milieu de polybar. Il peut toujours être
; déplacé si d'autres blocs ont besoin plus d'espace.
; Si 'false', le bloc central est centré dans l'espace entre
; les blocs gauche et droit.
fixed-center = true

; Dimension définie en pixels (par exemple 35) ou pourcentage (par exemple 50%),
; le pourcentage peut éventuellement être étendu avec un décalage de pixel comme ceci :
; 50%: - 10, cela donnera une largeur ou une hauteur de 50% moins 10 pixels
width =
height =

; Décalage défini en pixels (par exemple 35) ou pourcentage (par exemple 50%)
; le pourcentage peut éventuellement être étendu avec un décalage de pixel comme ceci :
; 50%: - 10, cela entraînera un décalage dans la direction x ou y
; de 50% moins 10 pixels
offset-x = 0
offset-y = 0

; Couleur d'arrière-plan ARGB (par exemple #f00, #ff992a, #ddff1023)
background = #fff

; Couleur de premier plan ARGB (par exemple #f00, #ff992a, #ddff1023)
foreground = #000

; Couleur dégradée d'arrière-plan ARGB (par exemple #f00, #ff992a, #ddff1023)
;   background-[0-9]+ = #aarrggbb
background-0 =

; Valeur utilisée pour dessiner des coins arrondis
; NOTE: ne pas utiliser avec 'border-size' car la bordure
; ne s’arrondit pas. Pour que cela fonctionne, vous devrez peut-être également activer
; 'pseudo-transparancy' ou utilisez un compositeur comme compton.
; Les valeurs individuelles peuvent être définies en utilisant :
; radius-{haut,bas}
; ou
; radius-{haut,bas}-{gauche,droite}
; Polybar utilise toujours la définition de rayon la plus spécifique pour chaque coin.
radius = 0.0

; Taille en pixels de la bordure inféfieure.supérieure et couleur argb
; Les valeurs individuelles peuvent être définies en utilisant :
;   {overline,underline}-size
;   {overline,underline}-couleur
line-size = 0
line-color = #f00

; Valeurs appliquées à toutes les bordures
; Les valeurs latérales individuelles peuvent être définies en utilisant :
;   border-{gauche,haut,droite,bas}-size
;   border-{gauche,haut,droite,bas}-couleur
; Les bordures supérieure et inférieure sont ajoutées à la hauteur de la barre,
; de sorte que la hauteur de la fenêtre est :
;   hauteur + border-top-size + border-bottom-size
; Pendant ce temps, la largeur effective de la fenêtre est définie entièrement par la touche de largeur et
; la bordure est placée dans cette zone. Ainsi, vous n'avez effectivement que le
; espace horizontal suivant sur la barre :
;   width - border-right-size - border-left-size
; border-size peut être défini comme une valeur de pixel (par exemple 35) ou un pourcentage (par exemple 50%),
; le pourcentage peut éventuellement être étendu avec un décalage de pixel comme ceci :
; 50%: - 10, cela donnera 50% moins 10 pixels. Le pourcentage est relatif
; à la largeur ou à la hauteur du moniteur en fonction de la direction de la bordure.
border-size =
border-color =

; Nombre d'espaces à ajouter au début/à la fin de la barre
; Les valeurs latérales individuelles peuvent être définies en utilisant :
;   padding-{left,right}
padding = 0

; Nombre d'espaces à ajouter avant/après chaque module
; Les valeurs latérales individuelles peuvent être définies en utilisant :
;   module-margin-{gauche,droite}
module-margin = 0

; Les polices sont définies selon le format <font-name>;<vertical-offset>
; 'font-name' doit être de la forme fontconfig :
;   font-0 = NotoSans-Regular:size=8;2
;   font-1 = MaterialIcons:size=10
;   font-2 = Termsynu:size=8;-1
;   font-3 = FontAwesome:size=10
; Plus détails dans le chapitre consacré aux polices de caractère
font-0 =

; Les modules sont ajoutés à un des trois blocks disponibles (left,center,right)
;   modules-left = cpu ram
;   modules-center = xwindow xbacklight
;   modules-right = ipc clock
modules-left =
modules-center =
modules-right =

; Le séparateur sera inséré entre la sortie de chaque module
; Cela a les mêmes propriétés qe 'label'
separator =

; Cette valeur est utilisée pour ajouter un espacement supplémentaire entre les éléments
; @obsolète : ce paramètre sera supprimé dans une prochaine version
spacing = 0

; Valeur d'opacité comprise entre 0.0 et 1.0
; utilisée pour les fondus entrants / sortants
dim-value = 1.0

; Valeur à utiliser pour définir 'WM_NAME'
; Si la valeur est vide ou indéfinie, la valeur
; sera créé à partir du modèle suivant : polybar-[BAR]_[MONITOR]
; NOTE : les espaces ne sont pas disponibles pour la valeur personnalisée
wm-name =

; Paramètres régionaux utilisés pour localiser diverses données des modules (par exemple, date)
; Attend une locale libc valide, par exemple: fr_FR.UTF-8
locale =

; Position de la zone de notification
; Si vide ou non renseigné, la zone de notification sera désactivée
; NOTE : si 'center', la zone couvrira les modules centrés
; positions disponibles :
;   left
;   center
;   right
;   none
tray-position =

; Si true, polybar ne changera pas son contenu lorsque le systray change
tray-detached = false

; Taille maximum des icônes dans la zone de notification
tray-maxsize = 16


; Couleur d'arrière-plan du systray au format ARGB (#f00, #ff992a, #ddff1023)
; par défaut tray-background = bar background
tray-background = ${root.background}


; Décalage du systray défini en pixel (par exemple 35) ou pourcentage (par exemple 50%)
tray-offset-x = 0
tray-offset-y = 0

; Espace sur les côtés de chaque icône du systray
tray-padding = 0

; Échelle de grossissement des icônes du systray
tray-scale = 1.0

; Réarrange polybar afin quil ne soit plus pris en charge par le
; gestionnaire de fenêtre et soit placé au-dessus.
; WM's supportés :
;   bspwm
;   i3 (ajouter : `override-redirect = true`)
; wm-restack =

; Définir une valeur PPP utilisée lors du rendu du texte
; Cela n'affecte que les polices évolutives
; Réglez sur 0 pour laisser polybar calculer le dpi à partir de la taille de l'écran.
; dpi =
dpi-x = 96
dpi-y = 96

; Active le support de l'inter-process messaging IPC
; Voir le chapitre ipc de ce wiki
enable-ipc = false

; Gestionnaires de clics de secours qui seront appelés si
; aucun gestionnaire de module correspondant n'a été trouvé.
click-left =
click-middle =
click-right =
scroll-up =
scroll-down =
double-click-left =
double-click-middle =
double-click-right =

; aspect du pointeur de la souris
; - default   : pointeur par défaut (default)
; - pointer   : en forme de main
; - ns-resize : en forme deflêche up/down pour indiquer la possibilité de scroller
cursor-click =
cursor-scroll = 

configuration du gestionnaire de fenêtres

[global/wm]
; Ajuster la valeur supérieure _NET_WM_STRUT_PARTIAL
; Utilisé pour les barres alignées en haut
margin-bottom = 0

; Ajuster la valeur inférieure _NET_WM_STRUT_PARTIAL
; Utilisé pour les barres alignées en bas
margin-top = 0

configuration de l'application

[settings]
; Les paramètres d'accélérateur permettent à la boucle d'événement d'afficher jusqu'à X événements
; s'ils se produisent dans les Y millisecondes après la réception du premier événement.
; Ceci est fait pour éviter un blocage de mise à jour d'évènements.
;
; Par exemple si 5 modules se mettent à jour en même temps, on se s'occupe
; pas du dernier. Mais si on attend trop longtemps que les événements s'affichent,
; la barre semblerait lente, alors nous continuons si le timeout
; expire ou la limite est atteinte
throttle-output = 5
throttle-output-for = 10

; Recharger lors de la réception des événements XCB_RANDR_SCREEN_CHANGE_NOTIFY
screenchange-reload = false

; Outils composite
; @see: https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-operator-t
compositing-background = source
compositing-foreground = over
compositing-overline = over
compositing-underline = over
compositing-border = over

; Définir les valeurs de référence utilisées par tous les formats de modules
format-foreground =
format-background =
format-underline =
format-overline =
format-spacing =
format-padding =
format-margin =
format-offset =

; Active la pseudo-transparence pour la barre
; Si la valeur est true, la barre peut être transparente sans compositeur.
pseudo-transparency = false

les modules de polybar

vous trouverez ici la liste complète des modules disponibles sur polybar. notez que tous ne sont pas utilisés sur nakeDeb, et que ceux utilisés ne sont pas tous activés dans votre configuration car ils doivent être édités avant pour correspondre à votre matériel.

alsa

Ce module affiche le volume et l'état muet des mixeurs ALSA. La plupart des fonctionnalités du module devraient fonctionner tant que vous utilisez un backend alsa.

N'utilisez pas ce module si vous utilisez pulseaudio !

Si vous utilisez pulseaudio, utilisez plutôt le module [interne/pulseaudio], même s'il utilise alsa comme backend. Il existe un certain nombre de problèmes lorsque alsa est utilisé pour contrôler le volume d'un serveur pulseaudio.

[module/alsa]
type = internal/alsa

; Carte son à utiliser
; Généralement, sous la forme hw:# avec # représentant le numéro de la carte
; Vous pouvez trouver les numéros des cartes dans `/proc/asound/cards`
master-soundcard = default
speaker-soundcard = default
headphone-soundcard = default

; Nom des canaux master, speaker et headphone.
; Utilisez cette commande pour obtenir la liste des mixers disponibles :
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
; Si les entrées master, speaker ou headphone-soundcard ne sont pas celles par défaut,
; utilisez `amixer -c # scontrols` à la place avec # correspondant au numéro de la carte du
; master, speaker ou headphone respectivement.
;
; Default: Master
master-mixer = Master

; Définition optionnelle des mixers speaker et headphone
; Default: none
speaker-mixer = Speaker
; Default: none
headphone-mixer = Headphone

; NOTE: ceci est obligatoire si vous utilisez headphone-mixer
; Utilisez cette commande pour obtenir la liste des contrôleurs :
; $ amixer controls | sed -r "/CARD/\!d; s/.*=([0-9]+).*name='([^']+)'.*/printf '%3.0f: %s\n' '\1' '\2'/e" | sort
; Vous devrez aussi utiliser `amixer -c # controls` comme au-dessus pour le nom des mixers
; Default: none
headphone-id = 9

; Utiliser le 'volume mapping' pour un changement de volume linéaire
; Default: false
mapped = true

; Intervalle de contrôle du niveau de volume pour increase/decrease (en pourcentage)
; Default: 5
interval = 5

formatage additionnel :

; Sections disponibles:
;   <label-volume> (default)
;   <ramp-volume>
;   <bar-volume>
format-volume = <ramp-volume> <label-volume>

; Sections disponibles :
;   <label-muted> (default)
;   <ramp-volume>
;   <bar-volume>
;format-muted = <label-muted>

; Option disponible :
;   %percentage% (default)
;label-volume = %percentage%%

; Option disponible :
;   %percentage% (default)
label-muted = 🔇 muted
label-muted-foreground = #66

; Seulement si <ramp-volume> est utilisé
ramp-volume-0 = 🔈
ramp-volume-1 = 🔉
ramp-volume-2 = 🔊

; Si défini, cela va remplacer <ramp-volume> lorsque
; un casque est branché par `headphone_control_numid`
; Si non défini, <ramp-volume> sera utilisé pour les deux situations.
; Seulement si <ramp-volume> est utilisé
ramp-headphones-0 = 
ramp-headphones-1 = 

backlight

Ce module affiche les informations de luminosité de l'écran actif.

Configuration basique :

[module/backlight]
type = internal/backlight

; Utilisez cette commande pour obtenir la liste des cartes disponibles :
; $ ls -1 /sys/class/backlight/
card = intel_backlight

; Activer le changement de luminosité avec la molette de la souris
; NOTE: Cela demande un configuration particulière. Polybar devra écrire dans
; le fichier `/sys/class/backlight/${self.card}/brightness` ce qui veut dire
; activer les droits d'écriture sur ce fichier.
; NE PAS LANCER POLYBAR en tant que ROOT.
; La procédure recommandée est d'ajouter l'utilisateur au groupe `video` et
; de donner à ce groupe les droits d'écriture sur le fichier `brightness`.
; Plus d'informations : https://wiki.archlinux.org/index.php/Backlight#ACPI
; Default: false
enable-scroll = true

formatage additionnel :

; Sections disponibles:
;   <label> (default)
;   <ramp>
;   <bar>
format = <label>

; Option disponible :
;   %percentage% (default)
label = %percentage%%

; Seulement si <ramp> est utilisé
ramp-0 = 🌕
ramp-1 = 🌔
ramp-2 = 🌓
ramp-3 = 🌒
ramp-4 = 🌑

; Seulement si <bar> est utilisé
bar-width = 10
bar-indicator = |
bar-fill = ─
bar-empty = ─

battery

Ce module affiche les informations à propos de la batterie.

Configuration basique :

[module/battery]
type = internal/battery

; Ceci est utile si le pourcentage de la batterie n'atteint jamais les 100% de charge
full-at = 99

; Utilisez cette commande pour lister les batteries et les adaptateurs :
; $ ls -1 /sys/class/power_supply/
battery = BAT0
adapter = ADP1

; Si un événement inotify n'a pas été signalé depuis longtemps,
; interrogez manuellement les nouvelles valeurs.
; Nécessaire comme solution de secours pour les systèmes qui ne
; signalent pas les événements sur sysfs/procfs.
; Désactivez l'interrogation en définissant l'intervalle sur 0.
; Default: 5
poll-interval = 5

formatage additionnel :

; voir "man date" pour les détails du formatage du temps
; NOTE: si vous désirez utiliser des options système ici, vous devez écrire %%{...}
; Default: %H:%M:%S
time-format = %H:%M

; Sections disponibles :
;   <label-charging> (default)
;   <bar-capacity>
;   <ramp-capacity>
;   <animation-charging>
format-charging = <animation-charging> <label-charging>

; Sections disponibles :
;   <label-dischargin> (default)
;   <bar-capacity>
;   <ramp-capacity>
;   <animation-discharging>
format-discharging = <ramp-capacity> <label-discharging>

; Sections disponibles :
;   <label-full> (default)
;   <bar-capacity>
;   <ramp-capacity>
;format-full = <ramp-capacity> <label-full>

; Options disponibles :
;   %percentage% (default) - défini à 100 si full-at est atteint
;   %percentage_raw%
;   %time%
;   %consumption% (shows current charge rate in watts)
label-charging = Charging %percentage%%

; Options disponibles :
;   %percentage% (default) - défini à 100 si full-at est atteint
;   %percentage_raw%
;   %time%
;   %consumption% (shows current discharge rate in watts)
label-discharging = Discharging %percentage%%

; Commanes disponibles :
;   %percentage% (default) - défini à 100 si full-at est atteint
;   %percentage_raw%
label-full = Fully charged

; Seulement si <ramp-capacity> est utilisé
ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 

; Seulement si <bar-capacity> est utilisé
bar-capacity-width = 10

; Seulement si <animation-charging> est utilisé
animation-charging-0 = 
animation-charging-1 = 
animation-charging-2 = 
animation-charging-3 = 
animation-charging-4 = 
; Framerate in milliseconds
animation-charging-framerate = 750

; Seulement si <animation-discharging> est utilisé
animation-discharging-0 = 
animation-discharging-1 = 
animation-discharging-2 = 
animation-discharging-3 = 
animation-discharging-4 = 
; Framerate in milliseconds
animation-discharging-framerate = 500

bspwm

n'utilisant pas bspwm, je ne peux vérifier/rédiger de documentation à ce sujet. je vous laisse donc entre les pages du wiki officiel.

cpu

Ce module affiche des informations à propos de l'utilisation du ou des processeurs

Configuration basique :

[module/cpu]
type = internal/cpu

; Secondes entre chaque mise à jour
; Default: 1
interval = 0.5

formatage additionnel :

; Sections disponibles :
;   <label> (default)
;   <bar-load>
;   <ramp-load>
;   <ramp-coreload>
format = <label> <ramp-coreload>

; Options disponibles :
;   %percentage% (default) - charge moyenne de tous les processeurs
;   %percentage-sum% - charge cumulée de tous les processeurs
;   %percentage-cores% - pourcentage de charge par cœurs
;   %percentage-core[1-9]% - pourcentage de charge pour un cœur spécifique
label = CPU %percentage%%

; Espace entre chaque indicateur de charge
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 = █

date

Ce module affiche des informations sur la date actuelle.
NOTE : ce module prend en charge la plupart (mais pas la totalité) des séquences de formatage qui peuvent être trouvées dans man date. Par exemple, pour afficher l'heure au format 12 heures, vous pouvez utiliser respectivement %I:%M ou %l:%M pour une heure remplie de 0 ou une heure avec espace.
Le formatage de séquences telles que %-I (durée de 12 heures sans remplissage) ne fonctionnera pas. Utilisez un script personnalisé avec la commande date comme solution de contournement.

Configuration basique :

[module/date]
type = internal/date

; Secondes avant la mise à jour
; Default: 1.0
interval = 1.0

; Voir "https://en.cppreference.com/w/cpp/io/manip/put_time" pour les détails du formatage
; NOTE: si vous désirez utiliser des options système ici, vous devez écrire %%{...}
date = %Y-%m-%d%

; formatage optionnel de l'heure
time = %H:%M

; Si `date-alt` ou `time-alt` est défini, cliquer sur le module
; affichera un format ou l'autre
date-alt = %A, %d %B %Y
time-alt = %H:%M:%S

formatage additionnel :

; Sections disponibles :
;   <label> (default)
format = 🕓 <label>
format-background = #55ff3399
format-foreground = #fff

; Options disponibles :
;   %date%
;   %time%
; Default: %date%
label = %date% %time%
label-font = 3
label-foreground = #9A32DB

filesystem

Ce module affiche les informations à propos des volumes montés.

Configuration basique :

[module/filesystem]
type = internal/fs

; Points de montage à afficher
mount-0 = /
mount-1 = /home
mount-2 = /var

; Secondes entre chaque mise à jour
; Default: 30
interval = 10

; Affiche les indications précises
; Default: false
fixed-values = true

; Espace entre les entrées
; Default: 2
spacing = 4

formatage additionnel :

; Sections disponibles :
;   <label-mounted> (default)
;   <bar-free>
;   <bar-used>
;   <ramp-capacity>
format-mounted = <label-mounted>

; Sections dsponibles :
;   <label-unmounted> (default)
format-unmounted = <label-unmounted>

; Options disponibles :
;   %mountpoint%
;   %type%
;   %fsname%
;   %percentage_free%
;   %percentage_used%
;   %total%
;   %free%
;   %used%
; Default: %mountpoint% %percentage_free%%
label-mounted = %mountpoint%: %percentage_free%% of %total%

; Option disponible :
;   %mountpoint%
; Default: %mountpoint% is not mounted
label-unmounted = %mountpoint%: not mounted
label-unmounted-foreground = #55

github

je n'ai pas pu tester/vérifier ce module, n'ayant pas de compte github. je vous laisse donc entre les pages du wiki officiel

i3

Ce module permet d'afficher les informations à propos de i3 : espaces de travail et mode actif (normal/resize).

Configuration basique :

[module/i3]
type = internal/i3

; N'afficher que les espaces de travail de l'écran sur lequel se situe la barre
; Pratique si vous désirez afficher les espaces de façon différentes selon l'écran
; Default: false
pin-workspaces = true

; Ceci va séparer le nom de l'espace de travail à partir de ':'
; Default: false
strip-wsnumbers = true

; Trier les espaces par index et non par écran.
; Default: false
index-sort = true

; Activer la navigation au clic sur les espaces de travail
; Default: true
enable-click = false

; Activer la navigation à la molette sur les espaces de travail
; Default: true
enable-scroll = false

; Revenir au premier espace lorsqu'on a atteint le dernier et inversement
; Default: true
wrapping-scroll = false

; Définir le sens de navigation à la molette
; Default: true
reverse-scroll = false

; Utiliser une correspondance (partielle) sur les étiquettes lors de
; l'attribution des icônes aux espaces de travail
; Exemple : code;♚ appliquera l'icône à tous les espaces de travail
; contenant 'code' dans l'étiquette
; Default: false
fuzzy-match = true

formatage additionnel :

; ws-icon-[0-9]+ = <label>;<icon>
; NOTE: Les <label> doivent correspondre aux noms des espaces de travail définis dans
; la configuration d'i3wm
; Ni <label>, ni <icon> ne peuvent contenir ';'
ws-icon-0 = 1;♚
ws-icon-1 = 2;♛
ws-icon-2 = 3;♜
ws-icon-3 = 4;♝
ws-icon-4 = 5;♞
ws-icon-default = ♟
; NOTE: Vous ne pouvez pas 'oublier' une icône. pour avoir 'ws-icon-6'
; vous devez en premier lieu définir 'ws-icon-5'.
; NOTE: l'icône sera accessible depuis la commande %icon% dans les futurs 'label-*'

; Sections disponibles :
;   <label-state> (default) - peut être remplacé par <label-(focused|unfocused|visible|urgent)>
;   <label-mode> (default)
format = <label-state> <label-mode>

; Option disponible :
;   %mode%
; Default: %mode%
label-mode = %mode%
label-mode-padding = 2
label-mode-background = #e60053

; Options disponibles :
;   %name%
;   %icon%
;   %index%
;   %output%
; Default: %icon%  %name%
label-focused = %index%
label-focused-foreground = #ffffff
label-focused-background = #3f3f3f
label-focused-underline = #fba922
label-focused-padding = 4

; Options disponibles :
;   %name%
;   %icon%
;   %index%
;   %output%
; Default: %icon%  %name%
label-unfocused = %index%
label-unfocused-padding = 4

; Options disponibles :
;   %name%
;   %icon%
;   %index%
;   %output%
; Default: %icon%  %name%
label-visible = %index%
label-visible-underline = #555555
label-visible-padding = 4

; Options disponibles :
;   %name%
;   %icon%
;   %index%
;   %output%
; Default: %icon%  %name%
label-urgent = %index%
label-urgent-foreground = #000000
label-urgent-background = #bd2c40
label-urgent-padding = 4

; Separateur entre les espaces de travail
label-separator = |
label-separator-padding = 2
label-separator-foreground = #ffb52a

ipc

Ce module vous permet de définir les hooks à déclencher lors de la réception d'un message ipc correspondant. Le hook exécutera sa commande shell définie et la sortie de celle-ci sera affichée comme contenu du module.
Le nom du hook sera le nom du module plus le numéro du hook en partant de 1, par exemple: module/ipc1. La commande à utiliser pour l'envoi d'un message ipc serait hook:module/ipc1, par exemple:

$ echo hook:module/ipc1 >>/tmp/polybar_mqueue.*
# ou depuis l'outil ipc intégré
$ polybar-msg [-p pid] hook ipc 1

NOTE: Demande l'activation du module ipc dans la barre enable-ipc = true

Configuration basique :

[module/subscriber]
type = custom/ipc

; Définir les commandes à éxecuter lors de la réception d'un signal ipc
; Sections disponibles :
;   %pid% (id of the parent polybar process)
hook-0 = date
hook-1 = whoami
hook-2 = echo "Files in ${HOME}: $(ls -1a ~ | wc -l)"

; Hook à lancer au démarrage de la barre. La numérotation démarre à 1.
; dans l'exemple, (2) `whoami` sera exécuté au lancement
; Si 0 est spécifié, aucun hook ne sera lancé au démarrage
; Default: 0
initial = 2

formatage additionnel :

; Sections disponibles :
;   <output> (default)
format = <output>
format-foreground = #f00
format-background = #fff

; Actions de la souris
; Options disponibles :
;   %pid% (id of the parent polybar process)
click-left =
click-middle =
click-right =
scroll-up =
scroll-down =
double-click-left =
double-click-right =

Exemple :

[module/demo]
type = custom/ipc
hook-0 = echo foobar
hook-1 = date +%s
hook-2 = whoami
initial = 1
click-left = polybar-msg -p %pid% hook demo 1
click-right = polybar-msg -p %pid% hook demo 2
double-click-left = polybar-msg -p %pid% hook demo 3

memory

Ce module affiche les informations à propos de l'utilisation de la mémoire

Configuration basique :

[module/memory]
type = internal/memory

; Secondes entre chaque mise à jour
; Default: 1
interval = 3

formatage additionnel :

; Sections disponibles :
;   <label> (default)
;   <bar-used>
;   <bar-free>
;   <ramp-used>
;   <ramp-free>
;   <bar-swap-used>
;   <bar-swap-free>
;   <ramp-swap-used>
;   <ramp-swap-free>
format = <label> <bar-used>

; Options disponibles :
;   %percentage_used% (default)
;   %percentage_free%
;   %gb_used%
;   %gb_free%
;   %gb_total%
;   %mb_used%
;   %mb_free%
;   %mb_total%
;   %percentage_swap_used%
;   %percentage_swap_free%
;   %mb_swap_total%
;   %mb_swap_free%
;   %mb_swap_used%
;   %gb_swap_total%
;   %gb_swap_free%
;   %gb_swap_used%

label = RAM %gb_used%/%gb_free%

; Seulement si <bar-used> est utilisé
bar-used-indicator =
bar-used-width = 50
bar-used-foreground-0 = #55aa55
bar-used-foreground-1 = #557755
bar-used-foreground-2 = #f5a70a
bar-used-foreground-3 = #ff5555
bar-used-fill = ▐
bar-used-empty = ▐
bar-used-empty-foreground = #444444

; Seulement si <ramp-used> est utilisé
ramp-used-0 = ▁
ramp-used-1 = ▂
ramp-used-2 = ▃
ramp-used-3 = ▄
ramp-used-4 = ▅
ramp-used-5 = ▆
ramp-used-6 = ▇
ramp-used-7 = █

; Seulement si <ramp-free> est utilisé
ramp-free-0 = ▁
ramp-free-1 = ▂
ramp-free-2 = ▃
ramp-free-3 = ▄
ramp-free-4 = ▅
ramp-free-5 = ▆
ramp-free-6 = ▇
ramp-free-7 = █

menu

Ce module vous permet de créer un menu personnalisé en utilisant la fonction ipc

Configuration basique :

[module/menu-apps]
type = custom/menu

; Si true, <label-toggle> sera à la gauche des éléments de menu (default).
; Si false, il sera à la droite des éléments de menu.
expand-right = true

; "menu-LEVEL-N" a les mêmes propriétés que "label-NAME"
; avec, en plus, la fonction "exec"
; 'Command' sera exécuté par "/bin/sh -c $COMMAND"

menu-0-0 = Navigateurs
menu-0-0-exec = #menu-apps.open.1
menu-0-1 = Multimedia
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

formatage additionnel :

; Sections disponibles :
;   <label-toggle> (default) - peut être remplacé par <label-(open|close)>
;   <menu> (default)
; Si 'expand-right' = true, la disposition par défaut sera "<label-toggle><menu>"
; et inversement.
; Si vous utilisez <label-toggle>, vous devez aussi inclure
; une definition pour <label-open>
; format = <label-toggle><menu>

label-open = Apps
label-close = x

; Optional item separator
; Default: none
label-separator = |

mpd

Ce module affiche les informations relatives au lecteur MPD. rien ne sera affiché si la liste de lecture courante est vide.

Configuration basique :

[module/mpd]
type = internal/mpd

; Hôte pour mpd (soit une ip ou un nom de domaine)
; Peut aussi être l'aresse complète du socket unix mpd.
host = 127.0.0.1
port = 6600
password = mysecretpassword

; Secondes entre chaque mise à jour
; Default: 1
interval = 2

formatage additionnel :

; Sections disponibles :
;   <label-song> (default)
;   <label-time>
;   <bar-progress>
;   <toggle> - peut être remplacé par <icon-(pause|play)>
;   <toggle-stop> - paut être remplacé par <icon-(stop|play)>
;   <icon-random>
;   <icon-repeat>
;   <icon-repeatone> (obsolète)
;   <icon-single> - play/pause sur un seul titre, remplace <icon-repeatone>
;   <icon-consume>
;   <icon-prev>
;   <icon-stop>
;   <icon-play>
;   <icon-pause>
;   <icon-next>
;   <icon-seekb>
;   <icon-seekf>
format-online = <icon-prev> <icon-seekb> <icon-stop> <toggle> <icon-seekf> <icon-next>  <icon-repeat> <icon-random>  <bar-progress> <label-time>  <label-song>
;format-playing = ${self.format-online}
;format-paused = ${self.format-online}
;format-stopped = ${self.format-online}

; Sections disponibles :
;   <label-offline>
; Default: ""
;format-offline = <label-offline>

; Options disponibles :
;   %artist%
;   %album-artist%
;   %album%
;   %date%
;   %title%
; Default: %artist% - %title%
label-song = 𝄞 %artist% - %title%

; Options disponibles :
;   %elapsed%
;   %total%
; Default: %elapsed% / %total%
;label-time = %elapsed% / %total%

; Option disponible :
;   None
label-offline = 🎜 mpd is offline

; Seulement si <icon-X> est utilisé
icon-play = ⏵
icon-pause = ⏸
icon-stop = ⏹
icon-prev = ⏮
icon-next = ⏭
icon-seekb = ⏪
icon-seekf = ⏩
icon-random = 🔀
icon-repeat = 🔁
icon-repeatone = 🔂
icon-single = 🔂
icon-consume = ✀

; Utilisé pour afficher l'état de random/repeat/repeatone/single
; Seulement si <icon-[random|repeat|repeatone|single]> est utilisé
toggle-on-foreground = #ff
toggle-off-foreground = #55

; Seulement si <bar-progress> est utilisé
bar-progress-width = 45
bar-progress-indicator = |
bar-progress-fill = ─
bar-progress-empty = ─

network

Ce module affiche des informations à propos de l'interface réseau spécifiée.
si vous utilisez deux interfaces, il faudra éditer deux modules. par exemple :

[module/wired-network]
type = internal/network
interface = eth1

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

Configuration basique :

[module/network]
type = internal/network
; Nom de l'interface réseau à afficher. Vous pouvez obtenir la liste avec `ip link`
; Les interfaces sans fil commencent souvent par `wl` tandis que les interfaces filaires
; commencent souvent par `eno`, `eth` ou `enp`
interface = wlan1

; Secondes entre chaque mise à jour
; Default: 1
interval = 3.0

; Tester la connectivité chaque Nième mise à jour
; '0' désactive cette option
; NOTE: Expérimental (nécessite encore des tests)
; Default: 0
;ping-interval = 3

; Cumuler les valeurs des toutes les interfaces pour
; le calcul d'envoi et de réception 'up/downspeed'
; Default: false
accumulate-stats = true

; Considérer une interface `UNKNOWN` comme en ligne.
; Certains adaptateur sans fil USB affichent un état inconnu.
; Default: false
unknown-as-up = true

formatage additionnel :

; Sections disponibles :
;   <label-connected> (default)
;   <ramp-signal>
format-connected = <ramp-signal> <label-connected>

; Option disponible :
;   <label-disconnected> (default)
format-disconnected =  <label-disconnected>

; Sections disponibles :
;   <label-connected> (default)
;   <label-packetloss>
;   <animation-packetloss>
format-packetloss = <animation-packetloss> <label-connected>

; Options disponibles selon le type d'interface :
;   %ifname%    [wireless+wired]
;   %local_ip%  [wireless+wired]
;   %local_ip6% [wireless+wired]
;   %essid%     [wireless]
;   %signal%    [wireless]
;   %upspeed%   [wireless+wired]
;   %downspeed% [wireless+wired]
;   %linkspeed% [wired]

; Default: %ifname% %local_ip%
label-connected = %essid% %downspeed:9%
label-connected-foreground = #eefafafa

; Default: (none)
label-disconnected = not connected
label-disconnected-foreground = #66ffffff

; Default: (none)
;label-packetloss = %essid%
;label-packetloss-foreground = #eefafafa

; Seulement si <ramp-signal> est utilisé
ramp-signal-0 = 😱
ramp-signal-1 = 😠
ramp-signal-2 = 😒
ramp-signal-3 = 😊
ramp-signal-4 = 😃
ramp-signal-5 = 😈

; Seulement si <animation-packetloss> est utilisé
animation-packetloss-0 = ⚠
animation-packetloss-0-foreground = #ffa64c
animation-packetloss-1 = 📶
animation-packetloss-1-foreground = #000000
; Framerate in milliseconds
animation-packetloss-framerate = 500

pulseaudio

Ce module affiche le volume et l'état muet de Pulseaudio. Il utilise le récepteur spécifié dans la configuration s'il est disponible, et utilise le récepteur par défaut s'il n'est pas disponible ou défini.

Configuration basique :

[module/pulseaudio]
type = internal/pulseaudio

; Récepteur à utiliser, s'il existe. utilisez la commande `pacmd list-sinks`,
; puis recherchez le champ "name".
sink = alsa_output.pci-0000_12_00.3.analog-stereo

; Utilise PA_VOLUME_UI_MAX (~153%) si true, ou PA_VOLUME_NORM (100%) si false
; Default: true
use-ui-max = true

; Intervalle de modification pour le volume (en pourcentage)
; Default: 5
interval = 5

formatage additionnel :

; Sections disponibles :
;   <label-volume> (default)
;   <ramp-volume>
;   <bar-volume>
format-volume = <ramp-volume> <label-volume>

; Sections disponibles :
;   <label-muted> (default)
;   <ramp-volume>
;   <bar-volume>
;format-muted = <label-muted>

; Options disponibles :
;   %percentage% (default)
;   %decibels%
;label-volume = %percentage%%

; Options disponibles :
;   %percentage% (default)
;   %decibels%
label-muted = 🔇 muted
label-muted-foreground = #666

; Seulement si <ramp-volume> est utilisé
ramp-volume-0 = 🔈
ramp-volume-1 = 🔉
ramp-volume-2 = 🔊

; clic-droit et clic-central
click-right = pavucontrol
; click-middle = 

script

Ce module exécute le script défini et affiche sa sortie. Vous pouvez trouver des modules de script issus de la communauté dans le dépôt polybar-scripts.

NOTE : Le module attendra la fin du d'exécution du script pour mettre à jour son contenu. Si vous lancez une application, assurez-vous de l'envoyer en arrière-plan en ajoutant "&" après la ligne qui exécute l'application. Il en va de même pour les commandes click- *.
Si votre script utilise une boucle infinie en combinaison avec tail = true, la condition exec-if n'est vérifiée que jusqu'à ce qu'elle soit évaluée à 'true' pour la première fois, car elle n'est vérifiée qu'avant d'exécuter la commande 'exec'. et puisque la commande exec ne retourne jamais (à cause de la boucle infinie), 'exec-if' n'est plus jamais évalué une fois que la commande exec est en cours d'exécution. Donc, si la condition 'exec-if' à un moment donné, pendant que la boucle infinie est en cours d'exécution, est évaluée à false, le script ne s'arrêtera pas soudainement de fonctionner et le module ne disparaîtra pas.
Si vous voulez que votre module disparaisse de la barre dans certains cas, votre sortie doit être créée avec echo "" Sinon, une sortie obsolète sera affichée sur la barre.

Configuration basique :

[module/pkgupdates-available]
type = custom/script

; Sections disponibles :
;   %counter%
; Commanda à exécuter (utilisera "/bin/sh -c [command]")
exec = checkforupdates

; Commande conditionnelle. si définie, la commande principale 'exec' sera lancée
; une fois que 'exec-if' sera positif.
; Default: ""
exec-if = pgrep -x myservice

; Le script retourne un contenu continu ?
; Default: false
tail = true

; Secondes entre chaque mise à jour
; Default: 5 (0 if `tail = true`)
interval = 90

formatage additionnel :

; Sections disponibles :
;   <output> - obsolète
;   <label> (default)
format = <label>
format-background = #999
format-foreground = #000
format-padding = 4

; Option disponible :
;   %output%
; Default: %output%
label = %output:0:15:...%

; Options disponibles:
;   %counter%
;   %pid%
;
; "click-(left|middle|right)" sera exécuté via "/bin/sh -c [command]"
click-left = echo left %counter%
click-middle = echo middle %counter%
click-right = echo right %counter%
double-click-left = echo double left %counter%
double-click-middle = echo double middle %counter%
double-click-right = echo double right %counter%

; Options disponibles :
;   %counter%
;   %pid%
;
; "scroll-(up|down)" sera exécuté via "/bin/sh -c [command]"
scroll-up = echo scroll up %counter%
scroll-down = echo scroll down %counter%

Exemples :

Vous pouvez utiliser 'exec-if' pour afficher 'output' seulement lorsque la condition est complétée :

[module/vpn]
type = custom/script
exec = echo vpn
exec-if = pgrep -x openvpn
interval = 5
format-underline = #268bd2
format-prefix = "🖧 "
format-prefix-foreground = #5b

Le %pid% peut être utilisé pour envoyer des signaux au script, autorisant plusieurs états. Voici un exemple de script de date avec deux états:

[module/date]
type = custom/script
exec = /path/to/date.sh
tail = true
click-left = kill -USR1 %pid%

NOTE : %pid% fait en fait référence au processus sh qui exécute la commande exec. Le shell relaie généralement les signaux à la commande exec. Cependant, si la commande s'exécute en arrière-plan, ce ne sera pas le cas. Dans ces cas, vous pouvez utiliser pgrep pour trouver l'enfant le plus âgé appartenant à %pid% et envoyer le signal à ce pid (enfant) :

click-left = "kill -USR1 $(pgrep --oldest --parent %pid%)"

le script date.sh mentionné plus haut :

t=0

toggle() {
    t=$(((t + 1) % 2))
}

trap "toggle" USR1

while true; do
    if [ $t -eq 0 ]; then
        date
    else
        date --rfc-3339=seconds
    fi
    sleep 1 &
    wait
done

temperature

Ce module affiche les informations relatives à la température de la machine

Configuration basique :

[module/temperature]
type = internal/temperature

; Secondes entre chaque mise à jour
; Default: 1
interval = 0.5

; Zone thermale à utiliser
; Pour lister les zones disponibles, utilisez cette commande :
; $ for i in /sys/class/thermal/thermal_zone*; do echo "$i: $(<$i/type)"; done
; Default: 0
thermal-zone = 0

; Adresse complète des températures système
; Utilisez 'sensors' pour trouver vos sources puis pour définir l'adresse exacte du fichier à consulter :
; $ for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done
; 'Default' retourne à la variable 'thermal-zone'
hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input

; Température basse à partir de laquelle commencer le 'ramp' (en degrés celsius)
; Default: 0
base-temperature = 20

; Température à partir de laquelle afficher un 'warning' (en degrés celsius)
; Default: 80
warn-temperature = 60

formatage additionnel :

; Afficher ou non l'unité de mesure des températures (°C, °F)
; Default: true
units = false

; Sections disponibles:
;   <label> (default)
;   <ramp>
format = <ramp> <label>

; Options disponibles :
;   <label-warn> (default)
;   <ramp>
format-warn = <ramp> <label-warn>

; Options disponibles :
;   %temperature% (obsolète)
;   %temperature-c%   (default, température en °C)
;   %temperature-f%   (température en °F)
label = TEMP %temperature-c%

; Options disponibles :
;   %temperature% (obsolète)
;   %temperature-c%   (default, température en °C)
;   %temperature-f%   (température en °F)
label-warn = TEMP %temperature-c%
label-warn-foreground = #f00

; Seulement si <ramp> est utilisé
; La sélection d'icônes va de 'base-temperature' à 'warn-temperature',
; les températures égales ou supérieures à 'warn-temperature' utiliseront la dernière icône
; et les températures égales ou inférieures à 'base-temperature' utiliseront "rampe-0".
; Toutes les autres icônes sont réparties uniformément entre les deux températures.
ramp-0 = A
ramp-1 = B
ramp-2 = C
ramp-foreground = #55

text

Ce module affiche le contenu texte défini. ce contenu est cliquable.

Configuration basique :

[module/my-text-label]
type = custom/text
content = Some random label

formatage additionnel :

; "content" a les mêmes propriétés que "format-NAME"
content-background = #000
content-foreground = #fff
content-padding = 4

; "click-(left|middle|right)" sera exécuté via "/bin/sh -c $COMMAND"
click-left = notify-send left
click-middle = notify-send middle
click-right = notify-send right

; "scroll-(up|down)" sera exécuté via "/bin/sh -c $COMMAND"
scroll-up = notify-send scroll up
scroll-down = notify-send scroll down

xbacklight

Ce module affiche les informations relatives à la luminosité de votre écran

NOTE : si ce module ne fonctionne pas pour vous, utilisez le module backlight.

Configuration basique :

[module/backlight]
type = internal/xbacklight

; Sortie XRandR d'où viennent les informations
; Default: l'écran défini pour la barre
output = HDMI-1

; Activer le réglage avec la molette de la souris
; Default: true
enable-scroll = false

formatage additionnel :

; Sections disponibles :
;   <label> (default)
;   <ramp>
;   <bar>
format = <label>

; Option disponible :
;   %percentage% (default)
label = %percentage%%

; Seulement si <ramp> est utilisé
ramp-0 = 🌕
ramp-1 = 🌔
ramp-2 = 🌓
ramp-3 = 🌒
ramp-4 = 🌑

; Seulement si <bar> est utilisé
bar-width = 10
bar-indicator = |
bar-fill = ─
bar-empty = ─

xkeyboard

Ce module montre la disposition actuelle et les indicateurs actifs.
S'il y a plus d'une disposition configurée pour le clavier, un gestionnaire de clics sera attaché au module qui fera défiler ceux trouvés.

Configuration basique :

[module/xkeyboard]
type = internal/xkeyboard

; List des indicateurs à ignorer
blacklist-0 = num lock
blacklist-1 = scroll lock

formatage additionnel :

; Sections disponibles :
;   <label-layout> (default)
;   <label-indicator> (default)
format = <label-layout> <label-indicator>
format-spacing = 0

; Options disponibles :
;   %layout%
;   %name%
;   %number%
;   %icon%
;   %variant% (unreleased)
; Default: %layout%
label-layout = %name%
label-layout-padding = 2
label-layout-background = #bc99ed
label-layout-foreground = #000

; Option disponible :
;   %name%
; Default: %name%
; obsolète, utilisez 'label-indicator-on'
label-indicator = %name%

; layout-icon-[0-9]+ = layout;icon
; Assigner une icône à chaque disposition. elle sera disponible sous %icon% pour le
; <label-layout>. La partie juste avant ';' essaiera de correspondre au %layout%.
layout-icon-default = some-icon
layout-icon-0 = ch;C
layout-icon-1 = us;U

; indicator-icon-[0-9]+ = indicator;off icon;on icon
; Affiche le contenu de %icon% dans label-indicator-*
indicator-icon-default =
indicator-icon-0 = caps lock;-CL;+CL
indicator-icon-1 = scroll lock;;+SL
indicator-icon-2 = num lock;-NL;+NL

; Remplacer 'label-indicator'
; Options disponibles :
;   %name%
;   %icon%
; Default: %name%
label-indicator-on = +%name%
; Options disponibles :
;   %name%
;   %icon%
; Default: (none)
label-indicator-off = -%name%

; Remplacer 'label-indicator-*' pour un indicateur spécifique
; Options disponibles :
;   %name%
;   %icon%
label-indicator-on-capslock =
label-indicator-off-capslock =
label-indicator-on-numlock =
label-indicator-off-numlock =
label-indicator-on-scrolllock =
label-indicator-off-scrolllock =

xwindow

Ce module affiche des informations relatives à la fenêtre active

Configuration basique :

[module/title]
type = internal/xwindow

formatage additionnel :

; Sections disponibles:
;   <label> (default)
format = <label>
format-background = #f00
format-foreground = #000
format-padding = 4

; Option disponible :
;   %title%
; Default: %title%
label = %title%
label-maxlen = 50

; S'il n'y a aucune fenêtre
; Option disponible :
;   None
label-empty = Empty
label-empty-foreground = #707880

xworkspaces

! Ce module est toujours en développement !

Ce module affiche les bureaux des gestionnaires de fenêtres compatibles EWMH

Configuration basique :

[module/ewmh]
type = internal/xworkspaces

; N'afficher que les bureaux qui sont sur le même écran que la barre
; Pratique si vous désirez afficher le bureau de façon différente selon l'écran.
;
; Default: false
pin-workspaces = true

; Activer la navigation lors d'un clic sur le bureau
; Default: true
enable-click = false

; Activer la navigation avec la molette de la souris sur les bureaux
; Default: true
enable-scroll = false

formatage additionnel :

; icon-[0-9]+ = <desktop-name>;<icon>
; NOTE: Le nom du bureau doit correspondre au nom défini par le gestionnaire de fenêtre
; Vous pouvez obtenir la liste des bureaux avec la commande :
; $ xprop -root _NET_DESKTOP_NAMES
; Note : Ni <desktop-name> ni <icon> ne doivent contenir ';'
icon-0 = code;♚
icon-1 = office;♛
icon-2 = graphics;♜
icon-3 = mail;♝
icon-4 = web;♞
icon-default = ♟

; Sections disponibles :
;   <label-monitor>
;   <label-state> - peut être remplacé par <label-(active|urgent|occupied|empty)>
; Default: <label-state>
format = <label-state>

; Option disponible:
;   %name%
; Default: %name%
label-monitor = %name%

; Options disponibles :
;   %name%
;   %icon%
;   %index%
; Default: %icon% %name%
label-active = %icon% %name%
label-active-foreground = #ffffff
label-active-background = #3f3f3f
label-active-underline = #fba922
label-active-padding = 4

; Options disponibles :
;   %name%
;   %icon%
;   %index%
; Default: %icon% %name%
label-occupied = %icon%
label-occupied-underline = #555555

; Options disponibles :
;   %name%
;   %icon%
;   %index%
; Default: %icon% %name%
label-urgent = %icon%
label-urgent-foreground = #000000
label-urgent-background = #bd2c40
label-urgent-underline = #9b0a20
label-urgent-padding = 4

; Options disponibles :
;   %name%
;   %icon%
;   %index%
; Default: %icon% %name%
label-empty = %icon%
label-empty-foreground = #55
label-empty-padding = 2

Modules issus de la communauté

@x70b1 a commencé à maintenir un dépôt pour réunir les scripts de la communauté : polybar-scripts.
Vous y trouverez une série de scripts en Shell, Python ou Perl.
Vous pouvez aussi consulter le site Awesome Polybar pour encore plus de scripts.