Я не программировал X11 более десяти лет, так что простите, если я ошибаюсь.
Я полагаю, что вы можете регистрировать события движения мыши в своих окнах. Если вы обрабатываете такое событие, сохраняя дескриптор окна в той или иной переменной, а затем обрабатывая событие, чтобы оно не просачивалось вниз по дереву, тогда, когда вы хотите идентифицировать окно, вы можете просто запросить переменную.
Однако это будет работать только тогда, когда указатель мыши находится над окном, для которого вы зарегистрировали подходящий обработчик событий, поэтому вы не будете знать об окнах, принадлежащих другим приложениям - если только нет способа зарегистрировать события в окнах других людей. что может быть возможно.
Преимущество перед другим ответом в том, что вам не нужно проходить через все дерево. Недостатком является то, что вам нужно обрабатывать большое количество событий движения мыши, и может не работать поиск окон других людей.
Я полагаю, что могут также происходить события входа в мышь и выхода из мыши, что уменьшит объем необходимой обработки.