chndlr

Personal fork of spm (simple password manager)

last commits

f8c09ab - Bharatvaj Hemanth2025-02-21 23:48
Use execvp() in place of system() for better performance
0ea885d - Bharatvaj Hemanth2025-02-18 18:00
Allow capture groups substitution with %1-%9
more
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