Linux
byzanz

Linuxデスクトップ環境を Gifに記録する

More than 3 years have passed since last update.

Windowsや MacOSXだと Licecapやその他様々なツールで作業などを Gifで記録することができるのですが, Linuxだとそのようなツールがあまりありません. 動画形式で記録しそれを gifに変換というのがわりといろいろなところで書かれている印象ですが, そうやって作成した Gifは綺麗でないわりにファイルサイズがやたらでかいものとなることが多いです.

Linux環境にまともなものないんかいと思っていたところに見つけたのが byzanzです. これで作成した Gifはサイズが小さめなわりに品質は高く Githubの README.mdにも問題なく貼れます.


インストール

Debian系は以下のとおりです. (注: 古い Ubuntuだと PPAから取得する必要があります)

% sudo apt install byzanz

Redhat系は以下のとおりです(Fedoraにはパッケージがあるようです.)

% sudo yum install byzanz


使い方

以下のようになります.

% byzanz-record --duration=15 --x=200 --y=300 --width=700 --height=400 out.gif

いちいち座標を指定するのが面倒ですね. そこで拙作の byzanz-windowです.


byzanz-window

上述の通りコマンドラインからすべて操作するのは面倒なので, byzanzには byzanz-window.pyという Pythonで書かれたユーティリティが付属していました. しかしそれは Python2でしか動かないもので, Python3をメインに使っている私の環境では動きませんでした. そこでそれを Goで書き直し, マウスでドラッグした範囲を撮影する機能を追加しました.


リポジトリ

https://github.com/syohex/byzanz-window


事前準備

Debian系の場合

sudo apt install byzanz xdotool x11-utils libx11-dev

Redhad系の場合

sudo yum install byzanz xdotool xorg-x11-utils libx11-devel


インストール

一応バイナリもおいていますが, あまり確認していないのでソースからインストールした方が確実かと思います.

% go get -u github.com/syohex/byzanz-window/cmd/byzanz-window


利用方法

基本的には以下のようになります.

% byzanz-window --duration=30 --delay=5 output.gif

--durationで取る時間(単位: 秒), --delayで何秒後から撮影を開始するか, 最後に出力するファイル名を指定します. 基本はこれらのオプションと後述するモード指定のためのオプションで十分と考えます. その他のオプションは --helpREADME.mdを参照してください.

撮影モードは 2つあり, 指定したウインドウを記録する Windowモード(デフォルト)と特定の領域を記録する rectangleモード(--rectangleモードを指定)


Windowモード

操作は以下のようになり,

window-mode1

出力される Gifは以下のようになります.

window-mode2


Rectangleモード

操作は以下のようになり,

rectangle-mode1

出力される gifは以下のようになります.

rectangle-mode2


おわりに

Linuxデスクトップ環境で作業を Gifで記録するための byzanzとそのユーティリティである拙作の byzanz-windowを紹介しました. 他にいいツールをご存知の方がいればぜひ教えていただければと思います.