スクリーンショットツール「Shutter」をAppImage化してみた

2022/02/04追記
今はksnipがぶっちぎりで良くなったのでShutterを捨ててksnipに完全に移行しました。Flatpakで簡単にインストールできるのでksnipを使いましょう。
今年の4月ぐらいにスクリーンショットツール「Shutter」の代わりがない問題と書きましたが、Perlの更新とともにDebianのリポジトリから見事に消されました。 どうしようかと思いつつ代わりのツールを試したのですが、しっくりこないのでStretchにあるShutterパッケージをAppImage化して、もう少しだけ延命を図ることにしました。
AppImageの実行ファイルは置かないので、各自自分で作ってください。
参考
これ以外に参考になる文書は無いと思います。
- pkg2appimage — AppImage documentation: https://docs.appimage.org/packaging-guide/converting-binary-packages/pkg2appimage.html
AppImageファイルの作り方
AppImageのレシピがあるAppImagesリポジトリをクローンして中に入ります。
$ git clone https://github.com/AppImage/AppImages.git appimages
$ cd appimages/
以下のレシピをshutter.ymlなど適当な名前で保存して、recipes/ディレクトリ以下に保存します。gistにも同じものを置いてます。
-
https://gist.github.com/nogajun/6c93dfac9d5fe30e727a4e66ce847e1a
app: shutter binpatch: true ingredients: dist: stretch packages: - libxml-sax-expat-perl - libimage-exiftool-perl - libnet-dbus-glib-perl - libgoo-canvas-perl - libgtk2-appindicator-perl sources: - deb http://deb.debian.org/debian/ stretch main pretend: - libdbus-1-3 1.10.26-0+deb9u1 - libgtk2.0-0 2.24.31-2
debパッケージをAppImageに変換するシェルスクリプトpkg2appimageを実行して、パッケージをAppImage化します。
$ ./pkg2appimage recipes/shutter.yml 2>&1 | tee shutter.log
しばらく待つとout/ディレクトリ以下にイメージが出来上がっているので実行します。
$ ./out/Shutter-0.93.1.glibc2.17-x86_64.AppImage
まとめとか
実を言うと、そのままレシピを書いて作れるかと思いAppImage化に手を付けましたが、パッケージの依存関係が解決できずに止まってしまうので放置してました。
ある日、気になってドキュメントを読むと、pretendのところに「正確なバージョンが無いとパッケージのインストールが拒否されることがあります。それを回避するにはpretendにバージョン番号を指定します。」と書いてありました。
なんの事かと調べたら、AppImage化に不要なライブラリパッケージを除外するために存在しないバージョン番号を指定しているようで、これにひっかかると依存関係が芋づる式に解決できなくなってパッケージがインストールできなくなる、という事のようでした。
原因を探っているとき、パッケージのワークディレクトリにexcludedeblistというファイルがあったので改めて見ると引っかかったであろうdbusとgtk2のライブラリがあったのでpretendに指定してビルドすると…。
できた!
ということでAppImageパッケージができましたが、正直なところ、まだよくわかってないです。
パッケージのクオリティを上げたところで、この先、Shutterが使えなくなる事は目に見えているので一応使えればいいかということでメモを公開しました。
_ Shutterの代わりにKsnipがいいところまで来ているけど、まだもう少しな感じ
2022/02/04追記
今、ksnipはスクリーンショットが貯められる上にテキストや矢印入れたりめちゃくちゃ使いやすくなっています。
- DamirPorobic/ksnip: Ksnip is a Qt based cross-platform screenshot tool that provides many annotation features for your screenshots.: https://github.com/DamirPorobic/ksnip
そう。いい感じなんだけど画像をためて編集ができないのが、ちょっとつらい。