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
or -o, --open
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
- Copy to clipboard
- Open with
xdg-open
- Custom regex search
- Add
index
to URLs found - Limit number of items
# clone the repo
$ git clone 'https://github.com/haaag/GoURL' && cd GoURL
# use make to build
$ make
Binary 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/
Uninstall from system, use sudo make uninstall or 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
-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