Pregunta

Estoy escribiendo una aplicación de consola que utiliza la tecla F1 (para obtener ayuda). Desafortunadamente, aunque Konsole (de KDE) no usa esta tecla, Gnome Terminal sí, por lo que la tecla F1 queda inaccesible para mi aplicación. No creo que haya una manera de detectar si la tecla F1 ya está asignada en el lado GUI de las cosas (Terminal Gnome), pero si la hay, la respuesta a eso obviará esta pregunta. :)

Ergo, mi siguiente mejor opción es tratar de detectar si estoy corriendo dentro de Gnome Terminal. ¿Hay alguna forma de hacer eso? Estoy principalmente interesado en obtener esto desde dentro de Ruby, pero si se puede hacer a través de shell o variables de entorno, o sistema de archivos virtual (/ proc, / dev, etc.) entonces eso será suficiente.

Espero una forma confiable de hacer esto, pero puedo conformarme con la "mejor suposición". enfoques como agrupar las variables de entorno en busca de pistas que me permitan suponer razonablemente que Gnome Terminal es el terminal de envoltura.

Información adicional: otras claves también se roban " por Gnome Terminal. Tengo la intención de mostrar algún tipo de mensaje informativo sobre claves alternativas para usuarios de Gnome.

¿Fue útil?

Solución

Googleage ha revelado que podría confiar en que Gnome Terminal establezca la variable de entorno COLORTERM en 'gnome-terminal'.

Otros consejos

Para zsh:

[[ "$COLORTERM" == "gnome-terminal" ]] || [[ ${$(ps -p $(ps -p $ -o ppid=) -o cmd=):t} == gnome-terminal* ]]

gnome-terminal se usa para configurar $ COLORTERM , pero esto se ha eliminado (en 3.12.0-67-g1d5c1b6).

Normalmente usas información de termcap, también conocida como terminfo. Esto le indica con qué tipo de terminal está trabajando y también cuáles son las teclas.

Es la elección del usuario, y dado que Gnome Terminal se informa a sí mismo como probablemente una especie de término x, como Konsole probablemente hace, es probable que el usuario cree una pulsación de tecla F1. Por lo tanto, sospecho que las capacidades del terminal de los dos se informarán como equivalentes.

Esta investigación de códigos de escape de teclas de función podría ser interesante para usted sin explicar realmente cómo, si es posible, que el terminal gnome podría fabricarse para producir una prensa F1. Pensando en el terminal Mac OS X que utilicé hace mucho tiempo, capturó PageUp y PageDown para la barra de desplazamiento, mientras que Command-PageUp y Command-PageDown los pasaron al terminal.

Un método bastante burdo, si desea delegar esto al shell; de lo contrario, en C o C ++, tendrá que navegar por su / proc, si tiene uno:

ps x | grep `ps o ppid,fname | grep bash | grep -v grep | head -1 | awk '{print $1}'` | grep 'gnome-terminal' | wc -l

Si se ejecuta desde su propio programa, a través de system (), por ejemplo, puede 'grep' el nombre de su programa en lugar de 'bash'

Lo sé, definitivamente es "piratear como un pirata" ;)

fwiw, esta es una configuración en gnome-terminal; los usuarios pueden ir a Editar - > Atajos de teclado en los menús de gnome-terminal y cambiar o eliminar la combinación de teclas F1.

Simplemente verifico el $ TERM para el emulador de terminal de mi elección y luego agrego un alias para generar una nueva terminal en el directorio actual.

if [[ $TERM == 'xterm' ]] ; then
  alias nw='gnome-terminal --working-directory=$PWD'
fi
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top