Skip to content

Instantly share code, notes, and snippets.

@LukeSmithxyz
Last active February 22, 2023 18:43
Embed
What would you like to do?
Following Terminal Links with URLview

Following Terminal Links with URLview

Link handling

Specify what you want urlview to open your links with in ~/.urlview after COMMAND. I.e. the line below will make urlview open all urls in Firefox.

COMMAND firefox

I use this link handler to be run by urlview. This will open images in feh, movies/gifs in mpv on loop, will download .pdfs and music files and will open everything else in my browser.

Tell me how to improve this script, since I literally just threw it together a couple days ago.

Getting URLview built into some programs

Here are the configurations I have to get URLview working on some of my main terminal programs.

vim

This sets u to bring up urlview. IIRC it will give you all urls in the open document.

:noremap <leader>u :w<Home>silent <End> !urlview<CR>

newsboat/newsbeuter

urlview is a total life-saver in newsboat. I can browse even twitter feeds in the terminal with it with all multimedia. I map it to capital U here.

external-url-viewer "urlview"
bind-key U show-urls

mutt/neomutt

Again, I map urlview to capital U in mutt as well.

macro index,pager U "<enter-command>set pipe_decode = yes<enter><pipe-message>urlview<enter><enter-command>set pipe_decode = no<enter>""view URLs"
@cyberhoffman
Copy link

What about youtube/vimeo? I've found a solution but it looks a bit ugly.

#!/bin/bash
ext="${1##*.}"
mpvFiles="mkv mp4 avi mov wmv flv gif"
fehFiles="png jpg jpeg jpe"
wgetFiles="mp3 flac opus mp3?source=feed pdf"

if echo $fehFiles | grep -w $ext > /dev/null; then
	nohup gpicview "$1" >/dev/null &
elif echo $mpvFiles | grep -w $ext > /dev/null; then
	nohup mpv --loop --quiet "$1" > /dev/null &
elif echo $wgetFiles | grep -w $ext > /dev/null; then
	nohup wget "$1" >/dev/null &
elif echo $1 | grep youtube > /dev/null; then
	nohup mpv "$1" > /dev/null &
elif echo $1 | grep youtu.be > /dev/null; then
	nohup mpv "$1" > /dev/null &
elif echo $1 | grep vimeo > /dev/null; then
	nohup mpv "$1" > /dev/null &
else
	nohup firefox "$1" >/dev/null &
fi

And it would be nice if we could send gotten playlist to file or even to mpv directly.
curl zenway.ru/forum/viewtopic.php?pid=6639 | grep youtube | urlview

Copy link

ghost commented Jul 18, 2018

Thanks a lot Luke.
all of them works perfectly.
But do you know how I can make it work with NEOVIM?
Thanks

@g4570n
Copy link

g4570n commented Sep 22, 2019

The file is not available, I get: "ERROR 404: Not Found"
https://raw.githubusercontent.com/LukeSmithxyz/voidrice/master/.scripts/webview

@kcallis
Copy link

kcallis commented Oct 2, 2019

I am actually looking for the .urlview file. I looked at the dotfile repo, but no such luck...

@3ruce
Copy link

3ruce commented Oct 30, 2019

This works for me in Neovim on Debian 10

" Use urlview to choose and open an url:
" The "leader" key is "\"
noremap <leader>u :w \| startinsert \| term urlview %<cr>

@bronzehedwick
Copy link

bronzehedwick commented Jan 14, 2020

Old thread, but I wanted urlview to work in terminal mode, since Github and others display PR URLs after push. None of these solutions work with terminal mode, unfortunately, because urlview expects a file name, and terminal buffers aren't quite files (I'm not an expert by any stretch, but whatever type of thing terminal buffers are, urlview doesn't like it).

I came up with a kludge that works in terminal mode, by simply writing a temp file.

if executable('urlview')
  function! UrlView() abort
    :startinsert
    :silent write /tmp/nvim-urlview.out
    :split term://urlview\ /tmp/nvim-urlview.out
  endfunction
  nnoremap <leader>g :call UrlView()<CR>
endif

@Benjman
Copy link

Benjman commented Jul 1, 2020

@kcallis there should be a sample .urlview at one in /etc/urlview/system.urlview

@Benjman
Copy link

Benjman commented Jul 16, 2020

@lumpsoid
Copy link

@Benjman , @g4570n
it's kind late, but
now it's calling linkhandler

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment