Halo semua. Saya menggunakan Lubuntu 18.04 di laptop rumah saya. Suatu hari saya memutuskan bahwa saya tidak puas dengan tindakan yang ditawarkan Power Manager saat menutup penutup laptop. Saya ingin mengunci layar saat menutup penutup laptop dan setelah beberapa saat mengirim laptop ke mode hibernasi. Saya menulis naskah untuk ini dan saya segera membagikannya kepada Anda.
Saya mengalami dua masalah.
Pertama, hibernasi tidak langsung berfungsi di Lubunta; untuk mengaktifkannya, Anda perlu melakukan hal berikut.
Temukan pertukaran UUID, untuk melakukan ini, Anda perlu menjalankan:
grep swap /etc/fstab
Dalam kasus saya, hasilnya adalah sebagai berikut:
# swap was on /dev/mmcblk0p2 during installation
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none swap sw 0 0
Maka Anda perlu menambahkan UUID ke parameter inisialisasi kernel. Untuk melakukan ini, tambahkan resume=UUID=%your UUID% ke baris βGRUB_CMDLINE_LINUX_DEFAULTβ di file /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...
Dan jalankan perintah:
sudo update-grub
Sekarang hibernasi seharusnya berfungsi, untuk memeriksanya Anda dapat menjalankan:
sudo systemctl hibernate
Masalah kedua adalah bagaimana mengunci layar pengguna sebagai root tanpa membuat laptop tertidur. Saya menyelesaikannya menggunakan dbus-send, perintahnya sendiri ada pada skrip di bawah ini. Jika ada yang tahu opsi lain, silakan tulis di komentar
Sekarang mari kita mulai menulis naskahnya.
Hal pertama yang perlu kita lakukan di Power Manager adalah memilih Matikan tampilan sebagai tindakan saat menutup penutupnya, sehingga tidak ada konflik dengan skrip kita.
Kemudian buat file /etc/acpi/events/laptop-lid dengan isi sebagai berikut:
event=button/lid.*
action=/etc/acpi/laptop-lid.sh
dan buat script /etc/acpi/laptop-lid.sh dengan isi sebagai berikut:
#!/bin/bash
#set variables
#ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ BUS Π°Π΄ΡΠ΅Ρ ΠΈΠ· environ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΡΠ΅ΡΡΠ° lxsession
BUS=$(grep -z DBUS_SESSION_BUS_ADDRESS
/proc/$(pidof -s lxsession)/environ |
sed 's/DBUS_SESSION_BUS_ADDRESS=//g')
#ΠΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ·Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ
USER=$(grep -z USER /proc/$(pidof -s lxsession)/environ | sed 's/USER=//g')
#ΠΏΡΡΡ Π΄ΠΎ ΡΡΠ΅ΠΉΡ ΡΠ°ΠΉΠ»Π° ΠΊΡΡΡΠΊΠΈ Π½ΠΎΡΡΠ±ΡΠΊΠ°
LID="/proc/acpi/button/lid/LID0/state"
#Check lid state (return 0 if closed)
check_lid () {
grep -q closed $LID
}
#Lock screen without sleep
check_lid
if [ $? = 0 ]
then
#TODO run command as root
sudo -u $USER -E dbus-send --bus=$BUS
--type=method_call
--dest="org.freedesktop.ScreenSaver"
"/org/freedesktop/ScreenSaver"
org.freedesktop.ScreenSaver.Lock
fi
#Wait 10 minutes and hibernate if lid is closed
sleep 600
check_lid
if [ $? = 0 ]
then
systemctl hibernate
fi
Membuat skrip dapat dieksekusi:
sudo chmod a+x /etc/acpi/laptop-lid.sh
Dan restart daemon acpid agar perubahan diterapkan:
sudo systemctl restart acpid.service
Semuanya sudah siap.
Untuk Gnome di skrip Anda perlu mengubah:
- lxsessin => sesi gnome
- org.freedesktop.ScreenSaver => org.gnome.ScreenSaver
Sumber: www.habr.com