Yves-Alexis Perez writes: > Note: I'm replying to both bugs at once because they look quite the > same. I'm not merging them right now because that's not completely sure > either. > > On Tue, Jan 14, 2014 at 12:40:01PM +0900, Olaf Meeuwissen wrote: >> Package: lightdm >> Version: 1.8.5-3 >> Severity: normal >> >> Dear Maintainer, >> >> I have seen #690899, #691446 and #733261 but feel that my issue is not >> quite the same. Hence a separate bug report. >> >> I have a few locale tweaks in my ~/.xsessionrc (following comments found >> in /etc/X11/Xsession.d/40x11-common_xsessionrc). The relevant bit of my >> customizations: >> >> export LANG=ja_JP.UTF-8 >> export LC_MESSAGES=en_GB.UTF-8 >> export LANGUAGE=${LC_MESSAGES} >> >> This has been working great for me for several years. After the recent >> upgrade of lightdm (from 1.6.3-1) the LANG setting got clobbered to the >> first enabled locale, i.c. aa_DJ.UTF-8, whereas the system default is C. >> >> The system default locale and enabled locales have not been changed in >> a long time, nor has my .xsessionrc. What might have played a role >> was me removing my ~/.dmrc at about the same point as the upgrade as >> part of a dot-file cleanup. Changing its Language setting to the same >> value as the LANG setting in my ~/.xsessionrc fixed things for me. >> >> I would expect the preselected locale for lightdm's locale selector to >> be the system default (or whatever is configured explicitly for that bit >> of lightdm functionality), not whichever of the enabled locales is >> listed first in /etc/locale.gen. > > Yeah, that's not really optimal indeed. Actually that's the case only > for the first startup after boot, and before an user is selected.
And that user has a ~/.dmrc with a language setting in it. If the user has no ~/.dmrc, then the first available locale is the default. Actually, if you enter a user name, move to the password field and then enter a *different* user's name (one who has no ~/.dmrc), that user will end up with the previous user's locale preference. >> The system default would then become >> the user's locale if a user does not have a ~/.dmrc file. Also, I would >> expect any tweaks in a user's ~/.xsessionrc to take effect/precedence >> and not be clobbered by any locale functionality courtesy of lightdm. >> >> That is to say, I would expect my LANG setting in ~/.xsessionrc to take >> precedence over whatever is (or ends up) in ~/.dmrc. If I have nothing >> in my ~/.xsessionrc, I expect to end up with what is configured in >> /etc/default/locale. > > Well that should be the case, actually. It is not. I created a new user account on my system and restarted lightdm. I gave that user the following ~/.xsessionrc $ cat .xsessionrc #! /bin/sh unset LC_ALL LANG=ja_JP.UTF-8 LC_MESSAGES=en_GB.UTF-8 LANGUAGE=${LC_MESSAGES} export LANG export LANGUAGE export LC_MESSAGES At the ligthdm login screen, I confirmed that the selected language was the first one in my system's /etc/locale.gen (aa_DJ.UTF-8) and selected bo_IN.UTF-8 before logging in. $ cat .dmrc [Desktop] Language=bo_IN.utf8 Session=lightdm-xsession $ locale LANG=bo_IN.utf8 LANGUAGE=en_GB.UTF-8 LC_CTYPE="bo_IN.utf8" LC_NUMERIC="bo_IN.utf8" LC_TIME="bo_IN.utf8" LC_COLLATE="bo_IN.utf8" LC_MONETARY="bo_IN.utf8" LC_MESSAGES=en_GB.UTF-8 LC_PAPER="bo_IN.utf8" LC_NAME="bo_IN.utf8" LC_ADDRESS="bo_IN.utf8" LC_TELEPHONE="bo_IN.utf8" LC_MEASUREMENT="bo_IN.utf8" LC_IDENTIFICATION="bo_IN.utf8" LC_ALL= As you can see, the LANG value is *not* as per ~/.xsessionrc which sets and exports ja_JP.UTF-8. However, the LC_MESSAGES and LANGUAGE variables *are* as per ~/.xsessionrc. Subsequent logins use ~/.dmrc to set the user's preceived language preference when you enter the user name and move to the password field. After login, the locale is as per above with the *wrong* LANG value. > The lightdm greeter will select a locale based on .dmrc if it exists, > but if the user chose another one in the menu, then it'll use that for > LANG. My "problem" is that I didn't select any language when I first encountered the problem. I just entered my user name and password at the login screen. That's all. Actually, I don't think I ever bothered selecting a language via that chooser interface. > Then, at login, /etc/X11/Xsession is run, which in turns run-parts > the scripts in /etc/X11/Xsession.d and especially > 40x11-common_xsessionrc, so whatever you put in .xsessionrc will take > precedence over previously set variables (and independantly of lightdm) > > I repeat, by the time .xsessionrc is parsed, lightdm or the greeter > doesn't have a chance to do anything to modify the locale anymore. If that is true, something else must be doing that. Here's what's in my /etc/X11/Xsession.d/: 20x11-common_process-args 30x11-common_xresources 35x11-common_xhost-local 40x11-common_xsessionrc 50x11-common_determine-startup 55xfce4-session 60xdg-user-dirs-update 70im-config_launch 75dbus_dbus-launch 90consolekit 90gpg-agent 90qt-a11y 90x11-common_ssh-agent 99x11-common_start I have not changed /etc/X11/Xsession{,.options} > On Tue, Jan 14, 2014 at 10:32:13AM +0100, Simon Pepping wrote: >> Package: lightdm-gtk-greeter >> Version: 1.6.1-5 >> Severity: normal >> Tags: l10n >> >> Dear Maintainer, >> >> When I select my language once in the language selector, I want to be >> logged in with that language on all subsequent log-ins, until I select >> another language in the language selector. That does not happen. I am >> always logged with the language of the system-wide locale, unless I >> select a language in the language selector. Hmm, system-wide locale being taken into account here. Does not happen for me, but I'm using $ cat /etc/default/locale LANG="C" which is not in /etc/locale.gen of course. >> My language setting in ~/.xsessionrc is overwritten. Ideally, the >> language selector would have a option which leaves the setting in such >> a script unmodified. > > As said above, that's the case. Also, I repeat, .xsessionrc and the > locale chooser in the lightdm greeters are *completely* unrelated, so > it's best to separate the test cases. .xsessionrc variables will > override whatever you set in the locale chooser, and you're then > responsible for the behavior. Wishing I was ;-) As I showed above, the LANG variable gets clobbered by something but LC_MESSAGE and LANGUAGE survive. >> * What led up to the situation? >> >> I select english in the language selector and log in. Language is >> english. I log out. >> >> I make no selection in the language selector and log in. Language is >> dutch. >> >> * What outcome did you expect instead? >> >> I expect that subsequent log-ins use the earlier selected language, >> i.e. english in my case. >> >> Note that the locale setting below is the result of logging in with >> english as the selected language. >> > > In the end, I'm pretty confused by those two bug reports. It seems that > people are indeed confused by the lightdm/lightdm-gtk-greeter behavior > wrt. locales, but the reports I get are merely adding confusion, not > helping to reduce it. > > In order to detect issues in LightDM/lightdm-gtk greeter, it'd help to: > > - - not set anything locale related in .xsessionrc (since it'll just > override whatever lightdm set) Problem is that /etc/X11/Xsession.d/40x11-common_xsessionrc advises you to do so. $ head /etc/X11/Xsession.d/40x11-common_xsessionrc # This file is sourced by Xsession(5), not executed. #Source user defined xsessionrc (locales and other environment variables) if [ -r "$USERXSESSIONRC" ]; then . "$USERXSESSIONRC" fi > - - provide the full output of `locales' (and maybe the content of > $LANGUAGE too) See above. 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