Debian 13 + KDE Plasma (Wayland)에서 한글 입력 설정하기 — fcitx5, 그리고 내가 삽질한 이유

 

환경: Debian 13 (trixie) · KDE Plasma 6.3 · Wayland 세션 · fcitx5 5.1 + fcitx5-hangul

검색하면 Ubuntu(GNOME) 글이나 X11 시절 글이 대부분이고, Debian 13 + Plasma Wayland 조합을 다룬 글은 거의 없었다. 인터넷 글을 따라 이것저것 설치하고 환경변수를 넣어도 한글이 안 됐는데, 원인은 KDE Wayland는 입력기를 띄우는 방식 자체가 다르다는 점이었다.


TL;DR — 3줄 요약

  1. 입력기는 fcitx5 하나만 쓴다. (ibus, uim, nabi, fcitx4는 지우거나 최소한 비활성화)
  2. 시스템 설정 → 키보드 → 가상 키보드(Virtual Keyboard) 에서 Fcitx 5 를 선택한다. 이게 핵심이다.
  3. GTK_IM_MODULE / QT_IM_MODULE 환경변수는 넣지 않는다. (XMODIFIERS=@im=fcitx만 있으면 됨)

1. 왜 KDE Wayland는 다른가

X11 시절에는 입력기가 "그냥 백그라운드에서 도는 프로그램"이었다. 자동 시작으로 fcitx5를 띄우고 환경변수(GTK_IM_MODULE=fcitx 등)로 각 앱에 "저 입력기 써"라고 알려주면 끝이었다.

Wayland에서는 키 입력을 컴포지터(KDE에서는 KWin) 가 쥐고 있다. 그래서 입력기는 컴포지터가 제공하는 Wayland 입력기 프로토콜(zwp_input_method_v1)에 붙어야 한다. KWin은 이 권한을 자기가 직접 실행한 입력기 프로세스에게만 준다.

flowchart LR
    K[키보드] --> KW[KWin 컴포지터]
    KW -- "input_method_v1 (KWin이 직접 띄운 프로세스만)" --> F[fcitx5]
    F -- "조합된 한글" --> KW
    KW -- "text_input_v3" --> A[네이티브 Wayland 앱]
    F -. "XIM (XMODIFIERS)" .-> X[XWayland 앱]

그래서 다음과 같은 일이 생긴다.

  • 터미널에서 fcitx5 -d로 직접 띄우거나 자동 시작에 등록하면, 프로세스는 돌지만 네이티브 Wayland 앱에서는 한글이 안 되거나 일부 앱에서만 된다.
  • KWin이 fcitx5를 띄우게 하려면 "가상 키보드" 설정에서 Fcitx 5를 골라야 한다. 이름 때문에 터치스크린용 메뉴처럼 보이지만, KDE Wayland에서는 이게 곧 "입력기 선택" 메뉴다.

2. 설정 방법 (깨끗한 상태 기준)

2-1. 패키지 설치

sudo apt install fcitx5 fcitx5-hangul \
  fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 \
  fcitx5-frontend-qt5 fcitx5-frontend-qt6 \
  kde-config-fcitx5 fonts-noto-cjk

[!TIP]
fcitx5-chinese-addons, fcitx5-pinyin, fcitx5-m17n 같은 건 한글 입력에 필요 없다. 블로그 글을 따라 fcitx5-*를 통째로 깔 필요는 없다.

2-2. 다른 입력기 정리 (권장)

여러 입력기가 같이 깔려 있으면 서로 자동 시작 순서나 im-config의 자동 선택이 꼬인다.

sudo apt purge ibus uim nabi fcitx-bin fcitx-modules kde-config-fcitx
sudo apt autoremove

[!NOTE]
fcitx-*(숫자 없음)는 fcitx4 이고 fcitx5-*가 fcitx5 다. 이름이 비슷해서 헷갈리기 쉽다. kde-config-fcitx(fcitx4용)와 kde-config-fcitx5도 다른 패키지다.

2-3. im-config를 fcitx5로 고정

im-config -n fcitx5

~/.xinputrc에 run_im fcitx5가 기록된다. 이걸 안 하면 im-config가 auto 모드로 동작해서, 깔려 있는 것 중 우선순위가 높은 ibus를 고를 수 있다.

2-4. KWin에게 fcitx5를 띄우게 하기 ★핵심★

시스템 설정 → 키보드 → 가상 키보드 → Fcitx 5 선택 → 적용

GUI 대신 설정 파일로 확인하려면 ~/.config/kwinrc를 본다.

[Wayland]
InputMethod=/usr/share/applications/org.fcitx.Fcitx5.desktop
VirtualKeyboardEnabled=true

[!IMPORTANT]
두 줄 다 있어야 한다. InputMethod만 맞고 VirtualKeyboardEnabled=false면 KWin은 아무 에러 없이 fcitx5를 실행하지 않는다. 내가 막혔던 지점이 바로 여기다. (아래 4장 참고)

로그아웃 없이 바로 적용하려면:

kwriteconfig6 --file kwinrc --group Wayland --key VirtualKeyboardEnabled true
qdbus6 org.kde.KWin /VirtualKeyboard org.freedesktop.DBus.Properties.Set \
  org.kde.kwin.VirtualKeyboard enabled true

2-5. fcitx5에 한글 입력기 추가

시스템 설정 → 키보드 → 입력기(Input Method) (kcm_fcitx5)에서:

  • Keyboard - English (US) + Hangul 두 개를 둔다.
  • 전환 키는 기본값 Ctrl+Space. 한/영 키를 쓰고 싶으면 "전역 옵션 → 입력기 전환(Trigger Input Method)"에 Hangul 키를 추가한다.

결과는 ~/.config/fcitx5/profile에 저장된다.

[Groups/0]
Name=Default
Default Layout=us
DefaultIM=hangul

[Groups/0/Items/0]
Name=keyboard-us

[Groups/0/Items/1]
Name=hangul

2-6. 환경변수: 최소한만

변수 KDE Wayland에서 이유
XMODIFIERS=@im=fcitx 설정 XWayland(X11) 앱이 XIM으로 fcitx5를 찾을 때 필요
GTK_IM_MODULE 설정하지 않음 GTK3/4 앱은 Wayland text-input 프로토콜로 바로 붙는다. 강제로 넣으면 후보창 위치 이상, 입력 중복 같은 문제가 생길 수 있다
QT_IM_MODULE 설정하지 않음 Qt 앱도 마찬가지

[!NOTE]
이 권장은 fcitx5 공식 위키의 "Using Fcitx 5 on Wayland" → KDE Plasma 항목 기준이다. 단, GTK2 앱이나 일부 오래된 XWayland 앱에서 안 되면 그 앱에만 GTK_IM_MODULE=fcitx를 붙여 실행하는 식으로 예외 처리하는 게 낫다.

2-7. 확인

# 1) KWin이 입력기를 켰는가?
qdbus6 org.kde.KWin /VirtualKeyboard org.kde.kwin.VirtualKeyboard.enabled   # → true

# 2) fcitx5의 부모 프로세스가 kwin_wayland인가?
ps -o pid,ppid,args -C fcitx5
ps -o pid,args -p <위에서 나온 PPID>                                          # → kwin_wayland

부모가 kwin_wayland가 아니면 (예: systemd, bash, dbus-daemon) KWin이 띄운 게 아니므로 네이티브 Wayland 앱에서 제대로 동작하지 않는다.


3. 다른 환경과 무엇이 다른가

항목 Debian 13 + KDE Plasma (Wayland) Ubuntu / Debian 13 + GNOME (Wayland) Debian 13 + Xfce·MATE·Cinnamon (X11) / KDE X11 세션
기본으로 쓰기 좋은 입력기 fcitx5 (KDE가 가장 잘 지원) ibus (GNOME Shell에 내장 통합) fcitx5 또는 ibus, 아무거나
입력기를 띄우는 주체 KWin (가상 키보드 설정) GNOME Shell이 ibus를 직접 관리 세션 자동 시작 (/etc/xdg/autostart/im-launch.desktop → im-config)
설정 위치 시스템 설정 → 키보드 → 가상 키보드 + 입력기 설정 → 키보드 → 입력 소스에 "한국어(Hangul)" 추가 im-config + 입력기 자체 설정 도구
GTK_IM_MODULE / QT_IM_MODULE 넣지 않음 보통 im-config가 알아서 처리. 손댈 일 거의 없음 넣어야 함 (fcitx 또는 ibus)
XMODIFIERS @im=fcitx (XWayland용) @im=ibus 필수
터미널에서 fcitx5 -d로 실행 ❌ 네이티브 Wayland 앱에서 불완전 ❌ (GNOME에서 fcitx5를 쓰려면 Kimpanel 확장 등 추가 작업 필요) ✅ 정상 동작
흔한 함정 가상 키보드 설정 누락 / VirtualKeyboardEnabled=false fcitx5를 억지로 쓰려다 ibus와 충돌 환경변수 누락

정리하면:

  • Ubuntu GNOME 글을 따라 하면 ibus 기준이라 KDE와 맞지 않는다. GNOME은 셸이 ibus를 품고 있어서 "입력 소스 추가"만 하면 되지만, KDE에는 그런 통합이 없다.
  • X11 시절 글(또는 Xfce 같은 X11 데스크톱 글)을 따라 하면 환경변수 3종 세트 + 자동 시작을 하게 되는데, KDE Wayland에서는 이게 오히려 방해가 되거나 효과가 없다.
  • 같은 Debian 13이어도 로그인 화면에서 "Plasma (X11)" 세션을 고르면 X11 방식이 맞다. 지금 어느 세션인지는 echo $XDG_SESSION_TYPE으로 확인한다.

4. 내가 틀렸던 부분 (실제 진단 결과)

내 PC를 진단해 보니 이런 상태였다.

❌ 1. 입력기 5종이 동시에 설치되어 있었다

fcitx (4.x) + kde-config-fcitx     ← fcitx4
fcitx5 + fcitx5-hangul + 중국어 애드온들 ← fcitx5
ibus + ibus-hangul                 ← ibus
uim + uim-mozc + uim-xim ...       ← uim
nabi                               ← nabi

"이거 깔아봐", "저거 깔아봐" 하는 글을 따라가다 보면 이렇게 된다. 로그인 직후에는 이 중 어떤 입력기도 돌고 있지 않았다.
→ 교훈: 하나만 고르자. KDE면 fcitx5.

❌ 2. im-config가 사용자 설정 없이 auto → ibus로 잡혀 있었다

$ im-config -m
fcitx5     ← 시스템 기본
missing    ← 사용자 설정(~/.xinputrc) 없음
ibus       ← auto 모드가 실제로 고른 것

fcitx5를 쓰려고 했는데 im-config는 ibus를 고르고 있었다.
→ im-config -n fcitx5로 사용자 설정을 명시해서 해결했다.

❌ 3. /etc/environment에 같은 줄이 3번 들어 있었다

XMODIFIERS=@im=fcitx
XMODIFIERS=@im=fcitx
XMODIFIERS=@im=fcitx

동작에 큰 해는 없지만, 여러 글을 따라 같은 설정을 반복해서 넣었다는 흔적이다. 한 줄만 남기면 된다.

❌ 4. (진짜 원인) InputMethod는 맞는데 VirtualKeyboardEnabled=false

[Wayland]
InputMethod=/usr/share/applications/org.fcitx.Fcitx5.desktop
VirtualKeyboardEnabled=false     ← 이것 때문에 KWin이 fcitx5를 아예 안 띄움

설정 파일만 보면 Fcitx 5가 지정되어 있어서 맞게 된 것처럼 보인다. 그런데 KWin에 직접 물어보면:

$ qdbus6 org.kde.KWin /VirtualKeyboard org.kde.kwin.VirtualKeyboard.available
true      ← 입력기는 등록돼 있음
$ qdbus6 org.kde.KWin /VirtualKeyboard org.kde.kwin.VirtualKeyboard.enabled
false     ← 하지만 꺼져 있음 → 실행 안 함

이 상태에서는 로그아웃/재로그인을 해도, KWin 설정을 다시 불러와도 fcitx5가 뜨지 않았다. 에러 로그도 전혀 남지 않아서 찾기 어려웠다. (처음 진단할 때는 나도 InputMethod 줄만 보고 "설정은 맞다"고 넘어가서 재로그인 한 번을 헛되게 했다.)

VirtualKeyboardEnabled=true로 바꾸고 D-Bus로 enabled=true를 주자마자 KWin이 fcitx5를 자식 프로세스로 띄웠고, 한글 입력이 바로 됐다.

[!WARNING]
가상 키보드 설정에서 "없음(None)"을 한 번 골랐다가 다시 Fcitx 5를 고르는 식으로 만지다 보면 이 값이 false로 남을 수 있다. 설정 화면이 맞아 보여도 위의 qdbus6 ... enabled 명령으로 실제 상태를 꼭 확인하자.

⚠️ 5. (흔한 함정) fcitx5를 손으로 / 자동 시작으로 띄우기

KWin이 안 띄워주니 fcitx5 -d로 직접 띄우거나 자동 시작에 넣고 싶어진다. 트레이 아이콘도 뜨고 프로세스도 돌지만, KWin이 띄운 게 아니라서 네이티브 Wayland 앱에서는 불완전하다. 2-7장처럼 부모 프로세스를 꼭 확인하자.


5. 트러블슈팅

증상 확인 / 해결
트레이에 fcitx 아이콘이 아예 없음 qdbus6 org.kde.KWin /VirtualKeyboard org.kde.kwin.VirtualKeyboard.enabled → false면 2-4 적용
아이콘은 있는데 일부 앱에서만 안 됨 ps -o ppid -C fcitx5로 부모가 kwin_wayland인지 확인
Chrome / VS Code / Electron 앱에서만 안 됨 실행 옵션에 --enable-wayland-ime 추가 (Wayland 모드로 실행 중일 때. 예: --ozone-platform=wayland --enable-wayland-ime)
재부팅 후 다시 안 됨 ~/.config/kwinrc의 [Wayland] 두 줄, ~/.xinputrc의 run_im fcitx5 확인
ibus 후보창이 같이 뜸 pgrep -a ibus → 돌고 있으면 ibus 제거 또는 im-config -n fcitx5
한/영 키가 안 먹음 fcitx5 설정 → 전역 옵션 → 입력기 전환 키에 Hangul 추가

6. 최종 설정 파일 요약

파일 내용
~/.config/kwinrc [Wayland] InputMethod=/usr/share/applications/org.fcitx.Fcitx5.desktop, VirtualKeyboardEnabled=true
~/.xinputrc run_im fcitx5
~/.config/fcitx5/profile keyboard-us + hangul
/etc/environment XMODIFIERS=@im=fcitx (한 줄)

이 상태로 재부팅해도 KWin이 로그인 시 fcitx5를 자동으로 띄운다.


참고

댓글 쓰기 · 수정

0 댓글