fedora27 sublime3 fcitx 中文输入 解决
来源:互联网 发布:板绘用什么软件 编辑:程序博客网 时间:2024/06/18 04:20
1:cat /proc/version
yangbh@corpsoftware ->
$ cat /proc/version
Linux version 4.13.13-300.fc27.x86_64 (mockbuild@bkernel02.phx2.fedoraproject.org) (gcc version 7.2.1 20170915
(Red Hat 7.2.1-2) (GCC)) #1 SMP Wed Nov 15 15:47:50 UTC 2017
2:安装sublime3
2.1 Install the GPG key:
sudo rpm -v --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg
2.2 use Stable
sudo dnf config-manager --add-repo https://download.sublimetext.com/rpm/stable/x86_64/sublime-text.repo
2.3 Update dnf and install Sublime Text
sudo dnf install sublime-text
安装完成后在/opt/sublime_text目录下
3:编译sublime-imfix共享库
3.1 新建 sublime-imfix.c 文件,内容如下
/*sublime-imfix.cUse LD_PRELOAD to interpose some function to fix sublime input method support for linux.By Cjacker Huanggcc -shared -o libsublime-imfix.so sublime-imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPICLD_PRELOAD=./libsublime-imfix.so subl*/#include <gtk/gtk.h>#include <gdk/gdkx.h>typedef GdkSegment GdkRegionBox;struct _GdkRegion{ long size; long numRects; GdkRegionBox *rects; GdkRegionBox extents;};GtkIMContext *local_context;voidgdk_region_get_clipbox (const GdkRegion *region, GdkRectangle *rectangle){ g_return_if_fail (region != NULL); g_return_if_fail (rectangle != NULL); rectangle->x = region->extents.x1; rectangle->y = region->extents.y1; rectangle->width = region->extents.x2 - region->extents.x1; rectangle->height = region->extents.y2 - region->extents.y1; GdkRectangle rect; rect.x = rectangle->x; rect.y = rectangle->y; rect.width = 0; rect.height = rectangle->height; //The caret width is 2; //Maybe sometimes we will make a mistake, but for most of the time, it should be the caret. if(rectangle->width == 2 && GTK_IS_IM_CONTEXT(local_context)) { gtk_im_context_set_cursor_location(local_context, rectangle); }}//this is needed, for example, if you input something in file dialog and return back the edit area//context will lost, so here we set it again.static GdkFilterReturn event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer im_context){ XEvent *xev = (XEvent *)xevent; if(xev->type == KeyRelease && GTK_IS_IM_CONTEXT(im_context)) { GdkWindow * win = g_object_get_data(G_OBJECT(im_context),"window"); if(GDK_IS_WINDOW(win)) gtk_im_context_set_client_window(im_context, win); } return GDK_FILTER_CONTINUE;}void gtk_im_context_set_client_window (GtkIMContext *context, GdkWindow *window){ GtkIMContextClass *klass; g_return_if_fail (GTK_IS_IM_CONTEXT (context)); klass = GTK_IM_CONTEXT_GET_CLASS (context); if (klass->set_client_window) klass->set_client_window (context, window); if(!GDK_IS_WINDOW (window)) return; g_object_set_data(G_OBJECT(context),"window",window); int width = gdk_window_get_width(window); int height = gdk_window_get_height(window); if(width != 0 && height !=0) { gtk_im_context_focus_in(context); local_context = context; } gdk_window_add_filter (window, event_filter, context);}
3.2 安装依赖sudo dnf install gcc gtk2-devel.x86_64
3.3 编译共享库,生成libsublime-imfix.so文件
gcc -shared -o libsublime-imfix.so sublime-imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
4: 复制文件到 /opt/sublime_text 目录下sudo cp libsublime-imfix.so /opt/sublime_text/
5:新建命令 /usr/local/bin/sublime3
vi /usr/local/bin/sublime3 输入内容如下:
#!/bin/bashLD_PRELOAD=/usr/local/sublime_text_3/libsublime-imfix.so /usr/local/sublime_text_3/sublime_text
添加执行权限chmod +x /usr/local/bin/sublime3
此时可以从终端运行sublime3,已经可以输入中文了
6: 快捷方式修改
vi/usr/share/applications/sublime_text.desktop
yangbh@corpsublime_text ->
$ cat /usr/share/applications/sublime_text.desktop
[Desktop Entry]Version=1.0Type=ApplicationName=Sublime TextGenericName=Text EditorComment=Sophisticated text editor for code, markup and prose#Exec=/opt/sublime_text/sublime_text %FExec=sublime3 %FTerminal=falseMimeType=text/plain;Icon=sublime-textCategories=TextEditor;Development;StartupNotify=trueActions=Window;Document;[Desktop Action Window]Name=New Window#Exec=/opt/sublime_text/sublime_text -nExec=sublime3OnlyShowIn=Unity;[Desktop Action Document]Name=New FileExec=sublime3 --command new_file#Exec=/opt/sublime_text/sublime_text --command new_fileOnlyShowIn=Unity;
此时,通过快捷方式进入的sublime3,也可以输入中文啦。。。。。
- fedora27 sublime3 fcitx 中文输入 解决
- ubuntu下解决sublime3不能使用Fcitx输入中文
- 【Others】解决Sublime3中无法输入中文
- emacs fcitx中文输入
- Sublime Text 2 中文输入完美解决(使用fcitx输入法)
- UBUNTU安装fcitx-sougoupinyin, sublime text 3, 解决中文输入
- 解决sublime3 中文乱码问题
- sublime3中文乱码解决包ConvertToUTF8
- 解决sublime3,python3不能输出中文问题
- 安装fcitx中文输入法(fcitx4.0.1版本和fcitx3.6.3版本),解决输入框乱码问题
- 解决ubuntu下用sublime-text2不能输入中文的问题 fcitx
- 解决Ubuntu下Sublime text 2的中文输入问题(使用fcitx输入法)
- 解决ubuntu14.04下Qt 5.3.1 下的QtCreator fcitx,ibus不能输入中文
- 解决ubuntu14.04下Qt 5.3.1下的QtCreator fcitx不能输入中文
- Fcitx 和 Sublime Text 2/3 安装(含解决Sublime Text 中文输入问题)
- 解决ubuntu14.04下Qt 5.3.1下的QtCreator fcitx,ibus不能输入中文
- 解决ubuntu14.04下Qt 5.3.1下的QtCreator fcitx,ibus不能输入中文
- 新版QT creator下解决fcitx无法输入中文问题(QTcreatorV4.1.0)
- ubuntu14.04 图形化配置 静态IP
- 由参加领域驱动设计大会与自己所想的
- BeanNotOfRequiredTypeException: Bean named "" must be of type [] but was actually of type [com.su
- 1到n的阶层
- dubbo zookeeper简单的provide 和cosumer
- fedora27 sublime3 fcitx 中文输入 解决
- mongodb遍历万亿级数据,论索引的重要性
- 高可用集群架构maxscale
- CButtonST类使用
- 设计模式(二十五)------23种设计模式(17):享元模式
- spring注解
- poj3368——Frequent values
- LibRec 每周算法:DeepFM
- vector第一步修炼之道