diff options
author | Giovanni Campagna <gcampagn@cs.stanford.edu> | 2015-10-09 14:49:04 -0700 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2015-10-14 11:09:01 -0400 |
commit | 39f146e6c5727105a3c88c2290654c6ef83102c5 (patch) | |
tree | 252ac1fcb746b584ff6c4d7bfae06e6e306fcaf8 | |
parent | a8896ccad65583885735a04205351f48a42f29ae (diff) | |
download | gnome-session-39f146e6c5727105a3c88c2290654c6ef83102c5.tar.gz |
Read and apply LC_* environment variables from GSettings
Before anything else runs
https://bugzilla.gnome.org/show_bug.cgi?id=756324
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | gnome-session/Makefile.am | 12 | ||||
-rw-r--r-- | gnome-session/gnome-session.in | 15 | ||||
-rw-r--r-- | gnome-session/main.c | 29 |
4 files changed, 51 insertions, 6 deletions
diff --git a/configure.ac b/configure.ac index 5d512e33..38d7693a 100644 --- a/configure.ac +++ b/configure.ac @@ -380,6 +380,7 @@ data/icons/48x48/Makefile data/icons/scalable/Makefile data/icons/symbolic/Makefile gnome-session/Makefile +gnome-session/gnome-session tools/Makefile po/Makefile.in ]) diff --git a/gnome-session/Makefile.am b/gnome-session/Makefile.am index c70c5421..fb53631b 100644 --- a/gnome-session/Makefile.am +++ b/gnome-session/Makefile.am @@ -1,7 +1,7 @@ EXTRA_DIST = NULL = -bin_PROGRAMS = gnome-session -libexec_PROGRAMS = gnome-session-failed +bin_SCRIPTS = gnome-session +libexec_PROGRAMS = gnome-session-binary gnome-session-failed noinst_LTLIBRARIES = libgsmutil.la noinst_PROGRAMS = \ test-client-dbus \ @@ -16,7 +16,7 @@ AM_CPPFLAGS = \ AM_CFLAGS = $(WARN_CFLAGS) -gnome_session_SOURCES = \ +gnome_session_binary_SOURCES = \ $(BUILT_SOURCES) \ gsm-app.h \ gsm-app.c \ @@ -62,12 +62,12 @@ gnome_session_SOURCES = \ gsm-xsmp-server.h if HAVE_CONSOLEKIT -gnome_session_SOURCES += gsm-consolekit.c gsm-consolekit.h +gnome_session_binary_SOURCES += gsm-consolekit.c gsm-consolekit.h else EXTRA_DIST += gsm-consolekit.c gsm-consolekit.h endif -gnome_session_CPPFLAGS = \ +gnome_session_binary_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(X11_CFLAGS) \ $(SM_CFLAGS) \ @@ -84,7 +84,7 @@ gnome_session_CPPFLAGS = \ -DGCONF_SANITY_CHECK=\""$(GCONF_SANITY_CHECK)"\" \ -DGCONFTOOL_CMD=\"$(GCONFTOOL)\" -gnome_session_LDADD = \ +gnome_session_binary_LDADD = \ libgsmutil.la \ $(X11_LIBS) \ $(SM_LIBS) \ diff --git a/gnome-session/gnome-session.in b/gnome-session/gnome-session.in new file mode 100644 index 00000000..fdf71639 --- /dev/null +++ b/gnome-session/gnome-session.in @@ -0,0 +1,15 @@ +#!/bin/sh + +SETTING=$(gsettings get org.gnome.system.locale region) +REGION=${SETTING#\'} +REGION=${REGION%\'} + +if [ -n "$REGION" ]; then + export LC_TIME=$REGION + export LC_NUMERIC=$REGION + export LC_MONETARY=$REGION + export LC_MEASUREMENT=$REGION + export LC_PAPER=$REGION +fi + +exec @libexecdir@/gnome-session-binary "$@" diff --git a/gnome-session/main.c b/gnome-session/main.c index b48cef41..1c176983 100644 --- a/gnome-session/main.c +++ b/gnome-session/main.c @@ -227,6 +227,15 @@ check_gl (GError **error) return g_spawn_check_exit_status (status, error); } +static inline void +maybe_push_env_var (const char* name) +{ + const char *value = g_getenv (name); + + if (value) + gsm_util_setenv (name, value); +} + int main (int argc, char **argv) { @@ -340,6 +349,26 @@ main (int argc, char **argv) if (g_getenv ("XDG_CURRENT_DESKTOP") == NULL) gsm_util_setenv ("XDG_CURRENT_DESKTOP", "GNOME"); + /* Push locale variables to dbus-daemon */ + maybe_push_env_var ("LC_TIME"); + maybe_push_env_var ("LC_NUMERIC"); + maybe_push_env_var ("LC_MONETARY"); + maybe_push_env_var ("LC_MEASUREMENT"); + maybe_push_env_var ("LC_PAPER"); + + { + gchar *ibus_path; + + ibus_path = g_find_program_in_path("ibus-daemon"); + + if (ibus_path) { + gsm_util_setenv ("QT_IM_MODULE", "ibus"); + gsm_util_setenv ("XMODIFIERS", "@im=ibus"); + } + + g_free (ibus_path); + } + /* Some third-party programs rely on GNOME_DESKTOP_SESSION_ID to * detect if GNOME is running. We keep this for compatibility reasons. */ |