US-International keyboard for Linux, the Windows way
A single .XCompose file that makes the US-International layout on Linux behave like it does on Windows.
Apostrophes make accents on vowels, and stay a plain apostrophe before consonants. So I'm stays I'm, not Iḿ.
The problem
The stock US-International layouts on Linux both get in the way of everyday English typing:
- US intl. with dead keys: typing
I'mrequires hitting space after the apostrophe. - US alt. intl.: typing
I'mgives Iḿ, an accent lands on the m.
Windows US-International handles this correctly: the apostrophe only accents vowels (á, é, í, ó, ú), never consonants. This fix brings that same behavior to Linux.
' + e gives éI ' m gives I'm (not Iḿ)
Install
# clone and run the installer
git clone https://github.com/T-21/us-intl-windows-like.git
cd us-intl-windows-like
chmod +x install.sh
./install.sh
Then set your keyboard layout to US alt. intl. or US international with dead keys, log out and back in, and test with 'e (gives é) and I'm (stays I'm). Full manual and per-desktop steps for KDE, GNOME and XFCE are in the README.
Wayland and Chromium browsers
The fix uses X11's .XCompose system. On Wayland it works in most GTK and Qt apps, but not in
Chromium-based browsers (Chrome, Edge, Brave) running as native Wayland clients. Force them under XWayland by
adding --ozone-platform=x11 to the launch command. The repo has ready-made steps for both native and Flatpak installs.
How it works
The .XCompose file overrides the default dead-key behavior for consonants while keeping the accent
behavior for vowels, using the X11 Compose system that every Linux desktop supports. No background process, no
dependencies, and it removes cleanly with ./uninstall.sh.
Common questions
Why does my Linux keyboard put an accent on consonants?
The US alt. intl. layout treats the apostrophe as a dead key for every following letter, so an apostrophe before m produces an accented m. This fix limits dead-key behavior to vowels only.
How do I get Windows US-International behavior on Linux?
Install this .XCompose file, select the US alt. intl. layout, and log out and back in. Apostrophes then accent a, e, i, o and u, and stay plain before any consonant, exactly like Windows.
Why does typing I'm give Iḿ on Linux?
The apostrophe combines with the next character as a dead key. Before the m it forms an accented m. With this fix the apostrophe only combines with vowels, so contractions like I'm, don't and it's stay intact.
Does it work on Wayland?
Yes in most GTK and Qt apps. Chromium browsers as native Wayland clients do not read .XCompose; use the --ozone-platform=x11 flag described above.