[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#713885: im-config: Sourcing of 20_ibus.rc fails when shell is zsh



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.


Reply to: