linux-l: Für alle larswm-Fans...

Florian Cramer paragram at gmx.net
Di Apr 17 18:12:25 CEST 2001


Am Tue, 17.Apr.2001 um 15:34:01 +0200 schrieb Alexander Lehmann:
> xprop


Vielen Dank! Ich habe jetzt ein kleines Perl-Script gebaut, das mit
Hilfe von xprop eine angeklickte X11-Applikation in die "dotile"-Klasse
von .larswmrc schreibt (sprich: eine X11-Applikation kachelbar macht).
Hier ist der Code:


#!/usr/bin/perl

$tempfile = "/tmp/getxclass_temp.txt";

print "Click on X application to resolve:\n";
system ("xprop > $tempfile");
open (OUTPUT, "<$tempfile") || die ("no output\n");
while (<OUTPUT>) {
	if (/^WM_CLASS/) {
		s/^[^"]*"([^"]+)"[^"]*"([^"]+)/\1\2/;
		$classid = "$2~$1"; 
		print "$classid\n";
		}
	}
close(OUTPUT);
system ("rm $tempfile");

print "Append to larswm dotile class in .larswmrc?\n";
if (<STDIN> =~ /^[yj]/i) {
	open (LARSWMRC_OLD, "<.larswmrc") || die ("couldn't find .larswmrc\n");
	$tempfile = "/tmp/larswmrc-new";
	open (LARSWMRC_NEW, ">$tempfile") || die ("couldn't write temp file\n");
	while (<LARSWMRC_OLD>) {
		if (/^[\s]*larswm\.dotileclass/) {
			$dotile_trigger = 1;
			$dotile_count = $_; chop $dotile_count; $dotile_count =~ s/^[\s]*larswm\.dotileclass\.([0-9]+).*/\1/;
			$dotile_classid = $_; chop $dotile_classid; $dotile_classid =~ s/^[^:]+:[\s]+(.*)/\1/;
			push @classids, $dotile_classid;
		}
		else {
			if ($dotile_trigger == 1 && $dotile_count < 63) {
				foreach $x (@classids) {
					if ($x eq $classid) {
						system ("rm $tempfile");
						die ("This application is already registered in the larswm 'dotile' class.\n")}
					}
				$dotile_count++;
				print LARSWMRC_NEW "larswm.dotileclass.$dotile_count: $classid\n";
				}
			$dotile_trigger = 0;
		}
		print LARSWMRC_NEW $_;
	}
system ("cp ~/.larswmrc ~/.larswmrc.bak");
system ("mv $tempfile ~/.larswmrc");
}

# eof



Mehr Informationen über die Mailingliste linux-l