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

wstecz

Date: 2020-10-24T19:28:13+02:00