Работаю с Unity 16.04, и после каждого входа в систему в правом верхнем углу экрана появляется раздражающее уведомление о наличии обновлений.
Это не только раздражает, но и зачастую не соответствует действительности, поскольку я задерживаю некоторые пакеты, которые не должны обновляться, но уведомителю, похоже, все равно.
Как отключить уведомления о доступных обновлениях?
Я не хочу полностью отключать notify-osd. Кроме того, я уже отключил автоматическую проверку обновлений, так как я делаю это вручную с помощью apt
в любом случае.
решение1
В соответствии сэтот пост Fedoraforum.org, вы можете попробовать отключить автоматическую загрузку обновлений ПО GNOME:
gsettings set org.gnome.software download-updates false
Описание этого ключа гласит:
Если эта функция включена, программное обеспечение GNOME автоматически загружает обновления в фоновом режиме и предлагает пользователю установить их, когда они будут готовы.
У меня нет обновлений для тестирования.
решение2
Как перехватывать (убивать) только определенные уведомления, используя dbus-monitor
Вы можете автоматически убитьспецифическийсообщения, если у вас есть определенная идентификационная строка, которая встречается в тексте уведомления. В этом случае, вероятно, подойдет "обновление".
Как настроить
Скопируйте приведенный ниже скрипт в пустой файл:
#!/bin/bash string=$1 match="update" if [[ $string == *$match* ]] then pkill notify-osd fi
Сохраните его как
killnot.sh
. Это уничтожит,notify-osd
если в уведомлении встречается определенная строка. Отредактируйте строкуmatch="update"
, чтобы отразить идентификационную строку в уведомлении(ях), которое вы хотите уничтожить.Сделать скрипт исполняемым.Скопируйте приведенный ниже скрипт в пустой файл:
#!/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
.Сделать скрипт исполняемым.Протестируйте установку с помощью команды:
/path/to/monitor_notifs.sh
Для проверки выполните в другом терминале команду:
notify-send <identifying_string>
Сообщение не должно появляться.
Если все работает нормально, добавьте его в автозагрузку приложений: 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