換用 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 了。但是還有一個問題:IME 無法正常使用。還是經過搜尋和測試,最終的解決方法是在啓動項上加入相關環境變數:打開 /var/lib/flatpak/app/org.telegram.desktop/current/active/export/share/applications/org.telegram.desktop.desktop 編輯,在 Exec= 一行的指令碼最前,加入 env QT_IM_MODULE=ibus。等待桌面環境重新讀入檔案,再打開 Telegram Desktop 就可以用 IME 了。

Comments

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

To respond on your own website, enter the URL of your response which should contain a link to this post’s permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post’s URL again. (Find out more about Webmentions.)