Cómo escapar espacios en archivos .desktop Exec line


15

Quiero hacer un .desktoparchivo como se describe aquí .

[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

Sin embargo, ejecutar eso desde el menú contextual de Nautilus usando Abrir con esto me da

No se pudo encontrar '/ home / user / opt / sublime / Sublime'

Así que lo intenté

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

y consiguió

El texto finalizó antes de encontrar una cita coincidente para ". (El texto era '" / home / user / opt / sublime / Sublime')

¿Cuál es la forma correcta de escapar espacios en la Execlínea de .desktoparchivos?

Respuestas:


5

Preceda cada espacio con una barra invertida:

[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

44
Eso no funciona:Text ended just after a '\' character. (The text was '/home/user/opt/sublime/Sublime\')
nh2

Gracioso, me funciona.
Enero

¿Usamos las mismas versiones? GNOME nautilus 3.4.2el 12.04.
nh2

Funciona para mí en Ubuntu 16.04, así como comillas dobles por cierto. Sin embargo, NO escape espacios ni cite los valores de Ruta e Icono, puede hacer que la aplicación no se ejecute (en mi computadora, el icono del guión parpadea pero no hace nada, ni siquiera abre el terminal, incluso si Terminal = verdadero). El mismo problema si no escapas de Exec, por cierto, ¡así que puedes imaginar que me llevó algo de tiempo encontrar qué hacer con cada línea de .desktop!
hsandt

Extraño ... Esto funciona si ejecuto el iniciador manualmente, pero no funciona en el inicio automático. Esta característica está súper molesta.
Adrián López

3

¡Estaba teniendo exactamente el mismo problema! Después de probar varios patrones de escape / cita, decidí que la solución más simple era tener un enlace simbólico sublime_texten mi $ PATH (o podría usar un alias de línea de comandos).

[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

44
Esta es una solución sensata, pero todavía no sé cómo estamos destinados a utilizar espacios en .desktoplos archivos.
nh2

2
De acuerdo, aunque para mí solo parece defectuoso en la forma en que Execse analiza, en lugar de que nosotros lo implementemos incorrectamente. ¡Interpreta un espacio como el final del valor, lo cual es extraño, ya que puede usar espacios sin escape / cadenas sin comillas para las rutas en las otras propiedades!
c24w

3

¿Has intentado usar comillas '' en lugar de comillas ""? Tengo un archivo .desktop personalizado con espacios en la línea Exec, y el mío funciona con '' comillas.


3

Tengo el mismo problema cuando sigo las instrucciones de instalación del sitio ( http://monkeyhacks.com/post/how-to-install-sublime-text-2-on-ubuntu-14-04 ). Así que mi solución fue :

  1. Eliminar / eliminar el enlace suave llamado "sublime" de /usr/bin

  2. Elimine todos los espacios en blanco de la carpeta "Sublime Text 2" renombrándolo a "SublimeText2"

  3. Re Crear un enlace suave en /usr/bin/:

    sudo ln -s /opt/SublimeText2/sublime_text /usr/bin/sublime
    
  4. Cree el archivo .desktop que incluya:

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


0

Me encontré con el mismo problema usando GNOME nautilus 3.4.2 en Ubuntu 12.04. Encontré esta solución alternativa en un informe de error para el mismo problema en Moblin UI Framework, que prefiero al mencionado donde necesita agregar cada carpeta a $ PATH.

La solución alternativa es simplemente:
"Cree un enlace simbólico en una ruta que no tenga espacios y apunte el campo EXEC a ese enlace".


-1

Los archivos .desktop no manejan comillas, espacios y caracteres escapados de la misma manera que los shells. Probablemente, la mejor opción sería llamar a un shell en su línea ejecutiva para obtener el comportamiento esperado, así:

[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

Para más información, consulte man sh. Esto también evita tener que crear y mantener enlaces simbólicos, como lo hará con las otras respuestas.


Esta solución no pasa argumentos, por ejemplo, rutas de archivos, al comando invocado en última instancia. -1
David Foerster

Huh Aparentemente tampoco es confiable. Probé esta solución antes de publicarla, y funcionó. Pero luego modifiqué mi prueba para verificar si tenía razón, y ahora NO está funcionando, incluso después de restaurarla a cómo estaba funcionando. Extraño.
KDØBPV
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.