Description of problem: since the update of anthy 1.4 in the stable Fedora repo, the language bar does not show up anymore on a LXDE F-Spin when I switch to Japanese input Version-Release number of selected component (if applicable): Fedora 15 LXDE Spin ibus 1.4.0 Japanese-anthy How reproducible: always Steps to Reproduce: 1. default setting: ibus preferences: show language bar: when active 2. switch to Japanese input 3. Actual results: no language bar Expected results: up to 1.3.999 the language bar was pooping-up anytime I switched to Japanese input Additional info: Workaround: change preferences to "When active" to "always" display the language bar.
Created attachment 527174 [details] input method name is greyed out Additional info: ibus preferences: - show language panel "always" (workaround to have the language bar displayed) - show the input method name on the language bar The "input method name" is now grayed out.
(In reply to comment #1) > The "input method name" is now grayed out. It means focus_in event is not called. Are you able to look at the same problem with gtk applications likes gedit? Are you able to see any errors with verbose mode? 1. Right click on ibus panel icon and choose 'Quit'. 2. Run 'ibus-daemon --xim --verbose' Are you able to modify the /usr/share/ibus/ui/gtk/panel.py below and run ibus panel directly? --- /usr/share/ibus/ui/gtk/panel.py.orig +++ /usr/share/ibus/ui/gtk/panel.py @@ -320,9 +320,11 @@ class Panel(ibus.PanelBase): self.__focus_ic.enable() def focus_in(self, ic): + print "test1" self.reset() self.__focus_ic = ibus.InputContext(self.__bus, ic) enabled = self.__focus_ic.is_enabled() + print "test2" use_bridge_hotkey = self.__use_bridge_hotkey() self.__set_default_layout_engine(use_bridge_hotkey) @@ -357,6 +359,7 @@ class Panel(ibus.PanelBase): self.__set_im_name(None) if self.__bus.get_use_sys_layout(): self.__xkblayout.set_layout() + print "test3" self.__language_bar.focus_in() def focus_out(self, ic): @@ -373,6 +376,7 @@ class Panel(ibus.PanelBase): if not self.__focus_ic: return + print "test4" enabled = self.__focus_ic.is_enabled() if self.__use_bridge_hotkey(): @@ -388,6 +392,7 @@ class Panel(ibus.PanelBase): else: self.__language_bar.set_enabled(False) else: + print "test5", enabled self.__language_bar.set_enabled(enabled) if enabled == False: % ps -ef | grep ibus/ui account 16077 16031 /usr/bin/python /usr/share/ibus/ui/gtk/main.py % kill 16077 % env IBUS_PREFIX=/usr python /usr/share/ibus/ui/gtk/main.py Then when you focus in a GTK text application, I expect "test1", "test2", "test3" are shown. And when you type Control + Space, I expect "test4" and "test5" are shown.
(In reply to comment #2) > (In reply to comment #1) > > The "input method name" is now grayed out. > > It means focus_in event is not called. okay > Are you able to look at the same problem with gtk applications likes gedit? yes, the same problem remains no matter the application (default text editor in lxde is leafpad). > Are you able to see any errors with verbose mode? > 1. Right click on ibus panel icon and choose 'Quit'. > 2. Run 'ibus-daemon --xim --verbose' yes, there is an error. see ibus log attached below > Are you able to modify the /usr/share/ibus/ui/gtk/panel.py below and run ibus > panel directly? I could, but I need more information: - attached below: the default panel.py & a "panel_modified.py" file (with your lines below). can you confirm the "panel_modified.py" file content is correct? Then, I will install it. > --- /usr/share/ibus/ui/gtk/panel.py.orig > +++ /usr/share/ibus/ui/gtk/panel.py > @@ -320,9 +320,11 @@ class Panel(ibus.PanelBase): > self.__focus_ic.enable() > > def focus_in(self, ic): > + print "test1" > self.reset() > self.__focus_ic = ibus.InputContext(self.__bus, ic) > enabled = self.__focus_ic.is_enabled() > + print "test2" > > use_bridge_hotkey = self.__use_bridge_hotkey() > self.__set_default_layout_engine(use_bridge_hotkey) > @@ -357,6 +359,7 @@ class Panel(ibus.PanelBase): > self.__set_im_name(None) > if self.__bus.get_use_sys_layout(): > self.__xkblayout.set_layout() > + print "test3" > self.__language_bar.focus_in() > > def focus_out(self, ic): > @@ -373,6 +376,7 @@ class Panel(ibus.PanelBase): > if not self.__focus_ic: > return > > + print "test4" > enabled = self.__focus_ic.is_enabled() > > if self.__use_bridge_hotkey(): > @@ -388,6 +392,7 @@ class Panel(ibus.PanelBase): > else: > self.__language_bar.set_enabled(False) > else: > + print "test5", enabled > self.__language_bar.set_enabled(enabled) > > if enabled == False: > > > % ps -ef | grep ibus/ui > account 16077 16031 /usr/bin/python /usr/share/ibus/ui/gtk/main.py > % kill 16077 > % env IBUS_PREFIX=/usr python /usr/share/ibus/ui/gtk/main.py > Then when you focus in a GTK text application, I expect "test1", "test2", > "test3" are shown. > And when you type Control + Space, I expect "test4" and "test5" are shown. After I installed the modified panel.py: - do I need to log-off? - can I start ibus normally (from the menu) or do I need to launch it from a terminal? Thank you. Additional info: I installed ibus 1.400 on the other notebook running LXDE and I can reproduce the same error. I apologize for the delay to answer the bug reports, but I study and work with the PC and it often is very busy. Thank you for your understanding.
Created attachment 528358 [details] ibus verbose mode error when running command: ibus-daemon --xim --verbose
Created attachment 528359 [details] original panel.py cp of the default panel.py file
Created attachment 528360 [details] modified panel.py for testing purpose modified panel.py with your lines of code. I am unsure if I copied and pasted all you lines correctly? Thank you to let me know if I did it wrong. after reading you answer, I will test and report back.
(In reply to comment #3) > > Are you able to see any errors with verbose mode? > > 1. Right click on ibus panel icon and choose 'Quit'. > > 2. Run 'ibus-daemon --xim --verbose' > > yes, there is an error. see ibus log attached below Your gconf db has the wrong data. I don't know why the data is saved. Please try a new user account instead of the current user one (with useradd command). Then I think the error won't be shown.
(In reply to comment #7) > Your gconf db has the wrong data. I don't know why the data is saved. > Please try a new user account instead of the current user one (with useradd > command). > Then I think the error won't be shown. I was perplex on this one, since the same error shows on 2 different computers after upgrading to ibus 1.4. Nevertheless, I have created a new user on my current machine, with a new /home dir. When I log into the new user account, the same issue remains: Show language panel "when active" is still broken. I enclose the output of the command 'ibus-daemon --xim --verbose' on the new account (user name 'mh' vs. previous 'mt') it looks the same as before.
Created attachment 528828 [details] ibus verbose command ran on a new user account (mh)
(In reply to comment #9) > Created attachment 528828 [details] > ibus verbose command ran on a new user account (mh) Hmm, very strange for me. Did you use the latest ibus-anthy? # yum install ibus-anthy % rpm -q ibus-anthy ibus-anthy-1.2.6-3.fc15 I expect any new users don't have the directory of $HOME/.gconf/desktop/ibus/engine/anthy . Could you check it? Thanks.
(In reply to comment #10) > Hmm, very strange for me. Did you use the latest ibus-anthy? > > # yum install ibus-anthy > % rpm -q ibus-anthy > ibus-anthy-1.2.6-3.fc15 hello. yes, already: Package ibus-anthy-1.2.6-3.fc15.i686 already installed and latest version Nothing to do > I expect any new users don't have the directory of > $HOME/.gconf/desktop/ibus/engine/anthy . Could you check it? I enclosed 2 print-screens of the default & new profile. it looks like neither the default neither the new profile has a $HOME/.gconf/desktop/ibus/engine/anthy. I also check on the other notebook running lxde, there is no ".gconf/desktop/ibus/engine/anthy".
Created attachment 529619 [details] new probile .gconf/desktop/ibus/
Created attachment 529621 [details] default profile .gconf/desktop/ibus/
(In reply to comment #11) > hello. yes, already: > Package ibus-anthy-1.2.6-3.fc15.i686 already installed and latest version > Nothing to do Sorry, I forgot the warning issue. (In reply to comment #9) > Created attachment 528828 [details] > ibus verbose command ran on a new user account (mh) I checked the file and the warning is no harm. (In reply to comment #6) > Created attachment 528360 [details] > modified panel.py for testing purpose > > modified panel.py with your lines of code. The file is not correct. Check the comment #2. (In reply to comment #2) > --- /usr/share/ibus/ui/gtk/panel.py.orig > +++ /usr/share/ibus/ui/gtk/panel.py > @@ -320,9 +320,11 @@ class Panel(ibus.PanelBase): > self.__focus_ic.enable() > > def focus_in(self, ic): > + print "test1" > self.reset() > self.__focus_ic = ibus.InputContext(self.__bus, ic) > enabled = self.__focus_ic.is_enabled() > + print "test2" > > use_bridge_hotkey = self.__use_bridge_hotkey() > self.__set_default_layout_engine(use_bridge_hotkey) This means to modify /usr/share/ibus/ui/gtk/panel.py and the modification is around line 320th + 11. The '+' mark is to add the line in the original panel.py. I explained to add two lines; 'print "test1"' and 'print "test2"' above. After you would modify the panel.py, you could confirm your change with diff command: # cp /usr/share/ibus/ui/gtk/panel.py /usr/share/ibus/ui/gtk/panel.py.orig # vi /usr/share/ibus/ui/gtk/panel.py # diff -urNp /usr/share/ibus/ui/gtk/panel.py.orig \ /usr/share/ibus/ui/gtk/panel.py (In reply to comment #2) > % ps -ef | grep ibus/ui > account 16077 16031 /usr/bin/python /usr/share/ibus/ui/gtk/main.py > % kill 16077 > % env IBUS_PREFIX=/usr python /usr/share/ibus/ui/gtk/main.py I explained how to run the ibus panel icon by manual here after you modify the panel.py. Thanks.
> This means to modify /usr/share/ibus/ui/gtk/panel.py and the modification is > around line 320th + 11. > The '+' mark is to add the line in the original panel.py. > I explained to add two lines; 'print "test1"' and 'print "test2"' above. > After you would modify the panel.py, you could confirm your change with diff > command: 1) Thank you for your explanation (and teaching me something new). It makes sens now, and I could modify panel.py with the added lines 'print"test1"' up to 'print"test5", enabled' as in comment #2 > (In reply to comment #2) > > % ps -ef | grep ibus/ui > > account 16077 16031 /usr/bin/python /usr/share/ibus/ui/gtk/main.py > > % kill 16077 > > % env IBUS_PREFIX=/usr python /usr/share/ibus/ui/gtk/main.py > > I explained how to run the ibus panel icon by manual here after you modify the > panel.py. 2) I am sorry, I don't know the sell very well (is % equivalent to # (root)): How do I pass the first commands, I try several times? command1: # ps -ef | grep ibus/ui or # ps -ef | grep ibus/ui account 16077 16031 /usr/bin/python /usr/share/ibus/ui/gtk/main.py both returns the same output: [root@nh28d gtk]# ps -ef | grep ibus/ui mt 1624 1604 0 07:47 ? 00:00:34 /usr/bin/python /usr/share/ibus/ui/gtk/main.py root 3054 2487 0 09:11 pts/0 00:00:00 grep --color=auto ibus/ui command1 (on a single line): # ps -ef | grep ibus/ui account 16077 16031 /usr/bin/python /usr/share/ibus/ui/gtk/main.py returns: [root@nh28d gtk]# ps -ef | grep ibus/ui account 16077 16031 /usr/bin/python /usr/share/ibus/ui/gtk/main.py grep: account: No such file or directory grep: 16077: No such file or directory grep: 16031: No such file or directory [root@nh28d gtk]# After the first command, do I pass directly the 2 other commands: # kill 16077 # env IBUS_PREFIX=/usr python /usr/share/ibus/ui/gtk/main.py 3) I assume, the output will be shown in the terminal windows when I focus on a GTK application, or when I use a shortcut Ctrl+Space. Do I copy and past the output in the terminal window, or do I only confirm comment #2 (Then when you focus in a GTK text application, I expect "test1", "test2", "test3" are shown. And when you type Control + Space, I expect "test4" and "test5" are shown.)? Thank you.
(In reply to comment #15) > 2) I am sorry, I don't know the sell very well (is % equivalent to # (root)): I expect % is the terminal prompt with the current *user* account but not root. > [root@nh28d gtk]# ps -ef | grep ibus/ui > mt 1624 1604 0 07:47 ? 00:00:34 /usr/bin/python > /usr/share/ibus/ui/gtk/main.py > root 3054 2487 0 09:11 pts/0 00:00:00 grep --color=auto ibus/ui This is right. Kill the process id in the next step and run the ibus panel icon by manual. > # kill 16077 > # env IBUS_PREFIX=/usr python /usr/share/ibus/ui/gtk/main.py No, it should be executed by the current user account. % kill 1624 % env IBUS_PREFIX=/usr python /usr/share/ibus/ui/gtk/main.py > > 3) I assume, the output will be shown in the terminal windows when I focus on a > GTK application, or when I use a shortcut Ctrl+Space. Do I copy and past the > output in the terminal window, or do I only confirm comment #2 (Then when you > focus in a GTK text application, I expect "test1", "test2", "test3" are shown. > And when you type Control + Space, I expect "test4" and "test5" are shown.)? Yes, the output will be shown in the terminal and you could check all "test1" - "test5" are shown. If some of the debug strings are not shown, please attach it in this bug report.
Thank you for the explanations, and the patience. I could finally complete the steps [mt@nh28d ~]$ ps -ef | grep ibus/ui mt 10582 10279 3 17:35 ? 00:00:01 /usr/bin/python /usr/share/ibus/ui/gtk/main.py mt 10621 9736 0 17:35 pts/0 00:00:00 grep --color=auto ibus/ui [mt@nh28d ~]$ kill 10582 [mt@nh28d ~]$ env IBUS_PREFIX=/usr python /usr/share/ibus/ui/gtk/main.py /usr/share/ibus/ui/gtk/panel.py:116: Warning: g_object_notify: object class `GtkStatusIcon' has no property named `name' self.__status_icon.set_name('ibus-ui-gtk') test1 test2 test1 test2 test4 test5 1 test4 test5 1 test4 test5 1 test4 test4 test1 test2 test4 test5 0 test4 test5 0 test1 test2 Is that correct?
(In reply to comment #17) > [mt@nh28d ~]$ env IBUS_PREFIX=/usr python /usr/share/ibus/ui/gtk/main.py > /usr/share/ibus/ui/gtk/panel.py:116: Warning: g_object_notify: object class > `GtkStatusIcon' has no property named `name' > self.__status_icon.set_name('ibus-ui-gtk') > test1 > test2 > test1 > test2 > test4 > test5 1 > test4 > test5 1 > test4 > test5 1 > test4 > test4 > test1 > test2 > test4 > test5 0 > test4 > test5 0 > test1 > test2 > > Is that correct? Yes, that's the expected result. So I think, when you enable an input method engine with Control + Space key, the 'test5 1' is shown and the languagebar is shown. Do you see the languagebar GUI?
hello, I got it now. So no. There is no language bar GUI. I did the test again [mt@nh28d ~]$ ps -ef | grep ibus/ui mt 3807 3796 1 22:58 ? 00:00:01 /usr/bin/python /usr/share/ibus/ui/gtk/main.py mt 3936 3916 0 22:59 pts/0 00:00:00 grep --color=auto ibus/ui [mt@nh28d ~]$ kill 3807 [mt@nh28d ~]$ env IBUS_PREFIX=/usr python /usr/share/ibus/ui/gtk/main.py /usr/share/ibus/ui/gtk/panel.py:116: Warning: g_object_notify: object class `GtkStatusIcon' has no property named `name' self.__status_icon.set_name('ibus-ui-gtk') test1 test2 test1 test2 test1 test2 test1 test2 test1 test2 test1 test2 test4 test5 1 test4 test5 1 test4 test5 1 test4 test5 0 test4 test5 0 test1 test2 Control + Space behaves the same manner. It switches the input method to JP on-off, but the language bar does not display when it is on. If it is relevant, ibut is set to "show language panel: when active"
(In reply to comment #19) > hello, I got it now. So no. There is no language bar GUI. I did the test again Thanks for the test. Could you also modify /usr/share/ibus/ui/gtk/languagebar.py by manual and run the ibus panel by manual again? # cp /usr/share/ibus/ui/gtk/languagebar.py /usr/share/ibus/ui/gtk/languagebar.py.orig --- /usr/share/ibus/ui/gtk/languagebar.py.orig 2011-10-12 18:27:37.982094448 +0900 +++ /usr/share/ibus/ui/gtk/languagebar.py 2011-11-01 19:37:21.500605674 +0900 @@ -219,6 +219,9 @@ class LanguageBar(gtk.Toolbar): def set_enabled(self, enabled): self.__enabled = enabled + print "test8 languagebar.set_enabled", self.__enabled + print "test8 languagebar.set_enabled", self.__has_focus + print "test8 languagebar.set_enabled", self.__show if self.__enabled: self.__about_button.show() self.__set_opacity(1.0) @@ -324,6 +327,7 @@ class LanguageBar(gtk.Toolbar): def focus_in(self): self.__has_focus = True self.__im_menu.set_sensitive(True) + print "test6 languagebar.focus_in", self.__show, self.__enabled if (self.__show == 1 and self.__enabled) or self.__show == 2: self.show_all() else: @@ -332,6 +336,7 @@ class LanguageBar(gtk.Toolbar): def focus_out(self): self.__has_focus = False self.__im_menu.set_sensitive(False) + print "test7 languagebar.focus_out", self.__show if self.__show == 2: self.show_all() else: I'd expect the following message is shown when IME is enabled: test4 test5 1 test8 languagebar.set_enabled 1 test8 languagebar.set_enabled True test8 languagebar.set_enabled 1 I'd expect the following message is shown when IME is disabled: test4 test5 0 test8 languagebar.set_enabled 0 test8 languagebar.set_enabled True test8 languagebar.set_enabled 1 Thanks.
Hello, I can modify the file with more confidence and answer you faster. Can you explain me what is the second digit after the line number: eg: @@ -219,6 +219,9 @@ class LanguageBar(gtk.Toolbar): '-219' is the line number on the text file. What is ',9'. Thank you. Here is the output command, when I Ctrl+Space, and switch input in the text editor window. [mt@nh28d ~]$ ps -ef | grep ibus/ui mt 6826 6778 4 11:18 ? 00:00:01 /usr/bin/python /usr/share/ibus/ui/gtk/main.py mt 6994 6955 0 11:18 pts/0 00:00:00 grep --color=auto ibus/ui [mt@nh28d ~]$ kill 6826 [mt@nh28d ~]$ env IBUS_PREFIX=/usr python /usr/share/ibus/ui/gtk/main.py test7 languagebar.focus_out 0 test7 languagebar.focus_out 1 test1 test2 test8 languagebar.set_enabled False test8 languagebar.set_enabled False test8 languagebar.set_enabled 1 test7 languagebar.focus_out 1 test1 test2 test4 test5 1 test8 languagebar.set_enabled 1 test8 languagebar.set_enabled False test8 languagebar.set_enabled 1 test4 test5 1 test8 languagebar.set_enabled 1 test8 languagebar.set_enabled False test8 languagebar.set_enabled 1 test4 test5 1 test8 languagebar.set_enabled 1 test8 languagebar.set_enabled False test8 languagebar.set_enabled 1 test4 test5 1 test8 languagebar.set_enabled 1 test8 languagebar.set_enabled False test8 languagebar.set_enabled 1 test4 test5 1 test8 languagebar.set_enabled 1 test8 languagebar.set_enabled False test8 languagebar.set_enabled 1 test4 test5 1 test8 languagebar.set_enabled 1 test8 languagebar.set_enabled False test8 languagebar.set_enabled 1 test4 test5 0 test8 languagebar.set_enabled 0 test8 languagebar.set_enabled False test8 languagebar.set_enabled 1 test4 test5 0 test8 languagebar.set_enabled 0 test8 languagebar.set_enabled False test8 languagebar.set_enabled 1 test4 test8 languagebar.set_enabled False test8 languagebar.set_enabled False test8 languagebar.set_enabled 1 test7 languagebar.focus_out 1 test1 test2
(In reply to comment #21) > eg: @@ -219,6 +219,9 @@ class LanguageBar(gtk.Toolbar): > '-219' is the line number on the text file. What is ',9'. Thank you. The original code has 6 lines and the new code has 9 lines so 9 - 6 == 3 lines are added in that block. You could check the differences: % diff -urNp /usr/share/ibus/ui/gtk/languagebar.py.orig /usr/share/ibus/ui/gtk/languagebar.py > test1 > test2 > test8 languagebar.set_enabled False > test8 languagebar.set_enabled False > test8 languagebar.set_enabled 1 > test7 languagebar.focus_out 1 > test1 > test2 > test4 > test5 1 > test8 languagebar.set_enabled 1 > test8 languagebar.set_enabled False > test8 languagebar.set_enabled 1 > test4 > test5 1 It's strange. 'test3' and 'test6 ...' are not called. Could you add some other lines between 'test2' and 'test3' and check which line is failed. --- /usr/share/ibus/ui/gtk/panel.py.orig +++ /usr/share/ibus/ui/gtk/panel.py @@ -322,12 +322,17 @@ class Panel(ibus.PanelBase): self.__focus_ic.enable() def focus_in(self, ic): + print "test1" self.reset() self.__focus_ic = ibus.InputContext(self.__bus, ic) enabled = self.__focus_ic.is_enabled() + print "test2" + print "test2-1", enabled use_bridge_hotkey = self.__use_bridge_hotkey() + print "test2-2", use_bridge_hotkey self.__set_default_layout_engine(use_bridge_hotkey) + print "test2-3" if use_bridge_hotkey: if self.__show != 1: self.__language_bar.set_enabled(enabled) I'd expect the following output when an application get the input focus: test1 test2 test2-1 0 test2-2 False test2-3 test8 languagebar.set_enabled 0 test8 languagebar.set_enabled False test8 languagebar.set_enabled 1 test3 test6 languagebar.focus_in 1 0
OK, probably now I understood your problem. I think your problem is fixed in the latest ibus. # yum install --enablerepo=updates-testing ibus % rpm -q ibus ibus-1.4.0-8.fc15.x86_64 Thanks.
(In reply to comment #23) > OK, probably now I understood your problem. > I think your problem is fixed in the latest ibus. > > # yum install --enablerepo=updates-testing ibus > % rpm -q ibus > ibus-1.4.0-8.fc15.x86_64 I used to pass this command syntax to test a software (without enabling the testing repository permanently): su -c 'yum update --enablerepo=updates-testing ibus-1.3.99.20110419-9.fc15' It doesn't work with 1.4.0-8: [root@nh28d ~]# su -c 'yum update --enablerepo=updates-testing ibus-1.4.0-8.fc15.x86_64' Loaded plugins: langpacks, presto, refresh-packagekit Setting up Update Process No Match for argument: ibus-1.4.0-8.fc15.x86_64 No package ibus-1.4.0-8.fc15.x86_64 available. No Packages marked for Update [root@nh28d ~]# exit Can you tell me if your command below install only 1.4.0-8 testing update (or the ibus testing repo, incl. next ibus testing packages)? I use the PC to study. I gladly test a package software, but I don't install testing repos, in the even a testing-update breaks something: > # yum install --enablerepo=updates-testing ibus > % rpm -q ibus > ibus-1.4.0-8.fc15.x86_64 Thanks.
(In reply to comment #24) > [root@nh28d ~]# su -c 'yum update --enablerepo=updates-testing > ibus-1.4.0-8.fc15.x86_64' > Loaded plugins: langpacks, presto, refresh-packagekit > Setting up Update Process > No Match for argument: ibus-1.4.0-8.fc15.x86_64 > No package ibus-1.4.0-8.fc15.x86_64 available. > No Packages marked for Update Yesterday I replaced 1.4.0-8 with 1.4.0-9 with another bug fix. So please try 1.4.0-9. # yum install --enablerepo=updates-testing ibus % rpm -q ibus ibus-1.4.0-9.fc15.x86_64
[mt@nh28d ~]$ rpm -q ibus ibus-1.4.0-9.fc15.i686 Thank you! The language panel is working great again.
Thanks for your test. Your debug message led me to the root cause.
*** Bug 750432 has been marked as a duplicate of this bug. ***
ibus-1.4.0-10.fc15 has been pushed to the Fedora 15 stable repository. If problems still persist, please make note of it in this bug report.