← Back to team overview

sslug-teknik team mailing list archive

kde dcop tip

 

Hejsa

Hvis du er KDE bruger og er som mig har det muligvis foresvævet dig at 
der er noget der hedder dcop, som kan bruges til forskellige ting. Igår 
tog jeg mig endelig sammen til at lave noget nyttigt med det. Her er to 
scripts, der sammen kan åbne konsole'er med forskelligt navngivne sessions 
i.

Det er måske gammel hat for nogen, men så kan de jo bruge lejligheden til 
at give flere fede eksempler på ting man kan lave i dcop...

script 1 er et bash shell script, der spawner en konsole og kalder et perl 
script for at sætte de forskellige sessions. Det er selvklart lidt tumpet 
men der er nogen ting jeg kan i perl, nogen ting i bash, og jeg gad ikke 
lige gøre mig umage:

script 1: konsole-session
-----------------------------
#!/bin/bash

# Script to set up a konsole session.
# Checks for a parameter, than spawns a konsole, and pass the ps
# of the konsole to a perl script, together with the config name

if test "x$1" == "x" ; then
  echo "Usage: $0 <configuration>"
  exit -1
fi

konsole &

konsole-session.pl $! $1
-----------------------------

Script 2, konsole-session.pl
-----------------------------
#!/usr/bin/perl -w

# Script to manipulate a "clean" konsole to contain a number of sessions
# Place to locate the configs
$configs = "/home/madsdyd/Bin/System/";

$konsole       = shift(@ARGV);
$configuration = shift(@ARGV);

if (!defined $configuration || "" eq $configuration) {
    print STDERR "Usage $0 <konsole-id> <configuration>\n";
    exit -1;
}

$inputfile = $configs.$configuration;

open(INPUT, "<$inputfile") || die "Unable to open $inputfile";

# Make sure that the shell is ready
sleep(3);

$count = 1;

while(<INPUT>) {
    if (m/^\#/) {
        next;
    }
    if (m/^\s*$/) {
        next;
    }
    # Create session, expect for the first time
    if (1 != $count) {
        `dcop konsole-$konsole konsole newSession`;
    }
    # Rename session
    $session = $_;
    chomp($session);
    `dcop konsole-$konsole session-$count renameSession "$session"`;
    $count++;
}

# Make sure we are in the first window
`dcop konsole-$konsole konsole nextSession`;
-----------------------------

Og, en konfigurationsfil kan f.eks. se sådan ud:

sslugbog:
-----------------------------
all
signatur
applikationer
doc
-----------------------------

hvis ovenstående fil er gemt i /home/madsdyd/Bin/System/sslugbog og  man 
så kører "konsole-session sslugbog", så får man (sørme) en ny konsole med 
4 sessions i der hedder det der står i filen.

Smart ikke?! (Nu er der sikkert nogen der kan noget der er vildt meget 
smartere, men det ville jo bare være fedt!)

Mads

-- 
Mads Bondo Dydensborg.                               madsdyd@xxxxxxxxxxxx
What I have done is to show that it is possible for the way the universe
began to be determined by the laws of science. In that case, it would not be
necessary to appeal to God to decide on how the universe began. This doesn't
prove that there is no God, only that God is not necessary.
                       - Stephen W. Hawking (Der Spiegel, 1989)