Urlscan parses an email message or file and scans it for URLs and
email addresses. It then displays the URLs and their context within
the message, and allows you to choose one or more URLs to send to your
Web browser. Alternatively, it send a list of all URLs to stdout.

Relative to urlview, urlscan has the following additional features:

* Support for emails in quoted-printable and base64 encodings.
  No more stripping out =40D from URLs by hand!
* The context of each URL is provided along with the URL.
  For HTML mails, a crude parser is used to render the HTML into text.
  Context view can be toggled on/off with c.
* URLs are shortened by default to fit on one line.
  Viewing full URL (for one or all) is toggled with s or S.
* Jump to a URL by typing the number.
* Incremental case-insensitive search with /.
* Execute an arbitrary function (for example, copy URL to clipboard)
  instead of opening URL in a browser.
* Use l to cycle through whether URLs are opened using the Python
  webbrowser module (default), xdg-open (if installed) or opened by
  a function passed on the command line with --run.
* Configure colors and keybindings via ~/.config/urlscan/config.json.
  Generate default config file for editing by running urlscan -g.
  Cycle through available palettes with p.
* Copy URL to clipboard with C or to primary selection with P.
  Requires xsel or xclip.
* Run a command with the selected URL as the argument or pipe the
  selected URL to a command.
* Show complete help menu with F1. Hide header on startup with --nohelp.
