Ziirish's Home :: Blog

Ziirish's Pub

 
 

On continue dans le monde du WTF avec systemd et gnome 3.8

On a vu dans le dernier article que pour faire fonctionner le suspend to ram sur gnome 3.8 avec fglrx il fallait ruser.

Et bien j'ai été confronté à un autre problème. Désormais ma machine se met bien en veille lorsque je ferme le clapet. Seulement l'écran de se vérouille pas.

C'est logind qui s'occupe désormais de gérer ces évènements, mais il n'offre que la possibilité de configurer les cibles suivantes lorsqu'il détecte un changement d'état du switch écran :

  • suspend
  • hibernate
  • lock
  • etc.

Mais pas moyen de coupler ces cibles (ou alors je n'ai pas encore trouvé).

Du coup, j'ai modifié un peu les scripts que j'avais réalisé pour fglrx.

Et voici le résultat :

/opt/sleep/pre-suspend :

#!/bin/sh

echo "Going to suspend..."
/opt/sleep/handler.sh
chvt 1
sleep 1

exit 0

/opt/sleep/handler.sh :

#!/bin/bash

pid=$(ps aux | grep "/usr/bin/gnome-shell" | grep -v grep | awk '{print $2;}')

[ -z "$pid" ] && exit

dbus=$(strings /proc/$pid/environ | grep -h ^DBUS_SESSION_BUS_ADDRESS | head -1 | sed "s/^DBUS_SESSION_BUS_ADDRESS=//")
user=$(strings /proc/$pid/environ | grep -h ^USER= | cut -d= -f2)

su - $user -c "/opt/sleep/lock.sh '$dbus'"

/opt/sleep/lock.sh :

#!/bin/bash

export DBUS_SESSION_BUS_ADDRESS=$1

dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock