활성 창을 다음 상위 작업 공간으로 이동한 다음 키에 할당하는 스크립트를 작성하려고 합니다. xdotool을 사용하여 활성 창을 찾은 다음 wmctrl을 사용하여 활성 창을 나열하고 grep을 사용하여 창 목록에서 활성 창을 찾아서 어떤 작업 공간에 있는지 확인하여 1씩 늘리고 창을 다음으로 이동하려고 합니다. 해당 작업공간(존재하는 경우)
보시다시피 이 값을 ACTWIND 변수 또는 값 0x5a00004(및 줄 시작 여부에 관계없이 작은 따옴표 또는 큰 따옴표의 변형)로 검색하면 행이 발견되지 않지만 동일한 줄을 검색하면 , 설립하다. 내 스크립트에서는 변수를 사용하거나 xdotool 호출에서 변수의 위치를 바꿔 작업해야 합니다.
ACTWIND=$( printf 0x%x $(xdotool getactivewindow) )
$ echo “123 $ACTWIND 456”
123 0x5a00004 456
$ wmctrl -l
0x03600001 0 hpdv9917d Conky (hpdv9917d)
0x02800010 0 hpdv9917d YiPs Wiki (i powered) – Search – Mozilla Firefox
0x02800027 0 hpdv9917d Print all variables in a class? – Python – Stack Overflow – Mozilla Firefox
0x02800038 0 hpdv9917d (5) antiX (and MX) frugal installs (with grub entry) – YouTube – Mozilla Firefox
0x05a00004 0 hpdv9917d LXTerminal
0x02000002 0 hpdv9917d mrxvt-mini
0x02800043 0 hpdv9917d how to shift applications from workspace 1 to 2 using command – Ask Ubuntu – Mozilla Firefox
0x02600003 0 hpdv9917d *untitled – Geany
0x03200003 0 hpdv9917d antiX Control Center
0x03e00002 0 hpdv9917d alsamixer
0x01000008 0 hpdv9917d /home/bobc/Downloads/work
$ wmctrl -d
0 * DG: 1440×900 VP: 0,0 WA: 0,0 1440×875 N/A
1 – DG: 1440×900 VP: 0,0 WA: 0,0 1440×875 N/A
$ wmctrl -l | grep $ACTWIND
$ wmctrl -l | grep 0x5a00004
$ wmctrl -l | grep "0x5a00004"
$ wmctrl -l | grep '0x5a00004'
$ wmctrl -l | grep '^0x5a00004'
$ wmctrl -l | grep "^0x5a00004"
$ wmctrl -l | grep LXTerminal
0x05a00004 0 hpdv9917d LXTerminal
답변1
찾고 있는 문자열은 0x05a...
대신 이어야 합니다 0x5a...
.
변수에 할당하는 방식을 다음과 같이 변경하고 싶을 수도 있습니다.
active_window=$( printf '0x%08x' "$( xdotool getactivewindow )" )
grep
(정규식 일치 대신) 정확한 문자열 일치를 원할 경우 다음을 사용하십시오 -F
.
grep -F '0x05a00004'
하지만 이 경우에는 줄 시작 부분에 표현식을 고정하고 싶을 수도 있습니다.
grep '^0x05a00004'
또는
grep "^$active_window"
아니면 어쩌면
awk -v str="$active_window" '$1 == str'
공백으로 구분된 첫 번째 필드에 대해 정확한 문자열 일치를 수행합니다.