Надежные диалоговые окна оповещений из оболочки

Я хотел бы, чтобы сообщение появилось в ответ на различные системные события, в основном, чтобы иметь возможность устанавливать напоминания для себя из сеанса оболочки. Есть несколько способов сделать это; zenity кажется наиболее полированным. Тем не менее, я нашел по крайней мере две проблемы с zenity:

Сообщения не отображаются на всех рабочих пространствах. Я попытался использовать опцию gtk --screen, чтобы контролировать это, но они просто появляются в текущей рабочей области независимо. Поэтому, если я переключаю рабочие области по мере появления сообщения, я его не увижу. Сообщения не отображаются над всеми другими окнами. В частности, если я использую guake, новое окно zenity появится под окном guake, и я не смогу его увидеть.

Я попробовал несколько других приложений некоторое время назад. И gmessage, и xmessage показали проблему 1; gmessage также показала проблему 2. Я обнаружил, что kalarm, который может быть написан из командной строки, работал приемлемо, но я стараюсь избегать запуска KDE-стека, если это возможно, и предпочтет что-то легкое с помощью zenity.

Кажется, что можно решить, что эти проблемы можно решить, установив WM_CLASS, но я немного над головой. Также возможно внести изменения в окно после запуска с помощью скрипта, но опять же я не уверен, где искать ресурсы.

update

Как было предложено by @geirha, я изучил использование notify-send (через пакет libnotify-bin, который, как представляется, является клиентом для уведомления-osd). В этой структуре существует множество проблем, для которых я подал несколько отчетов об ошибках. Я надеюсь, что devilspie может обеспечить обходные пути для некоторых или всех этих проблем или что есть еще одна система уведомлений, которая работает более надежно.

6
задан 31 March 2011 в 07:24

9 ответов

Возможно, вы хотите notify-send?

В противном случае есть devilspie, который позволяет вам говорить такие вещи, как «все окна с этим именем (или этого класса или с этой ролью) должны быть видны на все рабочие пространства ".

3
ответ дан 25 July 2018 в 22:24
  • 1
    Есть ли способ получить уведомления, отправленные notify-send для отображения до тех пор, пока они не будут подтверждены? Согласно spec , устанавливая неотложность критическому, следует сделать это, но notify-osd, похоже, не соблюдает эти правила. Когда я посылаю notify-send -u critical Testing "This is a test of the emergency broadcast system", он отображается в течение 10 секунд, а затем исчезает. – intuited 31 March 2011 в 06:22
  • 2
    Ahh, ладно .. похоже, что установка --expire-time на ноль сделает это. В первый раз, когда я попробовал, я думал, что на самом деле он отображался в течение 0 секунд, потому что я этого не видел. Он был скрыт под гвоздем. Уведомления со временем истечения срока действия отображаются выше guake (с использованием совершенно другой кожи). – intuited 31 March 2011 в 06:27

Возможно, вы хотите notify-send?

В противном случае есть devilspie, который позволяет вам говорить такие вещи, как «все окна с этим именем (или этого класса или с этой ролью) должны быть видны на все рабочие пространства ".

3
ответ дан 26 July 2018 в 21:19
  • 1
    Есть ли способ получить уведомления, отправленные notify-send для отображения до тех пор, пока они не будут подтверждены? Согласно spec , устанавливая неотложность критическому, следует сделать это, но notify-osd, похоже, не соблюдает эти правила. Когда я посылаю notify-send -u critical Testing "This is a test of the emergency broadcast system", он отображается в течение 10 секунд, а затем исчезает. – intuited 31 March 2011 в 06:22
  • 2
    Ahh, ладно .. похоже, что установка --expire-time на ноль сделает это. В первый раз, когда я попробовал, я думал, что на самом деле он отображался в течение 0 секунд, потому что я этого не видел. Он был скрыт под гвоздем. Уведомления со временем истечения срока действия отображаются выше guake (с использованием совершенно другой кожи). – intuited 31 March 2011 в 06:27

Возможно, вы хотите notify-send?

В противном случае есть devilspie, который позволяет вам говорить такие вещи, как «все окна с этим именем (или этого класса или с этой ролью) должны быть видны на все рабочие пространства ".

3
ответ дан 31 July 2018 в 12:25
  • 1
    Есть ли способ получить уведомления, отправленные notify-send для отображения до тех пор, пока они не будут подтверждены? Согласно spec , устанавливая неотложность критическому, следует сделать это, но notify-osd, похоже, не соблюдает эти правила. Когда я посылаю notify-send -u critical Testing "This is a test of the emergency broadcast system", он отображается в течение 10 секунд, а затем исчезает. – intuited 31 March 2011 в 06:22
  • 2
    Ahh, ладно .. похоже, что установка --expire-time на ноль сделает это. В первый раз, когда я попробовал, я думал, что на самом деле он отображался в течение 0 секунд, потому что я этого не видел. Он был скрыт под гвоздем. Уведомления со временем истечения срока действия отображаются выше guake (с использованием совершенно другой кожи). – intuited 31 March 2011 в 06:27

