ubuntuusers.de

Terminalaufruf kann nicht 1:1 ins Hauptmenü übernommen werden

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

Berlin_1946 Team-Icon

Supporter, Wikiteam

Anmeldungsdatum:
18. September 2009

Beiträge: 10423

Hallo,

bei der Überarbeitung des Wiki Unity-Startmenü bin ich auf dieses Problem gestoßen.

python /home/user/meinsuperskript.py -o super soll ins Hauptmenü eingetragen werden.

Mein Terminal Befehl:

cd /home/grpc/canasta/canasta-0.2.5 && python Canasty.py

kann so nicht ins Hauptmenü übernommen werden.

Der Befehl aus dem Wiki auf mein Programm umgesetzt lautet:

python /home/grpc/canasta/canasta-0.2.5/Canasty.py

Das ergibt diesen Fehler.

grpc@grpc-MS-7658:~$ python /home/grpc/canasta/canasta-0.2.5/Canasty.py
Traceback (most recent call last):
  File "/home/grpc/canasta/canasta-0.2.5/Canasty.py", line 132, in <module>
    if __name__ == '__main__': main()
  File "/home/grpc/canasta/canasta-0.2.5/Canasty.py", line 57, in main
    options = SetOptions()
  File "/home/grpc/canasta/canasta-0.2.5/CanastaMenus.py", line 31, in __init__
    self.back = pygame.image.load("./cards/titlescreen.gif").convert()
pygame.error: Couldn't open ./cards/titlescreen.gif

Wo liegt der Fehler ❓

Wer kann helfen ❓

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11260

Wohnort: München

Berlin 1946 schrieb:

   File "/home/grpc/canasta/canasta-0.2.5/CanastaMenus.py", line 31, in __init__
    self.back = pygame.image.load("./cards/titlescreen.gif").convert()
pygame.error: Couldn't open ./cards/titlescreen.gif

Wo liegt der Fehler ❓

Steht da doch - der Pfad für das Gif das geladen werden soll ist nicht absolut sondern relativ - also müsstest du entweder vor der Ausführung des Programms in das nötige Basisverzeichnis wechseln bzw. in der (*.desktop Datei die Variable für Path passend setzen) oder das Verzeichnis im Programmskript anpassen.

Berlin_1946 Team-Icon

Supporter, Wikiteam
(Themenstarter)

Anmeldungsdatum:
18. September 2009

Beiträge: 10423

also müsstest du entweder vor der Ausführung des Programms in das nötige Basisverzeichnis wechseln

wie bekomme ich das hin, damit ich einen Einzeiler ins Hauptmenü eintragen kann.

Meine Kenntnisse reichen für das Verständnis der zwei Terminal-Befehle.

cd /home/grpc/canasta/canasta-0.2.5 && python Canasty.py

Was oder wo ist das Basisverzeichnis ❓

Wie sieht der Wechsel aus ❓

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11260

Wohnort: München

Berlin 1946 schrieb:

wie bekomme ich das hin, damit ich einen Einzeiler ins Hauptmenü eintragen kann.

