使用wmctrl和xdotool Bash if语句

时间:2016-12-04 01:17:56

标签: arrays bash

我正在努力实现的目标:

  • 制作一系列活动的已打开的窗口
  • 使用wmctrl&组合xdotool
  • 如果窗口焦点发生变化,那么我将该窗口添加到窗口顶部 阵列
  • 然后删除位置[> = 1]中的重复窗口 阵列。

我的问题是我似乎无法正确处理打开的wmctrl窗口id和xdotool焦点窗口之间的检查(一个是整数,一个是十六进制)。我的if语句需要工作,但是我在查找如何正确检查包含wmcrtl窗口id数据的数组的xdotool窗口数据时遇到了问题。

  • fid =焦点窗口ID

  • appArray在数组中包含wmctrl个窗口ID。

echo -e "-------Current array of active windows-----"
for i in ${appArray[@]}; do echo $i; done

while :
do
    #UPDATES CURRENT WINDOW FOCUS
    fid=$(xdotool getactivewindow)

    #CHECK IF WINDOW OF FOCUS IS AT TOP OF THE ARRAY
    if [ $appArray == $(printf 0x0%x $fid) ] ;

    #IF IT IS THEN DO NOTHING
    then
        echo -e "----current window is at top of array, and active------"

    else
    #IF IT ISNT THEN UPDATE ARRAY
        echo -e "\n------Adding new focus window to top of array------"
        appArray=($(printf 0x0%x $fid) "${appArray[@]}");

        #find location of duplicate if any
        newArray=$(echo "${appArray[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')

        appArray=("${newArray[@]}")
        #prints the array of applications
        for i in ${appArray[@]}; do echo $i; done
        echo "----------------------------------------------------"
    fi
done

0 个答案:

没有答案