-
Notifications
You must be signed in to change notification settings - Fork 0
/
rifle.conf
326 lines (277 loc) · 15.2 KB
/
rifle.conf
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
# vim: ft=cfg
#
# 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.
directory, has xdg-open, X, flag f = xdg-open "$1"
directory, has winstart, flag f = runexe "/mnt/c/Program Files/totalcmd/TOTALCMD64.EXE" /O /S /L "$1"
directory, has vd, = vd "$1"
#-------------------------------------------
# Websites
#-------------------------------------------
# Rarely installed browsers get higher priority; It is assumed that if you
# install a rare browser, you probably use it. Firefox/konqueror/w3m on the
# other hand are often only installed as fallback browsers.
# ext x?html?, has surf, X, flag f = surf -- file://"$1"
# ext x?html?, has vimprobable, X, flag f = vimprobable -- "$@"
# ext x?html?, has vimprobable2, X, flag f = vimprobable2 -- "$@"
# ext x?html?, has qutebrowser, X, flag f = qutebrowser -- "$@"
# ext x?html?, has dwb, X, flag f = dwb -- "$@"
# ext x?html?, has jumanji, X, flag f = jumanji -- "$@"
# ext x?html?, has luakit, X, flag f = luakit -- "$@"
# ext x?html?, has uzbl, X, flag f = uzbl -- "$@"
# ext x?html?, has uzbl-tabbed, X, flag f = uzbl-tabbed -- "$@"
# ext x?html?, has uzbl-browser, X, flag f = uzbl-browser -- "$@"
# ext x?html?, has uzbl-core, X, flag f = uzbl-core -- "$@"
# ext x?html?, has midori, X, flag f = midori -- "$@"
# ext x?html?, has chromium-browser, X, flag f = chromium-browser -- "$@"
# ext x?html?, has chromium, X, flag f = chromium -- "$@"
# ext x?html?, has opera, X, flag f = opera -- "$@"
# ext x?html?, has seamonkey, X, flag f = seamonkey -- "$@"
# ext x?html?, has iceweasel, X, flag f = iceweasel -- "$@"
# ext x?html?, has epiphany, X, flag f = epiphany -- "$@"
# ext x?html?, has konqueror, X, flag f = konqueror -- "$@"
ext x?html?|pdf, has winstart, flag f = winstart msedge "$@"
ext x?html?|pdf, has msedge, X, flag f = msedge "$@"
ext x?html?|pdf, has google-chrome, X, flag f = google-chrome "$@"
ext x?html?, has firefox, X, flag f = firefox "$@"
ext gd?doc|gd?sheet|gd?slides|gd?form|desktop, has xdg-open, X, flag f = xdg-open "$@"
ext x?html?|pdf, env BROWSER, flag f = ${BROWSER} "$@"
ext x?html?, has elinks, terminal = elinks "$@"
ext x?html?, has lynx, terminal = lynx -- "$@"
ext x?html?, has w3m, terminal = w3m "$@"
# ext x?html?, has links2, terminal = links2 "$@"
# ext x?html?, has links, terminal = links "$@"
# VisiData
ext [ct]sv, has vd, = vd "$@"
ext vdj, has vd, = vd -p "$1"
##-------------------------------------------
# MS office docs Windows
#-------------------------------------------
ext p[op][st]x?|od[dfgpst]|do[ct]x?|sxc|xl[st]x?|xlw|gnm|gnumeric|csv, has winstart, flag f = winstart soffice "$@"
ext do[ct]x?, has winstart, flag f = winstart WINWORD "$@"
ext xl[st]x?, has winstart, flag f = winstart EXCEL "$@"
ext p[op][st]x?, has winstart, flag f = winstart POWERPNT "$@"
ext [ct]sv, has winstart, falg f = winstart EmEditor "$@"
ext gd?doc|gd?sheet|gd?slides|gd?form|pdf, has winstart, flag f = winstart "$@"
#-------------------------------------------
# Misc
#-------------------------------------------
ext md|markdown, has winstart, flag f = winstart Typora "$@"
# Define the "editor" for text files as first action
mime ^text, label editor, = ${VISUAL:-$EDITOR} -- "$@"
mime ^text, label pager, = "$PAGER" -- "$@"
mime ^text, label editor, has code, X, flag f = code -- "$@"
mime ^text, label editor, has winstart, flag f = runexe cmd.exe /C code "$@"
mime ^text, label editor, has winstart, flag f = winstart EmEditor "$@"
mime ^text, label editor, has winstart, flag f = runexe cmd.exe /C idea.cmd "$@"
!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@"
!mime ^text, label pager, ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
ext 1 = man "$1"
ext s[wmf]c, has zsnes, X = zsnes "$1"
ext s[wmf]c, has snes9x-gtk,X = snes9x-gtk "$1"
ext nes, has fceux, X = fceux "$1"
name ^[mM]akefile$ = make
# ext exe = wine "$1"
ext exe, flag f = "$1"
ext jar, flag f = java -jar "$1"
mime ^text, label script, = sh -- "$1"
#--------------------------------------------
# Code
#-------------------------------------------
ext py = python -- "$1"
ext pl = perl -- "$1"
ext rb = ruby -- "$1"
ext js = node -- "$1"
ext (ba|z)?sh = sh -- "$1"
ext php = php -- "$1"
#--------------------------------------------
# Audio without X
#-------------------------------------------
mime ^audio|ogg$, terminal, has mpv = mpv -- "$@"
mime ^audio|ogg$, terminal, has mplayer2 = mplayer2 -- "$@"
mime ^audio|ogg$, terminal, has mplayer = mplayer -- "$@"
ext midi?, terminal, has wildmidi = wildmidi -- "$@"
#--------------------------------------------
# Video/Audio with a GUI
#-------------------------------------------
# mime ^video|audio, has gmplayer, X, flag f = gmplayer -- "$@"
# mime ^video|audio, has smplayer, X, flag f = smplayer "$@"
mime ^video|audio|ogg$, env MEDIA_PLAYER, X, flag f = "${MEDIA_PLAYER}" -- "$@"
mime ^video, has mpv, X, flag f = mpv -- "$@"
mime ^video, has mpv, X, flag f = mpv --fs -- "$@"
mime ^video, has mplayer2, X, flag f = mplayer2 -- "$@"
mime ^video, has mplayer2, X, flag f = mplayer2 -fs -- "$@"
mime ^video, has mplayer, X, flag f = mplayer -- "$@"
mime ^video, has mplayer, X, flag f = mplayer -fs -- "$@"
mime ^video|audio, has vlc, X, flag f = vlc -- "$@"
mime ^video|audio, has totem, X, flag f = totem -- "$@"
mime ^video|audio, has totem, X, flag f = totem --fullscreen -- "$@"
#--------------------------------------------
# Video without X:
#-------------------------------------------
mime ^video, terminal, !X, has mpv = mpv -- "$@"
mime ^video, terminal, !X, has mplayer2 = mplayer2 -- "$@"
mime ^video, terminal, !X, has mplayer = mplayer -- "$@"
#-------------------------------------------
# Video/Audio Windows
#-------------------------------------------
mime ^video|audio|ogg$, has winstart, flag f = winstart "${MEDIA_PLAYER:-mpv.exe}" "$@"
#-------------------------------------------
# Documents
#-------------------------------------------
# ext pdf, has llpp, X, flag f = llpp "$@"
# ext pdf, has zathura, X, flag f = zathura -- "$@"
# ext pdf, has mupdf, X, flag f = mupdf "$@"
# ext pdf, has mupdf-x11,X, flag f = mupdf-x11 "$@"
# ext pdf, has apvlv, X, flag f = apvlv -- "$@"
# ext pdf, has xpdf, X, flag f = xpdf -- "$@"
# ext pdf, has evince, X, flag f = evince -- "$@"
# ext pdf, has atril, X, flag f = atril -- "$@"
# ext pdf, has okular, X, flag f = okular -- "$@"
# ext pdf, has epdfview, X, flag f = epdfview -- "$@"
# ext pdf, has qpdfview, X, flag f = qpdfview "$@"
# ext pdf, has open, X, flag f = open "$@"
# ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has gnumeric, X, flag f = gnumeric -- "$@"
# ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has kspread, X, flag f = kspread -- "$@"
ext p[op][st]x?|od[dfgpst]|do[ct]x?|sxc|xl[st]x?|xlw|gnm|gnumeric, has libreoffice, X, flag f = libreoffice "$@"
ext p[op][st]x?|od[dfgpst]|do[ct]x?|sxc|xl[st]x?|xlw|gnm|gnumeric, has soffice, X, flag f = soffice "$@"
ext p[op][st]x?|od[dfgpst]|do[ct]x?|sxc|xl[st]x?|xlw|gnm|gnumeric, has ooffice, X, flag f = ooffice "$@"
ext do[ct]x?, has catdoc, terminal = catdoc -- "$@" | "$PAGER"
ext djvu, has zathura,X, flag f = zathura -- "$@"
ext djvu, has evince, X, flag f = evince -- "$@"
ext djvu, has atril, X, flag f = atril -- "$@"
ext djvu, has djview, X, flag f = djview -- "$@"
ext epub, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
ext mobi, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
#-------------------------------------------
# Image Viewing:
#-------------------------------------------
mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
mime ^image/svg, has display, X, flag f = display -- "$@"
mime ^image, has pqiv, X, flag f = pqiv -- "$@"
mime ^image, has sxiv, X, flag f = sxiv -- "$@"
mime ^image, has feh, X, flag f = feh -- "$@"
mime ^image, has mirage, X, flag f = mirage -- "$@"
mime ^image, has ristretto, X, flag f = ristretto "$@"
mime ^image, has eog, X, flag f = eog -- "$@"
mime ^image, has eom, X, flag f = eom -- "$@"
mime ^image, has nomacs, X, flag f = nomacs -- "$@"
mime ^image, has geeqie, X, flag f = geeqie -- "$@"
mime ^image, has gwenview, X, flag f = gwenview -- "$@"
mime ^image, has gimp, X, flag f = gimp -- "$@"
ext xcf, X, flag f = gimp -- "$@"
#-------------------------------------------
# Image Windows
#-------------------------------------------
mime ^image, has winstart, flag f = runexe "/mnt/c/Program Files/Honeyview/Honeyview.exe" "$@"
#-------------------------------------------
# Archives Windows
#-------------------------------------------
ext rar|zip|z|tar|t?gz|t?bz2?|t?xz|7z|ace|arc?|lzh?|iso|msi|deb|cab|pkg|xpi|apk|jar|00\d, has winstart, flag f = winstart WinRAR "$@"
#-------------------------------------------
# Archives
#-------------------------------------------
# avoid password prompt by providing empty password
ext 7z, has 7z = 7z -p l "$@" | "$PAGER"
# This requires atool
ext ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --list --each -- "$@" | "$PAGER"
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --list --each -- "$@" | "$PAGER"
ext apk, has atool = atool --list --each -F jar -- "$@" | "$PAGER"
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --extract --each -- "$@"
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --extract --each -- "$@"
ext apk, has atool = atool --extract --each -F jar -- "$@"
# Listing and extracting archives without atool:
# ext tar|gz|bz2|xz, has tar = tar vvtf "$1" | "$PAGER"
# ext tar|gz|bz2|xz, has tar = for file in "$@"; do tar vvxf "$file"; done
# ext bz2, has bzip2 = for file in "$@"; do bzip2 -dk "$file"; done
# ext zip, has unzip = unzip -l "$1" | less
# ext zip, has unzip = for file in "$@"; do unzip -d "${file%.*}" "$file"; done
# ext ace, has unace = unace l "$1" | less
# ext ace, has unace = for file in "$@"; do unace e "$file"; done
# ext rar, has unrar = unrar l "$1" | less
# ext rar, has unrar = for file in "$@"; do unrar x "$file"; done
#-------------------------------------------
# Flag t fallback terminals
#-------------------------------------------
# Rarely installed terminal emulators get higher priority; It is assumed that
# if you install a rare terminal emulator, you probably use it.
# gnome-terminal/konsole/xterm on the other hand are often installed as part of
# a desktop environment or as fallback terminal emulators.
mime ^ranger/x-terminal-emulator, has terminology = terminology -e "$@"
mime ^ranger/x-terminal-emulator, has kitty = kitty -- "$@"
mime ^ranger/x-terminal-emulator, has alacritty = alacritty -e "$@"
mime ^ranger/x-terminal-emulator, has sakura = sakura -e "$@"
mime ^ranger/x-terminal-emulator, has lilyterm = lilyterm -e "$@"
#mime ^ranger/x-terminal-emulator, has cool-retro-term = cool-retro-term -e "$@"
mime ^ranger/x-terminal-emulator, has termite = termite -x '"$@"'
#mime ^ranger/x-terminal-emulator, has yakuake = yakuake -e "$@"
mime ^ranger/x-terminal-emulator, has guake = guake -ne "$@"
mime ^ranger/x-terminal-emulator, has tilda = tilda -c "$@"
mime ^ranger/x-terminal-emulator, has st = st -e "$@"
mime ^ranger/x-terminal-emulator, has terminator = terminator -x "$@"
mime ^ranger/x-terminal-emulator, has urxvt = urxvt -e "$@"
mime ^ranger/x-terminal-emulator, has pantheon-terminal = pantheon-terminal -e "$@"
mime ^ranger/x-terminal-emulator, has lxterminal = lxterminal -e "$@"
mime ^ranger/x-terminal-emulator, has mate-terminal = mate-terminal -x "$@"
mime ^ranger/x-terminal-emulator, has xfce4-terminal = xfce4-terminal -x "$@"
mime ^ranger/x-terminal-emulator, has konsole = konsole -e "$@"
mime ^ranger/x-terminal-emulator, has gnome-terminal = gnome-terminal -- "$@"
mime ^ranger/x-terminal-emulator, has xterm = xterm -e "$@"
#-------------------------------------------
# Misc
#-------------------------------------------
label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1"
label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1"
label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1"
label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1"
# Define the editor for non-text files + pager as last action
!mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ask
label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@"
label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
# The very last action, so that it's never triggered accidentally, is to execute a program:
mime application/x-executable = "$1"