Mengatasi Galat "DRI2: failed to authenticate" Telegram Desktop Raspberry

2019.03.25 00:00

Blog

Kalau kamu iseng googling “Telegram Desktop Raspberry” kamu bakal ketemu blog lama saya yaitu ahmadihamid.com.

Semenjak akhir tahun 2017 saya memang menggunakan Raspberry sebagai komputer utama saya. Dari urusan kantor, nge-blog sampai sekedar chatting gaje ya pakai komputer mini tersebut. Sampai ketika saya melakukan pembaruan sistem beberapa waktu lalu. Aplikasi perpesanan kesayangan saya yaitu Telegram enggak bisa dibuka lagi.

pi@raspberrypi:~ $ telegram-desktop 
libEGL warning: DRI2: failed to authenticate

(telegram-desktop:1563): GLib-GObject-WARNING **: cannot register existing type 'GdkDisplayManager'

(telegram-desktop:1563): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(telegram-desktop:1563): GLib-GObject-CRITICAL **: g_object_new: assertion 'G_TYPE_IS_OBJECT (object_type)' failed

(telegram-desktop:1563): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(telegram-desktop:1563): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

(telegram-desktop:1563): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(telegram-desktop:1563): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

(telegram-desktop:1563): GLib-GObject-WARNING **: cannot register existing type 'GdkDisplay'

(telegram-desktop:1563): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(telegram-desktop:1563): GLib-GObject-CRITICAL **: g_type_register_static: assertion 'parent_type > 0' failed

(telegram-desktop:1563): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(telegram-desktop:1563): GLib-GObject-CRITICAL **: g_object_new: assertion 'G_TYPE_IS_OBJECT (object_type)' failed
Segmentation fault

Karena ada kata “authenticate” di pesan error, saya dengan bodohnya (jangan ditiru ya) coba jalankan Telegram menggunakan hak akses root lewat sudo. Dan anehnya Telegram berhasil dibuka.

Sayangnya bukan solusi bagus juga karena semua file yang diunduh jadi milik root.

😅👊

Saya pun menyerah dan berfikir ini karena saya memakai paket aplikasi asing alias aslinya bukan untuk Raspbian. Tapi ternyata saya salah. Galat ini juga ditemui di platform lain. Ini misalnya. Ada yang bilang ini terjadi karena Telegram gagal mengidentifikasi desktop yang kita gunakan. Jadi kita mesti menghapus variabel XDG_CURRENT_DESKTOP.

$ unset XDG_CURRENT_DESKTOP

Aneh. Rasanya enggak mungkin sih pengembang Telegram pakai variabel mati tanpa memikirkan kemungkinan desktop tak dikenal kita gunakan. Dan ternyata benar. Ketika saya iseng ganti XDG_CURRENT_DESKTOP ke variabel acak, Telegram berhasil dijalankan juga.

Sayangnya solusi ini juga masih punya cacat :

  1. Kita enggak bisa buka Telegram lewat menu aplikasi, alias harus lewat terminal.
  2. Tiap kali restart atau ganti shell kita mesti set ulang variabel XDG_CURRENT_DESKTOP.

Untungnya kita bisa memasukkan variabel env di Desktop Entry. Jadi enggak perlu repot gonta-ganti variabel. Kita tinggal buat Desktop Entry baru di folder .local supaya tidak hilang/tertimpa ketika kita update Telegram.

pi@raspberrypi:~ $ cat .local/share/applications/Tele.desktop 
[Desktop Entry]
Version=1.0
Name=Tele Etop
Comment=Bug apa ini kok ucul!1!1!
Exec=env XDG_CURRENT_DESKTOP=AhmadiHam.id telegram-desktop -- %u
Icon=telegram
Terminal=false
StartupWMClass=TelegramDesktop
Type=Application
Categories=Network;InstantMessaging;Qt;
MimeType=x-scheme-handler/tg;

Perhatikan bagian “Exec=env XDG_CURRENT_DESKTOP=AhmadiHam.id telegram-desktop – %u

Alhamdulillah yah? Jadi masih bisa bertahan dengan workspace minimalis saya ini.

😂

Assalamualaikum.

Referensi

https://t.me/halamanbelakang

https://ahmadihamid.com/raspberry/telegram-untuk-raspbian/

https://github.com/telegramdesktop/tdesktop/issues/4324

https://askubuntu.com/questions/144968/set-variable-in-desktop-file