دودیز سکریپټ کله چې د لپ ټاپ پوښ بند کړئ او پرته له خوبه سکرین لاک کړئ

سلام و ټولو ته. زه د خپل کور لپ ټاپ کې لوبنټو 18.04 کاروم. یوه ښه ورځ ما پریکړه وکړه چې زه د هغه کړنو څخه راضي نه یم چې د بریښنا مدیر وړاندیز کوي کله چې د لپ ټاپ پوښ بند کړي. ما غوښتل سکرین لاک کړم کله چې د لپ ټاپ پوښ بند کړم او یو څه وروسته لیپ ټاپ هایبرنیشن ته ولیږم. ما د دې لپاره یو سکریپټ لیکلی او زه به یې له تاسو سره شریک کړم.

زه له دوو ستونزو سره مخ شوم.

لومړی، هایبرنیشن په لبنټا کې د بکس څخه بهر کار نه کوي؛ د دې فعالولو لپاره، تاسو اړتیا لرئ لاندې کار وکړئ.

د UUID سویپ ومومئ، د دې کولو لپاره تاسو باید چلولو ته اړتیا ولرئ:

grep swap /etc/fstab

زما په قضیه کې محصول په لاندې ډول دی:

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

بیا تاسو اړتیا لرئ د کرنل پیل کولو پیرامیټونو کې UUID اضافه کړئ. د دې کولو لپاره، په فایل کې "GRUB_CMDLINE_LINUX_DEFAULT" لاین ته resume=UUID=%your UUID% اضافه کړئ /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

او د تیزاب ډیمون بیا پیل کړئ ترڅو بدلونونه پلي شي:

sudo systemctl restart acpid.service

ټول چمتو دي.

په سکریپټ کې د ګینوم لپاره تاسو اړتیا لرئ بدل کړئ:

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

سرچینه: www.habr.com

Add a comment