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?

nh2
quelle

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
Januar
quelle
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
c24w
quelle
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.

Henry Gibson
quelle
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
    
SantyVillagomez
quelle
0

Ich habe das gleiche Problem mit GNOME Nautilus 3.4.2 in Ubuntu 12.04. Ich habe diese alternative Problemumgehung in einem Fehlerbericht für dasselbe Problem im Moblin UI Framework gefunden, der mir besser gefällt als der, in dem Sie jeden einzelnen Ordner zum $ PATH hinzufügen müssen.

Die Problemumgehung lautet einfach:
"Erstellen Sie eine symbolische Verknüpfung in einem Pfad, der keine Leerzeichen enthält, und verweisen Sie das EXEC-Feld auf diese Verknüpfung."

Björn
quelle
-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.

KDØBPV
quelle
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