☆scrotで連続スクリーンショット

前回の投稿はscrotで約一秒毎のスクリーンショットを取りました。
ターミナルで適当なディレクトリを作って移動し、以下のコマンドラインを実行。
停止はCtrl+Cです。(忘れると大変なことになりますが....)

while true; do sleep 1;scrot -b -u 'usplash-%j-%T.png'; done

出来上がるファイル名は後で選別する際にわかりにくいので、まとめてリネームします。
いきなりはリネームは怖いので、まずは表示して確認、そのごシェルに渡して実行です。
以下のようなperlスクリプト"ren_scrot.pl "を作り、実行権限をつます。

#!/usr/bin/perl
my($prefix) = shift;
my($i) = 0;
while(<>){
    chomp;
    next if /^$/;
    $i++;
    $file = sprintf "${prefix}-%03d.png", $i ;
    print "mv $_ $file\n";
}

使い方は

ls *.png | ren_scrot.pl hoge
(hogeはプレフィクス) 出力を確認して問題なければ
ls *.png | ren_scrot.pl hoge | bash -s
でリネームを実施します。

一旦投稿してから

i=0; while true; do sleep 1;i=$(($i + 1)); scrot -b -u `printf 'hoge-%03d.png' $i`; done
でもOKだと思いました。つどprintfコマンドを起動するところが若干重いような気もしますが。
ren_scrot.pl は別の用途でも使えますし。(完全に自分に対する言い訳ですねこれは。)

☆Karmicのusplashをカスタマイズ

Karmicでは高速化のためにusplashのプログレスバーが無効になっています。
(ソースに "/* disable progress bar in Ubuntu 9.10 due to faster boot */" と書いてあります。)
このために起動の進捗具合が分かりにくくなっています。起動にかかる時間を短縮することも重要ですが、プログレスバーが表示された方が良いと思っている方も多いのではないでしょうか。

プログレスバーを出すだけならばusplash-theme-ubuntu-colorパッケージを導入すればjauntyと同じ状態になります。
しかし、私はKarmicのモノトーンが好きなのでusplash-theme-ubuntu-colorでは満足出来ません。そこでusplash-theme-ubuntuのソースパッケージを取得してプログレスバーを有効にします。
ついでにgrubの設定を少しいじってusplashの下側に実行しているプロセスを表示するようにします。

百聞は一件に如かず。まずはスクリーンショット

usplash表示前
変更前はこのとき画面が真っ黒
usplash表示初期
インジケーターが行ったり来たり
usplash表示後期
プログレスバーが伸びて行く

ちなみにGDMを使っている場合はこのあとxsplashが少しのあいだ表示され、GDMのログイン画面が表示されます。
SLiMならxsplashなしですぐにログイン画面です。速さを求めるならSLiMよいですよ。

●grubの設定

まずは簡単な方から。/etc/defalt/grubを編集します。 変更対象のエントリは"GRUB_CMDLINE_LINUX_DEFAULT"。"quiet"を取り除きます。 変更前

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
変更後
GRUB_CMDLINE_LINUX_DEFAULT="splash"

その後、/boot/grub/grub.cfgを作り直します。

sudo update-grub

●usplashのソース改変

例によって、作ったパッケージをUpしました。
作業過程に興味のない方や開発用のパッケージを入れたくない方はこちらをどうぞ。
https://sites.google.com/site/midspeclowload/files/usplash-theme-ubuntu-mono_0.27_i386.deb?attredirects=0&d=1

一通り自分で作業される場合は、Ubuntu Weekly Recipe 第16回を参照して必要なパッケージを導入します。
作業用のディレクトリでusplash-theme-ubuntu のソースを取得。

sudo apt-get source usplash-theme-ubuntu
usplash-theme-ubuntu-0.27の下にあるusplash-theme-ubuntu.cをusplash-theme-ubuntu-mono.c にリネームします。
Makefile, debian/rules, debian/changelog, debian/control, debian/postinstに含まれている文字列”usplash-theme-ubuntu”をすべて”usplash-theme-ubuntu-mono”に置き換えます。

usplash-theme-ubuntu-mono.cをエディタで開いて"#if 0"を検索します。ここから"#endif"までがプログレスバーの処理をする関数のようです。そのさらに下に中身がからっぽの関数が定義してあります。
空っぽの方を"#if 0"、"#endif"で挟んで無効化し、ちゃんと中身のある方を有効にします。

