Recherche sur le site Web

Comment personnaliser i3status sur Linux


I3 est l'un des gestionnaires de fenêtres de carrelage les plus utilisés sur Linux. Un gestionnaire de fenêtres de carrelage organise des fenêtres de manière non chevauchante: cela nous permet d'utiliser efficacement l'espace d'écran, mais peut nécessiter un peu de temps pour s'y habituer.

Le gestionnaire de fenêtres i3 sur Linux est généralement installé avec l'utilitaire i3status, qui peut être utilisé pour remplir les barres d'état prises en charge avec des informations telles que la mémoire ou l'utilisation du processeur. Dans ce tutoriel, nous voyons comment personnaliser i3status et utiliser certains de ses modules.

Dans ce tutoriel, vous apprendrez:

  • Quels sont les fichiers de configuration i3status
  • Comment personnaliser i3status
  • Comment utiliser le module «disque»
  • Comment utiliser le module «CPU_USAGE»
  • Comment utiliser les modules «Ethernet» et «Wireless»
  • Comment utiliser le module «Batterie»
  • Comment utiliser le module «mémoire»

Exigences et conventions logicielles utilisées

Présentation

Pendant la malédiction de ce tutoriel, je suppose que vous avez déjà installé le gestionnaire de fenêtres i3 et que l'utilitaire i3Status fonctionne avec le i3bar, qui est la barre d'état par défaut qui est livrée avec i3. Bien que i3status soit généralement livré avec une configuration par défaut, par souci de clarté, nous recommencerons à zéro et le remplit avec les instructions expliquées dans le tutoriel.

Le fichier de configuration i3status

Pour personnaliser i3status, nous devons fonctionner sur son fichier de configuration. L'existence des fichiers suivants est vérifiée, dans l'ordre:

  1. ~/.config/i3status/config
  2. / etc/xdg/i3status/config
  3. ~/.i3status.conf
  4. /etc/i3status.conf

Nous pouvons également utiliser un fichier personnalisé : Tout ce que nous avons à faire est de transmettre son chemin comme argument à l'option -c lorsque nous invoquons i3status. Pour le plaisir de ce tutoriel, nous utiliserons le fichier ~/.config/i3status/config , afin de créer une configuration valide uniquement pour notre utilisateur spécifique. Pour apporter des modifications au fichier de configuration efficaces, tout ce que nous avons fait est de recharger le gestionnaire de fenêtres i3: nous pouvons généralement le faire via la combinaison des touches «Mod + Shift + R».

La section «générale»

La première chose que nous voulons définir dans notre fichier de configuration i3status est la section «Générale». Dans cette section, nous pouvons déclarer quelles couleurs doivent être utilisées (le cas échéant) pour les différents états et à quelle fréquence i3status doit mettre à jour les informations imprimées à la barre d'état. Voyons un exemple. Dans le fichier ~/.config/i3status/config , nous écrivons:

general {
  colors = true
  color_good = "#a3be8c"
  color_degraded = "#ebcb8b"
  color_bad = "#bf616a"
  interval = 1
  separator = "|"
}

La section «générale» est délimitée en utilisant des accolades bouclées. Dans ce document, nous avons déclaré que nous voulons utiliser des couleurs (via la directive couleurs=true ) et définies quelles couleurs devraient être associées au bon, dégradé et mauvais statut. Les seuils d'état peuvent être définis à l'intérieur de certains modules et peuvent être utilisés pour mettre en évidence, par exemple, une mauvaise connexion sans fil ou une utilisation élevée du processeur. Les couleurs sont définies en utilisant la notation hexadécimale RVB , tout comme nous le ferions dans un fichier CSS. Ensuite, avec la directive Interval , nous avons défini l'intervalle de temps en quelques secondes après que i3Status devait mettre à jour les informations dans la barre d'état. Enfin, avec la directive séparateur , nous avons défini le caractère à utiliser comme séparateur entre les informations imprimées par les différents modules que nous sommes sur le point de voir.

Utilisation de modules

