web-dev-qa-db-fra.com

Comment créer des bulles de notification avec une taille, une couleur et une position personnalisées à l'aide de la ligne de commande?

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

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

MISE À JOUR

Je lis "Comment puis-je envoyer une notification au bureau personnalisée?" et maintenant, je sais que notify-send m'aidera dans mon objectif. Mais il y a quelques limitations avec cette commande. Je veux savoir s'il y a une autre commande à utiliser, ou un fichier à changer, de sorte que taille , couleur et la position de la bulle de notification peut être modifiée?

2
Mohammad

Historiquement, il y avait différentes approches du problème des "notifications". Il n'y a même pas de consensus sur ce qu'est une "notification". L'utilisons-nous uniquement pour dire à l'utilisateur que quelque chose s'est passé? Attendons-nous une action de sa part? Si oui, comment les informations sont-elles recueillies? Cette action peut-elle être retardée ou l'utilisateur doit-il agir immédiatement? Combien de temps cela pourrait-il être retardé? Comment l'utilisateur est-il censé examiner toutes les actions en attente? Les réponses à toutes ces questions modèlent les solutions proposées par différentes équipes.

En bout de ligne, il n’existe pas de réponse unique et définitive à votre question. Mais il existe différentes approches que vous pouvez essayer pour en choisir une qui convient à votre cas d'utilisation particulier.

notifier-envoyer

À un moment donné, une norme pour les notifications sur Linux est apparue. La force motrice derrière tout cela, si ma mémoire est bonne, était l’équipe GNOME 3. Ils ont cherché un moyen unifié pour toutes les applications de notifier l'utilisateur et ont compris qu'un composant de l'environnement de bureau devrait être responsable du traitement (mise en file d'attente, affichage, collecte des entrées) de toutes les notifications. Les applications envoient simplement leur notification à ce composant et espèrent que cet utilisateur la recevra.

Vous pouvez créer ce type de notification avec notify-send, une application en ligne de commande. Notez que cela ne permet pas la personnalisation. Vous ne faites que transmettre votre message et laisser 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 du fichier sur la couche serveur X. En utilisant le commutateur -d, vous pouvez le faire disparaître automatiquement après un certain temps, ce qui le rend plutôt approprié comme application de notification.

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

Un exemple de notification pourrait être créé de cette façon:

echo -e "sample\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 d'arrière-plan). Le principal inconvénient est qu'il est 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 de simples fenêtres de dialogue à partir de la ligne de commande. Vous pouvez insérer du texte à l'intérieur, mais également des icônes, boutons, formulaires de saisie, listes, sélecteurs de fichiers ou barres de progression prédéfinis. Avec un peu de travail de votre côté, vous pourriez les utiliser comme moyen de notifier l'utilisateur.

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

Solution personnalisée

Si aucun des programmes ci-dessus ne convient à vos besoins, vous pouvez toujours écrire votre solution personnalisée. python fournit des liaisons à GTK et à Qt et vous permettra de créer une interface utilisateur graphique relativement simple. Vous aurez toutes les options de personnalisation du monde, mais cela nécessitera un travail initial pour démarrer.

5
Mirosław Zalewski