GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menentukan ikon dengan jalur RELATIF untuk file entri desktop Linux?

Setelah melakukan penelitian lebih lanjut, sepertinya tidak mungkin menentukan jalur relatif untuk ikon di file entri desktop sejauh yang saya bisa lihat.

Solusi yang saya gunakan adalah menambahkan kode berikut di akhir skrip launcher.sh saya:

mv myapp.desktop myapp.desktop-bak
sed -e "s,Icon=.*,Icon=$PWD/app.svg,g" myapp.desktop-bak > myapp.desktop
rm myapp.desktop-bak

Ini akan memperbarui jalur ikon setiap kali skrip peluncur dijalankan, dan karena file .desktop menunjuk ke skrip peluncur, mengeklik file .desktop memperbarui ikonnya secara efektif.

Saya tahu Anda bisa menggunakan cat atau opsi -i untuk mempersingkat kode di atas tetapi saya telah membaca bahwa solusi yang saya gunakan lebih dapat diandalkan. Jika ada yang memiliki informasi lebih lanjut tentang itu, silakan kirim komentar.


Benar bahwa spesifikasi FreeDesktop tidak mengizinkan jalur relatif:

Kunci Standar

Icon

Ikon untuk ditampilkan di pengelola file, menu, dll. Jika namanya adalah jalur absolut, file yang diberikan akan digunakan. Jika nama bukan jalur absolut, algoritme yang dijelaskan dalam Spesifikasi Tema Ikon akan digunakan untuk menemukan ikon.

[ . . . ]

Nilai jenis iconstring adalah nama ikon; ini mungkin jalur absolut, atau nama simbolis untuk ikon yang terletak menggunakan algoritme yang dijelaskan dalam Spesifikasi Tema Ikon. Nilai tersebut tidak dapat ditampilkan oleh pengguna, dan dikodekan dalam UTF-8.

Solusinya memadai, meskipun mungkin tidak akan bekerja untuk menu dan peluncur panel. Namun jika Anda merasa nyaman untuk menambal file desktop saat menjalankan launcher.sh skrip, mengapa tidak memasang ikonnya? Anda dapat melakukannya dalam dua baris:

cp app.svg ~/.local/share/icons/hicolor/48x48/apps/
cp app.svg ~/.local/share/icons/hicolor/scalable/apps/

lalu taruh

Icon=app

di file desktop (app hanyalah nama file tanpa ekstensi file).

Ini adalah mekanisme yang dimaksudkan untuk menemukan ikon yang tidak memiliki jalur absolut, dan akan memastikan ikon muncul di menu dan peluncur khusus. Spesifikasinya berbunyi:

Jadi, Anda adalah pembuat aplikasi, dan ingin menginstal ikon aplikasi agar berfungsi di menu KDE dan Gnome. Minimal Anda harus memasang ikon 48x48 di tema hicolor. Ini berarti menginstal file PNG di $prefix/share/icons/hicolor/48x48/apps. Secara opsional, Anda dapat menginstal ikon dalam berbagai ukuran. Misalnya, memasang ikon svg di $prefix/share/icons/hicolor/scalable/apps berarti sebagian besar desktop akan memiliki satu ikon yang berfungsi untuk semua ukuran.

Salah satu cara yang dapat dilakukan adalah dengan xdg-icon-resource perintah, mis.

$ xdg-icon-resource install --novendor --context apps --size 48 example-app.png

Namun, xdg-icon-resource tidak mendukung gambar SVG, dan dalam praktiknya ini menyelesaikan hal yang sama:

$ cp example-app.svg ~/.local/share/icons/hicolor/48x48/apps/
$ cp example-app.svg ~/.local/share/icons/hicolor/scalable/apps/

(Itu bukan salah ketik:letakkan file SVG di 48x48/apps folderdan menu dan panel akan sangat senang.)

Untuk menu, sebaiknya perbarui cache ikon setelah menginstal.

