Caminho do ícone no arquivo .desktop

11

Na minha área de trabalho, tenho um arquivo .desktop. Se eu digitar:

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

o ícone do arquivo .desktop é alterado (o resultado esperado).

Mas, se eu digitar:

Icon=~/Pictures/myLogo.png

isso não funciona.

Não é ~/um atalho para /home/$USER?

Jacob Vlijm
fonte
11
~ é abreviação de seu diretório inicial apenas em um shell.
precisa saber é o seguinte
@JacobVlijm: desculpe, eu adormeci, eu estou programando dia e noite :-)
11
@IanBell Haha Eu conheço o sentimento :)
Jacob Vlijm
/ home / $ USER não funcionará. Parece que você está procurando - / home / $ (whoami). Veja meus comentários abaixo.
Ajay Kumar

Respostas:

10

O uso de caminhos em um arquivo .desktop

Em um .desktoparquivo, você precisa usar caminhos absolutos e completos . Portanto, ~não é expandido.

Este é um erro comumente cometido :)

Exceções relativas aos ícones são descritas aqui :

Ícone a ser exibido no gerenciador de arquivos, nos menus etc. Se o nome for um caminho absoluto, o arquivo fornecido será usado. Se o nome não for um caminho absoluto, o algoritmo descrito na Especificação do tema do ícone será usado para localizar o ícone.

e aqui :

O campo Ícone é o ícone que deve ser usado pelo iniciador e representa o aplicativo. Todos os ícones que estão no diretório /usr/share/pixmapsnão precisam ter o caminho completo especificado, mas o nome do arquivo sem a extensão. Por exemplo, se o arquivo de ícone for /usr/share/pixmaps/wallch.png, o campo Ícone deverá ser apenas 'wallch'. Todos os outros ícones devem ter o caminho completo especificado.

Mais Informações

Em um .desktoparquivo:

Na Icon=linha, você tem permissão para usar espaços:

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

está bem.

Contudo

Na Exec=linha, você não tem permissão para usar espaços, a menos que no caso de um argumento . Em todos os outros casos, é necessário citar as etapas do caminho com um espaço:

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

falhará, enquanto

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

ou

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

vai funcionar bem

Jacob Vlijm
fonte
Então, como faço para referenciar um caminho relativo ao "diretório inicial dos usuários"?
Aaron Franke
Aaron Franke, você pode usar $ (whoami) para obter o nome de usuário atual. Eu não tentei, mas isso deve funcionar - para o diretório home do usuário atual - / home / $ (whoami).
Ajay Kumar
Eu tentei e funciona Aaron.
Ajay Kumar
4

Em suma, .desktopo Icon=caminho do arquivo compreende caminhos absolutos, mas não a expansão até um milhão, devido à especificação que define como os .desktoparquivos devem funcionar.

Expansão Tilde

  • Onde você vê a ~expansão tilde ( ) para a $HOMEvariável de ambiente geralmente é, por exemplo, no bash, que é o shell de login usual com o qual você interage no prompt de comando
  • bash e outros shells compatíveis com POSIX , fazem a expansão de til para $ HOME consistente com a especificação POSIX para shells

Arquivos .desktop

  • No entanto, um .desktoparquivo não é a mesma coisa que um shell, é um arquivo de configuração de texto sem formatação, portanto, não necessariamente funcionaria da mesma maneira, mesmo que .desktoparquivos e shells possam ser encontrados no Linux
  • como .desktopo arquivo de um trabalho deve funcionar, é definido nas Especificações de entrada na área de trabalho do Freedesktop

A especificação de entrada da área de trabalho, referente a Icons, diz:

Se o nome for um caminho absoluto, o arquivo fornecido será usado.

É por isso que você conseguiu usar caminhos absolutos, uma vez que é coberto pelas especificações

Se o nome não for um caminho absoluto, o algoritmo descrito na Especificação do tema do ícone será usado para localizar o ícone.

Quando verificamos a Especificação de tema de ícone , não há nada que diga que ele deve seguir a expansão de til do POSIX.

Sumário

Portanto, devido às especificações do Freedesktop em relação .desktopà Icon=configuração, caminhos absolutos são suportados, mas como você descobriu, as expansões de POSIX para $ HOME não são.

clarity123
fonte