shell_patterns=0 # This is necessary to overcome a bug in mc - without this # mc makes default wrong item : NOOP : @ Do something on all of the file(s) at once CMD=%{Enter command} exec $CMD %s + t t @ Do something on the tagged files one by one CMD=%{Enter command} for f in %t; do $CMD "$f" done + t r p View the file in a pager exec ${PAGER:-more} %f + t r b View the file in a browser exec webbrowser file://%d/%f + t r w View the file in a new browser window exec webbrowser -n file://%d/%f + t r = f \.(htm(l?)|txt)$ t View the file in a new browser tab exec webbrowser -t file://%d/%f += f \.fb2(\.bz2|\.gz|\.zip)?$ | f \.(chm|epub|htm(l?)|txt|rtf)$ & t r f View fb2/chm/epub with fbreader fbreader %f & + t r & f \.fb2(\.bz2|\.gz|\.zip)$ H fb2html case %f in *.fb2.bz2) A="bunzip2 -c" ;; *.fb2.gz) A="gunzip -c" ;; *.fb2.zip) A="unzip -p" ;; *.fb2) A="cat" ;; esac $A %f | xsltproc /usr/local/src/FictionBook/FB2_2_html_ru.xsl - | webstdin -t + t r & f \.fb2(\.bz2|\.gz|\.zip)$ T fb2txt case %f in *.fb2.bz2) A="bunzip2 -c" ;; *.fb2.gz) A="gunzip -c" ;; *.fb2.zip) A="unzip -p" ;; *.fb2) A="cat" ;; esac $A %f | xsltproc /usr/local/src/FictionBook/FB2_2_txt_ru.xsl - | webstdin -e txt -t += 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)$ e Edit OpenDoc with libreoffice libreoffice %f & += t r & f \.(pdf|PDF|ps|PS|djvu)(\.bz2|\.gz)?$ e View pdf/ps/djvu with evince evince %f & += t r & f \.(doc|DOC|rtf)$ d View doc with catdoc catdoc %f | ${PAGER:-more} + t r & f \.(doc|DOC|rtf)$ e Edit doc with libreoffice libreoffice %f & += t r & f \.(docx|DOCX)$ d View docx with docx2txt docx2txt %f - | iconv.py -f utf-8 | ${PAGER:-more} + t r & f \.(docx|DOCX)$ e Edit docx with libreoffice libreoffice %f & += t r & 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)$ i View image(s) scaled 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 I View image(s) full size xli -title "`echo %s | sed 's/ /_/g'`" %s & + t r & f \.(ico|jp2|tif|TIF|tiff|TIFF)$ | t t = t r & f \.(ico|jp2|tif|TIF|tiff|TIFF)$ I View icon, JPEG-2000 or TIFF image display %s & + t r & f \.(aac|ac3|ape|cue|flac|m3u|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 #for f in %s; do # audtool --playlist-addurl "$f" #done #smplayer -add-to-playlist %s & deadbeef --queue %s & + t r & f \.(aac|ac3|ape|cue|flac|m3u|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$ | t t = t r & f \.(aac|ac3|ape|cue|flac|m3u|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 #audtool --playlist-clear #for f in %s; do # audtool --playlist-addurl "$f" #done #smplayer -send-action pl_remove_all #smplayer -add-to-playlist %s & deadbeef --queue %s & + t r & f \.(aac|ac3|ape|cue|flac|m3u|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 #audtool --playlist-clear #for f in %s; do # audtool --playlist-addurl "$f" #done #exec audtool --playback-play #mplayer -playlist %f & #smplayer %s & deadbeef %s & #exec mediaplayer_open %f + t r & f \.m3u 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 #audtool --playlist-clear #audtool --playlist-addurl 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|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 = t r & f \.(aac|ac3|ape|cue|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)$ s Play audio/video file(s) or directory with smplayer smplayer %s & += 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|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 i Audio/video info exec mplayer -msglevel identify=6 -frames 0 %s + t d & f (video_ts|VIDEO_TS)$ i DVD info exec mplayer -dvd-device . dvd:// -msglevel identify=6 -frames 0 + f \.(avi|AVI|flv|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t t m Play video file(s) with mplayer mplayer %s & + f \.(m3u|mp3|MP3|cue|aac|ac3|ape|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 gmplayer %s & + t d & f (video_ts|VIDEO_TS)$ d Play DVD directory with mplayer mplayer -dvd-device . dvd:// & + t d & f (video_ts|VIDEO_TS)$ D Play DVD directory with gmplayer gmplayer -dvd-device . dvd:// & + t d & f (video_ts|VIDEO_TS)$ t Play DVD title with mplayer title=%{Enter title} mplayer -dvd-device . dvd://"$title" & + t d & f (video_ts|VIDEO_TS)$ T Play DVD title with gmplayer title=%{Enter title} gmplayer -dvd-device . dvd://"$title" & + t d p Play directory with mplayer mplayer %f/* & + t d P Play directory with gmplayer gmplayer %f/* & + t d & f ^\.\.$ b Compress the current subdirectory to tar.bz2 Pwd="`basename %d /`" echo -n "Name of the distribution file (without extension) [$Pwd]: " read tar if [ "$tar"x = x ]; then tar="$Pwd"; fi cd .. && tar cvf - "$Pwd" | bzip2 -f9 > "$tar".tar.bz2 && echo ../"$tar".tar.bz2 created. + t d & f ^\.\.$ g Compress the current subdirectory to tar.gz Pwd="`basename %d /`" echo -n "Name of the distribution file (without extension) [$Pwd]: " read tar if [ "$tar"x = x ]; then tar="$Pwd"; fi cd .. && tar cvf - "$Pwd" | gzip -f9 > "$tar".tar.gz && echo ../"$tar".tar.gz created. + t d & f ^\.\.$ t Compress the current subdirectory to tar Pwd="`basename %d /`" echo -n "Name of the distribution file (without extension) [$Pwd]: " read tar if [ "$tar"x = x ]; then tar="$Pwd"; fi cd .. && tar cvf - "$Pwd" > "$tar".tar && echo ../"$tar".tar created. + t d & f ^\.\.$ z Compress the current subdirectory to zip Pwd="`basename %d /`" echo -n "Name of the distribution file (without extension) [$Pwd]: " read zip if [ "$zip"x = x ]; then zip="$Pwd"; fi cd .. && zip -r9 "$zip".zip "$Pwd" && echo ../"$zip".zip created. + t d & f ^\.\.$ y Compress the current subdirectory to zip with recoded filenames Pwd="`basename %d /`" echo -n "Name of the distribution file (without extension) [$Pwd]: " read zip if [ "$zip"x = x ]; then zip="$Pwd"; fi cd .. && zip.py "$zip".zip "$Pwd" && echo ../"$zip".zip created. + t d & f ^\.\.$ 7 Compress the current subdirectory to 7z Pwd="`basename %d /`" echo -n "Name of the distribution file (without extension) [$Pwd]: " read ar if [ "$ar"x = x ]; then ar="$Pwd"; fi cd .. && 7zr a "$ar".7z "$Pwd" && echo ../"$ar".7z created. + ! f \.bz2$ & ! f \.gz$ & ! f \.lz$ & ! f \.lzma$ & ! f \.7z$ & ! f \.xz$ & ! f \.(zip|ZIP)$ & t r z bzip2 the file exec bzip2 -9 %f + ! f \.bz2$ & ! f \.gz$ & ! f \.lz$ & ! f \.lzma$ & ! f \.7z$ & ! f \.xz$ & ! f \.(zip|ZIP)$ & t r z gzip the file exec gzip -9 %f + ! f \.bz2$ & ! f \.gz$ & ! f \.lz$ & ! f \.lzma$ & ! f \.7z$ & ! f \.xz$ & ! f \.(zip|ZIP)$ & t r z lzip the file exec lzip -9 %f + ! f \.bz2$ & ! f \.gz$ & ! f \.lz$ & ! f \.lzma$ & ! f \.7z$ & ! f \.xz$ & ! f \.(zip|ZIP)$ & t r z lzma the file exec lzma -9 %f + ! f \.bz2$ & ! f \.gz$ & ! f \.lz$ & ! f \.lzma$ & ! f \.7z$ & ! f \.xz$ & ! f \.(zip|ZIP)$ z 7z the file/directory exec 7zr a %f.7z %f + ! f \.bz2$ & ! f \.gz$ & ! f \.lz$ & ! f \.lzma$ & ! f \.7z$ & ! f \.xz$ & ! f \.(zip|ZIP)$ & t r z xz the file exec xz -9 %f + ! f \.bz2$ & ! f \.gz$ & ! f \.lz$ & ! f \.lzma$ & ! f \.7z$ & ! f \.xz$ & ! f \.(zip|ZIP)$ z zip the file/directory exec zip -r9 %f.zip %f + ! f \.bz2$ & ! f \.gz$ & ! f \.lz$ & ! f \.lzma$ & ! f \.7z$ & ! f \.xz$ & ! f \.(zip|ZIP)$ y zip the file/directory with recoded filename(s) exec zip.py %f.zip %f + t t Z zip these files/directories ZIP=%{Enter zip name} exec zip -r9 "$ZIP" %s + t t Y zip these files/directories with recoded filenames ZIP=%{Enter zip name} exec zip.py "$ZIP" %s + f \.tar\.bz2$ | f \.tar\.gz$ | f \.tgz$ | f \.tar\.lz$ | f \.tar\.lzma$ | f \.(zip|ZIP)$ | f \.(rar|RAR)$ | f \.7z$ | f \.xz$ & t r n Create a directory for this archive case %f in *.tar.bz2) D="`basename %f .tar.bz2`";; *.tar.gz) D="`basename %f .tar.gz`";; *.tgz) D="`basename %f .tgz`";; *.tar.lz) D="`basename %f .tar.lz`";; *.tar.lzma) D="`basename %f .tar.lzma`";; *.zip) D="`basename %f .zip`";; *.ZIP) D="`basename %f .ZIP`";; *.rar) D="`basename %f .rar`";; *.RAR) D="`basename %f .RAR`";; *.7z) D="`basename %f .7z`";; *.xz) D="`basename %f .xz`";; esac exec mkdir "$D" + F \.tar\.bz2$ | F \.tar\.gz$ | F \.tgz$ | F \.tar\.lz$ | F \.tar\.lzma$ | F \.(zip|ZIP)$ | F \.(rar|RAR)$ | F \.7z$ | F \.xz$ & T r N Create a directory for the other archive case %D/%F in *.tar.bz2) D="`basename %F .tar.bz2`";; *.tar.gz) D="`basename %F .tar.gz`";; *.tgz) D="`basename %F .tgz`";; *.tar.lz) D="`basename %F .tar.lz`";; *.tar.lzma) D="`basename %F .tar.lzma`";; *.zip) D="`basename %F .zip`";; *.ZIP) D="`basename %F .ZIP`";; *.rar) D="`basename %F .rar`";; *.RAR) D="`basename %F .RAR`";; *.7z) D="`basename %F .7z`";; *.xz) D="`basename %F .xz`";; esac exec mkdir "$D" + f \.(bz2|gz|lz|lzma|7z|xz|tar|zip|ZIP|rar|RAR)$ & t r x Extract a compressed file case %f in *.bz2) P="bzip2 -d";; *.gz) P="gzip -d";; *.lz) P="lzip -d";; *.lzma) P="lzma -d";; *.7z) P="7zr x";; *.xz) P="xz -d";; *.tar) P="tar xvpf";; *.zip|*.ZIP) P="uzip";; *.rar|*.RAR) P="rar x -y";; esac exec $P %f + F \.(bz2|gz|lz|lzma|7z|xz|tar|zip|ZIP|rar|RAR)$ & T r X Extract another compressed file case %F in *.bz2) P="bzip2 -d";; *.gz) P="gzip -d";; *.lz) P="lzip -d";; *.lzma) P="lzma -d";; *.7z) P="7zr x";; *.xz) P="xz -d";; *.tar) P="tar xvpf";; *.zip|*.ZIP) P="uzip";; *.rar|*.RAR) P="rar x -y";; esac exec $P %D/%F + f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lzma$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.tar\.Z$ | f \.tar\.bz2$ & t r x Extract the contents of a compressed tar file unset PRG case %f in *.tar.bz2) PRG="bunzip2 -c" ;; *.tar.gz|*.tar.z|*.tgz|*.tpz|*.tar.Z) PRG="gzip -dc" ;; *.tar.lz) PRG="lzip -dc" ;; *.tar.lzma) PRG="lzma -dc" ;; *.tar.7z) PRG="7zr e -so" ;; *.tar.xz) PRG="xz -dc" ;; *) exit 1 ;; esac $PRG %f | tar xvf - + F \.tar\.gz$ | F \.tar\.z$ | F \.tgz$ | F \.tpz$ | F \.tar\.lz$ | F \.tar\.lzma$ | F \.tar\.7z$ | F \.tar\.xz$ | F \.tar\.Z$ | F \.tar\.bz2$ & T r X Extract the contents of an other compressed tar file unset PRG case %F in *.tar.bz2) PRG="bunzip2 -c" ;; *.tar.gz|*.tar.z|*.tgz|*.tpz|*.tar.Z) PRG="gzip -dc" ;; *.tar.lz) PRG="lzip -dc" ;; *.tar.lzma) PRG="lzma -dc" ;; *.tar.7z) PRG="7zr e -so" ;; *.tar.xz) PRG="xz -dc" ;; *) exit 1 ;; esac $PRG %D/%F | tar xvf - + t r & f \.(zip|ZIP)$ y Extract from zip with recoded filenames exec unzip.py %f + T r & F \.(zip|ZIP)$ Y Extract from other zip with recoded filenames exec unzip.py %D/%F + t r v View via mailcap exec see %f + t r c Compare the file exec cmp %D/%f %f + t r & T r C Compare these files exec cmp %D/%F %f + t r d Diff the file exec diff -u --speed-large-files %D/%f %f + t r & T r D Diff these files exec diff -u --speed-large-files %D/%F %f + t r v vimdiff the file exec vim -d %D/%f %f + t r & T r V vimdiff these files exec vim -d %D/%F %f + t d & ! f ^\.\.$ d Diff the directory exec diff -ru --speed-large-files %D/%f %f + t d & T d & ! F ^\.\.$ D Diff these directories exec diff -ru --speed-large-files %D/%F %f += f \.(asc|sig(n)?)$ & t r v Verify signature exec gpg --verify %f += f \.[1-8]$ | f \.man$ & t r 1 Display the file with roff -man %view nroff -man %f m View a manual page MAN=%{Enter manual name} %view man -P cat $MAN + t r | t d | t t r rsync the file(s) there rsync -ahP --del %s %D