Offer Korean as an install-time keyboard choice - #9299
Open
ronaldlangeveld wants to merge 2 commits into
Open
Conversation
Chromium on native Wayland ignores the compositor's text-input protocol unless told to use it, leaving fcitx5 dead in every browser text field. That silently breaks the ~/.XCompose emoji and expansion sequences every session ships with, and any input method engine a user adds. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RGyJjcWvARsM1szQ9Uq9bp
Korean keyboards type Latin on the US map; Hangul comes from an input method, so Korean never fit the console-keymap picker. Wire it through the one gap: kbd ships no Korean console keymap, so apply_keyboard persists KEYMAP=us with XKBLAYOUT=kr as the marker, Hyprland picks the kr layout up from /etc/vconsole.conf as usual, and a first-run leaf seeds the fcitx5 profile with the hangul engine for the new user. The 한/영 key on Korean keyboards emits the Hangul keysym on every XKB layout, so it becomes the Korean/English toggle without touching Caps Lock, which stays the compose key. Control+space is the fallback for keyboards without a dedicated key. fcitx5 already runs in every session for XCompose; fcitx5-hangul is the only added package. The seeding is deliberate about fcitx5 owning those files: it writes a default profile as it starts, and Hyprland's autostart runs first-run well after graphical-session.target has started it, so the leaf tests for the hangul engine rather than the files' existence and stops fcitx5 across the write -- its save-on-exit would otherwise put the default group straight back over the seed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RGyJjcWvARsM1szQ9Uq9bp
ronaldlangeveld
force-pushed
the
feature/korean-keyboard
branch
from
August 31, 2026 04:54
abcac32 to
7ab7626
Compare
ronaldlangeveld
marked this pull request as ready for review
August 31, 2026 04:56
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Korean is missing from the install-time keyboard picker because it never fit the picker's model: the list maps labels to console keymaps, kbd ships no Korean console keymap, and Korean input isn't a keymap anyway — Korean keyboards type Latin on the US map, and Hangul comes from an input method. Since Omarchy already runs fcitx5 in every session (for the XCompose sequences), Korean turns out to be one package and a little wiring away.
What this does
Selecting Korean at install gives a machine that types English until the 한/영 key toggles Hangul, exactly the way Korean users expect. Caps Lock stays the compose key, like every other layout.
setup-form.shgainsKorean|kr. There's no Korean console keymap, soapply_keyboardspecial-cases it: the console getsus, andXKBLAYOUT=kris persisted in/etc/vconsole.conf. Hyprland's packaged input config already reads its layout from there, sokrflows through untouched (it's a Latin-typing layout, so nous,-prefix treatment).fcitx5-hanguljoins the base packages next to the fcitx5 packages already shipped.install/user/first-run/korean-ime.sh, seeds~/.config/fcitx5/{profile,config}for the new user when the machine'sXKBLAYOUTiskr: hangul engine in the input methods,Hangul+Control+spaceas trigger keys, English active by default.<HNGL>to the Hangul keysym globally (symbols/pc), so it works on any layout on standard Korean keyboards.Control+spacecovers keyboards without a dedicated key.The seeding is deliberate about the fact that fcitx5 owns those two files. fcitx5 writes a default profile the moment it starts, and Hyprland's autostart runs first-run well after
graphical-session.targethas started it — so the files always exist by then and their presence proves nothing. The leaf tests for the hangul engine instead, and stops fcitx5 across the write, because its save-on-exit would otherwise put the default group straight back over the seed. An account that already lists hangul is left alone, so a user's own fcitx5 setup survives a forced first-run rerun.The first commit is a standalone fix this feature surfaced: Chromium browsers on native Wayland ignore the compositor's text-input protocol unless launched with
--enable-wayland-ime, which leaves fcitx5 dead in every browser text field — that already breaks the shipped XCompose emoji/expansion sequences today, not just Korean. The flags are added toconfig/chromium-flags.conf.Testing
Verified end to end on a locally built ISO (
omarchy-iso-make --local-source) in a QEMU VM: selected Korean in the installer, and the installed machine came up withKEYMAP=us/XKBLAYOUT=kr, a seeded fcitx5 profile, and Ctrl+Space switching straight into Hangul with no manual setup.Unit coverage:
setup-form-test.sh: Korean resolves to thekrmarker.hyprland-keyboard-layout-test.sh:XKBLAYOUT=krpasses through Latin-led.Companion change
The ISO configurator sources the same
setup-form.sh, so it picks up the new entry, butconfigure_keyboardin omarchy-iso rejects any keymaplocalectldoesn't know — which silently drops Korean back to the default layout and leaves no marker for the first-run leaf. That repo also has a test asserting every configurator keymap is a known keymap, which this PR would otherwise break.The matching change is ready and is what the ISO above was built with: resolve such layouts to a Latin console keymap for
KEYMAP, then pointXKBLAYOUTback at the chosen layout. Happy to open it as soon as this direction looks right.🤖 Generated with Claude Code
https://claude.ai/code/session_01RGyJjcWvARsM1szQ9Uq9bp