I'm creating a desktop for Linux. As a result, I'm creating a utility called ts-open
. However, when xdg-open
is run, I want it to open ts-open
when it detects that my desktop is running (just like it opens kde-open
in KDE.) Is there a way to do this? If it has to be coded into xdg-open
is there someone that I can speak to?
You'd need to patch xdg-open
to detect your desktop environment in detectDE()
, and add an open_...()
function that delegates to ts-open
.
Once your DE is ready, you should contact the xdg-utils
maintainers with a patch, either via a bug, or the mailing list.
-
So just to make sure that I'm getting this right, I need to modify
xdg-open
myself, and then once it works, send thexdg-utils
maintainers the modified version? – Victor Tran Jan 12 '17 at 11:51 -
Pretty much. "Once it works", and once your DE is released (and perhaps has traction...). You need to modify
xdg-open
yourself to test things while you're developing your DE anyway, but there's no point in submitting a patch until your DE is available to others. – Stephen Kitt Jan 12 '17 at 11:53
With all the respect to OP and to accepted answer, since xdg-open
actually opens anything with the x default application, could an alias possibly do the job?
The following test in my machine brings the taskmanager without a single warning....
$ alias xdg-open='xfce4-taskmanager'
So setting this alias xdg-open=ts-open
when your DE is loaded and unalias xdg-open when your DE is exited, is not enough or i'm missing something ....?
-
The problem is that I don't have control over that. For example, when I open Chrome, it internally uses
xdg-open
to open downloads. Unfortunately, I don't think I'll be able to set an alias in every application that the user opens. :) – Victor Tran Jan 12 '17 at 23:23 -
@VictorTran I have the feeling that once such an alias is set, even if
xdg-open
is called internally by Chrome should be redirected to the alias of xdg-open (ts-open). But i'm not sure if it works like this. If you want you can give it a try in the meantime :-) . I am not sure how fast xdg devs will implement your request, this is why i'm thinking "workarounds". – George Vasiliou Jan 12 '17 at 23:31 -
-
@VictorTran Another workaround would be to implement the wrapper comment of terdon. You could build a script with name xdg-open that will point to ts-open, rename old xdg-open to i.e xdg-openn and as soon as users log-out from your DE revert everything back to previous state (remove your script from /usr/bin and rename again the xdg-openn to xdg-open) – George Vasiliou Jan 12 '17 at 23:36
-
Unfortunately my app doesn't have root access (and that's a good thing, isn't it?) so I won't be able to do that. – Victor Tran Jan 12 '17 at 23:39
xdg-open
that callsts-open
if your desktop is running and the regularxdg-open
if it isn't? Is this something that has to ship with your software? Only for you? – terdon♦ Jan 12 '17 at 11:00ts-open
will ship with my software, andxdg-open
will already be present on the system (probably in /usr/bin.) I'd like applications (like Chrome) that are already usingxdg-open
to opents-open
like in any other desktop environment. – Victor Tran Jan 12 '17 at 11:03