Bagaimana saya bisa mengatur variabel 'Path' dalam file .desktop agar relatif terhadap lokasi di mana file desktop berada?

11

Saya ingin mengatur variabel 'Path' dalam file .desktop relatif ke lokasi di mana file desktop berada dan saya tidak bisa melakukannya.

Ketika saya tidak mendeklarasikannya atau mengosongkannya secara default ke folder rumah saya di mana pun saya menjalankannya; dan itu tidak menerima nilai relatif terhadap lokasi saya saat ini dalam sistem file.

kicsyromy
sumber
Saya punya masalah ini. Saya telah menemukan solusi, meskipun terkadang sangat rumit tergantung pada apa yang Anda lakukan. Apakah Anda menggunakan pekerjaan di sekitar saat ini? Jika tidak, saya mungkin bisa membantu. Saya belum menemukan dokumen xdg yang menjelaskan banyak hal tentang ini.
bambuntu
OP apakah Anda masih mencari jawaban? Jika demikian, Anda mungkin perlu memposting ulang pertanyaan Anda karena ini ditandai untuk ditutup. Salam,
Ringtail

Jawaban:

3

Anda tidak dapat mengatur CWD di dalam file .desktop. Jika Anda ingin aplikasi memiliki CWD tertentu, Anda harus menulis skrip pembungkus sederhana untuk aplikasi tersebut, yang terlihat seperti ini:

#!/bin/sh

(cd /where/you/want/it/to/be && exec your_program)

Anda dapat menggantinya your_programdengan $@dan menjalankan skrip dengan program_Anda sebagai argumen, seperti run-in-dir.sh your_program. Dengan cara ini Anda dapat menggunakan skrip yang sama untuk membungkus program apa pun yang ingin Anda mulai di direktori itu.

dobey
sumber
14

Anda dapat memilah-milah ini dengan menggunakan skrip mini bash in-line di Exec Anda. Ini akan menambahkan jalur file .desktop ke PATH sebelum menjalankan perintah Anda.

Exec=bash -c "export PATH=$PATH:`dirname %k`; your_command"

% k akan diganti dengan jalur file desktop itu sendiri. The dirnameperintah daging dari bagian nama file, hanya menyisakan direktori. Setelah PATH diatur seperti ini, your_commanddapat dipanggil tanpa path lengkap.

roadmr
sumber
1
Saya mengklik untuk cepat dan memilih yang salah tetapi solusi Anda sempurna.
CrandellWS
1
ini bisa bekerja dengan baik dengan pertanyaan / jawaban lain stackoverflow.com/a/3464561/1815624 ini
CrandellWS
2

Saya menggunakan ini:

Exec=bash -c 'cd $(dirname %k) && ./SCRIPT_NAME'

% K adalah nama lengkap dari file .desktop termasuk pathnya. Ini kemudian digunakan oleh dirname untuk mendapatkan lokasi dan mengubah direktori ke lokasi itu. Akhirnya, setelah berada di tempat yang tepat, ia menemukan skrip dan menjalankannya.

Marian
sumber
0

Untuk nama direktori dengan spasi dalam nama, ini akhirnya bekerja untuk saya:

Exec=/bin/bash -c 'cd "$(dirname "$0")"; wine game.exe -windowed' %k

Kredit untuk /unix//a/144428/61349

ThorSummoner
sumber
0

Ini berfungsi untuk saya Ubuntu 14.04:

Exec=bash -c "cd %k && ./app.run"

Spesifikasi terakhir mengatakan bahwa % k menunjuk ke lokasi file desktop:

% k - Lokasi file desktop sebagai URI (jika misalnya diperoleh dari sistem vfolder) atau nama file lokal atau kosong jika tidak ada lokasi yang diketahui.

nexayq
sumber