Возможно, вы хотите notify-send?

В противном случае есть devilspie, который позволяет вам говорить такие вещи, как «все окна с этим именем (или этого класса или с этой ролью) должны быть видны на все рабочие пространства ".

3
ответ дан 2 August 2018 в 03:51
  • 1
    Есть ли способ получить уведомления, отправленные notify-send для отображения до тех пор, пока они не будут подтверждены? Согласно spec , устанавливая неотложность критическому, следует сделать это, но notify-osd, похоже, не соблюдает эти правила. Когда я посылаю notify-send -u critical Testing "This is a test of the emergency broadcast system", он отображается в течение 10 секунд, а затем исчезает. – intuited 31 March 2011 в 06:22
  • 2
    Ahh, ладно .. похоже, что установка --expire-time на ноль сделает это. В первый раз, когда я попробовал, я думал, что на самом деле он отображался в течение 0 секунд, потому что я этого не видел. Он был скрыт под гвоздем. Уведомления со временем истечения срока действия отображаются выше guake (с использованием совершенно другой кожи). – intuited 31 March 2011 в 06:27

Возможно, вы хотите notify-send?

В противном случае есть devilspie, который позволяет вам говорить такие вещи, как «все окна с этим именем (или этого класса или с этой ролью) должны быть видны на все рабочие пространства ".

3
ответ дан 4 August 2018 в 19:55
  • 1
    Есть ли способ получить уведомления, отправленные notify-send для отображения до тех пор, пока они не будут подтверждены? Согласно spec , устанавливая неотложность критическому, следует сделать это, но notify-osd, похоже, не соблюдает эти правила. Когда я посылаю notify-send -u critical Testing "This is a test of the emergency broadcast system", он отображается в течение 10 секунд, а затем исчезает. – intuited 31 March 2011 в 06:22
  • 2
    Ahh, ладно .. похоже, что установка --expire-time на ноль сделает это. В первый раз, когда я попробовал, я думал, что на самом деле он отображался в течение 0 секунд, потому что я этого не видел. Он был скрыт под гвоздем. Уведомления со временем истечения срока действия отображаются выше guake (с использованием совершенно другой кожи). – intuited 31 March 2011 в 06:27

Возможно, вы хотите notify-send ?

В противном случае существует devilspie , что позволяет вам говорить такие вещи, как «все окна с таким именем ( или этого класса или с этой ролью), должны быть видны на всех рабочих пространствах ».

3
ответ дан 6 August 2018 в 03:57

Возможно, вы хотите notify-send ?

В противном случае существует devilspie , что позволяет вам говорить такие вещи, как «все окна с таким именем ( или этого класса или с этой ролью), должны быть видны на всех рабочих пространствах ».

3
ответ дан 7 August 2018 в 21:55

Возможно, вы хотите notify-send ?

В противном случае существует devilspie , что позволяет вам говорить такие вещи, как «все окна с таким именем ( или этого класса или с этой ролью), должны быть видны на всех рабочих пространствах ».

3
ответ дан 10 August 2018 в 10:10

Возможно, вы хотите notify-send ?

В противном случае существует devilspie , что позволяет вам говорить такие вещи, как «все окна с таким именем ( или этого класса или с этой ролью), должны быть видны на всех рабочих пространствах ».

3
ответ дан 13 August 2018 в 16:31
  • 1
    Есть ли способ получить уведомления, отправленные функцией notify-send для отображения до тех пор, пока не будут подтверждены? Согласно spec , устанавливая неотложность критическому, следует сделать это, но notify-osd, похоже, не соблюдает эти правила. Когда я отправляю уведомление-отправлять -u критическое тестирование «Это тест системы экстренного вещания» , он отображается в течение 10 секунд, а затем исчезает. – intuited 31 March 2011 в 06:22
  • 2
    Ahh, ладно .. похоже, что установка - expire-time на ноль сделает это. В первый раз, когда я попробовал, я думал, что на самом деле он отображался в течение 0 секунд, потому что я этого не видел. Он был скрыт под гвоздем. Уведомления со временем истечения срока действия отображаются выше guake (с использованием совершенно другой кожи). – intuited 31 March 2011 в 06:27

Другие вопросы по тегам:

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