问题描述
在安装了Debian13,桌面环境为KDE,输入法为fcitx5的情况下,VsCode无法输入中文。
通常如果启用了fcitx5,我们会在
/etc/environment
中配置如下环境变量INPUT_METHOD=fcitx5 XMODIFIERS=@im=fcitx GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx
配置如上环境变量后,重新开机进入系统时,系统会提示:检测到设置了GTK_IM_MODULE和QT_IM_MODULE而且Wayland输入法前端正在正常工作,推荐不设置GTK_IM_MODULE和QT_IM_MODULE从而使用Wayland输入法前端。
根据系统推荐的提示,将环境变量中的
GTK_IM_MODULE
和QT_IM_MODULE
给注释掉。导致的现象就成了如果添加这两行环境变量的配置,系统每次开机都会推荐不设置这两个环境变量
如果不设置,VsCode又没办法输入中文
解决问题
创建当前用户的KDE环境变量目录
mkdir -p ~/.config/plasma-workspace/env/
创建自定义脚本
nano ~/.config/plasma-workspace/env/vscode_env.sh
shell脚本内容如下:
#!/bin/sh # 启动vscode时,添加如下环境变量 export XMODIFIERS="@im=fcitx" export GTK_IM_MODULE="fcitx" export QT_IM_MODULE="fcitx" export QT_AUTO_SCREEN_SCALE_FACTOR=1
授予自定义脚本可执行权限
chmod +x ~/.config/plasma-workspace/env/vscode_env.sh
创建VsCode自定义启动脚本
sudo nano /usr/local/bin/code-starter
shell脚本内容如下
#!/bin/bash # 加载环境变量 if [ -f "$HOME/.config/plasma-workspace/env/vscode_env.sh" ]; then source "$HOME/.config/plasma-workspace/env/vscode_env.sh" fi # 启动VsCode,并传递所有环境变量 env XMODIFIERS="$XMODIFIERS" GTK_IM_MODULE="$GTK_IM_MODULE" QT_IM_MODULE="$QT_IM_MODULE" /usr/share/code/code "$@"
授予VsCode启动脚本可执行权限
sudo chmod +x /usr/local/bin/code-starter
修改VsCode的桌面快捷方式
# 编辑VsCode桌面快捷方式文件 sudo nano /usr/share/applications/code.desktop
修改文件中所有
Exec
的/usr/share/code/code
为/usr/local/bin/code-starter
[Desktop Entry] Name=Visual Studio Code Comment=Code Editing. Redefined. GenericName=Text Editor Exec=/usr/local/bin/code-starter %F Icon=vscode Type=Application StartupNotify=false StartupWMClass=Code Categories=TextEditor;Development;IDE; MimeType=application/x-code-workspace; Actions=new-empty-window; Keywords=vscode; [Desktop Action new-empty-window] Name=New Empty Window Name[cs]=Nové prázdné okno Name[de]=Neues leeres Fenster Name[es]=Nueva ventana vacía Name[fr]=Nouvelle fenêtre vide Name[it]=Nuova finestra vuota Name[ja]=新しい空のウィンドウ Name[ko]=새 빈 창 Name[ru]=Новое пустое окно Name[zh_CN]=新建空窗口 Name[zh_TW]=開新空視窗 Exec=/usr/local/bin/code-starter --new-window %F Icon=vscode
如果使用命令行启动VsCode,需要使用自建的
code-starter
代替默认的code
命令