Hi, xdg-open uses "xdg-mime query filetype" to find out the mime type of a given file. Depending on the desktop environment, xdg-mime uses different backends. In my case (i3 wm) it falls back to the generic code path, which uses
file --brief --dereference --mime-type Since --brief and --dereference are not recognized, xdg-mime returns an empty mime type and causes xdg-open to open the given file with a browser instead of using the preferred application. The following patch adds --brief and --dereference to file(1) to address this. Regards, Ralf Index: usr.bin/file/file.1 =================================================================== RCS file: /usr/cvs/openbsd/src/usr.bin/file/file.1,v retrieving revision 1.43 diff -u -u -r1.43 file.1 --- usr.bin/file/file.1 30 Jul 2015 11:13:24 -0000 1.43 +++ usr.bin/file/file.1 20 Dec 2015 11:13:37 -0000 @@ -83,7 +83,7 @@ .Pp The options are as follows: .Bl -tag -width indent -.It Fl b +.It Fl b , -brief Does not prepend filenames to output lines. .It Fl c Prints a summary of the parsed magic file; usually used for debugging. @@ -97,7 +97,7 @@ .Dq text/plain rather than .Dq ASCII text . -.It Fl L +.It Fl L , -dereference Causes symlinks to be followed. .It Fl s Attempts to read block and character device files, not just regular files. Index: usr.bin/file/file.c =================================================================== RCS file: /usr/cvs/openbsd/src/usr.bin/file/file.c,v retrieving revision 1.56 diff -u -u -r1.56 file.c --- usr.bin/file/file.c 5 Dec 2015 13:18:09 -0000 1.56 +++ usr.bin/file/file.c 20 Dec 2015 10:50:21 -0000 @@ -102,9 +102,11 @@ static FILE *magicfp; static struct option longopts[] = { - { "mime", no_argument, NULL, 'i' }, - { "mime-type", no_argument, NULL, 'i' }, - { NULL, 0, NULL, 0 } + { "brief", no_argument, NULL, 'b' }, + { "dereference", no_argument, NULL, 'L' }, + { "mime", no_argument, NULL, 'i' }, + { "mime-type", no_argument, NULL, 'i' }, + { NULL, 0, NULL, 0 } }; __dead void