Yves-Alexis Perez writes: > On Fri, Jan 17, 2014 at 01:01:11PM +0900, Olaf Meeuwissen wrote: >> Yves-Alexis Perez writes: >> >> >> > But in any case, setting LANG in .xsessionrc doesn't make much sense >> >> > imho. >> >> >> >> Care to explain why? For me the correct LANG value is essential to get >> >> my input method editor to work correctly (or so it seems). >> >> # Of course, setting it in ~/.dmrc works for me but I'd like to know why >> >> # I should set it there too. >> > >> > The way I see it (as I already explained), you select the wanted locale >> > (LANG) in the greeter language selector (and it gets saved to .dmrc for >> > later). Then, if you need to “correct” (for LC_MESSAGES for example) you >> > can do it un .xsessionrc. >> >> The greeter language selector does not seem to set LANG. > > The greeter doesn't set anything, it gets the menu selection and gives > it to lightdm. > >> At the very >> beginning of the /etc/X11/Xsession script LANG=C. > > Well, this one is a problem, it's should not be the case (and it's not > the case for me on any of my box).
C is the default locale on my system. >> FWIW, lightdm seems to be exporting GDM_LANG, see src/seat.c in the >> configure_session() function. > > Indeed, I missed that. > >> I see it does the same for GDMSESSION. >> Are these variables GTK+ or GNOME specific? > > My guess is that they get used by GNOME applications. > >> If the latter, then maybe >> lightdm shouldn't be exporting these, but what do I know? >> Just an idea, but why not simply export LANG instead (or as well)? > > If you look really really hard, you'll see that LANG is set on the > previous line. And I obviously missed that ;-) >> I'm off nuking GDM_LANG (and maybe GDMSESSION) in my ~/.xsessionrc and >> see what breaks ;-) > > Since lightdm set GDM_LANG to the exact same value as LANG, I fail to > see why it's not set to the correct value at the beginning of > /etc/X11/Xsession, but at least that gives you something to look at. Okay, I've been looking at the source code a bit. Turns out that session_set_env() does not set any environment variables directly. It adds them to an internal list (session->priv->env). This list is written to the session in `session_real_run()`. I didn't find any calls to `session_unset_env()` for either LANG and GDM_LANG so would expect both to be set in the session. However, the greeter and user session inherit the system default locale courtesy of PAM as per comment in src/session-child.c. This probably explains why I see LANG=C at the start of my Xsession. Anyway, I now nuke GDM_LANG in ~/.xsessionrc and have not seen any breakage yet. The `locale` output is as I expect it and my input method editor works as it used to. I no longer have a ~/.dmrc (and it is not recreated when you don't save your session). I can pick any language I please from the chooser without this having *any* effect on my session. That is, the chooser does not interfere with my customizations which is what I want. Hope this helps, -- Olaf Meeuwissen, LPIC-2 FLOSS Engineer -- AVASYS CORPORATION FSF Associate Member #1962 Help support software freedom http://www.fsf.org/jf?referrer=1962 -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org