20

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).

Anaphory
  • 712

5 Answers5

11

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
Jonas Stein
  • 4,078
  • 4
  • 36
  • 55
  • That could be a useful program. Alas I tried it with a deliberately non-existant file path for the Icon and it reported nothing wrong. – user7543 May 31 '23 at 11:42
8

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

Terminal=true
TerminalOptions=\s--noclose
user375770
  • 81
  • 1
  • 1
1

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.

ThorSummoner
  • 4,422
  • Oh, and when your done debugging, Ctrl+C the terminal running nemo, and open it via your start menu, or relog your desktop session. – ThorSummoner Mar 23 '17 at 02:14
  • It is rather the file manager of Cinnamon desktop which is maintained by the mint project https://github.com/linuxmint/nemo – Jonas Stein May 17 '23 at 09:26
1

I've been debugging a desktop file and found this useful article on the archlinux website.

https://wiki.archlinux.org/title/desktop_entries#Run_a_desktop_file_from_a_terminal

If gtk3 is installed, run gtk-launch application.desktop.
Or install the dex package and run dex /path/to/application.desktop.

It helped me see there was something wrong when misquoting my arguments. But in my case, I've got a successful result with gtk-launch application.desktop but not when launching through the Ubuntu 20.04 launcher

iNulty
  • 111
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.

Hermann
  • 6,148