두벌식-세벌식 간편하게 변환할 수 없을까요?

우분투 한국 사용자 여러분 안녕하세요. 윈도우만 사용하던 우분투·리눅스 초보입니다.

윈도우에서는 날개셋 제작자분이 만드신 세벌식 파워업을 사용해서 원클릭으로 두벌식-세벌식 전환을 했었는데, 우분투에서도 저렇게 원클릭으로 두벌식-세벌식 전환을 할 수 있는 방법이 있지 않을까 싶어 이렇게 질문드립니다.

현재 윈도우 포맷 후 우분투 11.04를 설치한 상태입니다.(ibus입력기) 검색을 통해 우분투에서 두벌식-세벌식 전환을 하는 방법은 알아냈는데, 가족이 함께 사용하는 컴퓨터인지라 윈도우에서처럼 원클릭으로 두벌식-세벌식 전환이 가능했으면 싶습니다.

방법을 아는 분이 계신다면 답변 좀 부탁드리겠습니다. 두벌식에서 세벌식으로 바꾼지 10년이 넘었는데 요즘들어 다시 두벌식으로 돌아갈까 고민이 되는군요.

ibus에서 2/3벌식 자판 설정은
/usr/lib/ibus-hangul/ibus-setup-hangul을 실행하면 되지만…
GUI화면에서 설정 변경이라 자동화 할 수 없는 문제가 있습니다.

ibus-setup-hangul은 따로 설정파일이 존재하지 않고,
gconf를 사용하더라구요.
그래서 아래와 같이 스크립트를 작성해 보았습니다.

[code:zsacse7m]#!/bin/sh
KBD_TYPE=2
if [ -z "$1" ]; then
KBD_TYPE=$(gconftool-2 -g "/desktop/ibus/engine/Hangul/HangulKeyboard")
if [ "$KBD_TYPE" != "2" ]; then
KBD_TYPE=2
else
KBD_TYPE="3f"
fi
elif [ "$1" = "3" ]; then
KBD_TYPE="3f"
fi
gconftool-2 --set "/desktop/ibus/engine/Hangul/HangulKeyboard" --type string "$KBD_TYPE"
[/code:zsacse7m]
파라미터로 2나 3을 넘기면 해당형태로 한글입력형식이 바뀝니다.
그리고 파라미터를 넘기지 않으면 2/3벌식 사이에서 전환됩니다.

파일을 만드신 후 chmod +x 스크립트파일명 명령으로 실행권한을 주시고
sudo cp 스크립트파일명 /usr/bin

그런 다음 키보드 단축키에 등록하시면 될 것입니다.

저는 11.10에서 gnome-shell을 쓰고 있는데… 이상하게 단축키 설정을 해도 어떤 명령도 되지 않더군요.
아직 베타라그런가? 쩝

protochaos님 답변 고맙습니다. 스크립트를 직접 만들어주셔서 더욱 고맙습니다.

일단은 문서 파일을 만들어서 스크립트를 넣고, chmod +x 명령어를 실행해서
문서 파일을 클릭하면 스크립트가 실행되도록 하는 것까진 했습니다.(이후에 cp명령어는
실행하지 않았습니다.)

부모님께서 사용하실 거라 단축키를 쓰는 것보다는 아이콘을 클릭하는 게 나을 것 같아
현재는 스크립트 문서의 바로가기를 만들어 바탕화면에 복사해 둔 상태입니다.

그런데 바로가기를 클릭하면 매 번
"자판바꾸기에 링크"(을)를 실행 하시겠습니까? 아니면 내용을 보시겠습니까?
라는 메시지가 뜹니다.

여기서 두 가지 질문이 있습니다.
저 메시지가 안 뜨도록 하는 방법이 궁금합니다. 그리고 바로가기를 바탕화면이
아니라 왼쪽의 unity 실행기에 고정하는 방법도 궁금합니다.

unity에 아이콘을 넣는것은 .desktop파일만 할 수있을겁니다.

desktop파일 만드는 방법은 gedit(텍스트편집기)를 실행시키셔서

