私は Debian Testing で KDE を実行しています。
時々、ターミナル (Konsole) で実行されているプログラムが、「セッション シェルのベル」という形式のシステム通知をトリガーします。
これらの通知は何がトリガーされますか?
注: 無効にする方法を尋ねているのではありません。Konsole -> 設定 -> 通知の構成に無効にするオプションがあることは知っています。通知をトリガーするプログラムの一部を変更して通知をトリガーしないようにするか、別の条件でトリガーするようにする可能性を考慮して、通知をトリガーする動作を最初に尋ねています。
答え1
これが、Konsole ターミナル エミュレータがベルを解釈する方法であると私は考えています。
bashで実行してみる
sleep 3 && echo -e "\a"
次に別のアプリに切り替えて 3 秒待ちます。
何年も前、実際の端末が大型コンピュータに接続されていた頃は、そのような端末にコマンドを送信するための「エスケープ シーケンス」と呼ばれる特別なプロトコルがありました。色を変更したり、新しい行に移動したり、ベルを鳴らしたりするシーケンスがあります。最初の端末には、長時間実行されているタスクが終了したことをオペレータに通知するための実際のベルが装備されていました。
最新の端末エミュレーター (konsole、xterm、またはテキスト モードの場合は実際のコンソール) は、このような端末をエミュレートするだけで、このようなシーケンスを理解します。
env TERM
. 変数は、エミュレートされた端末の名前を示します。ncurses
then termcap
(またはterminfo
) ファイルなどの一部のライブラリは、この端末でどのシーケンスが何に使用されているかを調べるために使用します。