Wie Leerzeichen in .desktop-Dateien entkommen Exec-Zeile


15

Ich möchte eine .desktopDatei wie hier beschrieben erstellen .

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=/home/user/opt/sublime/Sublime Text 2/sublime_text %U

Wenn ich das jedoch über das Kontextmenü von Nautilus mit Öffnen ausführe, erhalte ich das

Konnte '/ home / user / opt / sublime / Sublime' nicht finden

Also habe ich es versucht

Exec="/home/user/opt/sublime/Sublime Text 2/sublime_text" %U

und bekam

Der Text wurde beendet, bevor ein passendes Zitat für ". (Der Text lautete" "/ home / user / opt / sublime / Sublime") gefunden wurde.

Was ist der richtige Weg, um Leerzeichen in der ExecDateizeile zu .desktopumgehen?

Antworten:


5

Stellen Sie jedem Leerzeichen einen Backslash voran:

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=/home/user/opt/sublime/Sublime\ Text\ 2/sublime_text %U

4
Das geht nicht:Text ended just after a '\' character. (The text was '/home/user/opt/sublime/Sublime\')
nh2

Komisch, es funktioniert bei mir.
Januar

Verwenden wir die gleichen Versionen? GNOME nautilus 3.4.2am 12.04.
nh2

Funktioniert für mich unter Ubuntu 16.04 sowie übrigens mit doppelten Anführungszeichen. Entkommen Sie jedoch KEINE Leerzeichen oder geben Sie die Werte für Pfad und Symbol an, da dies dazu führen kann, dass die Anwendung nicht ausgeführt wird (auf meinem Computer blinkt das Strichsymbol, es wird jedoch nichts ausgeführt, und das Terminal wird nicht geöffnet, auch wenn Terminal = true). Das gleiche Problem, wenn Sie Exec nicht entkommen, können Sie sich vorstellen, dass ich einige Zeit gebraucht habe, um herauszufinden, was mit jeder Zeile der .desktop-Datei zu tun ist!
hsandt

Seltsam ... Das funktioniert, wenn ich den Launcher manuell starte, aber nicht beim Autostart. Diese Funktion ist super fehlerhaft.
Adrian Lopez

3

Ich hatte genau das gleiche Problem! Nachdem ich verschiedene Escape- / Anführungszeichen ausprobiert hatte, entschied ich, dass die einfachste Lösung darin bestand, sublime_textauf meinem $ PATH einen symbolischen Link zu zu haben (oder Sie könnten einen Befehlszeilenalias verwenden).

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[C]=/usr/share/Sublime Text 2/Icon/256x256/sublime_text.png
Name[C]=Sublime Text 2
Exec=Sublime-Text-2 %U
Comment[C]=Text Editor
Name=Sublime Text 2
Comment=Text Editor
Icon=/usr/share/Sublime Text 2/Icon/256x256/sublime_text.png
X-Desktop-File-Install-Version=0.21

4
Dies ist ein vernünftiges Problem zu umgehen, aber wir wissen noch nicht , wie wir gemeint Räume in verwenden .desktopDateien.
nh2

2
Einverstanden, obwohl es mir nur buggy in der Art und Weise vorkommt, dass Execes analysiert wird, anstatt dass wir es falsch implementieren. Es interpretiert ein Leerzeichen als das Ende des Werts, was ungerade ist, da Sie für Pfade in den anderen Eigenschaften Leerzeichen / Zeichenfolgen ohne Anführungszeichen verwenden können!
c24w

3

Haben Sie versucht '' Anführungszeichen anstelle von "" Anführungszeichen zu verwenden? Ich habe eine angepasste .desktop-Datei mit Leerzeichen in der Exec-Zeile und meine arbeitet mit Anführungszeichen.


3

Ich habe das gleiche Problem, wenn ich Installationsanweisungen von der Website ( http://monkeyhacks.com/post/how-to-install-sublime-text-2-on-ubuntu-14-04 ) befolge. Also meine Lösung war :

  1. Entfernen / Löschen Sie den Softlink "sublime" von /usr/bin

  2. Entfernen Sie alle Leerzeichen im Ordner "Sublime Text 2", indem Sie ihn in "SublimeText2" umbenennen.

  3. Erstellen Sie einen Softlink in /usr/bin/:

    sudo ln -s /opt/SublimeText2/sublime_text /usr/bin/sublime
    
  4. Erstellen Sie die .desktop-Datei, einschließlich:

    Exec=/opt/SublimeText2/sublime_text %U
    Icon=/opt/SublimeText2/Icon/48x48/sublime_text.png
    



-1

.desktop-Dateien behandeln Anführungszeichen, Leerzeichen und Escapezeichen nicht so wie Shells. Wahrscheinlich ist die beste Option, eine Shell in Ihrer exec-Zeile aufzurufen, um das erwartete Verhalten zu erhalten:

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=sh -c "/home/user/opt/sublime/Sublime Text 2/sublime_text" %U

Weitere Informationen finden Sie unter man sh. Auf diese Weise müssen Sie auch keine symbolischen Verknüpfungen erstellen und pflegen, wie Sie es bei den anderen Antworten tun werden.


Diese Lösung übergibt keine Argumente, z. B. Dateipfade, an den letztendlich aufgerufenen Befehl. -1
David Foerster

Huh. Anscheinend ist es auch nicht zuverlässig. Ich habe diese Lösung vor dem Posten getestet und sie hat funktioniert. Aber dann habe ich meinen Test geändert, um zu überprüfen, ob Sie Recht hatten, und jetzt funktioniert er NICHT, auch nachdem er so wiederhergestellt wurde, wie er funktioniert hat. Seltsam.
KDØBPV
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.