Seite 1 von 2

Betriebssystemspezifische Kommandos

Verfasst: Sonntag 13. November 2011, 20:39
von graphicsH
Hi Leute,
Ich arbeite derzeit an einem CLI der auf allen geläufigen Betriebssystemen (Windows,Linux,Unix,Mac OS (X),usw.) funktionieren soll.
Manche Befehle jedoch kann ich nur durch os.system ausführen (z.B. herunterfahren).Die entsprechenden Befehle unterscheiden sich
jedoch je nach Betriebssystem.Da ich aber nur Windows benütze kenne ich die entsprechenden Befehle nicht.
Daher wäre es nett wenn ihr hier mir auf meine Betriebssystemspezifische-Befehls-Fragen antworten könntet.

Hier wäre schon mal meine erste Frage:
Wie lautet der Befehl zum änder des Fenstertitels in den jeweiligen Betriebssystemen?

Windows = title NeuerName

postet bitte den Befehl + Betriebssystem...

Re: Betriebssystemspezifische Kommandos

Verfasst: Sonntag 13. November 2011, 21:14
von problembär
Wenn Du Dein Projekt nicht auf anderen Plattformen testen kannst, wäre es wohl am besten, Du beschränkst Dich erstmal auf das, was Du hast (Windows).

Unter Linux funktioniert das nämlich ganz anders. Der Fenstertitel wird durch den Windowmanager festgelegt, und davon gibt es unter Linux mehrere (KDE, Gnome, WindowMaker u.a.).
Ein Programm, daß das für einige Windowmanager relativ unabhängig von der Konsole aus machen könnte, wäre dies:

http://tomas.styblo.name/wmctrl/

Jedoch dürften das nur die wenigsten installiert haben. Ist also nicht so einfach. Dafür gibt's mehr Vielfalt als nur den einen von Microsoft vorgegebenen Desktop.

Gruß

Re: Betriebssystemspezifische Kommandos

Verfasst: Sonntag 13. November 2011, 22:38
von lunar
@graphicsH: Lies Dokumentation und teste das Programm selbst auf den entsprechenden Betriebssystemen. Mit Frage-Antwort-Spielchen wirst Du nicht weit kommen.

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 10:55
von Leonidas
Und nicht jedes Problem hat eine 1:1 Umsetzung in einem anderen Betriebssystem.

Zudem: ``os.system`` durch ``subprocess`` ersetzen bitte.

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 17:13
von graphicsH
@lunar und problembär:
Auf Windows funktioniert es bereits problemlos.Daher möchte ich es jetzt noch auf andere OS anpassen.

@problembär:
Der Fenstertitel wird durch den Windowmanager festgelegt
Gibt es da einen Windowmanager vorinstallierten den fast jeder hat?Wenn ja, wie lautet der Befehl zum ändern des Fenstertitles?

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 17:16
von lunar
@graphicsH: Dann installiere Dir die entsprechenden Systeme, lese deren Dokumentation und passe das Programm darauf an.

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 17:28
von graphicsH
@lunar:
kein Speicherplatz etc.

@all:
Aber könnte mir nicht einfach ein benützer eines anderen Betriebssystemes einen entsprechenden Befehl sagen,anstatt nun darüber zu diskutieren wie ich noch komplizierter an die informationen kommen könnte?

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 17:30
von BlackJack
@graphicsH: Es geht nicht darum dass Du komplizierter an die Information kommst, sondern dass Du überprüfen kannst dass Dein Programm überhaupt korrekt läuft. Funktionalität in ein Programm einzubauen, die man nicht ausführen und damit auch nicht testen kann, ist ziemlich sinnfrei.

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 17:35
von graphicsH
@BlackJack:
@graphicsH: Es geht nicht darum dass Du komplizierter an die Information kommst, sondern dass Du überprüfen kannst dass Dein Programm überhaupt korrekt läuft. Funktionalität in ein Programm einzubauen, die man nicht ausführen und damit auch nicht testen kann, ist ziemlich sinnfrei.
und wir sind wieder beim:
darüber zu diskutieren
Und testen kann ich,wenn ich fertig bin,bei Freunden,weil da haben manche Mac oder Linux...
Daher bitte einfach mal die Befehle schreiben...

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 18:15
von Dav1d
Haha, das wird nix …

