ලැප්ටොප් පියන වැසීමේදී සහ නින්දෙන් තොරව තිරය අගුලු දැමීමේදී අභිරුචි පිටපත

ආයුබෝවන් සියල්ලටම. මම මගේ ගෙදර ලැප්ටොප් එකේ Lubuntu 18.04 භාවිතා කරනවා. දවසක් හොඳ දවසක් මම තීරණය කළා ලැප්ටොප් පියන වැසීමේදී Power Manager විසින් ඉදිරිපත් කරන ලද ක්‍රියාවලින් මා සෑහීමකට පත් නොවන බව. මට ලැප්ටොප් පියන වැසීමේදී තිරය අගුළු දැමීමට අවශ්‍ය වූ අතර ටික වේලාවකට පසු ලැප්ටොප් එක ශිශිරතරණයට යැවීමට මට අවශ්‍ය විය. මම මේ සඳහා පිටපතක් ලියා ඇති අතර එය ඔබ සමඟ බෙදා ගැනීමට ඉක්මන් වෙමි.

මම ගැටළු දෙකකට මුහුණ දුන්නා.

පළමුව, ශිශිරතාරණය Lubunta හි කොටුවෙන් පිටතට ක්‍රියා නොකරයි; එය සක්‍රීය කිරීමට, ඔබ පහත සඳහන් දෑ කළ යුතුය.

UUID swap සොයන්න, මෙය සිදු කිරීම සඳහා ඔබ ධාවනය කළ යුතුය:

grep swap /etc/fstab

මගේ නඩුවේ ප්‍රතිදානය පහත පරිදි වේ:

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

එවිට ඔබට UUID කර්නලයේ ආරම්භක පරාමිතීන් වෙත එකතු කළ යුතුය. මෙය සිදු කිරීම සඳහා, /etc/default/grub ගොනුවේ “GRUB_CMDLINE_LINUX_DEFAULT” රේඛාවට resume=UUID=%ඔබේ UUID% එක් කරන්න.

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

සහ විධානය ක්‍රියාත්මක කරන්න:

sudo update-grub

දැන් ශිශිරතරණය ක්‍රියාත්මක විය යුතුය, පරීක්ෂා කිරීමට ඔබට ධාවනය කළ හැක:

sudo systemctl hibernate

දෙවන ගැටළුව වූයේ ලැප්ටොප් පරිගණකය නින්දට නොයවා පරිශීලකයාගේ තිරය root ලෙස අගුළු දමන්නේ කෙසේද යන්නයි. මම එය dbus-send භාවිතයෙන් විසඳුවෙමි, විධානය පහත ස්ක්‍රිප්ට් එකේ ඇත. වෙනත් විකල්ප දන්නේ නම්, කරුණාකර අදහස් දැක්වීමේදී ලියන්න

දැන් අපි පිටපත ලියන්න පටන් ගමු.

Power Manager වලදී අපි කළ යුතු පළමු දෙය නම් පියන වැසීමේදී ක්‍රියාව ලෙස Switch off display තෝරා ගැනීමයි, එවිට අපගේ ස්ක්‍රිප්ට් සමඟ ගැටුම් ඇති නොවේ.

ලැප්ටොප් පියන වැසීමේදී සහ නින්දෙන් තොරව තිරය අගුලු දැමීමේදී අභිරුචි පිටපත

ඉන්පසු පහත අන්තර්ගතය සහිත ගොනුවක් /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-session
  • org.freedesktop.ScreenSaver => org.gnome.ScreenSaver

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න