WSL2 中文输入法无效

2020-12-22 10:32:44 +08:00
 monetto

环境为 Win10 18363.1139 + WSL2 + Ubuntu 20.04 GUI 为 xfce4,用的 vcxsrv 连接。 fcitx 已经启动了,右上角可以见到图标。 但是输入后还是英文字母,没有中文输入法的框框。 求大佬帮忙...

6128 次点击
所在节点    Linux
21 条回复
samin
2020-12-22 10:35:13 +08:00
弱弱提问一下 WSL2 是有 UI 的 ? 一直以为只有 shell
monetto
2020-12-22 10:39:07 +08:00
@samin 可以的。网上一搜一大把了。就是没有 GPU 硬件加速,没过度动画,开发用还是足够了。IO 性能损失很小,IDEA 编译速度不输 Win10 。
codehz
2020-12-22 10:43:10 +08:00
vcxsrv 自己问题很多,建议用 x410 试试
datou
2020-12-22 11:02:16 +08:00
@samin x11 forwarding
monetto
2020-12-22 11:21:41 +08:00
@codehz 试过 X410 了,一样的问题,启动了 fcitx,但是输入还是英文字母...
NilChan
2020-12-22 11:39:40 +08:00
如果不介意换 distro 的话可以换到 kali linux 。它自带 wsl gui 支持:kali-win-kex
interim
2020-12-22 11:41:43 +08:00
已经有支持 gpu 加速的内核了,不过还没正式发布,需要自己编译
codehz
2020-12-22 11:45:56 +08:00
@monetto #5 那可能是环境变量没配置对,我这边是可以用的。。。
你看看什么 GTK_IM_MODULE 一类的配置
12101111
2020-12-22 11:51:17 +08:00
无论是现在的 X11 转发还是微软要出的 Wayland+RDP 的方案, 都是不能使用 Windows 端的输入法的

必须在 Linux 端安装输入法和 dbus, 然后用 dbus-launch 启动一个 dbus session, 并且让 GUI 和输入法同时得到 DBUS_SESSION_BUS_ADDRESS 的环境变量,这样输入法才能使用
lry
2020-12-22 11:58:34 +08:00
# 安装本地语言管理 和 中文字体包
sudo apt-get -y install locales xfonts-intl-chinese fonts-wqy-microhei

# 安装语言环境 选择 en_US.utf8 和 zh_CN-UTF-8
# 空格键选择 Tab 键跳出选择,左右方向键选择确定还是取消,回车
sudo dpkg-reconfigure locales

# 查看当前系统支持的所有语言
λ locale -a
C
C.UTF-8
en_US.utf8
POSIX
zh_CN.utf8

# 设置默认语言
sudo update-locale LC_ALL="zh_CN.UTF-8"
Mashirobest
2020-12-22 12:08:17 +08:00
你这是中文显示。。。别人要的是能输入中文
lry
2020-12-22 13:07:43 +08:00
@Mashirobest 我说的就是中文输入法的解决方式啊。要想输出中文总不能连中文都不能显示吧
no1xsyzy
2020-12-22 13:11:50 +08:00
@lry 你还是重新看一遍主题里提问的是啥吧……
lry
2020-12-22 13:17:07 +08:00
@no1xsyzy 好吧 我以为已经装了中文输入法但是无法打出中文,目前信息只说了装了 fcitx,不确定装没装中文输入法,如果没装的话装个 fcitx-googlepinyin 再按照我上面说的设置 LC 就行了
yanqiyu
2020-12-22 13:19:16 +08:00
保证程序和输入法在同一个 dbus session, 这样 im-module 才能和输入法通信
monetto
2020-12-22 14:28:13 +08:00
@12101111 感谢大佬回复。那我具体应该怎么操作呀,在网上搜索相关教程没找到有说这个的...我目前是手动在终端输入 sudo service dbus start,然后再输入 fcitx 。
monetto
2020-12-22 14:29:26 +08:00
@yanqiyu 感谢大佬,那我如何确保他们在同一个 dbus session 啊
yanqiyu
2020-12-22 16:13:27 +08:00
@monetto
我现在的做法是
写一段下面的脚本丢进 ~/.bash_profile, 当然这很简陋并且会随机的出问题,但是勉强能用
if [-z "$(pidof dbus-daemon)" ]; then
/usr/bin/dbus-launch --exit-with-x11 2>/dev/null >~/.dbus.env
fi
export $(cat ~/.dbus.env)
12101111
2020-12-22 16:17:13 +08:00
export DISPLAY=127.0.0.1:1
export GTK_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
eval `dbus-launch --sh-syntax`
fi
fcitx&
no1xsyzy
2020-12-22 18:16:50 +08:00
@lry 其实 locale 跟输入法能不能输入没关系,最初使用 Linux 的时候任何额外组件都半天装不上(网速问题,还不知道应当在开始安装前改源),所以一直都是最低网络需求安装完再改源装中文相关,也不知道改 locale,输入中文倒是可以
而且不要 profile 级改 LC_ALL,要改改 LANG 。LC_ALL 应当被用来临时修改。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/737747

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX