Thread Aktiven Desktop umschalten
(6 answers)
Opened by topeg at 2007-12-05 21:48
Hier ein kleines Script, das den aktiven Desktop wechselt.
Da ich im Netz nichts dergleichen in Perl gefunden habe, veröffentliche ich hier mal den Code: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #!/usr/bin/perl use strict; use warnings; use X11::Protocol; # Nummer des Desktops auf den man wechseln will my $desktop_nr=shift(@ARGV) || 0; # ein Paar Konstante my @const = ('AnyPropertyType', 0, -1, 0); my $x = X11::Protocol->new(); my $root=$x->root; # Anzahl der verfügbaren Desktops my $desktops=unpack('L',($x->GetProperty($root, $x->atom('_NET_NUMBER_OF_DESKTOPS'), @const))[0]); # Namen der Desktops my @desktop_names=split("\000",($x->GetProperty($root, $x->atom('_NET_DESKTOP_NAMES'), @const))[0]); # Nummer des gerade Aktiven Desktops my $desktop_now=unpack('L',($x->GetProperty($root, $x->atom('_NET_CURRENT_DESKTOP'), @const))[0]); print "Desktops: ".$desktops."\n"; print "Names: ".join(' | ',@desktop_names)."\n"; print "Active: ".$desktop_now."\n"; $desktop_nr-=$desktops while($desktop_nr>=$desktops); $desktop_nr+=$desktops while($desktop_nr<0); # Desktop wechseln # Ziehmlich schlecht Dokumentiert das ganze. # habe einen Tag gebraucht um die nötigen Informationen zusammen zu suchen... $x->SendEvent( $root, 0, $x->pack_event_mask('SubstructureNotify', 'SubstructureRedirect'), $x->pack_event( name=>'ClientMessage', format=>32, window=>$root, type=>$x->atom('_NET_CURRENT_DESKTOP'), data=>pack('LLxxxxxxxxxxxx',$desktop_nr,time()) ) ); Ich habe das nur unter Gnome und KDE getestet, aber alle DEs, die EWMH unterstützen sollten damit klar kommen. |