To help the next person who searches this, here is what I had to do:
Sleep (suspend to RAM) with pm-utils is very easy to get working (at least it was my old Intel x86_64 machine).
Clone the PKGBUILD's git repo from AUR:
https://aur.archlinux.org/packages/pm-utils/
Use makepkg to build it
Install with pacman -U
Use pm-suspend
Hibernate to disk is also quite easy, but you need
- swap partition active
- bootloader to instruct the kernel to try resuming from that image
- initramfs to know it must try to resume from swap if possible
Swap does not need to auto activate on boot, but then you will need to use swapon directly before trying to hibernate e.g. in my case
# swapon /dev/sdb4
Otherwise pm-hibernate will exit with code 128 and complain in kernel log (dmesg) with
[ 96.845462] PM: Cannot find swap device, try swapon -a.
[ 96.846924] PM: Cannot get swap writer
I use Obarun with Grub, so I only had to add this to my /etc/default/grub and then regenerate config with grub-mkconfig:
GRUB_CMDLINE_LINUX="resume=UUID=e69ba56a-..."
(put in your own swap partition's /dev node or UUID which you can get using blkid)
The initial ramdisk needs a hook for triggering resume during boot. I don't really know how/why this works and why the initramfs is involved at all, but anyway:
Make sure "resume" occurs in HOOKS list of /etc/mkinitcpio.conf (I think it should be before "filesystems" because we don't want to trigger normal service startup process -- haven't bothered testing this yet)
Regenerate initrd (mine is at /boot/initramfs-linux.img) by using mkinitcpio
Reboot normally to make sure everything still works as intended. Then you can start using
pm-hibernate
As a bonus, XFCE4 seems to automatically pick up the presence of pm-utils when using its Logout button, and somehow allows me to sleep/hibernate without root privileges