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
signature.asc
Description: This is a digitally signed message part.