Subject: bug#56013: 28.1; "gio open" and "xdg-open" fail silently under eshell

From: Jim Porter <[email-masked]>
Date: Fri, 17 Jun 2022 10:17:08 -0700

On 6/17/2022 4:59 AM, Lars Ingebrigtsen wrote:
> Andreas Schwab <[email-masked]> writes:
> 
>> See bug#44824.
> 
> Ah, right.  The fix proposed there was:
> 
>      org.el: Avoid xdg-open silent failure
>      
>      * lisp/org.el (org-open-file): Use 'pipe :connection-type instead of
>      'pty to prevent killing of background process on handler exit.
> 
> Perhaps Jim has some comments here; added to the CCs.

Yeah, this is an issue with how `start-file-process' is being called in 
Eshell (see `eshell-gather-process-output'). If I call `(setq 
process-connection-type nil)' before running gio in Eshell, it works fine.

There's *almost* an existing Eshell function that would solve this: 
`eshell-needs-pipe-p'. Currently, it only returns t if certain programs 
are being piped *to*, but we could enhance that to allow specifying that 
some programs need a "pipe" (i.e. for `process-connection-type' to be 
nil) all the time. Then we'd just need to add gio and xdg-open to 
`eshell-needs-pipe' (which should probably be a defcustom while we're 
there).