電源ボタン押下でマシンをシャットダウンする方法について記載します。ここで言う電源ボタン押下とは、電源ボタン長押しによるハードウェア電源断ではなく、ソフトウェアに通知が届くリセットのことです。
Table of Contents
1 電源ボタン押下のアクションをシャットダウンにする
GUIとCUIでアクションをシャットダウンに変更する方法について記載します。
1.1 GUIで変更する
以下の手順で"Power Management"のダイアログを開きます。
Application -> Configure Desktop -> Hardware -> Power Management
"Energy Saving"の"Button events handling"のアクションを"Shutdown"にします。
1.2 CUIで変更する
${HOME}/.kde4/share/config/powermanagementprofilesrcを以下のように変更します。
> patch -p1 <<EOF diff -uprN a b --- a/.kde4/share/config/powermanagementprofilesrc 2016-12-11 20:37:20.989520207 +0900 +++ b/.kde4/share/config/powermanagementprofilesrc 2016-12-11 20:38:06.505098605 +0900 @@ -9,7 +9,7 @@ idleTime=300000 [AC][HandleButtonEvents] lidAction=1 -powerButtonAction=16 +powerButtonAction=8 [Battery] icon=battery-060 EOF
2 SSH接続していると確認ダイアログでシャットダウンが阻害される
SSH接続していると"Turn Off Computer"というタイトルのダイアログが表示され、OKを押すまでシャットダウンされません。
このダイアログはkdmパッケージによるもので、現状はダイアログの表示を抑制する方法はソースコードを変更するしかありません。そこでソースコードを変更して、rpmbuildでkdmパッケージを作り直します。kdmパッケージのソースコードはkdebase4-workspaceに含まれます。
rpmbuildを実行する為にrpm-buildをインストールします。
> sudo zypper -n in rpm-build
kdebase4-workspaceのソースコードをインストールして、~/rpmbuildにコピーします。
> sudo zypper -n si kdebase4-workspace > mkdir ~/rpmbuild > cp -a /usr/src/packages/* ~/rpmbuild > cd ~/rpmbuild
ダイアログを表示する処理を無効化するパッチを作成します。
> cat <<EOF > SOURCES/kdm-force-shutdown.patch diff -uprN kde-workspace-4.11.20.org/kdm/kfrontend/kdmshutdown.cpp kde-workspace-4.11.20/kdm/kfrontend/kdmshutdown.cpp --- kde-workspace-4.11.20.org/kdm/kfrontend/kdmshutdown.cpp 2015-05-29 10:30:26.000000000 +0900 +++ kde-workspace-4.11.20/kdm/kfrontend/kdmshutdown.cpp 2016-12-18 12:47:02.930448162 +0900 @@ -570,6 +570,7 @@ KDMSlimShutdown::checkShutdown(int type, void KDMSlimShutdown::externShutdown(int type, const QString &os, int uid, bool ask) { +#if 0 /* Force shutdown */ QList<DpySpec> sess = fetchSessions(lstRemote | lstTTY); if (ask || !sess.isEmpty() || (uid && _allowShutdown == SHUT_ROOT)) { int ret = KDMConfShutdown(uid, sess, type, os).exec(); @@ -580,6 +581,7 @@ KDMSlimShutdown::externShutdown(int type return; } } +#endif doShutdown(type, os); } EOF
SPECファイルでパッチを適用するようにします。
> patch -p1 <<EOF diff -uprN a/SPECS/kdebase4-workspace.spec b/SPECS/kdebase4-workspace.spec --- a/SPECS/kdebase4-workspace.spec 2015-06-13 09:16:13.000000000 +0900 +++ b/SPECS/kdebase4-workspace.spec 2016-12-18 05:07:56.014437504 +0900 @@ -147,6 +147,7 @@ Patch71: kde-workspace-4.11.0-kdm Patch72: much-more-plasma-debug.patch # PATCH-FIX-OPENSUSE systemsettings-desktop-kde4.diff -- Changes name of System Settings to Configure KDE 4 Applications Patch73: systemsettings-desktop-kde4.diff +Patch1000: kdm-force-shutdown.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: %{name}-branding = %{_kde_branding_version} Requires: %{name}-ksysguardd = %{version} @@ -403,6 +404,7 @@ This package contains the KDE Workspace %if %suse_version > 1320 %patch73 %endif +%patch1000 -p1 cp %{SOURCE3} kwin/effects/cube/data/cubecap.png EOF
rpmbuildでkdmパッケージを作成します。
> rpmbuild -ba SPECS/kdebase4-workspace.spec
kdmパッケージをインストールして、一度システムを再起動します。これ以降はダイアログが表示されません。
> sudo zypper -n in RPMS/x86_64/kdm-4.11.20-29.5.x86_64.rpm > sudo reboot