Thanks for the suggestion! I wasn't aware of shell-quote-argument, now it seems much more robust:
(setq citar-file-open-function '(lambda (file) (async-shell-command (format-message "sioyek %s" (shell-quote-argument file))))) I can't use browse-url-xdg-open because the PDF viewer I want to use it's not the system default one: when opening PDFs from Org-cite I expect to open academic documents, so I use Sioyek for them. However, this creates an annoying problem: now if I want to open two documents, when opening the second link Emacs asks "A command is running in the default buffer. Use a new buffer? (yes on no) " which is very annoying. I suppose that with xdg there's no problem. Do you have any idea how to make Emacs "not worry" about output buffers? Alessandro P.S. I'm afraid I can't follow you: what's the point with mailcap?