레이블이 uim인 게시물을 표시합니다. 모든 게시물 표시
레이블이 uim인 게시물을 표시합니다. 모든 게시물 표시

2014/09/27

uim 벼루 Qt5 immodule build


우분투 uim 기본 패키지에는 Qt5 immodule이 들어 있지 않아서 Qt5 애플리케이션에서 한글 입력이 안된다. uim 사이트에 가보니 2013/6/30일자 uim-1.8.6 소스가 최신인데 받아 보니 Qt5를 지원하지 않는다. 문서에도 Qt5에 대한 언급이 전혀 없다. 혹시나 해서 github에서 소스를 받아 보니 Qt5 immodule 소스가 있었다. Qt5 모듈을 build하는 문서가 없어서 좀 헤매야 했는데 헤맸던 것들을 정리한다.

결론은, uim Qt5 모듈을 사용하면 Qt5 애플리케이션에서도 한글입력은 잘 되는데, 안정성 문제가 있다. 한글 입력 문제에 관한 한 uim이 ibus보다 좋아 보인다.

uim Build 및 설치

uim 설치 가이드를 따라가면, 소스를 build하기 위해서 아래의 tool 들이 필요하다.

$ sudo apt-get install intltool
$ sudo apt-get install librsvg2-bin libtool ruby git

build에 필요한 header 파일들도 있어야 하고...

$ sudo apt-get install libanthy-dev libgtk2.0-dev libgtk-3-dev libqt4-dev

그런데, Qt5는 우분투 패키지 구성이 꽤 복잡하다. 한마디로 libqt5-dev가 없다. 일단, 아래 정도가 필요해 보인다.

$ sudo apt-get install qtbase5-dev qtbase5-private-dev qt5-default qtdeclarative5-dev

이제 다시 가이드 대로, 소스를 github에서 받아서 build하고 설치까지 문제가 없다. 아, 도중에 폴더 권한이 없다는 오류가 발생했었다. 해당 폴더(/usr/plugins)를 만들어 주고 사용자 권한을 주면 해결된다. Qt5 모듈이 엉뚱한 폴더를 중간 폴더로 사용하고 있었다.

그리고, ./uim/qt5/immodule/quimplatforminputcontext.cpp 파일 윗부분에 debug 사용하도록 define이 있는데 주석 처리하는게 좋다.

$ git clone https://github.com/uim/uim.git
$ cd uim
$ ./make-wc.sh --with-qt5 --with-qt5-immodule
$ make
$ sudo make install

위와 같이 해서 설치하면 /usr/local 하위 폴더들에 uim 파일들이 분산된다. 단, Qt5 모듈은 Qt5 폴더 (/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts)에 설치된다.

Qt5 모듈은 가야할 위치에 이미 가 있어서 Dynamic loading 문제가 없다. 그런데, GTK 모듈들은 immodules.cache에 등록해 주어야 한다. GTK2는 별로 쓸일이 없을 것 같아서 GTK3 모듈만 아래와 같이 등록하였다.

$ /usr/lib/x86_64-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0 /usr/local/lib/gtk-3.0/3.0.0/immodules/im-uim.so >> /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache

uim 자동 실행

시스템 설정 가이드에 보면 ~/.xinitrc나 ~/.xsession에 아래의 내용을 넣어 주면 된다는데 잘 안되었다.
export GTK_IM_MODULE=uim
export QT_IM_MODULE=uim
export QT4_IM_MODULE=uim
export XMODIFIERS=@im=uim
/usr/local/bin/uim-xim &
그래서, 우분투의 im-config를 사용하기로 하였다. 먼저, ~/.xinputrc에 아래 내용을 등록해 주고,
run_im uim
/usr/share/im-config/data/24_uim.rc 파일을 수정해서 /usr/local 폴더 위치를 잡아 주었다. 그리고 나서 재로그인하면 uim이 잘 기동된다.

uim Qt5 모듈의 문제점

Qt5 애플리케이션에서 한글입력은 아무 문제없다. 심지어 ibus의 Qt5 애플리케이션에서 발생하는 한글입력 문제도 없다. 그런데, 공식 사이트에 Qt5 모듈이 없는 이유를 알게 되었다. 불안정하기 때문이다. 일단, 두어가지 문제를 발견했다.
  • Qt5 애플리케이션을 새로 실행할 때마다 uim-candwin-qt5 프로세스 수가 계속 증가함
  • 애플리케이션을 중지하면 프로세스가 좀 줄어 들지만 다시 새로운 프로세스가 생김
  • Qt5 애플리케이션을 쓰다 보면 컴이 느려지는데 uim-helper-server 프로세스가 CPU를 거의 100% 가까이 잡아먹고 있음

