Setel variabel dalam file .desktop

75

Apakah ada cara untuk mengatur variabel lingkungan di file .desktop? Saya mencoba menjalankan aplikasi (eclipse) dengan gaya gtk khusus, jadi pada dasarnya saya ingin mendapatkan hasil berikut dengan menjalankan file .desktop:

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

Saya sudah mencoba untuk meletakkannya di skrip bash dan menjalankannya dari file .desktop, tetapi kemudian tidak terintegrasi dengan baik dengan peluncur Unity.

dotintegral
sumber

Jawaban:

111

Anda dapat menambahkan variabel lingkungan ke aplikasi dengan mengedit .desktopfile -nya . Misalnya, untuk menjalankan "digiKam" dengan variabel lingkungan APPMENU_DISPLAY_BOTH=1, cari digikam.desktopfile yang sesuai dan tambahkan pengaturan variabel, melalui envperintah, ke entri "Exec":

Exec=env APPMENU_DISPLAY_BOTH=1 digikam -caption "%c" %i

Dalam kasus Anda:

Exec=env GTK2_RC_FILES=gtkrc.custom /path/to/eclipse
melati
sumber
1
bagaimana saya bisa mengatur variabel env yang mengandung pengguna $HOME? Tidak Exec=env MYVAR="$HOME/foo"juga Exec=env MYVAR="~/foo"diperluas. Sebaliknya, mereka dilewatkan secara harfiah.
400 the Cat
tampaknya Anda dapat melakukannya seperti yang dijelaskan dalam stackoverflow.com/a/8980518/1446479
peedee
9

Sebuah alternatif untuk memodifikasi .desktopfile untuk menempatkan sebuah skrip wrapper di misalnya ~/bin.

$ cat ~/bin/eclipse
#!/bin/sh
export GTK2_RC_FILES=gtkrc.custom
exec /usr/bin/eclipse "$@"

Dengan cara ini kustomisasi tidak akan ditimpa saat paket aplikasi diperbarui.

Sunting:

Petunjuk tentang mengapa ini bisa Anda lihat dengan memeriksa isi PATHvariabel. Dalam hal ini:

$ echo $PATH
/home/gunnar/bin:/home/gunnar/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

~/binadalah folder pertama dalam daftar, dan dengan demikian dilihat sebelumnya /usr/bin.

Gunnar Hjalmarsson
sumber
Jika Anda hanya meletakkan file .desktop Anda di pengaturan lokal Anda, itu tidak akan ditimpa.
Auspex
@ Auspex: Benar. Tetapi pada saat yang sama, jika Anda menggunakan salinan lokal, Anda tidak akan mendapat manfaat dari kemungkinan pembaruan dari .desktopfile yang dimiliki paket .
Gunnar Hjalmarsson
Saya tidak melihat bagaimana memasukkan pembungkus ~/binakan membantu dengan itu. .desktopFile yang dimiliki paket tidak akan pernah melihat pembungkus itu! Anda juga harus menggunakanupdate-alternatives
Auspex
@ Auspex: .desktopFile tidak perlu "melihat" bungkusnya. Itu hanya dieksekusi eclipse, dan karena PATHpembungkusnya dipilih bukan /usr/bin/eclipse. Saya mengedit jawaban untuk mengklarifikasi.
Gunnar Hjalmarsson
Ya, file .desktop memang perlu melihat bungkusnya. Saya berpikir bahwa file .desktop rata-rata menentukan path lengkap, tetapi pada pemeriksaan lebih lanjut saya pikir sebagian besar sistem hanya menentukan nama perintah — dan demikian juga akan melihat pembungkus Anda. Namun, satu-satunya file desktop Eclipse yang saya miliki adalah dalam format yang ditentukan dalam pertanyaan — memberikan path lengkap ke biner Eclipse.
Auspex