use strict; use Tk; use Tk::Xlib; my $desktop_nr = shift; !defined $desktop_nr and die; my $mw = new MainWindow; $mw->withdraw; sub _root_property { my($prop) = @_; my(undef, @vals) = eval { $mw->property("get", "_NET_" . uc($prop), "root"); }; warn $@ if $@; @vals; } for my $prop (qw(number_of_desktops current_desktop)) { no strict 'refs'; *{$prop} = sub { my($val) = _root_property($prop); $val; }; } sub desktop_names { my($names) = eval { $mw->property("get", "_NET_DESKTOP_NAMES", "root"); }; warn $@ if $@; split /\0/, $names; } print "Desktops: " . number_of_desktops() . "\n"; print "Names: " . join(" | ", desktop_names()) . "\n"; print "Active: " . current_desktop() . "\n"; my $root = $mw->Display->RootWindow; # Hier scheitert es: $mw->SendClientMessage('_NET_CURRENT_DESKTOP', $$root, 32, pack('LLxxxxxxxxxxxx',$desktop_nr,time())); print "Active now: " . current_desktop() . "\n"; __END__