Rubutun al'ada lokacin rufe murfin kwamfutar tafi-da-gidanka da kulle allo ba tare da barci ba

Assalamu alaikum. Ina amfani da Lubuntu 18.04 akan kwamfutar tafi-da-gidanka na gida. Wata rana mai kyau na yanke shawarar cewa ban gamsu da ayyukan da Manajan Wuta ya bayar lokacin rufe murfin kwamfutar tafi-da-gidanka ba. Ina so in kulle allon lokacin rufe murfin kwamfutar tafi-da-gidanka kuma bayan Ι—an lokaci aika kwamfutar tafi-da-gidanka cikin kwanciyar hankali. Na rubuta rubutun don wannan kuma na yi gaggawar raba shi tare da ku.

Na ci karo da matsaloli biyu.

Na farko, hibernation baya aiki daga cikin akwatin a cikin Lubunta; don kunna shi, kuna buΖ™atar yin haka.

Nemo musanya UUID, don yin wannan kuna buΖ™atar gudu:

grep swap /etc/fstab

A halina abin da ake fitarwa shine kamar haka:

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

Sannan kuna buΖ™atar Ζ™ara UUID zuwa sigogin farawa na kernel. Don yin wannan, Ζ™ara ci gaba = UUID =% UUID Ι—inku% zuwa layin "GRUB_CMDLINE_LINUX_DEFAULT" a cikin fayil /etc/default/grub

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

Kuma gudanar da umurnin:

sudo update-grub

Yanzu hibernation yakamata yayi aiki, don bincika zaku iya gudu:

sudo systemctl hibernate

Matsala ta biyu kuma ita ce yadda ake kulle screen din mai amfani a matsayin root ba tare da aika kwamfutar tafi-da-gidanka ba. Na warware shi ta amfani da dbus-send, umarnin da kansa yana cikin rubutun da ke Ζ™asa. Idan kowa ya san wasu zaΙ“uΙ“Ι“uka, da fatan za a rubuta a cikin sharhi

Yanzu bari mu fara rubuta rubutun.

Abu na farko da muke buΖ™atar yi a cikin Power Manager shine zaΙ“in Kashe nuni azaman aikin yayin rufe murfin, don kada a sami sabani da rubutun mu.

Rubutun al'ada lokacin rufe murfin kwamfutar tafi-da-gidanka da kulle allo ba tare da barci ba

Sannan Ζ™irΖ™irar fayil /etc/acpi/events/laptop-lid tare da abun ciki mai zuwa:

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

kuma Ζ™irΖ™irar rubutun /etc/acpi/laptop-lid.sh tare da abun ciki mai zuwa:

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

Yin aikin aiwatar da rubutun:

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

Kuma sake kunna acpid daemon domin a yi amfani da canje-canje:

sudo systemctl restart acpid.service

Duk abin shirye.

Don Gnome a cikin rubutun kuna buΖ™atar canza:

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

source: www.habr.com

Add a comment