Execute sh script from *.desktop file?
Solution 1
You didn't mention what you have tried, so try this:
[Desktop Entry]
Name=someName
Comment=
Exec=/path/to/script.sh
Icon=/path/to/icon
Terminal=false
Type=Application
Make sure that your script is executable, like this:
sudo chmod +x /path/to/script.sh
It also won't work with if your script uses the sudo
command, or anything else that requires user input.
If you want it to open a terminal window when you run it (if you needed to add input or watch the output) set Terminal
to true.
Terminal=true
Solution 2
Use gnome-desktop-item-edit
:
gnome-desktop-item-edit --create-new /path/to/new/launcher
# Usually, one does (create launcher in current directory) :
gnome-desktop-item-edit --create-new .
You'll be graphically prompted for those settings. Here's one of my launcher, which I created with this tool :
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_GB]=/path/to/icon/for/en_GB.png
Name[en_GB]=Name_for_en_GB
Exec=/path/to/shell/script.sh
Comment[en_GB]=Some comment for en_GB
Name=Launcher Name
Comment=Some comment.
Icon=/path/to/icon/file.png
The en_GB
specific settings are not mandatory. Feel free to fill in with identical values.
Solution 3
Make sure the first command of the bash script is cd "${0%/*}"
if nothing appears: this command changes the current working dir into the directory containing the script as most shell scripts work with relative paths starting from their dir.
Related videos on Youtube
Erikas
Updated on September 18, 2022Comments
-
Erikas over 1 year
What I want to do at all, is that: Create script that has icon on it. So I know only one way - file.desktop file with icon. Settings icon on it was successful, but I have no luck setting EXEC value :/
Can someone explain me a bit how to create executable script with icon on it? create .desktop file and link it to that script? Can someone give me structure of that .desktop file?
-
user3804598 over 6 yearsBOTH the desktop file and the script must be executable. Otherwise it didn't work for me.
-
tom_mai78101 over 3 yearsIn Ubuntu 20.04.1 LTS, you will also need to add
#!/bin/bash
abovecd "${0%/*}"
in the bash script the DESKTOP file is pointing to, for it to be registered in the Activities pane. -
Frank Nocke over 2 yearsI tried your (understandable approach), had to refine it to properly handle space-containing paths (automatically passed on in single quotes) → see here
-
Pysis over 2 yearsMay need
desktop-file-edit
,desktop-file-install
, anddesktop-file-validate
now. Also seems to bedesktoptojson
as well.