Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free.

I did the following procedures to create a application launcher but it doesn't work.

  1. create shell script named shell.sh with the following content:

    java -jar foo.jar
    
  2. Added execution permission: sudo chmod +x shell.sh
  3. Created .desktop file in /usr/share/applications/ with the content:

    [Desktop Entry]
    Name=foo
    Terminal=false
    Exec=/path/shell.sh
    Type=Application
    Icon=/path/icon.png
    Categories=Utility;
    

Then I have an application with icon, but it couldn't run, while double click shell.sh works. What's wrong?

share|improve this question

3 Answers 3

up vote 3 down vote accepted

Here are some tips that can help you solve your problem:

  1. Replace Exec=/path/shell.sh with Exec=sh /path/shell.sh or Exec=bash /path/shell.sh
  2. Add execution permission to the .desktop file

    sudo chmod +x /usr/share/application/<your_desktop_file>
    

Also unless you want that launcher to be available system-wide (ie: to all users) you can place the .desktop file in ~/.local/share/applications. As that folder is located in your home folder you don't need sudo to create/edit the file.

share|improve this answer
    
Thanks. I've tried but the problem remains. Maybe jar file couldn't be executed with desktop application launcher? –  iceboal Dec 18 '12 at 22:02
    
What happens if you replace Exec with Exec="java -jar /full/path/to/foo.jar"? –  Salem Dec 18 '12 at 23:45
    
I used Exec = java -jar /path/foo.jar and it work. Thanks! So what's wrong with the shell script? –  iceboal Dec 19 '12 at 9:58
1  
You should have some problem in the path used in Exec. I created a similar setup and if the .desktop and the .sh files are both executable it works. Check if you have spaces or some special characters in the path that should be escaped. –  Salem Dec 19 '12 at 13:22

I don't know what's wrong with your entry, but I use the following app to create custom launchers. works in Unity too:

http://gtk-apps.org/content/show.php/Desktop+Entry+Editor?content=147818

Desktop Entry Editor is a GUI application for editing and creating application launchers for GNOME, KDE, XFCE, and any other desktop environment implementing the Desktop Entry Specification from freedesktop.org.

share|improve this answer

Be sure to check that you either

  1. use full paths in your shell file, e.g., in java -jar foo.java you need to replace foo.java with /full/path/to/foo.java
  2. set the Path property of the desktop entry, which defines the working directory for your script, i.e., the script executes relative to the specified working directory.

If you follow the second option your desktop entry will look something like this

[Desktop Entry]
Name=foo
Terminal=false
Exec=/full/path/to/shell.sh
Path=/full/path/to
Type=Application
Icon=/full/path/to/icon.png
Categories=Utility;
share|improve this answer
    
This did it for me, primarily you need the Path set –  thouliha Jun 14 at 3:07

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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