|
4 months ago | |
---|---|---|
devtools | 4 months ago | |
generated | 4 months ago | |
src | 4 months ago | |
tests | 4 months ago | |
vim | 3 years ago | |
.gitignore | 4 years ago | |
LICENSE | 4 years ago | |
README.md | 4 months ago | |
meson.build | 4 months ago | |
meson_options.txt | 4 months ago |
Yet Another xdg-open.
It's a file opener which replaces a well-known xdg-open script and extends its configuration capabilities. It was directly inspired by Rifle, a file opener for Ranger file manager.
Yaxo uses meson build system. The following commands will build and install its
Release version in /usr/local
:
$ meson build -Dbuildtype=release
$ ninja -C build
$ ninja -C build install
You can change installation path like this:
$ meson --prefix "${HOME}/.local" build
Yaxo searches for configuration in e.g. ~/.config/yaxo/yaxorc
. Each line of
yaxorc
contains a comma-separated list of conditions, followed by a colon,
followed by a command executed when all of conditions are met. Following
conditions are supported:
path <regex>
: regular expression matching a full path/URLext <regex>
: regular expression matching a file extensionmime <regex>
: regular expression matching file's mimetypescheme <regex>
: regular expression matching scheme of first passed argument
(e.g. file
or http
or ftp
, etc.)if <property>
: checking various settings of environment settings or passed
arguments. The following properties can be checked:
terminal
: set to true if yaxo is executed from a terminalX
: set to true if X server is running (DISPLAY
environment variable
is set)Wayland
: set to true if Wayland is running (WAYLAND_DISPLAY
environment variable is set)graphical
: set to true if any graphical environment is detectedexists
: set to true if checked argument exists on a file systemif <property>
can be negated by adding exclamation mark before a property
name (so for example if !terminal
assures that command is not executed inside
a terminal).
Conditions are checked from top to bottom. First command which matches all conditions is executed.
Example:
ext txt, if terminal: vim -- "$@"
ext txt, if X: xterm -e vim -- "$@"
# Different terminal for Wayland and X11
mime text/.*, if terminal: vim -- "$@"
mime text/.*, if Wayland: alacritty -e vim -- "$@"
mime text/.*, if X: st -e vim -- "$@"
# Images from the internet
scheme https?, path .*\.(png|jpg), if graphical: feh -- "$@"
# Browser.
ext x?html?, if graphical: firefox -- "$@"
ext x?html?, if terminal: w3m -- "$@"
scheme https?, if graphical: firefox -- "$@"
scheme https?, if terminal: w3m -- "$@"
# default file manager
mime inode/directory: vifm -- "$@"
# catch-all rules
ext .*, if terminal: vim -- "$@"
ext .*, if !terminal: st -e vim -- "$@"
$ meson build -Dtests=true
$ ninja -C build test