Po wypowiedzi sądzę, że korzystasz z graficznej sesji. Gdybyś jeszcze powiedział z jakiego środowiska graficznego korzystasz można byłoby podać rozwiązanie na tacy.
Masa środowisk, w tak tym popularne jak KDE, Gnome, XFCE, obsługują wyłączanie komputera przez wspólną „szynę” komunikacyjną. Dzisiaj system zawiera kilka usług, które umożliwiają przesyłanie wiadomości, obsługę żądań, tworzenie polityki bezpieczeństwa, nadawanie uprawnień itd. I najczęściej tutaj zaczynają się schody bo startując sesję graficzną trzeba również rozpocząć sesję na potrzeby jednej z tych usług oraz poprawnie ustawić kilka rzeczy.
Na przykładzie XFCE (
https://wiki.gentoo.org/wiki/Xfce#Start ... ay_manager):
When experiencing authorization or permissions issues within xfce4 in a OpenRC profile (symptoms include being unable to open power manager and unable to suspend/hibernate) be sure the sys-auth/consolekit package has been merged with the pm-utils flag set. Then replace the above line in ~/.xinitrc with the following (see this entry on the Gentoo Forums for more information):
FILE ~/.xinitrcStarting xfce4 the right way when invoking startx
Code: Select all
ck-launch-session dbus-launch --sh-syntax --exit-with-session xfce4-session
Jeszcze prościej można rozwiązać sprawę korzystając z popularnych menadżerów logowania (KDM lub GDM), które inicjują taką sesję z automatu.
Jeśli masz działającą sesję i działa zamknięcie poprzez przycisk wyłączania/wylogowania, a potrzebujesz tylko skrypt/ikonkę to wystarczy wysłać przez dbus komunikat w odpowiednie miejsce:
Code: Select all
dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
lub dla upower:
Code: Select all
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Źródło:
http://askubuntu.com/questions/454039/w ... u-in-14-04
I trochę nowsze jeśli korzystasz z upower (na 99% tak):
https://bbs.archlinux.org/viewtopic.php?id=127962
Można też prościej ale to już zależy od środowiska graficznego, w XFCE można łatwo to zrobić poprzez sesję: