alt+tab 누르기 피곤할 때. X11에서 xdotool을 이용한 빠른 창 전환.

창을 여러 개 띄워놓은 상태에서 원하는 창을 alt+tab으로 찾아가기란 여간 불편한 일이 아니다.
셸 두 개, 브라우저 두 개, 노트 하나, 폴더 탐색기, 에디터 하나.... 이런 식으로 창을 많이 띄울 수록 더 귀찮다.
그중에 가장 귀찮은 일은 듀얼모니터를 사용하며 브라우저를를 모니터 마다 하나씩 띄워놓고, 하나는 개발용. 하나는 검색용으로 쓸 때다.
코딩하다가 빠르게 검색용 브라우저를 키고 싶은데 alt+tab을 열심히 눌러 찾아간 브라우저가 개발용이라면? 다시 여러 번 alt+tab을 눌러야 한다.
귀찮다.
에디터와 검색용 브라우저 둘 사이만 은밀하게 오가는 단축키가 있으면 좋겠다.
그래서 만나게 된 xdotool(http://www.semicomplete.com/projects/xdotool/).
창을 열고 키 입력까지 자동으로 날릴 수도 있을 정도로 X11윈도우를 주무르는 자동화 도구다.
xdotool은 다양한 리눅스 배포판을 지원하고 맥에서도 맥포트(http://www.macports.org/)로 설치된다.
자 그럼 xdotool을 이용한 창 전환 방법을 알아보자.

빠른 창 전환 단축키 등록 순서.

  1. 셸 스크립트를 원하는 곳에 넣어 둔다.
  2. 스크립트 파일에 실행권한(755)을 준다.
  3. 단축키 등록란으로 가서 셸 스크립트를 넣고 원하는 단축키를 넣는다.
    (예: 에디터/웹 브라우저 창 전환은 super+1, 개발자 도구 창 보여주기는 super+2)

창 전환용 셸 스크립트


창 전환 셸 스크립트 소스 링크

#!/bin/bash
# X11 quick window activation between web browser and editor.
# This script requires (http://www.semicomplete.com/projects/xdotool/)
# Toggling between web browser and editor, just put 'toggle_window.sh' into your keyboard shortcut.
# When you want to show up Development tool window, put 'toggle_window.sh devtool' into your keyboard shortcut.
# Improvements are welcome
# Public Domain, JoongSeob Vito Kim, 2015

activate_name=$(xdotool getactivewindow)
browser_name=""
# This example use 'atom' editor but you can use any kind of editor(vim,emacs,sublimetext...), IDE(Eclipse,Jetbrain...) or others.
editor_name=$(xdotool search --name 'atom' | tail -1)
editor_name_length=${#editor_name}
if (( $editor_name_length == 0 )); then
editor_name=$(xdotool search --name 'focuswriter' | tail -1)
fi
# This example use 'chrome' browser but you can use any kind of browser.
dev_tool_name=$(xdotool search --name 'Developer Tools' | tail -1)
browser_names=$(xdotool search --name 'chrome')
if [[ $1 == "devtool" ]]
then
xdotool windowactivate $dev_tool_name
else
while read line; do
# Please check your browser window's geometry and replace 1920x1080 to yours.
browser_name_temp=$(xdotool getwindowgeometry $line | grep 1920x1080)
length=${#browser_name_temp}
if (( $length > 0 )); then
browser_name=$line
fi
done <<<"$browser_names" echo "browser name = $browser_name" if test "$activate_name" == "$browser_name"; then echo $editor_name xdotool windowactivate $editor_name else echo $browser_name xdotool windowactivate $browser_name fi fi

이 스크립트는 2가지 기능을 한다.
첫째 웹 브라우저와 에디터 사이를 빠르게 오가며 보여주는 역할이고 둘째, 크롬 개발자 도구를 보여주는 역할이다.
이 스크립트를 자신의 환경에 맞게 쓰려면 크게 4부분을 고치면 되겠다.

  1. editor_name에 atom이라고 쓰인 부분을 주로 쓰는 에디터로 바꾼다.
  2. editor_name에 focuswriter라고 쓰인 부분을 보조 에디터로 바꾼다.
  3. browser_names에서 chrome으로 쓰인 부분을 주로 쓰는 웹 브라우저로 바꾼다.
  4. browser_name_temp에서 1920x1080부분을 자신의 브라우저에 맞게 변경한다.
    (xdotool getwindowgeometry <window-id> 를 쓰면 자신의 브라우저 창 설정이 보인다.)

이 스크립트는 alt+tab을 누를 횟수를 많이 줄여준다.:D