GoURL is a small Golang program that reads URLs and email addresses from standard input (STDIN)
You can use any terminal that supports piping visible text to external programs (alacritty, kitty, wezterm, etc).
I'm using st terminal with externalpipe patch to read/pipe current visible text to this program.
Using the option -c, --copy, -o, --open or -x, --exec will display the items in dmenu
Without flags, prints URLs found to standard output (STDOUT), you can pipe it to your preferred menu or launcher.
- Extract URLs from
STDIN - Choose items with
dmenu - Ignore
duplicates Execute commandwith selected itemsCopyto clipboardOpenwithxdg-open- Custom
regexsearch - Add
indexto URLs found - Limit number of items
# clone the repo
$ git clone 'https://github.com/haaag/GoURL' && cd GoURL
# use make to build
$ makeBinary can be found in GoURL/bin/gourl
# use make to build
$ make
# install on system wide
$ sudo make install
# or use a symlink
$ ln -sf $PWD/bin/gourl ~/.local/bin/- System: use
sudo make uninstall - User: remove symlink with
rm ~/.local/bin/gourl
$ gourl -h
Extract URLs from STDIN
Usage:
gourl [options]
Options:
-c, --copy Copy to clipboard
-o, --open Open with xdg-open
-u, --urls Extract URLs (default: true)
-e, --email Extract emails (prefix: "mailto:")
-E, --regex Custom regex search
-x, --exe Execute command with all search results as arguments
-l, --limit Limit number of items
-i, --index Add index to URLs found
-p, --prompt Prompt for dmenu
-a, --args Args for dmenu
-V, --version Output version information
-v, --verbose Verbose mode
-h, --help Show this message
$ gourl -c < urls.txt
# or
$ cat urls.txt | gourl -c
# extract only emails
$ gourl --url=false --email --limit 1 < data.txt
# example@email.com
# with index
$ gourl -i -l 10 < urls.txt
# [1] https://www.example.org
# [2] https://www.example.com
# ...The flag -E can be use for custom regex, like in grep.
# list existing remotes
git remote -v | gourl -E '((git|ssh|http(s)?)|(git@[\w\.]+))(:(//)?)([\w\.@\:/\-~]+)(\.git)(/)?'
# git@github.com:xxxxx/zzzzz.git