L'utilitaire i3Status fournit une série de modules que nous pouvons utiliser pour récupérer des informations utiles. Ceux dont nous allons discuter dans ce tutoriel sont:

  • Disque: utilisé pour imprimer l'espace utilisé, libre et total d'un système de fichiers
  • Sans fil: affiche des informations sur une connexion d'interface réseau sans fil
  • Ethernet: affiche des informations sur une connexion d'interface Ethernet
  • Batterie: obtient l'état des batteries
  • Utilisation du processeur: affiche des informations sur l'utilisation du processeur
  • Mémoire: affiche des informations sur l'utilisation de la mémoire

Les modules peuvent être configurés à l'aide des directives appropriées enfermées en accolades bouclées. Voyons quelques exemples.

Le module de disque

Commençons par le module "disque". Comme nous l'avons déjà dit, ce module peut être utilisé pour afficher des informations sur l'espace total, utilisé et libre d'un système de fichiers donné. Supposons que nous voulons vérifier le pourcentage d'espace utilisé dans le système de fichiers «/». Voici ce que nous pourrions écrire:

disk "/" {
  format = "/: %percentage_used"
}

Nous définissons comment l'état doit être imprimé dans la barre d'état, en utilisant la directive format . Le % pourcentage_used L'espace réservé sera remplacé par le pourcentage réel de l'espace utilisé. Un autre espace réservé que nous pouvons utiliser, par exemple, est % pourcentage_free , qui est rendu en pourcentage d'espace libre dans le système de fichiers (pour la liste complète de l'espace réservé, jetez un œil au manuel i3status). Après avoir configuré un module, pour que son contenu soit inclus dans la sortie de i3status, nous devons l'ajouter à la liste de commandes, après la «section générale». Voici à quoi ressemble le fichier de configuration à ce stade:

general {
  colors = true
  color_good = "#a3be8c"
  color_bad  = "#bf616a"
  color_degraded = "#ebcb8b"
  interval = 1
  separator = "|"
}

order += "disk /"

disk "/" {
  format = "/: %percentage_used"
}

Après avoir rechargé i3, les informations sont affichées dans le i3bar:

Le module CPU_USAGE

Le module «CPU_USAGE» peut être utilisé pour afficher l'utilisation des processeurs au format en pourcentage via le % usage placeholder:

cpu_usage {
  format = "Cpu: %usage"
}

Comme nous l'avons mentionné précédemment, il est possible de définir les seuils dégradés et mauvais: lorsque le pourcentage atteint un seuil, il sera imprimé en utilisant la couleur correspondante définie dans la section générale. Par défaut, ces seuils sont 90 et 95 , respectivement, mais ils peuvent être modifiés via les directives Degraded_Threshold et max_threshold . Dans le cas où nous voulons suivre le pourcentage par rapport à un CPU spécifique, nous pouvons le spécifier avec le% CPU sintax, où n est le nombre de CPU à partir de 0:

cpu_usage {
  format = "CPU_0: %cpu0 CPU_1: %cpu1 CPU_2: %cpu2 CPU_3: %cpu3"
  degraded_threshold = 90
  max_threshold = 95
}

Pour ajouter le résultat du module à la sortie i3status, nous l'ajoutons à l'ordre:

order += "disk /"
order += "cpu_usage"

Voici comment le statut change:

Les modules Ethernet et sans fil

Avec les modules «Ethernet» et «sans fil», nous pouvons obtenir des informations sur les connexions réseau correspondantes. Avec le module Ethernet, nous passons le nom d'une interface réseau et laissons i3status imprimer l'adresse IP qui lui est attribuée et, si disponible, la vitesse de liaison. Voici un exemple de l'utilisation du module:

ethernet enp0s31f6 {
  format_up = "ETH: %ip (%speed)"
  format_down = "ETH: down"
}

Avec la directive format_up , nous spécifions ce qui doit être affiché lorsque la connexion est en place: le % IP est remplacé par l'adresse IP attribuée à l'interface, et % Speed avec la vitesse de liaison. Avec format_down , nous définissons à la place ce qui doit être affiché au cas où la connexion serait en baisse. Si nous ne voulons pas «coder dur» un nom d'interface, nous pouvons utiliser le _First _ Valeur spéciale: Lorsque nous le faisons, la première interface non boucante et non infatigable sera utilisée.

