"wmctrl -i -a가 일관되지 않게 동작합니다."

"wmctrl -i -a가 일관되지 않게 동작합니다."

나는 현재 열려 있는 모든 창의 목록을 표시한 다음 내가 선택한 창으로 전환하는 스크립트를 사용 dmenu하고 작성 하려고 합니다 . wmctrl다음과 같습니다.

switch_to 스크립트

이제 여기서 얻은 창 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 어딘가에 놓고 실행 가능하게 만든 다음 키를 바인딩하는 것뿐입니다.

관련 정보