Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hyperlink in url #60

Closed
avelino opened this issue May 27, 2023 · 18 comments
Closed

hyperlink in url #60

avelino opened this issue May 27, 2023 · 18 comments
Labels
wishlist Features wishlist
Milestone

Comments

@avelino
Copy link
Contributor

avelino commented May 27, 2023

make the links (http:// and https://) clickable

example:
Screenshot 2023-05-27 at 15 11 04

@raphamorim raphamorim added the wishlist Features wishlist label May 27, 2023
@raphamorim raphamorim added this to the 0.0.8 milestone Jun 27, 2023
@raphamorim raphamorim modified the milestones: 0.0.8, 0.0.9 Jul 3, 2023
@raphamorim raphamorim modified the milestones: 0.0.9, 0.1.0 Jul 12, 2023
@raphamorim raphamorim modified the milestones: 0.1.0, 0.0.15 Jul 19, 2023
@OlshaMB
Copy link
Contributor

OlshaMB commented Oct 19, 2023

@raphamorim In which version this would be implemented? Does this require some work on sugarloaf? How to implement this in sugarloaf?

@raphamorim
Copy link
Owner

Haven't implemented yet @OlshaMB, the missing piece work that needs to be done is whenever the mouse is over the line, needs to run the regex to check if contains a link and then update the sugar to add underline (is similar of how alacritty works in the source code)

@OlshaMB
Copy link
Contributor

OlshaMB commented Oct 19, 2023

Ok, when I have time I will try and implement it

@hustcer
Copy link

hustcer commented Oct 19, 2023

Waiting for this feature

@raphamorim
Copy link
Owner

@OlshaMB alacritty runs the link preview for each draw (to inspire https://github.com/alacritty/alacritty/blob/7ceb638ff80eca99ac63df5fd8cbb2f703d4637a/alacritty/src/display/mod.rs#L813-L840), rio will not do this way since the renderer is not trigger per time interval (unless you use blinking cursor) but for key events and tty updates.

In rio should work like

  1. mouse moved, get the current line and run the regex on it (this needs to be iterated in the PR or after the PR, because the link data is saved through lines/cell)
  2. add the underline for cells that have the links enabled.

@raphamorim
Copy link
Owner

@OlshaMB did you start? otherwise will pick this issue after the #186 implementation

@raphamorim
Copy link
Owner

raphamorim commented Oct 22, 2023

fyi started to implement it

link

@OlshaMB
Copy link
Contributor

OlshaMB commented Oct 24, 2023

@raphamorim Sorry didn't have time, so no, did you start to implement it on main?
I think I will try to implement it this weekend

@raphamorim
Copy link
Owner

I wrote in a branch but haven't finished yet. What works so far is recognize the link, save to cells and update style to underline.

@raphamorim
Copy link
Owner

Implemented in main for MacOS (holding command and hovering the link allows the click), Linux/BSD does work now with xdg-open with super key but will be changed alt (as windows)

Documentation will be update once all platforms have support (will be wrapped up before next version 0.0.26 release)

@raphamorim
Copy link
Owner

Implemented for Linux, Windows, BSD and MacOS. Coming for upcoming version

demo-hyperlink-linux
demo-hyperlink-macos
demo-hyperlink-windows

@tauil
Copy link

tauil commented Oct 30, 2023

Great work! One small remark/question: I noticed that the link behavior with the underline only triggers if I move the mouse, so if I just leave the mouse over the link and click the Cmd button, the link doesn't activate, only after moving the mouse. Is it expected to be like that? I know it's just nitpicking but still worth checking! 😄

Screen.Recording.2023-10-30.at.10.08.22.mov

@raphamorim
Copy link
Owner

Yes, this is known. The way rio implemented the links is to avoid running regex without necessity so you actually need to interact with link to activate. It should be better with time (like press command and hit the link directly, but the handler now is in the mouse moving listener)

@tauil
Copy link

tauil commented Oct 30, 2023

To be honest I wouldn't mind having the handler in the Cmd key instead if that's possible.

@raphamorim
Copy link
Owner

Will do, but next version (needs to be tested carefully don't affect performance for other cases)

@lypanov
Copy link

lypanov commented Nov 11, 2023

This works well for me here on my (niche) setup - the project as a whole surprised me to be honest as wezterm was a train wreck qua performance on my platform (Android). However it seems that while you have OSC 8 / hyperlink marked as IMPLEMENTED you haven't yet connected the two parts? Is this a safe assumption? Is there any chance there is a plan to do so? I'm currently running xfce4-terminal for the sixels and tilix for the tabbing capabilities but would like to unify (bonus, xfce4-terminal took me hours to get building vs 10 minutes or so for your project, tilix also has too many deps alas)

@raphamorim
Copy link
Owner

Hey @lypanov thanks for the message.

Rio does implements OSC 8 https://github.com/raphamorim/rio/blob/main/rio/src/performer/handler.rs#L604-L622 , although it will still required to hold the key to enable the click.
If OSC8 isn't working for you with the hyperlink in URL, then it's a bug I can take a look

raphamorim added a commit that referenced this issue Nov 11, 2023
@raphamorim
Copy link
Owner

Actually never mind, found a bug with OSC 8 implementation that was preventing to show for majority of cases. Added the fix in 3078e63

Screenshot 2023-11-11 at 13 01 18

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wishlist Features wishlist
Projects
None yet
Development

No branches or pull requests

6 participants