Ny script manokana rehefa manidy ny saron'ny solosaina finday ary manidy ny efijery tsy misy torimaso

Salama daholo. Mampiasa Lubuntu 18.04 amin'ny solosaina finday ao an-trano aho. Indray andro dia nanapa-kevitra aho fa tsy afa-po tamin'ny hetsika natolotry ny Power Manager rehefa nanidy ny saron'ny solosaina finday. Te-hihidy ny ecran aho rehefa manidy ny saron'ny solosaina finday ary rehefa afaka kelikely dia alefaso any amin'ny hibernation ny solosaina. Nanoratra script ho an'ity aho ary haingana hizara izany aminareo.

Nisedra olana roa aho.

Voalohany, tsy mandeha ivelan'ny boaty ao amin'ny Lubunta ny hibernation; Mba ahafahana manao izany dia mila manao izao manaraka izao ianao.

Tadiavo ny swap UUID, mba hanaovana izany dia mila mihazakazaka ianao:

grep swap /etc/fstab

Amin'ny tranga misy ahy, ny vokatra dia izao:

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

Avy eo dia mila manampy ny UUID amin'ny mari-pamantarana fanombohana kernel ianao. Mba hanaovana izany, ampio resume = UUID =% ny UUID% amin'ny tsipika "GRUB_CMDLINE_LINUX_DEFAULT" ao amin'ny rakitra /etc/default/grub

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

Ary araho ny baiko:

sudo update-grub

Tokony hiasa izao ny hibernation, mba hanamarinana fa afaka mihazakazaka ianao:

sudo systemctl hibernate

Ny olana faharoa dia ny fomba hanidiana ny efijerin'ny mpampiasa ho faka nefa tsy mandefa ny solosaina findainy hatory. Namaha azy io aho tamin'ny fampiasana dbus-send, ny baiko dia ao amin'ny script etsy ambany. Raha misy mahafantatra safidy hafa dia manorata ao amin'ny fanehoan-kevitra

Andeha isika hanomboka hanoratra ny script.

Ny zavatra voalohany tokony hataontsika ao amin'ny Power Manager dia ny fisafidianana ny Atsaharo ny fampisehoana ho toy ny hetsika rehefa manidy ny sarom-bilany, mba tsy hisy fifandirana amin'ny scripty.

Ny script manokana rehefa manidy ny saron'ny solosaina finday ary manidy ny efijery tsy misy torimaso

Avy eo dia mamorona rakitra /etc/acpi/events/laptop-lid miaraka amin'ity atiny manaraka ity:

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

ary mamorona script /etc/acpi/laptop-lid.sh miaraka amin'ity atiny manaraka ity:

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

Ny fanaovana ny script ho executable:

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

Ary avereno indray ny daemon acpid mba hampiharana ny fanovana:

sudo systemctl restart acpid.service

Ny zavatra rehetra vonona.

Ho an'ny Gnome ao amin'ny script dia mila ovaina ianao:

  • lxsessin => gnome-session
  • org.freedesktop.ScreenSaver => org.gnome.ScreenSaver

Source: www.habr.com

Add a comment