Что вызывает уведомления вида «Звонок в сессию Shell» в KDE?

4964
HighCommander4

Я использую KDE для тестирования Debian.

Время от времени программы, запущенные в терминале (Konsole), запускают системные уведомления в форме «Звонок в сессионной оболочке».

Что вызывает эти уведомления?

Примечание: я не спрашиваю, как их отключить - я знаю, что есть возможность сделать это в Konsole -> Настройки -> Настроить уведомления. Я спрашиваю, какое поведение вызывает их в первую очередь, с целью возможного изменения некоторых программ, которые запускают их, чтобы не запускать их, или запускать их в других условиях.

6

1 ответ на вопрос

5
user996142

Я полагаю, что именно так эмулятор терминала konsole интерпретирует звонки.

Попробуй запустить в bash

sleep 3 && echo -e "\a" 

Затем переключитесь на другое приложение и подождите 3 секунды.

Много-много лет назад, когда реальные терминалы были подключены к большим компьютерам, для отправки команд на такие терминалы существовал специальный протокол, называемый «escape-последовательностями». Существуют последовательности для изменения цвета, перехода к новой строке или звонка. Первые терминалы были оборудованы настоящими звонками, чтобы уведомить оператора о том, что какое-то длительное задание окончено.

Любой современный эмулятор терминала (konsole, xterm или реальная консоль, когда вы находитесь в текстовом режиме) просто эмулирует такой терминал и, следовательно, понимает такие последовательности.

TERMОкр. переменная сообщает имя эмулируемого терминала. Некоторые библиотеки, например, ncursesзатем используют termcap(или terminfo) файл, чтобы найти, какая последовательность используется для чего на этом терминале.

Я пробовал это, но `echo -e" \ a "` не выдает уведомления. HighCommander4 8 лет назад 0
Это не работает, когда ваш терминал активен. Попробуйте `` sleep 3 && echo -e "\ a" ``, затем переключитесь на другое приложение и подождите 3 секунды. user996142 8 лет назад 0
Да, это делает, спасибо! Итак, если я правильно понимаю, поведение, которое вызывает это уведомление, заключается в том, что любая программа, работающая в терминале, отправляет символ '\ a' (код ASCII 7) на стандартный вывод / ошибку? HighCommander4 8 лет назад 0
Да) Но он может сделать это не напрямую, а используя команду `` beep`` из `` ncurses`` lib. Затем Ncurses читает `` termcap``, чтобы найти подходящую последовательность для вашего термина (konsole). Эта последовательность "\ a". Но некоторые другие терминалы могут иметь другую последовательность. user996142 8 лет назад 0
Спасибо! Я нашел строку в исходном коде программы, которую я запускал, которая выполняла звуковой сигнал (она выполняла `fprintf (stderr," \ 07 ")`) и избавился от нее. Теперь все гораздо спокойнее :) HighCommander4 8 лет назад 0

Похожие вопросы