Betriebssystemspezifische Kommandos

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

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...
-
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ß
lunar

@graphicsH: Lies Dokumentation und teste das Programm selbst auf den entsprechenden Betriebssystemen. Mit Frage-Antwort-Spielchen wirst Du nicht weit kommen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und nicht jedes Problem hat eine 1:1 Umsetzung in einem anderen Betriebssystem.

Zudem: ``os.system`` durch ``subprocess`` ersetzen bitte.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

@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?
-
lunar

@graphicsH: Dann installiere Dir die entsprechenden Systeme, lese deren Dokumentation und passe das Programm darauf an.
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

@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?
-
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.
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

@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...
-
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Haha, das wird nix …

Neustart: `reboot` `init 6`
Ausschalten: `halt` `init 0`
Mit root-Rechten (je nach System)
the more they change the more they stay the same
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

thx Dav1d,aber welches OS ist dass?
-
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Archlinux, ich weiß nicht in wie weit das von Distribution zu Distribution unterscheidet …
the more they change the more they stay the same
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

Ok,thx
-
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

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.
Zuletzt geändert von jerch am Montag 14. November 2011, 19:11, insgesamt 1-mal geändert.
BlackJack

Neustart: SYS64738, System: C64 :twisted:
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Du kannst noch versuchen, die Netzwerkadresse 127.0.0.1 zu hacken ;)
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ß
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

Neustart: SYS64738, System: C64 :twisted:
heute ganz ein lustiger oda was?
-
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

@problembär
problembär hat geschrieben:Neustart: RANDOMIZE USR 0
Linux ist nicht Windows
Hab ich bereits gemerkt.
thx für den code
-
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten