Maybe a little off-topic, because I use X11 and Cinnamon (and dracut) with EOS, but I feel it a little unfair to generalize here. EOS (and Arch) in general do have a well-working suspend, suspend-then-hibernate, hybrid-sleep and hibernate.
Basically, it’s a UEFI/BIOS and kernel thing, and sometimes devices or their drivers interfere, or there’s simply no appropriate swap space set up.
Unfortunately, we couldn’t see a picture of your display misbehaving after resume, but from what you say in the first post I would guess that either
- the driver doesn’t re-read the monitor EDID upon resume and sets correct parameters like frame rate, or
- not all video memory got saved/restored.
Does the journal show successful freezing/thawing? Depending on the mode used (I use suspend-then-hibernate), you could check what happened since the last boot like so (example from my Thinkpad shown):
$ journalctl -b 0 -u systemd-suspend-then-hibernate.service
Aug 22 02:34:33 t14-mch systemd[1]: Starting System Suspend then Hibernate...
Aug 22 02:34:33 t14-mch systemd-sleep[93494]: Successfully froze unit 'user.slice'.
Aug 22 02:34:33 t14-mch systemd-sleep[93494]: Performing sleep operation 'suspend'...
Aug 22 07:58:28 t14-mch systemd-sleep[93494]: System returned from sleep operation 'suspend-then-hibernate'.
Aug 22 07:58:28 t14-mch systemd-sleep[93494]: Successfully thawed unit 'user.slice'.
Aug 22 07:58:28 t14-mch systemd[1]: systemd-suspend-then-hibernate.service: Deactivated successfully.
Aug 22 07:58:28 t14-mch systemd[1]: Finished System Suspend then Hibernate.
Here, my system went to suspend at 02:34:33 and I opened the laptops’s lid again at 07:58:28. No wakeups/sleeps in between are shown because it knew it was on AC. My other notebook (on battery) periodically awakens every 2–3 hours to check for battery state and whether it should hibernate now. [Nice side effect: It’s awake long enough to report battery state back to my Home Assistant, which can yell at me to charge it if needed.]
If needed, you could investigate what else happened by specifying a time, like so:
$ journalctl -b 0 --since "02:34:33"
Aug 22 02:34:33 t14-mch systemd[1]: Reached target Sleep.
Aug 22 02:34:33 t14-mch systemd[1]: Starting System Suspend then Hibernate...
Aug 22 02:34:33 t14-mch systemd[1]: user@1000.service: Unit now frozen-by-parent.
Aug 22 02:34:33 t14-mch systemd[1]: session-2.scope: Unit now frozen-by-parent.
Aug 22 02:34:33 t14-mch systemd[1]: user.slice: Unit now frozen.
Aug 22 02:34:33 t14-mch systemd[1]: user-1000.slice: Unit now frozen-by-parent.
Aug 22 02:34:33 t14-mch systemd-sleep[93494]: Successfully froze unit 'user.slice'.
Aug 22 02:34:33 t14-mch systemd-sleep[93494]: Performing sleep operation 'suspend'...
Aug 22 02:34:33 t14-mch kernel: PM: suspend entry (deep)
Aug 22 02:34:33 t14-mch kernel: Filesystems sync: 0.005 seconds
This should give some indication of what went wrong.
A typical resume (opening laptop lid) would look like this
$ journalctl -b 0 --since "07:58:28"
Aug 22 07:58:28 t14-mch kernel: Freezing user space processes
Aug 22 07:58:28 t14-mch kernel: Freezing user space processes completed (elapsed 0.002 seconds)
Aug 22 07:58:28 t14-mch kernel: OOM killer disabled.
Aug 22 07:58:28 t14-mch kernel: Freezing remaining freezable tasks
Aug 22 07:58:28 t14-mch kernel: Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
Aug 22 07:58:28 t14-mch kernel: printk: Suspending console(s) (use no_console_suspend to debug)
Aug 22 07:58:28 t14-mch kernel: e1000e: EEE TX LPI TIMER: 00000011
Aug 22 07:58:28 t14-mch kernel: ACPI: EC: interrupt blocked
Aug 22 07:58:28 t14-mch kernel: ACPI: PM: Preparing to enter system sleep state S3
Aug 22 07:58:28 t14-mch kernel: ACPI: EC: event blocked
Aug 22 07:58:28 t14-mch kernel: ACPI: EC: EC stopped
Aug 22 07:58:28 t14-mch kernel: ACPI: PM: Saving platform NVS memory
Aug 22 07:58:28 t14-mch kernel: Disabling non-boot CPUs ...
Aug 22 07:58:28 t14-mch kernel: smpboot: CPU 7 is now offline
Aug 22 07:58:28 t14-mch kernel: smpboot: CPU 6 is now offline
Aug 22 07:58:28 t14-mch kernel: smpboot: CPU 5 is now offline
Aug 22 07:58:28 t14-mch kernel: smpboot: CPU 4 is now offline
Aug 22 07:58:28 t14-mch kernel: smpboot: CPU 3 is now offline
Aug 22 07:58:28 t14-mch kernel: smpboot: CPU 2 is now offline
Aug 22 07:58:28 t14-mch kernel: smpboot: CPU 1 is now offline
Aug 22 07:58:28 t14-mch kernel: ACPI: PM: Low-level resume complete
Aug 22 07:58:28 t14-mch kernel: ACPI: EC: EC started
Aug 22 07:58:28 t14-mch kernel: ACPI: PM: Restoring platform NVS memory
Aug 22 07:58:28 t14-mch kernel: Enabling non-boot CPUs ...
Aug 22 07:58:28 t14-mch kernel: smpboot: Booting Node 0 Processor 1 APIC 0x2
Aug 22 07:58:28 t14-mch kernel: CPU1 is up
Aug 22 07:58:28 t14-mch kernel: smpboot: Booting Node 0 Processor 2 APIC 0x4
Aug 22 07:58:28 t14-mch kernel: CPU2 is up
Aug 22 07:58:28 t14-mch kernel: smpboot: Booting Node 0 Processor 3 APIC 0x6
Aug 22 07:58:28 t14-mch kernel: CPU3 is up
Aug 22 07:58:28 t14-mch kernel: smpboot: Booting Node 0 Processor 4 APIC 0x1
Aug 22 07:58:28 t14-mch kernel: CPU4 is up
Aug 22 07:58:28 t14-mch kernel: smpboot: Booting Node 0 Processor 5 APIC 0x3
Aug 22 07:58:28 t14-mch kernel: CPU5 is up
Aug 22 07:58:28 t14-mch kernel: smpboot: Booting Node 0 Processor 6 APIC 0x5
Aug 22 07:58:28 t14-mch kernel: CPU6 is up
Aug 22 07:58:28 t14-mch kernel: smpboot: Booting Node 0 Processor 7 APIC 0x7
Aug 22 07:58:28 t14-mch kernel: CPU7 is up
Aug 22 07:58:28 t14-mch kernel: ACPI: PM: Waking up from system sleep state S3
Aug 22 07:58:28 t14-mch kernel: ACPI: EC: interrupt unblocked
Aug 22 07:58:28 t14-mch kernel: ACPI: EC: event unblocked
Aug 22 07:58:28 t14-mch kernel: iwlwifi 0000:00:14.3: Rfkill was toggled during suspend
Aug 22 07:58:28 t14-mch kernel: xhci_hcd 0000:2b:00.0: xHC error in resume, USBSTS 0x401, Reinit
Aug 22 07:58:28 t14-mch kernel: usb usb3: root hub lost power or was reset
Aug 22 07:58:28 t14-mch kernel: usb usb4: root hub lost power or was reset
Aug 22 07:58:28 t14-mch kernel: nvme nvme0: 8/0/0 default/read/poll queues
Aug 22 07:58:28 t14-mch kernel: usb 1-8: reset high-speed USB device number 88 using xhci_hcd
Aug 22 07:58:28 t14-mch kernel: usb 1-1: reset full-speed USB device number 2 using xhci_hcd
Aug 22 07:58:28 t14-mch kernel: pci_bus 0000:05: Allocating resources
Aug 22 07:58:28 t14-mch kernel: pci_bus 0000:2b: Allocating resources
Aug 22 07:58:28 t14-mch kernel: mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
Aug 22 07:58:28 t14-mch kernel: pci_bus 0000:05: Allocating resources
Aug 22 07:58:28 t14-mch kernel: pci_bus 0000:2b: Allocating resources
Aug 22 07:58:28 t14-mch kernel: OOM killer enabled.
Aug 22 07:58:28 t14-mch kernel: Restarting tasks: Starting
Aug 22 07:58:28 t14-mch kernel: usb 1-9: USB disconnect, device number 90
Aug 22 07:58:28 t14-mch kernel: Restarting tasks: Done
Aug 22 07:58:28 t14-mch kernel: random: crng reseeded on system resumption
Aug 22 07:58:28 t14-mch systemd-logind[769]: Lid opened.
Aug 22 07:58:28 t14-mch systemd-sleep[93494]: System returned from sleep operation 'suspend-then-hibernate'.
Aug 22 07:58:28 t14-mch kernel: PM: suspend exit
Aug 22 07:58:28 t14-mch bluetoothd[763]: Controller resume with wake event 0x0
Aug 22 07:58:28 t14-mch systemd[1]: Starting Daily man-db regeneration...
Aug 22 07:58:28 t14-mch systemd[1]: user@1000.service: Unit now thawed.
Aug 22 07:58:28 t14-mch systemd[1]: session-2.scope: Unit now thawed.
Aug 22 07:58:28 t14-mch systemd[1]: user-1000.slice: Unit now thawed.
Aug 22 07:58:28 t14-mch systemd[1]: user.slice: Unit now thawed.
Aug 22 07:58:28 t14-mch systemd-sleep[93494]: Successfully thawed unit 'user.slice'.
Aug 22 07:58:28 t14-mch systemd[1]: systemd-suspend-then-hibernate.service: Deactivated successfully.
Aug 22 07:58:28 t14-mch systemd[1]: Finished System Suspend then Hibernate.
Aug 22 07:58:28 t14-mch kernel: usb 1-9: new full-speed USB device number 93 using xhci_hcd
Aug 22 07:58:28 t14-mch systemd[1]: Stopped target Sleep.
Aug 22 07:58:28 t14-mch systemd[1]: Reached target Suspend; Hibernate if not used for a period of time.
Aug 22 07:58:28 t14-mch systemd-logind[769]: Operation 'suspend-then-hibernate' finished.
Aug 22 07:58:28 t14-mch systemd[1]: Stopped target Suspend; Hibernate if not used for a period of time.
…