나는 현재 열려 있는 모든 창의 목록을 표시한 다음 내가 선택한 창으로 전환하는 스크립트를 사용 dmenu
하고 작성 하려고 합니다 . wmctrl
다음과 같습니다.
이제 여기서 얻은 창 ID wmctrl -l
(예: 스크린샷의 두 번째 줄에 보이는 "0x00c0005c")를 사용하여 정확하게 어떤 창이 선택되었는지 확인합니다. 동일한 응용 프로그램에 속하는 2개의 창이 같은 클래스이지만 ID가 다릅니다).
유일한 문제는 wmctrl -i -a
작동할 때도 있지만 작동하지 않을 때도 있다는 것입니다. 때로는 전환되지만 잘못된 창으로 전환되는 경우도 있습니다. 그것은 매우 무작위입니다. 온라인으로 검색한 결과 유일하게 찾은 페이지는 심지어언급하다문제는이것. 그것은 말한다:
WIN이 숫자 창 ID로 작동하는 방식에 불일치가 있는 것 같습니다. 어쩌면 모든 옵션이 이를 지원하지 않거나 뭔가 이상한 일이 벌어지고 있을 수도 있습니다. 그것은 나에게 정말 잘 작동했습니다. 재시험.
누구든지 이 문제를 수정하거나 해결하는 방법을 말해 줄 수 있습니까?
wmctrl
저는 Awesome Window Manager(도움이 된다면)와 함께 최신 Arch Linux 시스템의 공식 저장소에 있는 버전 1.07-3을 사용하고 있습니다. 감사해요
답변1
오늘 만지작거린 후에는 작동했지만 마지막으로 시도했을 때 문제가 무엇인지 알 수 없었습니다. (그동안 Linux Mint로 전환했습니다. 어쩌면 문제가 어떻게든 해결되었을 수도 있습니다.)
관심 있는 사람을 위한 작업 스크립트는 다음과 같습니다.
#!/bin/sh
# source dmenu config file if it exists
if [ -f $HOME/.dmenurc ]; then
. $HOME/.dmenurc
else
DMENU='dmenu -i'
fi
# get list of all windows, and their count
wmctrl_output=$(wmctrl -lx)
win_count=$(echo "$wmctrl_output" | wc -l)
# get rid of the hostname and the number in the 2nd column
hostname=$(uname -n)
win_list=$(echo "$wmctrl_output" | \
sed -r -e 's/[^@]'$hostname'//' | \
sed -r -e 's/ [0-9][0-9]? / /')
# select a window ($target) and extract its id ($target_id)
target=$(echo "$win_list" | $DMENU -l $win_count -p "Switch to: ")
target_id=$(echo "$target" | cut -d' ' -f1)
# switch to target window
cmd="wmctrl -i -a \"$target_id\""
eval "$cmd"
그리고 내 ~/.dmenurc
:
DMENU_FONT='-*-*-medium-r-*-*-18-*-*-*-*-*-*-*'
DMENU="dmenu -i -fn $DMENU_FONT -nb #1E2320 -nf #DBDBDB -sb #3f3f3f -sf #ffffff"
여러분이 해야 할 일은 스크립트를 $PATH 어딘가에 놓고 실행 가능하게 만든 다음 키를 바인딩하는 것뿐입니다.