15

I have a .desktop file to start a python program in a specific conda environment, like this:

[Desktop Entry]
Version=1.0
Name=Qutebrowser
GenericName=Web Browser
Comment=View and edit files
MimeType=text/html;
Exec=bash -c "source /vol/home/kaipingga/anaconda3/bin/activate qutebrowser; qutebrowser"
Icon=/vol/home/kaipingga/.config/qutebrowser.svg
Type=Application
Terminal=false
Categories=Network;Utility;X-Python;
StartupWMClass=Qutebrowser
X-Desktop-File-Install-Version=0.20

This used to work, but I tweaked my python environment recently.

Now, in a terminal the same command

$ bash -c "source /vol/home/kaipingga/anaconda3/bin/activate qutebrowser; qutebrowser"

runs the application, but the .desktop file does not. How do I find out due to what error that is?

My other .desktop files run fine, I assume something goes wrong with my Python environment, which is quite hackish for the moment (which is the main reason to run this in a dedicated conda environment to start with).

Zachary Brady originally suggested (but there are issues) xdg-open might run .desktop files, but it gives me a message box saying

Error

Failed to add a plugin to the panel

No running instance of xfce4-panel was found

both for this .desktop and for another one that otherwise works. (I'm running plain Ubuntu, no xfce).

3
  • I deleted my answer after reading more into it xdg-open has been bugged for quite a while and only opens the desktop icons in text editors... Oct 27, 2016 at 15:05
  • It turns out that the problem was an unsubstituted ~ (appearing as “~”, not as “/home/anaphory”) in the Python path, which I found out by adding env > check; in the middle of the command. But I'm sure there is a better way to debug this!
    – Anaphory
    Oct 27, 2016 at 15:23
  • Desktop files are executed via menus, panels, or file managers. Which one are you using? Aug 10, 2020 at 14:30

4 Answers 4

7

You can also use the validation tool desktop-file-validate to find more problems.

(see also: How to validate/verify .desktop files?)

# Result for your example
$ desktop-file-validate qutebrowser.desktop 
test.desktop: hint: value "Network;Utility;X-Python;" for key "Categories"
in group "Desktop Entry" contains more than one main category; application
might appear more than once in the application menu
7

I normally add the following to see what is being executed:

Terminal=true
TerminalOptions=\s--noclose
1
2

On Linux Mint, the File Manager service is named nemo, nemo can be exited by issuing:

nemo -q

With your file manager stopped, you can open it in a terminal

nemo

It will now print its log to this terminal, when you go to open your *.desktop file, you should be able to see the stdout of your *.desktop's Exec line.

1
  • Oh, and when your done debugging, Ctrl+C the terminal running nemo, and open it via your start menu, or relog your desktop session. Mar 23, 2017 at 2:14
0

xdg-open and exo-open are used for opening files (in their respective associated program). They were never meant to execute anything on their own. For executing the command defined by a desktop, you may use dex.

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.