October 15, 2009

ACPI S3 Script Update: Menambahkan Perintah Lockscreen di KDE

Saya lebih suka menutup layar laptop dan menyuruh dia tidur (suspend to RAM) dari pada shutdown. Karena saya sering menggunakan laptop, jadi sering buka tutup :)

Ada yang nanya, kok nggak pake suspend to disk.. hehehe.. enter/exit state-nya lama bro, mending di shutdown deh :p

Belakangan saya sadari, laptop saya nggak aman kalo saya tutup. Karena ketika dia dibuka orang lain, layar desktop saya langsung nongol.

Ada yang nanya, emangnya nggak di lock sama KDE.. hehehe.. saya matikan settingnya. Karena saya menggunakan script custom untuk S3 state ini, maka saya set "Lid button closed" action menjadi "do nothing", soalnya ntar balapan antara KDE sama acpid.

Ada yang nanya lagi, kenapa pake script custom.. hehehe.. begini ceritanya mas. Pada suatu hari, saya coba tutup layar laptop, kemudian sequence untuk masuk ke S3 state berjalan, tapi begitu mak 'plung' mati, seketika itu juga mak 'jleng' nyala lagi. Usut punya usut, ternyata harus unload modul ehci_hcd dan uhci_hcd, yaitu modul USB, entahlah ini bug software atau hardware, dan artinya S3 sequence-nya gagal menidurkan laptop doong. Nah, kalo mau edit S3 sequence-nya KDE, kan nggak bisa tuh, soalnya bingung nyari dimana, makanya saya buat script S3 sendiri alias custom.

Kembali ke judul. Setelah saya sadari kekurangan ini, saya mulai cari cara biar bisa lock screen juga, sama seperti kalau pake S3 sequence-nya KDE. Saya pernah dengar, KDE bisa di kontrol lewat script pake DCOP (KDE4<<) atau qdbus (KDE4). Akhirnya cari di internet, how to do that.

qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock

Cobain deh, pasti screen-nya ke-lock :)

Akhirnya saya update script ACPI S3 saya di posting terdahulu, dan jreng.. jreeeeeeeng.. it's looooooocked!

Cut.. cut.. cut..

Terlalu dini untuk mengatakan ini berhasil. Ternyata, jika command tersebut di exec user root, tidak bisa. Karena object dbus-nya not available untuk root, nih.. ngga ada object ScreenSaver kan?

ardhy@zangetsu:~$ sudo qdbus
:1.21 org.freedesktop.DBus

Cari cara lagi. Hmm.. karena script S3 akan di-exec oleh root, berarti dia bebas su ke user apapun doong? Jadi idenya, su ke user yang aktif di display :0 sambil exec command untuk lock screen.

# lock dulu screen-nya

oknum=`who -s | awk '{print $1, $2}' | grep :0 | awk '{print $1}'`;
su - $oknum -c "qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock";

Setelah itu sleep 2 detikan lah, baru lanjutin sequence-nya :)

Cendolnya dong, gan?!

** Aktikel ini sudah obsolete. Karena distro Linux sekarang sudah canggih-canggih :)