Forum: PC Hard- und Software Bun-O-Mat startet nicht über Desktopsymbol (Debian)


von R. F. (inet_surfer88)


Lesenswert?

Hallo,

ich will den Burn-O-Mat unter Linux zum Programmieren der 
ATMega-Controller einsetzen.

System: Debian 9.1 mit LXDE, alle Pakete aktuell (letztes Update heute).
Programmer: AVR-ISP-MKII

Das .deb-Paket konnte ich nicht installieren. Es kam eine Fehlermeldung, 
das Java7 nicht installiert ist. Auf meinem System läuft Java8.
Ausgabe Konsole: openjdk version "1.8.0_141"

Jetzt habe ich die zip-Datei entpackt und das Programm über die Datei 
start.sh gestartet. Das funktioniert erst mal ohne Probleme. Die GUI 
öffnet sich nach kurzer Zeit.

Ich will das Programm allerdings über ein Desktopsymbol starten.
Hierzu habe ich im Verzeichnis Desktop folgende Datei erstellt:

Dateiname: avr.desktop
Inhalt:
1
[Desktop Entry]
2
Name=Burn-O-Mat
3
Icon=/home/ruediger/AVR8_Burn-O-Mat/AVR8_Burn-O-Mat.png
4
Exec=/home/ruediger/AVR8_Burn-O-Mat/start.sh
5
Terminal=false
6
Type=Application

Das Symbol erscheint sofort auf dem Desktop. Bei einem Doppelklick 
verändert sich der Mauszeiger für einige Sekunden, danach kommt wieder 
der gewohnte Mauszeiger und es passiert nichts. Die GUI wird nicht 
geöffnet.

Hat jemand eine Idee, an was das liegen könnte?

Die Datei avr.desktop wird nach dem Speichern nicht mehr als avr.desktop 
angezeigt, sondern als Burn-O-Mat (Mein Eintrag bei Name=). Weiterhin 
erscheint nicht mehr das Textdatei-Symbol, sondern das Symbol vom 
Burn-O-Mat.

Gruß Rüdiger

: Verschoben durch User
von Daniel A. (daniel-a)


Lesenswert?

Hast du das Current Working Directory, mit welchem start.sh aufgerufen 
wird, schon überprüft?

von R. F. (inet_surfer88)


Lesenswert?

Was meinst du mit current working directory?
In der Konsole gehe ich davon aus, es ist das Verzeichnis, in dem ich 
mich gerade befinde.

Ich starte ja aber alles aus der grafischen Oberfläche heraus. Im 
"Explorer" (pcmanfm) klicke ich einfach auf die Datei start.sh, dann 
funktioniert es. Zuvor kommt noch eine Abfrage ob ich die Datei starten 
oder im Terminal ausführen möchte, was ich mit starten beantworte.

Beim Klick auf das Desktop-Symbol liegt die Datei in dem 
Desktop-Verzeichnis, welches von Debian bereit gestellt wird und wo noch 
weitere starter liegen.

Die start.sh liegt in /home/USER/AVR8_Burn-O-Mat
Die Desktopverknüpfung in /home/USER/Schreibtisch
Der Ordner heisst "Schreibtisch", wird aber im pcmanfm als "Desktop" 
angezeigt.

Falls ich bzgl. dem current working directory noch etwas nachschauen 
kann bitte ich um weitere Infos. Ich bin noch relativ neu in Sachen 
Linux.

von R. F. (inet_surfer88)


Lesenswert?

Hallo,

ich habe noch einen Versuch gemacht und den Starter in 
"/usr/share/applications" kopiert. Dadurch habe ich jetzt auch die 
Einträge im Startmenü, und nicht nur auf dem Desktop. Starten lässt es 
sich weiterhin nicht.
Die Datei sieht jetzt wie folgt aus:
1
[Desktop Entry]
2
Name=Burn-O-Mat
3
Icon=/home/ruediger/AVR8_Burn-O-Mat/AVR8_Burn-O-Mat.png
4
Exec=/home/ruediger/AVR8_Burn-O-Mat/start.sh
5
Type=Application
6
Terminal=false
7
Categories=Development;
8
StartupNotify=true

von Daniel A. (daniel-a)


Lesenswert?

R. F. schrieb:
> Was meinst du mit current working directory?
> In der Konsole gehe ich davon aus, es ist das Verzeichnis, in dem ich
> mich gerade befinde.

Eine Terminal leitet nur die Eingaben und Ausgaben an Programme weiter, 
dessen file descriptoren für standard Eingabe (fd0) und standard Ausgabe 
(fd1) mit diesem verbunden sind. Ich verstehe unter Konsole gewöhnlich 
die Linux console, aber einige meinen damit auch Grafische Terminal 
Emulatoren, aus sicht eines Programmes macht das aber keinen 
Unterschied. Nach dem Login bei einer Linux Konsole, oder dem öffnen 
eines Terminal Emulators, wird normalerweise die default Shell des 
momentanen Users geöffnet, also jenachdem bash, sh, zsh, etc. Wenn man 
ein Programm wie z.B. bash startet, bezeichnet man diese Instanz des 
Programms als Prozess. Jeder Prozess hat diverse Ressourcen, die diesem 
gehören, dazu gehören unter anderem file descriptoren, environment 
variablen, das current working directory, eine Effective, Real und Saved 
UID und viele andere Dinge. unter proc kann man von allen Prozessen 
diese Ressurcen anzeigen lassen.

Das current working directory ist also eine Eigenschaft eines Prozesses, 
und das Verzeichnis in dem du dich in einer Konsole befindest ist 
eigentlich das current working directory der shell welche gerade in der 
Konsole läuft.

Dies bedeutet, dass ein relativer Pfad, welcher von einem Programm oder 
Script geöffnet wird, nicht relativ zum Pfad des ausführbaren Programms 
oder Scripts ist, sondern relativ zu dessen Current Working Directory. 
Dieses wird vom Programm, welches dieses gestartet hat, übernommen.

Wenn du die "start.sh" anklickst, wird für dessen Current Working 
Directory vermutlich von deinem Dateimanager der Ordner verwendet, in 
welchem sich dieses Script befindet. Öffnest du die start.sh aber so wie 
jetzt über die .desktop Datei, wird dessen Current Working Directory 
sonst wo sein, vermutlich dort, wo sich der Desktop befindet. Deshalb 
muss das Current Working Directory vor dem Starten von start.sh richtig 
gesetzt werden. Versuche mal folgendes:
1
[Desktop Entry]
2
Name=Burn-O-Mat
3
Icon=/home/ruediger/AVR8_Burn-O-Mat/AVR8_Burn-O-Mat.png
4
Exec=/bin/sh -c 'cd /home/ruediger/AVR8_Burn-O-Mat/ && /home/ruediger/AVR8_Burn-O-Mat/start.sh'
5
Type=Application
6
Terminal=false
7
Categories=Development;
8
StartupNotify=true

von R. F. (inet_surfer88)


Lesenswert?

Hallo,

vielen Dank! Mit dem Vorschlag funktioniert es jetzt. Den Text habe ich 
nur mal kurz überflogen und dann gleich den Vorschlag ausprobiert. Die 
nächsten Tage werde ich mir das in Ruhe durchlesen und versuchen zu 
verstehen. Wenn ich es nicht verstehe, werde ich mich dann evtl. 
nochmals melden. Das Problem ist aber erst einmal gelöst.

von Frank L. (florenzen)


Lesenswert?

Laut Desktop Entry Specification ist für das Setzen von $cwd der 
Parameter 'Path' zuständig. Es sollte also auch so funktionieren:
1
[Desktop Entry]
2
Name=Burn-O-Mat
3
Icon=/home/ruediger/AVR8_Burn-O-Mat/AVR8_Burn-O-Mat.png
4
Exec=/home/ruediger/AVR8_Burn-O-Mat/start.sh
5
Path=/home/ruediger/AVR8_Burn-O-Mat
6
Type=Application
7
Terminal=false
8
Categories=Development;
9
StartupNotify=true


Gruß,
f

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.