Mes scripts i3blocks pour générer les éléments de ma barre i3-wm
i3-wm est le gestionnaire de fenêtres que j'utilise depuis quelques d'années maintenant. Au fur et à mesure du temps, j'ai fais évoluer mon interface et j'ai écris des scripts pour générer les informations affichées dans la barre du dessus.
Parce que je suis plus à l'aise avec ce langage, l'ensemble des scripts est écrit en PHP 7. Ces scripts sont exécutés au travers de i3blocks, l'utilitaire qui gère les exécutions et les rendus des blocs.
Le fichier de configuration a cette forme et voici les détails techniques des blocs. Ils incluent tous base/block.php et le code source est libre. Le code n'est pas toujours élégant mais ça fonctionne pas trop mal 😀
Dépendance globale des scripts : interpréteur PHP 7.
Bande passante
Affiche la bande passante UP et DOWN d'une interface réseau.
- Code source
- Dépendances :
ip
,grep
,awk
,cut
,ifstat
ettail
- 1er paramètre : l'interface réseau (défault :
eth0
) - 2ème paramètre :
inet
pour l'IPV4 (par défaut) ouinet6
pour l'IPV6
IP locale
Affiche l'adresse IP d'une interface réseau. Au clic, l'IP est copiée dans le presse-papier.
- Code source
- Dépendances :
ip
,grep
,awk
,cut
,xclip
- 1er paramètre : l'interface réseau (défault :
eth0
) - 2ème paramètre :
inet
pour l'IPV4 (par défaut) ouinet6
pour l'IPV6
IP publique
Affiche votre adresse IP publique via une requête DNS à opendns.com. Au clic, l'IP est copiée dans le presse-papier.
- Code source
- Dépendances :
dig
etxclip
- 1er paramètre :
0
pour l'IPV4 (par défaut) ou1
pour l'IPV6
Espace libre
Affiche le pourcentage d'espace libre d'un point de montage. Au clic, le gestionnaire de fichiers affiche le répertoire du point de montage.
- Code source
- Dépendances :
df
,tail
etxdg-open
- 1er paramètre : le nom du point de montage (défault :
root
) - 2ème paramètre : le chemin vers le point de montage (défault :
/
) - 3ème paramètre : pourcentage du niveau d'alerte "moyen" (défault :
70
) - 4ème paramètre : pourcentage du niveau d'alerte "critique" (défault :
90
)
Spotify
Affiche l'artiste et le titre de la musique jouée. J'affiche le workspace
6. MEDIA
lors d'un clic.
- Code source
- Dépendance :
playerctl
Affiche un bouton pour lancer ou mettre en pause le titre en court.
- Code source
- Dépendances :
playerctl
etdbus-send
Volume
Affiche le volume du son.
- Code source
- Dépendances :
amixer
etgrep
Météo
Affiche la météo du lieu détecté par fr.wttr.in. Au clic, le site est affiché dans le navigateur web.
- Code source
- Dépendance :
curl
etxdg-open
Application
Affiche une lettre colorée et lance un script quand on clique dessus. Dans ma configuration, ça affiche des sites web dans le navigateur web.
- Code source
- 1er paramètre : la lettre à afficher
- 2ème paramètre : le script à exécuter au clic
- 3ème paramètre : la couleur de fond (défaut :
#333
) - 4ème paramètre : la couleur du texte (défaut :
#fff
)
Heure et date
Affiche l'heure et la date.
- Code source
- 1er paramètre : le format (documentation). Par défault :
H:i:s
.
Flux RSS
Affiche le nombre d'articles non lus. Au clic, le navigateur affiche le client web du votre lecture RSS (tt-rss chez moi).
- Code source
- Dépendance :
xdg-open
- 1er paramètre : URL du flux RSS
- 2ème paramètre : adresse du lecture RSS (optionnel)
Batterie
Affiche l'état de charge de la batterie.
- Code source
- Dépendance :
acpi

Blocs pour i3wm
Je suis un fervent utilisateur de i3wm et ça dure depuis des années ! Grâce à i3blocks, j'ai…

Remote i3-wm WS : ma télécommande pour bureau Debian GNU/Linux
Il m'arrive d'avoir besoin de prendre le contrôle de ma machine via mon Android (bouger la s…

Capture, un reverse proxy pour analyser les requêtes de vos applications
Capture est un reverse proxy HTTP qui se place entre votre application cliente et une API. C…
Yo,
PHP pourquoi ! Pourquoi ?? ha ha
Blague à part, du coup php est une dépendance de tous ces scripts ?
Tcho !
Hello!
Je trouve PHP très efficace pour écrire des scripts système comme ça. C'est pour moi moins galère quand il faut gérer les problématiques de dépendances, ce que je rencontre avec Python par exemple.
Et du coup, PHP devient une dépendance à tout ces scripts :)
Raaaahhh toi aussi t'es tombé dans le piège de modifier l'URL de l'article alors que c'est envoyé sur le Jdh et les réseaux sociaux, jamais modifier l'URL après que ce soit balancé ;)
Alors j'ai fait la modif sur le Jdh avec la nouvelle URL mais les réseaux sociaux ont la mauvaise, je t'invite à faire une redirection ou laisser arriver sur ta chouette 404 lol.
Tcho !
J'ai vu la notif au sujet de la modif sur le jdh et j'ai fixé le titre...et j'ai tapé dans la bdd pour remettre l'ancien slug (sans
-ma
). Le lien du jeu doit être cassé du coup. Sur la version n-1 du blog j'avais une redirection automatique mais j'ai oublié de l'implémenter sur celle ci :/Désolé pour le dérangement !
Problème fixé !
Personnellement ils sont en Bash. Quoi de plus évident pour ce genre d'usage ?
Tout est là : https://git.breizh.me/dotfiles.git/tree/.i3blocks (config générale https://git.breizh.me/dotfiles.git/tree/.i3blocks.conf ).
C'est pas forcément documenté, souvent repris de scripts existants, parfois totalement immonde, mais ça marche bien.
Je suis un grand fan de shell et j'ai envie de te répondre que tu as complètement raison. Cependant, quand on va vers des traitements un peu complexes, on va vers d'autres outils comme tes scripts memory et volume par exemple. J’apprécie l'uniformité du coup je fais tout en PHP (en intégrant des appels shell quand même).
En fait ma question/remarque sur PHP, c'était pour te souligner que du coup ça devrait être marqué comme dépendance (Dépendances : à modifier dans l'article) partout pour tes scripts.
Tcho !
C'est indiqué plus clairement dans l'article du coup :)
Nan ben en fait, memory et volume sont immondes, adaptés de scripts existants trouvés dans un coin du web. Même la batterie. J'en ai un plus simple pour le volume, mais je l'ai paumé.
Faut que je refasse ces deux-là. Le Bash c'est plus puissant qu'il n'y paraît, et j'ai beaucoup progressé depuis un certain temps.
Ceux que j'ai écris sont mocp, updates, internet, load_average je l'ai pas mal refait donc on va dire que lui aussi, et vpn.
Bonjour PHP? pas commun pour ce genre d'outils, mais pourquoi pas. Juste pour infos, la plupart des scripts ( Bande passante, ip locale, espace libre, volume, batterie, Heure et date) ainsi que d'autre se trouvent en bash dans /usr/share/i3blocks/. Je suis parti de ceux la pour amélioré les miens.
Pour l'ip public, un simple:
[public-ip] command=wget -qO - icanhazip.com interval=once
dans la conf me suffit.Voila pour les commentaires, Sinon, tes scripts de lancement d'app et de flux RSS sont simpa, ca me donne des idée pour en creer en bash ;D . En tout cas, merci du partage. Wam
Personnellement je n'utilise pas i3blocks, pas mal de choses sont gérées "nativement" par i3 comme le volume.
Je vous joins ma configuration : https://gist.github.com/vgallet/7a9b563bc515a2af850d347160a135f4
@+
Merci pour le partage :) Je me souviens avoir migré sur
i3blocks
pour la gestion des Intervalles de mise à jour. Il y a des données comme la météo et mes RSS qui n'ont pas d'intérêt à être mis à jour toutes les 5 secondes.