gnome-screenshotをgyazo用にいじったメモ

タイトルの通りgnome-screenshotをちょっといじった。
gnome-screenshotは簡単に言うとGNOMEスクリーンショットを撮る(Alt + Print Screen)
ときに起動するアレです。
どんな風にいじったかというとオプション引数で保存するファイル名を指定できるようにしました。
このオプションが渡されていなければダイアログを出して保存するパスを聞いてきます。


タイトルの「gyazo用に」というのはgyazo for linuxRubyスクリプトなんですが、
それの中でスクリーンショットを撮るプログラムとしてImageMagickのimportコマンドを使っていて、

  • これだと透過ウィンドウが透過していなかったり
  • なぜかfirefoxのウインドウがまったく無視されてしまったり(なにか特別なことでもしてるんでしょうか...)

とさんざんなので、gnome-screenshotを使えばこういうことは起こらないのでぜひgnome-screenshotを使いましょう、
ということで調べたところgnome-screenshotはファイル名は必ずダイアログに入力しないといけなくて保存するファイル名を指定できない。

そこで冒頭のようなオレオレ改造を施したgnome-screenshotを作ろうということになりました。

まず

どのパッケージに属してるか調べる。

$ dpkg -S =gnome-screenshot
gnome-utils: /usr/bin/gnome-screenshot

ソースをダウンロードしてくる。
(いろいろカレントディレクトリにダウンロードされるので注意)

$ apt-get source gnome-utils

改造する

できた。
でも考えてみればリポジトリから持ってきた方が最新はそっちだし
Githubに公開する時も楽だということに気付いた。

適当に(Githubで)ググる

公式は
http://live.gnome.org/GnomeUtils
なんだけどふとGithubで検索したらいくつかあるみたいだった。

Githubにあったほうがforkするだけで楽だしforkすれば容量が浮くしということで
今回はコミットの日付が新しい2番目のをベースに変更していくことにした。


というかすでに変更したので変更したファイルを適当にコピーする。
apt-get sourceで取ってきたのはちょっと古くて
いくつか自分が変更したのとは違う変更があったので
git checkout -pで自分だけの変更を残してコミット。


あとついでだけどGNOMEのプロジェクトはだいたいGitで管理されてるらしく
All Projects
に全プロジェクトのリポジトリのリストがありました。(ググってるうち見つけた)

ビルドするために最新版のパッケージをインストールする

aptからだとどうしても古くていくつかソースからインストールした。

  • glib (2.27.0)
  • gtk+ (2.20.0)
    • atk (1.30.0)
    • gdk-pixbuf (2.22.0)

本家
いくつかのミラー
ミラー (ftp.nara.wide.ad.jp)

  • libgwibber-gtk (0.0.6)

Maverick (10.10) : libgwibber package : Ubuntu

インストールは/optに

動作確認のために/usrとか/usr/localにインストールするのは嫌だったので
自分は/optにインストールした。($HOME/localでもなんでも好きなところにすればいいと思う)

$ ls /opt
atk-1.30.0  gdk-pixbuf-2.22.0  glib-2.27.0  gtk+-2.20.0
どうでもいい

libgwibberって何かというと
Ubuntu使ってる人には知ってる人いるかもしれないけど
gwibberっていうtwitterクライアントがあって
それをGTKとかで使えるAPI

なんでそんなものが必要になってるかというと、
gnome-screenshotでいつのまにか撮った写真をtwitterで共有できるようになってた。
詳しいことはわからないけど、「Share」ってタブが追加されてたりした。


あといつからかはわからないけどスクリーンショット撮る時に音が鳴るようになってるみたい?
といっても今のPCは音鳴らないのでわからないけど。

setupenv

動作確認の時はsetupenvってスクリプトを書いていろいろテストするための環境を整えた。

tyru/setupenv · GitHub

$ setupenv shell /opt/{atk-1.30.0,gdk-pixbuf-2.22.0,glib-2.27.0,gtk+-2.20.0}
# sudoはldconfigのために必要
[sudo] password for tyru:
spawning new shell(/bin/zsh)...
$

すると新しいシェルが立ち上がる。
自分はデフォルトシェルがzshなのでzshが起動している。


$LD_LIBRARY_PATHとか$PKG_CONFIG_PATHが変更されてるので
新しい方のgtk+とかの関数が呼ばれたり
(この場合はgnome-sreenshotの)ビルドが通ったりして
ようするにこの中で動作確認ができる。
システムには影響しないので便利です。

結果

tyru/gnome-utils at write-to-filename · GitHub
http://github.com/tyru/gyazo-linux/tree/gnome-screenshot

無事ウインドウもスケスケになりました。
よかったですね。