64

Just updated to Ubuntu 16.04 & trying snap packages for first time.

So I needed meshlab to view some stl files. Ran in to issue with p-i-t-n log in. Found that command line install of snap packages does not need the log in. Did:

sudo snap install meshlab

and hey presto meshlap installed, no pitn log in. Works fine from command line. However program does not show up in the launcher. Why is this? Do snap packages not show up in launcher? How can I fix this?

0

16 Answers 16

72

If you are using zsh, the snap binary and desktop directories will not automatically be added to your environment variables. In order to solve this, I added the following line to /etc/zsh/zprofile (taken from Arch):

emulate sh -c 'source /etc/profile'

This will process your /etc/profile file with bash emulation, which in turn sources /etc/profile.d/* and sets the proper PATHs, etc.

To add only the snap directories to your path, without including all the rest of the default bash profile:

emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'
6
  • 2
    Thanks! Works well on 17.10 too. Switching to zsh brought up this problem for me aswell. Feb 11, 2018 at 12:07
  • 2
    They should fix this in the install process or add a FAQ/Troubleshooting steps for snap.
    – BradErzwh
    Mar 10, 2018 at 22:55
  • 1
    Thanks, worked for me on 18.10. Hope this will be fixed somehow in future. Nov 2, 2018 at 10:23
  • 2
    Brilliant, unfortunately its still a problem on 19.04
    – jhole89
    Apr 18, 2019 at 19:16
  • 4
    maybe obvious to some but login / logout after change Jan 24, 2020 at 9:12
19

It's built into the snap system, but you have to add the link to your dash. To start the program type

snap run meshlab

once it's up and running, right click on the icon and click on "add to dash".

1
  • Under rated solution. Apr 27 at 5:52
19

For me, it also seems to be related to the combination of Wayland/ZSH under Ubuntu 18.04 - even though /var/lib/snapd/desktop is listed in the XDG_DATA_DIRS variable (this is done by /etc/profile.d/apps-bin-path.sh), the launcher doesn't recognize apps from that folder.

A quick workaround is to sym-link the desired desktop files, for example:

ln -s /var/lib/snapd/desktop/applications/rubymine_rubymine.desktop .local/share/applications
1
  • I had the same problem with discord on Kali Linux. I did what you recommended but copied the .desktop to my user ~/Desktop and executed it by clicking on the newly created desktop icon. cp /var/lib/snapd/desktop/applications/discord_discord.desktop ~/Desktop
    – Toguko
    Jan 9 at 2:40
18

Copy applications shortcut from /var/lib/snapd/desktop/applications/ to /usr/share/applications/

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

I had to do this on GalliumOS 3.0 (Xubuntu-based)

1
  • 2
    Easy and straightforward
    – evening_g
    Aug 17, 2021 at 22:53
13

Running Kubuntu 18.04 the solution for me was adding

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

to a custom file like snap-apps.sh in ~/.config/plasma-workspace/env. But that applies only to Plasma 5 and might be fixed in Ubuntu 18.10 already.

As dsager's answer already mentioned the usual /etc/profile.d/apps-bin-path.sh does not seem to work.

2
  • 4
    This worked perfectly - fellow Kubuntu user.
    – john
    Apr 23, 2019 at 19:07
  • Had this issue after converting Ubuntu 22.10 to Kubuntu 22.10, this fixed it. May 26 at 15:19
6

Do snap packages not show up in launcher?

They do as long as the snap ships proper .desktop files. Only Meshlab's meshlabserver has a proper desktop file (and indeed, it shows up in my launcher). The meshlab .desktop file, however, is attempting to exec meshlab.meshlab, when it should just be using meshlab. As a result, it doesn't show up.

How can I fix this?

If you run snap info meshlab you'll see contact info for the publisher. I suggest you report a bug to them. Until then, you can always run meshlab from the CLI, or create your own .desktop file for it.

5

I couldn't comment on someone else's post. However, this is to add to dsager's answer which helped me on Fedora 28 (which as far as I can tell, uses Wayland)

I added the following snip to my ~/.bash_profile to link on login each file in /var/lib/snapd/desktop/applications. Similarly this could be modified to remove the links for apps which do not exist anymore by switching the paths in the for line and the if line then replacing ln with an 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

There's probably a handful of different ways to accomplish this, but it works.

3
  • 1
    Useless use of ls. Use for in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ... instead. A shorter way to achieve this would be ln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/null. Jul 27, 2018 at 16:44
  • I knew there was a way to execute your first example, however I couldn't remember the ${i##*/} portion when I was initially writing this. I'll edit my post to include that variant. However, your latter suggestion does not check if the link already exists, thus uselessly re-executing the ln command. In fact, I wanted to find a way to avoid grep as well to reduce the number of processes spun up while executing. Thank's for your comment. Jul 29, 2018 at 17:06
  • My second suggestion does check if the target file exists already and, if that's the case, prints an error message (redirect to /dev/null and thus suppressed). It doesn't do anything “useless”: it forks & exec’s a single time and makes one system call to symlink(2) or symlinkat(2) for each matching file. If you use a loop to check for file type (stat(2)) and then (conditionally) fork & exec ln(1) which invokes symlink*(2) that’s a lot more “useless” work. Jul 29, 2018 at 17:36
