換用 Flatpak 版本 Telegram 並修復 CJKV 顯示問題

Linux 版本的 Telegram Desktop 是 QT 寫成的,雖然說是跨平臺框架,但實際上又是另一碼事了。官方提供的二進位檔案是 .tar.gz,沒有包管理器。在 Fedora 上,由於 Telegram Desktop 本身的一些協議問題,官方源是不提供 telegram-desktop 包的;RPM Fusion 有打包好的 RPM 包,但一來更新相對官方較慢,二來又日常爆炸。

尤其最近一段時間,RPM Fusion 版的 telegram-desktop 在 Fedora 31 上(可能舊版也爆炸),甚至可以說的命運多舛。先是由於 ibus-rime 出問題導致整個系統無法使用 RIME;後來在一次 ibus-rime 和 librime 更新後,RIME 可以正常部署了,但 QT 的應用程式無法使用輸入法,好在只是環境變數的問題,在 .desktop 中添加 QT_IM_MODULE="ibus" 後就可以正常使用了。然而最近又開始讀不到 GTK 主題了,不管在 GNOME 下還是 CInnamon 下都因爲自己不夠變態而顯得格格不入,甚是煞眼。乾脆,用 Flatpak 版本替代一下,省得費心去找原因再修。

欣賞一下 GNOME 的預設主題

安裝 Flatpak 版本的 Telegram Desktop 比較簡單,Flathub 有官方維護的版本。

$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
$ flatpak install flathub org.telegram.desktop                          
Looking for matches…
org.telegram.desktop/x86_64/stable (runtime/org.kde.Platform/x86_64/5.13) 所要求的執行時環境在 flathub 遠端中有找到
您想要安裝嗎? [Y/n]: y

org.telegram.desktop permissions:
    ipc       network       pulseaudio            wayland
    x11       dri           file access [1]       dbus access [2]

    [1] xdg-config/kdeglobals:ro, xdg-download
    [2] com.canonical.AppMenu.Registrar, com.canonical.Unity,
        org.freedesktop.Notifications, org.freedesktop.portal.Fcitx,
        org.kde.StatusNotifierWatcher

        ID                                   Arch   分支   遠端    下載
 1.     org.kde.Platform                     x86_64 5.13   flathub < 321.8 MB
 2.     org.freedesktop.Platform.GL.default  x86_64 19.08  flathub  < 90.8 MB
 3.     org.freedesktop.Platform.VAAPI.Intel x86_64 19.08  flathub   < 8.7 MB
 4.     org.freedesktop.Platform.openh264    x86_64 19.08  flathub < 593.4 kB
 5.     org.kde.KStyle.Adwaita               x86_64 5.13   flathub   < 5.8 MB
 6.     org.kde.Platform.Locale              x86_64 5.13   flathub < 337.7 MB (partial)
 7.     org.telegram.desktop                 x86_64 stable flathub  < 42.2 MB
 8.     org.freedesktop.Platform.ffmpeg-full x86_64 19.08  flathub   < 3.6 MB

Proceed with these changes to the Default system installation? [Y/n]: y

爲了裝一個 40M 的東西下載了超過 600M 的依賴,這也算是 Flatpak 的日常了。由於 Flatpak 的沙河機制,兩個 Telegram Desktop 的資料位置不一樣。接下來直接遷移一下用戶資料,就可以省去登入、設定等步驟。

$ mkdir -p ~/.var/app/org.telegram.desktop/data/TelegramDesktop
$ mv ~/.local/share/TelegramDesktop/tdata ~/.var/app/org.telegram.desktop/data/TelegramDesktop

Telegram Desktop 的本體資料量不多,一下子就能遷移好。趕緊打開 Flatpak 版的 Telegram Desktop,發現它正確地讀取了 GTK 主題。這太棒了!然而等資料載入後就發現,中文和日文顯示不來,這太尷尬了。

系統 GTK 主題倒是被正確讀取了

由於不想動腦子,淺羽直接在 Google 上搜尋相關問題,果然在 Flathub 官方 Repository 找到了相關的 Issue。解決方案有二,淺羽選擇讓 Telegram Desktop 使用系統的字型(而非自己指定字型)。編輯 ~/.var/app/org.telegram.desktop/data/TelegramDesktop/tdata/fc-custom-1.conf,然後把 /run/host/fonts/ 加入字型搜尋檔案夾。

....
<fontconfig>
    <dir>/run/host/fonts</dir>
....

保存,重新打開 Telegram Desktop,就可以正常地顯示 CJKV 了。

0