Скрипти фармоишӣ ҳангоми пӯшидани сарпӯши ноутбук ва қулф кардани экран бидуни хоб

Салом ба ҳама. Ман дар ноутбуки хонагии худ Lubuntu 18.04 -ро истифода мебарам. Як рӯзи хуб ман қарор додам, ки аз амалҳое, ки Power Manager ҳангоми пӯшидани сарпӯши ноутбук пешниҳод мекунад, қаноатманд нестам. Ман мехостам ҳангоми пӯшидани сарпӯши ноутбук экранро қулф кунам ва пас аз муддате ноутбукро ба ҳолати интизорӣ фиристам. Ман барои ин як сенария навиштам ва шитоб мекунам, ки онро бо шумо мубодила кунам.

Ман ба ду мушкилот дучор шудам.

Аввалан, ҳолати хоб дар Лубунта берун аз қуттӣ кор намекунад; барои фаъол кардани он, шумо бояд амалҳои зеринро иҷро кунед.

Свопи UUID-ро ёбед, барои ин шумо бояд иҷро кунед:

grep swap /etc/fstab

Дар ҳолати ман натиҷа ин аст:

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

Пас шумо бояд UUID-ро ба параметрҳои ибтидоии ядро ​​​​ илова кунед. Барои ин кор, resume=UUID=%UUID% -и худро ба сатри "GRUB_CMDLINE_LINUX_DEFAULT" дар файли /etc/default/grub илова кунед

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

Ва фармонро иҷро кунед:

sudo update-grub

Ҳоло ҳолати интизорӣ бояд кор кунад, то тафтиш кунед, ки шумо метавонед иҷро кунед:

sudo systemctl hibernate

Мушкилоти дуюм ин буд, ки чӣ тавр экрани корбарро ҳамчун реша бе фиристодани ноутбук ба хоб баста кардан мумкин аст. Ман онро бо истифода аз dbus-send ҳал кардам, худи фармон дар скрипти зер аст. Агар касе вариантҳои дигарро донад, лутфан дар шарҳҳо нависед

Акнун биёед ба навиштани скрипт шурӯъ кунем.

Аввалин чизе, ки мо бояд дар Менеҷери Ҳокимият анҷом диҳем, ин интихоб кардани Хомӯш кардани дисплей ҳамчун амал ҳангоми пӯшидани сарпӯш аст, то бо скрипти мо ягон ихтилоф вуҷуд надошта бошад.

Скрипти фармоишӣ ҳангоми пӯшидани сарпӯши ноутбук ва қулф кардани экран бидуни хоб

Пас файли /etc/acpi/events/laptop-lid бо мундариҷаи зерин эҷод кунед:

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

ва скрипти /etc/acpi/laptop-lid.sh бо мундариҷаи зерин эҷод кунед:

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

Иҷрошаванда сохтани скрипт:

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

Ва демони acpid-ро аз нав оғоз кунед, то тағирот татбиқ карда шаванд:

sudo systemctl restart acpid.service

Ҳама омодаанд.

Барои Gnome дар скрипт шумо бояд тағир диҳед:

  • lxsessin => gnome-сессия
  • org.freedesktop.ScreenSaver => org.gnome.ScreenSaver

Манбаъ: will.com

Илова Эзоҳ