Sgript personol wrth gau caead y gliniadur a chloi'r sgrin heb gwsg

Helo i gyd. Rwy'n defnyddio Lubuntu 18.04 ar fy ngliniadur cartref. Un diwrnod braf, penderfynais nad oeddwn yn fodlon â'r gweithredoedd a gynigiodd Power Manager wrth gau caead y gliniadur. Roeddwn i eisiau cloi'r sgrin wrth gau caead y gliniadur ac ar ôl ychydig anfon y gliniadur i aeafgysgu. Ysgrifennais sgript ar gyfer hyn ac rwy'n prysuro i'w rhannu gyda chi.

Rhedais i ddwy broblem.

Yn gyntaf, nid yw gaeafgysgu yn gweithio allan o'r blwch yn Lubunta; i'w alluogi, mae angen i chi wneud y canlynol.

Dewch o hyd i'r cyfnewid UUID, i wneud hyn mae angen i chi redeg:

grep swap /etc/fstab

Yn fy achos i, yr allbwn yw'r canlynol:

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

Yna mae angen ichi ychwanegu'r UUID at baramedrau cychwyn y cnewyllyn. I wneud hyn, ychwanegwch ailddechrau=UUID=% eich UUID% i'r llinell “GRUB_CMDLINE_LINUX_DEFAULT” yn y ffeil /etc/default/grub

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

A rhedeg y gorchymyn:

sudo update-grub

Nawr dylai gaeafgysgu weithio, i wirio y gallwch chi redeg:

sudo systemctl hibernate

Yr ail broblem oedd sut i gloi sgrin y defnyddiwr fel gwraidd heb anfon y gliniadur i gysgu. Fe'i datrysais gan ddefnyddio dbus-send, mae'r gorchymyn ei hun yn y sgript isod. Os oes unrhyw un yn gwybod opsiynau eraill, ysgrifennwch y sylwadau

Nawr gadewch i ni ddechrau ysgrifennu'r sgript.

Y peth cyntaf y mae angen i ni ei wneud yn Power Manager yw dewis Diffoddwch yr arddangosfa fel y weithred wrth gau'r caead, fel nad oes unrhyw wrthdaro â'n sgript.

Sgript personol wrth gau caead y gliniadur a chloi'r sgrin heb gwsg

Yna creu ffeil /etc/acpi/events/laptop-lid gyda'r cynnwys canlynol:

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

a chreu sgript /etc/acpi/laptop-lid.sh gyda'r cynnwys canlynol:

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

Gwneud y sgript yn weithredadwy:

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

Ac ailgychwyn yr ellyll acpid fel bod y newidiadau'n cael eu cymhwyso:

sudo systemctl restart acpid.service

Mae'r cyfan yn barod.

Ar gyfer Gnome yn y sgript mae angen i chi newid:

  • lxsessin => sesiwn gnome
  • org.freedesktop.ScreenSaver => org.gnome.ScreenSaver

Ffynhonnell: hab.com

Ychwanegu sylw