From bc0433e51832effa04bcd61144ba0ec2c1c95eb4 Mon Sep 17 00:00:00 2001 From: Alexander Schlarb Date: Thu, 9 Aug 2018 20:10:29 +0200 Subject: [PATCH 1/7] common-aliases: Extend list of recognized raster & vector image formats --- .../common-aliases/common-aliases.plugin.zsh | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh index 4e5ff848f..7511f1ef2 100644 --- a/plugins/common-aliases/common-aliases.plugin.zsh +++ b/plugins/common-aliases/common-aliases.plugin.zsh @@ -61,8 +61,25 @@ if is-at-least 4.2.0; then _editor_fts=(cpp cxx cc c hh h inl asc txt TXT tex) for ft in $_editor_fts; do alias -s $ft='$EDITOR'; done + # open image files in image viewer if [[ -n "$XIVIEWER" ]]; then - _image_fts=(jpg jpeg png gif mng tiff tif xpm) + # List inspired by https://en.wikipedia.org/wiki/Image_file_formats + _image_fts=( + #: Raster formats + # JPEG, JPEG2000, HEIF/HEVC, JBIG + jpg jpeg jpe jif jfif jfi jp2 j2k jpf jpx jpm mj2 heif heic jbg jbig + # BMP, BPG, GIF, ICO/ANI, PCX, PNG+MNG, TGA, TIFF, WebP (Web) + bmp bpg gif dib ico cur ani pcx png mng tga tiff tif webp + # NetPBM, XBM/XPM/XWD (ASCII) + pbm bgm ppm pnm xbm xpm xwd + # CIFF, DNG, DPX, ECW, FITS, ICS, RGBE (HDR & Raw) + crw dng dpx ecw fits ics ids fit fts hdr + # DDS ICNS OpenRaster SunRaster (Other) + dds icns ora ras sun + #: Vector formats + # CGM WMF Gerber IGES SVG + cgm wmf emf wmz emz gbr iges svg svgz + ) for ft in $_image_fts; do alias -s $ft='$XIVIEWER'; done fi From aa9043f5eae6328194048b6a5c838613eade99ed Mon Sep 17 00:00:00 2001 From: Alexander Schlarb Date: Thu, 9 Aug 2018 20:47:16 +0200 Subject: [PATCH 2/7] common-aliases: Do not presume that $EDITOR (or $VISUAL for that matter) are always set --- plugins/common-aliases/common-aliases.plugin.zsh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh index 7511f1ef2..c32f634fc 100644 --- a/plugins/common-aliases/common-aliases.plugin.zsh +++ b/plugins/common-aliases/common-aliases.plugin.zsh @@ -58,8 +58,15 @@ if is-at-least 4.2.0; then for ft in $_browser_fts; do alias -s $ft='$BROWSER'; done fi - _editor_fts=(cpp cxx cc c hh h inl asc txt TXT tex) - for ft in $_editor_fts; do alias -s $ft='$EDITOR'; done + # open editable text files in text editor + if [[ -n "$VISUAL" ]] || [[ -n "$EDITOR" ]]; then + _editor_fts=(cpp cxx cc c hh h inl asc txt TXT tex) + if [[ -n "$VISUAL" ]]; then + for ft in $_editor_fts; do alias -s $ft='$VISUAL'; done + else + for ft in $_editor_fts; do alias -s $ft='$EDITOR'; done + fi + fi # open image files in image viewer if [[ -n "$XIVIEWER" ]]; then From 3cb5a9097b658be9e6c532088e3957ba8d025735 Mon Sep 17 00:00:00 2001 From: Alexander Schlarb Date: Thu, 9 Aug 2018 20:48:45 +0200 Subject: [PATCH 3/7] common-aliases: Expand list of recognized text file extensions --- .../common-aliases/common-aliases.plugin.zsh | 44 ++++++++++++++++--- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh index c32f634fc..fa509abae 100644 --- a/plugins/common-aliases/common-aliases.plugin.zsh +++ b/plugins/common-aliases/common-aliases.plugin.zsh @@ -54,18 +54,48 @@ autoload -Uz is-at-least if is-at-least 4.2.0; then # open browser on urls if [[ -n "$BROWSER" ]]; then - _browser_fts=(htm html de org net com at cx nl se dk) + _browser_fts=(htm html xhtml de org net com at cx nl se dk) for ft in $_browser_fts; do alias -s $ft='$BROWSER'; done fi # open editable text files in text editor if [[ -n "$VISUAL" ]] || [[ -n "$EDITOR" ]]; then - _editor_fts=(cpp cxx cc c hh h inl asc txt TXT tex) - if [[ -n "$VISUAL" ]]; then - for ft in $_editor_fts; do alias -s $ft='$VISUAL'; done - else - for ft in $_editor_fts; do alias -s $ft='$EDITOR'; done - fi + _aliases_launch_editor() { + # directly launch matched files with executable bit and shebang present + if [[ -x "${1}" ]]; then + read -r <"${1}" + if [[ ${#REPLY} -ge 3 ]] && [[ ${REPLY:0:2} = '#!' ]]; then + "$@" + return $? + fi + fi + + if [[ -n "$VISUAL" ]]; then + $VISUAL "$@" + else + $EDITOR "$@" + fi + } + # Taken from the /language/metadata/property[name="globs"] sections of the + # gtksourceview language definition files in + # /usr/share/gtksourceview-3.0/language-specs/*.lang + _editor_fts=( + abnf as adb ads 4th forth asp am awk prg bib bsv boo cg h c cmake ctest + cbl cob cbd cdb cdc hh hp hpp h++ cpp cxx cc C c++ cs css CSSL csv cu cuh + desktop kdelnk diff patch rej d docbook bat cmd sys dot gv dpatch dtd dtl + e eif erl hrl fcl frt fs f f90 f95 for F F90 fs g gd gi gap gdb gs glslv + glslf go groovy hs lhs hx pro idl igm ini jade pug java js node ijs json + geojson topojson jl kt tex ltx sty cls dtx ins bbl l lex flex la lai lo + ll logcat lua m4 ac in make mak mk page markdown md mkd m mac MAC dem DEM + wxm WXM build mo mop mxml n nrx nai nsh m j ml mli mll mly ocl ooc sign + impl cl p pas txt TXT pl pm al perl t php php3 php4 phtml pig pc po pot + prolog proto pp py3 py pyw R Rout r Rhistory Rtspec rst rb rake gemspe rs + scala scm sce sci sh bash sml sig rq sql rnw Rnw snw Snw swift sv svh t2t + tcl tk tera texi texinfo thrift toml tml lock vala vapi vb v vhd xml xspf + siv smil smi sml kino xul xbel abw zabw glabe jnlp mml rdf rss wml xmi fo + xslfo xslt xsl y yacc yaml yml + ) + for ft in $_editor_fts; do alias -s $ft=_aliases_launch_editor; done fi # open image files in image viewer From 5889f4cfc968fbe5a1f896baa78f1a8ba66e5d36 Mon Sep 17 00:00:00 2001 From: Alexander Schlarb Date: Thu, 9 Aug 2018 20:50:27 +0200 Subject: [PATCH 4/7] common-aliases: Drop domain names from browser alias list --- plugins/common-aliases/common-aliases.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh index fa509abae..50bb826fd 100644 --- a/plugins/common-aliases/common-aliases.plugin.zsh +++ b/plugins/common-aliases/common-aliases.plugin.zsh @@ -54,7 +54,7 @@ autoload -Uz is-at-least if is-at-least 4.2.0; then # open browser on urls if [[ -n "$BROWSER" ]]; then - _browser_fts=(htm html xhtml de org net com at cx nl se dk) + _browser_fts=(htm html xhtml) for ft in $_browser_fts; do alias -s $ft='$BROWSER'; done fi From ca467bd9d966169035ba620196f15f87c15bf5f4 Mon Sep 17 00:00:00 2001 From: Alexander Schlarb Date: Thu, 9 Aug 2018 21:34:08 +0200 Subject: [PATCH 5/7] common-aliases: Make media file viewer configurable using the `$XMVIEWER` variable --- plugins/common-aliases/common-aliases.plugin.zsh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh index 50bb826fd..bea6df2d9 100644 --- a/plugins/common-aliases/common-aliases.plugin.zsh +++ b/plugins/common-aliases/common-aliases.plugin.zsh @@ -120,8 +120,10 @@ if is-at-least 4.2.0; then for ft in $_image_fts; do alias -s $ft='$XIVIEWER'; done fi - _media_fts=(ape avi flv m4a mkv mov mp3 mpeg mpg ogg ogm rm wav webm) - for ft in $_media_fts; do alias -s $ft=mplayer; done + if [[ -n "$XMVIEWER" ]]; then + _media_fts=(ape avi flv m4a mkv mov mp3 mpeg mpg ogg ogm rm wav webm) + for ft in $_media_fts; do alias -s $ft=$XMVIEWER; done + fi #read documents alias -s pdf=acroread From f246f4612ad3911c365bd3a1516caf0d7b848051 Mon Sep 17 00:00:00 2001 From: Alexander Schlarb Date: Thu, 9 Aug 2018 21:45:30 +0200 Subject: [PATCH 6/7] common-aliases: Expand list of recognized media formats --- plugins/common-aliases/common-aliases.plugin.zsh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh index bea6df2d9..cbc835651 100644 --- a/plugins/common-aliases/common-aliases.plugin.zsh +++ b/plugins/common-aliases/common-aliases.plugin.zsh @@ -121,7 +121,18 @@ if is-at-least 4.2.0; then fi if [[ -n "$XMVIEWER" ]]; then - _media_fts=(ape avi flv m4a mkv mov mp3 mpeg mpg ogg ogm rm wav webm) + _media_fts=( + #: Audio (container) formats + # https://en.wikipedia.org/wiki/Audio_file_format#List_of_formats + aac act aiff ape au awb dct dss flac gsm m4a m4b mp3 mpc oga opus ra sln + tta vox wav wma wv + #: Video (container) formats + # https://en.wikipedia.org/wiki/Video_file_format#List_of_video_file_formats + mkv flv f4v f4p f4a f4b vob ogv drc gifv avi mov qt wmv yuv rmvb asf amv + m4v mpg mp2 m2v mpeg mpe mpv svi 3g2 mxf nsv + #: Container formats that may store both + 3gp ogg mogg mp4 m4p rm webm + ) for ft in $_media_fts; do alias -s $ft=$XMVIEWER; done fi From b58bf314444443c8d784562c7b3fd3b84c00f966 Mon Sep 17 00:00:00 2001 From: Alexander Schlarb Date: Thu, 9 Aug 2018 22:36:03 +0200 Subject: [PATCH 7/7] common-aliases: Replace static document program associations with calls to `(xdg-)open` --- .../common-aliases/common-aliases.plugin.zsh | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh index cbc835651..b05a83b79 100644 --- a/plugins/common-aliases/common-aliases.plugin.zsh +++ b/plugins/common-aliases/common-aliases.plugin.zsh @@ -136,12 +136,28 @@ if is-at-least 4.2.0; then for ft in $_media_fts; do alias -s $ft=$XMVIEWER; done fi - #read documents - alias -s pdf=acroread - alias -s ps=gv - alias -s dvi=xdvi - alias -s chm=xchm - alias -s djvu=djview + #open complex document formats using the system viewer + _document_fts=( + # Long-term storage formats + djvu dvi fb2 epub pdf ps rtf + # Office Binary & Office OpenXML + doc docx docm ppt pptx pptm xls xlsx xlsm + # OpenDocument + odt fodt ods fods odp fodp odg fodg odf + # Uniform Office Format + uof uot uos uop + # StarOffice + sdw sxw sdc sxc sdd sci sda sxd smf sxm + # WordPerfect + wpd wp wp4 wp5 wp6 wp7 + # Others + abw gnm gnumeric pages hwp + ) + if type xdg-open >/dev/null; then + for ft in $_document_fts; do alias -s $ft=xdg-open; done + elif type open >/dev/null; then + for ft in $_document_fts; do alias -s $ft=open; done + fi #list whats inside packed file alias -s zip="unzip -l"