Я написал скрипт оболочки, чтобы моя дочь не играла в Minecraft на своем Raspberry Pi больше 60 минут в неделю :). Часть скрипта использует notify-send
всплывающие уведомления, предупреждающие об оставшемся времени. Однако оба notify-send
уведомления notify-send --urgency=critical
появляются под окном Minecraft, так что над заголовком окна виден только небольшой кусочек серого. Почему это происходит, и есть ли что-то еще, что я могу сделать, чтобы сделать видимое предупреждение (если есть альтернативы notify-send
)?
решение1
При использовании «notify-send» внешний вид уведомления определяется двумя факторами:другойкомпоненты:
- the сервер уведомленийкоторый создает всплывающие окна с определенным внешним видом (например, notification-daemon, notify-osd, xfce4-notifyd, dunst, dzenify, lxqt-notificationd);
- оконный менеджер, который в конечном итоге определяет положение и z-порядок каждого окна на рабочем столе.
- («notify-send» сам по себе ничего не показывает, он просто отправляет запрос «показать уведомление».)
Так что либо текущий сервер уведомлений недостаточно старается, чтобы всплывающие окна всегда отображались поверх остальных, либо менеджер окон решил, что полноэкранные окна имеют приоритет в любом случае, либо менеджер окон (или сам Xorg) немного глючит.
Вы можете поэкспериментировать, изменив сервер уведомлений — сначала завершите текущий процесс (и удалите его из «автозапуска» среды рабочего стола), затем установите и запустите новый (например, запустив /usr/lib/notify-osd/notify-osd &
).
Чтобы определить, какой идентификатор процесса в данный момент действует как сервер уведомлений, используйте:
gdbus call -e -d org.freedesktop.DBus \
-o /org/freedesktop/DBus \
-m org.freedesktop.DBus.GetConnectionUnixProcessID \
"'org.freedesktop.Notifications'"
В качестве альтернативы notify-send в целом можно использовать программы, которые создают обычное окно с каким-то текстом – например, xmessage; gxmessage; или zenity. Они, возможно, более склонны вести себя правильно.