GNU-Linux

Arch Linux 한글 환경 설정

동건 2018. 1. 17. 00:17

Arch Linux Suckless environment: dwm + st


며칠 개고생해서 Arch Linux + Suckless 환경을 어느 정도 쓸만하게 구축했다. 나는 한국 사람이니까 한글을 쓸 수 있어야 "쓸만하다"의 마무리가 된다고 할 수 있겠다. 이 글에서는 Arch Linux 시스템에서 한글을 보고 쓸 수 있게 하기 위한 작업들을 정리한다.


1. 시스템 언어 설정

/etc/locale.gen에서 원하는 언어를 골라서 uncomment 한다. 나는 en_US.UTF-8ko_KR.UTF-8만 켰다. 그리고 아래 명령어를 통해 그 언어와 관련돼서 시스템이 필요로 하는 것들을 설치한다.

$ locale-gen

설치가 잘 됐는지 결과를 아래와 같이 확인할 수 있다.

$ locale -a
C
en_US.utf8
ko_KR.utf8
POSIX


그럼 지금 시스템에 어떤 언어가 적용되어 있는 지 확인해보자.

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

나는 이미 설정을 끝마쳤기 때문에 en_US.UTF-8로 지정되어 있는데, C 또는 POSIX로 나타난다면 현재 환경에서 Unicode 글자들을 제대로 표현하지 못할 것이기 때문에 localectl을 통해서 UTF8로 변경해줘야 한다.

$ localectl set-locale LANG=en_US.UTF-8

재부팅 후 변경이 잘 됐는지 다시 확인해보자.

$ locale


2. 폰트 설치

맘에 드는 것을 설치하면 된다. 나는 터미널을 위한 Terminus와 일반적으로 쓸 수 있는 DejaVu를 선택했고, 한글 폰트는 AUR을 피해서 설치할 수 있는 것 중에 맘에 드는 게 Google Noto CJK 뿐이 없었다. 한중일 폰트를 한 큐에 설치해버리기 때문에 용량 낭비가 심하지만 어쩔 수 없다. Arch Wiki에 폰트에 관해서 자세하게 잘 설명해주니 참조 바람.

$ pacman -S terminus-font noto-fonts-cjk ttf-dejavu


3. X11에서 fallback font 순서 설정

편하게 한글/영어 폰트를 표현하게 시키기 위해서 필수적인 설정이다. 시험 삼아 아래 명령어의 결과가 어떻게 되는 지 보자.

$ fc-match -s monospace
ter-x12n.pcf.gz: "xos4 Terminus" "Regular"
NotoSansCJK-Regular.ttc: "Noto Sans CJK KR" "Regular"
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
DejaVuSansMono-Bold.ttf: "DejaVu Sans Mono" "Bold"
DejaVuMathTeXGyre.ttf: "DejaVu Math TeX Gyre" "Regular"
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSerif.ttf: "DejaVu Serif" "Book"
...

이 결과는 monospace라는 대표 이름으로 폰트 묶음을 설정한 것이라고 생각해도 되는데, 첫 번째 폰트인 Terminus가 해당 글자를 표현하지 못할 경우 그 다음 순서의 폰트 Noto Sans KR이 나선다는 의미이다. 이 fallback 순서를 잘 설정해놓으면, 영어는 Terminus로 한글은 Noto KR로 알맞게 빠져서 출력시킬 수 있는 것이다.

이를 어떻게 설정하는가? 아래 나의 /etc/fonts/local.conf 내용으로 대신한다.

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>monospace</family>
<prefer>
<family>xos4 Terminus</family>
<family>Noto Sans CJK KR</family>
<family>DejaVu Sans Mono</family>
</prefer>
</alias>
</fontconfig>



4. Input method 설치 및 설정

지금까지 출력에 대한 설정을 했고, 마지막으로 한글 입력만 하면 된다. input method부터 선택해야 하는 어려운 문제를 해결해야 한다.

나는 scim (Smart Common Input Method)을 사용했다. ibus는 dependency가 너무 많았고, fcitx보다 scim이 가벼워 보였다.

$ pacman -S scim scim-hangul


자체적으로 제공하는 GUI를 통해 손쉽게 한/영 단축키를 설정할 수 있다. 물론 Xorg 환경에서 실행시켜야 돌아갈 것이다.

$ scim-setup

SCIM input method setup global optionsGlobal Setup 메뉴에서는 SCIM을 키고 끄는 것과, 여러 입력기를 바꾸는 단축키를 설정할 수 있다.

SCIM input method Hangul setupHangul Setup 에서는 키보드 설정과 한글 모드로 곧장 들어가는 단축키, 한자 키 설정을 할 수 있다.


이제 Xorg를 시작할 때, scim daemon을 돌리는 명령만 넣어주면 된다. 나는 .xinitrc에서 dwm을 시작하고 있기 때문에 이 파일에다 몇 글자 추가해도 된다 (또는 .xprofile에 넣어서 연결해도 된다).

export XMODIFIERS="@im=SCIM"
export GTK_IM_MODULE=scim
export QT_IM_MODULE=scim
scim -d

# 이 아래는 dwm 실행 관련된 스크립트로, 한글 입력과는 아무 상관이 없다
~/.local/bin/dwm_status &
exec dwm


이제 재부팅 후에 한글 입력기가 Xorg 환경에서 입력되는지 확인해보자.




P.S. 이제 나의 첫 GNU/Linux distro였던 Ubuntu 16.04 Unity Desktop과는 작별하게 됐다. GNU/Linux에 첫 발걸음을 떼기 위한 배포판으로 Ubuntu나 Mint만큼 안정적이고 쉬운 것은 없다고 생각한다. 새로운 GNU/Linux 배포판을 경험하게 되기 까지 도움을 준 Ubuntu에게 심심한 감사의 인사를 전하고 싶다. 감사용


P.S. 2. 지금 만족스럽게 사용 중인 Suckless 환경 (dwm + st)에 대해서는 나중에 시간이 된다면 더 설명하고 싶다.



참조 링크

Arch Wiki - locale
https://wiki.archlinux.org/index.php/locale

Arch Wiki - Fonts
https://wiki.archlinux.org/index.php/Fonts
https://wiki.archlinux.org/index.php/Fonts#Fallback_font_order_with_X11

Arch Wiki - Font configuration (이 글에서 자세히 설명하지 않은 부분)
https://wiki.archlinux.org/index.php/Font_configuration

Arch Wiki - Internationalization
https://wiki.archlinux.org/index.php/Internationalization
https://wiki.archlinux.org/index.php/Internationalization/Korean

SCIM


반응형

'GNU-Linux' 카테고리의 다른 글

GNU/Linux를 더 알고 싶다면 Arch Linux  (0) 2018.01.29
Vim 8의 native package support  (0) 2018.01.21
Arch Linux에서 systemd-networkd로 WiFi 자동 연결 세팅  (3) 2018.01.08
UNIX as IDE  (0) 2017.11.09
UNIX as IDE: 7. Revisions  (0) 2017.11.09