____ ____ ____
/ __ \/ __ \/ __ \
/ /_/ / /_/ / / / /
\____/ .___/_/ /_/
/_/
The opn command lets you open files and URLs with associated
programs. It's intended to "just work" and to be trivial to
configure. Its configuration resides in ~/.opnconfig; here's an
example:
[browser]
browser: chromium
[associations]
mupdf: .pdf
emacs: .lhs .hs .py .c
chromium: .png .jpg .html .txt
mpv: .avi .mpg .mp4
djview: .djvu
With this configuration, PDFs would open in mupdf; Haskell, Python and
C source files in emacs, etc. If asked to open a file with no
matching extension, or a file without an extension, opn tries to be a
bit smart. If, for example, one runs
opn foo.h
then the header file foo.h would be opened in emacs. The reason is
that such files have mime type text/x-c, and, as files with the
extension '.c' shares this mime type, opn "guesses" that '.h' files
also should be opened with emacs.
Both [browser] and [associations] sections must be present and
nonempty in ~/.opnconfig. The [browser] section should in fact
always have exactly one key, namely browser. So a (close to) minimal
configuration looks something like this:
[browser]
browser: chromium
[associations]
chromium: html
The browser is used for URLs and as a fallback, so with this
configuration all files and URLs would open in chromium.
Talking of chromium: on Linux chromium opens downloads using
xdg-open. This works pretty well if you are using a full desktop
environment like GNOME, KDE or Xfce, but less so if you are running a
light window manager such as i3 or xmonad. We can, however, exploit a
behavior of xdg-open to effectively replace it with opn. As a
fallback, when no supported desktop session is running, xdg-open uses
$BROWSER. Thus putting
export BROWSER=opn
in your .bashrc, or something similar for your favorite shell, will
"trick" chromium and xdg-open into using opn. This is my own main
use for opn.
For further info see the man page: https://github.com/akc/opn/blob/master/opn.md.