Gedit, OverlayScrolling i DBus

Tamo negdje oko 3.16 verzije, GTK3 je dobio nove scroll barove, odnosno novu funkciju. Sada se automatski skrivaju i pokazuju, zavisno od toga da li lebdite mišom preko njih. Problemi su nastupili ubrzo jer su scrol trake prekrivale čitavu liniju nakon što se automatski pojave. Mislim da je to prvenstveno bilo zbog nevaljale GTK teme (Adwaita nema taj problem). Pošto je Adwaita odvratna, tražio sam rješenje u vidu da povratim staru funkcionalnost. Na sreću, potrebno je jedino eksportovati GTK_OVERLAY_SCROLLING=0 i stvari bi trebale biti u redu. Trebale.

Ispostavilo da nije baš tako jednostavno. Otvarajući tekstualne fajlove Geditom preko Thunara skrol traka se i dalje skrivala automatski. Prvo sam posumnjao da je kriv Thunar, čak sam otvorio i temu na Xfce forumu, ali se na kraju ispostavilo da nije.

Šta se tačno dešavalo?

Otvarajući Gedit iz terminala, skrol trake su bile uvijek vidljive. Otvarajući Gedit i tekstualni fajl iz Thunara, skrol trake su se skrivale. GTK_OVERLAY_SCROLLING je bio eksportovan uspiješno; printenv | grep GTK_OVERLAY ga je prikazivao. Zašto su se skrivale zavisno od načina otvoranja mi nije bilo jasno.

gedit1.png

Pošto koristim Openbox upravljač prozora, environment variable su eksportovane u .config/openbox/environment fajlu. Prvo, privremeno i neprihvatljivo rješenje je bilo eksportovanje GTK_OVERLAY_SCROLLING promjenjljive u /etc/xprofile fajlu. Nisam želio imati razbacane konfiguracione fajlove svakuda, tako da sam dalje tražio.

Drugo, prihvatljivije rješenje sam našao u ovoj dretvi na Redditu. Dodavanje

gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.UpdateActivationEnvironment '{"GTK_OVERLAY_SCROLLING": "0"}'

u Openboxov environment fajl je radilo, trake su bile vidljive uvijek. Gdbus call je bio nagovještaj za konačno rješenje problema.

Zašto se dešavalo

Dbus je kriv za sve. Otvaranje fajla Geditom preko Thunara koristi Geditov .desktop fajl. U njemu se nalazi linija DBusActivatable=true koja dozvoljava da se Gedit otvori putem Dbus aktivacije. Tako otvoreni Gedit iz nekog razloga zanemaruje ili samo koristi one environment variable koje su poznate Dbus sesiji. Zašto Dbus sesija nije znala za GKT_OVERLAY_SCROLLING? Zato jer se Openboxov environment fajl izvršava nakon što se Dbus pokrene i preuzme postavljene promjenjljive.

Konačno, najčistije rješenje je ponovno importovanje promjenjljivih u Dbus sesiju nakon pokretanja Openboxa, odnosno environment fajla. Dodao sam ovo:

dbus-update-activation-environment --systemd --all`

u openbox/environment fajl i Gedit i skrol trake se ponašaju normalno. Ovo sam naravno skužio nakon što sam prestao koristiti Gedit.

gedit2.png