このままではロゴとプログレスバーが重なってしまうので、ロゴのY座標を調整します。usplash-theme-ubuntu-colorのソースを取得して、Y座標だけusplash-theme-ubuntu-color.cと同じにします。

改変したソースは
https://sites.google.com/site/midspeclowload/files/usplash-theme-ubuntu-mono_0.27_i386.deb?attredirects=0&d=1
にあるのでオリジナルと比べて見てください。

パッケージをビルドします。

debuild -r fakeroot
一つ上のディレクトリにパッケージが作成されます。

●usplashの導入、設定

作成したパッケージを導入します。

sudo dpkg -i usplash-theme-ubuntu-mono_0.27_i386.deb

これでupdate-initramfsが走っているのですが、なぜかこれだけでは新しいusplashに変わってくれません。
update-alternativesに指定している優先度の問題かもしれませんが、ここはツールに頼ります。startupmanagerを導入します。

2010/02/28 この件に関するフォローを投稿しました。☆Startup- Managerに頼らないUsplashの変更

sudo apt-get install startupmanager
gksudo startupmanager &
設定画面の[外観]タブのリストボックスから導入したusplashを選択します。[閉じる]を押すとupdate-initramfsが起動されます。

ちなみにstartupmanagerの[起動オプション]タブにある[その他]以下の2項目は"GRUB_CMDLINE_LINUX_DEFAULT"ではなく"GRUB_CMDLINE_LINUX"を変更するようです。
"GRUB_CMDLINE_LINUX"はrecovery modeのオプションを設定する項目みたいです。
こちらをいじっても通常の起動には影響しません。

☆コマンドラインで保存ファイル名が指定できるスクリーンショト取得ツール scrot

スクリーンショットを取得する場合は大抵、"hoge-01.png" のように "何か意味のある名前" + "ユニークにするための連番" + ".拡張子" つけることが多く、都度ファイル名を入力するのが面倒です。
Ubuntu標準のgnome-screenshotやxfceのxfce4-screenshooterはコマンドラインでファイル名を入力することができませんし、連番をつけてくれるような機能もありません。

例によってまずは、apt-cache search 'screenshot' で候補を探します。KDEやqtベースのものを除外していくと shutter くらいしか残りませんでした。
shutterのWebサイトを見て http://shutter-project.org/faq-help/man-page/ みると残念ながらコマンドラインでファイル名の指定はなさそうです。
とりあえず試そうと apt-get install shutter すると30個ほどパッケージが導入されるので中止しました。

ここで、そういえばSLiMを導入したときにscrotを入れていたことを思い出しました。
少なくともコマンドラインで保存ファイル名が指定できることは判っています。
ということは少なくとも簡単なスクリプトを書けば連番でスクリーンショット取れることは確実です。しかも超軽量。

もっと便利な方法があるかもしれないので、man scrot。
調べてみると日時をファイル名に含ませるような指摘が可能なので連番の代わりにこちらを使うことにしました。
日時はdateコマンドの書式指定と同じでstrftimeで解釈されると書いてあります。
選択した範囲やウィンドウのキャプチャもできるようです。
取得した画像を確認したいので Eye Of Gnome を組み合わせて使うことにします。
(mirageを使いたかったのですが、EoGのようにディレクトリ内にファイルが増えたことを認識しないのであきらめました。)

●取得作業の例

まずは取得したスクリーンショットを保存するディレクトリを用意しておきます。
ここではとりあえず "~/png/" とします。
eogは画像の入っていないディレクトリを指定して起動すると、後から画像ファイルができても見てくれません。(gthumはOKだったりしますが)
そこで一回目のキャプチャを行ったときにscrotから起動します。( -e オプションを使用)
初回キャプチャ時のコマンドラインは以下のようにします。(保存ディレクトリに移動してから)
3秒後に[選択範囲またはアクティブウィンドウ]をキャプチャする指定です。
ついに "-t 25" で25%の大きさのサムネイルを作っています。
"Taking shot in"の後ろは一秒ごとに3,2,1とカウントダウンされていきます。(-d オプション)
-s をつけていると起動した端末がフォーカスを失ってからカウントダウンを始めるようです。

