원문 보기: https://dawoum.duckdns.org/wiki/Korean_IME_(kime)
Korean IME, 줄여서 kime은 러스트 언어로 개발되고 있는 한글 입력기입니다.
리눅스에서 많이 사용되고 있는 ibus, fcitx, 등은 외국에서 주도적으로 개발되고 있는 것과 달리, Nimf, Nabi, 등과 더불어 한국에서 주도적으로 개발되는 입력기입니다.
다른 측면에서, ibus, fcitx, nimf, 등은 다국어 입력을 지원하고, 반면에 kime은 영어와 한글을 지원합니다.
Introduction
데스크탑 리눅스에서, 한글 입력기의 가치는 절대적이라고 볼 수 있습니다.
데스크탑에서 적어도 한글 검색을 위해서는 한글 입력기가 반드시 필요하기 때문에, 서버와는 다르게, 한글 입력기 없는 데스크탑은 있을 수 없습니다.
이런 측면에서 한글 입력기 개발에 누군가는 참여해야 하는 당위성은 있는데, 문제는 외국에서 주도적으로 개발되는 입력기는 권한이 없기 때문에 한글 관련 패치가 받아들여지기에 지속적인 관심과 상당한 노력이 필요해 보입니다.
이러다 보니, 적어도 관련 패치를 즉시 적용하기 위해 또 다른 누군가는 자체적으로 입력기를 개발할 필요성을 느낄 수 있고, 그런 입력기 중에 하나가 kime입니다.
Installation
데비안에 대한 바이너리는 오래된 데비안 버전의 것이 제공되지만, 데비안 버전에 크게 상관없이 동작할 것으로 기대됩니다.
아니면 직접 패키지를 만들 수도 있습니다. 컴파일에 필요한 패키지를 먼저 설치합니다:
- sudo apt install build-essential
- sudo apt install git
- sudo apt install cmake
- sudo apt install libclang1
- sudo apt install libgtk2.0-dev
- sudo apt install libgtk-3-dev
- sudo apt install qtbase5-private-dev
- sudo apt install cairo-5c
- sudo apt install clang
- sudo apt install librust-clang-sys-dev
- sudo apt install libdbus-glib-1-dev
- sudo apt install libxcb-shape0-dev
- sudo apt install libxcb-xfixes0-dev
- sudo apt install rustc cargo
아마도 낮은 버전의 러스트에서 컴파일이 되지 않을 수도 있습니다. 그 때에는 Rust (programming language)를 읽고 최신 버전을 먼저 설치하십시오.
이제, 소스를 받아서 컴파일을 시도합니다.
- git clone https://github.com/Riey/kime
- cd kime
- scripts/build.sh -ar
중간에 오류가 발생할 수 있으며, 의존성 패키지의 부재인 경우도 있고, 프로그램 자체의 오류도 있습니다. 오류를 확인해서 대처하십시오.
이제 데비안 패키지를 만들고, 설치합니다:
- scripts/release-deb.sh ..
- cd ..
- sudo dpkg -i kime*deb
Configurations
이전의 X11에서 im-config 명령을 사용해서 입력기 전환이 쉬웠지만, Wayland에서는 동작하지 않을 수 있습니다. 따라서 직접 환경 변수를 입력할 필요가 있습니다.
Bash (Unix shell)를 사용할 때에는 .xprofile에 기록할 수 있고, Z shell을 사용할 때에는 .zprofile에 기록할 필요가 있습니다. 그냥 2개의 파일에 모두 기록해 두는 것도 좋겠습니다:
- nano ~/.xprofile (and .zprofile)
export GTK_IM_MODULE=kime
export QT_IM_MODULE=kime
export XMODIFIERS=@im=kime
다음으로 indicator 표시를 위해 다음 패키지를 설치하시고, 해당 확장을 활성화하십시오. 아마도 로그 아웃 후에 다시 로그인한 후에 확장이 표시될 것입니다.
- sudo apt install gnome-shell-extension-prefs gnome-shell-extension-appindicator
다른 데스크탑, 예를 들어 KDE Plasma 5에서 추가적인 입력기 설정은 다음을 추가로 수행하십시오:
플라즈마로 로그인 후에, System Settings를 실행한 후에,
- Keyboard로 검색한 후에, Layout에 Korean으로 검색해서 어떤 하나를 더해야 합니다.
- Virtual Keyboard에서 kime daemon을 선택해야 합니다.
그런-다음 로그아웃 후에, 다시 로그인해야 합니다.
Kime configurations
제공되는 설정을 그대로 사용해도 좋겠지만, 어두운 테마를 사용할 경우에 indicator 색깔을 바꾸고, 입력기 전환을 ⇧ Shift+space로 바꿀 수 있습니다. 설정은 반드시 복사하셔야 동작합니다!!
- mkdir -p ~/.config/kime
- cp /usr/share/doc/kime/default_config_config.yaml ~/.config/kime/config.yaml
- nano ~/.config/kime/config.yaml
이 파일에서 Black를 White로 Super-Space로 시작하는 문단을 찾아서, Super를 S로 바꾸면 입력기 전환이 ⇧ Shift+space로 이루어집니다.
Debian packaging
Building Debian Packages with Cargo에 따라 패키지를 제작할 수 있습니다:
- gedit src/tools/kime/Cargo.toml
[package.metadata.deb]
name = "kime"
maintainer = "Riey <creeper844@gmail.com>"
copyright = "Riey <creeper844@gmail.com>"
extended-description = """\
Korean IME"""
depends = "$auto"
section = "utility"
priority = "optional"
recommends = "fonts-noto-cjk"
assets = [
["../../../build/out/kime", "usr/bin/", "755"],
["../../../build/out/kime-candidate-window", "usr/bin/", "755"],
["../../../build/out/kime-check", "usr/bin/", "755"],
["../../../build/out/kime-indicator", "usr/bin/", "755"],
["../../../build/out/kime-wayland", "usr/bin/", "755"],
["../../../build/out/kime-xdg-autostart", "usr/bin/", "755"],
["../../../build/out/kime-xim", "usr/bin/", "755"],
["../../../build/out/kime.desktop", "etc/xdg/autostart/kime.desktop", "644"],
["../../../build/out/kime.desktop", "usr/share/applications/kime.desktop", "644"],
["../../../build/out/libkime-gtk3.so", "usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-kime.so", "755"],
["../../../build/out/libkime-gtk4.so", "usr/lib/x86_64-linux-gnu/gtk-4.0/4.0.0/immodules/libkime-gtk4.so", "755"],
["../../../build/out/libkime_engine.so", "usr/lib/x86_64-linux-gnu/libkime_engine.so", "755"],
["../../../build/out/libkime-qt5.so", "usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libkimeplatforminputcontextplugin.so", "755"],
["../../../build/out/libkime-qt6.so", "usr/lib/x86_64-linux-gnu/qt6/plugins/platforminputcontexts/libkimeplatforminputcontextplugin.so", "755"],
["../../../build/out/CHANGELOG.md", "usr/share/doc/kime/CHANGELOG.md", "644"],
["../../../build/out/LICENSE", "usr/share/doc/kime/LICENSE", "644"],
["../../../build/out/README.ko.md", "usr/share/doc/kime/README.ko.md", "644"],
["../../../build/out/README.md", "usr/share/doc/kime/README.md", "644"],
["../../../build/out/default_config.yaml", "usr/share/doc/kime/default_config.yaml", "644"],
["../../../build/out/README.md", "usr/share/doc/kime/README.md", "644"],
["../../../build/out/icons/64x64/kime-hangul-black.png", "usr/share/icons/hicolor/64x64/apps/kime-hangul-black.png", "644"],
["../../../build/out/icons/64x64/kime-hangul-white.png", "usr/share/icons/hicolor/64x64/apps/kime-hangul-white.png", "644"],
["../../../build/out/icons/64x64/kime-latin-black.png", "usr/share/icons/hicolor/64x64/apps/kime-latin-black.png", "644"],
["../../../build/out/icons/64x64/kime-latin-white.png", "usr/share/icons/hicolor/64x64/apps/kime-latin-white.png", "644"],
["../../../scripts/im_kime.conf", "usr/share/im-config/data/51_kime.conf", "644"],
["../../../scripts/im_kime.rc", "usr/share/im-config/data/51_kime.rc", "644"],
]
현재 있는 Cargo.toml 파일의 맨 아래쪽에 위의 내용을 그대로 붙여넣습니다. 물론 다른 파일에 만들어도 되지만, 루트에 있는 Cargo.toml 파일에 추가해서는 안되는 것으로 보입니다.
- cargo deb --manifest-path src/tools/kime/Cargo.toml --no-build --deb-version 3.1.1-1
Troubleshootings
그놈에서 한글 입력기
그놈에서 ibus로 인해 kime-wayland는 실행되지 않기 때문에, kime이 붙지 않는 것들 중에 CJK 입력이 가능한 것은 ibus-hangul을 별도로 설정해서, kime+ibus-hangul 형태로 사용할 수 있습니다. 가능한 대부분의 프로그램에서 한글 입력이 가능합니다. 이렇게 하니, 전역으로 ibus가 동작 중이라서, /etc/xdg/autostart/kime.desktop이 동작하지 않습니다. 따라서, kime.desktop 파일을 만들어서 그놈 autostart에서 실행하도록 처리해 주어야 합니다. 만약 indicator도 동작하지 않으면, kime-indicator.desktop 파일도 만들어서 autostart 하도록 처리해 주어야 합니다.
Alacritty 입력기 전환 안됨
잘 되던 alacritty에서 입력기 전환이 되지 않습니다. 같은 시스템을 사용하는 다른 기계에서는 잘 입력되는 것으로 보아 해당 시스템에 문제가 있는 것을 확인하고, 다음 명령을 수행합니다:
- ps aux |grep kime
보통, 그놈 Wayland에서, kime, kime-xim, kime-indicator의 3개의 프로세스가 동작 중입니다. 그러나 문제 있는 시스템은 kime-xim이 동작하지 않습니다. 다음 명령으로는 특별한 메시지가 출력되지 않습니다:
- RUST_BACKTRACE=1 kime-xim
결국 일부 설정을 추가하면서 잘못된 문법으로 인해 해당 프로세스가 동작하지 않음을 확인할 수 있었습니다.