Control: reassign -1 kdm
Control: retitle -1 kdm does not execute Xsession scripts as sh scripts
Currently, when the user shell is zsh, kdm launch the X session in zsh
emulation mode (it does "emulate -R zsh" in /etc/kde4/kdm/Xsession). However,
all X session scripts assume bourne shell behavior. In particular, this leads
to a bug in /usr/share/im-config/data/20_ibus.rc
This file contains several line like this one:
for IM_CONFIG_MARKER in $(ls /usr/lib/*/gtk-2.0/*/immodules/im-ibus.so \
/usr/lib/gtk-2.0/*/immodules/im-ibus.so 2>/dev/null ||
true); do
In zsh emulation mode this fails because either all the modules are in arch-
specific path, or not and in this case zsh just returns an error. Quoting
zshexpn manpage:
The word is replaced with a list of sorted filenames that match the pattern. If
no matching pattern is found, the shell gives an error message, unless the
NULL_GLOB option is set, in which case the word is deleted; or unless the
NOMATCH option is unset, in which case the word is left unchanged.
Because of this, GTK and QT apps don't use ibus despite it being running.
I tried changing the "emulate -R zsh" line by "emulate -R sh" and it now works
great for me since more than a week. It seems though that kdm developers
explicitely want the shell to behave in its normal mode since you run "set +o
posix" for bash so there might be a reason to execute zsh in zsh emulation
mode.
Therefore, I'm not sure what the correct solution is but Osamu Aoki,
maintainer of im-config, believe that Xsession scripts should be executed in
bourne shell mode as can be seen from the few #!/bin/sh shebang lines in
/etc/X11/Xsession and in some other places (I forgot where).
Best regards,
Thomas
Attachment:
signature.asc
Description: This is a digitally signed message part.