[code:24qf5i8f]
[Desktop Entry]
Encoding=UTF-8
Name=자판바꾸기
Comment=2벌식/3벌식 전환
Exec=스크립트의 경로
Icon=아이콘이미지파일경로(없어도됩니다.)
Terminal=false
Type=Application
StartupNotify=true
[/code:24qf5i8f]를 작성해주시고 바탕화면에 example.desktop이란 형태로 저장하시면됩니다.
.desktop파일은 유일하게(아마)리눅스에서 확장자를 숨기는파일입니다.
확장자가 보이지 않아도 제대로 된 것이므로 걱정하지 않으셔도 됩니다.
그리고 .desktop파일은 실행여부를 묻지않습니다.

cgh48님 고맙습니다. 말씀해주신 대로 파일을 만들어서 .desktop 확장자로 저장을 하니 드래그&드롭만으로도 Unity에 아이콘이 추가되었습니다.

그런데 원본 파일의 .desktop 확장자가 자동으로 사라지지도 않고, 원본 파일을 실행하면

[b:mvuck4l0]신뢰할 수 없는 프로그램 실행 아이콘[/b:mvuck4l0]
"자판바꾸기.desktop" 프로그램 실행 아이콘은 신뢰한다고 표시하지 않았습니다. 출처를 모른다면 이 아이콘을 실행했을 때 위험할 수 있습니다.

라는 메시지가 뜨면서 실행이 되지 않습니다. 그래도 일단 Unity에 추가된 아이콘을 누르면 자판 변환이 이뤄지긴 하는데, Unity에서도 아이콘을 누르면 10초 정도 계속 깜빡이는 문제가 있습니다.

원본 파일 에러메시지와 유니티에 추가된 아이콘의 깜빡거림 현상에 대한 해결 방법이 궁금합니다. 우분투 11.04입니다.

현재 구 그놈을 사용중이라 유니티에 적용되는 지는 모르겠지만, 두분의 답변을 조금 수정 해보죠.

[code:yar0i5vy]
#!/bin/sh
KBD_TYPE=2
if [ -z "$1" ]; then
KBD_TYPE=$(gconftool-2 -g "/desktop/ibus/engine/Hangul/HangulKeyboard")
if [ "$KBD_TYPE" != "2" ]; then
KBD_TYPE=2
else
KBD_TYPE="3f"
fi
elif [ "$1" = "3" ]; then
KBD_TYPE="3f"
fi
gconftool-2 --set "/desktop/ibus/engine/Hangul/HangulKeyboard" --type string "$KBD_TYPE"
zenity --info --text="Now, $KBD_TYPE"
[/code:yar0i5vy]

마지막에 zenity 로 알림창을 띄우는 명령어를 하나 넣었습니다. 파일은 아무곳에나 저장하시고 실행 권한을 주세요.

[code:yar0i5vy]
[Desktop Entry]
Name=자판바꾸기
Type=Application
Comment=2벌식/3벌식 전환
Exec=위에서 만든 쉘스크립트의 경로
Icon=보이고 싶은 아이콘이 있으면 지정합니다.
Categories=GTK;Utility
[/code:yar0i5vy]

편집기로 이렇게 작성한 뒤, 자신의 홈 디렉토리 아래 .local/share/applications 에 kchanger.desktop 이라는 이름으로 저장합니다.

[code:yar0i5vy]mkdir -p ~/.local/share/applications[/code:yar0i5vy]

그리고 구 그놈에서는 Ctrl+R을 누르면 메뉴 아이템을 refresh 하는데 유니티는 어떻게 되는지 모르겠네요.(구 그놈에서는 카테고리가 유틸리티이므로 보조프로그램 아래에 아이콘이 생성됩니다.)
안되면 로그아웃/로그인 하시면 실행 프로그램으로 등록이 될 듯합니다.

[quote="swwnyk":283dx54u]신뢰할 수 없는 프로그램 실행 아이콘[/quote:283dx54u]이건 제가 KDE쓸 때 보았던건데 그놈에서도 보이나 보군요?

KDE에서 실행시킬때는 팝업이 하나뜨면서 신뢰여부 표시를 하겠냐고 물어오던데 그놈은 아닌가 보네요.

실행시까지 10초가 걸리는 문제는 잘 모르겠습니다. :?

geepurin님, cgh48님 답변 감사합니다.

geepurin님 지시대로 했는데, .desktop 원본 파일을 실행했을 때 에러메시지가 뜨는 것은 마찬가지였습니다. 원래 .desktop 파일 자체가 원본 파일은 직접 실행할 수 없는 게 아닌가 싶습니다.

하지만 알림창을 뜨게 만들었기 때문인지, 유니티에서 실행했을 때 실행은 되지만 아이콘이 10초간 깜빡이던 현상은 사라졌습니다. 아무래도 유니티에서 아이콘을 클릭했을 때 프로그램 창 같은 게 떠야 깜빡임이 사라지는 것 같습니다.

그리고 알려주신 경로에 파일을 복사하고 로그아웃/로그인을 하니 유니티 보조프로그램 목록에도 자판 바꾸기 아이콘이 등록되었고, 현재는 유니티에 등록된 아이콘을 클릭해서 자판 변환을 하는 상태입니다.

답변 주신 모든 분들 덕분에 제가 원하던 아이콘 클릭으로 두벌식-세벌식 자판을 변환하는 기능을 사용할 수 있게 됐습니다. 고맙습니다.

그런데 여기서 두 가지 기능이 추가됐으면 하는 바람입니다.

첫 째는, 현재 자판 변환 아이콘을 클릭하면 알림창에 Now, 2와 Now, 3f라는 메시지가 뜨는데, 저 메시지를 두벌식입니다., 세벌식 최종입니다.라는 문장으로 바꿀 수 있으면 좋겠습니다. 아마도 알려주신 코드에 '2’와 '3f’를 '두벌식’과 '세벌식 최종’으로 치환하는 구문만 추가하면 될 것 같은데 프로그래밍을 잘 몰라서 부탁드려봅니다.

둘 째는, 현재 뜨는 알림창은 매 번 확인 버튼을 눌러줘야 하는데, 가능할 지 모르겠지만 알림창을 저런 확인 버튼 없이 1~2초 후에 자동으로 닫히는 창으로 바꿀 수 있으면 좋겠습니다. 윈도우에서 사용하던 세벌식 파워업 프로그램이 저렇게 자동으로 창이 닫혀 편리하게 사용했던 기억이 있어서 부탁드려봅니다.

geepurin 님 코드에서 조금 추가하자면…요렇게…

[code:1b9ego7t]
#!/bin/bash
KBD_TYPE=2
KBD_String=""
if [ -z "$1" ]; then
KBD_TYPE=$(gconftool-2 -g "/desktop/ibus/engine/Hangul/HangulKeyboard")
if [ "$KBD_TYPE" != "2" ]; then
KBD_TYPE=2
else
KBD_TYPE="3f"
fi
elif [ "$1" = "3" ]; then
KBD_TYPE="3f"
fi
KBD_String=[ $KBD_TYPE = "3f" ] && echo "세벌입니다" || echo "두벌입니다"
gconftool-2 --set "/desktop/ibus/engine/Hangul/HangulKeyboard" --type string "$KBD_TYPE"
zenity --info --text="현재, $KBD_String"
[/code:1b9ego7t]

테스트는 못 해봤지만 아마 될것으로 압니다.

doodoo님 고맙습니다. 알려주신 코드를 방금 적용해보니 잘 됩니다.
메시지만 '세벌식 최종 자판입니다.'와 '두벌식 자판입니다.'로 약간만 바꿔봤는데 잘 됩니다.
정말 고맙습니다. 많은 분들의 도움 덕분에 제가 원하던 기능이 지금까지 훌륭하게 구현됐습니다.

마지막으로 여기에 알림창이 떴다가 자동으로 사라지는 기능만 있으면 완벽할 것 같습니다.
현재의 알림창에서 확인 버튼이 사라지고 자동으로 창이 닫히기만 해도 좋고
부팅했을 때 뜨는 인터넷 연결 알림창처럼 나오면 더 좋을 것 같습니다.
마지막으로 부탁 드려봅니다.

구글을 뒤져 알림창 띄우는 방법을 알아냈습니다. notify-send를 사용하면 됩니다.

터미널에서 아래 명령어로 notify-send 설치를 하고,
sudo apt-get install libnotify-bin

zentiy 명령어 대신 아래 명령어을 사용하면 됩니다.
notify-send "$KBD_String 자판입니다."

단점은 유니티 실행기의 아이콘이 10초간 깜빡거립니다.
아이콘을 클릭했을 때 zenity 창 같은 어떤 창이 떠야 깜빡임이 멈추는 것 같습니다.