禁用 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.shnotify-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

对第一个脚本进行少许编辑,您可以同时设置多个关键字的终止通知。


编辑仅运行命令直到气泡出现

如果通知仅在登录后出现,正如您在问题中提到的那样,您可以在解决方案拦截更新通知后使其“智能化”以自行终止:

如果您在设置中完全按照指示命名脚本,则在脚本中添加一行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)软件最新版本上的错误已修复https://bugs.launchpad.net/ubuntu/+source/gnome-software/+bug/1592382

相关内容