Cara keluar dari spasi di file .desktop, baris Exec

15

Saya ingin membuat .desktopfile seperti yang dijelaskan di sini .

[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

Namun, menjalankannya dari menu konteks Nautilus menggunakan Open with this memberi saya

Tidak dapat menemukan '/ home / user / opt / sublime / Sublime'

Jadi saya mencoba

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

dan mendapatkan

Teks berakhir sebelum kutipan yang cocok ditemukan untuk ". (Teksnya adalah" "/ home / user / opt / sublime / Sublime ')

Apa cara yang benar untuk keluar dari ruang dalam Execbarisan .desktopfile?

nh2
sumber

Jawaban:

5

Awali setiap spasi dengan garis miring terbalik:

[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
Januari
sumber
4
Itu tidak berhasil:Text ended just after a '\' character. (The text was '/home/user/opt/sublime/Sublime\')
nh2
Lucu, itu bekerja untuk saya.
Januari
Apakah kita menggunakan versi yang sama? GNOME nautilus 3.4.2pada 12.04.
nh2
Berfungsi untuk saya di Ubuntu 16.04, dan juga kutipan ganda. Namun, JANGAN lepas dari spasi atau mengutip nilai Path dan Icon, itu dapat menyebabkan aplikasi tidak berjalan (di komputer saya, ikon dasbor berkedip tetapi tidak melakukan apa-apa, bahkan tidak membuka terminal bahkan jika Terminal = benar). Masalah yang sama jika Anda tidak melarikan diri dari Exec, jadi Anda dapat membayangkan butuh waktu untuk menemukan apa yang harus dilakukan dengan setiap baris dari .desktop!
hsandt
Aneh ... Ini berfungsi jika saya menjalankan peluncur secara manual, tetapi tidak pada autostart. Fitur ini sangat disadap.
Adrian Lopez
3

Saya mengalami masalah yang persis sama! Setelah mencoba berbagai pola pelolosan / kutipan, saya memutuskan solusi paling sederhana adalah dengan memiliki tautan simbolis ke sublime_text$ PATH saya (atau Anda dapat menggunakan alias baris perintah).

[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
sumber
4
Ini adalah solusi yang masuk akal, tapi kami masih tidak tahu bagaimana kita dimaksudkan untuk menggunakan spasi di .desktopfile.
nh2
2
Setuju, meskipun bagi saya sepertinya buggy di jalan Execdiurai, daripada kita menerapkan secara tidak benar. Ini mengartikan ruang sebagai akhir dari nilai, yang aneh, karena Anda dapat menggunakan spasi yang tidak terhapus / string yang tidak dikutip untuk jalur di properti lain!
c24w
3

Sudahkah Anda mencoba menggunakan tanda kutip "" bukannya tanda kutip? Saya memiliki file .desktop khusus dengan spasi di baris Exec, dan milik saya bekerja dengan tanda kutip.

Henry Gibson
sumber
3

Saya mempunyai masalah yang sama ketika mengikuti instruksi instalasi dari ( http://monkeyhacks.com/post/how-to-install-sublime-text-2-on-ubuntu-14-04 ) .. Jadi solusi saya adalah :

  1. Hapus / hapus tautan lunak yang disebut "luhur" dari /usr/bin

  2. Hapus semua spasi putih folder "Sublime Text 2" dengan mengganti nama menjadi "SublimeText2"

  3. Buat kembali tautan lunak di /usr/bin/:

    sudo ln -s /opt/SublimeText2/sublime_text /usr/bin/sublime
    
  4. Buat file .desktop termasuk:

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

Saya mengalami masalah yang sama menggunakan GNOME nautilus 3.4.2 di Ubuntu 12.04. Saya menemukan solusi alternatif ini dalam laporan bug untuk masalah yang sama di Moblin UI Framework yang saya lebih suka yang disebutkan di mana Anda perlu menambahkan setiap folder tunggal ke $ PATH.

Solusinya sederhana:
"Buat tautan simbolis di jalur yang tidak memiliki spasi, dan arahkan bidang EXEC ke tautan itu."

Björn
sumber
-1

File .desktop tidak menangani tanda kutip, spasi, dan karakter melarikan diri dengan cara yang sama seperti yang dilakukan shell. Mungkin, opsi terbaik adalah memanggil shell di baris exec Anda untuk mendapatkan perilaku yang diharapkan, seperti:

[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

Untuk informasi lebih lanjut, silakan lihat man sh. Ini juga menghindari keharusan membuat dan memelihara tautan simbolik, seperti yang Anda lakukan dengan jawaban lainnya.

KDØBPV
sumber
Solusi ini tidak meneruskan argumen, misalnya jalur file, ke perintah yang pada akhirnya dipanggil. -1
David Foerster
Hah. Ternyata itu juga tidak bisa diandalkan. Saya menguji solusi ini sebelum mempostingnya, dan itu berhasil. Tapi kemudian saya memodifikasi tes saya untuk memeriksa apakah Anda benar, dan sekarang itu TIDAK berfungsi, bahkan setelah mengembalikannya ke bagaimana itu bekerja. Aneh.
KDØBPV