공통 입력 방식

Cim은 공통 입력 방식(Common input method)을 의미합니다.

현재 리눅스와 BSD 환경의 입력 방식은 파편화되어 있습니다. XIM, Gtk-IM, Qt-IM, Wayland-IM 등 수많은 표준이 난립해 있는 상황입니다.

Cim은 이렇게 이질적인 입력 방식들을 통합하기 위해 설계된 소프트웨어입니다.

역사적으로 Gtk와 Qt 입력 방식은 플러그인 형태로 작동해 왔으며, 이는 수십 년간 안정적으로 작동함이 입증된 방식입니다. 그러나 이 모듈들은 각각 Gtk와 Qt에 의존하기 때문에 X 전용, Java, Wayland 전용 또는 콘솔 전용 애플리케이션에서는 이러한 Gtk 및 Qt 입력 방식을 사용할 수 없다는 문제가 있습니다.

Cim은 C API를 통해 공통 입력 방식을 제공함으로써 Gtk와 같은 특정 GUI 툴킷에 대한 의존성을 제거하여 이 문제를 해결합니다. Cim은 순수 C API로 구축되어 무거운 의존성이 없으므로 다양한 프로그래밍 언어와 애플리케이션에서 활용할 수 있습니다.

작동 원리

cim.h에는 필요한 인터페이스와 타입 정의가 포함되어 있습니다.

  • 플러그인 위치

Cim 입력 컨텍스트 API를 구현하는 입력 방식 플러그인은 다음과 같은 위치에 있어야 합니다.

/usr/lib/input.d/im-sample.so
/usr/lib/input.d/im-nimf.so
/usr/lib/input.d/im-ibus.so
/usr/lib/input.d/im-uim.so
/usr/lib/input.d/im-fcitx.so
  • 심볼릭 링크 구성

환경 변수보다는 심볼릭 링크를 통해 입력 플러그인을 선택하는 것이 권장됩니다. 환경 변수는 시작 환경에 따라 설정되지 않을 수 있기 때문입니다. 또한, 심볼릭 링크 방식은 설정 도구를 만들기 쉽게 해줍니다.

~/.config/cim.so는 활성 입력 방식 플러그인(예: ibus, fcitx, nimf, uim)을 가리키는 심볼릭 링크 역할을 합니다.

ln -sf /usr/lib/input.d/im-sample.so ~/.config/cim.so
  • 사용법

설정이 완료되면, 애플리케이션이나 GUI 툴킷이 Cim 입력 컨텍스트 API를 호출할 때 입력 방식이 투명하게 작동합니다.

입력 방식을 fcitx로 전환하려면 심볼릭 링크만 업데이트하면 됩니다.

ln -sf /usr/lib/input.d/im-fcitx.so ~/.config/cim.so

이러한 구조를 통해 XIM, GTK-IM, QT-IM, Wayland-IM 등을 교체하고 통합할 수 있습니다. 또한, 이 방식은 Snap이나 Flatpak 같은 샌드박스 환경에서의 입력 문제를 해결합니다. 애플리케이션이나 툴킷이 Cim API를 지원한다면 $HOME/.config/cim.so를 통해 입력 방식에 쉽게 접근할 수 있습니다.

통합은 실질적으로 가능합니다

디스플레이 서버(Wayland)나 GUI 툴킷(Gtk, Qt)이 기본적으로 Cim을 채택하지 않더라도, Cim을 구현하는 브리지 모듈을 사용하여 입력 방식을 통합할 수 있습니다.

이 방식으로 Cim을 사용하려면 다음 환경 변수를 설정하십시오.

QT_IM_MODULE="cim"
GTK_IM_MODULE="cim"
XMODIFIERS="@im=cim"

다음 브리지 플러그인들은 ~/.config/cim.so를 통해 제3자 입력 방식(nimf, ibus, fcitx, uim)을 호출할 수 있게 해줍니다.

/usr/local/lib/gtk-4.0/4.0.0/immodules/libim-cim-gtk4.so
/usr/local/lib/gtk-2.0/2.10.0/immodules/im-cim-gtk2.so
/usr/local/lib/gtk-3.0/3.0.0/immodules/im-cim-gtk3.so
/usr/local/lib/qt5/plugins/platforminputcontexts/libqt5im-cim.so
/usr/local/lib/qt6/plugins/platforminputcontexts/libqt6im-cim.so

XIM과 Wayland-IM은 프로세스 간 통신(IPC)이 필요하므로 데몬(cimd)이 필요합니다. cimdcim-xim.socim-wayland.so를 로드하며, 이들은 다시 Cim 입력 컨텍스트 API를 호출합니다.

/usr/local/bin/cimd
/usr/local/lib/cimd/plugins/cim-xim.so
/usr/local/lib/cimd/plugins/cim-wayland.so

이 설정은 오늘날 기술적으로 통합을 가능하게 합니다. 다만, Flatpak 및 Snap 애플리케이션이 ~/.config/cim.so를 통해 입력 방식을 사용할 수 있지만, 엄격한 샌드박스 정책으로 인해 접근 문제가 발생할 경우 Flatpak이나 Snap 개발자에게 문의해야 할 수도 있습니다.

입력 도구 개발자를 위한 이점

Cim 생태계(플러그인 및 데몬)가 구축되어 있다고 가정할 때, 입력 도구(IME) 개발자는 더 이상 Gtk-IM, Qt-IM, XIM, Wayland-IM을 위한 별도의 모듈을 구현할 필요가 없습니다. 단순히 Cim 입력 컨텍스트 API만 구현하면 Gtk, Qt, X, Wayland 애플리케이션 전반에서 텍스트 입력이 가능해집니다.

Cim 기술 지원 / 1년

연중무휴 이메일 지원 $ 30

다운로드

Cim은 소스 코드 형태로 배포됩니다.

cim-2.0.0-2025.12.07.tar.bz2
cim-1.0.0-2024.01.25.tar.bz2
cim-0.0.1-2023.08.02.tar.bz2
cim-0.0-20230610.tar.bz2