web-dev-qa-db-ja.com

ラップトップの電源ボタンが機能しない

Lubuntu 12.04を実行している(一見かなりエキゾチックな)Dell Latitude XT2ノートブックがあります。新規インストールです。電源ボタンを期待どおりに動作させようとしました(ログアウトダイアログを開くlubuntu-logout)、しかし成功しない:電源ボタンは長押しで強制的に電源を切る以外何もしません。

電源ボタン自体が検出され、機能します。 xfce4-power-manager-settingsで、「確認」から電源ボタンアクションを設定すると(= open lubuntu-logout)「シャットダウン」に、ラップトップは正常にシャットダウンします。電源ボタンを押すと認識され、正しく処理されます。

編集:問題に関連していないように見えるので、質問からたくさんの情報を削除しました。

3
dyp

Lubuntuでは 既知のバグ のようです。 xfce4-power-manager-settingsには、押されている電源ボタンに対して選択するいくつかのアクションがあります。 「シャットダウン」を選択すると、期待どおりに機能しますが、「確認」を選択すると、何も起こりません。

回避策は comment#1 にあります。わたしにはできる。 xfce4とLXDEの間に根本的な問題があるようです。

Green7が言ったように、(追加の)acpiデーモンで同じ動作を作成できます。彼の答えのバージョンは、ダイアログなしでPCをシャットダウンしますが、チャットで話し合ってlubuntu-logout単にコンピューターをシャットダウンするのではなく、スクリプトから。ただし、Xへの接続を許可されているユーザーとしてログアウトアプリケーションを起動し、必要な環境変数($DISPLAY)。 env変数はディストリビューション間で異なるように見えるため、LXDEについては注意深く調べる必要があると思います。

1
dyp

acpiacpi-supportをインストールします(まだインストールされていない場合)。

  • /etc/acpi/eventsに移動します。
  • powerbtnという名前のファイルがあるはずです(ない場合は作成してください)。私のインストールのファイルの内容は次のとおりです。
#/etc/acpi/events/powerbtn
#これは、ユーザーが電源ボタンを押して、
#/etc/acpi/powerbtn.shを呼び出してさらに処理するときに呼び出されます。 
 
#オプションで、プレースホルダー%eを指定できます。 
#カーネルイベントメッセージ全体を通して、指定したプログラムに渡されます
#指定されました。
 
#「ボタンの電源」に反応する必要があります。* 「。」と「button/power。*」は、
#カーネルが変更されたためです。 .sh 
  • このファイルのaction変数を編集することにより、アクションを電源ボタンに関連付けることができます。
  • 私のインストールでは、/etc/acpi/powerbtn.shの内容は次のとおりです。
#!/ bin/sh 
#/etc/acpi/powerbtn.sh
#電源ボタンが押されたときにシャットダウンを開始します。 ____。] 
 [-r/usr/share/acpi-support/power-funcs] &&。 /usr/share/acpi-support/power-funcs

# getXuserは、$ displaynum。
#のディスプレイに属するXユーザーを取得します。フォアグラウンドXユーザーが必要な場合は、 getXconsole!
 getXuser(){
 user = `pinky -fw | awk '{if($ 2 == ":' $ displaynum '" || $(NF)== ":' $ displaynum '"){print $ 1;出口; }} '`
 if [x" $ user "= x" "]; then 
 startx = `pgrep -n startx` 
 if [x" $ startx "!= x" "]; then 
 user = `ps -o user --no-headers $ startx` 
 fi 
 fi 
 if [x" $ user "!= x" " ]; then 
 userhome = `getent passwd $ user | cut -d:-f6` 
 export XAUTHORITY = $ userhome/.Xauthority 
 else 
 export XAUTHORITY = "" 
 fi 
 export XUSER = $ user 
} 
 
#再開の途中ならスキップします。
 test -f/var/lock/acpisleep && exit 0 
 
#現在のXコンソールユーザーが、サスペンド/レジュームリクエストを処理する
#電力管理デーモンを実行している場合、ポリシーを処理させます。 -supportの「/ usr/share/acpi-support/policy-funcs」ファイル。
 
 [-r/usr/share/acpi-support/power-funcs] && getXconsole 
 PMS = "gnome-settings-daemon kpowersave xfce4-power-manager" 
 PMS = "$ PMSガイダンス-power-manager.py dalston-power-applet" 
 
 if pidof x $ PMS>/dev/null; then 
 exit 
 Elif test "$ XUSER"!= "" && pidof dcopserver>/dev/null && test -x/usr/bin/dcop &&/usr/bin/dcop --user $ XUSER kded kded loadedModules | grep -q klaptopdaemon; then 
 exit 
 Elif test "$ XUSER"!= "" && test -x/usr/bin/qdbus; then 
 kded4pid = $(pgrep -n -u $ XUSER kded4)
 if test "$ kded4pid"!= ""; then 
 dbusaddr = $(su-$ XUSER -c "grep -z DBUS_SESSION_BUS_ADDRESS /proc/$kded4pid/environ")
 if test" $ dbusaddr "!=" "&& su-$ XUSER -c "export $ dbusaddr; qdbus org.kde.kded" | grep -q powerdevil; then 
 exit 
 fi 
 fi 
 fi 
 
#他のすべてが失敗した場合は、単純なシャットダウンを開始してください。
/sbin/shutdown -h now "電源ボタンが押されました" 
1
green