Deblan blog

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.

i3-wm

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 et tail
  • 1er paramètre : l'interface réseau (défault : eth0)
  • 2ème paramètre : inet pour l'IPV4 (par défaut) ou inet6 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) ou inet6 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 et xclip
  • 1er paramètre : 0 pour l'IPV4 (par défaut) ou 1 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 et xdg-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.

Affiche un bouton pour lancer ou mettre en pause le titre en court.

Volume

Affiche le volume du son.

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.

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.

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.


  • Cascador
    • ,
    • Yo,

      PHP pourquoi ! Pourquoi ?? ha ha

      Blague à part, du coup php est une dépendance de tous ces scripts ?

      Tcho !

  • Simon
    • ,
    • 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 :)

  • Cascador
    • ,
    • 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 !

  • Simon
    • ,
    • 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 !

  • Simon
    • ,
    • 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).

  • Cascador
    • ,
    • 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 !

  • Simon
    • ,
    • C'est indiqué plus clairement dans l'article du coup :)

  • Breizh
    • ,
    • 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.

  • WaM
    • ,
    • 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

  • Simon
    • ,
    • 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.


Ajouter un commentaire

Votre commentaire - Vous pouvez utiliser du markdown [?]