Jak zapobiec bezpośredniemu wyłączaniu systemu przez przycisk zasilania?

23

Zrobiłem nową instalację Ubuntu 13.10. Po naciśnięciu przycisku zasilania komputer natychmiast się wyłącza. W Ubuntu 13.04 dostałem ładne menu, w którym mogłem wybrać, co robić. Teraz już go nie ma i chcę go odzyskać. Oto mój /etc/acpi/powerbtn.sh w pastebin.

już zrobiłem

gsettings set org.gnome.settings-daemon.plugins.power button-WORD 'interactive'

gdzie WORDjest hibernate, power, sleepi suspend.

Wauzl
źródło
1
Przejrzałem moje /etc/acpi/powerbtn.shi dowiedziałem się, że to po prostu nic nie robi. Menu, o którym mówię, może zostać przywołane przez poleceniegnome-session-quit --power-off
Wauzl
Lulz. szkoda, że ​​nie przeczytałem twojego komentarza, zanim poszedłem na dziką gęś, próbując znaleźć to polecenie.
czy moja odpowiedź nie zadziałała dla ciebie?
Poparłem twoją odpowiedź i jestem pewien, że zadziałałoby; Ponownie zainstalowałem cały system. Miałem też inne problemy. To (wściekle) to naprawiło dla mnie.
Wauzl,
ah, k. właśnie zobaczyłem, że zatrzymałeś się na stronie bez komentarza, więc pomyślałem, że powiadomienie mogło zostać utracone. dziwne, całkowicie ponowna instalacja naprawiła to? czy pobrałeś najnowszą wersję 13.10? Zrobiłem nową instalację i niedawno miałem ten problem.

Odpowiedzi:

29

Sprawdź swój /etc/systemd/logind.confplik. To powinno wyglądać tak:

[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#Controllers=
#ResetControllers=cpu
#InhibitDelayMaxSec=5
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
#HandleLidSwitch=suspend
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes
#IdleAction=ignore
#IdleActionSec=30min

Odkomentuj wiersz z napisem #HandlePowerKey=poweroffi zmień wartość na ignore.

Następnie uruchom ponownie logind za pomocą polecenia: sudo restart systemd-logindlub uruchom ponownie komputer.

EDYCJA: jak utworzyć nowy moduł obsługi acpi Utwórz nowy plik w /etc/acpi/events/. Zawartość pliku powinna wynosić:

event=<acpi_event_code>
action=<script_to_call>

gdzie <acpi_event_code>jest kod otrzymywany za pomocą tego acpi_listennarzędzia i <script_to_call>pełna ścieżka do skryptu, który chcesz wywołać, gdy zdarzenie się wydarzy.

Musieli coś zmienić w 13.10, ponieważ wydaje się, że mam za mało plików w folderze / etc / accpi / events w porównaniu do 13.04.

jeremija
źródło
To nie przywraca mojego ukochanego menu. Po prostu nie robi nic, kiedy teraz naciskam przycisk zasilania.
Wauzl
Jeśli plik powerbtn.sh jest faktycznie wykonywany po naciśnięciu przycisku zasilania, możesz spróbować wykonać polecenie menu zamykania, jeśli serwer X działa, a gnome to środowisko pulpitu. Spójrz na wynik exportpolecenia, aby ustalić, które zmienne mają zostać przetestowane. Jeśli skrypt powerbtn.sh nie jest w ogóle wykonywany, możesz spróbować sprawdzić, z którym zdarzeniem acpi ma zostać powiązane, uruchamiając acpi_listeni naciskając przycisk zasilania. Być może w gnome jest opcja przywrócenia menu mocy, ale nie jestem pewien, ponieważ minęło trochę czasu, odkąd ostatnio używałem gnome.
jeremija
Próbowałem tego i nie powerbtn.shjest (prawdopodobnie) wykonywane, ponieważ nic nie dzieje się po naciśnięciu przycisku. acpi_listenMówi mi, że przycisk wyzwala zdarzenia ACPI. Niestety moje klawisze zwiększania i zmniejszania głośności również nie działają. Może to jest związane?
Wauzl
Możesz spróbować: grep "<acpi_event_code>" /etc/acpi/events/*gdzie <acpi_event_code>jest kod zdarzenia acpi, które widziałeś na acpi_listen. Jeśli otrzymasz wynik, wyświetl ten plik i zobacz nazwę skryptu, który wywołuje. Jeśli nie otrzymasz wyniku, możesz spróbować dodać nowy plik do pliku /etc/acpi/events/. Zobacz edytowaną odpowiedź, aby uzyskać więcej informacji.
jeremija
Potwierdź, że działa to z 16.04 LTS na moim komputerze Mac.
Benjamin R,
4

jeremijah postawił mnie na dobrej drodze, więc chwała!

I edytowane /etc/systemd/logind.confjako zalecane, ale także zrobiłem to .

Społeczność
źródło
1

Jeśli powyższe rozwiązania nie działają, oto krótkie obejście:

  • Zainstaluj xtrlock

To narzędzie działa dla Ciebie. Choć może to nie odpowiedzieć na pytanie, w wielu próbowanych przeze mnie rozwiązaniach (w tym na tej stronie) żadne z nich nie działa

Żeby zainstalować:

sudo apt install xtrlock 

Aby użyć: Wpisz xtrlockw wierszu polecenia. Spowoduje to zamrożenie myszy, klawiatury

Aby odblokować, wpisz hasło i naciśnij [Enter]


Może także zamrozić przycisk zasilania.

PS To rozwiązanie jest szczególnie przydatne dla tych, którzy mają dzieci i chcą z tego powodu wyłączyć przycisk zasilania.

xtrlock - Zablokuj wyświetlanie X do momentu podania hasła, pozostawiając widoczne okna Źródło: http://manpages.ubuntu.com/manpages/artful/man1/xtrlock.1x.html

Dody Body
źródło
Rozwiń swoją odpowiedź. Czy ta aplikacja jest dostępna w repozytoriach? Jak to zainstalowałeś, za pomocą wiersza poleceń lub za pośrednictwem Centrum oprogramowania Ubuntu? Jeśli przez linię poleceń, którego polecenia użyłeś? Czy to skonfigurowałeś?
user68186
1

Najpierw możesz edytować plik mapy klawiszy, aby zmienić zachowanie przycisku zasilania i przypisać go do innego klucza

Edytuj plik: /usr/share/X11/xkb/symbols/inet(edytuj klucz POWR)

Następnie musisz skutecznie wyłączyć przycisk zasilania. Dobrą metodą jest xinput

Uruchom xinput --listprzyciski zasilania mają swój własny wpis ... wybierz numer urządzenia, a następnie uruchom

xinput disable devnumber coś jak xinput disable 8

intika
źródło