|
Bugzilla – Full Text Bug Listing |
| Summary: | Can't use ~/.profile to control INPUT_METHOD | ||
|---|---|---|---|
| Product: | [openSUSE] openSUSE 10.2 | Reporter: | Ray chen <swyear> |
| Component: | KDE | Assignee: | Mike Fabian <mfabian> |
| Status: | RESOLVED FIXED | QA Contact: | E-mail List <qa-bugs> |
| Severity: | Normal | ||
| Priority: | P5 - None | CC: | coolo, sndirsch, werner |
| Version: | Final | ||
| Target Milestone: | --- | ||
| Hardware: | i686 | ||
| OS: | SUSE Other | ||
| Whiteboard: | |||
| Found By: | Other | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
| Attachments: | /etc/X11/xim | ||
|
Description
Ray chen
2007-01-14 08:22:52 UTC
why do you think this is a bug and should work? Because it work before This is some text from the file /etc/X11/xim # usually, /etc/X11/xim is used to start a default input method. # If want to change the default, you have the following options: # # 1) Set the variable INPUT_METHOD in /etc/sysconfig/language. # For example: # INPUT_METHOD="scim" # This changes the default for all users # 2) set and export the variable "INPUT_METHOD" in ~/.profile in the # home directory of a user (or ~/.login for csh users) For example: # export INPUT_METHOD="scim" # This changes the default only for one user. # # The possible values for the variable INPUT_METHOD are the names # of the scripts which exist in the directory /etc/X11/xim.d/ # for example if a script /etc/X11/xim.d/scim exists, # and INPUT_METHOD is set to "scim", this script will be tried first # to start an input method and only if this fails other input methods # will be tried. # # 3) If you don't like the behaviour of any of the available It should work Isn't this a bug? I'll check. swyear chen> It should work
Yes, this should work.
swyear chen> Isn't this a bug?
It still works for me.
I just tried with
export INPUT_METHOD=kinput2
in ~/.profile and got the "kinput2" input method instead of my usual
default "scim".
I have 2 ideas why it doesn't work for you:
1) could there be a bug in your oxim/gcin input method
start scripts? Maybe they fail?
If that is the case, you should see it in .xsession-errors.
Can you please attach ~/.xsession-errors so I can check?
2) You write
export INPUT_METHOD="gcin"
in ~/.profile but your shell doesn't read ~/.profile on login.
For example, if a file ~/.bash_login exists, bash will read
that when a login shell is started (see the bash man-page).
Or maybe you are not using bash but some other shell?
Which one?
You have to set and export the environment variable
INPUT_METHOD in a file read by your shell when a login
shell is started.
→ NEEDINFO from reporter. To Mike:
Thanks for your testing and advices
I try to unstall gcin and oxim,then install kinput2
export INPUT_METHOD=kinput2 in ~/.profile
after relogin to kde
scim still starts as default input-method
some infos pasted below:
chen@linux:~> env | grep INPUT_METHOD
INPUT_METHOD=kinput2
(~/.profile do have read by system but maybe after /etc/X11/xim)
chen@linux:~> cat ~/.xsession-errors
/etc/X11/xim: Checking wether an input method should be started.
INPUT_METHOD is not set or empty (no user selected input method).
Trying to start a default input method for the locale en_US.UTF-8 ...
Checking for a default input method in /etc/X11/xim.d/en/
sourcing /etc/X11/xim.d/en/50-scim ...
Launching a SCIM daemon with Socket FrontEnd...
Loading simple Config module ...
Creating backend ...
Loading socket FrontEnd module ...
Starting SCIM as daemon ...
Launching a SCIM process with x11...
Loading socket Config module ...
Creating backend ...
Loading x11 FrontEnd module ...
GTK Panel of SCIM 1.4.5
Starting SCIM as daemon ...
SCIM has been successfully launched.
Smart Common Input Method 1.4.5
/etc/X11/xim.d/en/50-scim started sucessfully
xset: bad font path element (#282), possible causes are:
Directory does not exist or has wrong permissions
Directory missing fonts.dir
Incorrect font server address or syntax
startkde: Starting up...
kbuildsycoca running...
QObject::connect: No such signal Kicker::settingsChanged(SettingsCategory)
QObject::connect: (sender name: 'kicker')
QObject::connect: (receiver name: 'animtt')
WARNING: please edit ~/.scim/global and change /DefaultConfigModule to kconfig
bookname: XDICT英漢辭典 , wordcount 177824
bookname: 朗道英汉字典5.0 , wordcount 435468
bookname: 朗道漢英字典5.0 , wordcount 395426
bookname: CDICT5英漢辭典 , wordcount 57508
bookname: 21世紀雙語科技詞典 , wordcount 809239
bookname: 朗道英漢字典5.0 , wordcount 423246
bookname: 漢德辭典 , wordcount 64097
bookname: 牛津現代英漢雙解詞典 , wordcount 39429
bookname: 汉德辞典 , wordcount 62505
bookname: XDICT漢英辭典 , wordcount 158152
bookname: 21世紀英漢漢英雙向詞典 , wordcount 212918
bookname: CEDICT漢英辭典 , wordcount 25230
** Message: Time of loading all dictionaries: 0.230 sec
sys.path.insert(0, '/home/chen/Kirby/')
WARNING: please edit ~/.scim/global and change /DefaultConfigModule to kconfig
akode: Guessed format: xiph
KNotify::playTimeout
KNotify::playTimeout
sys.path.insert(0, '/home/chen/50846-clock_magick.skz')
sys.path.insert(0, '/home/chen/afoto-1.6rc1.skz')
Archive: /home/chen/50846-clock_magick.skz
inflating: arrow_hour.png
inflating: arrow_hour2.png
inflating: arrow_min.png
inflating: arrow_min2.png
inflating: arrow_sec.png
inflating: arrow_sec2.png
inflating: clock_bg3.png
inflating: clock_bg4.png
inflating: clock_bg5.png
extracting: icon.png
caution: filename not matched: tmp.png
KNotify::playTimeout
sys.path.insert(0, '/home/chen/52038-GlassMonitor-0.3.2.skz')
Error reading file image/none.ong from zip
KNotify::playTimeout
Error reading file image/none.ong from zip
KNotify::playTimeout
KNotify::playTimeout
KNotify::playTimeout
KNotify::playTimeout
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
kbuildsycoca running...
DCOP Cleaning up dead connections.
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
WARNING: please edit ~/.scim/global and change /DefaultConfigModule to kconfig
chen@linux:~> cat ~/.profile
# Sample .profile for SuSE Linux
# rewritten by Christian Steinruecken <cstein@suse.de>
#
# This file is read each time a login shell is started.
# All other interactive shells will only read .bashrc; this is particularly
# important for language settings, see below.
test -z "$PROFILEREAD" && . /etc/profile
# Most applications support several languages for their output.
# To make use of this feature, simply uncomment one of the lines below or
# add your own one (see /usr/share/locale/locale.alias for more codes)
#
#export LANG=de_DE@euro # uncomment this line for German output
#export LANG=fr_FR@euro # uncomment this line for French output
#export LANG=es_ES@euro # uncomment this line for Spanish output
# Some people don't like fortune. If you uncomment the following lines,
# you will have a fortune each time you log in ;-)
#if [ -x /usr/bin/fortune ] ; then
# echo
# /usr/bin/fortune
# echo
#fi
export SKYPE_RESOURCES_PATH="/home/chen/skype-1.3.0.53"
export INPUT_METHOD=kinput2
chen@linux:~> ls /etc/X11/xim.d/
am cs en fr hr kinput2 kn my none scim zh_CN
ar da es gu it kinput2-canna ko nb pa sk zh_HK
as de fa he ja kinput2-wnn lo nl pl sv zh_SG
bn el fi hi ka kk ml nn ru vi zh_TW
Thanks
swyear chen> chen@linux:~> env | grep INPUT_METHOD swyear chen> INPUT_METHOD=kinput2 swyear chen> (~/.profile do have read by system but maybe after /etc/X11/xim) Yes, that is exactly what seems to be happening. swyear chen> chen@linux:~> cat ~/.xsession-errors swyear chen> /etc/X11/xim: Checking wether an input method should be started. swyear chen> INPUT_METHOD is not set or empty (no user selected input method). This shows that ~/.profile has not yet been read at this time. I can reproduce your problem now.
I worked for me because I had copied
cp /etc/X11/xinit/xinitrc ~/.xinitrc
and then edited ~/.xinitrc to do some personal extra stuff.
If the user has a ~/.xinitrc, this is preferred and /etc/X11/xinit/xinitrc
is not used.
My copy of /etc/X11/xinitrc was from an older version of SUSE Linux, using
that I did not have the problem.
But after copying the current /etc/X11/xinit/xinitrc to ~/.xinitrc and then
adding my personal lines below
#
# Add your own lines here...
#
I can reproduce your problem.
In older SuSE releases, there was only the file /etc/X11/xinit/xinitrc.
Now, this file has been split into two parts:
/etc/X11/xinit/xinitrc
/etc/X11/xinit/xinitrc.common
The file xinitrc.common sources the XIM startup code:
#
# Start the XIM server
#
XIMFILE=/etc/X11/xim
test -r $HOME/.xim && XIMFILE=$HOME/.xim
test -r $XIMFILE && source $XIMFILE
and xinitrc.common is sourced by /etc/X11/xinit/xinitrc:
mfabian@magellan:/etc/X11/xinit$ grep xinitrc.common xinitrc
. /etc/X11/xinit/xinitrc.common
mfabian@magellan:/etc/X11/xinit$
But xinitrc.common has the following lines near the start:
#
# Source this file only once
#
test "$XSESSION_IS_UP" != "yes" || return
XSESSION_IS_UP=yes
export XSESSION_IS_UP
and when it is sourced by /etc/X11/xinit/xinitrc, XSESSION_IS_UP is
already set to "yes", therefore the rest of the file is skipped.
That means, /etc/X11/xinit/xinitrc.common has already been sourced
by somebody else *before* /etc/X11/xinit/xinitrc was read.
I don't yet know who does that and why.
Anyway, when xinitrc.common was read the first time,
the users ~/.profile has not yet been read and therefore the
user requested change of the input method by INPUT_METHOD=xxx
is ignored.
Then, when xinitrc.common is read for the second time, ~/.profile
has already been read and INPUT_METHOD=xxx from the users profile
is therefore available. But, as this is the second time xinitrc.common
is read, it immediately exits and doesn't start an input method.
AFAIK /etc/X11/xdm/Xsession is running before $XINITRC and sources /etc/X11/xinit/xinitrc.common before executing $XINITRC. This might
explain the behaviour.
/etc/X11/xdm/Xsession:
[...]
#
# Source common code shared between the
# X session and X init scripts
#
. /etc/X11/xinit/xinitrc.common
#
# Some common user and system files
#
session=$HOME/.xsession
xinitrc=$HOME/.xinitrc
sysinit=$XINITDIR/xinitrc
syssess=$XDMDIR/sys.xsession
#
# Forced X session type if the user asked for
# an other session environment.
#
if test "$forced" = "yes" ; then
unset WINDOW_MANAGER STARTUP
test -x $syssess && exec_login "$syssess"
exec_login "/bin/bash $syssess"
fi
# User login X session
# If the user doesn't have their own xsession, then run
# system xsession or xinitrc script if they exist
if test -f $session ; then
test -x $session && exec_login "$session"
exec_login "/bin/bash $session"
elif test -f $xinitrc ; then
test -x $xinitrc && exec_login "$xinitrc"
exec_login "/bin/bash $xinitrc"
elif test -f $syssess; then
test -x $syssess && exec_login "$syssess"
exec_login "/bin/bash $syssess"
elif test -f $sysinit ; then
test -x $sysinit && exec_login "$sysinit"
exec_login "/bin/bash $sysinit"
elif test -n "$WINDOWMANAGER" ; then
unset WINDOW_MANAGER STARTUP
exec_login "$WINDOWMANAGER"
fi
Yes, it is exactly as you say Stefan. I also discussed this with Werner and I am working on a solution now. I've added some lines of bash code to /etc/X11/xim ... let's see if this works. Werner's code works nicely. Thank you very much! Created attachment 121774 [details]
/etc/X11/xim
Here is the new version of /etc/X11/xim where Werner added code to
check the user environment.
Fixed x11-tools package containing the new /etc/X11/xim file submitted to STABLE and to the openSUSE build service. You can get updated packages here: http://software.opensuse.org/download/M17N/openSUSE_10.2/i586/x11-tools-0.1-68.1.i586.rpm http://software.opensuse.org/download/M17N/openSUSE_10.2/x86_64/x11-tools-0.1-68.1.x86_64.rpm Closing as FIXED. |