Eatta
Eatta
Published on 2025-08-28 / 18 Visits
0
0

解决Debian13、KDE Plasma6.x、fcitx5环境下VsCode无法输入中文的问题

问题描述

在安装了Debian13,桌面环境为KDE,输入法为fcitx5的情况下,VsCode无法输入中文。

  1. 通常如果启用了fcitx5,我们会在/etc/environment中配置如下环境变量

    INPUT_METHOD=fcitx5
    XMODIFIERS=@im=fcitx
    GTK_IM_MODULE=fcitx
    QT_IM_MODULE=fcitx
  2. 配置如上环境变量后,重新开机进入系统时,系统会提示:检测到设置了GTK_IM_MODULE和QT_IM_MODULE而且Wayland输入法前端正在正常工作,推荐不设置GTK_IM_MODULE和QT_IM_MODULE从而使用Wayland输入法前端。

  3. 根据系统推荐的提示,将环境变量中的GTK_IM_MODULEQT_IM_MODULE给注释掉。导致的现象就成了

    1. 如果添加这两行环境变量的配置,系统每次开机都会推荐不设置这两个环境变量

    2. 如果不设置,VsCode又没办法输入中文

解决问题

  1. 创建当前用户的KDE环境变量目录

    mkdir -p ~/.config/plasma-workspace/env/
  2. 创建自定义脚本

    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
  3. 授予自定义脚本可执行权限

    chmod +x ~/.config/plasma-workspace/env/vscode_env.sh
  4. 创建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 "$@"
  5. 授予VsCode启动脚本可执行权限

    sudo chmod +x /usr/local/bin/code-starter
  6. 修改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
  7. 如果使用命令行启动VsCode,需要使用自建的code-starter代替默认的code命令


Comment