Benotzerdefinéiert Skript wann Dir de Laptopdeckel zoumaacht an den Ecran ouni Schlof gespaart

Moien alleguer. Ech benotzen Lubuntu 18.04 op mengem Heem Laptop. E schéinen Dag hunn ech decidéiert datt ech net zefridden war mat den Aktiounen déi Power Manager ugebueden huet wann de Laptopdeckel zougemaach gouf. Ech wollt den Ecran gespaarten wann de Laptop Deckel zougemaach an no enger Zäit de Laptop am Wanterschlof schécken. Ech hunn e Skript dofir geschriwwen an ech séier et mat Iech ze deelen.

Ech sinn op zwee Probleemer gerannt.

Als éischt funktionnéiert de Wanterschlof net aus der Këscht am Lubunta; fir et z'aktivéieren, musst Dir déi folgend maachen.

Fannt den UUID Swap, fir dëst ze maachen, musst Dir lafen:

grep swap /etc/fstab

A mengem Fall ass d'Ausgab déi folgend:

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

Da musst Dir d'UUID un d'Kernelinitialiséierungsparameter addéieren. Fir dëst ze maachen, füügt Resume=UUID=%Är UUID% op d'Linn "GRUB_CMDLINE_LINUX_DEFAULT" an der Datei /etc/default/grub derbäi

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

A lafen de Kommando:

sudo update-grub

Elo soll de Wanterschlof funktionnéieren, fir ze kontrolléieren, kënnt Dir lafen:

sudo systemctl hibernate

Deen zweete Problem war wéi een den Écran vum Benotzer als Root gespaart gëtt ouni de Laptop ze schlofen. Ech hunn et mat dbus-send geléist, de Kommando selwer ass am Skript hei drënner. Wann iergendeen aner Optiounen kennt, schreift w.e.g. an de Kommentarer

Loosst eis elo de Skript schreiwen.

Déi éischt Saach, déi mir am Power Manager maache musse, ass d'Ausschalten vum Display als Handlung ze wielen wann Dir den Deckel zoumaacht, sou datt et keng Konflikter mat eisem Skript gëtt.

Benotzerdefinéiert Skript wann Dir de Laptopdeckel zoumaacht an den Ecran ouni Schlof gespaart

Erstellt dann eng Datei /etc/acpi/events/laptop-lid mat dem folgenden Inhalt:

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

a erstellt e Skript /etc/acpi/laptop-lid.sh mat dem folgenden Inhalt:

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

De Skript ausféierbar maachen:

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

A restart den acpid Daemon sou datt d'Ännerunge applizéiert ginn:

sudo systemctl restart acpid.service

Alles ass fäerdeg.

Fir Gnome am Skript musst Dir änneren:

  • lxsessin => Gnom-Sessioun
  • org.freedesktop.ScreenSaver => org.gnome.ScreenSaver

Source: will.com

Setzt e Commentaire