1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
# This is the configuration file of "rifle", ranger's file executor/opener.
# Each line consists of conditions and a command. For each line the conditions
# are checked and if they are met, the respective command is run.
#
# Syntax:
# <condition1> , <condition2> , ... = command
#
# The command can contain these environment variables:
# $1-$9 | The n-th selected file
# $@ | All selected files
#
# If you use the special command "ask", rifle will ask you what program to run.
#
# Prefixing a condition with "!" will negate its result.
# These conditions are currently supported:
# match <regexp> | The regexp matches $1
# ext <regexp> | The regexp matches the extension of $1
# mime <regexp> | The regexp matches the mime type of $1
# name <regexp> | The regexp matches the basename of $1
# path <regexp> | The regexp matches the absolute path of $1
# has <program> | The program is installed (i.e. located in $PATH)
# env <variable> | The environment variable "variable" is non-empty
# file | $1 is a file
# directory | $1 is a directory
# number <n> | change the number of this command to n
# terminal | stdin, stderr and stdout are connected to a terminal
# X | $DISPLAY is not empty (i.e. Xorg runs)
#
# There are also pseudo-conditions which have a "side effect":
# flag <flags> | Change how the program is run. See below.
# label <label> | Assign a label or name to the command so it can
# | be started with :open_with <label> in ranger
# | or `rifle -p <label>` in the standalone executable.
# else | Always true.
#
# Flags are single characters which slightly transform the command:
# f | Fork the program, make it run in the background.
# | New command = setsid $command >& /dev/null &
# r | Execute the command with root permissions
# | New command = sudo $command
# t | Run the program in a new terminal. If $TERMCMD is not defined,
# | rifle will attempt to extract it from $TERM.
# | New command = $TERMCMD -e $command
# Note: The "New command" serves only as an illustration, the exact
# implementation may differ.
# Note: When using rifle in ranger, there is an additional flag "c" for
# only running the current file even if you have marked multiple files.
# view man pages
ext 1|2|3|4|5|6|7|8|9 = man "$@"
# editor for text files
mime ^text, label editor = "$EDITOR" -- "$@"
mime ^text, label weditor X, flag f t = "$EDITOR" -- "$@"
!mime ^text, ext xml|html|xhtml|csv|tex|py|pl|rb|sh|php = "$EDITOR" -- "$@"
!mime ^text, ext xml|html|xhtml|csv|tex|py|pl|rb|sh|php, X, flag f t = "$EDITOR" -- "$@"
# websites
ext x?html?, has firefox, X, flag f = firefox -- "$@"
ext x?html?, has qutebrowser, X, flag f = qutebrowser -- "$@"
ext x?html?, has elinks, terminal = elinks "$@"
# wine
ext exe, has wine, X, flag f = wine "$1"
# scripts
ext py, hash python = python -- "$1"
ext pl, hash perl = perl -- "$1"
ext rb, hash ruby = ruby -- "$1"
ext js, hash node = node -- "$1"
ext sh, hash sh = sh -- "$1"
ext php, hash php = php -- "$1"
# audio / video
mime ^audio, terminal, has mpv = mpv --no-video -- "$@"
mime ^audio, !terminal, has mpv, X, flag f = mpv --force-window=yes -- "$@"
mime ^audio, terminal, has audio-convert = audio-convert -d converted -c vorbis -q 10 "$@"
mime ^audio, terminal, has audio-convert = audio-convert -d converted -m true -c opus "$@"
mime ^audio, terminal, has audio-concat = audio-concat -o concatenated.opus "$@"
mime ^audio, terminal, has audio-concat = audio-concat -o concatenated.flac "$@"
mime ^video, has mpv, X, flag f = mpv -- "$@"
mime ^video, has mpv, terminal, !X = mpv --vo=tct -- "$@"
# documents
ext djvu|pdf|ps, has zathura, X, flag f = zathura -- "$@"
ext djvu|pdf, has evince, X, flag f = evince -- "$@"
ext djvu|pdf, has inkscape, X, flag f = inkscape -- "$@"
ext epub, has bk, flag f = alacritty -o "font.size=12" -e bk "$@"
ext epub, has foliate, X, flag f = foliate -- "$@"
ext epub, has calibre, X, flag f = calibre -- "$@"
ext epub, has sigil, X, flag f = sigil "$@"
ext tex, has xelatex = xelatex -- "$@"
ext tex, has latex = latex "-output-format=pdf" -- "$@"
ext docx?, has catdoc, terminal = catdoc -- "$@" | $PAGER
ext od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric|rtf, has libreoffice, X, flag f = libreoffice "$@"
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has gnumeric, X, flag f = gnumeric -- "$@"
ext sla, has scribus, X, flag f = scribus "$@"
ext xopp, has xournalpp, X, flag f = xournalpp "$@"
# images
ext xcf, has gimp, X, flag f = gimp -- "$@"
ext kra, has krita, X, flag f = krita -- "$@"
mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
mime ^image, has sxiv, X, flag f = sxiv -a "$@"
mime ^image, !ext xcf, has gimp, X, flag f = gimp -- "$@"
mime ^image, !ext kra, has krita, X, flag f = krita -- "$@"
mime ^image/png, has oxipng = oxipng -o6 -- "$@"
mime ^image, has inkscape, X, flag f = inkscape -- "$@"
# archives
ext cbr|cbz, has mcomix, X, flag f = mcomix -- "$@"
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has als = als -- "$@" | $PAGER
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has als = als -- "$@" | $PAGER
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has aunpack = aunpack -- "$@"
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has aunpack = aunpack -- "$@"
ext iso, has udevil = udevil mount "$@"
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has mcomix, X, flag f = mcomix -- "$@"
ext jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has mcomix, X, flag f = mcomix -- "$@"
directory, has apack = apack "${1}.zip" "$1"
ext tar|gz, has tar = tar vvtf "$@" | $PAGER
ext tar|gz, has tar = tar vvxf "$@"
# roms
ext nes|gb|gb[ca]|s[wmf]c, has mednafen, X, flag f = mednafen "$1"
# fonts
ext sfd|ttf|otf|woff|woff2|pcf|bdf, has fontforge, X, flag f = fontforge "$1"
# models
ext stl, has openscad, X, flag f = openscad "$@"
# makefiles
name ^[mM]akefile$ = make
name ^[mM]akefile$ = make new
name ^[mM]akefile$ = make clean
name ^[mM]akefile$ = make debug
# open all files of source type
directory, has srcopen = srcopen "$@"
directory, has srcopen, X, flag f t = srcopen "$@"
# music conversion and import
directory, has beet = beet imp -t "$1"
# editor for misc files
!directory, !mime ^text, !ext xml|csv|tex|py|pl|rb|sh|php = "$EDITOR" -- "$@"
!directory, !mime ^text, !ext xml|csv|tex|py|pl|rb|sh|php, X, flag f t = "$EDITOR" -- "$@"
# Send to server & copy to clipboard
has send, X = send "$@"
# vim: ft=cfg
|