$ update-icon-caches ~/.local/share/icons

Kemudian Anda cukup memberikan iconstring sebagai example-app seperti ini:

Icon=example-app

Ini bukan jalur relatif, tetapi menyelesaikan masalah keharusan menggunakan jalur absolut dan tidak akan rusak jika file desktop dipindahkan ke lokasi lain.

Untuk apa nilainya, dukungan untuk jalur relatif telah dibahas di milis FreeDesktop pada bulan September 2008:

Magnus Bergmark magnus.bergmark di gmail.com

Sel 23 Sep 01:01:32 PDT 2008

[ . . . ]

Saya mengusulkan agar kami juga mengizinkan penggunaan jalur relatif dalam beberapa cara.

Kasus penggunaan

  1. Saya menggunakan banyak file .directory untuk membuat direktori yang berisi film dengan ikon poster film. Perilaku ini dapat berlaku untuk segala bentuk media, seperti buku komik, musik (seni album), dan foto.

  2. Vendor mungkin ingin memaketkan ikon ke perangkat lunak yang mereka distribusikan ulang dengan file .desktop yang tidak boleh masuk ke menu desktop dan karena itu masih berada di direktori aplikasi.

https://lists.freedesktop.org/archives/xdg/2008-September/009940.html

Satu-satunya argumen tandingan yang dapat saya temukan untuk proposal ini ada di sini:

File .desktop yang tidak dimaksudkan untuk masuk ke direktori aplikasi standar hampir seluruhnya tidak berguna. Mungkin Anda harus melihat beberapa proposal dan implementasi bundel perangkat lunak, dan bekerja dengan menggunakan itu, sebagai gantinya. Pilihan lainnya adalah skrip utils xdg, untuk menginstal file .desktop dan ikon di tempat yang sesuai. Saya hanya dapat berasumsi bahwa aplikasi Anda yang dihapus juga bermaksud untuk tidak mengikuti spesifikasi Tema Ikon dan Penamaan Ikon. Dan saya tidak menganggap menyetel ikon direktori sebagai sesuatu yang berguna. Menyetel ikon untuk executable sebenarnya akan jauh lebih berguna, meskipun binari elf tidak memiliki sumber daya seperti binari win32.

https://lists.freedesktop.org/archives/xdg/2008-September/009962.html

Pertanyaan terkait:

  • https://askubuntu.com/questions/277190/how-to-package-an-application-icon-properly
  • https://unix.stackexchange.com/questions/404955/is-there-a-home-directory-location-for-overriding-icons
  • https://unix.stackexchange.com/questions/428992/why-do-freedesktop-desktop-files-not-allow-relative-paths
  • https://unix.stackexchange.com/questions/585997/assign-an-icon-to-a-custom-mimetype

Tautan yang relevan:

  • https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/82
  • https://bugs.kde.org/show_bug.cgi?id=68507
  • https://bugs.kde.org/show_bug.cgi?id=73463
  • https://lists.freedesktop.org/archives/xdg/2008-September/009940.html
  • https://lists.freedesktop.org/archives/xdg/2011-April/011883.html
  • https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html

Linux
  1. Bagaimana kami membangun aplikasi desktop Linux dengan Electron

  2. 4 tips untuk mendapatkan kerabat yang lebih tua secara online dengan Linux

  3. Linux – Bagaimana Cara Autologin Ke Desktop Dengan Systemd?

  1. Linux + Bagaimana Cara Mengabaikan (filter) File Dengan Spasi?

  2. Linux – Bagaimana Mengintegrasikan Suara Dengan Acara Desktop?

  3. Bagaimana saya bisa membuat daftar file dengan jalur absolutnya di Linux?

  1. Bagaimana cara membuat file dengan ukuran tertentu di Linux?

  2. Bagaimana Anda mendapatkan ikon, tipe MIME, dan aplikasi yang terkait dengan file di Desktop Linux?

  3. Bagaimana cara membuat file di Linux dari jendela terminal?