Yo, setup hibernation and use hybrid sleep as your default sleep.
ln -s /etc/systemd/system/suspend.target ../../../usr/lib/systemd/system/suspend-then-hibernate.target
Now any sleep is hybrid. The machine suspends, then wakes up after a timeout, and enters hibernation. The timeout is configurable in systemd-sleep.conf(5)
.
With this combo I find that I prefer S0 to S3. S0 drains the battery about twice as fast, sure, but it resumes instantaneously, while S3 takes about 30 seconds (!) to resume on this machine. And the thing hibernates and powers off if I leave it for an hour anyway.
It's bluca, yo.
As a random example, here is bluca breaking
suspend-then-hibernate
, then being a complete asshole about it, while other systemd devs are trying to put the fire out. Do read his code reviews on the latter. yuwata and keszybz have nerves of steel.bluca is cancer.