Fish et les notifications de Gnome terminal

18/10/2015

Sur Fedora 22, gnome-terminal vous permet d’avoir une notification quand une commande se termine et que vous êtes sur une autre fenêtre. Très pratique quand vous avez executé une commande “curl” ou “wget” dans un coin ou si vous lancez des procédure d’installation ou de compilation qui prennent un certain temps. Or, si vous passez au shell “fish”, les notifications ne marchent plus. Voilà comment on s’y prend pour les retrouver.

TL;DR;

Dans .config/fish/config.fish:

if test "$VTE_VERSION" -ge 3405
    switch "$TERM"
        case 'vte*' 'xterm*'
            function __notify_vte_command_completed --on-event fish_postexec --description 'Notify VTE of command completion'
                printf '\e]777;notify;Command completed;%s\a' (echo "$argv" | cat --show-nonprinting | tr --delete \;)
            end
    end
end

Et relancez votre sessions.

Détaillons

Depuis quelques temps les terminaux VTE (Virtual Terminal Emulator, le widget gnome qui permet d’afficher un terminal) comprend quelques “séquences d’échappement” (escape sequence) qui permettent de s’amuser un peu. L’une de ces séquence est \e]777.

En général, il suffit d’afficher une suite d’argument à cette séquence:

\e]777;argument 1; argument 2; etc...

Le premier argument définit quelle action exécuter. Dans notre cas, ce sera “notify”. Les arguments suivant sont définis en fonctione de l’action. Pour “notify” on défini:

  • le titre
  • le texte

La notification ne se fera que si votre focus se trouve sur une autre fenêtre. Donc l’idée c’est d’ouvrir un terminal gnome et une autre fenêtre (par exemple restez sur cette page web).

Dans le terminal, tapez:

# sur fish
sleep 2; and echo -e '\e]777';notify;Le titre;Le contenu"

Rapidement, passez sur une autre fenêtre et vous devez avoir une notification de bureau.

Fish config

En cherchant un peu, je suis tombé sur ce ticket: Issue 2102 - apparement fish avait intégré le fait d’envoyer des notification Gnome mais certaines personnes ont eut quelques soucis. Du coup, l’auteur à retiré (temporairement ?) le test qui permettait l’envoit de notification.

Mais, le commit qu’il a retiré est lisible ici et on voit que c’est une simple fonction à ajouter dans la configuration.

Il suffit donc de prendre le bloc qu’il a supprimé, et le mettre dans votre propre configuration.

Sachez qu’en l’état, c’est un peu moins fin que ce que nous avions avec Bash. En effet, vous n’aurez que des notifications qui vous indiqueront qu’une commande est terminée mais pas son état. Alors que sur bash, on avait connaissance du fait que la commande avait planté ou réussi. Il doit y avoir une solution à cela, mais en l’état c’est déjà bien utile (selon moi) d’avoir au moins la notification.

Ça peut vous intéresser aussi


Fish shell - adopté

Je pense que beaucoup connaissent déjà le “SHELL” nommé ...


Dock Mac et Barre des taches Gnome

Entre deux trucs que je fais à cette heure tardive,...


Gnome shell innove

Voilà des années qu’on a droit à un type ...


OpenSSH et les socket de contrôle

Garder une connexion SSH active en arrière plan et pouvoir ...

Merci de m'aider à financer mes services

Si vous avez apprécié cet article, je vous serai reconnaissant de m'aider à me payer une petite bière :)

Si vous voulez en savoir plus sur l'utilisation de flattr sur mon blog, lisez cette page: Ayez pitié de moi

Commentaires

Ajouter un commentaire

Ajouter un commentaire

(*) Votre e-mail ne sera ni revendu, ni rendu public, ni utilisé pour vous proposer des mails commerciaux. Il n'est utilisé que pour vous contacter en cas de souci avec le contenu du commentaire, ou pour vous prévenir d'un nouveau commentaire si vous avez coché la case prévue à cet effet.