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 command
with selected itemsCopy
to clipboardOpen
withxdg-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/
- 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