Skip to content

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xopen
======

xopen is a simple, fast and suckless replacement of xdg-open.
It determines the appropriate application to open a file or URL
based on the user-defined extension-command 'pairs' in config.h.
It also has optional MIME detection support using libmagic.

config.h has the author's preferred applications on Xubuntu.
Users should replace those with their preferences and compile xopen.
The utility is not supposed to be included in any distro.

Features
--------
* Lightweight and fast
* Minimal configuration
* Minimal dependencies
* File extention detection
* MIME detection (compile-in)
* Works on UNIX-like systems

Installation
------------
	$ make
	$ sudo make install

To enable MIME detection, install the libmagic development package
from the distro's standard package manager and compile the feature in.
For example, on Ubuntu (and family):

	$ sudo apt install libmagic-dev
	$ make O_MAGIC=1
	$ sudo make install

Usage
-----
	$ xopen music.mp3
	$ xopen https://www.youtube.com/watch?v=PVD1LNDxOnc

To use with file manager nnn (https://github.com/jarun/nnn), run:

	$ NNN_OPENER=xopen nnn "$@"

To let nnn handle text files in the terminal and xopen the rest:

	$ NNN_OPENER=xopen nnn -eE "$@"

config.h
--------
xopen uses config.h for configuration,

New 'pairs' can be added with easy to use macros P and WEB_PREFIX,

	static const Pair pairs[] = {

		P( "\\.mp3", "st", "-e", "mplayer", "%s");

		P( WEB_PREFIX("github.com") "/([^/]+)/([^/]+)/actions",
						"gh run list --repo %1/%2/%3" )
		...

	};

For the input,

	$ xopen 'https://www.github.com/jarun/xopen'

We get,

	%1 - https://www.github.com
	%2 - jarun
	%3 - xopen

	%s - https://www.github.com/jarun/xopen

%0-%9 and %s are available for substituion.

To know more the about capture group sytax, see regex(7).

xopen uses 'posix_spawnp()' to spawn processes faster.
So the following would NOT work.

	/* config.h */

	P( "\\.gif$",
		"wget", "-O", "/tmp/tmp.gif %s && gifview -a /tmp/tmp_gifview.gif")

Credits
-------
Forked from chndlr - https://github.com/bharatvaj/chndlr

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages