blog · git · desktop · images · contact


XTerm und der Fensterfokus

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:

Screenshot

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.

Comments?