0 折腾过程
在wsl2/archlinux/KDE中安装fcitx5并配置后,tigervnc始终无法唤醒fcitx5。
目光再次转向kali-kex,在kali的无缝模式(由tigervnc实现)下,同样无法启动fcitx5,但kali的增强模式(由xrdp+mstsc)则可以。
在wsl2/archlinux下用xrdp实现可视化后,输入法依然无法被唤醒,因此不得不去分析win-kex命令的源码,得出的猜想是.win-kex.rdp
配置文件中的配置导致的。在复制了该文件并学习了kex中的命令后,成功唤醒了中文输入法。本文就把操作过程记录下来以供参考。
1 安装wsl2+archlinux+KDE
参考先前的教程中即可。
2 备份
折腾linux系统,务必做好备份:
wsl --shutdown
wsl --export arch E:arch_wsl/arch_bk.vhdx --vhd #(关停wsl后也可以直接复制粘贴备份)
3 用xrdp实现KDE桌面环境可视化
进入archlinux后,依次输入如下命令:
fish
yay -Syyu # 同步软件源数据库
yay -S base-devel # xrdp目前仅有AUR源,需要安装编译工具编译
yay -S xrdp xorg-xrdb plasma-wayland-session # 安装xrdp和xorg支持,编译可能需要10-20分钟,期间可能需要再次输入密码
sudo nano /etc/X11/Xwrapper.config # 让所有用户可以使用X11
# 在nano中输入: allowed_users=anybody ,ctrl+s ctrl+x保存退出
sudo nano /etc/xrdp/startwm.sh # 配置窗口管理器的启动
# 找到 . /etc/X11/xinit/xinitrc 行,注释掉xinitrc命令的启动,在后面输入:
# eval $(dbus-launch --sh-syntax)
# startplasma-x11
# ctrl+s ctrl+x保存退出
# 让xrdp和xrdp-sesman在arch启动时自启
sudo systemctl enable xrdp
sudo systemctl start xrdp
sudo systemctl enable xrdp-sesman
sudo systemctl start xrdp-sesman
nano ~/.win-kex.rdp #创建rdp配置文件,复制以下内容,最后一行把你的用户名替换掉后保存退出。如果在kali上安装了win-kex,可以直接从kali的家目录复制到arch的家目录
screen mode id:i:2
use multimon:i:0
desktopwidth:i:3200
desktopheight:i:1800
session bpp:i:32
winposstr:s:0,1,203,243,2835,1708
compression:i:1
keyboardhook:i:2
audiocapturemode:i:0
videoplaybackmode:i:1
connection type:i:6
networkautodetect:i:0
bandwidthautodetect:i:1
displayconnectionbar:i:1
enableworkspacereconnect:i:0
disable wallpaper:i:0
allow font smoothing:i:1
allow desktop composition:i:1
disable full window drag:i:0
disable menu anims:i:0
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
full address:s:<server>
audiomode:i:0
redirectprinters:i:0
redirectcomports:i:0
redirectsmartcards:i:1
redirectclipboard:i:1
redirectposdevices:i:0
drivestoredirect:s:C:\;
autoreconnection enabled:i:1
authentication level:i:2
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:0
alternate shell:s:
shell working directory:s:
gatewayhostname:s:
gatewayusagemethod:i:4
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0
promptcredentialonce:i:0
gatewaybrokeringtype:i:0
use redirection server name:i:0
rdgiskdcproxy:i:0
kdcproxyname:s:
smart sizing:i:1
username:s:你的用户名
在windows开始菜单复制任意arch的快捷方式,在属性目标中将--
后面的命令替换为mstsc.exe .win-kex.rdp /v:$(ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'):3389
,更改图标,点击快捷方式运行命令,接受远程访问,输入密码,确认能否正常显示KDE桌面。首次载入桌面需要等待30s左右,如果没反应(鼠标没变成breeze风格)尝试在登录时先切换为xvnc登录。
在KDE开始菜单中点击注销与真实的archlinux系统中的行为类似,并关闭远程桌面窗口。如果直接关闭远程窗口桌面,下次登录时会恢复会话。
4 安装fcitx5输入法并配置
在arch的终端中输入以下命令安装中文输入法:
yay -S fcitx5-im fcitx5-chinese-addons fcitx5-pinyin-zhwiki fcitx5-input-support
# fcitx5框架组件、中文输入法、中文维基词库、输入法配置文件
在KDE系统设置(windows开始菜单中的KDE System Settings或者远程桌面下选择系统设置) 中将fcitx5设置为开机启动;在远程桌面的plasma开始菜单中选择注销;再次登录,在开始菜单中输入fcitx配置工具,添加pinyin(fcitx5-input-support安装后上述操作可跳过)。
全局配置中第一个切换输入法可以换成习惯的键位(默认ctrl+space,我的设置为左shift),pinyin配置中打开云拼音功能并选择后端为baidu,安装需要的词库文件。立刻重启fcitx5并打开一个窗口,确认输入法是否生效。
wsl中的KDE通知不显示输入法,需要添加挂件输入法面板(manjaro下正常显示,不需要额外添加)。
5 注意事项
- 远程桌面窗口内按下win键无法唤起windows开始菜单或者plasma开始菜单,但是alt+tab或win+E等热键可以被KDE桌面捕获(manjaro下win键正常)。
- fcitx5的主题功能经测试无法生效(manjaro下正常)。
- wsl下linux系统可以访问windows环境变量中的路径,即可以在linux中调用windows程序,但有时需要先切换到家目录,以避免奇怪的问题。
- kali社区的win-kex包中的kex程序还针对声音进行了修复(默认不支持音频),如有兴趣可进行研究,用bash写的。
- 下载编译xrdp时,如果github下载速度始终为0,尝试中断安装并重启,仍无法下载则下载
github520
解析的github域名IP,复制内容。在fish中输入:
sudo nano /etc/hosts
# 在文档末尾粘贴
# ctrl+s ctrl+w 保存退出
sudo systemctl restart nscd #重启域名缓存服务
# 还不行就换个网络,或者下载UU加速器启动学术加速