linuxmint / linuxmint/cinnamon

[notifications@cinnamon.org] notifications are lost when no screen is found

Open
#12,303 9 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

BUG
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
  1. open a shell -> use notify-send "test" to create a notification -> yupp, works perfectly fine. i see the notification and also hear a ping.
  2. type notify-send "test" again but do not press enter yet
  3. 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.
  4. 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)
  5. 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.