mc/lib/mc.ext.in
Pavel Roskin d9713d6233 * lib/mc.ext.in: For MS Word documents try "catdoc", "word2x"
and "strings". Recognize "write" files and MS Word templates.
For MS Excel documents try "xls2csv" and "strings".
Escape spaces in the "type" directives.
From Nerijus Baliunas.
2001-05-29 20:40:59 +00:00

600 lines
15 KiB
Plaintext

# Midnight Commander 3.0 extension file
# Warning: Structure of this file has changed completely with version 3.0
#
# All lines starting with # or empty lines are thrown away.
# Lines starting in the first column should have following format:
#
# keyword/descNL, i.e. everything after keyword/ until new line is desc
#
# keyword can be:
#
# shell (desc is, when starting with a dot, any extension (no wildcars),
# i.e. matches all the files *desc . Example: .tar matches *.tar;
# if it doesn't start with a dot, it matches only a file of that name)
#
# regex (desc is a regular expression)
# Please note that we are using the GNU regex library and thus
# \| matches the literal | and | has special meaning (or) and
# () have special meaning and \( \) are standing for literal ( ).
#
# type (file matches this if `file %f` matches regular expression desc
# (the filename: part from `file %f` is removed))
#
# directory (matches any directory matching regular expression desc)
#
# include (matches an include directive)
#
# default (matches any file no matter what desc is)
#
# Other lines should start with a space or tab and should be of the format:
#
# keyword=commandNL (with no spaces around =), where keyword should be:
#
# Open (if the user presses Enter or doubleclicks it),
#
# View (F3), Edit (F4), Drop (user drops some files on it) or any other
#
# user defined name (those will be listed in the extension dependent pop-up
# menu). This is not implemented yet for the text edition but will be
# implemented some day so feel free to add useful actions here.
#
# Title is the default icon title for objects. %p is expanded into the
# name of that file and %d/%p to a name with full path. Default title
# (if none is specified) is %p
#
# Include is the keyword used to add any further entries from an include/
# section
#
# command is any one-line shell command, with the following substitutions:
#
# %% -> % character
# %p -> name of the current file (without path, but pwd is its path)
# %f -> name of the current file. Unlike %p, if file is located on a
# non-local virtual filesystem, i.e. either tarfs, mcfs or ftpfs,
# then the file will be temporarily copied into a local directory
# and %f will be the full path to this local temporal file.
# If you don't want to get a local copy and want to get the
# virtual fs path (like /#ftp:ftp.cvut.cz/pub/hungry/xword), then
# use %d/%p instead of %f.
# %d -> name of the current directory (pwd, without trailing slash)
# %s -> "selected files", i.e. space separated list of tagged files if any
# or name of the current file
# %t -> list of tagged files
# %u -> list of tagged files (they'll be untaged after the command)
#
# (If these 6 letters are in uppercase, they refer to the other panel.
# But you shouldn't have to use it in this file.)
#
#
# %cd -> the rest is not command, but a path which will mc cd internally
# into (cd wouldn't work, since it is a child process, and %cd handles
# even the vfs names
#
# %view -> the command you type will be piped into mc's internal file viewer
# if you type only the %view and no command, viewer will load %f file
# instead (i.e. no piping, so it is different to %view cat %f)
# %view may be directly followed by {} with a list of any of
# ascii (Ascii mode), hex (Hex mode), nroff (c\bc color highlighting)
# and unformatted (not highlighting nroff sequences) separated by
# spaces.
#
# %var -> You use it like this: %var{ENV-VAR:default}. This macro will expand
# to the value of the ENV-VAR variable in the environement if it is set
# otherwise the value in default will be used. This is similar to
# the Bourne shell ${VAR-def} construct. We use it so that the extension
# file could be used unchanged under some shells that may use different
# methods of doing this
#
# %q -> will be replaced with a list of files user dropped on it
# with full pathnames (only applicable in the Drop command).
#
# Target are evaluted from top to bottom (order is thus important).
# If some actions are missing, search continues as if this target didn't
# match (i.e. if a file matches the first and second entry and View action
# is missing in the first one, then on pressing F3 the View action from
# the second entry will be used. default should catch all the actions.
#
# Any handy entries you develop for you are always welcome, if it has
# wider usage than on one system. You can send your modifications to
# via email to mc-devel@gnome.org
### Changes ###
#
# Reorganization: 2000-05-01 Michal Svec <rebel@penguin.cz>
### TODO ###
#
# Postscript Open: ps2svga [gs -DEVICE=jpeg|zgv or something]
# Images asciiview
# RTF rtf2html
#
# All X Apps [Nothing/Warning] if no DISPLAY
# Not found [Default/Warning]
# Empty Output [Default/Warning]
# Edit: CopyOut+EDIT+CopyIn
# Security Check gzip/bzip EDIT (mktemp)
#
# Maybe: Open/XOpen/GOpen/KOpen/... for Console/X/GNOME/KDE/etc.
### Programs ###
shell/rm
Open=if test ! -d ~/.trash; then mkdir ~/.trash; fi; I=%{Enter file to be safely deleted}; if test -n "$I"; then mv -f -b -V numbered %q ~/.trash; fi
Drop=if test ! -d ~/.trash; then mkdir ~/.trash; fi; mv -f -b -V numbered %q ~/.trash
Flush=rm -rf ~/.trash
Title=Safe delete
shell/lpr
Open=lpr %{Enter file(s) to print}
Drop=lpr %q
Print=lpr %{Enter file(s) to print}
shell/gzip
Open=gzip %{Enter file to gzip}
Drop=gzip %q
shell/bzip
Open=bzip %{Enter file to bzip}
Drop=bzip %q
shell/bzip2
Open=bzip2 %{Enter file to bzip}
Drop=bzip2 %q
shell/gunzip
Open=gunzip %{Enter file to gunzip}
Drop=gunzip %q
shell/bunzip
Open=bunzip %{Enter file to bunzip}
Drop=bunzip %q
shell/bunzip2
Open=bunzip2 %{Enter file to bunzip}
Drop=bunzip2 %q
shell/gdb
Open=gdb
Drop=gdb %q
### Sources ###
# C
shell/.c
Open=%var{EDITOR:vi} %f
View=%view{ascii}
Compile=%var{CC:cc} -O -c %f
Link=%var{CC:cc} -O -o %d/`basename %f .c` %f
# Fortran
shell/.f
Open=%var{EDITOR:vi} %f
View=%view{ascii}
Compile=f77 -O -c %f
Compile and Link=f77 -O %f
# Header
shell/.h
Open=%var{EDITOR:vi} %f
# Object
shell/.o
#Open=%var{PAGER:more} %f
Link=%var{CC:cc} -O %f
Display object file symbols=%view{ascii} nm %f
Disassemble=%view{ascii} objdump -d -r %f
# Asm
shell/.s
Open=%var{EDITOR:vi} %f
Assemble=%var{CC:cc} -O -c %f
Link=%var{CC:cc} -O -o %d/`basename %f .s` %f
# C++
regex/\.(C|cc)$
Open=%var{EDITOR:vi} %f
View=%view{ascii}
Compile=c++ -O -c %f
Link=c++ -O -o %d/`basename %f .c` %f
### Documentation ###
# Texinfo
regex/\.(te?xi)|(texinfo)$
# GNU Info page
type/Info\ text
Open=info --directory %d -f %p
# Manual page
regex/(([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|n)|\.man)$
Open=nroff @TROFFASCII@ @MANDOC@ %f | %var{PAGER:more}
View=%view{ascii,nroff} nroff @TROFFASCII@ @MANDOC@ %f
# Troff with me macros.
shell/.me
Open=nroff @TROFFASCII@ -me %f | %var{PAGER:more}
View=%view{ascii,nroff} nroff @TROFFASCII@ -me %f
# Troff with ms macros.
shell/.ms
Open=nroff @TROFFASCII@ -ms %f | %var{PAGER:more}
View=%view{ascii,nroff} nroff @TROFFASCII@ -ms %f
# Manual page - compressed
regex/([^0-9]|^[^\.]*)\.([1-9][a-z]?|n)\.g?[Zz]$
Open=gzip -dc %f | nroff @TROFFASCII@ @MANDOC@ | %var{PAGER:more}
View=%view{ascii,nroff} gzip -dc %f | nroff @TROFFASCII@ @MANDOC@
regex/([^0-9]|^[^\.]*)\.([1-9][a-z]?|n)\.bz$
Open=bzip -dc %f | nroff @TROFFASCII@ @MANDOC@ | %var{PAGER:more}
View=%view{ascii,nroff} bzip -dc %f | nroff @TROFFASCII@ @MANDOC@
regex/([^0-9]|^[^\.]*)\.([1-9][a-z]?|n)\.bz2$
Open=bzip2 -dc %f | nroff @TROFFASCII@ @MANDOC@ | %var{PAGER:more}
View=%view{ascii,nroff} bzip2 -dc %f | nroff @TROFFASCII@ @MANDOC@
regex/(read\.?me$)|(README)
### Images ###
type/GIF\ image
Include=image-options
type/GIF\ picture
Include=image-options
type/JPEG\ image
Include=image-options
type/JPEG\ picture
Include=image-options
type/PC\ bitmap
Include=image-options
type/PNG\ image
Include=image-options
type/TIFF\ file
Include=image-options
type/PBM
Include=image-options
type/PGM
Include=image-options
type/PPM
Include=image-options
shell/.xbm
Open=bitmap %f
shell/.xpm
Include=image-options
View=sxpm %f
include/image-options
Open=if [ "$DISPLAY" = "" ]; then zgv %f; else (ee %f &); fi
View=%view{ascii} identify %f
#View=%view{ascii} asciiview %f
Set root window to this image=background-properties --setwallpaper %f &
Display this file=ee %f &
### Sound files ###
regex/\.(wav|WAV|Wav|snd|SND|Snd|voc|VOC|Voc|au|AU|Au)$
Open=play %f
regex/\.(mod|MOD|Mod|s3m|S3M|S3m|xm|XM|Xm)$
Open=mikmod %f
#Open=tracker %f
regex/\.(wav22|WAV22)$
Open=vplay -s 22 %f
regex/\.(mp3|MP3|Mp3)$
Open=mpg123 %f
View=%view{ascii} mpg123 -tn1 %f 2>&1|grep -E "^(Title|Album|Comment|MPEG|$)"
### Multimedia ###
regex/\.(mpe?g|MPE?G|Mpe?g)$
Open=mtvp %f 2>/dev/null&
#Open=mtv %f 2>/dev/null&
#Open=gtv %f 2>/dev/null&
#Open=plaympeg %f 2>/dev/null&
#Open=mpeg_play %f &
#Open(big)=mpeg_play -dither 2x2 %f &
#Open(gray)=mpeg_play -dither gray %f &
regex/\.(avi|AVI|Avi|mov|MOV|Mov)$
Open=xanim %f 2>/dev/null&
regex/\.(rm|RM|Rm|ram|RAM|Ram)$
Open=realplay %f&
### Documents ###
# Postscript
type/PostScript
Open=gv %f&
View=%view{ascii} ps2ascii %f
View with GhostView=gv %f
# PDF
type/PDF
Open=xpdf %f&
#Open=acroread %f&
#Open=ghostview %f&
View=%view{ascii} pdftotext %f -
# html
regex/\.([Hh]tml?|HTML?)$
#Open=if echo "%d/%p" | grep ^ftp; then $viewer %d/%p; else $viewer file:%p; fi
Open=if [ x$DISPLAY = x ]; then lynx -force_html %f; else (@X11_WWW@ %f &); fi
View=%view{ascii} lynx -dump -force_html %f;
Run with AppletViewer=appletviewer %f
View with @X11_WWW@=@X11_WWW@ file://%f
# Microsoft Word Document
regex/\.([Dd]o[ct]|DO[CT]|[Ww]ri|WRI)$
View=%view{ascii} catdoc -w %f || word2x -f text %f - || strings %f
type/Microsoft\ Word
View=%view{ascii} catdoc -w %f || word2x -f text %f - || strings %f
# Microsoft Excel Worksheet
regex/\.([Xx]l[sw]|XL[SW])$
View=%view{ascii} xls2csv %f || strings %f
type/Microsoft\ Excel
View=%view{ascii} xls2csv %f || strings %f
# Framemaker
type/FrameMaker
Open=fmclient -f %f
# DVI
regex/\.([Dd]vi|DVI)$
Open=if [ x$DISPLAY = x ]; then dvisvga %f; else (xdvi %f &); fi
View=%view{ascii} dvi2tty %f
Convert file to Postscript=dvips %f
# TeX
regex/\.([Tt]ex|TEX|TeX)$
Open=%var{EDITOR:vi} %f
TeX this file=tex %f
LaTeX this file=latex %f
### Miscellaneous ###
shell/^RMAIL$
Start Emacs on this RMAIL file=emacs %f
Open=emacs %f
type/^(M|m)ail
Open=elm -f %f
View=%view{ascii} mcmfmt < %f
# core
shell/core
# Makefile
regex/[Mm]akefile
Open=make -f %f %{Enter parameters}
# Imakefile
shell/Imakefile
Open=xmkmf -a
# Executables
type/executable
Open=./%f
View=%view
Drop=%f %q
Execute in XTerm=xterm -e %f &
View Required Libraries=%view{ascii} ldd %f
Strip binary=strip %f
# dbf
regex/\.(dbf|DBF)$
Open=%view{ascii} dbview %f
View=%view{ascii} dbview -b %f
# REXX script
regex/\.(rexx)|(rex)|(cmd)$
Open=rexx %f %{Enter parameters};echo "Press ENTER";read y
### Archives ###
# .tgz, .tpz, .tar.gz, .tar.z, .tar.Z
regex/\.t([gp]?z|ar\.g?[zZ])$
Open=%cd %p#utar
View=%view{ascii} gzip -dc %f 2>/dev/null | tar tvvf -
Extract=gzip -dc %f 2>/dev/null | tar xf -
regex/\.tar\.bz$
# Open=%cd %p#utar
View=%view{ascii} bzip -dc %f 2>/dev/null | tar tvvf -
Extract=bzip -dc %f 2>/dev/null | tar xf -
regex/\.tar\.bz2$
Open=%cd %p#utar
View=%view{ascii} bzip2 -dc %f 2>/dev/null | tar tvvf -
Extract=bzip2 -dc %f 2>/dev/null | tar xf -
# .tar.F - used in QNX
regex/\.tar\.F$
# Open=%cd %p#utar
View=%view{ascii} freeze -dc %f 2>/dev/null | tar tvvf -
Extract=freeze -dc %f 2>/dev/null | tar xf -
# tar
regex/\.(tar|TAR)$
Open=%cd %p#utar
View=%view{ascii} tar tvvf %f
Extract=tar xf %f
# zip
regex/\.(zip|ZIP|jar|JAR)$
Open=%cd %p#uzip
View=%view{ascii} unzip -v %f
Extract=unzip %f
Extract (with flags)=I=%{Enter any Unzip flags:}; if test -n "$I"; then unzip $I %f; fi
Unzip=unzip %f '*'
# zoo
regex/\.(zoo|ZOO)$
Open=%cd %p#uzoo
View=%view{ascii} zoo l %f
Extract=zoo x %f '*'
# lha
regex/\.(lha|LHA|lzh|LZH)$
Open=%cd %p#ulha
View=%view{ascii} lharc l %f
Extract=lharc x %f '*'
Extract (with flags)=I=%{Enter any LHarc flags:}; if test -n "$I"; then lharc x $I %f; fi
# arj
regex/\.a(rj|[0-9][0-9])$
Open=%cd %p#uarj
View=%view{ascii} unarj l %f
Extract=unarj x %f '*'
Extract (with flags)=I=%{Enter any Unarj flags:}; if test -n "$I"; then unarj x $I %f; fi
# ha
regex/\.(ha|HA|Ha)$
Open=%cd %p#uha
View=%view{ascii} ha lf %f
Extract=ha xy %f '*'
Extract (with flags)=I=%{Enter any HA flags:}; if test -n "$I"; then ha xy $I %f; fi
# rar
regex/\.[rR]([aA][rR]|[0-9][0-9])$
Open=%cd %p#urar
View=%view{ascii} rar v -c- %f
Extract=rar x -c- %f '*'
Extract (with flags)=I=%{Enter any RAR flags:}; if test -n "$I";then rar x $I %f; fi
# cpio
shell/.cpio.Z
Open=%cd %d/%p#ucpio/
View=%view{ascii} compress -dc '%f' | cpio -ictv
Extract=compress -dc '%f' | cpio -ic
shell/.cpio.gz
Open=%cd %d/%p#ucpio/
View=%view{ascii} gzip -dc '%f' | cpio -ictv
Extract=gzip -dc '%f' | cpio -ic
shell/.cpio
Open=%cd %d/%p#ucpio/
View=%view{ascii} cat '%f' | cpio -ictv
Extract=cat '%f' | cpio -ic
# gzip
type/gzip
Open=gzip -dc %f | %var{PAGER:more}
View=%view{ascii} gzip -dc %f 2>/dev/null
Edit=I=`date +%%s`; export I; gzip -cd %f >/tmp/gzed.$I && %var{EDITOR:vi} /tmp/gzed.$I && gzip -c /tmp/gzed.$I > %f; rm -f /tmp/gzed.$I
Uncompress=gunzip %f
# bzip2
type/bzip2
Open=bzip2 -dc %f | %var{PAGER:more}
View=%view{ascii} bzip2 -dc %f 2>/dev/null
Edit=I=`date +%%s`; export I; bzip2 -cd %f >/tmp/bzed.$I && %var{EDITOR:vi} /tmp/bzed.$I && bzip2 -c /tmp/bzed.$I > %f; rm -f /tmp/bzed.$I
Uncompress=bunzip2 %f
# bzip
type/bzip
Open=bzip -dc %f | %var{PAGER:more}
View=%view{ascii} bzip -dc %f 2>/dev/null
Edit=I=`date +%%s`; export I; bzip -cd %f >/tmp/bzed.$I && %var{EDITOR:vi} /tmp/bzed.$I && bzip -c /tmp/bzed.$I > %f; rm -f /tmp/bzed.$I
Uncompress=bunzip %f
# compress
type/compress
Open=gzip -dc %f | %var{PAGER:more}
View=%view{ascii} gzip -dc %f 2>/dev/null
Edit=I=`date +%%s`; export I; gzip -cd %f >/tmp/gzed.$I && %var{EDITOR:vi} /tmp/gzed.$I && gzip -c /tmp/gzed.$I > %f; rm -f /tmp/gzed.$I
# ar library
regex/\.s?a$
Open=%cd %p#uar
#Open=%view{ascii} ar tv %f
View=%view{ascii} nm %f
# .so libraries are not manual pages
regex/\.(so|so\.[0-9\.]*)$
View=%view{hex}
# ls-lR
regex/(^|\.)ls-?lR$
Open=%cd %p#lslR
View=%view{ascii}
regex/(^|\.)ls-?lR\.(g?z|Z)$
Open=%cd %p#lslR
View=%view{ascii} gunzip -c %f
# ftplist
regex/\.ftplist$
Open=%cd %p#ftplist
# trpm
regex/\.trpm$
Open=%cd %p#trpm
View=%view{ascii} rpm -qivl --scripts `basename %p .trpm`
# Source RPMs (SuSE uses *.spm, others use *.src.rpm)
regex/\.(spm|src\.rpm)$
Open=%cd %p#rpm
View=%view{ascii} rpm -qivlp --scripts %f
Install this RPM=rpm -i %f
Rebuild this RPM=rpm --rebuild %f
Check signature=rpm --checksig %f
# Compiled RPMs
regex/\.rpm$
Open=%cd %p#rpm
View=%view{ascii} rpm -qivlp --scripts %f
Install this RPM=rpm -i %f
Upgrade this RPM=rpm -U %f
Check signature=rpm --checksig %f
# deb
regex/\.deb$
Open=%cd %p#deb
View=%view{ascii} dpkg-deb -c %f
### Directories ###
directory/^\.\.$
directory/^News$
directory/^Mail$
directory/^\..*$
directory/^.*$
Start XTerm here=cd %p; exec xterm &
Make tar.gz=I=%{Enter destination file name:}; if test -n "$I"; then tar cvf - %p | gzip > $I; fi
### Default ###
# Default target for anything not described above
default/*
Open=
View=%view{ascii}
Drop=
Title=%p
### EOF ###