Por que os pacotes snap desaparecem ao usar o shell Fish?

0

Se eu fizer uma instalação limpa do Ubuntu 17.10, instale um pacote via snap, e mude meu shell para fish, depois de logar novamente o pacote está faltando no menu do gnome-shell e da minha lista de favoritos.

Estranhamente, isso também só acontece quando se usa Wayland.

O que poderia causar esse problema? Posso confirmar que meu shell funciona normalmente e o caminho é normal. Eu também posso confirmar que esses aplicativos são executados corretamente por meio do snap run ou de suas versões de linha de comando, mas é como se os arquivos * .desktop estivessem faltando.

    
por Ken Kinder 28.12.2017 / 02:11

1 resposta

0

  1. O problema: o problema está vinculado ao seu shell de login.

A variável XDG_DATA_DIRS é definida quando o /etc/profile.d é originado (/etc/profile.d/apps-bin-path.sh)

Mas se você usar fishshell, como é o seu caso, ou zsh, você não está obtendo o /etc/profile.d/ e, portanto, o XDG_DATA_DIRS nunca é configurado e os arquivos .desktop em / var / lib / snapd / desktop ganham ' t ser encontrado. Isso não é um bug, mas é devido ao peixe não ser compatível com POSIX 1003.1. Isso significa que esses shells não entendem a sintaxe bash.

  1. A solução alternativa: posso pensar em pelo menos duas soluções alternativas.

    I.- O simples é reverter o shell padrão para bater com

    chsh -s / bin / bash

E adicione a linha

fish 

No final do ~ / .bashrc. Ao fazer isso, seu shell de login seria bash e seu /etc/profile.d seria originado, mas você usaria fish toda vez que abrir seu terminal. E escrever 'exit' no seu terminal voltaria para o bash.

II.- O mais complicado é manter o fish como seu shell de login, mas forçar o /etc/profile.d a ser originado. Para fazer isso, você precisa seguir estas etapas:

a.- do seu fish shell instale o fisher e o bass (utilidades Make Bash utilizáveis no shell Fish).

curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs https://git.io/fisher 


fisher edc/bass 

b.- edite seu arquivo ~ / .config / fish / config.fish (crie se não existir) e coloque todos os arquivos em /etc/profile.d usando o baixo.

nano ~/.config/fish/config.fish (hate me, I use nano for simple things) 

(eu outro terminal ls o diretório /etc/profile.d para obter a lista de arquivos. Copie-os)

Cole a lista no seu terminal nano assim:

bass source /etc/profile.d/apps-bin-path.sh 

bass source /etc/profile.d/cedilla-portuguese.sh 

bass source /etc/profile.d/vte-2.91.sh 

bass source /etc/profile.d/bash_completion.sh 

bass source /etc/profile.d/input-method-config.sh 

bass source /etc/profile.d/xdg_dirs_desktop_session.sh 

Salve, feche, feche a sessão ou reinicie e 'ta-da'.

Com esta opção você mantém o fish como seu shell de login, mas você tem que verificar o diretório /etc/profile.d de vez em quando para ter certeza de que não há um novo arquivo que não seja sourcing.

    
por Esteban Vergara 09.02.2018 / 12:38