web-dev-qa-db-fra.com

Comment obtenir le profil de terminal GNOME actuel?

Je connais gsettings et dconf, mais je ne trouve aucune mention de profil actif. Il semble que vous ne pouvez lister que les profils sans savoir quel est le profil actuel.

Je souhaite interroger la couleur d'arrière-plan pour définir l'arrière-plan approprié dans Vim.

3
user1685095

La question a été modifiée dans les commentaires: Comment obtenir la couleur de fond? Pour cela, la commande xtermcontrol --get-bg peut être utilisée.

Cette commande particulière repose sur l'émulateur de terminal prenant en charge la séquence d'échappement OSC 11, qui est généralement associée à OSC 12 (premier plan; xtermcontrol --get-fg), OSC 4 (couleurs de palette; xtermcontrol --get-color0 .. --get-color15 ) et quelques autres. Certains émulateurs de terminaux populaires implémentent ceux-ci, d'autres non, alors ces commandes ne fonctionnent pas partout. Le widget VTE, et donc les émulateurs de terminal basés sur VTE tels que gnome-terminal les prennent en charge.

Ces séquences d'échappement sont assez délicates lorsqu'elles sont utilisées pour interroger les couleurs plutôt que pour les définir: la réponse est injectée par l'émulateur de terminal exactement comme si elle provenait du clavier, c'est-à-dire comme si l'utilisateur l'avait saisie. xtermcontrol lit cette entrée, puis l'imprime en sortie, masquant ce détail technique. (Et si vous le souhaitez vraiment, vous pouvez tromper xtermcontrol pour signaler une mauvaise réponse en en tapant une manuellement sur le clavier, haha.)


Retour à la question initiale:

Il n'y a aucun moyen d'interroger le profil actuel dans gnome-terminal. Pourquoi?

  • Lire gsettings ou dconf ne peut pas fonctionner pour deux raisons:

    1. Ils contiennent la configuration statique (paramètres) de gnome-terminal, pas les informations d'exécution. Même s'ils contenaient des informations d'exécution, ils devraient contenir les informations de toutes les fenêtres et tous les onglets du terminal gnome ouverts, chacun d'entre eux utilisant peut-être un profil distinct. Et puis, d’une manière ou d’une autre, nous aurions encore besoin de savoir lequel rechercher.

    2. Ils ne peuvent travailler que localement, et non p.ex. a su ou ssh.

  • gnome-terminal pourrait initialiser une variable d'environnement à l'ouverture d'une fenêtre ou d'un onglet, mais il n'y a aucun moyen de la mettre à jour ultérieurement si le profil est modifié. (Voir également la discussion sur $COLORFGBG à l'adresse https://bugzilla.gnome.org/show_bug.cgi?id=733423 .)

  • Il pourrait signaler le profil actuel en réponse à une séquence d'échappement, comme si l'utilisateur l'avait saisi depuis le clavier (de la même manière que les OSC 4, 10, 11 susmentionnées). Cependant, il n'y a pas de standard pour cela, et cela aurait même des implications sur la sécurité (voir https://bugzilla.gnome.org/show_bug.cgi?id=151260 ), plus probablement aucun support dans l'utilitaire xtermcontrol pendant de nombreuses années à venir (enfin, il ne supporte même pas encore 256 couleurs).

4
egmont