Skip to content

[Bug]: Korean Input Issue: Placeholder Text Not Disappearing on First Hangul Character Input #4165

Description

@StrKare

Describe the bug

When typing Korean (Hangul) characters directly into KakaoTalk's message input field, the placeholder text ("메시지 입력" / "Enter message") does not disappear, and the send button remains inactive. This issue only occurs when Korean is the first character typed.

Expected Behavior

  1. Click on message input field
  2. Type Korean character (e.g., "ㅎ" → "하")
  3. Placeholder text should disappear immediately
  4. Send button should activate
  5. User can send the message

Actual Behavior

  1. Click on message input field
  2. Type Korean character
  3. Placeholder text remains visible and appears pushed to the right behind the typed text
  4. Send button stays inactive
  5. Cannot send message (Enter key does nothing)

What Works (English Input)

  • Typing English characters: ✅ Placeholder disappears, send button activates
  • Typing space first, then Korean: ✅ Works normally
  • Typing English first, then Korean: ✅ Works normally

Comparison Table

Input Type First Character Placeholder Send Button Can Send?
English a ✅ Disappears ✅ Active ✅ Yes
Korean ❌ Stays ❌ Inactive ❌ No
Space → Korean ✅ Disappears ✅ Active ✅ Yes

This appears to be a Wine IME event handling issue where Korean composition (WM_IME_COMPOSITION) doesn't trigger the same text field change detection that English input (WM_CHAR) does.

Additional System Details

  • Display Server: Wayland
  • Desktop: KDE Plasma 6
  • Input Method: fcitx5 5.1.7 with fcitx5-hangul
  • Wine Runner: soda-9.0.1
  • Application: KakaoTalk (Windows desktop app)

To Reproduce

Steps to reproduce the behavior

  1. Install KakaoTalk in Bottles (using Windows installer)
  2. Configure fcitx5 with fcitx5-hangul for Korean input
  3. Apply Flatpak override: flatpak override --user --env=XMODIFIERS=@im=fcitx com.usebottles.bottles
  4. Launch KakaoTalk from Bottles
  5. Open any chat conversation
  6. Click on the message input field (placeholder text: "메시지 입력")
  7. Switch to Korean input (using fcitx5)
  8. Type a Korean character (e.g., ㅎ, ㅏ to form "하")
  9. Observe: Placeholder text does NOT disappear, send button stays grayed out

Workaround that works

  1. Type space or any English character first
  2. Optionally delete it with backspace
  3. Then type Korean → Now it works normally

Reproducibility

100% reproducible on my system with soda-9.0.1 runner.

Package

Flatpak from Flathub

Distribution

KDE neon 24.04 (based on Ubuntu 24.04 LTS Noble)

Debugging Information

Official Package: true
Version: '52.0'
DE/WM: plasma
Display:
    X.org: true
    X.org (port): :1
    Wayland: true
Graphics:
    vendors:
        amd:
            vendor: amd
            envs:
                DRI_PRIME: '1'
            icd: /usr/share/vulkan/icd.d/radeon_icd.x86_64.json:/usr/lib/x86_64-linux-gnu/GL/vulkan/icd.d/radeon_icd.x86_64.json:/usr/lib/i386-linux-gnu/GL/vulkan/icd.d/radeon_icd.i686.json
    prime:
        integrated: null
        discrete: null
Kernel:
    Type: Linux
    Version: 6.14.0-35-generic
Disk:
    Total: 32430559232
    Free: 32430395392
RAM:
    MemTotal: 60.4GiB
    MemAvailable: 54.6GiB
Bottles_envs: null

Troubleshooting Logs

Additional context

Configuration Already Applied

I've already tried the following fixes based on Wine IME documentation:

1. Flatpak Environment Override

flatpak override --user --env=XMODIFIERS=@im=fcitx com.usebottles.bottles

Verified:

$ flatpak override --user --show com.usebottles.bottles
[Environment]
XMODIFIERS=@im=fcitx

2. Wine Registry Settings

Applied via Registry Editor in Bottles:

REGEDIT4

[HKEY_CURRENT_USER\Software\Wine\X11 Driver]
"InputStyle"="root"

3. Fonts Installed

  • Installed cjkfonts dependency in Bottles
  • Manually added Noto Sans CJK and NotoSans Nerd Font
  • Korean text displays correctly

Current Status Summary

Working:

  • Korean input method toggle (fcitx5)
  • Korean character typing
  • Korean font display
  • English input (no placeholder issue)
  • Workaround: Space/English first, then Korean

Not Working:

  • Placeholder text removal on first Korean character
  • Send button activation on first Korean character
  • Direct Korean message input

Root Cause Analysis

This seems to be a Wine IME event handling limitation:

  • English input: Fires WM_CHAR immediately → Text field detects change → Placeholder hides
  • Korean IME: Only fires WM_IME_COMPOSITION during composition → Text field doesn't detect change → Placeholder stays
  • Once a non-Korean character activates the field, Korean input works fine

Related Research

  • Similar Wine IME issues documented at korean-input/issues#14 (character displacement bug)
  • Wine 9.0 included IME improvements, but this specific issue persists
  • No existing GitHub issues found for this exact symptom

Question for Maintainers

Is this:

  1. A Bottles-specific configuration that can be fixed?
  2. A Wine limitation requiring upstream patches?
  3. An application-specific quirk with how KakaoTalk handles IME events?

Any guidance would be greatly appreciated! Thank you for maintaining this excellent project.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions