Список всех окон можно получить с помощью утилиты xwininfo (xwininfo -tree -root), текущее активное — сначала идентификатор через
xprop -root
Номер окна будет в самой первой строке такого вида:
_NET_ACTIVE_WINDOW(WINDOW): window id # 0x240000
Затем получить данные о самом окне:
xprop -id 0x2400004
Название приложения: _OB_APP_TITLE(UTF8_STRING)
Заголовок окна: _NET_WM_VISIBLE_NAME(UTF8_STRING) = "xxxxpro@ASUS-BASE: ~"
Соответственно, остается только написать скрипт на Perl (а можно и на Bash попробовать), который парсит выдачу и сохраняет необходимые данные в лог или базу.
Если очень хочется писать не скрипты, а полноценное C-приложение, то советую для начала изучить
этот код.