Standardowo przy zamknięciu klapy laptopa system przechodzi w stan uśpienia.
Żeby zapobiec uśpienia systemu należy w pliku /etc/systemd/logind.conf
odnaleść wpis: HandleLidSwitch=suspend
i usunąć znak , następnie zmienić
słowo
suspend
na ignore
Tak powinien wyglądać prawidłowy wpis w pliku /etc/systemd/logind.conf
HandleLidSwitch=ignore
Teraz pozostało zrestartować usługę systemd-logind, restart usługi spowoduje zamknięcie wszystkich programów i wylogowanie się z bieżącej sesji.
sudo systemctl restart systemd-logind
Z uwagi na to że modyfikacji zachowania systemu, wiąże się z każdorazowym
zamknięciem bieżącej sesji, nie jest to idealne rozwiązanie. Dlatego posłużymy
się acpid
.
Najpierw zainstalujemy acpid
:
sudo dnf install acpid
Po instalacji trzeba skonfigurować reguły monitorowania zmiany stanu przycisku zamknięcia ekranu.
W pliku /etc/acpi/events/lm_lid
dodajemy
event=button/lid.* action=/etc/acpi/actions/lid.sh
ACPI będzie monitorował pliki w /proc/acpi/button/lid/
, jeśli zauważy zmianę
to uruchomi skrypt /etc/acpi/actions/lid.sh
.
Przykładowy skrypt /etc/acpi/actions/lid.sh
Skrypt jest przygotowany dla systemów gdzie jest uruchomiona jedna sesja XWindow,
jeśli Twój system przewiduje więcej niż jedną sesję jednocześnie warto
zainteresować się poleceniem loginctl list-sessions
oraz
loginctl show session #sesji
. Można też skorzystać z przykładowego skryptu
/etc/acpi/actions/power.sh
, w którym są użyte oba polecenia.
#!/usr/bin/env bash
USERNAME=user
grep -q closed /proc/acpi/button/lid/LID/state
if [ $? = 0 ]
then
grep 1 /home/$USERNAME/.config/suspend.conf
if [ $? = 0 ]; then
systemctl suspend
fi
fi
Skrypt przy uruchomieniu sprawdza czy ekran został zamknięty oraz wartość [0|1]
w pliku /home/$USERNAME/.config/suspend.conf
dla wartości 1
po zamknięciu
ekranu system przejdzie w tryb suspend dla wartości 0
system działa dalej bez
uśpienia.
Teraz należy uruchomić acpid
, tutaj jedna uwaga, w systemie Fedora po
uruchomieniu acpid
jako usługa, acpid
nie monitoruje zmian prawidłowo,
jednak jeśli uruchomimy acpid
przy starcie sesji XWindow monitorowanie
zmian działa prawidłowo.
Dla i3 wm w pliku konfiguracyjnym dodajemy wpis:
exec --no-startup-id sudo /uar/sbin/acpid
Należy pamiętać żeby dostosować sudo
do uruchamiania /usr/sbin/acpid
bez
hasła.
No tak, ale może zamist grzebać w plikach, lepiej wykorzystać rofi do wprowadzania
zmian wartości w pliku .config/suspend.conf
. Skrypt umieścimy w ~/bin/menu
.
#!/usr/bin/env bash
menu=$(echo -e "Ignoruj zamknięcie ekranu\nUśpij po zamknięciu ekranu\nMonitor Off\nEdit Menu" \
| rofi -lines 19 -dmenu -i -p "Wybierz coś")
if [ "$menu" == "Edit Menu" ]; then
st -e vim ~/bin/menu
fi
if [ "$menu" == "Monitor Off" ]; then
notify-send "Za kilka chwil wyłączę monitor..."
sleep 1
xset dpms force [[off]]
fi
if [ "$menu" == "Ignoruj zamknięcie ekranu" ]; then
echo 0 > ~/.config/suspend.conf
fi
if [ "$menu" == "Uśpij po zamknięciu ekranu" ]; then
echo 1 > ~/.config/suspend.conf
fi
Jeśli używasz i3 WM, to można dodać skrót klawiszowy do uruchomienia menu, w pliku
.config/i3/config
:
$mod+m exec ~/bin/menu
Date: 2020-10-24T19:28:13+02:00 |