GitHunt
BH

bharatvaj/chndlr

xdg-open in c, fork of soap

chndlr

chndlr is a simple, fast, and suckless replacement for xdg-open.
It determines the appropriate application to open a file or URL based on
user-defined rules in config.h.

Features

  • Minimal and fast
  • No unnecessary dependencies
  • Proven config.h configuration
  • Works on UNIX-like systems

Installation

$ make
$ sudo make install

Usage

$ chndlr music.mp3
$ chndlr https://www.youtube.com/watch?v=dQw4w9WgXcQ

config.h

chndlr uses config.h for configuration,

Entries to 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,

$ chndlr 'https://www.github.com/bharatvaj/chndlr'

We get,

%1 - https://www.github.com
%2 - bharatvaj
%3 - chndlr

%s - https://www.github.com/bharatvaj/chndlr

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

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

chndlr uses 'execvp()' instead of 'system()' to speed up launching processes.
This means that the following would NOT work.

/* config.h */

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

Credits

Forked from soap.
https://github.com/FRIGN/soap

Languages

C79.1%Makefile20.9%

Contributors

MIT License
Created February 18, 2025
Updated October 8, 2025
bharatvaj/chndlr | GitHunt