Não há definição formal de janela pertencente ao gerenciador de janelas ou "aberto por conta própria". Tecnicamente, a função de gerenciador de janelas não requer nenhuma janela: são outras partes do ambiente da área de trabalho (normalmente chamadas de widgets) que possuem janelas. Não há nenhum atributo em uma janela ou em um aplicativo que diz “isso faz parte do ambiente de área de trabalho”.
Você pode executar wmctrl -lx
e identificar as janelas das quais você não se importa com a turma. Eu não verifiquei quais classes os vários ambientes de desktop comuns usam, preencha a lista conforme desejado.
wmctrl -lx | awk '$3 !~ /^(Unity-.*|Kwin|Boringstuff)$/'
Alternativamente, talvez a detecção de janelas não aderentes caiba na sua conta. Janelas pegajosas são aquelas exibidas em todos os espaços de trabalho. Não sei se isso funciona com todos os gerenciadores de janelas.
for w in $(wmctrl -l | awk '{print $1}'); do
if ! xprop -id $w _NET_WM_STATE | grep -q _NET_WM_STATE_STICKY; then
wmctrl -l -i $w
fi
done