サスペンドをショートカットに追加する(Ubuntu12.04)

PCが起動するのを待ちたくないので、いつもシャットダウンではなくサスペンドを使用しています。
Ubuntuにはサスペンド機能のショートカットや設定項目が存在しません。そこで、サスペンドを行うキーボードショートカットを Ubuntu に追加する設定をしました。

追記:Githubにてサスペンドのショートカットを簡単に追加できる bashスクリプトを公開しました。
サスペンドをショートカットに設定するスクリプト(簡易版)を実行した結果

サスペンドを行うためのコマンドを探し、それをキーボードショートカットに登録します。
環境は Ubuntu 12.04 です。

コマンドによるサスペンド

サスペンドのコマンドはこちらから。すぐに見つかります。
下記コマンドでサスペンド可能であることを確かめてください。
(注意:成功すればサスペンドします。失敗するとシステムが停止することもあり、再起動しなければならなくなるので注意してください。)
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

コメントによると、「pmiコマンドのソースを覗いたらこうやっていたよ」ということのようです。将来この方法が使えなくなった際に困らないよう、素直にpmiコマンドを導入しておいたほうが良いかもしれません。
とはいえ、上記コマンドを使用する今回の方法では、下記のインストールは不要です。
sudo apt-get install powermanagement-interface

また、検索によく引っかかる「 apt-get install hal 」も、Ubuntu 12.04環境では不要かと思われます。
すくなくとも私の環境では不要だったのですが、ハードウェア環境によっては必要になるのかもしれません。

当然ながら、通常操作によるサスペンドに失敗するハードウェア環境では、コマンドによるサスペンドも上手く行きません。事前に確認してください。


キーボードショートカットへの登録

コマンドライン上で gconftool-2 を使用して、ショートカットキーを設定します。
システムのキーボードからショートカットを追加してもよいのですが、今回はコマンドラインにて作業を行います。

以下のコマンドにて設定ファイルに書き込むことで、キーボードショートカットを使用することができます。


サスペンドのキーボードショートカット設定は以下の通りです。
#設定を書き込む前に、gconfデーモンを停止させておく
$ gconftool-2 --shutdown
#ショートカット設定の名前
$ gconftool-2 -t str --set /desktop/gnome/keybindings/custom1/name "サスペンド"
#割り当てるキー
$ gconftool-2 -t str --set /desktop/gnome/keybindings/custom1/binding "<CTRL><SHIFT><ALT>l"
#割り当てるコマンド
$ gconftool-2 -t str --set /desktop/gnome/keybindings/custom1/action 'dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend'


上記のコマンドを実行すると、ショートカットの情報を記録した設定ファイルが作成されます。
Ubuntu 12.04における設定ファイルへのパスはこちらに。
以下のコマンドで設定ファイルを見ることができます。
(Ubuntu 12.10から、設定ファイルのパスが変わっているようです。)
less  ~/.gconf/desktop/gnome/keybindings/custom1/%gconf.xml

上記の設定が追記されているのを確認できると思います。
「設定」からも、GUI上でショートカットキーが追加されているのを確認できます。

$ gconftool-2 --shutdown 」コマンドを打たずにショートカットキーを登録すると、gnomeデスクトップの表示がおかしくなる場合があります。
これは、ログアウトするか再起動すれば直ることがあります。
直らなかった場合、GConfの設定を、ディレクトリごと破棄すると解決します。
(下記のコマンドはバックアップを行っている。)
$ mv ~/.gconf/ ~/.gconf-back
デフォルト値にリセットするコマンドも存在するようですが、私の環境では上手くいきませんでした。

メニューバーなどの表示がおかしくなってしまったGnomeデスクトップ

デフォルトで存在するショートカット項目の設定は、別の場所に保管されているらしく、上記の設定削除を行ってもリセットされません。
また、デフォルトのショートカット項目と、カスタムショートカットでキーの割り当てが被る場合、デフォルトの項目が優先されます。
その他の設定ファイルおよびディレクトリのパスについては、以下が詳しいです。
http://docs.oracle.com/cd/E19253-01/819-0665/gconf-0/index.html


複数のショートカットキーを登録したい場合、gnoftool-2に指定する設定の custom1 の数字の部分を変更します。
シェルスクリプトで自動設定するならば、事前にキーの存在を確認して上書きを避けるように書くかと思います。今回は人間が作業したので、作業者が目視確認すれば十分でした。


シェルスクリプト版

おまけとして、以下にキーボードショートカット設定シェルスクリプトのサンプルを置いておきます。


#!/bin/bash
#キーボードショートカット設定スクリプト
#

#設定前にgconfデーモンを停止させておかないと、
#gnomeデスクトップ表示が乱れて元に戻らなくなることがある(Ubuntu12.04にて確認)
gconftool-2 --shutdown





#パスの custom* は、重複するものが他にあれば上書きされる。
#上書きを避けたければ事前にチェックする必要がある。
gconftool-2 -t str --set /desktop/gnome/keybindings/custom1/name "サスペンド"
gconftool-2 -t str --set /desktop/gnome/keybindings/custom1/binding "<CTRL><SHIFT><ALT>l"
gconftool-2 -t str --set /desktop/gnome/keybindings/custom1/action 'dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend'

gconftool-2 -t str --set /desktop/gnome/keybindings/custom2/name "タイマー撮影でスクリーンショットを撮る"
gconftool-2 -t str --set /desktop/gnome/keybindings/custom2/binding "<Super>Print"
gconftool-2 -t str --set /desktop/gnome/keybindings/custom2/action 'gnome-screenshot --delay=5'


以上です。

0 件のコメント:

コメントを投稿

Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換する

 Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換することができるが、上手く変換されない場合がある。   以前作った魔法陣イラスト素材をイラスト素材ストックサイトへ登録しようと思い立ち、改めて素材用にラスタライズ変換をかけようとした。   ラスタライズ変換...