screen lock and gtk theme switch

Andriy Gapon avg at icyb.net.ua
Mon Apr 2 10:37:28 UTC 2007


on 26/03/2007 17:38 Andriy Gapon said the following:
> Environment:
> FreeBSD 6.2-RELEASE-p2 amd64
> gtk-2.10.11_2
> gtk-engines2-2.10.0
> gnome-desktop-2.18.0
> gnome-themes-2.18.0_1
> gnome-control-center-2.18.0
> gnome-screensaver-2.18.0_1
> gdm-2.18.0
> thunderbird-1.5.0.10
> 
> I am not using full GNOME desktop, but rather many GNOME and GTK
> applications (i.e. no gnome-session stuff). I log in X session via GDM,
> but it is configured to do xinit session. I do start
> gnome-settings-daemon from my .xinitrc.
> 
> Prior to 2.18 I also started gnome-screensaver from .xinitrc, but now it
> seems that it is started automatically by gnome-settings-daemon.
> 
> I don't have anything interesting in .gtkrc*. I used to have one include
> there, but I removed it because of the problem described in my other
> email ("gnome-theme-manager vs gtkrc-2.0"). Also, it seems that that
> include was not necessary anyway, because gnome-settings-daemon
> automatically applied selected GNOME/GTK theme.
[snip]
> It looks like the crash is caused by GTK theme change. I think this is a
> known and long standing problem with thunderbird, so I don't hope that
> it will be fixed any time soon. So, instead I hope to find a cause of
> this GTK theme switch and eliminate it.
> 
> Looking at time stamp of a thunderbird core file it seems that crash
> happens on unlock or maybe when unlock dialog appears.
> 
[snip]
> To sum this up: I didn't have this problem when I had GNOME 2.16 and
> also had the following line in my .gtkrc-2.0:
> include "/usr/local/share/themes/Mist/gtk-2.0/gtkrc"
> Not sure which one was more important, but I guess that having that
> include ensured that GTK theme was always the same.
> Ideally it would be nice to have all issues described here resolved:
> 1. unnecessary GTK theme switch
[snip]

It seems that the problem is somehow related to XSETTINGS (see my other
post about them), but i am not sure how.
main function of gnome-screensaver has the following structure:

main()
{
	gtk_int();
...
	daemon();
...
	gtk_main();
...
}

Looking at ktrace output it seems that on gtk_init correct gtkrc-s are
parsed including gtkrc of my theme. Name of the latter is obtained from
gnome-settings-daemon via xsettings.
Then at some point after daemon call gtkrc-s are parsed again. I
couldn't find any explicit calls in the code (except for one that
overrides background style), so I suspect that this is something inside
GTK code itself. This time only default gtkrc-s are parsed. That is my
theme gtkrc is not parsed and I suspect that this is either because the
process couldn't access xsettings or that piece of code simply doesn't
check xsettings. Anyway, default theme (Raleigh) gtkrc is used instead.

So I think that theme change does happen when unlock dialog comes up.

Anyway, I worked around this issue by putting the following into my
.gtkrc-2.0:
gtk-theme-name="Mist"

P.S. sorry for duplicating things between two threads.

-- 
Andriy Gapon


More information about the freebsd-gnome mailing list