Posted at

fish shellでSnapアプリケーションがアプリ一覧に現れないときの対策

More than 1 year has passed since last update.

例によって防備録。


Ubuntu 18.04 LTSからSnapがインテグレートされた

これまでもSnapは使えたが、Ubuntu 18.04では最初から有効になっているのに加えて、command-not-foundでsnapがサポートされたことでいい感じになっている

todoroki@todoroki-VJZ13B ~> blender

Command 'blender' not found, but can be installed with:

sudo snap install blender
sudo apt install blender

See 'snap info blender' for additional versions.

ここで「snapがあるならそれで行こう」と思って sudo snap install blender をする


で、アプリケーションはいずこ…

インストールが終わって起動してみようと思い、Superキーを押して検索してみる も blender の名前はどこにもない。

「インストール失敗したのかな?」と考えてもう一度インストールを実行してみるも

snap "blender" is already installed, see "snap refresh --help"

と言われてしまう。

軽く調べると「Waylandのバグ」とか出てくる(※以前のバージョンで解決済み)のでログアウトしてXorgでログインし直すも特に回復しない。はて。


snapの.desktopファイルは違うディレクトリにある

もっとよく検索していくと同じような症状を訴えるzshユーザーに出会う。どうやらSnapのデスクトップファイルは他のアプリケーションと異なる場所にあるようで、そのパスがBash以外のシェルだと通っていないためapplicationsに blender が表示されなかったということなのね。

Debian でログインシェルをzshにしている人が snappy を使う場合の注意

上のリンクでは /etc/profile.d/apps-bin-path.sh の内容をzprofileに移しているが、それはちょっと感があるので別の方法でやってみる


fish shellで /etc/profile を読み込む

/etc/profile.d/apps-bin-path.sh 以外にも /etc/profile.d/ 以下に大事な設定があるかもしれないわけで、全て読み込むことで対応してみる。


bassのインストール

$ fisher edc/bass

これでBashスクリプトをFishで読めるようになる。


./.config/fish/config.fish 編集

# ↓これを追加する

bass source /etc/profile

# !問題があったらこっちにするといいかも(/etc/profile.d以下だけ読み込み)
if test -d /etc/profile.d
for i in /etc/profile.d/*.sh
bass source $i
end
end

これで再ログインしてエラーが何も出ていなければsnapアプリケーションがちゃんと表示されるようになるはず。


おまけ:snap雑感

Slackとかgnome-calculatorみたいな独自UI!!!!って感じのやつは違和感なく使える。

特にElectron製アプリケーションはいいのでは。(ただElectronアプリってもともとそんなに依存とかなさそうだしsnapの旨味があるかと言われると微妙な気も)

逆にInkscapeとかはGtkのテーマが適用されないので見た目がマッチしなくて(古き良きむきだしGtkのUI)微妙でしたね。。

グローバルのテーマを拾えない問題についてはSnapもFlatpakもこまっているっぽいのでどうにかなるといいね

Gtk+4とかだとやりやすくなるのかな?期待しましょう