試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

GDMのログイン画面でhibernate-scriptを使用して休止状態に入る

ディスプレイマネージャ(ログインマネージャ)であるGDMでは、メニューから再起動やシャットダウンが行えるが、このメニューからhibernate-script*1による休止を行えるようにしてみた。
シャットダウンの代わりに「ログアウト後に休止状態を選択」することで、起動/終了時間を短縮できる。*2

  1. GUIによる設定はうまくいかない?
  2. 再起動/シャットダウンなどのメニュー項目の設定
  3. カスタムコマンドの定義
  4. スクリーンショット

GUIによる設定はうまくいかない?

設定をgdmsetupもしくはGDM上から変更しようとしてもうまく変更されず、設定ファイルを手動で変更後、GDM*3を(管理者権限で)起動し直す*4ことになった。また、「サスペンド」という項目は手元の環境でも仮想マシン上でもうまく動作していない気がするので、隠すようにもした(下の設定による)。
設定ファイルはディストリによって異なる。Debian/Ubuntuでは/etc/gdm/gdm.confGentooでは/etc/X11/gdm/custom.confが使用される。確実に設定を反映させるには、これを手動で編集する必要がありそう。

再起動/シャットダウンなどのメニュー項目の設定

daemon」セクションに「HALT;REBOOT;」などの書かれた行があり、この値を「HALT;REBOOT;CUSTOM_CMD」にする。

SystemCommandsInMenu=HALT;REBOOT;CUSTOM_CMD
AllowLogoutActions=HALT;REBOOT;CUSTOM_CMD

これにより、「サスペンド」は消えて、休止用のカスタムコマンド項目は表示されるようになる。

カスタムコマンドの定義

gdmsetupなどでも編集は可能だが、うまくいかない場合がある。

CustomCommandLabel0=休止状態(_H)
CustomCommandLRLabel0=休止状態(_H)
CustomCommand0=/usr/sbin/hibernate
CustomCommandIsPersistent0=true
CustomCommandNoRestart0=true
CustomCommandTooltip0=システムを休止します
CustomCommandText0=本当にシステムを休止しますか?

上のような記述を設定ファイルの一番最後に追加しておけばOK。

スクリーンショット

Ubuntu Gutsy上で設定したところ。/etc/acpi/hibernate.shを使用するよりも機能/カスタマイズ性ともに優れているので、hibernate-scriptへの乗り換えを推奨。

メニューの表示

確認ダイアログ

使用したバージョン:

*1:TuxOnIce/uswsusp/sysfsのいずれの方式にも対応し、カスタマイズ性も高い休止スクリプト

*2:単独ユーザで使用している場合は、ユーザのセッション内で休止したほうが作業状態も保存でき、ロックもできるので、そちらのほうがよい

*3:面倒ならシステム再起動でもOK

*4:「/etc/init.d/gdm restart」となっているディストリが多そう。Gentooでは「/etc/init.d/xdm restart」