Neustart: `reboot` `init 6`
Ausschalten: `halt` `init 0`
Mit root-Rechten (je nach System)

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 18:16
von graphicsH
thx Dav1d,aber welches OS ist dass?

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 18:48
von Dav1d
Archlinux, ich weiß nicht in wie weit das von Distribution zu Distribution unterscheidet …

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 18:53
von graphicsH
Ok,thx

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 18:58
von jerch
graphicsH hat geschrieben:Und testen kann ich,wenn ich fertig bin,bei Freunden,weil da haben manche Mac oder Linux...
Daher bitte einfach mal die Befehle schreiben...
Deine Freunde werden sich bedanken, wenn Du nach dem 5. Fehlversuch immernoch angerannt kommst...
Wenn Du systemspezifisch entwickelst, dann schaffe auch die Voraussetzungen, dass ordentlich testen zu können.

Zum "Befehl" unter Unixoiden für Fenstertitel:
Hilfts Dir was, wenn ich Dir sage, dass es eine Escape-Sequenz gibt, die von xterm eingeführt wurde und von vielen Terminalemulatoren unter X unterstützt wird? Und hier liegt nämlich die Crux - es können nicht alle Emulatoren und Du bist wieder aufs Testen angewiesen. Wir drehen uns im Kreis.

Neustart und Herunterfahren über init, shutdown und Konsorten zu machen, ist unter einer komplexen Desktop-Umgebung (KDE, Gnome,...) eher unerwünscht, da den Diensten der Stecker gezogen wird. Die Umgebungen bringen Schnittstellen mit (DBUS), die den geordneten Rückzug über logout bis hin zum Neustart (falls erlaubt) triggern können. Da sind so viele Wenn und Aber, dass das ohne Testen schief gehen muss.

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 19:09
von BlackJack
Neustart: SYS64738, System: C64 :twisted:

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 19:13
von jerch
Du kannst noch versuchen, die Netzwerkadresse 127.0.0.1 zu hacken ;)

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 19:23
von problembär
Neustart: RANDOMIZE USR 0
System: Sinclair ZX Spectrum. :D
graphicsH hat geschrieben:@problembär:
Der Fenstertitel wird durch den Windowmanager festgelegt
Gibt es da einen Windowmanager vorinstallierten den fast jeder hat?Wenn ja, wie lautet der Befehl zum ändern des Fenstertitles?
Hab' mich mal ein bißchen umgesehen. Dieses könnte funktionieren - manchmal:

Code: Alles auswählen

#!/usr/bin/env python
# coding: iso-8859-1

import subprocess

def get_active_window_id():

    pipehandler = subprocess.Popen(('xprop', '-root'),
                                   stdout = subprocess.PIPE)
    xprops = pipehandler.communicate()
    xprops = xprops[0]
    xprops = xprops.split("\n")
    for line in xprops:
        if '_NET_ACTIVE_WINDOW(WINDOW):' in line:
            id = line.split(" ")[4]
            return id
    return "Error"

def set_active_window_title(title):
    subprocess.call(("wmctrl", "-ri", get_active_window_id(), "-N", title))

set_active_window_title("Hallo")
Inspiration von hier:
http://my.opera.com/raphman/blog/show.dml/302528
http://stackoverflow.com/questions/3983 ... title-in-x

Für Gnome gibt es noch eine Lib mit Python-Bindings namen wnck, mit der man sowas auch machen können soll (KDE (genauer dort KWin) einerseits und Gnome andererseits sind wohl die größten Windowmanager und wahrscheinlich auch am weitesten verbreitet. Obwohl das unter Linux nicht eine so große Rolle spielt: Man kann nutzen, was einem gefällt, es geht nicht um möglichst großen Umsatz).

Das hier wäre für Dich vielleicht auch ganz hilfreich:

Linux ist nicht Windows

Gruß

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 20:07
von graphicsH
Neustart: SYS64738, System: C64 :twisted:
heute ganz ein lustiger oda was?

Re: Betriebssystemspezifische Kommandos

Verfasst: Montag 14. November 2011, 20:09
von graphicsH
@problembär
problembär hat geschrieben:Neustart: RANDOMIZE USR 0
Linux ist nicht Windows
Hab ich bereits gemerkt.
thx für den code

Re: Betriebssystemspezifische Kommandos

Verfasst: Dienstag 15. November 2011, 09:52
von Leonidas
graphicsH hat geschrieben:
Neustart: SYS64738, System: C64 :twisted:
heute ganz ein lustiger oda was?
Etwa so lustig wie dein Thread.

Neustart: systemctl start reboot.target, System: systemd.