快速解决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中文输入法问题内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 为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中巧妙安装红旗紫光输入法

    可以下载标准版或者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下中文输入法问题

    故事背景:最近在做资产上报相关功能,要支持中文输入,如果正常快捷方式启动程序没问题,但是升级或者卸载重新安装,自启的时候是使用su usr -C XX.sh启动,root下启动没办法获取用户的环境变量,下面开始咱们探险之路... 探索之路:通过export打印root和用户下的环境变量对比,以及google相关linux下输入法相关问题,找到了QT_IM_MODULE这个变量,不同的系统会是ibus或者fctix或者其他等等,,, 解决方案:因为程序第一次安装的时候需要用户手动启动,我们需要在代

  • 解决linux下openoffice word文件转PDF中文乱码的问题

    网上很多介绍是由于jdk中的没有字体导致乱码,而我遇到的是转换过程并未报错,但转换后的PDF中是乱码,尝试在jre/lib/fonts/中增加字体,还是不能解决问题,因此可以判断非jre字体问题,是linux系统字体问题. 用vim /etc/fonts/fonts.conf,可以看到系统字体文件在/usr/share/fonts,将windows系统字体文件连接到此目录下 ln -s /usr/local/fonts fonts 然后更新缓存:fc-cache 重启openoffice: /o

  • 解决linux下vim中文乱码的方法

    Vim编码的详细介绍 Vim和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括 UCS-2.UTF-8 等流行的 Unicode 编码方式. Vim 有四个跟字符编码方式有关的选项,encoding.fileencoding.fileencodings.termencoding (这些选项可能的取值请参考 Vim 在线帮助  :help encoding-names),它们的意义如下: 1.encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buf

  • 完美解决linux下U盘文件只读的问题

    1. 在终端运行如下命令 tail -f /var/log/syslog 2. 插入有只读文件系统故障的U盘 3. 观察命令行输出 输出局部如下: Jul  8 16:44:50 cslouis-pc kernel: [15595.155904] FAT: Filesystem error (dev sdb4) Jul  8 16:44:50 cslouis-pc kernel: [15595.155905]    fat_get_cluster: invalid cluster chain (

  • 解决Linux下Mysql5.7忘记密码问题

    一.问题 linux下的mysql5.7忘记密码 二.解决 •第一步:打开mysql5.7的配置文件my.cnf,并在里面增加一行:skip-grant-tables   保存并退出(:wq) [root@iz09a32x1sghz3z ~]# vi /etc/my.cnf •第二步:重启mysql [root@iz09a32x1sghz3z ~]# service mysqld restart •第三步:登录mysql并且修改密码 用root账号登录: [root@iz09a32x1sghz3

  • 快速解决bootstrap下拉菜单无法隐藏的问题

    下拉菜单的两种实现 想必大家都知道,bootstrap为我们提供了一个下拉菜单的组件,官方也为我们提供两种使用方法 1.标签指定data-toggle <div class="dropdown"> <button type="button" class="btn dropdown-toggle" id="dropdownMenu1" data-toggle="dropdown">主题

  • 完美解决linux下node.js全局模块找不到的情况

    今天在在linux上用npm安装了pm2准备部署node项目,结果通过pm2命令启动项目的时候报pm2找不到,这很伤,以为pm2没有安装成功,但是在node安装目录下面的bin文件夹里面调用pm2却没问题. /usr/local/node/node-v7.3.0-linux-x64/bin/pm2 list 类似这样调用pm2 list命令查看pm2启动的项目没有任何问题. 原来linux系统上通过npm全局安装了模块以后,不能像windos下面那样自动配置环境变量,需要自己动手配置...好吧,

  • 解决linux下node.js全局模块找不到的问题

    今天在在linux上用npm安装了pm2准备部署node项目,结果通过pm2命令启动项目的时候报pm2找不到,这很伤,以为pm2没有安装成功,但是在node安装目录下面的bin文件夹里面调用pm2却没问题. /usr/local/node/node-v7.3.0-linux-x64/bin/pm2 list 类似这样调用pm2 list命令查看pm2启动的项目没有任何问题. 原来linux系统上通过npm全局安装了模块以后,不能像windos下面那样自动配置环境变量,需要自己动手配置...好吧,

  • 如何解决Linux下Too many open files问题

    引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数. 通过命令ulimit -a可以查看当前系统设置的最大句柄数是多少 core file size          (blocks, -c) 0 data seg size           (kbytes, -d) unlimited scheduling priority             (-e) 0 file size               (blocks, -f) unlimited pending

  • 解决linux下redis数据库overcommit_memory问题

    背景 公司的redis有时background save db不成功,通过log发现下面的告警,很可能由它引起的: [13223] 17 Mar 13:18:02.207 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf a

随机推荐