3

You have to run snap run meshlab from terminal and stop it, then you will see Meshlab in your application list

3

Snap binaries are stored in /snap/bin, at least in Debian 10 (buster). Add the directory to $PATH and reload bash profile, ~/.bashrc.

echo -n "export PATH=/snap/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc
3
3

For me help command

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

This link folder with snap application shortcuts to my local folder. And now I can run snap applications as other.

1

Same thing with blender.

snap run blender

does work, however did not fix the problem.

I had to copy blender.desktop from /snap/blender/current/blender.desktop to /usr/share/applications (with sudo) and then all was fixed: blender shows in the gnome menus and nautilus associates it with .blend files.

Looks like some sort of crack between snaps and gnomes to me. Perhaps what we need is a snappy gnome (or is it a gnomey snap ;^).

1
  • 1
    Hi, I did what you told but I've now two icons for every program I've did this... see i.imgur.com/aamlQJZ.png Is this happened to you too?
    – Cirelli94
    Dec 29, 2017 at 14:24
1

On my machine all snaps that are installed only show in the launcher after I log off and back on. I just installed Krita and Standard Notes. Logged off and back on and it was in the launcher. Same thing with Spotify.

1

I was having an issue that after I installed zsh, none of my Snap packages were showing up in the start menu, or on my Latte Dock on KDE (no apps were showing up even though they existed).

What fixed it was one of the answers above.

I did:

sudo cp /var/lib/snapd/desktop/applications/* /usr/share/applications/

You may need to restart your computer after doing it to cause the apps to show.

0

I ran in to the same issue on Ubuntu 18.04. It seems to be a problem with Wayland. The solution for me was to switch back from Wayland to Xorg.

0

I have the regular bash-shell (not zsh) in Kubuntu 21.10 and I had this problem with one snap only (Opera) while others were visible in launcher.

Here is a GUI way to manually solve the problem in KDE Plasma:

Open with text-editor the .desktop-file of the program in

/var/lib/snapd/desktop/applications

enter image description here

and copy the path of the executable to "Command:" in KDE Menu Editor (opens when you right-click launcher and choose Edit Applications).

From the .desktop-file also notice the path to location of the icon of the program and in KDE Menu Editor browse to that location (if you don't find a suitable icon from current icon theme).

enter image description here

-1

I am currently using Pop-OS 22.04.

And I also came across this problem.

By default pop-os doesn't come with snaps so I installed and added some apps. However they did not appear in the pop-os menu, only via the terminal.

After using the command

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

the applications appeared in the menu.

1
  • POP OS is off-topic.
    – Pilot6
    Jun 4 at 16:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.