/GoURL

Extract URLs from STDIN

Primary LanguageGo

🔗 GoURL

✨ do not use regex 🤡

MadeWithGo

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.

✨ Features

  • 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

⚡️Requirements

  • Go v1.21.3 or higher

📦 Build

# clone the repo
$ git clone 'https://github.com/haaag/GoURL' && cd GoURL

# use make to build
$ make

Binary can be found in GoURL/bin.

📦 Install system wide

# use make to build
$ make

# install on system
$ sudo make install

Uninstall from system, use sudo make uninstall

🚀 Usage

$ gourl -h
Extract URLs from STDIN

Usage:
  gourl [options]

Options:
  -c, --copy        Copy to clipboard
  -o, --open        Open with xdg-open
  -E, --regex       Custom regex search
  -l, --limit       Limit number of items
  -i, --index       Add index to URLs found
  -a, --args        Args for dmenu
  -V, --version     Output version information
  -v, --verbose     Verbose mode
  -h, --help        Show this message

$ gourl -c < urls.txt
$ cat urls.txt | gourl -c

🚩 Using -E flag

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)(/)?'

⭐ Related projects

  • urlscan - Designed to integrate with the "mutt" mailreader
  • urlview - Extract URLs from a text file and allow the user to select via a menu