snap install programs not in launcher
up vote
18
down vote
favorite
Just updated to 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?
launcher snap
add a comment |
up vote
18
down vote
favorite
Just updated to 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?
launcher snap
add a comment |
up vote
18
down vote
favorite
up vote
18
down vote
favorite
Just updated to 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?
launcher snap
Just updated to 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?
launcher snap
launcher snap
edited May 1 '17 at 16:15
dobey
32.3k33585
32.3k33585
asked May 1 '17 at 16:05
Ron
109114
109114
add a comment |
add a comment |
9 Answers
9
active
oldest
votes
up vote
20
down vote
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'
1
Thanks! Works well on 17.10 too. Switching to zsh brought up this problem for me aswell.
– danwit
Feb 11 at 12:07
1
They should fix this in the install process or add a FAQ/Troubleshooting steps for snap.
– BradErzwh
Mar 10 at 22:55
Thanks, worked for me on 18.10. Hope this will be fixed somehow in future.
– Pavel Davydov
Nov 2 at 10:23
add a comment |
up vote
8
down vote
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".
add a comment |
up vote
5
down vote
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.
add a comment |
up vote
2
down vote
You have to run snap run meshlab
from terminal and stop it, then you will see Meshlab in your application list
add a comment |
up vote
1
down vote
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
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 '17 at 14:24
add a comment |
up vote
1
down vote
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
add a comment |
up vote
0
down vote
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.
add a comment |
up vote
0
down vote
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.
1
Useless use ofls
. Usefor in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ...
instead. A shorter way to achieve this would beln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/null
.
– David Foerster
Jul 27 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.
– Eric Niconovich
Jul 29 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 tosymlink(2)
orsymlinkat(2)
for each matching file. If you use a loop to check for file type (stat(2)
) and then (conditionally) fork & execln(1)
which invokessymlink*(2)
that’s a lot more “useless” work.
– David Foerster
Jul 29 at 17:36
add a comment |
up vote
0
down vote
Running Kubuntu 18.04 the solution for me as 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 already mentioned in his answer the usual /etc/profile.d/apps-bin-path.sh
does not seem to work.
add a comment |
9 Answers
9
active
oldest
votes
9 Answers
9
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
20
down vote
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'
1
Thanks! Works well on 17.10 too. Switching to zsh brought up this problem for me aswell.
– danwit
Feb 11 at 12:07
1
They should fix this in the install process or add a FAQ/Troubleshooting steps for snap.
– BradErzwh
Mar 10 at 22:55
Thanks, worked for me on 18.10. Hope this will be fixed somehow in future.
– Pavel Davydov
Nov 2 at 10:23
add a comment |
up vote
20
down vote
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'
1
Thanks! Works well on 17.10 too. Switching to zsh brought up this problem for me aswell.
– danwit
Feb 11 at 12:07
1
They should fix this in the install process or add a FAQ/Troubleshooting steps for snap.
– BradErzwh
Mar 10 at 22:55
Thanks, worked for me on 18.10. Hope this will be fixed somehow in future.
– Pavel Davydov
Nov 2 at 10:23
add a comment |
up vote
20
down vote
up vote
20
down vote
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'
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'
edited Jan 23 at 8:22
muru
134k19282482
134k19282482
answered Dec 25 '17 at 23:13
hackel
39127
39127
1
Thanks! Works well on 17.10 too. Switching to zsh brought up this problem for me aswell.
– danwit
Feb 11 at 12:07
1
They should fix this in the install process or add a FAQ/Troubleshooting steps for snap.
– BradErzwh
Mar 10 at 22:55
Thanks, worked for me on 18.10. Hope this will be fixed somehow in future.
– Pavel Davydov
Nov 2 at 10:23
add a comment |
1
Thanks! Works well on 17.10 too. Switching to zsh brought up this problem for me aswell.
– danwit
Feb 11 at 12:07
1
They should fix this in the install process or add a FAQ/Troubleshooting steps for snap.
– BradErzwh
Mar 10 at 22:55
Thanks, worked for me on 18.10. Hope this will be fixed somehow in future.
– Pavel Davydov
Nov 2 at 10:23
1
1
Thanks! Works well on 17.10 too. Switching to zsh brought up this problem for me aswell.
– danwit
Feb 11 at 12:07
Thanks! Works well on 17.10 too. Switching to zsh brought up this problem for me aswell.
– danwit
Feb 11 at 12:07
1
1
They should fix this in the install process or add a FAQ/Troubleshooting steps for snap.
– BradErzwh
Mar 10 at 22:55
They should fix this in the install process or add a FAQ/Troubleshooting steps for snap.
– BradErzwh
Mar 10 at 22:55
Thanks, worked for me on 18.10. Hope this will be fixed somehow in future.
– Pavel Davydov
Nov 2 at 10:23
Thanks, worked for me on 18.10. Hope this will be fixed somehow in future.
– Pavel Davydov
Nov 2 at 10:23
add a comment |
up vote
8
down vote
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".
add a comment |
up vote
8
down vote
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".
add a comment |
up vote
8
down vote
up vote
8
down vote
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".
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".
edited Jun 13 '17 at 22:14
answered Jun 2 '17 at 17:19
William MacDonald
1,07454
1,07454
add a comment |
add a comment |
up vote
5
down vote
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.
add a comment |
up vote
5
down vote
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.
add a comment |
up vote
5
down vote
up vote
5
down vote
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.
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.
answered May 1 '17 at 16:13
Kyle
4,0931219
4,0931219
add a comment |
add a comment |
up vote
2
down vote
You have to run snap run meshlab
from terminal and stop it, then you will see Meshlab in your application list
add a comment |
up vote
2
down vote
You have to run snap run meshlab
from terminal and stop it, then you will see Meshlab in your application list
add a comment |
up vote
2
down vote
up vote
2
down vote
You have to run snap run meshlab
from terminal and stop it, then you will see Meshlab in your application list
You have to run snap run meshlab
from terminal and stop it, then you will see Meshlab in your application list
answered Dec 9 '17 at 14:30
Kyaw Kyaw Soe
1211
1211
add a comment |
add a comment |
up vote
1
down vote
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
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 '17 at 14:24
add a comment |
up vote
1
down vote
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
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 '17 at 14:24
add a comment |
up vote
1
down vote
up vote
1
down vote
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 ;^).
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 ;^).
edited Nov 12 '17 at 7:02
Zanna
48.9k13123234
48.9k13123234
answered Nov 10 '17 at 18:13
Mike Ward
211
211
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 '17 at 14:24
add a comment |
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 '17 at 14:24
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 '17 at 14:24
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 '17 at 14:24
add a comment |
up vote
1
down vote
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
add a comment |
up vote
1
down vote
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
add a comment |
up vote
1
down vote
up vote
1
down vote
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
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
edited Jul 27 at 16:41
David Foerster
27.3k1363107
27.3k1363107
answered Jul 2 at 7:48
dsager
111
111
add a comment |
add a comment |
up vote
0
down vote
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.
add a comment |
up vote
0
down vote
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.
add a comment |
up vote
0
down vote
up vote
0
down vote
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.
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.
answered Apr 29 at 15:42
romaind
1
1
add a comment |
add a comment |
up vote
0
down vote
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.
1
Useless use ofls
. Usefor in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ...
instead. A shorter way to achieve this would beln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/null
.
– David Foerster
Jul 27 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.
– Eric Niconovich
Jul 29 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 tosymlink(2)
orsymlinkat(2)
for each matching file. If you use a loop to check for file type (stat(2)
) and then (conditionally) fork & execln(1)
which invokessymlink*(2)
that’s a lot more “useless” work.
– David Foerster
Jul 29 at 17:36
add a comment |
up vote
0
down vote
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.
1
Useless use ofls
. Usefor in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ...
instead. A shorter way to achieve this would beln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/null
.
– David Foerster
Jul 27 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.
– Eric Niconovich
Jul 29 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 tosymlink(2)
orsymlinkat(2)
for each matching file. If you use a loop to check for file type (stat(2)
) and then (conditionally) fork & execln(1)
which invokessymlink*(2)
that’s a lot more “useless” work.
– David Foerster
Jul 29 at 17:36
add a comment |
up vote
0
down vote
up vote
0
down vote
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.
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.
edited Jul 29 at 17:12
answered Jul 27 at 16:17
Eric Niconovich
12
12
1
Useless use ofls
. Usefor in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ...
instead. A shorter way to achieve this would beln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/null
.
– David Foerster
Jul 27 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.
– Eric Niconovich
Jul 29 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 tosymlink(2)
orsymlinkat(2)
for each matching file. If you use a loop to check for file type (stat(2)
) and then (conditionally) fork & execln(1)
which invokessymlink*(2)
that’s a lot more “useless” work.
– David Foerster
Jul 29 at 17:36
add a comment |
1
Useless use ofls
. Usefor in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ...
instead. A shorter way to achieve this would beln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/null
.
– David Foerster
Jul 27 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.
– Eric Niconovich
Jul 29 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 tosymlink(2)
orsymlinkat(2)
for each matching file. If you use a loop to check for file type (stat(2)
) and then (conditionally) fork & execln(1)
which invokessymlink*(2)
that’s a lot more “useless” work.
– David Foerster
Jul 29 at 17:36
1
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
.– David Foerster
Jul 27 at 16:44
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
.– David Foerster
Jul 27 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.
– Eric Niconovich
Jul 29 at 17:06
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.
– Eric Niconovich
Jul 29 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.– David Foerster
Jul 29 at 17:36
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.– David Foerster
Jul 29 at 17:36
add a comment |
up vote
0
down vote
Running Kubuntu 18.04 the solution for me as 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 already mentioned in his answer the usual /etc/profile.d/apps-bin-path.sh
does not seem to work.
add a comment |
up vote
0
down vote
Running Kubuntu 18.04 the solution for me as 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 already mentioned in his answer the usual /etc/profile.d/apps-bin-path.sh
does not seem to work.
add a comment |
up vote
0
down vote
up vote
0
down vote
Running Kubuntu 18.04 the solution for me as 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 already mentioned in his answer the usual /etc/profile.d/apps-bin-path.sh
does not seem to work.
Running Kubuntu 18.04 the solution for me as 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 already mentioned in his answer the usual /etc/profile.d/apps-bin-path.sh
does not seem to work.
answered Oct 22 at 23:09
A. Ziegler
1012
1012
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f910821%2fsnap-install-programs-not-in-launcher%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown