4 votes

Comment faire des bulles de notification avec une taille, une couleur et une position personnalisées en utilisant la ligne de commande ?

Je me demande s'il existe une méthode en ligne de commande pour afficher des notifications dans une bulle de notification Ubuntu. Ou est-ce qu'il y a un fichier qui est associé à cette tâche ?
Je veux les caractéristiques suivantes :

  • Mes propres messages apparaissent dans la bulle de notification.
  • Ces notifications apparaissent à une position spécifique sur l'écran, pas seulement à la position par défaut.
  • La taille de la bulle de notification peut être modifiée.
  • Sa couleur peut être modifiée.

MISE À JOUR

J'ai lu "Comment puis-je envoyer une notification de bureau personnalisée ?" et maintenant, je sais que notify-send m'aidera dans mon objectif. Mais il y a certaines limitations avec cette commande. Je veux savoir s'il existe une autre commande à utiliser, ou un autre fichier à modifier, pour que la taille, la couleur et la position de la bulle de notification puissent être modifiées ?

7voto

Mirek Długosz Points 226

Historiquement, il y avait différentes approches pour le problème des "notifications". Il n'y a même pas de consensus sur ce qu'est une "notification". L'utilisons-nous seulement pour informer l'utilisateur qu'il s'est passé quelque chose? Attendons-nous une action de sa part? Si oui, comment les données sont-elles recueillies? Cette action peut-elle être retardée, ou l'utilisateur doit-il agir immédiatement? Pendant combien de temps peut-elle être retardée? Comment l'utilisateur est-il censé revoir toutes les actions en attente? Les réponses à toutes ces questions façonnent les solutions proposées par différentes équipes.

En fin de compte, il n'y a pas de réponse unique et définitive à votre question. Mais il existe différentes approches que vous pouvez essayer et choisir celle qui convient le mieux à votre cas spécifique.

notify-send

À un moment donné, une norme pour les notifications sur Linux a émergé. La force motrice derrière cela, si ma mémoire est bonne, était l'équipe GNOME 3. Ils ont cherché un moyen unifié pour que toutes les applications notifient l'utilisateur et ont réalisé qu'un composant de l'environnement de bureau devrait être responsable de gérer (mettre en file d'attente, afficher, recueillir des données d'entrée) toutes les notifications. Les applications envoient simplement leur notification à ce composant et espèrent que l'utilisateur la reçoive.

Vous pouvez créer ce type de notification avec l'application en ligne de commande notify-send. Notez qu'elle ne permet volontairement pas la personnalisation. Vous ne faites que transmettre votre message et laissez le reste à l'environnement de bureau. Ce type de notifications est pris en charge par Unity (Ubuntu), GNOME 3 et KDE SC/Plasma.

osd_cat

osd_cat est une application qui affiche le contenu d'un fichier sur la couche du serveur X. En utilisant l'option -d, vous pouvez le faire disparaître automatiquement après un certain temps, ce qui le rend quelque peu adapté en tant qu'application de notification.

La police par défaut sera moche, mais vous pouvez l'améliorer en utilisant l'option -f. L'argument de -f doit être une chaîne construite par xfontsel.

Une notification d'exemple pourrait être créée de cette manière :

echo -e "exemple\nnotification" |osd_cat -p middle -A center -d 1 -f '-*-helvetica-*-r-*-*-34-*-*-*-*-*-*-*' -O 1 -c '#fff'

Contrairement à notify-send, vous pouvez placer votre notification n'importe où sur l'écran et vous pouvez la personnaliser un peu (sélectionnez la police et la couleur ; il n'y a pas de couleur de fond). Le principal inconvénient est qu'il s'agit spécifique à X, donc cela ne fonctionnera pas sous Mir ou Wayland.

zenity/kdialog

zenity (pour les bureaux GTK - Unity et GNOME) et kdialog (pour les bureaux Qt - KDE et LxQt) permettent à l'utilisateur de créer des fenêtres de dialogue simples à partir de la ligne de commande. Vous pouvez y mettre du texte, mais aussi des icônes prédéfinies, des boutons, des formulaires de saisie, des listes, des sélecteurs de fichiers ou des barres de progression. Avec un peu de travail de votre part, vous pourriez les utiliser comme moyen de notifier l'utilisateur.

zenity prend en charge les commutateurs de ligne de commande --width= et --height=, mais ne fournit aucun moyen de modifier l'emplacement de la fenêtre. Personnellement, j'utilise --title= pour donner à la fenêtre un titre personnalisé et des règles de gestion des fenêtres. Le gestionnaire de fenêtres (KWin dans mon cas) sélectionne toutes les fenêtres qui correspondent à certains critères, comme un titre contenant une chaîne, et modifie leurs propriétés. Pour les notifications, je place ces fenêtres dans le coin inférieur droit de l'écran, je retire la barre de titre de la fenêtre, les fais apparaître sur tous les bureaux virtuels et les retire de la barre des tâches.

Solution personnalisée

Si aucun des programmes ci-dessus ne répond à vos besoins, vous pouvez toujours écrire votre solution personnalisée. python fournit des liaisons à la fois à GTK et Qt et vous permettra de créer relativement facilement une interface utilisateur personnalisée. Vous aurez toutes les options de personnalisation possibles, mais cela nécessitera un travail initial pour commencer.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X