Skrip khusus nalika nutup tutup laptop sareng ngonci layar tanpa bobo

Halo sadayana. Abdi nganggo Lubuntu 18.04 dina laptop bumi kuring. Hiji dinten anu saé kuring mutuskeun yén kuring henteu puas kana tindakan anu ditawarkeun Power Manager nalika nutup tutup laptop. Abdi hoyong ngonci layar nalika nutup tutup laptop sareng saatos sababaraha waktos ngirim laptop kana hibernasi. Kuring nulis naskah pikeun ieu sareng kuring gancang ngabagikeunana sareng anjeun.

Kuring lumpat kana dua masalah.

Mimiti, hibernasi henteu jalan kaluar tina kotak di Lubunta; pikeun ngaktifkeunana, anjeun kedah ngalakukeun ieu.

Milarian swap UUID, pikeun ngalakukeun ieu anjeun kedah ngajalankeun:

grep swap /etc/fstab

Dina kasus kuring, kaluaran nyaéta kieu:

# swap was on /dev/mmcblk0p2 during installation
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none            swap    sw              0       0

Teras anjeun kedah nambihan UUID kana parameter initialization kernel. Jang ngalampahkeun ieu, tambahkeun resume = UUID =% UUID% anjeun kana garis "GRUB_CMDLINE_LINUX_DEFAULT" dina file /etc/default/grub

...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...

Sareng ngajalankeun paréntah:

sudo update-grub

Ayeuna hibernasi kedah jalan, pikeun pariksa anjeun tiasa ngajalankeun:

sudo systemctl hibernate

Masalah anu kadua nyaéta kumaha carana ngonci layar pangguna salaku akar tanpa ngirim laptop pikeun bobo. Kuring direngsekeun eta ngagunakeun dbus-send, paréntah sorangan dina naskah di handap. Upami aya anu terang pilihan sanés, punten nyerat dina koméntar

Ayeuna urang mimitian nulis naskah.

Hal kahiji anu urang kedah laksanakeun dina Power Manager nyaéta milih Pindah pareum tampilan salaku tindakan nalika nutup tutupna, supados henteu aya konflik sareng naskah urang.

Skrip khusus nalika nutup tutup laptop sareng ngonci layar tanpa bobo

Teras jieun file /etc/acpi/events/laptop-lid sareng eusi ieu:

event=button/lid.*
action=/etc/acpi/laptop-lid.sh

sareng jieun skrip /etc/acpi/laptop-lid.sh kalayan eusi ieu:

#!/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

Ngadamel skrip tiasa dieksekusi:

sudo chmod a+x /etc/acpi/laptop-lid.sh

Sareng balikan deui daemon acpid supados parobihan diterapkeun:

sudo systemctl restart acpid.service

Sadayana siap.

Pikeun Gnome dina naskah anjeun kedah robih:

  • lxsessin => gnome-sési
  • org.freedesktop.ScreenSaver => org.gnome.ScreenSaver

sumber: www.habr.com

Tambahkeun komentar