☆コマンドラインで保存ファイル名が指定できるスクリーンショト取得ツール 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

☆EoGやgThumbではなくMirageを使う理由

今回はUbuntuで使う画像ビューアについて。
私が使っているのは Mirage http://mirageiv.berlios.de/ です。

Mirageの日本語訳は蜃気楼ですが、私はなぜかフランスの戦闘機でそんな名前のものがあったことを思い出しました。

Mirageのスクリーンショット


こちらは Eye of Gnome(EoG) http://projects.gnome.org/eog/


そして gThumb http://live.gnome.org/gthumb


Mirageを使用するようになったキッカケはMoblinですが、 EoGやgThumbより以下の点で優れていると思います。

●サムネイルがサイドに出る。(これが私にとって最大のポイント)

画面は4:3にしろ16:9にしろ横長であることに変わりがありません。
サムネイルが横に出ていた方が画像を大きく表示することが出来ます。

gThumbはサムネイル表示をする"browser window"と大きく表示する"viewer window"が完全に別です。

●画像をスペースキーやツールバーの矢印で進めて行っても先頭へWrapしない

EoGは画像を進めていくと先頭にもどってしまいます。これを制御する設定は無いようです。
(特に下部にサムネイルを表示していない状態で同じようなファイルがたくさんあるディレクトリを閲覧していると迷子になってしまいます。)

gThumbは最後の画像で止まります。これを制御する設定は無いようです。

Mirageは設定に"Wrap around imagelist"という項目があって、"No","Yes","Prompt"が選べます。

●[ファイルを開く]と[ディレクトリを開く]がはっきり分かれている

EoGは単一ファイルを選択して開いても同一ディレクトリに存在する画像ファイルがすべてサムネイル部分に表示されます。(なぜか2つ以上のファイルを指定した場合は、素のファイルだけがサムネイル部分に表示される。コマンドライン指定でも同様。)

gThumbはGUIの場合、[ディレクトリを開く] しかできないようです。コマンドラインではEoGと同じような動作をします。ただし --viewer と 単一ファイルを指定すると一つのファイルを開けます。

MirageはGUIではメニューに [ファイルを開く]と[ディレクトリを開く]が別々にありますし、コマンドラインでも単一ファイルを指定、複数ファイル指定、ディレクトリ指定ともに指定したとおりの動作をします。

その他Mirageには下記のような機能があります。
○スクリーンショットの取得
○画像編集(回転、反転、クロップ、リサイズなど)
○カスタムアクションの設定(Gimpで編集など)

改良を望みたい箇所が2点ほどあります。
○ヤシの木見たいなアイコンはちょっといただけないです。画像関連のソフトだと分かるようなアイコンに変えて欲しい。
○ターミナルから起動した場合、結構Warningが端末に出力される。どうもGTKまわりで古いAPIを使っているようです。
/usr/lib/python2.6/dist-packages/mirage.py:1934: DeprecationWarning: Use the new widget gtk.Tooltip
  gtk.Tooltips().set_tip(addbutton, _("Add action"))
/usr/lib/python2.6/dist-packages/mirage.py:1938: DeprecationWarning: Use the new widget gtk.Tooltip
  gtk.Tooltips().set_tip(editbutton, _("Edit selected action."))

ターミナルから起動する頻度が結構高いので、.bashrcに
function miragef() {
    mirage $*  2>&1 |grep -v 'DeprecationWarning:'
}
と言う記述を追加して miragef で起動してます。

☆Ubuntuの壁紙にみるアスペクト比の趨勢

Ubuntu Weekly Topics 2010年1月29日号 の記事を読んでいたら
Top 35 handpicked Ubuntu wallpapers へのリンクがあったので覗いてみました。

見ていて気になったのはアスペクト比がワイドの壁紙が多かったこと。
近頃はノートPCはすべてワイドだし、法人向を覗けばデスクトップも大抵ワイドの液晶です。

そこで壁紙を数えてみました。
ワイド:22枚に対し通常:13枚でした。
壁紙作者さん達の環境は思ったよりワイド化が進んでないように思えました。
(3対1でワイドが多いくらいかとおもってました。)

個人的には16:9の液晶は無駄に横が広い気がして好きではないのです。
どこかのメーカーが4:3で24インチ1600:1200ドットのIPS液晶を3万円くらいで
出してくれないでしょうかね。