Repository navigation
UNIM 0.4.0
[0.4.0] 2026-08-10
알려진 문제
- 이 릴리스에는 rpm 패키지가 없습니다. 빌드가 깨져 있어 deb 11종과 Windows MSI 만 올라갔고, 페도라·RHEL 계열에서는 한 줄 설치를 쓸 수 없습니다. 0.4.1 에서 고쳤습니다.
리눅스에서만 돌던 입력기가 Windows에서도 같은 코어로 동작하고, 설치가 한 줄로 끝나며, 설정 창이 두 플랫폼에서 같아진 릴리스입니다.
2026-07-19 에 붙었던 v0.4.0 태그는 회수했습니다 —
guids.wxi버전 불일치로 MSI 릴리스 게이트가 깨져 있었습니다(65c66f8에서 수정). 이 항목이 유효한 v0.4.0 입니다.
추가됨
-
한 줄 설치: 리눅스는
curl … | bash, Windows는irm … | iex한 줄로 설치합니다. 배포판을 감지해 deb 또는 rpm 을 내려받고 SHA256 으로 검증한 뒤 설치하며, 검증에 실패하면 아무것도 설치하지 않고 멈춥니다.UNIM_VERSION으로 버전을 고정할 수 있습니다. -
첫 실행 마법사: 설치 후 처음 로그인하면 자동으로 떠서 기본 입력기 지정까지 안내합니다. 한 번 끝내면 다시 뜨지 않습니다.
-
설정 앱 재작성 (
unim-settings): GTK4 에서 Slint 로 옮겨, 리눅스와 Windows 가 같은 설정 화면을 씁니다. -
단어 단위 입력: 조합 확정을 음절 대신 단어 단위로 둘 수 있습니다. 터미널·XIM·모아치기 자판에서는 오작동을 막기 위해 자동으로 음절 단위로 되돌립니다.
-
AutoTypeFix 토글 단축키: 전체 / 순방향 / 역방향을 각각 켜고 끕니다. 전체 토글 기본값은
Shift+F8이고, 방향별 토글은 필요한 사람만 지정하도록 비워 뒀습니다.Shift+F8·Ctrl+Left같은 수정자 조합을 쓸 수 있고, 지정하지 않은 조합은 앱으로 그대로 전달됩니다. -
비밀번호 필드 자동 보호: 비밀번호 칸에 들어가면 영문 모드로 전환하고, 그동안 눌린 키는 버퍼·실행취소·학습 사전 어디에도 남기지 않습니다. 칸을 벗어나면 원래대로 돌아옵니다. 앱이 "이 칸은 비밀번호"라고 알려 줄 때 동작하므로, 알려 주지 않는 앱에서는 감지되지 않습니다(사용자 매뉴얼 4.4 참고).
-
자동 영문 전환에 수정자 조합:
key:Ctrl+B같은 조합을 트리거로 쓸 수 있습니다. tmux prefix 처럼 조합키를 쓰는 환경을 위해, 전환하면서 그 키는 앱에 그대로 전달합니다. -
전환 소리 알림: 한/영 모드가 바뀔 때 짧은 비프로 알려 줍니다(한글 880Hz, 영문 440Hz). 외부 라이브러리 없이 동작하고 입력을 지연시키지 않습니다. 설정에서 끌 수 있습니다.
-
키 자동 반복 무시: 키를 오래 눌러 생기는 자동 반복을 무시합니다. 한/영 토글 키와 한글 모드 문자 키만 대상이고 백스페이스·방향키는 그대로 둡니다. 손을 빨리 떼기 어려운 사용자를 위한 기능으로, 기본값은 꺼짐입니다.
-
자판 스튜디오 · 타자 연습: 자판을 보고 편집하는 도구와, 자판별로 속도·정확도를 재는 타자 연습 도구가 추가됐습니다(리눅스).
-
앱 고유 아이콘: 인디케이터·설정·자판 스튜디오·타자 연습이 각자 아이콘을 갖고, 앱 ID 가 역DNS 명명으로 통일돼 GNOME 작업표시줄·오버뷰에 제대로 표시됩니다. 설정 앱은 Slint 기반이라 GTK 의
application_id에 해당하는 것이 없어 창 app_id 가 비어 있었는데, winit 백엔드에 직접 지정해 맞췄습니다. Windows 에서도 실행 파일에 아이콘 리소스를 넣어 작업표시줄·탐색기·시작 메뉴에 제 아이콘이 뜹니다.
달라진 점
-
설정 앱이 둘로 나뉩니다: 새 Slint 앱이
unim-settings이름을 넘겨받고, 기존 GTK4 앱은unim-settings-gtk로 개명돼 당분간 함께 배포됩니다(추후 퇴역). 데스크톱 메뉴에는 Slint 앱만 나오고, 모든 컴포넌트의 "설정 열기"가 새 앱을 가리킵니다. -
deb 패키지 11종으로 개편: Slint 설정 앱이
unim-settings패키지로 독립하고, 자판 스튜디오·타자 연습이 새 패키지로 추가됐습니다. 인디케이터·팝업 서비스·레거시 GTK 다이얼로그는unim-desktop에 묶였습니다. -
자판 스튜디오 재설계: 좌측 사이드바 + 2탭 구성이 헤더 3단 드롭다운(언어 › 출처 › 자판) + 4탭으로 바뀌었습니다. 빌트인 자판은 "다른 이름으로 저장"만 가능하고, 사용자 자판은 제자리에 저장됩니다.
-
자판 목록을 실제 등록된 프로필에서 열거: 고정된 4종 목록 대신 등록된 프로필을 열거해, 안마태와 사용자 자판이 이름으로 표시되고 모아치기 관련 UI 도 함께 켜집니다.
-
GNOME 확장 아이콘 정비: 트레이·패널 아이콘을 단색 SVG 세트로 교체하고, 입력기 비활성 상태를 별도 아이콘으로 표시합니다.
-
잘못된 단축키 표기 경고를 모든 키 설정 칸으로 확대: AutoTypeFix 토글에만 있던 저장 시 검증이 한/영 전환키·한자 키·자동 영문 트리거까지 넓어졌습니다. 엔진이 해석하지 못하는 표기를 넣으면 설정 앱·CLI·데몬 로그 세 곳에서 알려 줍니다. 일부만 무효면 저장은 하되 경고하고, 목록 전체가 무효면 저장을 반려합니다 — 전부 걸러지면 한/영 전환 수단이 통째로 사라지기 때문입니다. 판정이 엔진 한 곳에서 이뤄져 리눅스와 Windows 의 기준이 같습니다.
고쳐짐
-
도움말이 브라우저 대신 IDE 로 열리던 문제: 트레이·설정 앱·GNOME 확장의 「도움말」이 text/html 기본 핸들러를 따라가는 바람에, VS Code 계열이 text/html 을 잡아 둔 시스템에서는 매뉴얼이 IDE 로 열렸습니다. 이제 기본 웹 브라우저를 먼저 씁니다.
-
오른쪽 Alt 한/영 토글이 동작하지 않던 문제: 엔진에서는 수정자 판정이 토글 검사보다 먼저 돌았고, GTK·Qt·GNOME 확장은 오른쪽 Alt 를 자체적으로 걸러 데몬까지 오지도 않았습니다. 토글 판정을 데몬으로 일원화해 어디서나 같게 동작합니다. AltGr 레이아웃에는 영향이 없습니다. 다만 토글 순간 앱도 Alt 눌림을 함께 받을 수 있어, 원치 않으면
toggle_keys에서 빼면 됩니다. -
GTK/Qt 입력 모듈에서 Super/Meta 조합이 인식되지 않던 문제: 수정자 마스크 비트가 어긋나
key:Super+X같은 트리거가 이 경로에서 죽어 있었습니다. -
순수 Wayland 에서 모든 키가 오독되던 문제: Sway·단독 Hyprland 등에서 프런트엔드가 X11 방식 키코드(raw evdev + 8)를 보내고 데몬은 raw evdev 를 기대해, 사실상 모든 키 조회가 8 만큼 어긋나 있었습니다. GNOME 세션은 확장 경로를 쓰므로 영향이 없었습니다.
-
GNOME Wayland 에서 비밀번호 필드 억제가 동작하지 않던 문제: GNOME 확장의 content-purpose 처리가 빈 껍데기여서, GTK3/4·Chrome 이 전부 이 경로로 수렴하는 GNOME Wayland 에서는 억제가 조용히 무효였습니다. 이제 배선됐고, 포커스를 유지한 채 필드 성격이 바뀌는 경우("비밀번호 표시" 토글 등)까지 추적합니다.
-
XIM 앱에서 확정 직후 다음 글자가 늦게 보이던 문제: Obsidian 등 XIM 경로 앱에서 한 음절이 확정되면, 이어서 누른 자모가 화면에 바로 안 나타나고 자모를 하나 더 눌러야 보였습니다. 0.3.0부터 남아 있던 문제이고, 이제 누르는 즉시 나타납니다. (터미널 등 OVER-THE-SPOT 환경은 원래 정상이었고 그대로입니다.)
-
조합 중 다른 곳을 클릭하면 글자가 클릭한 자리에 확정되던 문제: Chrome·Obsidian 등에서 한글을 조합하다 같은 입력란의 다른 곳을 클릭하면, 조합 중이던 글자가 원래 자리가 아니라 클릭한 자리에 들어갔습니다. GNOME Wayland·XIM·Qt 경로를 모두 고쳤습니다.
-
XIM 앱에서 조합 중 Enter 를 누르면 줄바꿈이 글자보다 앞에 가던 문제: Obsidian 등 XIM 경로 앱에서 한 글자를 조합하다 Enter 를 누르면
한뒤에 줄이 바뀌는 대신 줄이 먼저 바뀌고 글자가 그 아래에 놓였습니다. GTK·Qt 경로는 원래 정상이었습니다. 다만 이때 다시 전달되는 Enter 는 수정자를 재현하지 않으므로Shift+Enter는 그냥 Enter 로 들어갑니다. -
단축키 칸이 존재하지 않는 키를 예시로 안내하던 문제: 안내대로
ScrollLock·Hangul을 적으면 그 단축키가 조용히 죽었습니다. 실제로 유효한 표기(F10,Korean,Hanja)로 바로잡고, "수정자 조합은 지원하지 않습니다" 라는 옛 설명도 정정했습니다. -
단어 모드 음절 강등 안내: 단어 단위 입력이 터미널 등에서 음절 단위로 되돌 때 설정이 고장 난 것으로 오인하지 않도록, 로그(
[WordGate])와 설정 설명에 예외를 명시했습니다.
Windows
-
TSF 단일 DLL: 언어바, 조합·후보 팝업(한자·특수문자·이모지), AutoTypeFix UI 가
unim_tsf.dll하나에 통합돼 종전의 별도 도우미 실행 파일을 대체합니다. 리눅스 프런트엔드와 공유 코어는 건드리지 않았습니다. -
콘솔·IMM32 앱 한글 조합: WezTerm·텔레그램 등 인라인 조합을 쓰는 앱에서 한글 조합이 복구됐습니다(CUAS 계약 준수).
-
32비트 앱: 32비트 TSF TIP(
unim_tsf32.dll)를 함께 등록해 카카오톡·한컴 등에서 동작합니다. Win11 에서 무의미한 IMM32.ime등록은 폐기했습니다. -
접근성: 조합·후보 창을 TSF UIA/UILess 로 노출하고, 자동 반복 억제 옵션과 한/영 전환 화면 낭독기 통지를 추가했습니다.
-
MSI 배포: WiX 3.x 기반 빌드 체인을 정비했습니다. MSI 는 별도 CI 에서 빌드되어 deb·rpm 보다 몇 분 늦게 릴리스에 첨부될 수 있습니다 — 설치 스크립트가 체크섬을 못 찾는다고 하면 잠시 후 다시 시도하세요.
내부
- 공개 C 헤더(
unim.h)를 Rust 표면과 동기화하고, 어긋나면 빌드 시 경고하는 가드를 추가했습니다. - 자판 스튜디오와 타자 연습이 키보드 위젯 하나를 공유하도록 정리했습니다(중복 3벌 → 1벌).
- GTK/Qt IM 모듈에서 쓰이지 않던 임베디드 팝업 위젯을 제거했습니다. 팝업은 전부 popup-service 가 맡습니다.
.gitattributes(eol=lf)와.editorconfig로 줄바꿈을 정규화했습니다.
English
Known issues
- This release carries no rpm packages. The build was broken, so only the 11 .deb packages and the Windows MSI were published, and one-line installation is unavailable on Fedora and RHEL-family systems. Fixed in 0.4.1.
The release where an input method that only ran on Linux started running on Windows off the same core, installation became a single line, and both platforms got the same settings window.
The v0.4.0 tag published on 2026-07-19 was withdrawn — the MSI release gate was broken by a
guids.wxiversion mismatch (fixed in65c66f8). This entry is the valid v0.4.0.
Added
-
One-line install:
curl … | bashon Linux,irm … | iexon Windows. The script detects your distribution, downloads the deb or rpm packages, verifies them against SHA256, and installs — and if verification fails it installs nothing and stops.UNIM_VERSIONpins a specific version. -
First-run wizard: Runs automatically the first time you log in after installing and walks you through setting UNIM as the default input method. It does not come back once finished.
-
Settings app rewritten (
unim-settings): Moved from GTK4 to Slint, so Linux and Windows share one settings window. -
Word-unit input: The commit unit can be a word instead of a syllable. Terminals, XIM, and chord layouts fall back to syllable units automatically to avoid misbehavior.
-
AutoTypeFix toggle shortcuts: Toggle all / forward / reverse independently. The all-toggle defaults to
Shift+F8; the per-direction toggles are left empty for those who want them. Modifier combinations such asShift+F8andCtrl+Leftwork, and combinations you did not configure pass straight through to the application. -
Automatic password-field protection: Entering a password field switches to English mode and keeps the keys you type out of buffers, undo, and the learning dictionary. Leaving the field restores the previous state. It relies on the app reporting "this field is a password", so apps that do not report it are not detected (see user manual 4.4).
-
Modifier combinations for auto-English switching: Triggers like
key:Ctrl+Bare now accepted. For environments that need a combo key, such as the tmux prefix, the key is passed through to the application as the mode switches. -
Mode-switch beep: A short beep when the Korean/English mode changes (880 Hz Korean, 440 Hz English). No external library, no added input latency. Can be turned off in settings.
-
Key auto-repeat suppression: Ignores the auto-repeat from holding a key down. It covers the Korean/English toggle key and character keys in Korean mode, leaving Backspace and arrow keys alone. Meant for users who cannot release keys quickly; off by default.
-
Keymap Studio and Typing Practice: A tool for viewing and editing layouts, and one for measuring speed and accuracy per layout (Linux).
-
Distinct app icons: The indicator, settings, Keymap Studio, and Typing Practice each have their own icon, and app IDs follow reverse-DNS naming so they display correctly in the GNOME taskbar and Overview. The settings app is Slint-based and has no equivalent of GTK's
application_id, so its window carried no app_id; it is now set explicitly on the winit backend. On Windows the executable embeds an icon resource, so the taskbar, Explorer, and Start menu show the real icon too.
Changed
-
The settings app is now two apps: The new Slint app takes over the
unim-settingsname and the previous GTK4 app is renamedunim-settings-gtk, shipped alongside for now (to be retired later). Only the Slint app appears in the desktop menu, and every component's "Open settings" points at it. -
Reorganized into 11 deb packages: The Slint settings app becomes its own
unim-settingspackage, and Keymap Studio and Typing Practice are added as new packages. The indicator, popup service, and legacy GTK dialog are bundled intounim-desktop. -
Keymap Studio redesigned: The left sidebar + two tabs became a three-step header dropdown (Language › Source › Layout) plus four tabs. Built-in layouts allow only "Save As"; your own layouts save in place.
-
Layout list enumerated from registered profiles: Instead of a fixed set of four, the actually registered profiles are enumerated — so Ahnmatae and user layouts appear by name and the chord-related UI turns on with them.
-
GNOME extension icons refreshed: Tray and panel icons replaced with a monochrome SVG set, with a separate icon for the disabled state.
-
Invalid-shortcut warnings extended to every key field: The save-time validation that only covered AutoTypeFix toggles now also covers the Korean/English toggle key, the Hanja key, and auto-English triggers. Specs the engine cannot parse are reported in the settings app, the CLI, and the daemon log. Partially invalid lists save with a warning; a list where every entry is invalid is rejected — otherwise the engine would drop them all and leave no way to switch languages. Verdicts come from one place in the engine, so Linux and Windows apply the same rules.
Fixed
-
Help opened in an IDE instead of the browser: The Help entries followed the text/html default handler, so on systems where a VS Code-family editor had claimed text/html the manual opened there. It now prefers your default web browser.
-
Right Alt Korean/English toggle did not work: In the engine the modifier check ran before the toggle check, and GTK, Qt, and the GNOME extension filtered Right Alt themselves so it never reached the daemon. The toggle decision is now made solely by the daemon and behaves the same everywhere. AltGr layouts are unaffected. Note that the application may also receive the Alt press at the moment of toggling; remove it from
toggle_keysif you don't want that. -
Super/Meta combinations unrecognized in the GTK/Qt input modules: A misaligned modifier mask bit left triggers like
key:Super+Xdead on that path. -
Every key misread on pure Wayland: On Sway, standalone Hyprland, and similar, the frontend sent X11-style keycodes (raw evdev + 8) while the daemon expected raw evdev, so every key lookup was off by 8. GNOME sessions were unaffected, as they use the extension path.
-
Password-field suppression did nothing on GNOME Wayland: The GNOME extension's content-purpose handling was an empty stub, so suppression was silently inert on GNOME Wayland — where GTK3/4 and Chrome all funnel through that path. It is now wired up and tracks a field's purpose changing while it stays focused (a "show password" toggle, for instance).
-
In XIM apps, the character after a commit showed up one keystroke late: In apps that go through XIM (Obsidian and others), once a syllable was committed the next jamo you typed did not appear until you typed another one. Open since 0.3.0; it now appears as you type. (Terminals and other OVER-THE-SPOT clients were already correct and stay that way.)
-
Clicking elsewhere while composing committed the text at the click position: In Chrome, Obsidian, and other apps, clicking elsewhere in the same input field mid-composition placed the in-progress syllable at the click position instead of where it was being typed. Fixed on the GNOME Wayland, XIM, and Qt paths.
-
In XIM apps, pressing Enter while composing put the line break before the character: In Obsidian and other apps that go through XIM, composing a syllable and pressing Enter broke the line first and left the character below it, instead of committing the character and then breaking. The GTK and Qt paths were already correct. Note that the Enter delivered afterwards does not carry modifiers, so
Shift+Enterarrives as a plain Enter. -
Shortcut fields suggested keys that do not exist: Following the hints and entering
ScrollLockorHangulleft the shortcut silently dead. The examples now use specs that actually work (F10,Korean,Hanja), and the stale "modifier combinations are not supported" note was corrected. -
Word-mode syllable-downgrade guidance: So the automatic fallback to syllable units in terminals is not mistaken for broken settings, it is now logged (
[WordGate]) and spelled out in the settings descriptions.
Windows
-
A single TSF DLL: The language bar, composition and candidate popups (hanja, special characters, emoji), and the AutoTypeFix UI are consolidated into
unim_tsf.dll, replacing the previous separate helper executable. The shared core and the Linux frontends were not touched. -
Hangul composition in console/IMM32 apps: Restored for apps that use inline composition, such as WezTerm and Telegram (CUAS-compliant).
-
32-bit apps: A 32-bit TSF TIP (
unim_tsf32.dll) is registered alongside, so KakaoTalk, Hancom, and similar work. The pointless IMM32.imeregistration on Win11 was dropped. -
Accessibility: Composition and candidate windows are exposed via TSF UIA/UILess, and auto-repeat suppression plus screen-reader notification of mode switches were added.
-
MSI distribution: The WiX 3.x build chain was tidied up. The MSI is built by a separate CI workflow, so it may reach the release a few minutes after the deb and rpm packages — if the installer reports a missing checksum, wait a moment and retry.
Internal
- The public C header (
unim.h) is kept in sync with the Rust surface, with a build-time guard that warns on drift. - Keymap Studio and Typing Practice now share a single keyboard widget (three duplicate copies merged into one).
- Unused embedded popup widgets were removed from the GTK/Qt IM modules; popups are drawn solely by the popup service.
.gitattributes(eol=lf) and.editorconfignormalize line endings.
설치 / Install (Ubuntu 24.04+ / Debian, amd64)
curl -fsSL https://raw.githubusercontent.com/from104/unim/main/install.sh | bash버전 고정 / pin a version:
UNIM_VERSION=v0.4.0 curl -fsSL https://raw.githubusercontent.com/from104/unim/main/install.sh | bash수동 설치 / manual: SHA256SUMS 로 검증 후 sudo apt install ./unim*.deb.
설치 / Install (Windows 10/11, x64)
PowerShell 에서 실행하시고, 설치할 때 UAC 승인이 한 번 필요합니다.
irm https://raw.githubusercontent.com/from104/unim/main/install.ps1 | iex버전 고정 / pin a version:
$env:UNIM_VERSION='v0.4.0'; irm https://raw.githubusercontent.com/from104/unim/main/install.ps1 | iex⏳ MSI 는 별도 워크플로에서 빌드되어 이 릴리스에 첨부됩니다.
태그를 막 올린 직후라면 몇 분 뒤에 나타납니다 — 설치 스크립트가 릴리스에서 MSI 를 내려받습니다.
아직 코드 서명이 없어 SmartScreen 경고가 뜹니다. "추가 정보 → 실행" 으로 넘어가 주세요.
변경 이력 / Changelog: CHANGELOG-ko.md · CHANGELOG.md
전체 변경 이력 / Full Changelog: v0.3.0...v0.4.0