Wayland 環境での GIF 画面録画

昨日、Firefoxの興味深い機能をいくつか開発していた際に、UIの操作手順を説明する必要がありました。スクリーンショットでは操作手順を詳細に把握できませんでした。GitHubでは操作手順の説明にGIFがよく使われていることを思い出し、コマンドラインから2枚の画像を組み合わせてGIFを作成することもできましたが、少し面倒でした。このようなシナリオでは、画面を録画してGIFを生成するのが理想的です。もちろん、ウェブサイトに動画を埋め込むことも可能ですが、多くのプラットフォームでは動画のアップロードをサポートしていません。シンプルなウェブチュートリアルには、画像の方が適しています。

1. 最後の手段

現在、Linuxエコシステムでは、peekKooha が画面録画からGIFを生成する主流のソフトウェアです。残念ながら、以下の問題が発生しています。

  • peek

私のLabWC環境では、peekで録画したGIFは黒い画面になり、何も表示されません。さらに、作者はもはやメンテナンスを行っていません。詳細はこちらの声明をご覧ください。

  • Kooha

peekが機能しないため、Koohaに切り替えるしかありませんでした。ようやく依存関係をインストールした後、最終コンパイル段階で libadwaita-1 のバージョンが正しくないというエラーが発生しました。コンパイルとインストールが面倒だったので、諦めました。

 1error: failed to run custom build command for `libadwaita-sys v0.4.1`
 2
 3Caused by:
 4  process didn't exit successfully: `/home/mephisto/github/Kooha/_build/src/release/build/libadwaita-sys-324727e752f0426f/build-script-build` (exit status: 1)
 5  --- stdout
 6  cargo:rerun-if-env-changed=LIBADWAITA_1_NO_PKG_CONFIG
 7  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
 8  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
 9  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
10  cargo:rerun-if-env-changed=PKG_CONFIG
11  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
12  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
13  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
14  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
15  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
16  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
17  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
18  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
19  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
20  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
21  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
22  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
23  cargo:warning=`PKG_CONFIG_ALLOW_SYSTEM_CFLAGS="1" "pkg-config" "--libs" "--cflags" "libadwaita-1" "libadwaita-1 >= 1.4"` did not exit successfully: exit status: 1
24  error: could not find system library 'libadwaita-1' required by the 'libadwaita-sys' crate
25
26  --- stderr
27  Package dependency requirement 'libadwaita-1 >= 1.4' could not be satisfied.
28  Package 'libadwaita-1' has version '1.3.3', required version is '>= 1.4'
29
30warning: build failed, waiting for other jobs to finish...
31[45/47] Generating data/io.github.seadve.Kooha.metainfo.xml with a custom command
32FAILED: src/kooha
33/usr/bin/env CARGO_HOME=/home/mephisto/github/Kooha/_build/cargo-home /home/mephisto/.cargo/bin/cargo build --manifest-path /home/mephisto/github/Kooha/Cargo.toml --target-dir /home/mephisto/github/Kooha/_build/src --release && cp src/release/kooha src/kooha
34ninja: build stopped: subcommand failed.

特記事項: お使いの環境で peek/Kooha がインストール可能な場合は、利便性の観点から、個人的には直接使用することをお勧めします。

2. かすかな希望

ImageMagick ツールセットを使って以下のように GIF を作成しようとした時、後ろから誰かが「オーバーフローしました。セミコロンが抜けています。これは間違っています…」と言っているのが聞こえたような気がしました。

1convert -delay 100 -loop 0 *.jpeg animationGIF.gif

この時、シンプルながらも強力な画面録画ツールである wf-recorder を思い出しました。もしかしたら、mp4/webp だけでなく GIF も出力できるかもしれません。

```` Readme ドキュメントを確認し、Ctrl + F で「gif」というキーワードを検索してみましたが、結果は見つかりませんでした。通常、熱心な Linux ユーザーであれば、このような状況でも諦めたりはしないでしょう。最終的に、問題リストで「gif」を検索することで解決策を見つけました 問題を参照

コマンドラインで実行する必要があるのは、次のとおりです。

1shell wf-recorder -f test.gif -c gif -g "$(slurp)"
  • slurp は、実際には範囲指定が可能な別のソフトウェアです。このパラメータを指定しないと、画面を選択できます(複数の画面を使用している場合)。

  • -c gif はエンコード形式を指定します。このパラメータを指定しないと、test.gif を出力するとエラーが発生します。

実際には、wf-recorder のヘルプドキュメントにも関連する説明がありますが、わかりにくいため、ほとんどの人は気付かないかもしれません。

-c, --codec Specifies the codec of the video. Supports GIF output also.

To modify codec parameters, use -p <option_name>=<option_value>

GIF 画像の例(録画時間:秒、サイズ:792KB)

test gif

画面録画を停止するには、Ctrl + C キーを押します。エラーメッセージが表示されますが、無視してください。

1➜  ~ wf-recorder -f test.gif -c gif -g "$(slurp)"
2Detected output based on geometry: DP-1
3selected region 1936,44 1263x973
4Using video filter: null
5Output #0, gif, to 'test.gif':
6  Stream #0:0: Video: gif, bgr8(pc), 1262x972 [SAR 1:1 DAR 631:486], q=2-31, 200 kb/s
7^C[gif @ 0x7f031c000d40] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 1167 >= 1102
最終更新日: Monday, November 10, 2025

このシリーズの投稿:

翻訳: