]> git.phdru.name Git - dotfiles.git/blobdiff - .mc/menu
Feat(recode-filenames-recursive): Allow to omit parameters
[dotfiles.git] / .mc / menu
index 8c75e0b742450b45bd5ae7d3ce641f21cea5e768..c2198c8978457c3e3ae2b81f25ad519b2ef36151 100644 (file)
--- a/.mc/menu
+++ b/.mc/menu
@@ -16,32 +16,36 @@ shell_patterns=0
      $CMD "$f"
    done
 
-+ t r
++ t lr
 p  View the file in a pager
    exec ${PAGER:-more} %f
 
-+ t r
++ t lr
 g  Edit the file in gvim
    gvim %f &
 
-+ t r
++ t lr
 b  View the file in a browser
-   exec webbrowser file://%d/%f
+   exec webbrowser-encode-url -e utf-8 file://%d/%f
 
-+ t r
++ t lr
+= f \.(htm(l?)|txt)$
 w  View the file in a new browser window
-   exec webbrowser -n file://%d/%f
+   exec webbrowser-encode-url -e utf-8 -n file://%d/%f
 
-+ t r
-= f \.(htm(l?)|txt)$
++ t lr
 t  View the file in a new browser tab
-   exec webbrowser -t file://%d/%f
+   exec webbrowser-encode-url -e utf-8 -t file://%d/%f
 
-+= f \.fb2(\.bz2|\.gz|\.zip)?$ | f \.(chm|epub|htm(l?)|txt|rtf)$ & t r
++ t lr
+p  View the file in a new private browser tab
+   exec webbrowser -p file://%d/%f
+
++= f \.fb2(\.bz2|\.gz|\.zip)?$ | f \.(chm|epub|htm(l?)|txt|rtf)$ & t lr
 f  View fb2/chm/epub with fbreader
    fbreader %f &
 
-+ t r & f \.fb2(\.bz2|\.gz|\.zip)$
++ t lr & f \.fb2(\.bz2|\.gz|\.zip)$
 H  fb2html
    case %f in
      *.fb2.bz2) A="bunzip2 -c" ;;
@@ -51,7 +55,7 @@ H  fb2html
    esac
    $A %f | xsltproc /usr/local/src/FictionBook/FB2_2_html_ru.xsl - | webstdin -t
 
-+ t r & f \.fb2(\.bz2|\.gz|\.zip)$
++ t lr & f \.fb2(\.bz2|\.gz|\.zip)$
 T  fb2txt
    case %f in
      *.fb2.bz2) A="bunzip2 -c" ;;
@@ -61,109 +65,135 @@ T  fb2txt
    esac
    $A %f | xsltproc /usr/local/src/FictionBook/FB2_2_txt_ru.xsl - | webstdin -e txt -t
 
-+= t r & f \.(pdf|PDF|ps|PS)(\.bz2|\.gz)?$
-e  View pdf/ps
-   qpdfview %f &
++ t lr & f \.(pdf|PDF)$
+v  View pdf
+   pdftotext -layout -q %f - | iconv.py -f utf-8 | ${PAGER:-more}
+
++ t lr & f \.(pdf|PDF)$
+e  View pdf with evince
+   evince %f &
 
-+= t r & f \.djvu(\.bz2|\.gz)?$
++= t lr & f \.(pdf|PDF)$
+e  View pdf with qpdfview
+   if [ %d/%f = "`echo %d/%f | iconv -t utf-8`" ]; then qpdfview %f & else src=%d/%f; dest="$HOME/tmp/`echo $src | iconv -t koi8-r | koi2lat | sed 's!/!%!g'`"; ln -s "$src" "$dest" && qpdfview "$dest" & (sleep 3; exec rm -f "$dest") & fi
+
++= t lr & f \.djvu(\.bz2|\.gz)?$
 e  View djvu
    djview %f &
 
-+= t r & f \.(odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg)$
-o  View OpenDoc with odt2txt
-   odt2txt %f | ${PAGER:-more}
-
-+ t r & f \.(odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg|doc|DOC|rtf|docx|DOCX|xls|XLS|xlsx|XLSX)$
++ t lr & f \.((pdf|PDF|ps|PS)(\.bz2|\.gz)?|odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg|doc|DOC|rtf|docx|DOCX|xls|XLS|xlsx|XLSX)$
 e  Edit (Open)Docs with libreoffice
    libreoffice %f &
 
-+= t r & f \.(doc|DOC|rtf)$
++ t lr & f \.(odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg|doc|DOC|rtf|docx|DOCX|xls|XLS|xlsx|XLSX)$
+v  View (Open)Docs with libreoffice
+   #libreoffice --headless --convert-to "txt:Text (encoded):UTF8" %f
+   libreoffice --cat %f | ${PAGER:-more}
+
++= t lr & f \.(doc|DOC|rtf)$
 d  View doc with catdoc
    catdoc %f | ${PAGER:-more}
 
-+= t r & f \.(docx|DOCX)$
++= t lr & f \.(odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg)$
+o  View OpenDoc with odt2txt
+   odt2txt %f | ${PAGER:-more}
+
++= t lr & f \.(docx|DOCX)$
 d  View docx with docx2txt
    docx2txt %f - | iconv.py -f utf-8 | ${PAGER:-more}
 
-+= t r & f \.(xls|XLS)$
++= t lr & f \.(xls|XLS|xlsx|XLSX)$
+o  View OpenXlsx with xlsx2csv
+   xlsx2csv %f | iconv.py -f utf-8 | ${PAGER:-more}
+
++= t lr & f \.(xls|XLS)$
 x  View xls with xls2csv
    xls2csv %f | ${PAGER:-more}
 
-+ t r & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$ | t t
-= t r & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$
++ t lr & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm|ico|jp2|tif|TIF|tiff|TIFF|webp)$ | t t
+e  Edit image(s)
+   gimp %s &
+
++ t lr & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$ | t t
+= t lr & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$
 i  View image(s) scaled
-   xli -title "`echo %s | sed 's/ /_/g'`" -zoom auto %s &
+   xli -title "`echo %s | sed 's/[ .]/_/g'`" -zoom auto %s &
 
-+ t r & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$ | t t
++ t lr & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$ | t t
 I  View image(s) full size
-   xli -title "`echo %s | sed 's/ /_/g'`" %s &
+   xli -title "`echo %s | sed 's/[ .]/_/g'`" %s &
 
-+ t r & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$
++ t lr & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$
 I  Identify image
    xli -identify %f
 
-+ t r & f \.(ico|jp2|tif|TIF|tiff|TIFF|webp)$ | t t
-= t r & f \.(ico|jp2|tif|TIF|tiff|TIFF|webp)$
++ t lr & f \.(ico|jp2|tif|TIF|tiff|TIFF|webp)$ | t t
+= t lr & f \.(ico|jp2|tif|TIF|tiff|TIFF|webp)$
 I  View icon, JPEG-2000, TIFF, WebP image
    display %s &
 
-+ t r & f \.(aac|ac3|ape|cue|dts|flac|m3u|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$ | t t
++ t lr & f \.(ico|jp2|tif|TIF|tiff|TIFF|webp)$
+I  Identify image
+   identify %f
+
++ t lr & f \.(aac|ac3|ape|cue|dts|flac|m3u8?|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$ | t t
 a  Add the audiofile(s) or playlist(s)
-   #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi
+   #if [ "`audtool --get-volume`" -eq 0 ]; then audacious & sleep 3; fi
    #for f in %s; do
-   #   audtool --playlist-addurl "$f"
+   #   case "$f" in
+   #      *.m3u8?) while read song; do
+   #         audtool --playlist-addurl "$song"
+   #      done < "$f" ;;
+   #      *) audtool --playlist-addurl "$f" ;;
+   #   esac
    #done
-   #smplayer -add-to-playlist %s &
    deadbeef --queue %s &
 
-+ t r & f \.(aac|ac3|ape|cue|dts|flac|m3u|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$ | t t
-= t r & f \.(aac|ac3|ape|cue|dts|flac|m3u|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$
++ t lr & f \.(aac|ac3|ape|cue|dts|flac|m3u8?|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$ | t t
+= t lr & f \.(aac|ac3|ape|cue|dts|flac|m3u8?|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$
 p  Load the audiofile(s) or playlist(s)
-   #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi
+   #if [ "`audtool --get-volume`" -eq 0 ]; then audacious & sleep 3; fi
    #audtool --playlist-clear
    #for f in %s; do
-   #   audtool --playlist-addurl "$f"
+   #   case "$f" in
+   #      *.m3u8?) while read song; do
+   #         audtool --playlist-addurl "$song"
+   #      done < "$f" ;;
+   #      *) audtool --playlist-addurl "$f" ;;
+   #   esac
    #done
-   #smplayer -send-action pl_remove_all
-   #smplayer -add-to-playlist %s &
-   deadbeef --queue %s &
+   deadbeef %s & (sleep 1; exec deadbeef --stop)
 
-+ t r & f \.(aac|ac3|ape|cue|dts|flac|m3u|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$ | t t
++ t lr & f \.(aac|ac3|ape|cue|dts|flac|m3u8?|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$ | t t
 P  Play the audiofile(s) or playlist(s)
-   #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi
+   #if [ "`audtool --get-volume`" -eq 0 ]; then audacious & sleep 3; fi
    #audtool --playlist-clear
    #for f in %s; do
-   #   audtool --playlist-addurl "$f"
+   #   case "$f" in
+   #      *.m3u8?) while read song; do
+   #         audtool --playlist-addurl "$song"
+   #      done < "$f" ;;
+   #      *) audtool --playlist-addurl "$f" ;;
+   #   esac
    #done
    #exec audtool --playback-play
-   #mplayer -playlist %f &
-   #smplayer %s &
    deadbeef %s &
-   #exec mediaplayer_open %f
+   #mplayer -playlist %f &
 
-+ t r & f \.m3u
++ t lr & f \.m3u8?
 R  Play the playlist in random order
-   "$HOME"/admin/prog/audio-cdr-video/audio/shuffle-playlist.py %f random-playlist-tmp.m3u
-   #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi
+   "$HOME"/prog/audio-cdr-video/audio/shuffle-playlist.py %f /tmp/random-playlist-tmp.m3u
+   #if [ "`audtool --get-volume`" -eq 0 ]; then audacious & sleep 3; fi
    #audtool --playlist-clear
-   #audtool --playlist-addurl random-playlist-tmp.m3u
+   #while read song; do
+   #   audtool --playlist-addurl "$song"
+   #done < /tmp/random-playlist-tmp.m3u
    #audtool --playback-play
-   #mplayer -playlist random-playlist-tmp.m3u &
-   #smplayer random-playlist-tmp.m3u &
-   #smplayer -actions pl_shuffle %f &
-   deadbeef --queue random-playlist-tmp.m3u & deadbeef --play
-   #mediaplayer_open random-playlist-tmp.m3u
-   (sleep 5; exec rm random-playlist-tmp.m3u) &
-
-+ f \.(aac|ac3|ape|cue|dts|flac|m3u|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t d | t t
-s  Play audio/video file(s) or directory with smplayer
-   smplayer %s &
+   deadbeef /tmp/random-playlist-tmp.m3u &
+   #mplayer -playlist /tmp/random-playlist-tmp.m3u &
+   (sleep 5; exec rm /tmp/random-playlist-tmp.m3u) &
 
-+ t d & f (video_ts|VIDEO_TS)$
-c  Play the current directory with smplayer
-   smplayer . &
-
-+ t r & f \.(m3u|mp3|MP3|cue|aac|ac3|ape|dts|flac|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$
++ t lr & f \.(m3u8?|mp3|MP3|cue|aac|ac3|ape|dts|flac|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$
 i  Audio/video info
    exec "$HOME"/.config/mpv/mpv_identify.sh %f
 
@@ -171,39 +201,63 @@ i  Audio/video info
 i  DVD info
    exec "$HOME"/.config/mpv/mpv_identify.sh .
 
-+ f \.(aac|ac3|ape|cue|dts|flac|m3u|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t d | t t
-= f \.(aac|ac3|ape|cue|dts|flac|m3u|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$
-m  Play video file(s) with mplayer
++ f \.(aac|ac3|ape|cue|dts|flac|m3u8?|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t d | t t
+m  Play video file(s) with mpv (quiet)
+   AUDIO_VOLUME=80
+   export AUDIO_VOLUME
+   mplayer %s &
+
++ f \.(aac|ac3|ape|cue|dts|flac|m3u8?|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t d | t t
+m  Play video file(s) with mpv (normal)
    mplayer %s &
 
-+ f \.(m3u|mp3|MP3|cue|aac|ac3|ape|dts|flac|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t t
-M  Play audio/video with gmplayer
++ f \.(aac|ac3|ape|cue|dts|flac|m3u8?|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t d | t t
+= f \.(aac|ac3|ape|cue|dts|flac|m3u8?|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$
+m  Play video file(s) with mpv (loud)
+   AUDIO_VOLUME=120
+   export AUDIO_VOLUME
+   mplayer %s &
+
++ f \.(aac|ac3|ape|cue|dts|flac|m3u8?|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t d | t t
+m  Play video file(s) with mpv (louder)
+   AUDIO_VOLUME=150
+   export AUDIO_VOLUME
+   mplayer %s &
+
++ f \.(aac|ac3|ape|cue|dts|flac|m3u8?|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t d | t t
+m  Play video file(s) with mpv (ask for volume)
+   AUDIO_VOLUME=%{Enter volume}
+   export AUDIO_VOLUME
+   mplayer %s &
+
++ f \.(m3u8?|mp3|MP3|cue|aac|ac3|ape|dts|flac|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t t
+M  Play audio/video with mpv GUI
    gmplayer %s &
 
 += t d & f (video_ts|VIDEO_TS)$
-d  Play DVD directory with mplayer
+d  Play DVD directory with mpv
    mplayer -dvd-device . dvd:// &
 
 + t d & f (video_ts|VIDEO_TS)$
-D  Play DVD directory with gmplayer
+D  Play DVD directory with mpv GUI
    gmplayer -dvd-device . dvd:// &
 
 + t d & f (video_ts|VIDEO_TS)$
-t  Play DVD title with mplayer
+t  Play DVD title with mpv
    title=%{Enter title}
    mplayer -dvd-device . dvd://"$title" &
 
 + t d & f (video_ts|VIDEO_TS)$
-T  Play DVD title with gmplayer
+T  Play DVD title with mpv GUI
    title=%{Enter title}
    gmplayer -dvd-device . dvd://"$title" &
 
 + t d
-p  Play directory with mplayer
+p  Play directory with mpv
    mplayer %f/* &
 
 + t d
-P  Play directory with gmplayer
+P  Play directory with mpv GUI
    gmplayer %f/* &
 
 + t d & f ^\.\.$
@@ -278,35 +332,35 @@ y  Compress the current subdirectory to zip recoding filenames
    cd .. && 7zr a "$ar".7z "$Pwd" &&
    echo ../"$ar".7z created.
 
-+ ! f \.(bz2|gz|lz|lzma|7z|xz|zip|ZIP)$ & t r
++ ! f \.(bz2|gz|lz|lzma|7z|xz|zip|ZIP)$ & t lr
 z  bzip2 the file
    exec bzip2 -9 %f
 
-+ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
++ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t lr
 z  gzip the file
    exec gzip -9 %f
 
-+ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
++ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t lr
 z  lzip the file
    exec lzip -9 %f
 
-+ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
++ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t lr
 z  lzma the file
    exec lzma -9 %f
 
-+ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
++ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t lr
 z  7z the file/directory
    exec 7zr a %f.7z %f
 
-+ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
++ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t lr
 z  xz the file
    exec xz -9 %f
 
-+ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
++ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t lr
 z  zip the file/directory
    exec zip -r9 %f.zip %f
 
-+ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
++ ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t lr
 y  zip the file/directory recoding filename(s)
    exec zip.py %f.zip %f
 
@@ -320,7 +374,7 @@ Y  zip selected files/directories recoding filenames
    ZIP=%{Enter zip name}
    exec zip.py "$ZIP" %s
 
-+ f \.(tar\.(z|Z|bz2|gz|lz|lzma))|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
++ f \.(tar\.(z|Z|bz2|gz|lz|lzma))|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t lr
 n  Create a directory for this archive
    case %f in
      *.tar.Z)    D="`basename %f .tar.Z`";;
@@ -362,7 +416,7 @@ N  Create a directory for the other archive
    esac
    exec mkdir "$D"
 
-+ f \.(tar\.(z|Z|bz2|gz|lz|lzma|7z|xz))|(tbz2|tgz|tz)$ & t r
++ f \.(tar\.(z|Z|bz2|gz|lz|lzma|7z|xz))|(tbz2|tgz|tz)$ & t lr
 x  Extract the contents of a compressed tar file
    unset PRG
    case %f in
@@ -418,7 +472,7 @@ X  Extract the contents of an other compressed tar file
    esac
    $PRG %D/%F | tar xvpf -
 
-+ f \.(bz2|egg|gz|lz|lzma|7z|xz|tar|whl|zip|ZIP|rar|RAR)$ & t r
++ f \.(bz2|egg|gz|lz|lzma|7z|xz|tar|whl|zip|ZIP|rar|RAR)$ & t lr
 x  Extract a compressed file
    case %f in
      *.bz2)  P="bzip2 -d";;
@@ -448,7 +502,7 @@ X  Extract another compressed file
    esac
    exec $P %D/%F
 
-+ t r & f \.(zip|ZIP)$
++ t lr & f \.(zip|ZIP)$
 y  Extract from zip recoding filenames
    exec unzip.py %f
 
@@ -456,31 +510,31 @@ y  Extract from zip recoding filenames
 Y  Extract from other zip recoding filenames
    exec unzip.py %D/%F
 
-+ t r
++ t lr
 v  View via mailcap
    exec see %f
 
-+ t r
++ t lr
 c  Compare the file
    exec cmp %D/%f %f
 
-+ t r & T r
++ t lr & T r
 C  Compare these files
    exec cmp %D/%F %f
 
-+ t r
++ t lr
 d  Diff the file
    exec diff -u --speed-large-files %D/%f %f
 
-+ t r & T r
++ t lr & T r
 D  Diff these files
    exec diff -u --speed-large-files %D/%F %f
 
-+ t r
++ t lr
 v  vimdiff the file
    exec vim -d %D/%f %f
 
-+ t r & T r
++ t lr & T r
 V  vimdiff these files
    exec vim -d %D/%F %f
 
@@ -494,11 +548,15 @@ D  Diff these directories
    exec diff -ru --speed-large-files \
       -x CVS -x .git -x .hg -x .svn -x '*.py[co]' -x __pycache__ %D/%F %f
 
-+= f \.(asc|sig(n)?)$ & t r
++= f \.(asc|gpg|sig(n)?)$ & t lr
 v  Verify signature
    exec gpg --verify %f
 
-+= f \.[1-8]$ | f \.man$ & t r
++ f \.(asc|gpg|sig(n)?)$ & t lr
+v  Verify detached signature
+   exec gpg --verify %f "`echo %f | sed 's/\.[^.]*$//'`"
+
++= f \.[1-8]$ | f \.man$ & t lr
 1  Display the file with roff -man
    %view nroff -man %f
 
@@ -506,6 +564,6 @@ m  View a manual page
    MAN=%{Enter manual name}
    %view man -P cat $MAN
 
-+ t r | t d | t t
++ t dlr | t t
 r  rsync the file(s) there
    rsync -ahPv --del %s %D