참고 사이트

https://code.google.com/p/uim/wiki/InstallUim
https://code.google.com/p/uim/wiki/UimSystemConfiguration

2014/09/25

ibus 기동 방지 및 uim 벼루 설치


우분투 14.04에서 ibus 대신 uim 벼루와 같은 다른 입력기를 테스트 해보려고 ibus를 삭제하면 불상사가 생기니 삭제하지 말고 ibus 프로세스만 기동되지 않도록 하는 방법을 찾을 필요가 있었다.

ibus를 삭제하면

우분투 14.04에서 ibus를 삭제하면 아래 스크린 샷과 같이 [시스템 설정] 메뉴가 대폭 사라지는 일이 생긴다.


원래의 [시스템 설정] 스크린 샷은 아래와 같다.


아래에서 알 수 있듯이 삭제 명령 실행시 ibus만 지워지는게 아니기 때문이다. 한마디로 ibus를 붙박이로 써라는 엉뚱하고도 고약한 패키지 dependency이다.

$ sudo apt-get remove ibus ibus-hangul
[sudo] password for aaa: 
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  libhangul-data libhangul1
Use 'apt-get autoremove' to remove them.
다음 패키지를 지울 것입니다:
  ibus ibus-hangul ibus-pinyin ibus-table ubuntu-desktop unity-control-center
  unity-control-center-signon webaccounts-extension-common xul-ext-webaccounts
0개 업그레이드, 0개 새로 설치, 9개 제거 및 0개 업그레이드 안 함.
이 작업 후 8,654 k바이트의 디스크 공간이 비워집니다.
계속 하시겠습니까? [Y/n] 
다시 복구하기 위해서 아래와 같이 하면 ibus와 ibus-hangul 두 개만 달랑 설치된다.

$ sudo apt-get install ibus ibus-hangul

아래와 같이하면 ibus도 같이 설치되고 [시스템 설정]도 원래의 상태가 된다.

$ sudo apt-get install ubuntu-desktop unity-control-center unity-control-center-signon webaccounts-extension-common xul-ext-webaccounts

로그인시 ibus 프로세스가 자동 시작 방지 및 uim 벼루 설치

ibus를 삭제하려던 원래 이유는 uim 벼루와 같은 다른 입력기를 테스트해 보기 위해서 였다.

예를 들어, uim/uim-byeoru를 아래와 같이 설치하고 나서,

$ sudo apt-get install uim uim-byeoru

[시스템 설정] > [언어 지원]에서 [키보드 입력기]를 uim으로 바꾸고 재로그인해도 ibus 프로세스들이 같이 떠 있다. 구글링해 보니 굳이 ibus를 지우지 않아도 ibus 프로세스가 로그인시 기동되지 않도록 하는 방법이 있었다.

$ gsettings set org.gnome.settings-daemon.plugins.keyboard active false

위와 같이하고 다시 로그인하면 더이상 ibus 프로세스가 기동되지 않는다.

추가적으로, 기존에 ibus 환경에서 <Shift>+<Space> 등의 키를 한영 변환키로 사용했는데 uim에서도 같은 키조합을 사용하려면 [시스템 설정] > [텍스트 입력창]에서 단축 키를 다른 키로 바꿔 주어야 한다. 단축 키에 대한 우선권이 거기에 있기 때문이다.

Unity 상단 패널의 키보드 indicator도 ibus에서만 사용하는 것이므로 안보이도록 설정하려면,

$ gsettings set com.canonical.indicator.keyboard visible false

uim에서 한영키를 등록하려면 uim-pref-gtk를 실행시켜서 [벼루 키 설정 1]에 한영키("hangul")를 추가해 주면 된다.

$ uim-pref-gtk

uim 벼루의 제약 사항

일단, 두가지 제약 사항이 있다. 하나는 Unity 상단 패널에 uim indicator가 등록되지 않아 한영 상태를 구분하기 어렵다는 것이고, 다른 하나는 Qt5 애플리케이션에서 한글입력이 안된다는 것이다.

참고로, Mint 17에서는 uim indicator가 정상 동작한다.