Percorso dell'icona nel file .desktop


11

Sul mio desktop ho un file .desktop. Se scrivo:

Icon=/home/ianbell/Pictures/myLogo.png

l'icona del file .desktop cambia (il risultato previsto).

Ma se scrivo:

Icon=~/Pictures/myLogo.png

non funziona.

Non è ~/una scorciatoia per /home/$USER?


1
~ è l'abbreviazione di home directory solo in una shell.
user253751

@JacobVlijm: scusa, mi sono addormentato, sto programmando giorno e notte :-)

1
@IanBell Haha Conosco la sensazione :)
Jacob Vlijm,

/ home / $ USER non funzionerà. Sembra che tu stia cercando - / home / $ (whoami). Vedi i miei commenti qui sotto.
Ajay Kumar,

Risposte:


10

L'uso di percorsi in un file .desktop

In un .desktopfile, è necessario utilizzare percorsi assoluti e completi . Pertanto ~non è espanso.

Questo è un errore comunemente fatto :)

Eccezioni relative alle icone sono descritte qui :

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

e qui :

Il campo Icona è l'icona che dovrebbe essere utilizzata dal programma di avvio e rappresenta l'applicazione. /usr/share/pixmapsNon è necessario specificare il percorso completo di tutte le icone che si trovano nella directory , ma il nome del file senza l'estensione. Ad esempio, se il file icona è /usr/share/pixmaps/wallch.png, il campo Icona dovrebbe essere solo "wallch". Tutte le altre icone devono avere il percorso completo specificato.

Maggiori informazioni

In un .desktopfile:

In Icon=linea, si è permesso di utilizzare gli spazi:

Icon=/home/jacob/Thema/icon/some folder/some icon.png

è ok.

però

Nella Exec=riga, non è consentito utilizzare spazi, a meno che non si tratti di un argomento . In tutti gli altri casi, è necessario citare i passaggi del percorso con uno spazio:

Exec=/home/jacob/Bureaublad/some folder/application

fallirà, mentre

Exec="/home/jacob/Bureaublad/some folder/application"

o

Exec=/home/jacob/Bureaublad/"some folder"/application

funzionerà bene


Quindi, come posso fare riferimento a un percorso relativo alla "home directory degli utenti"?
Aaron Franke il

Aaron Franke, puoi usare $ (whoami) per ottenere il nome utente corrente. Non ho provato ma questo dovrebbe funzionare - per home dir per l'utente corrente - / home / $ (whoami).
Ajay Kumar,

Ho provato e funziona Aaron.
Ajay Kumar,

4

In breve, .desktopil Icon=percorso del file comprende i percorsi assoluti, ma non l'espansione della tilde, a causa delle specifiche che definiscono il funzionamento dei .desktopfile.

Espansione Tilde

  • Dove vedresti l' ~espansione di tilde ( ) nella $HOMEvariabile d'ambiente è spesso ad esempio in bash, che è la solita shell di login con cui interagisci al prompt dei comandi
  • bash e altre shell conformi a POSIX, eseguono l'espansione da tilde a $ HOME in conformità con le specifiche POSIX per le shell

File .desktop

  • Tuttavia, un .desktopfile non è la stessa cosa di una shell, è un file di configurazione in testo semplice, quindi non funzionerebbe necessariamente allo stesso modo, anche se .desktopfile e shell sono entrambi disponibili su Linux
  • il modo in cui un .desktopfile dovrebbe funzionare, è definito nella specifica della voce desktop di Freedesktop

Le specifiche delle voci del desktop, per quanto riguarda Icons, dicono:

Se il nome è un percorso assoluto, verrà utilizzato il file indicato.

Questo è il motivo per cui sei stato in grado di utilizzare percorsi assoluti, poiché è coperto dalle specifiche

Se il nome non è un percorso assoluto, l'algoritmo descritto nella specifica del tema dell'icona verrà utilizzato per individuare l'icona.

Quando controlliamo la specifica del tema dell'icona , non c'è nulla che dica che deve seguire l'espansione della tilde di POSIX.

Sommario

Così, a causa delle specifiche riguardanti Freedesktop .desktop's Icon=ambiente, sono supportati percorsi assoluti, ma come l'avete trovato, POSIX tilde-to $ HOME espansioni non sono.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.