လက်ပ်တော့အဖုံးကိုပိတ်ပြီး အိပ်မပျော်ဘဲ မျက်နှာပြင်ကို လော့ခ်ချသည့်အခါ စိတ်ကြိုက် script

အားလုံးမင်္ဂလာပါ။ ကျွန်ုပ်သည် အိမ်သုံးလက်ပ်တော့တွင် Lubuntu 18.04 ကို အသုံးပြုနေပါသည်။ ကောင်းသောနေ့တွင် ကျွန်ုပ်သည် လက်ပ်တော့အဖုံးကိုပိတ်သောအခါ Power Manager မှပေးသောလုပ်ဆောင်ချက်များကို မကျေနပ်ကြောင်း ဆုံးဖြတ်ခဲ့သည်။ လက်ပ်တော့အဖုံးကိုပိတ်ပြီး ခဏအကြာတွင် လက်ပ်တော့ကို hibernation သို့ လွှတ်လိုက်သောအခါ မျက်နှာပြင်ကို လော့ခ်ချချင်ခဲ့သည်။ ကျွန်တော် ဒီအတွက် ဇာတ်ညွှန်းရေးပြီး မျှဝေဖို့ အလျင်လိုနေပါတယ်။

ပြဿနာနှစ်ခုကြုံခဲ့တယ်။

ပထမဦးစွာ၊ ဆောင်းခိုခြင်းသည် Lubunta ရှိ box မှအလုပ်မလုပ်ပါ၊ ၎င်းကိုဖွင့်ရန်၊ သင်သည်အောက်ပါအတိုင်းလုပ်ဆောင်ရန်လိုအပ်သည်။

UUID လဲလှယ်မှုကို ရှာပါ၊ ၎င်းကိုလုပ်ဆောင်ရန် သင်လုပ်ဆောင်ရန် လိုအပ်သည်-

grep swap /etc/fstab

ငါ့ကိစ္စတွင် output သည်အောက်ပါအတိုင်းဖြစ်သည်။

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

ထို့နောက် သင်သည် kernel ကနဦးသတ်မှတ်ခြင်းဘောင်များတွင် UUID ကိုထည့်ရန်လိုအပ်သည်။ ၎င်းကိုလုပ်ဆောင်ရန်၊ ဖိုင် /etc/default/grub ရှိ “GRUB_CMDLINE_LINUX_DEFAULT” လိုင်းသို့ resume=UUID=% သင်၏ UUID% ကို ထည့်ပါ။

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

ပြီးလျှင် command ကို run ပါ။

sudo update-grub

ယခု hibernation အလုပ်ဖြစ်သင့်သည်၊ သင် run နိုင်သည်ကိုစစ်ဆေးရန်-

sudo systemctl hibernate

ဒုတိယပြဿနာမှာ လက်ပ်တော့အား အိပ်စက်ရန် မပို့ဘဲ အသုံးပြုသူ၏ စခရင်ကို root အနေဖြင့် မည်သို့သော့ခတ်ရမည်နည်း။ dbus-send သုံးပြီး ဖြေရှင်းခဲ့တယ်၊ command ကိုယ်တိုင်က အောက်က script ထဲမှာပါပါတယ်။ တခြားရွေးချယ်စရာတွေသိရင် comment မှာရေးပေးပါ။

ကဲ ဇာတ်ညွှန်းရေးကြရအောင်။

Power Manager တွင်ကျွန်ုပ်တို့ပထမဆုံးလုပ်ရန်လိုအပ်သည်မှာကျွန်ုပ်တို့၏ script နှင့်ကွဲလွဲမှုမရှိစေရန်အဖုံးပိတ်သည့်အခါလုပ်ဆောင်မှုအဖြစ် Switch off display ကိုရွေးချယ်ရန်ဖြစ်သည်။

လက်ပ်တော့အဖုံးကိုပိတ်ပြီး အိပ်မပျော်ဘဲ မျက်နှာပြင်ကို လော့ခ်ချသည့်အခါ စိတ်ကြိုက် script

ထို့နောက် အောက်ပါအကြောင်းအရာဖြင့် /etc/acpi/events/laptop-lid ဖိုင်တစ်ခုကို ဖန်တီးပါ။

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

အောက်ပါအကြောင်းအရာဖြင့် script /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 daemon ကို ပြန်လည်စတင်ပါ။

sudo systemctl restart acpid.service

အားလုံးအဆင်သင့်ဖြစ်နေပါပြီ။

ဇာတ်ညွှန်းရှိ Gnome အတွက် သင်သည် ပြောင်းလဲရန် လိုအပ်သည်-

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

source: www.habr.com

မှတ်ချက် Add