Add findxwindow script

This commit is contained in:
2025-07-21 23:24:53 -04:00
parent 9cc7a6685c
commit ead7d8ff5f
2 changed files with 55 additions and 1 deletions
+54
View File
@@ -0,0 +1,54 @@
#! /usr/bin/bash
winNameToFind=${1}
printUsage()
{
echo "${0}: <STRING:windowNameToFind>"
exit 1
}
if [ "${winNameToFind}x" = "x" ]; then
printUsage
fi
extractAllChildIdsFrom()
{
echo $(echo "${1}" \
| grep '^[[:space:]]*0x[0-9a-zA-Z]' \
| awk '{print $1}')
return 0
}
searchOneParentByName()
{
local thisWinId=$1
local winNameToFind=$2
local thisWininfoStdout=$(xwininfo -id "${thisWinId}")
local thisWinName=$(echo "${thisWininfoStdout}" \
| grep '[Ww]indow[[:space:]]*[iI][dD]' \
| grep -oP '[0-9a-zA-Z]*[[:space:]]*\".*\"$' \
| sed 's/[0-9a-zA-Z]*[[:space:]]*//')
echo "Searching win [ID=${thisWinId}, name=\"${thisWinName}\"] and its children..."
if echo "${thisWinName}" | grep -q "${winNameToFind}"; then
echo "${thisWininfoStdout}"
# return 0
fi
local allChildrenUnparsedOutput=$(xwininfo -id "${thisWinId}" -children)
for i in $(extractAllChildIdsFrom "${allChildrenUnparsedOutput}");
do
searchOneParentByName "${i}" "${winNameToFind}"
done
return 1;
}
rootChildWindowOutput=$(xwininfo -root -children)
for i in $(extractAllChildIdsFrom "${rootChildWindowOutput}");
do
searchOneParentByName "${i}" "${winNameToFind}"
done
exit 1