Ubuntu默认无图形界面调整通知时长选项,需通过命令行或配置修改;notify-send的-t参数(毫秒)可临时控制单次通知,全局修改需dconf或换用dunst等替代服务。

Ubuntu 默认不提供图形界面直接调整托盘通知时长的选项,必须通过命令行或配置文件修改;notify-send 的 -t 参数只影响单次通知,全局生效需改 GNOME 设置或 D-Bus 配置。
notify-send 发送通知时指定显示时长
这是最常用、最直接的方式,适用于脚本、定时任务或临时调试。它不改变系统默认值,但能精确控制某条通知的停留时间。
-
-t参数单位是毫秒,不是秒 —— 写成-t 5000是 5 秒,-t 12000是 12 秒;省略该参数则使用 GNOME 默认的 5 秒 - 必须配合
DISPLAY和DBUS_SESSION_BUS_ADDRESS环境变量才能在 cron 或后台进程里正常弹出,否则静默失败 - 示例:
notify-send -t 8000 "备份完成" "已保存至 /home/user/backup" - 注意:GNOME 42+ 版本对
-t有上限限制(通常 ≤ 10000 毫秒),超出会被自动截断,不是 bug,是桌面环境主动限制
修改 GNOME 全局通知超时(需 DConf 编辑)
GNOME 桌面本身没有“通知时长”开关,但底层使用 org.gnome.desktop.notifications schema 控制,默认值不可见,需手动写入。
- 执行命令:
dconf write /org/gnome/desktop/notifications/timeout 8000(单位仍是毫秒) - 该设置仅对 GNOME 原生通知生效,不影响 Snap 应用、Flatpak 应用或第三方通知服务(如 dunst)
- 若使用的是 Ubuntu 22.04 LTS 及更新版本(GNOME 42+),此键值可能被忽略 —— GNOME 已移除对该参数的支持,实际行为由 Shell 内部策略决定
- 验证是否生效:
dconf read /org/gnome/desktop/notifications/timeout,返回 null 表示未设置或被忽略
使用替代通知守护进程(如 dunst)接管时长控制
当 GNOME 原生机制不可靠或需要更细粒度控制时,替换通知服务是最彻底的方案。dunst 轻量、可配、支持 per-app 规则,且完全绕过 GNOME 限制。
- 安装:
sudo apt install dunst - 停用 GNOME 原生服务:
systemctl --user mask gnome-notifications - 启用 dunst:
systemctl --user enable --now dunst - 配置文件位置:
~/.config/dunst/dunstrc,关键项:timeout = 10(单位为秒,支持小数如timeout = 7.5) - 注意:部分 Snap 应用(如 Slack、Spotify)因沙盒限制,无法向 dunst 发送通知,需额外配置
--no-sandbox或改用 .deb 版本
真正容易被忽略的点是:Ubuntu 桌面通知行为高度依赖 GNOME 版本和会话类型(Wayland vs X11)。同一套 notify-send -t 命令,在 Ubuntu 20.04(X11 + GNOME 3.36)和 Ubuntu 24.04(Wayland + GNOME 46)上表现可能完全不同 —— 不是配置错了,而是底层协议变了。调试图标通知前,先确认 echo $XDG_SESSION_TYPE 和 gnome-shell --version。


















