+++ /dev/null
-#!/usr/bin/perl -w
-use strict (qw(vars));
-
-use IO::File;
-
-our @pipes;
-
-sub reap_pipe () {
- my ($child, $pipe) = @{ shift @pipes };
- { local ($/) = undef; $_= <$pipe>; }
- if (m/^WM_NAME: +not found/) {
- } elsif (m/^WM_NAME\(STRING\) = $/) {
- } elsif (m/^WM_NAME\(STRING\) = \"(.*)\"$/) {
- print "$child $1\n" or die $!;
- } else {
- die "$child $_ ?";
- }
- $!=0; $pipe->close(); $? and die "$? $! ?";
-}
-
-open WI, "LC_ALL=C xwininfo -root -children |" or die $!;
-while (<WI>) {
- next unless m/^\s+\d+ children:/..0;
- next unless m/^\s+(0x[0-9a-f]+) /;
- my $child= $1;
-
- my $pipe= new IO::File "LC_ALL=C xprop -id $child WM_NAME |" or die $!;
- push @pipes, [ $child, $pipe ];
-
- while (@pipes > 40) { reap_pipe(); }
-}
-$!=0; close WI; $? and die "$? $! ?";
-
-while (@pipes) { reap_pipe(); }
-
-close STDOUT or die $!;