opn: Open files or URLs using associated programs.

[ application, bsd3, console, program ] [ Propose Tags ]

The opn command lets you open files and URLs with associated programs. It's intended to "just work" and to be trivial to configure. See the README at https://github.com/akc/opn for further info.

[Skip to Readme]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS] 0.1.0, 0.1.1, 0.1.2, 0.1.3
Dependencies base (>=4 && <5), directory, filepath, ini, network-uri, optparse-applicative (>=0.10.0), process, text, unordered-containers [details]
License BSD-3-Clause
Author Anders Claesson
Maintainer anders.claesson@gmail.com
Category Application, Console
Home page http://github.com/akc/opn
Source repo head: git clone git://github.com/akc/opn.git
Uploaded by AndersClaesson at 2017-12-30T20:33:22Z
Reverse Dependencies 1 direct, 0 indirect [details]
Executables opn
Downloads 3026 total (13 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2018-01-01 [all 2 reports]

Readme for opn-0.1.3

[back to package description]
  ____  ____  ____
 / __ \/ __ \/ __ \
/ /_/ / /_/ / / / /
\____/ .___/_/ /_/

Build Status

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: chromium

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: chromium

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.