Não no Ubuntu, mas o seguinte funciona para mim:
systemd-inhibit --what sleep --why "Lock screen" --mode delay xdg-screensaver lock & systemctl suspend
Substitua xdg-screensaver lock
pelo comando para bloquear a tela no seu sistema e systemctl suspend
por systemctl hibernate
se deseja bloquear a tela antes de hibernar.
Isso funciona bloqueando a tela em paralelo à suspensão da máquina. No entanto, o comando de bloqueio de tela está sendo executado como inibidor que atrasa o sono. Dessa forma, o systemd esperará até que a tela seja bloqueada antes de executar.
Se você tiver inibidores que estão bloqueando a suspensão, adicione a -i
sinalização no final.