Gtk не имеет API для этого. Вы получаете только объекты GtkWindow для окон, которые вы создаете сами. Вы должны делать это на более низком уровне и использовать xlib напрямую. Сначала вы должны получить объект Display для вашего дисплея (в основном это объект, представляющий соединение с вашим Xserver, и он необходим, потому что Xclient может показывать окна на нескольких Xserver одновременно). Используйте gdk_x11_get_default_xdisplay()
, чтобы получить экран по умолчанию, если у вас нет другого представления о том, как получить определенный экран. Тогда вы получите корневое окно с DefaultRootWindow()
. Чтобы получить список дочерних окон, используйте XQueryTree()
. И чтобы получить название окна для сравнения используйте XFetchName()
. Обратите внимание, что окна в контексте X не идентичны тому, что воспринимается как окна. Кадры оконного менеджера - это окна (иногда с несколькими уровнями), содержащие фактические окна приложения как дочерние, поэтому XQueryTree()
, возможно, придется использовать повторно.
Вас также может заинтересовать libwnck , который может немного упростить это.