Code Monkey home page Code Monkey logo

opn's Introduction

  ____  ____  ____
 / __ \/ __ \/ __ \
/ /_/ / /_/ / / / /
\____/ .___/_/ /_/
    /_/            

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]
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.

opn's People

Contributors

akc avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.