機能価格ドキュメントブログ
moteを入手
← ブログ
リリース·2026年8月7日·読了まで5分

どのインストール形式でも同じ見た目になるよう、GTKを同梱することにした

同じアプリがディストリビューションごとに少しずつ違って見える理由は、たいていアプリではなく、システムにインストールされているツールキットのバージョンにあります。beta.2からは、4つのインストール形式すべてが同じライブラリを同梱します。

m
mote
設定 → 外観の一番下にある2つのスイッチ。オンになっているとアクセントカラーとUIフォントにはmoteのものが使われ、オフにするとデスクトップの値に従います。
設定 → 外観の一番下にある2つのスイッチ。オンになっているとアクセントカラーとUIフォントにはmoteのものが使われ、オフにするとデスクトップの値に従います。

Linuxアプリは、同じビルドでもディストリビューションごとに違って見えることがあります。スイッチの形が変わったり、ダイアログの余白がずれたり、ときにはウィンドウが開かなかったりもします。システムごとにインストールされているツールキットが異なるためです。

moteもこれまで2種類のビルドを管理してきました。.debはシステムのGTKを使い、AppImage・tarball・Flatpakには必要なライブラリを直接同梱していました。

beta.2からはビルドを1つに統合しました。

インストール方法が違っても、アプリは同じです

これからは.debにもGTK 4.22とlibadwaita 1.9を/opt/moteに同梱します。システムにインストールされているライブラリに関係なく、Ubuntu 22.04とDebian 12でapt installを使ってインストールできます。画面と動作もAppImage・tarball・Flatpakと同じです。

同梱するライブラリはFlatpakのGNOMEランタイムに合わせました。GLib 2.88、Pango 1.56、HarfBuzz 11、cairo 1.18、fontconfig 2.16です。古いディストリビューションでも実行できるように、glibc 2.35コンテナ内で直接ビルドしています。

目標は、確認しなければならないケースの数を減らすことです。システムのGTKを使うと、Ubuntuのバージョンごとにツールキットが異なります。24.04は4.14、24.10は4.16、25.04は4.18です。スタイルを1行修正するたびに、その組み合わせをすべて確認しなければなりません。これからはインストール方法だけを確認すれば済みます。

.debをなくす方法も検討しました。しかしUbuntuデスクトップでは、aptが最もなじみのあるインストール経路です。AppImageは起動が約140ms遅く、FUSEが必要です。tarballには自動アップデートがなく、Flatpakにはサンドボックスの例外と約1GBのランタイムが必要です。

そこで.debをなくす代わりに、中身を変えました。

14MBで一貫性を手に入れました

代償はあります。.debの容量は4MBから34MBに増えました。同じ文書を開いたときのPSSメモリも115MBから129MBに増えました。アプリに同梱されたライブラリを、ほかのGTKアプリと共有できないためです。

性能は維持できました。キー入力から画面表示までにかかるp95時間は4.82msから4.07msに短縮しました。最初の画面が表示されるまでの時間の中央値も、306msから303msへと少し速くなりました。アプリを開いたままにしているだけのときは、以前と同じくフレームを描画しません。

メモリを14MB多く使う代わりに、どのディストリビューションでも同じアプリを実現しました。

同梱したツールキットの更新は、年1回ほどの定期作業です。FlatpakのGNOMEランタイムが上がれば、同梱するバージョンも一緒に上げます。その際は、ラボの8行がその更新の関門になります。

好みはmoteが、アクセシビリティはユーザーが決めます

ブランド設定も整理しました。アクセントカラーとUIフォントにはmoteのデフォルト値を使い、libadwaitaのウィジェットにも同じように適用します。デスクトップ設定に従いたい場合は、設定 → 外観で2つのスイッチをオフにすれば済みます。

一方、アクセシビリティ設定は常にユーザーの選択に従います。テキストの倍率とHiDPI設定をアプリが上書きすることはありません。大きな文字を有効にしたユーザーは、moteでも大きな文字を見ることができます。ダークモードもシステム・ライト・ダークの中から直接選べます。

韓国語入力は8種類の環境で確認しました

ツールキットが変わったら、まず入力メソッドを確認しなければなりません。インストール方法とibus・fcitx5、X11・Wayland、Ubuntu 22.04・24.04を組み合わせた8種類の環境で韓国語入力を確認しました。すべて合格しました。

開発用の検査機能に頼らないよう、テストも修正しました。これからは実際に配布するファイルをインストールしたあと、韓国語の文字合成が正しく行われるかを確認します。

Ubuntuのバージョン、セッション、入力メソッド、インストール方法が異なる8種類の環境で、韓国語入力検査にすべて合格した様子
Ubuntuのバージョン、セッション、入力メソッド、インストール方法が異なる8種類の環境で、韓国語入力検査にすべて合格した様子

どこでも同じアプリを作る最も確実な方法は、変わり得る条件から減らしていくことです。

← 前の記事手入力した表をそのまま保つ表編集次の記事 →画像の貼り付けが確認カードを経由する理由
RSSで更新を追えます。
書くことだけを残す
日本語
© 2026 mote