Отключить всплывающее уведомление gnome-software (notify-osd) о доступных обновлениях

Отключить всплывающее уведомление gnome-software (notify-osd) о доступных обновлениях

Работаю с Unity 16.04, и после каждого входа в систему в правом верхнем углу экрана появляется раздражающее уведомление о наличии обновлений.

Это не только раздражает, но и зачастую не соответствует действительности, поскольку я задерживаю некоторые пакеты, которые не должны обновляться, но уведомителю, похоже, все равно.

Как отключить уведомления о доступных обновлениях?

Я не хочу полностью отключать notify-osd. Кроме того, я уже отключил автоматическую проверку обновлений, так как я делаю это вручную с помощью aptв любом случае.

решение1

В соответствии сэтот пост Fedoraforum.org, вы можете попробовать отключить автоматическую загрузку обновлений ПО GNOME:

gsettings set org.gnome.software download-updates false

Описание этого ключа гласит:

Если эта функция включена, программное обеспечение GNOME автоматически загружает обновления в фоновом режиме и предлагает пользователю установить их, когда они будут готовы.

У меня нет обновлений для тестирования.

решение2

Как перехватывать (убивать) только определенные уведомления, используя dbus-monitor

Вы можете автоматически убитьспецифическийсообщения, если у вас есть определенная идентификационная строка, которая встречается в тексте уведомления. В этом случае, вероятно, подойдет "обновление".

Как настроить

  1. Скопируйте приведенный ниже скрипт в пустой файл:

    #!/bin/bash
    
    string=$1
    match="update"
    
    if [[ $string == *$match* ]]
      then
        pkill notify-osd
    fi
    

    Сохраните его как killnot.sh. Это уничтожит, notify-osdесли в уведомлении встречается определенная строка. Отредактируйте строку match="update", чтобы отразить идентификационную строку в уведомлении(ях), которое вы хотите уничтожить.Сделать скрипт исполняемым.

  2. Скопируйте приведенный ниже скрипт в пустой файл:

    #!/bin/bash
    
    scriptpath=/home/jacob/Bureaublad/killnot.sh
    
    dbus-monitor "interface='org.freedesktop.Notifications'" | \
    grep --line-buffered "string" | \
    grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v | \
    grep --line-buffered '.*(?=string)|(?<=string).*' -oPi | \
    grep --line-buffered -v '^\s*$' | \
    xargs -I '{}' $scriptpath {}
    

    Отредактируйте строку scriptpath=/home/jacob/Bureaublad/killnot.shтак, чтобы она отражала реальный путь к скрипту 1 ( killnot.sh), и сохраните ее как monitor_notifs.sh.Сделать скрипт исполняемым.

  3. Протестируйте установку с помощью команды:

    /path/to/monitor_notifs.sh
    

    Для проверки выполните в другом терминале команду:

    notify-send <identifying_string>
    

    Сообщение не должно появляться.

  4. Если все работает нормально, добавьте его в автозагрузку приложений: Dash > Автозагрузка приложений > Добавить. Добавьте команду:

    /path/to/monitor_notifs.sh
    

Примечания/объяснения

Скрипт monitor_notifs.shиспользует dbus-monitorтак же, какэтот ответ. Запуск в фоновом режиме означаетничегов вашу систему и только запускает уведомления.

Эти уведомления, когда они происходят, передаются как аргумент скрипту killnot.sh, который ничего не делает,пока неидентифицирующая строка находится в тексте уведомления. В этом случае он убьет notify-osd.

Немного отредактировав первый скрипт, вы можете настроить уведомления об удалении по нескольким ключевым словам одновременно.


EDIT запускайте команду только до тех пор, пока не появится пузырек

Еслиуведомление появляется только после входа в систему, как вы упомянули в своем вопросе, вы можете «умнее» решение, чтобы оно само убивало себя после того, как оно перехватило уведомление об обновлении:

Если вы назвали скрипты в настройке именно так, как указано, добавьте в killnot.shскрипт одну строку:

pkill -P "$( pgrep -f run_intercept )"

Тогда сценарий будет выглядеть так:

#!/bin/bash
string=$1

match="update"
if [[ $string == *$match* ]]
  then
    pkill notify-osd
    pkill -P "$( pgrep -f run_intercept )"
fi

Основной скрипт run_interceptбудет завершен после того, как выполнит свою работу, и у вас больше не будет запущенных фоновых скриптов.

По моему мнению, в этой ситуации ближе к чистоте не подберешься.

решение3

Я нашел файл /etc/xdg/autostart/update-notifier.desktop, который автоматически запускает update-notifierслужбу. Как вы знаете или не знаете, любой .desktopфайл в /etc/xdg/autostartкаталоге запустит любую команду, заданную Exec=параметром.

Все, что вам нужно сделать, чтобы отключить его, это сделать mv /etc/xdg/autostart/update-notifier.desktop /etc/xdg/autostart/update-notifier.desktop.bakи вуаля! Повторное включение - наоборот.

решение4

Исправлена ​​ошибка в последней версии gnome(ubuntu)-softwarehttps://bugs.launchpad.net/ubuntu/+source/gnome-software/+bug/1592382

Связанный контент