Envoyer des notifications et des rappels sur le bureau depuis le terminal Linux


  • FrançaisFrançais


  • Parfois, il est utile d’obtenir un retour visuel d’un script. Par exemple, lorsqu’un script ou une tâche cron se termine, une génération de longue durée échoue ou il y a un problème urgent lors de l’exécution du script. Les applications de bureau peuvent le faire avec des notifications contextuelles, mais cela peut aussi être fait à partir d’un script ! Vous pouvez utiliser des commandes de script pour vous envoyer des notifications et des rappels sur le bureau.

    Le code ci-dessous a été écrit et testé sur Linux. Cela peut également être fait sur macOS avec un peu d’effort. Voir la dernière section pour quelques trucs et astuces.

    Envoi de notifications depuis le terminal Linux

    Pour envoyer des notifications depuis le terminal Linux, utilisez le notify-send commander. Courir which notify-send pour voir s’il est présent sur votre système. Sinon, installez-le avec le gestionnaire de paquets de votre choix.

    Sur Fedora, tapez :

    $ sudo dnf install notify-send

    Sur les distributions basées sur Debian, tapez :

    $ sudo apt install notify-send

    Quelques exemples de notifications simples :

    $ notify-send "Dinner ready!"
    $ notify-send "Tip of the Day" "How about a nap?"

    Vous pouvez personnaliser la notification avec des options telles que le niveau d’urgence, l’icône personnalisée, etc. En savoir plus avec man notify-send. Vous pouvez utiliser un petit ensemble de balises HTML dans le corps de notification pour donner une touche agréable à vos messages. En plus de cela, les URL sont rendues cliquables. Par example:

    $ notify-send -u critical
      "Build failed!"
      "There were <b>123</b> errors. Click here to see the results: http://buildserver/latest"

    Les notifications envoyées sont récupérées par l’environnement de bureau et affichées comme n’importe quelle autre notification. Ils auront la même apparence, la même sensation et le même comportement.

    Combinez notification-envoi avec à

    Cron est couramment utilisé pour planifier des commandes à intervalles réguliers. le at La commande planifie l’exécution unique d’une commande à un moment spécifié. Si vous l’exécutez comme ceci, il démarre en mode interactif, où vous pouvez entrer des commandes à exécuter à un moment donné :

    $ at 12:00

    Ce n’est pas utile pour les scripts. Heureusement, at accepte les paramètres de l’entrée standard afin que nous puissions l’utiliser de cette façon :

    $ echo "npm run build" | at now + 1 minute
    $ echo "backup-db" | at 13:00

    Il existe de nombreuses façons de spécifier le temps. Du temps absolu, comme 10:00 par le temps relatif, comme now + 2 hours, à des moments particuliers comme noon ou midnight. Nous pouvons le combiner avec notify-send pour nous montrer des rappels à un moment donné dans le futur. Par example:

    $ echo "notify-send 'Stop it and go home now?' 'Enough work for today.' -u critical" | at now

    La commande de rappel

    Maintenant, créez une commande Bash personnalisée pour vous envoyer des rappels. Que diriez-vous de quelque chose d’aussi simple et convivial que :

    $ remind "I'm still here" now
    $ remind "Time to wake up!" in 5 minutes
    $ remind "Dinner" in 1 hour
    $ remind "Take a break" at noon
    $ remind "It's Friday pints time!" at 17:00

    C’est mieux qu’Alexa ! Comment obtenir cette bonté ?

    Voir le code ci-dessous. Il définit une fonction shell appelée rappeler, qui prend en charge la syntaxe ci-dessus. Le travail proprement dit se fait dans les deux dernières lignes. Le reste est responsable de l’aide, de la validation des paramètres, etc., ce qui correspond à peu près à la proportion de code utile par rapport au bruit blanc nécessaire dans toute grande application.

    Enregistrez le code quelque part, par exemple, dans le ~/bin/remind fichier et sourcez la fonction dans votre .bashrc profil afin qu’il soit chargé lorsque vous vous connectez :

    $ source ~/bin/remind

    Rechargez le terminal, puis tapez rappeler pour voir la syntaxe. Profitez!

    #!/usr/bin/env bash
    function remind () {
      local COUNT="$#"
      local COMMAND="$1"
      local MESSAGE="$1"
      local OP="$2"
      shift 2
      local WHEN="$@"
      # Display help if no parameters or help command
      if [[ $COUNT -eq 0 || "$COMMAND" == "help" || "$COMMAND" == "--help" || "$COMMAND" == "-h" ]]; then
        echo "COMMAND"
        echo "    remind <message> <time>"
        echo "    remind <command>"
        echo
        echo "DESCRIPTION"
        echo "    Displays notification at specified time"
        echo
        echo "EXAMPLES"
        echo '    remind "Hi there" now'
        echo '    remind "Time to wake up" in 5 minutes'
        echo '    remind "Dinner" in 1 hour'
        echo '    remind "Take a break" at noon'
        echo '    remind "Are you ready?" at 13:00'
        echo '    remind list'
        echo '    remind clear'
        echo '    remind help'
        echo
        return
      fi
      # Check presence of AT command
      if ! which at >/dev/null; then
        echo "remind: AT utility is required but not installed on your system. Install it with your package manager of choice, for example 'sudo apt install at'."
        return
      fi
      # Run commands: list, clear
      if [[ $COUNT -eq 1 ]]; then
        if [[ "$COMMAND" == "list" ]]; then
          at -l
        elif [[ "$COMMAND" == "clear" ]]; then
          at -r $(atq | cut -f1)
        else
          echo "remind: unknown command $COMMAND. Type 'remind' without any parameters to see syntax."
        fi
        return
      fi
      # Determine time of notification
      if [[ "$OP" == "in" ]]; then
        local TIME="now + $WHEN"
      elif [[ "$OP" == "at" ]]; then
        local TIME="$WHEN"
      elif [[ "$OP" == "now" ]]; then
        local TIME="now"
      else
        echo "remind: invalid time operator $OP"
        return
      fi
      # Schedule the notification
      echo "notify-send '$MESSAGE' 'Reminder' -u critical" | at $TIME 2>/dev/null
      echo "Notification scheduled at $TIME"
    }

    Notifications faciles

    Avec ces quelques commandes open source simples, vous pouvez intégrer vos propres scripts, applications et tâches à votre bureau. Essaye le!


    Cet article a été adapté avec la permission de l’auteur de l’article original, trouvé ici.

    Source

    La Rédaction

    L'équipe rédactionnnelle du site

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code