Wieso einen Einzeiler? Du kannst eine passende .desktop Datei nach den bestehenden Standards erstellen: .desktop-Dateien (oder gleich die offizielle Dokumentation lesen: http://standards.freedesktop.org/desktop-entry-spec/latest/)

z.B. das als /home/grpc/.local/share/applications/canasta.desktop abspeichern

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[Desktop Entry]
Version=1.0
Type=Application
Hidden=false
Terminal=false
Icon=/home/grpc/canasta/canasta-0.2.5/cards/title/c7.gif
Name=Canasta
Exec=/usr/bin/python /home/grpc/canasta/canasta-0.2.5/Canasty.py
Path=/home/grpc/canasta/canasta-0.2.5
Categories=Game

Und schon solltest du einen passenden Eintrag im Menü in der Kategorie Games bzw. Spiele haben ☺

Berlin_1946 Team-Icon

Supporter, Wikiteam
(Themenstarter)

Anmeldungsdatum:
18. September 2009

Beiträge: 10423

Hallo seahawk1986,

werde ich morgen versuchen. Muss jetzt den Rechner herunterfahren.

Danke für die Hilfe. ❗

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Das Problem bei .desktop- Dateien ist, dass sie standardmäßig keine Shell haben.

Wenn Du also Shell-Befehle benutzen willst (→ z.B. eine Pipe oder Befehlsliste), dann musst Du die ausdrücklich aufrufen:

bash -c 'cd /home/grpc/canasta/canasta-0.2.5 ;  python Canasty.py'

Die Befehle müssen natürlich 'gequotet' werden, damit sie alle zusammen als 1 Parameter an die Shell übergeben werden.

LG,

track

Berlin_1946 Team-Icon

Supporter, Wikiteam
(Themenstarter)

Anmeldungsdatum:
18. September 2009

Beiträge: 10423

Hallo track,

danke für die Hilfe.

Wäre ein Hinweis in der Eigene-Starter-im-Startmenue

bash -c 'cd /home/user/ordner ;  python meinsuperskript.py'

besser geeignet ❓

Was meinst du ❓

Ich stelle auf gelöst, würde mich über eine Antwort freuen, ggf auch auf der Seite "Diskussion" in der Baustelle "Unity Startmenü".

@ seahawk1986,

ich werde deine Hilfe in der Baustelle "Unity Startmenü" einsetzen

Danke auch dir

aasche

Anmeldungsdatum:
30. Januar 2006

Beiträge: 14259

Berlin 1946 schrieb:

Wäre ein Hinweis in der Eigene-Starter-im-Startmenue... besser geeignet

Nein, denn Programmstarter sind kein Unity-spezifisches Thema. Aber verlinken innerhalb des Wikis sollte nicht das Problem darstellen.

Berlin_1946 Team-Icon

Supporter, Wikiteam
(Themenstarter)

Anmeldungsdatum:
18. September 2009

Beiträge: 10423

Hallo aasche,

Aber verlinken innerhalb des Wikis sollte nicht das Problem darstellen.

O.k.

meine Frage:

Wo ist so ein Befehl

bash -c 'cd /home/user/ordner ;  python meinsuperskript.py'

als Hinweis unterzubringen ❓

Das ist ein Thema zum:

Terminalaufruf im Hauptmenü (alacart)

aasche

Anmeldungsdatum:
30. Januar 2006

Beiträge: 14259

Berlin 1946 schrieb:

meine Frage:

Wo ist so ein Befehl

bash -c 'cd /home/user/ordner ;  python meinsuperskript.py'

als Hinweis unterzubringen ❓

Im Abschnitt Problembehebung des genannten Artikels - wo es bereits steht.

Berlin_1946 Team-Icon

Supporter, Wikiteam
(Themenstarter)

Anmeldungsdatum:
18. September 2009

Beiträge: 10423

Hallo aasche,

sry, wir sprechen von verschiedenen Wikis. Im 3. Abschnitt Eigene-Starter-im-Startmenue

steht der Link auf alacarte mit dem gesagten Befehl. Dieser Befehl funktioniert so nicht, sondern nur der Vorschlag von track hat bei mir funktioniert. Im Anhang sind zwei Bilder aus denen die Stelle zu erkennen ist, wo der Befehl eingetragen werden soll (alacart_1 und alacart_2).

seahawk1986 schrieb

Steht da doch - der Pfad für das Gif das geladen werden soll ist nicht absolut sondern relativ - also müsstest du entweder vor der Ausführung des Programms in das nötige Basisverzeichnis wechseln bzw. in der (*.desktop Datei die Variable für Path passend setzen) oder das Verzeichnis im Programmskript anpassen.

Da ich in der Shellprogramierung nicht so tief einsteigen kann und die Fehlermeldung somit mir nicht hilft. Meine Frage :

ist der Befehl:

bash -c 'cd /home/user/ordner ;  python meinsuperskript.py'

mit Bash -c xxx.py hier im Wiki-Startmenü besser als der jetzige ❓

Würde der bei allen Eintragungen im "Eigene Starter anlegen" in der Zeile "Befehle" (Anhang alacart_2.png) Bash -c usw. immer funktionieren ❓

Bilder

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11260

Wohnort: München

Berlin 1946 schrieb:

Da ich in der Shellprogramierung nicht so tief einsteigen kann und die Fehlermeldung somit mir nicht hilft.

Das hat eigentlich nichts mit Shellprogrammierung zu tun, das Programm sucht aufgrund der relativen Pfadangabe einfach an der falschen Stelle, wenn man es nicht aus dem Verzeichnis heraus aufruft, in dem es liegt. Da brauchst du nicht mal in den Quelltext zu schauen, es reicht deine Angaben zu den unterschiedlichen Aufrufen im ersten Post und die Fehlermeldung einmal durch die eigenen grauen Zellen zu jagen ☺

Meine Frage :

ist der Befehl:

bash -c 'cd /home/user/ordner ;  python meinsuperskript.py'

mit Bash -c xxx.py hier im Wiki-Startmenü besser als der jetzige ❓

Wenn das Kriterium nur ist, dass es funktioniert, dann gewinnt die funktionierende Variante.

Würde der bei allen Eintragungen im "Eigene Starter anlegen" in der Zeile "Befehle" (Anhang alacart_2.png) Bash -c usw. immer funktionieren ❓

Prinzipiell ja, man muss dann aber die Besonderheiten berücksichtigen, wenn die Bash den Befehl evaluiert. Ich würde immer die saubere Lösung über eine passend gestaltete .desktop-Datei wählen (wie man es z.B. mit arronax mit GUI machen kann, wenn man die Datei nicht von Hand erstellen will), anstatt so einen Workaround über einen Bash-Aufruf zu nutzen, wenn es nicht unbedingt nötig ist.

Antworten |