快速解决linux下中文输入法问题

故事背景:最近在做资产上报相关功能,要支持中文输入,如果正常快捷方式启动程序没问题,但是升级或者卸载重新安装,自启的时候是使用su usr -C XX.sh启动,root下启动没办法获取用户的环境变量,下面开始咱们探险之路。。。

探索之路:通过export打印root和用户下的环境变量对比,以及google相关linux下输入法相关问题,找到了QT_IM_MODULE这个变量,不同的系统会是ibus或者fctix或者其他等等,,,

解决方案:因为程序第一次安装的时候需要用户手动启动,我们需要在代码里面添加获取当前用户下的QT_IM_MODULE的值,然后写入全局一个文件,然后在钩子脚本里面去获取这个全局变量的值,在启动脚本里面通过设置export QT_IM_MODULE=XX就可以了,下面展示代码

代码有话说:

1、程序里面需要添加的代码:

//添加全局中文输入法环境变量
    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 &"

总结

到此这篇关于linux下中文输入法问题的文章就介绍到这了,更多相关linux中文输入法问题内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-07-30

为Linux安装红旗紫光输入法

可以下载标准版或者for Magic Linux的版本,实际上,for Magic Linux的版本也可以在RH 9下使用. 然后,运行 rpm -ivh rf-xim-input-5.0-43.i386.rpm --nodep rpm -ivh ctrlpanel-1.5.5.rpm --nodep 进行输入法安装.然后: cd /etc/X11/xinit/xinitrc.d/ mv /etc/profile.d/rfinput.sh xinput 然后修改xinput末尾的 # rfinp

[Linux]输入法xsim安装方法

希望此文能解决各位在安装xsim时遇上的问题 从http://sourceforge.net/projects/xsim 可获得xsim,目前的稳定版本是0.3.9.4,强烈建议大家以root登录系统执行安装,这样可以避免一些莫名其妙的问题. 首先请检查软件包是否安装完全.c++,db,db-devel是必需的,如果希望将状态窗口放在KDE的任务条上,系统中需要有kdelibs3-devel包. 接下来检查locale,相信大家都是中文locale,如果你需要输入GBK汉字,让root用户也能使

Linux中巧妙安装红旗紫光输入法

可以下载标准版或者for Magic Linux的版本,实际上,for Magic Linux的版本也可以在RH 9下使用. 然后,运行 rpm -ivh rf-xim-input-5.0-43.i386.rpm --nodep rpm -ivh ctrlpanel-1.5.5.rpm --nodep 进行输入法安装.然后: cd /etc/X11/xinit/xinitrc.d/ mv /etc/profile.d/rfinput.sh xinput 然后修改xinput末尾的 # rfinp

Linux中JDK安装配置教程

JDK在官网下载,也可以从某个文件服务器进行下载. 1.在usr目录创建一个java文件夹: mkdir java 2.进入刚创建的java文件夹,下载jdk: cd /usr/java 例如: wget http://www.xxxx.com...jdk-8-linux-x64.tar.gz 3.解压jdk,在/usr/java目录下看到一个jdk1.8.0的目录: tar -zxvf jdk-8-linux-x64.tar.gz 4.删除原压缩包: rm -rf jdk-8-linux-x6

虚拟机linux中jdk安装配置方法

虚拟机linux中jdk配置及其安装,供大家参考,具体内容如下 第一步:挂载JDK镜像文件 步骤:虚拟机-->设置-->CD/DVD(SATA)-->选中JDK镜像文件 进入linux系统中输入命令:mount   /mnt/cdrom 此时可能会出现mount: can't find /mnt/cdrom/ in /etc/fstab 这样的错误,如果没有跳转第二步即可 换条命令:mount   dev/cdrom   /mnt /cdrom 如果mnt下没有cdrom目录,就自己去新

linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程

本文实例讲述了linux平台编译安装PHP7并安装Redis扩展与Swoole扩展的方法.分享给大家供大家参考,具体如下: 前面<PHP7安装Redis扩展教程[Linux与Windows平台]>一文告诉读者简单的安装Redis的方法,下面我们来实现在linux中编译安装PHP7并安装Redis扩展与Swoole扩展的方法. 编译安装PHP7并安装Redis扩展Swoole扩展: 在编译php7的机器上已经有编译安装过php5.3以上的版本,从而依赖库都有了 本php7是编译成fpm-php

Linux中samba服务器的搭建教程

使用的vmware12虚拟机安装的centos6.8和物理机上的windows10,实现在windows10 上访问CentOs上的samba服务. 一.先查看系统中是否安装有samba服务相关的软件包 查看到我的linux中没有安装samba相关的软件包,接下来进行安装几个相关的软件包: samba-3.6.9-151.el6.x86_64 //服务器端软件,主要提供samba服务器的守护程序,共享文档,日志的轮替 samba-common-3.6.9-151.el6.x86_64 //主要提

详解如何在 Linux 中安装最新的 Python 3.6 版本

在这篇文章中,我将展示如何在 CentOS/RHEL 7.Debian 以及它的衍生版本比如 Ubuntu(最新的 Ubuntu 16.04 LTS 版本已经安装了最新的 Python 版本)或 Linux Mint 上安装和使用 Python 3.x .我们的重点是安装可用于命令行的核心语言工具. 然后,我们也会阐述如何安装 Python IDLE - 一个基于 GUI 的工具,它允许我们运行 Python 代码和创建独立函数. 在 Linux 中安装 Python 3.6 在我写这篇文章的时

linux中kvm的安装及快照管理

一.kvm的安装及状态查看 1.安装软件 yum -y install kvm virt-manager libvirt 2.启动libvirtd 报错,升级device-mapper-libs yum -y upgrade device-mapper-libs kvm桥接功能: 1.删除eth0配置文件上的IP配置 2.添加BRIDGE="br0"到eth0的配置文件 3.新建ifcfg-br0配置文件 DEVICE="br0" NM_CONTROLLED=&qu

在linux中安装mongodb的方式小结

对于mongodb的安装,官方提供了多种安装方式,推荐使用deb或者rpm方式安装. 下面我们介绍在Ubuntu16.04环境下的安装,安装方式使用apt包管理工具进行安装. 1. Ubuntu16.04安装mongodb 1.1 概述 Ubuntu有其自己的MongoDB包,MongoDB官方提供的包与其相比更新.我们安装是MongoDB提供的.deb包 Note MongoDB只提供了64位LTS(Long Term Surpport) Ubuntu版本的支持. 1.2 包 MongoDB官

在VMWare下LINUX中安装VMTool及共享文件夹

1.开始安装Vmware 选择VM-->install VMware Tools (此时Linux就会自动开始下载VMware Tools,并且保存在home/lmy/downloads下) 2.将其拷贝到桌面上(右击-copy to-选择桌面-Extract here) 3.打开terminal (ctrl+alt+t),cd 到解压完的目录也就是home/lmy/destop/有个distrib的目录 4.用超级用户身份运行 sudo ./vmware-install.pl 5.一直默认选项