Skip to content

calendar@cinnamon.org: Clock applet stops updating after suspend/resume due to broken UPower resume signal #13630

@Drako101

Description

@Drako101

Distribution

Mint 22.3

Package version

6.6.7

Graphics hardware in use

Intel Corporation Core Processor Integrated Graphics Controller hp630

Frequency

Always

Bug description

Distribution: Linux Mint 22 (Zena)
Cinnamon version: 6.6.7
UPower version: 1.90.3
Frequency: Always reproducible

Bug description:
The taskbar clock freezes after resuming from suspend (closing/opening the lid). System time is correct — only the clock applet display is stuck. Manually restarting Cinnamon fixes it until the next suspend cycle.

Root cause:
In /usr/share/cinnamon/applets/calendar@cinnamon.org/applet.js lines 153–158:

this._upClient = new UPowerGlib.Client();
try {
    this._upClient.connect('notify-resume', Lang.bind(this, this._updateClockAndDate));
} catch (e) {
    this._upClient.connect('notify::resume', Lang.bind(this, this._updateClockAndDate));
}

Both notify-resume and notify::resume signals were removed in UPower 1.90.x. The try/catch silently swallows both failures, leaving no resume handler connected. The clock display is never refreshed after wake.

Verified by checking that no PrepareForSleep or equivalent fallback handler exists anywhere in the applet:

grep -r "PrepareForSleep" /usr/share/cinnamon/applets/calendar@cinnamon.org/
(no output)

Suggested fix:
Replace the broken UPower signals with a logind listener:

const LoginManager = imports.misc.loginManager;
LoginManager.getLoginManager().connect('prepareForSleep', (lm, aboutToSuspend) => {
    if (!aboutToSuspend) this._updateClockAndDate();
});

Steps to reproduce

  1. Boot into Linux Mint 22 (Zena) with Cinnamon 6.6.7
  2. Observe the taskbar clock ticking normally
  3. Close the laptop lid (system suspends)
  4. Wait at least 30 seconds
  5. Open the lid (system resumes)
  6. Observe the taskbar clock — it shows the time from before suspend and no longer updates

To confirm it is a display issue only:

  • Open a terminal and run: date
  • System time will be correct, only the clock widget is frozen

To confirm the UPower signals are silently failing:

  • Run: upower --version
  • Run: grep -n "notify-resume|notify::resume" /usr/share/cinnamon/applets/calendar@cinnamon.org/applet.js
  • Both signals at lines 155 and 157 are removed in UPower 1.90.x, causing the try/catch to fail silently with no fallback

Workaround:

  • Press Alt+F2, type r, press Enter (restarts Cinnamon and fixes the clock until next suspend)

Expected behavior

After resuming from suspend, the taskbar clock should immediately resume
updating and display the correct current time, without requiring a manual
Cinnamon restart.

The applet should listen for the system resume event via a working signal
(such as logind's PrepareForSleep D-Bus signal) and call _updateClockAndDate()
upon wake to restart its update loop.

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions