fcitx輸入法在wps、wineqq中失靈問題的解決

GHOST_349178發表於2019-02-16

最近由Mint轉到了Open SUSE下,各種折騰。

眼看著已經摺騰差不多了,今天又遇到個問題:

在Wineqq以及wps下,fcitx輸入法打不開,沒法輸入中文。

這就非常坑了,這兩個軟體輸入不了中文,基本就相當於沒安裝。於是乎上網各種查。網上查到的教程上大部分都是說這是因為有幾個環境變數沒有配置正確造成的。按照網上的方法,分別在~/.bashrc ~/.xprofile /etc/profile 檔案中新增了如下程式碼:

export XIM="fcitx"
export XIM_PROGRAM="fcitx"
export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"

重啟,發現還是不好使。

偶然發現,如果在命令列中執行wps等命令,fcitx就好使。初步懷疑是上面配置的環境變數在雙擊執行的時候未生效造成的。

寫一指令碼,測試,程式碼如下:

#!/usr/bin/sh
export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
/usr/bin/wpp 

儲存為wpp.sh,將桌面上的wps-office-wpp.desktop目標地址改成該指令碼之後,執行,好使了。
確定是環境變數的問題了。

接下來,就可以對wps、wineqq做一下小改動。

Wine QQ

wineqq的執行指令碼是/opt/longene/tm2013/tm2013.sh (我安裝的是tm2013,qq2013同理)。編輯此指令碼,在最開始加入

export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"

儲存

WPS

對於wps,雙擊桌面圖示執行的是/usr/bin/wps(wpp,et),所以需要用一個指令碼,在執行程式之前,配置一下環境變數。實際指令碼跟上面的測試指令碼有一點點區別:

#!/usr/bin/sh
export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
/usr/bin/wpp "$1"   //modify:13-12-18

之所以將可執行檔案後面加了個引數,是因為.desktop檔案呼叫可執行檔案的時候會傳一個%f引數給可執行檔案,我們現在讓它傳給我們的指令碼,再由我們的指令碼呼叫

將呼叫wps、wpp、et的指令碼都寫好後,放到/opt/kingsoft/wps-office/office6/目錄中,然後分別修改/usr/share/applications/目錄中的wps-office-wps.desktop wps-office-wpp.desktop wps-office-et.desktop做如下修改(以wpp為例,其餘類似):

#!/usr/bin/env xdg-open
[Desktop Entry]
Comment=Use Kingsoft Presentation to edit and play presentations.
Comment[zh_CN]=使用 WPS 演示編輯、播放簡報
#Exec=/usr/bin/wpp %f
Exec=/opt/kingsoft/wps-office/office6/wpp.sh %f   ####將上一行程式碼註釋掉,增加本行
GenericName=Kingsoft Presentation
GenericName[zh_CN]=WPS 演示
MimeType=application/wps-office.dps;application/wps-office.dpt;application/wps-office.ppt;application/wps-office.pot;application/vnd.ms-powerpoint;application/vnd.mspowerpoint;application/mspowerpoint;application/powerpoint;application/x-mspowerpoint;application/wps-office.pptx;application/wps-office.potx;
Name=Kingsoft Presentation
Name[zh_CN]=WPS 演示
StartupNotify=false
Terminal=false
Type=Application
Categories=Office;Presentation;Qt;
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=
Icon=wps-office-wppmain
InitialPreference=3

執行wps,成功


雖然問題是解決了,但現在還是有幾個問題,求高手指點:

  1. 在.desktop指令碼中 %f 引數是什麼意思

2. 為什麼在相應檔案中配置了環境變數,在終端之外卻不好使?

2013/12/18

  1. 更正bug:指令碼中的最後一行應改為/usr/bin/wpp “$1”

  2. %f的作用 官方手冊

%f A single file name, even if multiple files are selected. The system reading the desktop entry should recognize that the program in question cannot handle multiple file arguments, and it should should probably spawn and execute multiple copies of a program for each selected file if the program is not able to handle additional file arguments. If files are not on the local file system (i.e. are on HTTP or FTP locations), the files will be copied to the local file system and %f will be expanded to point at the temporary file. Used for programs that do not understand the URL syntax.

相關文章