2010-08-10 10 views
12

Für eine meiner Linux-Anwendungen habe ich die Anwendung binary, ein Launcher.sh-Skript (für den LD_LIBRARY_PATH) und eine .desktop-Datei, alle im selben Ordner.Wie kann ich ein Symbol mit einem RELATIVEN Pfad für eine Linux-Desktop-Eintragsdatei angeben?

Ich würde lieber einen relativen Pfad als einen absoluten Pfad für das Symbol verwenden.

Ich habe versucht:

Icon=app.svg 
Icon=./app.svg 
Icon=$PWD/app.svg 
Icon=$(dirname %k)/app.svg 

aber keines dieser Arbeit (nur Icon=/path/to/app.svg). Wenn es nicht möglich ist, einen relativen Pfad anzugeben, und ich eine Problemumgehung verwenden muss, dachte ich, dass ich den Symbolpfad in der .desktop-Datei jedes Mal neu generieren könnte, wenn das Skript launcher.sh ausgeführt wird.

Was wäre der beste Weg, das zu tun? Verwenden Sie sed oder ein anderes Ersatzprogramm mit einem Pseudo-Regex wie vielleicht?

Antwort

13

Nach einigen Nachforschungen sieht es nicht so aus, als ob es möglich ist, relative Pfade für ein Icon in einer Desktop-Eintragsdatei anzugeben, soweit ich das sehe.

Die Abhilfe, die ich verwendet wurde, den folgenden Code zum Ende meines launcher.sh Skript hinzuzufügen:

Dieser
mv myapp.desktop myapp.desktop-bak 
sed -e "s,Icon=.*,Icon=$PWD/app.svg,g" myapp.desktop-bak > myapp.desktop 
rm myapp.desktop-bak 

wird den Pfad des Symbols jedes Mal, wenn der Launcher-Skript, und da die ausgeführt aktualisieren .desktop-Datei verweist auf das Launcher-Skript. Durch Klicken auf die .desktop-Datei wird das Symbol aktualisiert.

Ich weiß, Sie cat oder die Option -i verwenden könnten den obigen Code zu verkürzen, aber ich habe gelesen, dass die Lösung, die ich verwenden, zuverlässiger ist. Wenn jemand weitere Informationen dazu hat, bitte posten Sie einen Kommentar.

+0

Danke dafür ... trotzdem, das ist eine sucky spec. –

+0

Sicher ist ... Ich kann nicht glauben, dass niemand daran gedacht hat, relative Pfadunterstützung hinzuzufügen (anscheinend). –

+0

Nun, ich las woanders, dass es ein Sicherheitsproblem war: Was, wenn Sie die .desktop-Datei verschoben und versehentlich eine andere ausführbare Datei geöffnet haben als die, von der Sie dachten ... und ich denke, das ist ein guter Punkt. Aber dann wäre eine andere Methode, um Symbole anzugeben, schön gewesen. –

Verwandte Themen