Come sfuggire agli spazi nei file .desktop Linea Exec


15

Voglio fare un .desktopfile come descritto qui .

[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

Tuttavia, eseguirlo dal menu di scelta rapida di Nautilus usando Apri con questo mi dà

Impossibile trovare "/ home / user / opt / sublime / Sublime"

Quindi ci ho provato

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

e ottenuto

Il testo è terminato prima che la citazione corrispondente fosse trovata per ". (Il testo era '" / home / user / opt / sublime / Sublime')

Qual è il modo corretto di sfuggire agli spazi nella Execlinea di .desktopfile?

Risposte:


5

Precede ogni spazio con una barra rovesciata:

[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
Non funziona:Text ended just after a '\' character. (The text was '/home/user/opt/sublime/Sublime\')
nh2,

Divertente, funziona per me.
Gennaio

Usiamo le stesse versioni? GNOME nautilus 3.4.2il 12.04.
nh2,

Funziona per me su Ubuntu 16.04, oltre a doppie virgolette a proposito. Tuttavia, NON sfuggire agli spazi né citare i valori Path e Icon, potrebbe impedire l'esecuzione dell'applicazione (sul mio computer, l'icona del trattino lampeggia ma non fa nulla, nemmeno aprire il terminale anche se Terminal = true). Stesso problema se non esci da Exec, a proposito, quindi puoi immaginare che mi ci è voluto del tempo per trovare cosa fare con ogni linea di .desktop!
hsandt,

Strano ... Funziona se eseguo il programma di avvio manualmente, ma non si avvia automaticamente. Questa funzione è super funzionante.
Adrian Lopez,

3

Stavo avendo esattamente lo stesso problema! Dopo aver provato vari schemi di escape / quoting, ho deciso che la soluzione più semplice era quella di avere un collegamento simbolico sublime_textsul mio $ PATH (o potevi usare un alias da riga di comando).

[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
Si tratta di una soluzione ragionevole, ma ancora non so come stiamo significava per utilizzare gli spazi nel .desktopfile.
nh2

2
D'accordo, anche se a me sembra solo un Execerrore nel modo in cui viene analizzato, piuttosto che noi implementare in modo errato. Interpreta uno spazio come la fine del valore, che è dispari, poiché puoi usare spazi senza caratteri di escape / stringhe non quotate per i percorsi nelle altre proprietà!
1313

3

Hai provato a usare '' virgolette invece di "" virgolette? Ho un file .desktop personalizzato con spazi nella riga Exec e il mio funziona con virgolette ''.


3

Ho lo stesso problema quando seguo le istruzioni di installazione dal sito ( http://monkeyhacks.com/post/how-to-install-sublime-text-2-on-ubuntu-14-04 ) .. Quindi la mia soluzione era :

  1. Rimuovere / eliminare il collegamento software chiamato "sublime" da /usr/bin

  2. Rimuovi tutti gli spazi bianchi della cartella "Sublime Text 2" rinominandola in "SublimeText2"

  3. Ri Creare un collegamento software in /usr/bin/:

    sudo ln -s /opt/SublimeText2/sublime_text /usr/bin/sublime
    
  4. Crea il file .desktop tra cui:

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


0

Ho riscontrato lo stesso problema usando GNOME nautilus 3.4.2 in Ubuntu 12.04. Ho trovato questa soluzione alternativa in una segnalazione di bug per lo stesso problema in Moblin UI Framework che preferisco a quello menzionato in cui è necessario aggiungere ogni singola cartella a $ PATH.

La soluzione alternativa è semplicemente:
"Creare un collegamento simbolico in un percorso che non ha spazi e puntare il campo EXEC a quel collegamento".


-1

I file .desktop non gestiscono virgolette, spazi e caratteri di escape nello stesso modo delle shell. Probabilmente, l'opzione migliore sarebbe quella di chiamare una shell nella linea exec per ottenere il comportamento previsto, in questo modo:

[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

Per ulteriori informazioni, consultare man sh. Questo evita anche di dover creare e mantenere collegamenti simbolici, come farai con le altre risposte.


Questa soluzione non passa argomenti, ad es. Percorsi di file, al comando infine invocato. -1
David Foerster

Huh. Apparentemente non è anche affidabile. Ho testato questa soluzione prima di pubblicarla e ha funzionato. Ma poi ho modificato il mio test per verificare se avevi ragione, e ora NON funziona, anche dopo averlo ripristinato su come stava funzionando. Strano.
KDØBPV
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.