Was löst Benachrichtigungen über das Formular "Bell in Session Shell" in KDE aus?

5032
HighCommander4

Ich führe KDE unter Debian Testing aus.

Von Zeit zu Zeit lösen Programme, die in einem Terminal (Konsole) ausgeführt werden, Systembenachrichtigungen des Formulars "Bell in session Shell" aus.

Was löst diese Benachrichtigungen aus?

Hinweis: Ich frage nicht, wie Sie sie deaktivieren können. Ich weiß, dass es eine Option in Konsole -> Einstellungen -> Benachrichtigungen konfigurieren gibt. Ich frage, welches Verhalten sie überhaupt auslöst, um möglicherweise einige der Programme zu ändern, durch die sie ausgelöst werden, um sie nicht oder unter verschiedenen Bedingungen auszulösen.

6

1 Antwort auf die Frage

5
user996142

Ich glaube, so interpretiert der Konsole-Terminal-Emulator die Glocken.

Versuchen Sie, in Bash zu laufen

sleep 3 && echo -e "\a" 

Wechseln Sie dann zu einer anderen App und warten Sie 3 Sekunden.

Vor vielen, vielen Jahren, als echte Terminals an große Computer angeschlossen wurden, gab es ein spezielles Protokoll, "Escape-Sequenzen" genannt, um Befehle an solche Terminals zu senden. Es gibt Sequenzen, um die Farbe zu ändern, zur neuen Zeile zu wechseln oder die Klingel zu läuten. Erste Terminals wurden mit echten Glocken ausgestattet, um den Bediener darüber zu informieren, dass einige lang andauernde Aufgaben beendet sind.

Jeder moderne Terminal-Emulator (Konsole, Xterm oder echte Konsole, wenn Sie sich im Textmodus befinden) emuliert einfach ein solches Terminal und kann daher solche Sequenzen verstehen.

Die TERMenv. Variable sagt den Namen des emulierten Terminals. Einige Bibliotheken wie "Then" verwenden ncursesdann die termcap(oder terminfo) Datei, um herauszufinden, welche Sequenz für was auf diesem Terminal verwendet wird.

Ich habe es versucht, aber `echo -e" \ a "` erzeugt keine Benachrichtigung. HighCommander4 vor 9 Jahren 0
Es funktioniert nicht, wenn Ihr Terminal aktiv ist. Versuchen Sie `` sleep 3 && echo -e "\ a" ``, wechseln Sie zu einer anderen App und warten Sie 3 Sekunden. user996142 vor 9 Jahren 0
Ja, das macht es, danke! Wenn ich es richtig verstanden habe, ist das Verhalten, das diese Benachrichtigung auslöst, ein Programm, das im Terminal ausgeführt wird und das Zeichen '\ a' (ASCII-Code 7) an die Standardausgabe / -fehler sendet. HighCommander4 vor 9 Jahren 0
Ja) Dies kann jedoch nicht direkt geschehen, sondern mit dem Befehl `` beep`` aus `` ncurses`` lib. Ncurses liest dann `` termcap``, um die passende Reihenfolge für Ihre Terminals (konsole) zu finden. Diese Sequenz lautet "\ a". Ein anderes Terminal kann jedoch eine andere Reihenfolge haben. user996142 vor 9 Jahren 0
Vielen Dank! Ich fand die Zeile im Quellcode des Programms, das ich ausführte, und das den Piepton ertönte (es machte `fprintf (stderr," \ 07 ")`) und wurde damit los. Die Dinge sind jetzt viel friedlicher :) HighCommander4 vor 9 Jahren 0