Verzija 0.3.1 xfce4-notifyd je dodala skrivenu opciju "do-fadeout", tako da ovo hakasto riješenje nije više potrebno. Pomoću xfconf-query je moguće isključiti efekat:
xfconf-query -c xfce4-notifyd -p /do-fadeout -n -t bool -s false
Vene u smislu "postepeno postaje proziran i nestane" ili na engleski fade-out. Nedavno sam počeo koristiti Compton na desktopu. Prvenstveno zbog v-synca za Nouveau drajvere koje koristim za grafičku. Kao prijatna nuspojava tu je i lijepši izgled sa sjenama, prozirnošću i upravo pomenutim fade-inom i fade-outom. Kao i uvijek, ne može ništa proći bez problema.
Ovaj put je problem stvarao xfce4-notifyd. To je implementacija freedesktop specifikacije za notifikacije koja dolazi sa Xfce radnim okruženjem, ali se može naravno koristiti i van njega. Primjetio sam da se notifikacije postepeno sklanjaju i "izlape", umjesto da nestanu odmah. Provjerio sam Comptonov konfiguracioni fajl i dodao xfce4-notifyd za ignorisanje fade-outa, ali se i dalje postepeno gasio.
Brzo pretraživanje interneta kaže kaže da je krivac xfce4-notifyd. Naime xfce4-notifyd ima sopstveno fade-outovanje u slučaju da je pokrenut kompozitor. Ne postoji opcija za isključivanje prema ovome izvještaju za bag.
Ne znam zašto, ali sam pogledao izvorni fajl od xfce4-notifyd. Pošto nemam
apsolutno nimalo znanja o C programiranju, jedino što mi je preostalo je
da nasumično pokušam izbrisati nešto što liči kao da ima uticaja na fade-out.
Našao sam fajl za xfce-notify-window.c i
tražio gdje se sve spominje fade-out. Obećavajuće je izgledala
xfce_notify_window_expire_timeout()
funkcija koja počinje na liniji 627.
Bukvalno sam samo izbrisao linije gdje se provjerava je li desktop kompozitovan (zahvaljujući poznatim, istim imenima kao i za Python GObject veze). Pogodio sam iz prvog puta. Xfce4-notifyd notifikacije su nestajale odjednom, bez sopstevnog, neovisnog fade-outa.
:::diff
--- xfce4-notifyd-0.2.4/xfce4-notifyd/xfce-notify-window.c 2013-04-21 16:42:08.000000000 +0200
+++ xfce-notify-window.c 2016-05-09 17:47:19.730137584 +0200
@@ -631,18 +631,9 @@
window->expire_id = 0;
- fade_transparent =
- gdk_screen_is_composited(gtk_window_get_screen(GTK_WINDOW(window)));
-
- if(fade_transparent) {
- window->fade_id = g_timeout_add(FADE_CHANGE_TIMEOUT,
- xfce_notify_window_fade_timeout,
- window);
- } else {
- /* it might be 800ms early, but that's ok */
- g_signal_emit(G_OBJECT(window), signals[SIG_CLOSED], 0,
- XFCE_NOTIFY_CLOSE_REASON_EXPIRED);
- }
+ /* it might be 800ms early, but that's ok */
+ g_signal_emit(G_OBJECT(window), signals[SIG_CLOSED], 0,
+ XFCE_NOTIFY_CLOSE_REASON_EXPIRED);
return FALSE;
}