快速解決linux下中文輸入法問(wèn)題
故事背景:最近在做資產(chǎn)上報(bào)相關(guān)功能,要支持中文輸入,如果正常快捷方式啟動(dòng)程序沒(méi)問(wèn)題,但是升級(jí)或者卸載重新安裝,自啟的時(shí)候是使用su usr -C XX.sh啟動(dòng),root下啟動(dòng)沒(méi)辦法獲取用戶的環(huán)境變量,下面開(kāi)始咱們探險(xiǎn)之路。。。
探索之路:通過(guò)export打印root和用戶下的環(huán)境變量對(duì)比,以及google相關(guān)linux下輸入法相關(guān)問(wèn)題,找到了QT_IM_MODULE這個(gè)變量,不同的系統(tǒng)會(huì)是ibus或者fctix或者其他等等,,,
解決方案:因?yàn)槌绦虻谝淮伟惭b的時(shí)候需要用戶手動(dòng)啟動(dòng),我們需要在代碼里面添加獲取當(dāng)前用戶下的QT_IM_MODULE的值,然后寫(xiě)入全局一個(gè)文件,然后在鉤子腳本里面去獲取這個(gè)全局變量的值,在啟動(dòng)腳本里面通過(guò)設(shè)置export QT_IM_MODULE=XX就可以了,下面展示代碼
代碼有話說(shuō):
1、程序里面需要添加的代碼:
//添加全局中文輸入法環(huán)境變量 QString qstrInputMethod = path; qstrInputMethod += "/.local/sdforcnos/sdforcnos.inputMethod"; char *pInputEnv = getenv("QT_IM_MODULE"); if(pInputEnv != NULL) { QString qstrCMD = QString("echo %1 > %2").arg(pInputEnv).arg(qstrInputMethod); system(qstrCMD.toStdString().c_str()); printf("---%s-----------QT_IM_MODULE=%s\n", qstrCMD.toStdString().c_str(), pInputEnv); }
2、鉤子腳本需要的代碼:
if [ -e "/home/${user}/.local/sdforcnos/sdforcnos.inputMethod" ];then inputEnv=`cat /home/${user}/.local/sdforcnos/sdforcnos.inputMethod` if [ ! -z "$inputEnv" ]; then export QT_IM_MODULE="$inputEnv" fi fi su $user -c "/usr/bin/startsd &"
總結(jié)
到此這篇關(guān)于linux下中文輸入法問(wèn)題的文章就介紹到這了,更多相關(guān)linux中文輸入法問(wèn)題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux系統(tǒng)禁止root賬號(hào)遠(yuǎn)程登錄的命令
這篇文章主要介紹了Linux系統(tǒng)禁止root賬號(hào)遠(yuǎn)程登錄的方法,文中給大家提到linux下禁止root遠(yuǎn)程登錄和添加新用戶,需要的朋友可以參考下2019-07-07ubuntu開(kāi)啟22端口的實(shí)現(xiàn)
這篇文章主要介紹了ubuntu開(kāi)啟22端口的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08linux服務(wù)器下通過(guò)iptables+Denyhost抵御暴力破解的配置方法
這篇文章主要介紹了linux服務(wù)器下通過(guò)iptables + Denyhost抵御暴力破解的方法,需要的朋友可以參考下2014-11-11教你一招實(shí)現(xiàn)Linux中的文本比對(duì)
這篇文章主要給阿加介紹了關(guān)于Linux下文本比對(duì)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11linux下查看yum/rpm/dpkg某軟件是否已安裝的方法
這篇文章主要介紹了在linux下查看yum/rpm/dpkg某軟件是否已安裝的方法,文中給出了詳細(xì)的示例代碼,對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03詳解linux dma驅(qū)動(dòng)編寫(xiě)
這篇文章主要介紹了詳解linux dma驅(qū)動(dòng)編寫(xiě),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04Linux關(guān)于透明大頁(yè)機(jī)制的介紹
這篇文章介紹了Linux中的透明大頁(yè)機(jī)制,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02