blog · git · desktop · images · contact
2010-10-21
"Eigentlich" gilt für Anwendungen im Terminal, dass sie nur sehr
begrenzt eine Idee davon haben, was mit dem Fenster eines eventuellen
Terminal-Emulators gerade los ist. Es gibt aber Situationen, da hätte
man das gerne. Beispiel: Für ein Chat-Programm wäre es gut zu wissen, ob
sein Fenster gerade Fokus hat. Nur falls nein, dann könnte es bei neuen
Nachrichten eine Notification rauswerfen (notify-send 'Foo sagte: Hallo
Bar!'
).
Mit XTerm geht das. Mit XTerm geht sowieso so einiges, was man hier nachschlagen kann. Man suche dort nach "focus", um zu erfahren, wie man "FocusIn/FocusOut events" aktivieren kann:
# Aktivieren:
echo $'\e[?1004h'
# Deaktivieren:
echo $'\e[?1004l'
Um zu bemerken, was dann passiert, startet man nach der Aktivierung am
besten direkt cat
:
Nach dem Start von cat
habe ich dem Fenster wiederholt Fokus gegeben
und entzogen. Verliert das Fenster den Fokus, empfängt das Programm im
Terminal \e[O
, bekommt es wieder Fokus, dann kommt \e[I
. Ist das
Programm schlau genug und kann damit über benutzerdefinierte Keybindings
etwas anfangen, dann kann man damit allerlei lustige Dinge tun. Zum
Beispiel die eingangs erwähnten bedingten Notifications.