| |||||||
adm | Find | login register |
這是個很奇怪的問題,gcin 在 2.6.6 之後在 KDE 大多數的程式下都無法呼叫出來。更奇怪的是在 konsole 下又可以正常使用,而且從 konsole 啟動的 kwrite/kate 就可以叫出 gcin。,從 GUI 開起 kwrite 就叫不出來。重開 KDE 也沒用,但只要一回到 2.6.6 版就很正常。我是用 Arch Linux,從 gcin 2.6.0 一直 compile 到 gcin 2.6.9 得出的結論。 看了好久 gcin 在 terminal 下也沒任何警告或錯誤訊息,~/.xsession-errors 也看不出什麼來,只有點 restart gcin 時會顯示 cannot write to gcin server: Broken pipe 和 gcin_im_client_focus_out error: Broken pipe。 | |||||||||||||||||
edited: 1
| |||||||||||||||||
沒想到現在有空想要提報這個問題,結果有人比我快呢@@ 檢查的結果,應該是以kde去啟動的Qt-based程式都會沒有辦法使用。若使用其他的shell啟動(像是開konsole啟動軟體、或是在krunner中以sh -c ' '的方式啟動…等)就會可以使用。若為GTK-based則無此問題。 我猜,具體的原因應該是其沒有載入im_module的關係。但是原因不明,只要使用2.6.6以前的版本就沒有問題。 附件為相關的檢查內容。 * pid 10468的kwrite是以krunner輸入sh -c kwrite的方式啟動的 * pid 10426的kwrite則是一般點選單的方式啟動的 測試環境: KDE 4.7.4, ArchLinux 32bit KDE 4.8 RC1, ArchLinux 64bit Qt版本皆為4.8 若eliu老大需要套件編譯時相關的內容我會再附上 | |||||||||||||||||
可能是 archlinux environ 的問題。 我在 fedora 16/QT 4.8RC1, ubuntu 11.10 QT 4.7.4 都沒有你說的問題。 | |||||||||||||||||
有什麼方法可以檢查嗎? | |||||||||||||||||
直接在 bash export QT4_IM_MODULE=gcin 這樣有用嗎? | |||||||||||||||||
如果在終端機打開是都可以正常用(以launcher啟動shell再execute的方式亦同,即上述之sh -c型式)…變數應該是都沒有設定錯。 應該在進入X時,關於輸入法的變數都載入了(QT_IM_MODULE、XMODIFIERS、GTK_IM_MODULE) 參閱上面附件,兩個process都有QT_IM_MODULE、XMODIFIERS=@im=gcin的變數 我發現差別在於有沒有im-gcin.so的載入而已 這樣有什麼線索嗎?
不好意思,麻煩老大囉 | |||||||||||||||||
你確定是 QT4_IM_MODULE or QT_IM_MODULE | |||||||||||||||||
Arch Linux應該是用QT_IM_MODULE沒錯,這組設定檔我用好久了,除非packer有改過設定,不過目前沒有看到相關消息就是了…。 剛剛測試過QT4_IM_MODULE也沒有用。 | |||||||||||||||||
你的 uid 是多少,在 bash 執行 id 可以看到 gcin 為了某些 dm 的問題,在 uid >0 && uid < 500 時無法使用輸入法的。 | |||||||||||||||||
1000唷 | |||||||||||||||||
$ ldd /usr/lib/qt4/plugins/inputmethods/im-gcin.so libgcin-im-client.so.1 => /usr/lib/gcin/libgcin-im-client.so.1 /usr/lib/gcin/libgcin-im-client.so.1 & /usr/lib/qt4/plugins/inputmethods/im-gcin.so 都有更新? /usr/lib/gcin/libgcin-im-client.so.1 是否指到 libgcin-im-client.so.1.2.5 edited: 1
| |||||||||||||||||
$ldd /usr/lib/qt/plugins/inputmethods/im-gcin.so | grep libgcin libgcin-im-client.so.1 => /usr/lib/gcin/libgcin-im-client.so.1 好像跟老大的預期結果不太一樣 會錯意不好意思
$ls -l /usr/lib/gcin/
是指向libgcin-im-client.so.1.2.5沒有錯。 edited: 1
| |||||||||||||||||
在 openSUSE 12.1 KDE 4.7.2 gcin 2.6.7 也有此問題 | |||||||||||||||||
昨天我是在 fedora 16 LXDE & ubuntu 11.10 unity 開啟的。 今天在 fedora 16 試了一下 真正的 KDE 4.8,gcin 在這邊有兩個問題
KDE 的 menu 也改得很複雜,好像比 gnome 3 還難用。
我在 menu 開 kate 依然是 ok,真是奇怪。diff 2.6.6 2.6.7 也比不出那邊出問題。
| |||||||||||||||||
我自己在ArchLinux的作法是只設定輸入法相關變數,待登入後讓IM_MODULE自己呼叫gcin出來。 我今天如果有空會再安裝虛擬機器,試看看不同DE下,有沒有不同的行為。
話說,這論壇有限額度嗎?剛剛要回不讓我回哩,胡搞瞎搞之後又可以了 @@" edited: 1
| |||||||||||||||||
之前有人惡搞,所以有每天 quota 的限制 | |||||||||||||||||
數次是超過兩次?不過警告視窗好像是 2.6.0 開始會跳出,之前都不會。是 2.6.0 之後加入的警告訊息嗎?還是之前就有,只是 2.6.0 之後開使被多次起動?
Kicker 從一開始我就用得很不慣,所以我一直都是用 lancelot。
我也是看 diff 看不出個所以然...
qt4-im 根本就沒動,不曉得問題到底出在哪裡。 | |||||||||||||||||
為了避免造成 KDE 的困擾,下一版會把這個 fatal error 改成只在 tty print,不會跳出 dialog | |||||||||||||||||
在gnome、fluxbox之下就很正常... 我在猜是不是因為KDE(或其他支援KDE的WM)是以kdeinit4來產生process的緣故,然後不知為何地gcin就沒載入了。 剛剛觀察到其他的環境下,parent process都是init,也都可以正常使用gcin。 不知道跟這有沒有關係,當作一個線索囉 | |||||||||||||||||
問題找到了,但造成問題的原因不明。 void box_warn(char *fmt,...) va_start(args, fmt); // GtkWidget *dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, 只要到 util.cpp 裡的 void box_warn(),uncomment 掉 GtkWidget *dialog 那一行,gcin 在 KDE 下的程式就叫不出來了。試過了 2.6.7~2.6.9 都有用。 | |||||||||||||||||
這真的很難理解 box_warn 這個 function 只有 gcin 自己在用,沒有給 im-gcin.so & libgcin-im-client.so 用,怎麼會出現問題? 不知道 KDE 弄了什麼怪東西,是不是有改變 GTK ? | |||||||||||||||||
我大概知道原因了,那段 code 會造成 qt的程式 call lib-gcin-im-client 時 load gtk,看起來是不允許同時 load gtk & qt。 | |||||||||||||||||
剛才發現有些 KDE 的 lineedit widget 點滑鼠右鍵會造成那個程式 segfault。我把 backtrace 貼出來,希望會有點用處。但沒有開 debugging symbol,不過應該還是可以看出來些可疑之處。 | |||||||||||||||||
太神奇了…真的可以,囧 | |||||||||||||||||
| |||||||||||||||||
感謝!問題解決了。 | |||||||||||||||||
測試完後可以用囉,謝謝eliu!! | |||||||||||||||||
可以請教 archlinux 如果使用 KDM,應該在哪裡設定環境變數嗎? 我一般習慣設在 .xinitrc,但 kdm 似乎不會去讀它 | |||||||||||||||||
我是寫在「~/.xprofile」。 |
| |||||||
adm | Find | login register |