The .profile is only loaded by sh.<div>If csh is used or bash is used, .profile is not loaded.</div><div>Using session_wrapper is not a good solution as the script is distro-specific.</div><div>So there is no reliable way for a greeter to set a language even if I write into .profile.</div>
<div>It&#39;s true that setting language is not the responsibility of display manager most of the time. However, gdm does this for years and nobody complains of that. It&#39;s still a nice feature to have. It&#39;s the responsibility of login shell to set the environments under console. Under GUI, the login manager becomes the graphical one so it&#39;s not quite unusual for a dm to set the required environment.</div>
<div>Relying on .profile can be distro-spefiic and it&#39;s not reliable. This is not something upstream authors can do. So now the situation is I coded something which doesn&#39;t work and it requires the packagers to patch it heavily to provide the features wanted. Bad news for upstream authors. :-(</div>
<div>Are there any cleaner or more elegant alternatives to make language selection in greeter work?</div><div><div> <br><div class="gmail_quote">On Mon, Aug 22, 2011 at 8:03 AM, Robert Ancell <span dir="ltr">&lt;<a href="mailto:robert.ancell@gmail.com">robert.ancell@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5">On 19 August 2011 00:52, PCMan &lt;<a href="mailto:pcman.tw@gmail.com">pcman.tw@gmail.com</a>&gt; wrote:<br>

&gt; I just migrated my own GtkBuilder-based greeter to LightDM 0.9.x. However, I<br>
&gt; found that language selection is no longer available. We relied on this<br>
&gt; feature in the previous version. The feature is also supported by gdm and<br>
&gt; lxdm. With LightDM 0.9 supporting this is not possible. I read the source<br>
&gt; code and found that &quot;Language&quot; value in .dmrc is not used. So there is no<br>
&gt; way to configure language for the selected session.<br>
&gt; In NEWS file of lightdm, I noted that this is deliberately removed and users<br>
&gt; should set locale in .profile. However, .profile is not always loaded<br>
&gt; depending on the distro/environment used. Moreover, this requires that users<br>
&gt; edit config files manually. Is it possible to restore this feature in<br>
&gt; LightDM or at least give us other ways to do it?<br>
&gt; If LightDM is not going to support this, will LightDMLanguage be removed<br>
&gt; later? If Language defined in .dmrc is not reference by lightdm, will<br>
&gt; lightdm_user_get_language be removed?<br>
&gt; Besides, I found a bug in LightDMUser. Every call to lightdm_user_get_*<br>
&gt; loads dmrc again and causes memory leaks. Please check this part. Thanks.<br>
<br>
</div></div>lightdm_user_get_language is not going to be removed, as it is useful<br>
even if you can&#39;t set the language for a user.  For example selecting<br>
a user should change the greeter to their language.  LightDMLanguage<br>
will not be removed as it would break API.<br>
<br>
The easiest way to set the locale is to set it in the session wrapper<br>
(session-wrapper in lightdm.conf).  If you want to grep the .dmrc and<br>
use that then that would work, but I&#39;d recommend you load ~/.profile<br>
and have that set by your locale configuration tool.<br>
<br>
Language is a messy problem (as shown by the endless problems we have<br>
had in Ubuntu trying to get it working reliably)<br>
<br>
Problem #1 is language != locale.  If the greeter can only choose<br>
language it can&#39;t configure all the detail required to set up a<br>
locale.  If you were to make it support everything it would be too<br>
complex.  If you allow the greeter to set arbitrary environment then<br>
that ignores the problem and makes it inconsistent between different<br>
distros.<br>
<br>
Problem #2 is locale is not just for GUIs.  It really should be<br>
external to the display manager and applied to all logins.  It really<br>
shouldn&#39;t be in the .dmrc.<br>
<br>
Problem #3 is who is responsible for setting the locale environment<br>
variables?  The environment is set up like this:<br>
- LightDM sets a default environment<br>
- PAM sets more environment<br>
- LightDM sets some GUI specific variables, e.g. XAUTHORITY XDG_SEAT_PATH, ...<br>
- Environment is set in the session script (session-wrapper config<br>
value in lightdm.conf, or /etc/gdm/Xsession in GDM).<br>
<br>
Ideally LightDM wouldn&#39;t set have to do the default and it would all<br>
come from PAM.  The locale should come from PAM or from the session<br>
script if that isn&#39;t possible.<br>
<br>
Thanks for the tip on the memory leak.<br>
</blockquote></div><br></div></div>