Closed tartavull closed 1 month ago
I have this requirement, too.
It looks like termenv, one of the project dependencies, supports hyperlinks. I haven't looked into it other than glancing at hyperlink.go
, but I think one could use that to render a hyperlink.
It would be nice to have it wrapped in lipgloss so I can use the same APIs.
Hi guys, what's the status of this? Displaying links works but width calculation is all wrong
Hey, @testinfected! In terms of width calculation, I believe it's correct now (we've reworked a lot of the underpinnings):
package main
import (
"fmt"
"github.com/charmbracelet/lipgloss"
)
func main() {
const x = "\x1B]8;;http://charm.sh\x1B\\Hello\x1B]8;;\x1B\\\n"
fmt.Println(lipgloss.Width(x)) // 5
}
If not, mind opening a separate issue with code to reproduce?
Hey @meowgorithm good to know, thank you. I'm displaying an hyperlink in the spinner title, but part of the hyperlink is not visible unless I resize the terminal horizontally.
Let me double check and open a new issue then.
It seems ok with all the latest versions of the libraries. I guess you can close this issue
Thanks for the quick response :-)
FYI I had bubbletea 0.25, seems fixed with 0.26.3
Okay awesome, that's good to hear. Bubble Tea v0.26.x and Lip Gloss v0.11.x both use our new low level stuff in /x.
Let's keep this issue open until we add an API for hyperlinks, i.e. something like:
lipgloss.Hyperlink("https://charm.sh/", "Charm!")
Actually, I'd probably implement it on a style for control over the output:
str := lipgloss.NewStyle().
Foreground(lipgloss.Color(63)).
Underline(true).
Hyperlink("https://charm.sh").
Render("Charm!")
I would want to work on this!
@Delta456 urgh, I actually have a hyperlink
branch open with most of this in place. I'll open up a PR for it in a few minutes and mention you.
@Delta456 urgh, I actually have a
hyperlink
branch open with most of this in place. I'll open up a PR for it in a few minutes and mention you.
Ah well, no worries! The implementation is almost the same as yours :stars:
Just a note that you can follow progress on this is #313. Getting it right will be a bit more complicated than meets the eye.
https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda OSC8 allows for hyperlinks in terminals that support them. But currently even in terminals that support OSC8, it brakes the rest of the formatting provided by lipgloss. I would love to contribute this if I can be offered some guidance.