首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用wmctrl和xdotool的Bash if语句

使用wmctrl和xdotool的Bash if语句
EN

Stack Overflow用户
提问于 2016-12-04 01:17:55
回答 1查看 365关注 0票数 0

我想要做的是:

  • 创建一个打开的活动窗口数组
  • 使用wmctrl和xdotool的组合
  • 如果窗口焦点发生变化,则将该窗口添加到数组的顶部。
  • 然后删除数组中位于>=1位置的重复窗口。

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

  • fid =焦点窗口id
  • appArray在数组中包含wmctrl窗口id。
代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2016-12-04 02:22:57

一种方法是将数组中的每个窗口向下移动一个位置,直到找到目标为止。

代码语言:javascript
复制
target="$(printf '0x0%x' "$fid")"
prev="$target"
# Loop over array indices
for i in "${!appArray[@]}"; do
    curr="${appArray[$i]}"
    appArray[$i]="$prev"
    prev="$curr"
    if [ "$curr" = "$target" ]; then
        break
    fi
done

另一种方法是循环索引以查找目标的索引,并使用该索引更新数组。

代码语言:javascript
复制
target="$(printf '0x0%x' "$fid")"
for i in "${!appArray[@]}"; do
    if [ "${appArray[$i]}" = "$target" ]; then
        unset appArray[$i]
        break
    fi
done
appArray=("$target" "${appArray[@]}")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40954369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档