linuxmint / linuxmint/cinnamon
[notifications@cinnamon.org] notifications are lost when no screen is found
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 5.6k
- Forks
- 915
- Avg merge
- 5d 22h
- Merged PRs (30d)
- 3
Description
Distribution
Mint 21.3
Package version
6.0.4
Graphics hardware in use
Intel AlderLake-S GT1
Frequency
Always
Bug description
i dont get any notifications when no screen is detected, e.g. because it's switched off temporarily. those (maybe critical) notifications go to the void and are lost.
Steps to reproduce
- open a shell -> use
notify-send "test"to create a notification -> yupp, works perfectly fine. i see the notification and also hear a ping. - type
notify-send "test"again but do not press enter yet - disconnect your monitor(s) (i.e. pull all HDMI / Displayport cables). for the sake of reproducing the issue, this is just the safest way. my old S27B970 monitor triggers the issue when just switched off while connected via DP. it does not trigger the issue while connected via HDMI. so there are subtle differences what 'switched off' really means. thus pulling the cables is the safe bet to reproduce this.
- press enter to send the test message -> nope, no ping (note: in my setup sound is not coming over the monitor but plain old speakers connected via audio jack to the board)
- reconnect your monitor -> nope, no notification popup or notification count in the tray
Expected behavior
notification should be shown as soon as the monitor is reconnected. sound notification should be played while screen is switched off.
otherwise (critical) notifications are lost without the users even knowing that they missed something. this issue might even be triggerd by power saving (i.e. blank screen after x minutes of inactivity -> monitor is going to sleep mode).
Additional information
System:
Kernel: 6.5.0-44-generic x86_64 bits: 64 compiler: N/A Desktop: Cinnamon 6.0.4 tk: GTK 3.24.33
wm: muffin vt: 7 dm: LightDM 1.30.0 Distro: Linux Mint 21.3 Virginia base: Ubuntu 22.04 jammy
Graphics:
Device-1: Intel AlderLake-S GT1 vendor: Gigabyte driver: i915 v: kernel ports: active: DP-1
empty: HDMI-A-1,HDMI-A-2 bus-ID: 00:02.0 chip-ID: 8086:4680 class-ID: 0300
Display: x11 server: X.Org v: 1.21.1.4 driver: X: loaded: modesetting unloaded: fbdev,vesa
gpu: i915 display-ID: :0 screens: 1
Screen-1: 0 s-res: 2560x1440 s-dpi: 96 s-size: 677x381mm (26.7x15.0") s-diag: 777mm (30.6")
Monitor-1: DP-1 model: Samsung S27B970 serial: <filter> res: 2560x1440 hz: 60 dpi: 126
size: 518x324mm (20.4x12.8") diag: 611mm (24.1") modes: max: 2560x1440 min: 720x400
OpenGL: renderer: Mesa Intel UHD Graphics 770 (ADL-S GT1)
v: 4.6 Mesa 23.2.1-1ubuntu3.1~22.04.2 direct render: Yes
notificatrion config:
system settings:
- enable notifications -> true
- remove notifications after their timeout ist reached -> false
- show notifications on the bottom side of the screen -> false
- monitor to use for displaying notifications -> primary (tested all options, makes no difference)
- notification duration -> 4
- media keys osd size -> medium
notification settings:
- ignore transient notifications -> false
- show empty tray -> false
- show the number of notifications -> true
- keyboard shortcuts -> none assigned
~/.xsession-errors shows errors when this issue occurs:
(cinnamon:1807): Gjs-WARNING **: 08:31:07.124: JS ERROR: Exception in callback for signal: notify: TypeError: this._monitor is undefined
_showNotification@/usr/share/cinnamon/js/ui/messageTray.js:986:24
_updateState@/usr/share/cinnamon/js/ui/messageTray.js:924:22
_onNotify@/usr/share/cinnamon/js/ui/messageTray.js:886:14
_callHandlers@resource:///org/gnome/gjs/modules/core/_signals.js:130:42
_emit@resource:///org/gnome/gjs/modules/core/_signals.js:119:10
notify@/usr/share/cinnamon/js/ui/messageTray.js:716:14
processNotification@/usr/share/cinnamon/js/ui/notificationDaemon.js:643:14
_notifyForSource@/usr/share/cinnamon/js/ui/notificationDaemon.js:515:16
NotifyAsync/<@/usr/share/cinnamon/js/ui/notificationDaemon.js:409:18
asyncCallback@resource:///org/gnome/gjs/modules/core/overrides/Gio.js:115:22
** (cinnamon:1807): CRITICAL **: 08:31:09.401: na_tray_manager_manage_screen: assertion 'manager->screen == NULL' failed
Gjs-Message: 08:31:09.559: JS LOG: calendar@cinnamon.org: Calendar events supported.
Gjs-Message: 08:31:09.588: JS LOG: Unknown network device type, is 14
Gjs-Message: 08:31:09.592: JS LOG: [LookingGlass/info] Adding XAppStatusIcon: mintUpdate.py (:1.114/org/x/StatusIcon/Icon)
** (csd-power:1677): CRITICAL **: 08:31:09.594: abs_to_percentage: assertion 'max > min' failed
Gjs-Message: 08:31:09.595: JS LOG: [LookingGlass/info] Adding XAppStatusIcon: mintreport (:1.130/org/x/StatusIcon/Icon)
Gjs-Message: 08:31:09.597: JS LOG: [LookingGlass/info] Adding XAppStatusIcon: process-monitor (:1.130/org/x/StatusIcon/Icon_1)
Gjs-Message: 08:31:09.599: JS LOG: [LookingGlass/info] Hiding XAppStatusIcon (we have an applet): nm-applet
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the notification flow in js/ui/messageTray.js and js/ui/notificationDaemon.js, using the reported TypeError in _showNotification as the entry point. Reproduce the issue with notify-send while disconnecting the monitor, then verify that notifications remain available and are displayed or played after the monitor is reconnected. Confirm the related error no longer occurs in the notification path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 68/100