スナップ経由でインストールされたプログラムがランチャーに表示されない


37

Ubuntu 16.04にアップデートし、初めてスナップパッケージを試しました。

そのため、いくつかのstlファイルを表示するにはmeshlabが必要でした。実行して、pitnログインを発行しました。スナップパッケージのコマンドラインインストールにはログインが必要ないことがわかりました。

sudo snap install meshlab

prest meshlapがインストールされていて、pitnにログインできません。コマンドラインからは正常に動作します。ただし、プログラムはランチャーに表示されません。どうしてこれなの?スナップパッケージはランチャーに表示されませんか?どうすれば修正できますか?

回答:


40

zshを使用している場合、スナップバイナリとデスクトップディレクトリは環境変数に自動的に追加されません。これを解決するために、次の行を/ etc / zsh / zprofile(Archから取得)に追加しました。

emulate sh -c 'source /etc/profile'

これにより、/ etc / profileファイルがbashエミュレーションで処理され、次に/etc/profile.d/*が読み込まれ、適切なPATHなどが設定されます。

デフォルトのbashプロファイルの残りすべてを含めずに、スナップディレクトリのみをパスに追加するには:

emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'

1
ありがとう!17.10でも機能します。zshに切り替えると、この問題も発生しました。
ダンウィット

2
インストールプロセスでこれを修正するか、スナップのFAQ /トラブルシューティング手順を追加する必要があります。
BradErzwh

1
ありがとう、18.10で私のために働いた。これが将来何らかの形で修正されることを願っています。
パベルDavydov

1
19.04のブリリアント、残念ながらそのまだ問題
jhole89

11

スナップシステムに組み込まれていますが、ダッシュにリンクを追加する必要があります。プログラムの種類を開始するには

snap run meshlab

起動したら、アイコンを右クリックして「ダッシュに追加」をクリックします。


7

私にとっては、Ubuntu 18.04でのWayland / ZSHの組み合わせにも関連しているようです- 変数に/var/lib/snapd/desktopリストされていXDG_DATA_DIRSますが(これはによって行われます/etc/profile.d/apps-bin-path.sh)、ランチャーはそのフォルダーのアプリを認識しません。

簡単な回避策は、目的のデスクトップファイルをシンボリックリンクすることです。次に例を示します。

ln -s /var/lib/snapd/desktop/applications/rubymine_rubymine.desktop .local/share/applications

5

スナップパッケージはランチャーに表示されませんか?

スナップが適切な.desktopファイルを出荷する限り、それらは機能します。Meshlabのみにmeshlabserver適切なデスクトップファイルがあります(実際、ランチャーに表示されます)。meshlab.desktopファイルは、しかし、execをしようとしているmeshlab.meshlabそれだけで使用する必要があるとき、meshlab。その結果、表示されません。

どうすれば修正できますか?

実行snap info meshlabすると、出版社の連絡先情報が表示されます。バグを報告することをお勧めします。それまでは、いつでもmeshlabCLIから実行するか、独自の.desktopファイルを作成できます。


5

Kubuntu 18.04を実行して、追加としてソリューションを

export XDG_DATA_DIRS="$XDG_DATA_DIRS:/var/lib/snapd/desktop/"

のようなカスタムファイルsnap-apps.sh~/.config/plasma-workspace/env。ただし、これはPlasma 5にのみ適用され、Ubuntu 18.10ですでに修正されている可能性があります。

dsagerがすでに彼の答えで述べたように、通常のこと/etc/profile.d/apps-bin-path.shはうまくいかないようです。


2
これは完璧に機能しました-Kubuntuの仲間のユーザー。
ジョン

ありがとう!Kubuntuで問題を解決しました。
ДмитрийПолянин

3

snap run meshlabターミナルから実行して停止する必要があります。アプリケーションリストにMeshlabが表示れます。


3

他の人の投稿にはコメントできませんでした。ただし、これはFedora 28で私を助けたdsagerの回答に追加することです(私が知る限り、Waylandを使用しています)

〜/ .bash_profileに次の断片を追加して、/ var / lib / snapd / desktop / applicationsの各ファイルにログイン時にリンクします。同様に、for行とif行のパスを切り替えて、lnをrmに置き換えることで、存在しないアプリのリンクを削除するように変更できます。

for i in /var/lib/snapd/desktop/applications/*.desktop; do
    if [ ! -f ~/.local/share/applications/${i##*/} ];then
            ln -s /var/lib/snapd/desktop/applications/${i##*/} ~/.local/share/applications/${i##*/};
    fi;
done

これを実現する方法はおそらくいくつかありますが、機能します。


1
の無駄な使用lsfor in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ...代わりに使用してください。これを達成するより短い方法はそうでしょうln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/null
デビッドフォースター

最初の例を実行する方法があることは知っていましたが、最初にこれを書いていたときに$ {i ## * /}の部分を思い出せませんでした。投稿を編集して、そのバリアントを含めます。ただし、後者の提案では、リンクが既に存在するかどうかは確認されないため、lnコマンドは無駄に再実行されます。実際、実行中にスピンアップするプロセスの数を減らすために、grepも回避する方法を見つけたかったのです。コメントありがとうございます。
エリックニコノヴィッチ

2番目の提案で、ターゲットファイルが既に存在するかどうかを確認し、その場合はエラーメッセージを出力します(リダイレクトされ/dev/null、抑制されます)。それは「役に立たない」何もしない:それはフォーク&execがだ単一の時間と、1回のシステムコールを行うsymlink(2)か、symlinkat(2)一致する各ファイルに対して。ループを使用してファイルタイプ(stat(2))をチェックし、それから(条件付きで)ln(1)起動symlink*(2)するfork&exec を使用すると、さらに「役に立たない」作業になります。
デビッドフォースター

1

ブレンダーと同じこと。

snap run blender

動作しますが、問題は解決しませんでした。

blender.desktopから)にコピーする/snap/blender/current/blender.desktop必要があり、その後すべてが修正されました。ブレンダーはgnomeメニューに表示され、nautilusはそれをファイルに関連付けます。/usr/share/applicationssudo.blend

私にはスナップとノームの間にある種の亀裂のように見えます。おそらく私たちが必要とするのは、きびきびしたgnomeです(または、それは小人のスナップです; ^)。


1
こんにちは、私はあなたが言ったことをやりましたが、私はこれをやったすべてのプログラムに2つのアイコンを持っています... i.imgur.com/aamlQJZ.pngを参照してください。
Cirelli94

1

コピーアプリケーションからショートカット/var/lib/snapd/desktop/applications//usr/share/applications/

例: sudo cp /var/lib/snapd/desktop/applications/brave_brave.desktop /usr/share/applications/

GalliumOS 3.0(Xubuntuベース)でこれをしなければなりませんでした


0

Ubuntu 18.04で同じ問題に遭遇しました。Waylandの問題のようです。私にとっての解決策は、WaylandからXorgに切り替えることでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.