Le module «sans fil» fonctionne de manière similaire. Dans ce cas, nous spécifions le nom d'une interface sans fil, ou, encore une fois, utilisons le _first _ , qui, dans ce cas, sera remplacé par le nom de la première interface réseau sans fil. Parmi les autres choses, nous pouvons récupérer des informations sur le % qualité , % ssid et % ip de la connexion. Voici un exemple de l'utilisation du module:

wireless __first__ {
  format_up = "WLS: (%quality at %ssid) %ip"
  format_down  = "WLS: down"
}

Voici comment la barre d'état apparaît après avoir ajouté les modules «Ethernet» et «sans fil» à l'ordre:

Le module «batterie»

Le module «batterie» peut être utilisé pour récupérer des informations sur une batterie, comme son statut et son pourcentage de charge. Ces informations sont exposées dans le fichier/ sys/class/power_supply/bat /uevent (n est le nombre de la batterie, car certaines machines peuvent en avoir plus d'un). En supposant que nous voulons que le pourcentage de la batterie soit affiché et que le «Color_Bad» soit utilisé pour l'imprimer lorsque le pourcentage est de 10% ou moins, nous écrivions:

battery 0 {
  format = "BAT0: %percentage"
  last_full_capacity = true
  threshold_type=percentage
  low_threshold=10
}

Nous avons passé le numéro de batterie après le nom du module, et nous avons utilisé la directive de format pour définir les informations doivent être affichées dans la barre d'état. Avec la directive last_full_capacity , nous déclarons que nous voulons que le pourcentage soit calculé relativement à la capacité de courant de la batterie et non à sa pleine capacité par conception. Ensuite, nous avons utilisé la directive threshold_type pour indiquer explicitement que le seuil doit être conçu comme une valeur de pourcentage, puis nous définissons le low_threshold sur 10.

Et si nous avons plus d'une batterie sur notre machine? Les batteries sont numérotées progressivement à partir de 0, et nous pouvons utiliser la directive «Path» pour définir explicitement le chemin du fichier «UEVENT»:

battery 1 {
  path=/sys/class/power_supply/%d/uevent
  format = "BAT1: %percentage"
  last_full_capacity = true
  threshold_type=percentage
  low_threshold=10
}

À l'intérieur de la configuration du module, le premier % d est remplacé par le numéro de batterie passé à côté du nom du module. Dans le cas où nous voulons obtenir un agrégat de toutes les batteries existantes, tout ce que nous avons à faire est de remplacer le numéro de batterie par «tout»:

battery all {
  path=/sys/class/power_supply/%d/uevent
  format = "BAT AGGR: %percentage"
  last_full_capacity = true
  threshold_type=percentage
  low_threshold=10
}

Voici le résultat de l'ajout des configurations ci-dessus à l'ordre i3Status:

Le module «mémoire»

Le module «Mémoire» nous permet de garder une trace de l'utilisation de la RAM en interrogeant /proc/meminfo . Nous pouvons faire afficher i3status la mémoire système totale, utilisée, gratuite et disponible en utilisant les espaces réservés correspondants. Il existe deux méthodes qui peuvent être utilisées pour calculer la mémoire disponible/utilisée: «Memeavailable» et «Classical». Le premier est obtenu en soustrayant le «memavailable» de la mémoire totale et correspond à la valeur renvoyée par la commande libre ; Ce dernier calcule la mémoire disponible en soustrayant les tampons, le cache et la mémoire «libre» de la mémoire totale, et correspond à la valeur renvoyée par le moniteur système GNOME. Pour afficher la mémoire utilisée/totale en pourcentage, nous pouvons écrire:

memory {
  memory_used_method = classical
  format="Memory: %used/%total"
}

Voici le résultat de l'inclusion du module dans i3status:

Conclusions

Dans cet article, nous avons appris à personnaliser i3status, un utilitaire qui est livré avec le gestionnaire de fenêtres i3 et peut être utilisé pour générer et imprimer des informations dans des barres d'état comme i3bar. Nous avons vu comment le configurer et comment utiliser certains des modules disponibles. Pour un aperçu complet des fonctionnalités i3status, veuillez jeter un œil au manuel des services publics.

Articles connexes: