Waydroid는 최신 버전에서 태블릿 모드 설정이 까다롭고, XAPK 수동 설치와 ARM 번역 레이어(libhoudini/libndk) 설정까지 진입 장벽이 상당하다. 반면 Bottles는 설치가 간단하지만 오랫동안 한글 첫 글자 씹힘 문제가 해결되지 않아 불편했다.
이 글은 그 버그의 근본 원인을 분석하고, 2026년 현재 완전히 해결하는 방법을 정리한다.
시스템 환경
| 항목 | 세부 내용 |
|---|---|
| OS | Kubuntu 26.04 (Wayland 세션, KDE Plasma) |
| CPU | AMD Ryzen AI MAX+ 395 (Zen 5) |
| GPU | AMD Radeon 8060S (Mesa/AMDGPU 내장) |
| IME | Fcitx5 + fcitx5-hangul |
| Locale | ko_KR.UTF-8 |
설치 및 설정 단계
Flatpak을 통해 설치한다.
# Flatpak 설치
sudo apt install flatpak
# Flathub 등록
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# Bottles 설치
flatpak install flathub com.usebottles.bottles
Flatpak 샌드박스 안에서 Fcitx5가 동작하려면 두 곳에 환경변수를 설정해야 한다.
/etc/environment (로그인 세션 전역 적용, 재로그인 필요)
XMODIFIERS=@im=fcitx
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
Bottles Flatpak 샌드박스 레벨
flatpak override --user \
--env=XMODIFIERS=@im=fcitx \
--env=GTK_IM_MODULE=fcitx \
--env=QT_IM_MODULE=fcitx \
com.usebottles.bottles
XMODIFIERS=@im=fcitx
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
Bottles를 열고 새 bottle을 생성한다.
- 이름: KakaoTalk (임의)
- 환경: Application
- Architecture: win64
런너 선택이 핵심
Bottles 기본 제공 런너만으로는 문제가 생긴다.
| 런너 | Wine 버전 | Themida DRM | 한글 IME |
|---|---|---|---|
| Soda 9.0 | 9.0 | ❌ 오류 | ❌ 버그 |
| Caffe 9.7 | 9.7 | ✅ 정상 | ❌ 버그 |
| kron4ek 11.8-staging | 11.8 | ✅ 정상 | ✅ 정상 |
kron4ek의 Wine 11.8-staging 빌드를 커스텀 런너로 등록한다.
RUNNERS_DIR="$HOME/.var/app/com.usebottles.bottles/data/bottles/runners"
wget https://github.com/Kron4ek/Wine-Builds/releases/download/11.8/wine-11.8-staging-amd64.tar.xz
tar -xf wine-11.8-staging-amd64.tar.xz -C "$RUNNERS_DIR"
wine-11.8-staging-amd64가 나타난다. Bottle 설정에서 이 런너를 선택한다.Bottle 생성 후 Dependencies 탭에서 아래 패키지를 설치한다.
| 패키지 | 용도 |
|---|---|
cjkfonts | 한글 렌더링 (필수) |
vcredist2022 | Visual C++ 런타임 |
riched20 | Rich Edit 컨트롤 |
msftedit | Rich Edit 4.1 |
riched20과 msftedit는 Dependencies 탭에서 설치하면 native, builtin DLL Override가 레지스트리에 자동 등록된다. DLL Overrides 탭에서 수동 설정할 필요가 없다.Registry Editor에서 키를 직접 생성한다.
경로: HKEY_CURRENT_USER\Software\Wine\X11 Driver
(키가 없으면 Wine 항목 우클릭 → New Key로 생성)
| 값 이름 | 종류 | 데이터 |
|---|---|---|
InputStyle | String | root |
공식 사이트에서 Windows용 설치 파일(KakaoTalk_Setup.exe)을 받은 뒤, Bottle에서 Run Executable로 실행해 설치한다.
한글 첫 글자 씹힘 버그 — 원인 분석
증상
카카오톡 채팅창에서 한글을 처음 입력하면:
- "메시지 입력" 플레이스홀더가 사라지지 않음
- 전송 버튼이 비활성 상태 유지
- 영문자나 공백을 먼저 입력한 뒤 지우면 이후 한글은 정상 동작
원인
Windows 텍스트 필드는 입력 감지를 WM_CHAR 이벤트에 의존한다. 영문 입력은 키 입력 즉시 WM_CHAR가 발생하지만, 한글 IME는 조합 중에 WM_IME_COMPOSITION 이벤트만 발생하고 WM_CHAR는 음절이 확정될 때만 발생한다.
Wine 9.x에서는 이 IME 이벤트 처리가 불완전해 카카오톡이 첫 글자를 감지하지 못했다.
Wine 9.x에서 패치가 불가능했던 이유
2022년에 이 문제를 수정하는 패치(korean-input/issues#14)가 커뮤니티에서 제출됐다. 해당 패치는 dlls/winex11.drv/ime.c, xim.c, dlls/riched20/editor.c를 수정하는 내용이었다.
그러나 Wine 9.x에서 XIM 아키텍처가 완전히 재설계됐다. 기존 패치의 타깃 심볼(bInComposition, XIMLookupChars)이 사라지고, IME 처리 전체가 NtUserMessageCall(WINE_IME_POST_UPDATE) 방식으로 변경됐다. 이 때문에 기존 패치는 적용 자체가 불가능했고 버그가 남아있었다.
해결
2025년 Wine GitLab MR7827에서 한국어/일본어 IME 인라인 모드 처리가 수정됐고, 이 수정이 Wine 11.x 업스트림에 머지됐다.
kron4ek의 Wine 11.8-staging 빌드를 Bottles 커스텀 런너로 사용하면 별도 패치나 DLL 교체 없이 한글 입력이 정상 동작한다.
데스크탑 엔트리 추가 (선택)
앱 런처에서 바로 실행할 수 있도록 등록한다.
# 아이콘 추출
sudo apt install icoutils
ICO="$HOME/.var/app/com.usebottles.bottles/data/bottles/bottles/KakaoTalk/drive_c/Program Files/Kakao/KakaoTalk/resource/icon/icon_kakaotalk_idle.ico"
mkdir -p ~/.local/share/icons/hicolor/256x256/apps
icotool -x -o /tmp/ "$ICO"
cp /tmp/icon_kakaotalk_idle_6_256x256x32.png \
~/.local/share/icons/hicolor/256x256/apps/kakaotalk.png
~/.local/share/applications/kakaotalk.desktop 생성:
[Desktop Entry]
Name=KakaoTalk
Name[ko]=카카오톡
Comment=KakaoTalk Messenger
Comment[ko]=카카오톡 메신저
Exec=flatpak run --command=bottles-cli com.usebottles.bottles run -b KakaoTalk -e "C:\\Program Files\\Kakao\\KakaoTalk\\KakaoTalk.exe"
Icon=kakaotalk
Terminal=false
Type=Application
Categories=Network;InstantMessaging;
StartupWMClass=kakaotalk.exe
StartupNotify=true
update-desktop-database ~/.local/share/applications/
정리
| 항목 | 해결책 |
|---|---|
| Themida DRM 오류 | kron4ek 런너 사용 |
| 한글 폰트 깨짐 | cjkfonts 의존성 설치 |
| 한영전환 안됨 | Bottle 환경변수에 XMODIFIERS 추가 |
| 한글 첫 글자 씹힘 | kron4ek Wine 11.8-staging 런너 사용 |
| 이모지 깨짐 | ⚠️ 미해결 (아래 참고) |
Bottles 공식 런너(Caffe, Soda)가 Wine 9.x 기반으로 머물러 있는 동안에는 kron4ek 커스텀 런너가 가장 깔끔한 해결책이다. KakaoTalk 버전이 업데이트돼도 Wine 런너를 교체한 것이므로 한글 입력 문제는 재발하지 않는다.
알려진 한계: 이모지 렌더링
⚠️ 현재 미해결
채팅창 입력 시 이모지(🤗📸👇 등)가 □□로 깨져 보인다. 이는 Wine의 구조적 한계다.
Windows에서 이모지 컬러 렌더링은 DirectWrite가 담당하지만, 카카오톡은 GDI 기반 텍스트 렌더링을 사용한다. Wine의 GDI 레이어는 CBDT(NotoColorEmoji), COLR(Twemoji Mozilla) 등 어떤 컬러 이모지 포맷도 렌더링하지 못한다. SystemLink 폴백 체인 수정, fonts-symbola 아웃라인 폰트, GDI+, allfonts 등 다양한 방법을 시도했으나 모두 효과가 없었다.
이 문제는 Wine 프로젝트에서 GDI의 DirectWrite 통합이 이뤄지기 전까지는 해결이 어렵다.
'개발일지와 메모사이 > Kubuntu' 카테고리의 다른 글
| AMD CPU/GPU/NPU 사용자 관점의 Kubuntu 26.04 LTS 출시 전 전망 (0) | 2026.01.23 |
|---|---|
| Kubuntu 24.04 LTS 처음사용자를 위한 한글입력 설정 가이드 (0) | 2026.01.18 |
| KZones 설정 및 활용 가이드(KDE Plasma Desktop용) (0) | 2025.09.24 |
| Kubuntu 25.04 Wayland에서 SDDM 로그인 화면 모니터 회전 문제 해결하기 (2) | 2025.07.25 |
| Kubuntu 22.04에서 한영키 전환이 적용되지 않을 때 (0) | 2023.09.13 |