8月が終わってしまうので、たぶん一部の人しか必要のないTipsかと思いますが、更新しておきます。

ブログなどでログイン画面を紹介したいとき、これまではその都度、仮想環境にインストールして取得していたのですが、これはいかにも面倒です。使用している環境でログアウトしてキャプチャできれば楽ですよね?ということで、先日、Ask Ubuntuで質問があって、それに回答するために調べたところ、やり方がわかりましたので、紹介しておきます。

なお、最後のステップで、convertというコマンドを使うので、convertコマンドが含まれているimagemagickというパッケージを事前にインストールしておく必要があります。

pic-lightdm-1
下記の方法で取得したログイン画面。Ubuntu 12.04では、lightdmというディスプレイ・マネージャが使われています。

Step1:shot.shの作成

まず、次のコマンドで、/tmpフォルダ内にshot.shというファイルを作ります。

$ echo 'sleep 20; DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/$DISPLAY xwd -root' > /tmp/shot.sh

sleep 20の部分は、テキストモードでスクリプトを実行してからログイン画面をキャプチャするまでの時間を稼ぐための遅延時間を20秒に設定しています。うまくキャプチャできない場合は、長めにしておくといいでしょう。

Step2:テキストモードへの移行

Ctrl+Alt+F1のキーを押してテキストモードに移行してログインします。

Step3:shot.shの実行

テキストモードでログインしたら、次のコマンドを実行します。

$ sudo bash /tmp/shot.sh >/tmp/shot.xwd

Step4:ログイン画面のキャプチャ

ここは時間との勝負です。
Ctrl+Alt+F7のキーを押してGUIモードに戻し、通常の方法でログアウトします。

ログイン画面が表示されたら、キャプチャしたい状態にして、しばらく待ちます(スクリプトの実行から20秒でキャプチャされます)。

Step5:画像データの変換

しばらくしたら、再度、通常の方法でログインします。

スクリプトの実行によって、.xwd形式の画像データが保存されているはずですので、これを端末を使ってconvertコマンドで.png形式に変換します。

$ convert /tmp/shot.xwd /tmp/shot.png

以上で、/tmpフォルダ内に、shot.pngという画像が保存されているはずです。

(注意) /tmp/shot.shは、Step4でログアウトすると消去されてしまいますので、何度も試す場合はバックアップをとっておくといいでしょう。

【参考】 参照したサイトはこちらです。ただし、この参照サイトの記事では、Ubuntu 11.04以前のgdmを前提にしており、12.04のlightdmには対応していません。

補足:unity-greeter

lightdmのサンプル画像を得るだけなら、unity-greeterというコマンドを使っても構いません。

$ unity-greeter --test-mode

unity-greeter
GUIモードで、上のコマンドを実行すると、このような画面が現れます。通常の画面とは違うので、少し面倒ですが、今回の手順で取得した画面の方が使いやすいでしょう。