Skip to content

Instantly share code, notes, and snippets.

@zyocum
Created July 29, 2020 17:09
Show Gist options
  • Save zyocum/f0286761fbfa7b8dad789265e5085ce1 to your computer and use it in GitHub Desktop.
Save zyocum/f0286761fbfa7b8dad789265e5085ce1 to your computer and use it in GitHub Desktop.
Custom Terminal UI for Reddit mailcap for macOS
# Example mailcap file for Terminal UI for Reddit
# https://gitlab.com/ajak/tuir/
#
# Copy the contents of this file to {HOME}/.mailcap, or point to it using $MAILCAPS
# Then launch TUIR using the --enable-media flag. All shell commands defined in
# this file depend on external programs that must be installed on your system.
#
# HELP REQUESTED! If you come up with your own commands (especially for OS X)
# and would like to share, please post an issue on the GitHub tracker and we
# can get them added to this file as references.
#
#
# Mailcap 101
# - The first entry with a matching MIME type will be executed, * is a wildcard
# - %s will be replaced with the image or video url
# - Add ``test=test -n "$DISPLAY"`` if your command opens a new window
# - Add ``needsterminal`` for commands that use the terminal
# - Add ``copiousoutput`` for commands that dump text to stdout
###############################################################################
# Commands below this point will open media in a separate window without
# pausing execution of TUIR.
###############################################################################
# Feh is a simple and effective image viewer
# Note that tuir returns a list of urls for imgur albums, so we don't put quotes
# around the `%s`
#image/x-imgur-album; feh -g 640x480 %s; test=test -n "$DISPLAY"
image/x-imgur-album; open -a Safari %s; test=test -n "$DISPLAY"
#image/gif; mpv '%s' --autofit 640x480 --loop=inf; test=test -n "$DISPLAY"
#image/gif; open -a Safari '%s'; test=test -n "$DISPLAY"
image/gif; open -a 'QuickTime Player' '%s'#; test=test -n "$DISPLAY"
#image/*; feh -g 640x480 '%s'; test=test -n "$DISPLAY"
# Youtube videos are assigned a custom mime-type, which can be streamed with
# vlc or youtube-dl.
#video/x-youtube; vlc '%s' --width 640 --height 480#; test=test -n "$DISPLAY"
#video/x-youtube; mpv --ytdl-format=best '%s' --autofit 640x480#; test=test -n "$DISPLAY"
#video/x-youtube; open -a 'Quicktime Player' '%s'#; test=test -n "$DISPLAY"
video/x-youtube; youtube-dl -g -f 'best[ext=mp4]/best' '%s' | xargs open -a 'QuickTime Player'#; test=test -n "$DISPLAY"
# Mpv is a simple and effective video streamer
#video/*; mpv '%s' --autofit 640x480 --loop=inf; test=test -n "$DISPLAY"
video/*; open -a 'Quicktime Player' '%s'#; test=test -n "$DISPLAY"
###############################################################################
# Commands below this point will attempt to display media directly in the
# terminal when a desktop is not available (e.g. inside of an SSH session)
###############################################################################
# View images directly in your terminal with iTerm2
# curl -L https://iterm2.com/misc/install_shell_integration_and_utilities.sh | bash
# image/*; bash -c '[[ "%s" == http* ]] && (curl -s %s | ~/.iterm2/imgcat) || ~/.iterm2/imgcat %s' && read -n 1; needsterminal
# View true images in the terminal, supported by rxvt-unicode, xterm and st
# Requires the w3m-img package
# image/*; w3m -o 'ext_image_viewer=off' '%s'; needsterminal
# Don't have a solution for albums yet
#image/x-imgur-album; echo
# 256 color images using half-width unicode characters
# Much higher quality that img2txt, but must be built from source
# https://github.com/rossy/img2xterm
#image/*; curl -s '%s' | convert -resize 80x80 - jpg:/tmp/tuir.jpg && img2xterm /tmp/tuir.jpg; needsterminal; copiousoutput
# Display images in classic ascii using img2txt and lib-caca
#image/*; curl -s '%s' | convert - jpg:/tmp/tuir.jpg && img2txt -f utf8 /tmp/tuir.jpg; needsterminal; copiousoutput
#image/*; curl -s '%s' | convert -resize 80X80 - jpg:"$TMPDIR"tuir.jpg && img2txt --width=80 -f utf8 "$TMPDIR"tuir.jpg; needsterminal; copiousoutput
# Full motion videos - requires a framebuffer to view
#video/x-youtube; mpv -vo drm -quiet '%s'; needsterminal
#video/*; mpv -vo drm -quiet '%s'; needsterminal
# Ascii videos
# video/x-youtube; youtube-dl -q -o - '%s' | mplayer -cache 8192 -vo caca -quiet -; needsterminal
# video/*; wget '%s' -O - | mplayer -cache 8192 -vo caca -quiet -; needsterminal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment