dmenu와 wmctrl로, 선택적 인터페이스인 윈도우 전환을 실현했다

동기



지금 유행의 "선택적 인터페이스".

처음 peco를 건드렸을 때는 매우 감동했습니다.

커맨드 라인의 이력을.

또, 내가 메인으로 사용하고 있는 Emacs에는, peco 라고 하는 플러그인이 있어, 현재 열려 있는 파일, 최근 열린 파일등을 일람할 수 있습니다.
최근에는 Helm 없이는 코딩할 수 없습니다.

Vim에서도 비슷한 일을하는 helm-do-ag.el라는 플러그인이 있습니다.

이와 같은 "목록 표시"=> "좁히고 선택"이라는 인터페이스에서,
브라우저의 탭 조작을 실현할 수 없을까 생각한 것이 일의 시작이었습니다.

시도한 것



비슷한 일을 하는 Google 크롬의 확장도 있었습니다만, 곧 사용하기 어려웠기 때문에 멈췄습니다.

그래서 리눅스의 윈도우 전환을 통째로 선택적으로 해 버리는 해결책을 생각해 왔습니다.

성공 이미지



이런 식으로 창 제목을 좁히고 선택할 수 있습니다.



방법



사전에 unitedmenu를 설치합니다. 아치 리눅스라면
sudo pacman -S dmenu wmctrl

입니다.

설치가 완료되면 아래의 쉘 스크립트를 경로가 있는 곳에 놓습니다.

select_window
#!/bin/bash

target=`wmctrl -l | cut -d ' ' -f 5- | dmenu -ib -l 30`

if [[ "$target" =~ ^$ ]]; then
   exit 1
else
    wmctrl -a "$target"
fi
wmctrl 의 움직임으로서는,
  • 표준 입력 수신
  • 사용자가 한 줄을 좁힐 수 있도록
  • 선택한 행을 표준 출력으로 출력

  • 라는 것을 하고 있습니다. 심플하기 때문에 사용법에 따라 여러가지 수 있습니다.

    나머지는 터미널 등에서 dmenu 명령을 두드리는 것뿐입니다.

    옵션


    select_window 와 같이 사용하기 위해서, 아래와 같이 키보드 단축키를 설정하고 있습니다.

    나는 Alt-Tab라는 창 관리자를 사용하고 있기 때문에 그 설정 예입니다.

    ~/.config/openbox/rc.xml
      <keyboard>
        <keybind key="W-b">
          <action name="Execute">
            <command>select_window</command>
          </action>
        </keybind>
      </keyboard>
    

    이렇게 하면 Openbox 에서 Super + b 명령이 실행됩니다.
    select_window 로 발동하고 싶다. 할 수 있을까.

    추가



    이것은 이것으로 편리하지만, 신흥 브라우저. 환승할까.

    좋은 웹페이지 즐겨찾기