如何查明 X 窗口是否已映射(可见)?

如何查明 X 窗口是否已映射(可见)?

我使用 xdotool 来映射/取消映射一组类似停靠窗口的窗口。现在,xdotool 不附带切换(映射/取消映射)命令,也不附带同时对多个窗口执行相同操作。所以我尝试使用脚本执行棒状切换。我需要一种方法来查明最近的操作是映射还是取消映射。

答案1

在某种程度上,文件可以被认为是存储全局变量的简单方法,全局变量因此在任何地方都可见。因此状态(映射/未映射)可以作为字符串存储在文件中。

这不是最优雅的事情,但这个脚本(名为 xctl)现在应该可以做到。

#!/usr/bin/env zsh

# This file serves as a global variable value holder showing if the windows are mapped or not.
state=/tmp/state

for process in ${@:1}; do
    case $1 in
        (show) xdotool search --class $process windowmap %@ windowraise %@;;
        (hide) xdotool search --onlyvisible --class $process windowunmap %@;;
        (*) break;;
    esac
done

[[ $1 == toggle ]] && {
    [[ -f $state ]] && [[ `cat $state` == show ]] && xctl hide ${@:1} || xctl show ${@:1}
} || echo $1 > $state

要切换一组窗口,请运行xctl toggle window1 window2 ....

该脚本必须驻留在 shell 的路径中。

相关内容