$ scrot -b -c -d 3 -s -t 25 '%j-%T.png' -e 'eog $f'
Taking shot in 3.. 2.. 1.. 0.
2度目からは" -e 'eog $f'" を省いて起動します。
$ scrot -b -c -d 3 -s -t 25 '%j-%T.png'
Taking shot in 3.. 2.. 1.. 0.
これでスクリーンショットを取るたびにEoGのサムネイルの箇所に表示されるファイルが増えていきます。

取得したキャプチャのサンプル
(この表示ではわかりませんが、ちゃんとサムネイルは25%サイズになってます。)
Eye Of Gnome の状態

参考までに出来上がったファイル(サムネイルは取得時指定したファイル名の ".png" を "-thumb.png" に置き換えた名称になってます。)

~/png$ file *
037-23:23:52-thumb.png: PNG image, 239 x 222, 8-bit/color RGB, non-interlaced
037-23:23:52.png:       PNG image, 957 x 890, 8-bit/color RGB, non-interlaced
037-23:24:50-thumb.png: PNG image, 239 x 222, 8-bit/color RGB, non-interlaced
037-23:24:50.png:       PNG image, 957 x 890, 8-bit/color RGB, non-interlaced
037-23:25:06-thumb.png: PNG image, 242 x 248, 8-bit/color RGB, non-interlaced
037-23:25:06.png:       PNG image, 968 x 994, 8-bit/color RGB, non-interlaced

☆Windowsで多ボタンマウス

Windowsで多ボタンマウスが使えるのは当たり前ですが、それは大抵Windows用のドラバが着いてくるからです。
しかし古いマウスを比較的新しいバージョンのWindowsで使おうとしたり、逆に新しいマウスを古いWindowsで使おうとするとMicrosoftやロジクール製のマウスでもドライバが入手できなかったりします。

また複数のマウスを所有していて、たまに付け替えたりする場合はドライバの入れ替えが悩ましいです。
(レジストリを汚すのがいやですし、アンインストールが適切になされるか心配。)

そこで私はX Wheel NTを使ってます。 サイドボタンをPageUp,PageDownに割り当てるくらいしか機能を必要としていないのでこれで十分。 ちなみに Windows 7(RC版ですが)でも動作しました。

X Wheel NT のスクリーンショット (OSはWindows XP)

XWheelNT-01 XWheelNT-02

☆Ubuntu Karmic で多ボタンマウス

"Ubuntu"と"多ボタンマウス"で検索すると大抵xorg.confを編集する方法が上位に出てきます。
ならばと思い"fdi"を足すとThink Padのタッチパッドようの設定が上位に出てきます。
やっとの思いで見つけたのが
『Ubuntu Weekly Recipe 第13回 ポインティングデバイスのカスタマイズ(2):マウスボタンの設定』
2ページ目の最後のほうに自分のやりたいことが実現できる方法が載ってました。 2008年4月9日の記事ですが、Karmicでも有効でした。

著者の吉田史さんに感謝。

実現したかったことは使用しているマウスのサイドボタンにPageUp、PageDownキーを押した場合と 同じ動作を割り当てることです。 手順は上記の記事とほぼそのまま。記事中で「ボタンへのキー割付の変更 」という見出し以降の手順を行えばOKです。(xorg.confの編集は当然必要なし)

[xvkbd,xbindkeyslの導入]
$ sudo apt-get update
$ sudo apt-get install xvkbd xbindkeys

ちなみに私の環境でサイドボタンにPageUp、PageDownを割り当てる場合、$HOME/.xbindkeysrc の内容は下記のようになります。
(マウスによってb:8とb:9が逆の場合がありました。参照記事にあるとおり必ずxevを用いて,ボタンの割り当てを確認しましょう。)

"/usr/bin/xvkbd -xsendevent -text "\[Page_Up]""
  b:9
"/usr/bin/xvkbd -xsendevent -text "\[Page_Down]""
  b:8

参照記事の最後のxbindkeysを自動起動するように設定する箇所は、端末で

gnome-session-properties &
とコマンドをたたいて設定画面を起動しました。
(このほうが使用しているディスクトップ環境に操作が依存しないです。ちなみに私はxfceです。)
$HOME/.config/autostart ディレクトリにxbindkeys.desktopというファイルができます。
内容は下記のとおりです。
[Desktop Entry]
Type=Application
Exec=xbindkeys
Hidden=false
X-GNOME-Autostart-enabled=true
Name[ja_JP]=xbindkeys
Name=xbindkeys
Comment[ja_JP]=xbindkeys
Comment=xbindkeys