案例
万恶的 Sublime Linux 版本竟然不支持 GTK。于是我们只能添加 hooks 让它实现支持搜狗拼音输入法。
适用 Linux 发行版本
Ubuntu 14.04+
解决过程
1. 安装依赖:
sudo apt-get install build-essential sudo apt-get install libgtk2.0-dev
2. 复制下面的代码将其粘贴到终端中并回车:
cat >> ~/sublime_imfix.c <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); g_object_set_data(G_OBJECT(context),"window",window); if(!GDK_IS_WINDOW (window)) return; 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); } EOF
3. 编译:
cd ~ gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
4. 移动至 Sublime 安装目录:
sudo mv libsublime-imfix.so /opt/sublime_text/
5. 修改 /usr/bin/subl:
vim /usr/bin/subl
将“exec /opt/sublime_text/sublime_text "$@"
”修改为:
LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@"
6. 修改鼠标右键打开调用:
sudo vim /usr/share/applications/sublime_text.desktop
在 [Desktop Entry] 中:
将“Exec=/opt/sublime_text/sublime_text %F
”修改为:
Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text %F"
在 [Desktop Action Window] 中:
将“Exec=/opt/sublime_text/sublime_text -n
”修改为:
Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text -n"
在 [Desktop Action Document] 中:
将“Exec=/opt/sublime_text/sublime_text --command new_file
”修改为:
Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text --command new_file"
注意
修改时请一定要加英文半角双引号 "",否则会导致不能打开文件名带有空格的文件。
此处仅修改了 /usr/share/applications/sublime-text.desktop
,但可以正常使用了。位于 /opt/sublime_text/
目录下的 sublime-text.desktop
可不必修改。
太感谢了!可以说是网上最简洁明了的教程了!