okayurisotto.net

私が好きでやったことが他の人のためにもなったらお得かも!

KDE PlasmaなどでAlacrittyのアイコンがバグる問題に対処した

  1. 📝
  2. 🔄

はじめに

Rust製超高速ターミナルエミュレータとして有名なAlacrittyですが、KDE Plasmaなどのデスクトップ環境でそのアイコンがうまく描画されない問題が、だいぶ前からあります。いつまで待ってもなんともならないため、アップストリーム側の修正を待つのではなく自力で解決させようとしました。とりあえずなんとかなってくれたので、ここにその方法を書き残します。

環境

  • Manjaro Linux
  • KDE Plasma Version
    • 5.26.5
  • KDE Frameworks Version
    • 5.103.0
  • Qt Version
    • 5.15.8
  • Alacritty
    • 0.11.0

そもそもこの問題はなんなのか

アイコンがうまく描画されない様子

これは、SVG形式で保存されたAlacrittyのアイコンを、KDE Plasmaなどで使われているQtのレンダラーがうまく描画できていないことが原因です。おそらくKDE Plasmaに非はありません。Qt側にもIssueは作成されていますが、Out of ScopeやUnresolvedと表示されており、よくわからないですが無理っぽい雰囲気です。

ちなみにInkscapeやFirefoxではうまく描画されます。Alacritty側の問題ではないということで、AlacrittyのGitHubにあるIssueはcloseされています。Issue作成日時などを見ればわかる通り、この問題は長い間未解決のままでずっとあり続けています。ユーザー側でなんとかできないものでしょうか?

ユーザー側での解決を試みる

そのSVGファイルがDolphin(ファイルエクスプローラー)でうまくプレビューされない問題はもうどうしようもないので諦めるとして。タスクマネージャー(タスクバー)などに表示されるアイコンくらいは、Inkscapeなどで事前に生成しておいたPNGのようなファイルに、どうにかして置き換えられないものでしょうか。

デスクトップ環境がアプリケーションを認識するときには、デスクトップエントリというファイルが使われています。そしてデスクトップエントリについて解説したArchWikiのページでは、プログラムがアイコン画像を探索するディレクトリの優先順位が書かれています。

  1. $HOME/.icons (後方互換性のため)
  2. $XDG_DATA_DIRS/icons
  3. /usr/share/pixmaps

雰囲気的に$XDG_DATA_HOME/iconsの中に置けばオーバーライドできそうです。

inkscape \
  --export-width=256 \
  --export-background-opacity=0 \
  --export-filename=$XDG_DATA_HOME/icons/Alacritty.png \
  /usr/share/pixmaps/Alacritty.svg

事前にInkscapeで生成したPNG形式のアイコン画像

試してみたらうまくいきました。

おわりに

PKGBUILDを書くほどではない気がしたので手動生成です。よしとします。