fcitx-remote 接口通过 socat 跨主机使用

依云 posted @ Jul 27, 2012 11:10:13 AM in Linux with tags fcitx vim 网络 socat , 4026 阅读

本文来自依云's Blog,转载请注明。

在使用 Mac OS X 时,我十分想念 fcitx.vim 插件在使用 Vim 时能智能切换输入法的激活状态。所以我换回 Arch Linux 了。关于 Mac OS X 与我的「不兼容」还是留到下次再说,这次解决的问题是,当我 ssh 到另一主机上使用 Vim 时,如何让 fcitx.vim 能够控制本机的输入法状态?

fcitx-remote 接口使用的是 UNIX 套接字文件,因此天生是不能跨主机通信的(因此不用担心局域网里其它人捣乱)。现在,为了进行跨主机通信,当然要使用网络套接字了。既然都是套接字,转发下就可以了嘛。于是想到 socat。

在远程机器监听一个套接字文件,转发到本地机器的 8989 端口:

socat UNIX-LISTEN:/tmp/fcitx-remote.sock,fork TCP:192.168.2.142:8989

在本地监听网络 8989 端口,转发到本地 fcitx 的套接字:

socat tcp-listen:8989,fork UNIX-CONNECT:/tmp/fcitx-socket-\\:0

fcitx.vim 使用更新后的 1.2 版,然后告诉它你要使用的套接字文件地址:

export FCITX_SOCKET=/tmp/fcitx-remote.sock                                                                                                                                               

然后就可以啦~

最后,贴一张测试过程中抓到的 htop 的图片,2 万多进程哦,htop 已经卡了,实际的 load 请看右下角的红色数字。我执行killall socat命令后等了几分钟,终于因为内存耗尽系统开始重新缓慢工作了。数次 killall 后终于恢复正常……再次测试前果断先ulimit -u 1000 :-)

maplebeats 说:
Jul 28, 2012 06:02:42 PM

都么样子了还没死机,让我的破机子情何以堪。。。。

Avatar_small
依云 说:
Jul 28, 2012 08:28:26 PM

你也可以试试的嘛,开个 socat 把 socket A 转发到 socket B,然后再开个 socat 反过来转发。准备好 htop 和相机,拿 nc 之类的连上去就可以啦~

XiaoQI Ge 说:
Aug 14, 2012 10:02:27 PM

前段时间发现这个socat的

fanhe 说:
Nov 03, 2012 09:47:37 AM

在公司被逼用这个东西了。
我来报个bug
你在plugin/fcitx.vim的判断里面,不应该判断 $DISPLAY 的,至少在ssh到终端的时候不应该判断这个变量,否则在ssh的终端,这个插件不生效。

Avatar_small
依云 说:
Nov 03, 2012 10:12:17 AM

在 ssh 里的时候 fcitx.vim 不会载入的啊。

fanhe 说:
Nov 05, 2012 12:21:00 AM

你这插件不就是为了让ssh到服务器并且使用vim的时候来支持fcitx的自动切换的么?

Avatar_small
依云 说:
Nov 05, 2012 09:30:29 AM

嗯,是有点问题……


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter