Clickable links in the terminal for Go
Termlink is a Go package that allows you to create fully customizable clickable links in the terminal. It is the Go version of Sindre Sorhus' popular terminal-link library.
It includes multiple features including dynamic and fully customizable colored links in terminal, along with smart hyperlink support detection.
Using go get
:
go get github.com/savioxavier/termlink
- Basic regular link:
import (
"fmt"
"github.com/savioxavier/termlink"
)
func main() {
fmt.Println(termlink.Link("Example", "https://example.com"))
}
- Customizable colored link:
import (
"fmt"
"github.com/savioxavier/termlink"
)
func main() {
fmt.Println(termlink.ColorLink("Example", "https://example.com", "italic green"))
}
- Check if your current terminal supports hyperlinks:
import (
"fmt"
"github.com/savioxavier/termlink"
)
func main() {
fmt.Println(termlink.SupportsHyperlinks())
// prints either true or false, depending on your terminal
}
- Since
termlink.Link
returns a string, you can use it with your favorite text color formatting libraries such as fatih/color, mgutz/ansi, etc. Alternatively, you can usetermlink.ColorLink
as well.
import (
"fmt"
"github.com/fatih/color"
"github.com/savioxavier/termlink"
)
func main() {
// With fatih/color package
color.Cyan(termlink.Link("Example link using the fatih/color package", "https://example.com"))
}
Note For unsupported terminals, the link will be printed in parentheses after the text (see below image)
More examples can be found in the examples/
directory.
For a quick demo, execute the following commands in your terminal:
git clone https://github.com/savioxavier/termlink.git
cd termlink/
go get github.com/savioxavier/termlink
go run examples/start.go
-
termlink.Link(text, url, [shouldForce])
- Creates a regular, clickable link in the terminal
- For unsupported terminals, the link will be printed in parentheses after the text:
Example Link (https://example.com)
. - The
shouldForce
is an optional boolean parameter which allows you to force the above unsupported terminal hyperlinks formattext (url)
to be printed, even in supported terminals
-
termlink.ColorLink(text, url, color, [shouldForce])
- Creates a clickable link in the terminal with custom color formatting
- Examples of color options include:
- Foreground only:
green
,red
,blue
, etc. - Background only:
bgGreen
,bgRed
,bgBlue
, etc. - Foreground and background:
green bgRed
,bgBlue red
, etc. - With formatting:
green bold
,red bgGreen italic
,italic blue bgGreen
, etc.
- Foreground only:
- The
shouldForce
is an optional boolean parameter which allows you to force the above unsupported terminal hyperlinks formattext (url)
to be printed, even in supported terminals
shouldForce
can be used in the following manner:termlink.Link(text, url, true) termlink.ColorLink(text, url, color, true)You don't always need to specify this argument. By default, this parameter is
false
-
termlink.SupportsHyperlinks()
:- Returns
true
if the terminal supports hyperlinks,false
otherwise.
- Returns
You can run unit tests locally by running the following command:
go test -v
Tests can be found in termlink_test.go
You can support further development of this project by giving it a ๐ and help me make even better stuff in the future by buying me a โ
Also, if you liked this repo, consider checking out my other projects, that would be real cool!
- terminal-link - Sindre Sorhus' original package for providing inspiration for this package.
- supports-hyperlinks - Zkat's package for additional hyperlink handling support.
* The paperclip icon shown in the demo at the top of this README isn't included when you create the link, it's purely for decorative purposes only.