Domanda

Sto scrivendo un'applicazione console che utilizza il tasto F1 (per assistenza). Sfortunatamente, mentre Konsole (di KDE) non usa questa chiave, Gnome Terminal lo fa, quindi la chiave F1 diventa inaccessibile alla mia applicazione. Non penso che ci sia un modo per rilevare se il tasto F1 è già mappato sul lato GUI delle cose (Terminale Gnome), ma se c'è, la risposta a questa domanda ovvia a questa domanda. :)

Ergo, la mia prossima scommessa migliore è provare a scoprire se sto correndo all'interno del Terminale Gnome. C'è un modo per farlo? Sono principalmente interessato a ripulirlo dall'interno di Ruby, ma se può essere fatto tramite shell o variabili di ambiente, o filesystem virtuale (/ proc, / dev, ecc.) Allora sarà sufficiente.

Spero in un modo affidabile per farlo, ma posso accontentarmi di " ipotesi migliore " approcci come il grepping delle variabili di ambiente alla ricerca di indizi che possono permettermi ragionevolmente di supporre che Gnome Terminal sia il terminale di wrapping.

Informazioni extra: anche altre chiavi vengono "rubate" di Gnome Terminal. Intendo mostrare una sorta di messaggio informativo sulle chiavi alternative per gli utenti di Gnome.

È stato utile?

Soluzione

Googleage ha rivelato che potrei essere in grado di fare affidamento sul Terminale Gnome impostando la variabile d'ambiente COLORTERM su 'gnome-terminal'.

Altri suggerimenti

Per zsh:

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

gnome-terminal usato per impostare $ COLORTERM , ma questo è stato eliminato (in 3.12.0-67-g1d5c1b6).

Normalmente usi termcap info aka terminfo. Questo ti dice con quale tipo di terminale stai lavorando e anche quali sono le chiavi.

È una scelta dell'utente e poiché Gnome Terminal si riferisce probabilmente come una sorta di x-termine, come probabilmente fa Konsole, è probabile che l'utente crei un tasto F1. Pertanto, sospetto che le capacità terminali dei due saranno riportate come equivalenti.

Questa indagine su Codici di escape dei tasti funzione potrebbe essere interessante per te senza in realtà spiegare come, se è possibile, che il terminale gnomo possa essere realizzato per produrre una macchina da stampa F1. Pensando al terminale Mac OS X che ho usato molto tempo fa, ha catturato PageUp e PageDown per la barra di scorrimento, mentre Command-PageUp e Command-PageDown li hanno passati al terminale.

Un metodo piuttosto grezzo, se hai voglia di delegare questo alla shell - altrimenti, in C o C ++, dovrai guadare attraverso il tuo / proc, se ne hai uno:

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

Se in esecuzione dal proprio programma, attraverso system () ad esempio, è possibile "grep" il nome del programma anziché "bash"

Lo so, è decisamente " hack come un pirata " ;)

prima, questa è un'impostazione in gnome-terminal; gli utenti possono andare su Modifica - > Scorciatoie da tastiera nei menu del terminale gnome e modifica o eliminazione della rilegatura dei tasti F1.

Controllo semplicemente $ TERM per l'emulatore di terminale di mia scelta e quindi aggiungo un alias per generare un nuovo terminale nella directory corrente.

if [[ $TERM == 'xterm' ]] ; then
  alias nw='gnome-terminal --working-directory=$PWD'
fi
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top