Hallo zusammen, ich würde gerne ein Skript schreiben, welches ein Konsole-Fenster startet (also nicht xterm oder sowas, sondern "die" Konsole), darin ein paar Tabs öffnet, diese benennt, und dann auf jedem Tab einen bestimmten Befehl wie zB top ausführt. Eine man-Page gibts ja nicht, und aus konsole --help werde ich nicht schlau genug. Hat jemand Tips für mich, ob und ggf. wie das geht? Danke+Gruß. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Mon 24 Aug 2009, Andre Tann wrote:
ich würde gerne ein Skript schreiben, welches ein Konsole-Fenster startet (also nicht xterm oder sowas, sondern "die" Konsole), darin ein paar Tabs öffnet, diese benennt, und dann auf jedem Tab einen bestimmten Befehl wie zB top ausführt. Eine man-Page gibts ja nicht, und aus konsole --help werde ich nicht schlau genug. Hat jemand Tips für mich, ob und ggf. wie das geht?
Keine Ahnung, ob das auch für KDE4 tut, das hier geht aber in KDE3. Also, das Konsolenprogramm heißt "konsole" (/opt/kde3/bin/konsole). Dann kannst Du mit dcop bzw. kdcop jedes KDE Programm steuern. Kdcop eignet sich zum manuellen Testen recht gut. Beispiel: #!/bin/bash konsole& KID="konsole-$!" usleep 100000 # warten bis sich das Ding initialisiert hat # Umbenennen der aktuellen Session in "huhu" dcop $KID session-1 renameSession huhu # erzeuge neue Session und benenne sie "blabla" SESS="$(dcop $KID konsole newSession)" dcop $KID $SESS renameSession blabla usleep 100000 # wieder warten SPID="$(dcop $KID $SESS sessionPID)" # Achtung, der top läuft so in dem Fenster parallel zur Bash # Wenn Du in dem Fenster irgendwas eingibst, landet das in # der Shell, nicht im top. top >>/proc/$SPID/fd/1 2>&1 </proc/$SPID/fd/0& # Warte 5 Minuten und hau das Ganze tot. sleep 300 dcop $KID 'MainApplication-Interface' 'quit' Torsten -- Need professional mod_perl support? Just hire me: torsten.foertsch@gmx.net -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Mon 24 Aug 2009, Torsten Foertsch wrote:
Beispiel:
etwas besseres Beispiel: #!/bin/bash # konsole mit --script starten, um die feedSession Funktion # zu aktivieren. konsole --script& KID="konsole-$!" usleep 100000 SESS1=session-1 dcop $KID $SESS1 renameSession huhu SESS2="$(dcop $KID konsole newSession)" dcop $KID $SESS2 renameSession blabla usleep 100000 # "ls -l /tmp\n" an die Bash in Session huhu schicke. # Man beachte, daß der String erst auf der nächsten Zeile # zu Ende ist. Damit enthält er auch den Zeilenumbruch. dcop $KID $SESS1 feedSession 'ls -l /tmp ' # "top\n" an Session blabla schicken. dcop $KID $SESS2 feedSession 'top ' # Nun schalten wir zwischen den beiden Sessions immer hin und her. # Die Schleife wird als separater Prozeß im Hintergrund gestartet. while dcop $KID konsole activateSession $SESS1 && sleep 1 && dcop $KID konsole activateSession $SESS2 && sleep 1; do :; done & # Das Hauptprogramm wartet 30 Sekunden und beendet dann die Konsole. # Damit tritt beim nächsten Umschalten der Session in dem Nebenprozeß # ein Fehler auf und er beendet sich auch. sleep 30 dcop $KID 'MainApplication-Interface' 'quit' Torsten -- Need professional mod_perl support? Just hire me: torsten.foertsch@gmx.net -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Servus Torsten, Torsten Foertsch, Montag 24 August 2009:
dcop $KID $SESS1 renameSession huhu SESS2="$(dcop $KID konsole newSession)"
Tja, ich sehe, da muß ich mich wohl mal vermehrt mit DCOP auseinandersetzen. Ich seh zwar, daß Dein Skript funktioniert, aber die Funktion im einzelnen... liegt noch im Dunkeln. Danke auf jeden Fall für die Anstöße! Gruß. Andy -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tue 25 Aug 2009, Andre Tann wrote:
Torsten Foertsch, Montag 24 August 2009:
dcop $KID $SESS1 renameSession huhu SESS2="$(dcop $KID konsole newSession)"
Tja, ich sehe, da muß ich mich wohl mal vermehrt mit DCOP auseinandersetzen. Ich seh zwar, daß Dein Skript funktioniert, aber die Funktion im einzelnen... liegt noch im Dunkeln.
Ehrlich gesagt, ist das alles auch nur das Resultat von etwas Probieren. Ich wußte, daß es theoretisch mit dcop gehen könnte und daß es kdcop gibt. Das war alles. Der Rest war Funktionsnamen Lesen (wird in kdcop angezeigt) und Raten (fand das Problem interessant). Zwischenzeitlich hatte ich schon gedacht, den Input an die Bash müsse man direkt über X11-Events erzeugen, weil ich absolut keine Funktion dafür fand. Das wäre auch gegangen, denn "dcop konsole-4219 konsole-mainwindow\#1 getWinID" liefert die X11 ID des Shell-Fensters, ist aber um einiges haariger. Dann fand ich aber die --script Option, die ein paar mehr ansprechbare Funktionen offenbarte. Gerade habe ich gefunden, daß das Handbuch zur Konsole (menubar => Help => Konsole Handbook) durchaus gute Hinweise auch zum Scripten enthält. Dort gibt es auch einen Link zum DCOP-Buch mit Beispielen zur Konsole. Also, viel Spaß beim gezielten Raten! Torsten -- Need professional mod_perl support? Just hire me: torsten.foertsch@gmx.net -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, wenn Du KDE4 benutzt solltest Du Dich lieber mit D-Bus auseinandersetzen. Aus der Wikipedia: "D-Bus, a message bus system standardized by freedesktop.org, was heavily influenced by the DCOP system and replaces DCOP in KDE 4." MfG Marco
participants (3)
-
Andre Tann
-
Marco Roeben
-
Torsten Foertsch