web-dev-qa-db-fra.com

Pourquoi les paquets instantanés disparaissent-ils lors de l'utilisation de la coquille de poisson?

Si je procède à une nouvelle installation d'Ubuntu 17.10, installe un paquet via snap et change mon shell en poisson. Après s'être reconnecté, le paquet est absent du menu de gnome-Shell et de ma liste de favoris.

Bizarrement, cela ne se produit que lors de l'utilisation de Wayland.

Qu'est-ce qui pourrait causer ce problème? Je peux confirmer que mon shell fonctionne normalement et que le chemin est normal. Je peux également confirmer que ces applications fonctionnent correctement via Snap Run ou leurs versions en ligne de commande, mais c'est comme si les fichiers * .desktop manquaient.

1
Ken Kinder
  1. Le problème: Le problème est lié à votre shell de connexion.

La variable XDG_DATA_DIRS est définie lorsque /etc/profile.d est créé (/etc/profile.d/apps-bin-path.sh)

Mais si vous utilisez fishshell, comme dans votre cas, ou zsh, vous ne fournissez pas le fichier /etc/profile.d/. Par conséquent, XDG_DATA_DIRS n’est jamais défini et les fichiers .desktop de/var/lib/snapd/desktop ne seront pas trouvés. . Ce n'est pas un bug, mais c'est dû au fait que les poissons ne sont pas compatibles POSIX 1003.1. Cela signifie que ces coquilles ne comprennent pas la syntaxe bash.

  1. La solution de contournement: je peux penser à au moins deux solutions de contournement.

    I.- Le plus simple consiste à inverser le shell par défaut à bash avec

    chsh -s/bin/bash

Et puis ajoutez la ligne

fish 

À la fin du fichier ~/.bashrc. En faisant cela, votre shell de connexion sera bash et votre fichier /etc/profile.d sera créé, mais vous utiliseriez du poisson à chaque fois que vous ouvrez votre terminal. Et écrire "exit" sur votre terminal reviendrait à bash.

II.- L’un des plus délicats est de garder le poisson comme shell de connexion mais de forcer le fichier /etc/profile.d à être recherché. Pour ce faire, vous devez suivre ces étapes:

a.- de votre poisson Shell installez le pêcheur et l'achigan (utilitaires Make Bash utilisables dans Fish Shell).

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

# instruct fisher to download the bass package   
fisher add edc/bass 

b.- éditez votre ~/.config/fish/config.fish (créez-le s'il n'existe pas) et sourcez chaque fichier sous /etc/profile.d en utilisant des basses.

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

(Un autre terminal utilise le répertoire /etc/profile.d pour obtenir la liste des fichiers. Copiez-les.)

Collez la liste dans votre nano terminal comme ceci:

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 

Enregistrez, fermez, fermez la session ou redémarrez et "ta-da".

Avec cette option, vous gardez le poisson comme shell de connexion, mais vous devez vérifier le répertoire /etc/profile.d de temps en temps pour vous assurer qu’il n’y a pas de nouveau fichier que vous n’aurez pas acheté.

1
Esteban Vergara