Question

J'essaie d'en savoir plus sur le texte en couleur dans une fenêtre de terminal.(Au cas où cela serait important, j'utilise Terminal.app sur OS X.) J'aimerais obtenir la paire de couleurs de premier plan et d'arrière-plan actuelle du terminal.Il semble que je devrais pouvoir obtenir ces informations dans un script Perl en utilisant la bibliothèque Term :: Cap, mais la solution m'échappe.

Dans un script Perl, comment puis-je interroger la valeur actuelle de la paire de couleurs de premier plan et d'arrière-plan du terminal ?

Était-ce utile?

La solution

La fonctionnalité sort du cadre de terminfo et termcap, car elle traite de réponses terminales, tandis que terminfo/termcap décrivent ces fonctionnalités :

  • comment dire au terminal d'effectuer certaines tâches couramment implémentées fonctionnalité (comme effacer l'écran), ou
  • quelle séquence de caractères certains pourraient-ils clé spéciale (tel que Maison) envoyer depuis le clavier.

Bien qu'en principe, il n'y ait aucune limitation quant à ce que pourrait faire partie d'une description de terminal, il y avait peu de points communs entre les terminaux dans les années 1980 pour réponses.Quelques terminaux pouvaient signaler des fonctionnalités spécifiques, la plupart d'entre elles étaient constantes (par exemple, les informations de version).La plupart des réponses variables sont survenues après que terminfo/termcap se soit plus ou moins solidifié dans X/Open Curses. ncurses étend cela, mais encore une fois, la plupart des extensions sont soit caractéristiques ou touches spéciales.

Terminal.app implémente les fonctionnalités les plus couramment utilisées de xterm, mais (comme d'autres imitateurs) omet la plupart des réponses terminales.Entre autres, xterm fournit des réponses de terminal qui peuvent indiquer à une application quelles sont actuellement les couleurs de la fenêtre.Il existe quelques utilitaires de ligne de commande (xtermset et xtermcontrol) qui ont été écrits pour utiliser ces informations (et encore une fois, ils ne couvrent qu'une partie du répertoire).En utilisant xtermcontrol démontre que Terminal.app fait défaut dans ce domaine — voir capture d'écran :

screenshot showing Terminal.app vs xterm using xtermcontrol

Autres conseils

Je ne pense pas que la plupart des terminaux prennent en charge la signalisation de cette information - et cela ne ressemble pas à des termcap ou à TerminFo a des entrées pour cela.Vous êtes juste attendu à définir la paire de couleurs si nécessaire, et non pour demander au terminal ce qu'il est réglé pour le moment.Dans la norme ECMA-48 (mieux connue sous le nom de "ANSI" après ANSI X3.64, où elle utilisait), la seule commande qui fait référence à la couleur est la "rendu graphique" SGR, qui est purement en écriture uniquement.

Je ne sais pas à propos de Perl ou de Terminal.app, mais xterm, etc. écrira les séquences de contrôle des couleurs de premier plan/arrière-plan sur stdin si vous sortez "\033]10;?\07" ou "\033]11;?\07" respectivement.Vérifier http://invisible-island.net/xterm/ctlseqs/ctlseqs.html, http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Controls en particulier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top