Laptop doesn't suspend when lid is closed (f37)

Hi,

I did a clean install of Fedora 37 and now my laptop doesn’t suspend when the lid is closed.
I didn’t have this problem with Fedora 36, and I have had 3 different kernels as far as I remember in f37 from the moment I installed it, so it may not be a kernel issue.

I confirmed that the Lid (open/close) notification is triggered in journalctl.
In Gnome Tweak, the option Suspend when laptop lid is closed is ON.

I’m using Kernel 6.0.9-300
My laptop is Lenovo, Thinkpad

Any light to resolve this issue will be appreciated.

Are there any other items logged in the journal right after the lid closed / lid open ones - perhaps anything from gnome-shell, anything mentioning keys/keybinding? If it worked in F36 and not in F37, and the kernels have changed without effect, I’m wondering if it’s something related to GNOME 43 (as that would be at least one variable that’s changed?)

I tried a few times and the output from journalctl is always:

Can you check the output of hostnamectl and make sure it thinks it is a laptop.

After more troubleshooting, I noticed that there are 2 scenarios when suspend doesn’t work:

  1. When power is on
  2. When the HDMI cable is connected (even if the monitor is off)

So, when I turn off the charger and remove the HDMI cable, it works.

Have you checked /etc/systemd/logind.conf to see if modifying either of the below helps?

HandleLidSwitchExternalPower=suspend
HandleLidSwitchDocked=ignore

Did these options change the default value in the last couple of days? Now I have kind of the opposite problem. I turn on the laptop with the lid closed, logging screen is shown fine but hdmi output is turn off after login.

I tried changing the parameters in /etc/systemd/logind.conf, but it doesn’t help.

With hdmi attached this should be suspend instead of ignore:

HandleLidSwitchDocked=suspend

from logind.conf

HandleLidSwitchExternalPower= is completely ignored by default (for backwards compatibility) — an explicit value must be set before it will be used to determine behaviour. HandleLidSwitchDocked= defaults to “ignore”. If the system is inserted in a docking station, or if more than one display is connected, the action specified by HandleLidSwitchDocked= occurs; if the system is on external power the action (if any) specified by HandleLidSwitchExternalPower= occurs; otherwise the HandleLidSwitch= action occurs.”