web-dev-qa-db-fra.com

Lien cliquable + menu contextuel

Est-il possible d'avoir un lien cliquable, dans mon PS1, qui ouvre un menu contextuel ou quelque chose de similaire?

Mon scénario

J'ai personnalisé mon .bashrc, pour montrer mon PS1 comme

user@machine: path #/$

et si je suis dans un référentiel git, il montre également ma branche et un caractère différent pour le statut

user@machine: path [branch !] #/$

Au fait, j'ai le code pour le faire ici dans Ask Ubuntu.

Mon idée

Ce que je voulais, c’était de cliquer sur le nom de la branche et une liste des branches téléchargées s’affiche (avec ou sans possibilité de la modifier).

J'ai trouvé des options de "dialogue" et de "sélection/choix" dans le menu contextuel, mais rien n'a été trouvé pour le lien cliquable.

6
res

Si je devais faire cela, je choisirais un émulateur de terminal tel que Terminator et écris un nouveau plugin . Je devrais peut-être expliquer comment cela a fonctionné, mais Terminator devrait pouvoir récupérer le texte puis, en utilisant ce qu’il sait de l’environnement Shell, présenter un menu de sélection GTK3.

La seule autre façon dont je puisse penser à fond consiste à écrire votre propre remplacement Shell. Quelque chose qui entoure bash (et al) et gère la participation de la souris. Il y a des choses comme PyScreen qui font cela, mais rien ne fait ce que vous voulez directement. Proxy des terminaux est également une recette pour les bugs de rendu. Même les objets matures dans cet espace (par exemple, screen) gâchent parfois les choses.

Plus que tout, aucun de ces exercices n’est un exercice de 20 minutes. Le plugin me prendrait des heures, le Shell prendrait probablement des jours pour bien faire les choses. Je repousserais probablement ceux qui me disaient de le faire et disaient que c'était une utilisation peu économique de mon temps.

Si je le voulais juste pour moi-même, j'écrirais probablement juste une petite commande br qui listait les branches et me permettait de choisir. Il existe des exemples mais je ne présenterai aucun d'entre eux comme étant la meilleure solution. Ils sont tous un compromis sur ce que vous vouliez.

5
Oli