GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso specificare un'icona con un percorso RELATIVO per un file di ingresso desktop Linux?

Dopo aver fatto qualche ricerca in più, non sembra possibile specificare i percorsi relativi per un'icona in un file di voce del desktop, per quanto posso vedere.

La soluzione alternativa che ho usato è stata quella di aggiungere il seguente codice alla fine del mio script launcher.sh:

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

Questo aggiornerà il percorso dell'icona ogni volta che viene eseguito lo script di avvio e poiché il file .desktop punta allo script di avvio, facendo clic sul file .desktop si aggiorna effettivamente la sua icona.

So che potresti usare cat o l'opzione -i per abbreviare il codice sopra, ma ho letto che la soluzione che ho usato è più affidabile. Se qualcuno ha ulteriori informazioni in merito, è pregato di pubblicare un commento.


È vero che la specifica FreeDesktop non consente percorsi relativi:

Chiavi standard

Icon

Icona da visualizzare in file manager, menu, ecc. Se il nome è un percorso assoluto, verrà utilizzato il file specificato. Se il nome non è un percorso assoluto, verrà utilizzato l'algoritmo descritto nella specifica del tema dell'icona per individuare l'icona.

[ . . . ]

Valori di tipo iconstring sono i nomi delle icone; questi possono essere percorsi assoluti o nomi simbolici per le icone individuate utilizzando l'algoritmo descritto nella specifica del tema delle icone. Tali valori non sono visualizzabili dall'utente e sono codificati in UTF-8.

La soluzione alternativa è adeguata, anche se probabilmente non funzionerà per i menu e i pannelli di avvio. Ma se ti senti a tuo agio nel correggere il file desktop quando esegui launcher.sh script,perché non installare effettivamente l'icona?Puoi farlo in due righe:

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

e poi metti

Icon=app

nel file desktop (app è solo il nome del file senza estensione).

Questo è il meccanismo previsto per individuare le icone che non hanno un percorso assoluto e assicurerà che le icone vengano visualizzate nei menu e nei programmi di avvio personalizzati. Le specifiche dicono quanto segue:

Quindi, sei un autore di applicazioni e vuoi installare le icone delle applicazioni in modo che funzionino nei menu di KDE e Gnome. Come minimo dovresti installare un'icona 48x48 nel tema hicolor. Ciò significa installare un file PNG in $prefix/share/icons/hicolor/48x48/apps. Facoltativamente è possibile installare icone di diverse dimensioni. Ad esempio, l'installazione di un'icona svg in $prefix/share/icons/hicolor/scalable/appssignifica che la maggior parte dei desktop avrà un'icona che funziona per tutte le dimensioni.

Un modo per farlo è con il xdg-icon-resource comando, ad esempio

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

Tuttavia, xdg-icon-resource non supporta le immagini SVG, e in pratica questo fa la stessa cosa:

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

(Non è un errore di battitura:metti il ​​file SVG nel 48x48/apps cartellae i menu e i pannelli saranno perfettamente felici.)

Per i menu, è una buona idea aggiornare la cache delle icone dopo l'installazione.

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

Quindi puoi semplicemente dare iconstring come example-app come questo:

Icon=example-app

Questo non è un percorso relativo, ma risolve il problema di dover utilizzare un percorso assoluto e non si interromperà se il file desktop viene spostato in una posizione diversa.

Per quel che vale, il supporto per i percorsi relativi è stato discusso nella mailing list di FreeDesktop nel settembre 2008:

Magnus Bergmark magnus.bergmark su gmail.com

Mar 23 settembre 01:01:32 PDT 2008

[ . . . ]

Propongo di consentire in qualche modo anche l'uso di percorsi relativi.

Casi d'uso

  1. Uso molti file .directory per fare in modo che le directory contenenti un film abbiano la locandina del film come icona. Questo comportamento potrebbe applicarsi a qualsiasi forma di media, come fumetti, musica (copertine degli album) e foto.

  2. Un venditore potrebbe voler raggruppare un'icona in un pezzo di software che sta distribuendo per andare con un file .desktop che non deve andare nel menu del desktop e quindi si trova ancora nella directory dell'applicazione.

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

L'unica controargomentazione che sono riuscito a trovare a questa proposta è qui:

Un file .desktop che non è destinato a entrare in una directory di applicazioni standard è quasi del tutto inutile. Forse dovresti dare un'occhiata ad alcune delle proposte e delle implementazioni dei bundle di software, e lavorare invece usando quelle. Un'altra opzione sono gli script xdg utils, per installare il file .desktop e le icone nelle posizioni appropriate. Posso solo presumere che anche l'applicazione disinstallata intenda non seguire le specifiche del tema delle icone e dei nomi delle icone. E non vedo l'impostazione dell'icona della directory come utile davvero. Impostare un'icona per l'eseguibile vero e proprio sarebbe molto più utile, anche se i binari elf non hanno risorse come i binari di win32.

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

Domande correlate:

  • 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

Link rilevanti:

  • 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. Come abbiamo creato un'app desktop Linux con Electron

  2. Linux:come accedere automaticamente al desktop con Systemd?

  3. Linux:come integrare l'audio con gli eventi desktop?

  4. Come si ottengono l'icona, il tipo MIME e l'applicazione associati a un file nel desktop Linux?

  5. Come posso usare rsync con un file system FAT?

Come creare un file server personale con SSH su Linux

Inizia con Lumina per il tuo desktop Linux

Come configurare Openbox per il tuo desktop Linux

Come utilizzare il comando Linux rm con esempi

Come configurare il firewall con Gufw su desktop Linux

Come affrontare i nomi dei file con gli spazi in Linux