Remix.run Logo
Animated Cursors(tattoy.sh)
244 points by speckx 6 days ago | 57 comments
baq 6 days ago | parent | next [-]

This is way cooler than I expected.

It's an over-the-top animation of a terminal cursor moving from position to position, helps notice where it moved to. I thought it'll be something about mouse cursor animations. I could see myself using this if a) I was using more TUI apps and b) it'd be toned down quite a bit.

jasonjmcghee 6 days ago | parent | next [-]

I think was popularized by Neovide

https://neovide.dev/features.html#animated-cursor

nine_k 6 days ago | parent | next [-]

Here it's less dramatic and hence more useful.

I wish more terminals implemented something similar.

tombh 6 days ago | parent | next [-]

Author here, I just chose the fire cursor for the demo. There are lots of other shaders available, eg https://github.com/KroneCorylus/ghostty-shader-playground/tr..., they have a simple smear cursor like Neovide's.

nine_k 6 days ago | parent [-]

The fire is perfect for the demo, and for screencasts maybe.

throwanem 6 days ago | parent [-]

Strong second.

smohare 6 days ago | parent | prev [-]

[dead]

danieldk 6 days ago | parent | prev | next [-]

Kitty also supports them with the cursor_trail option: https://sw.kovidgoyal.net/kitty/conf/#opt-kitty.cursor_trail

thebeardisred 4 days ago | parent [-]

As a kitty user, I'll have to try this out.

Thanks!

echelon 6 days ago | parent | prev [-]

I never knew this was a thing.

This is so fucking cool. I'm going to add this right away.

tombh 6 days ago | parent | prev | next [-]

The home page has GIFs of both a simpler smear-fade cursor and a wilder manga-slash cursor https://tattoy.sh

rendaw 6 days ago | parent [-]

Where? I only see the fire one too.

ldjb 6 days ago | parent [-]

Under the Animated Cursors heading. Here are direct links to the webms if you still can't find them:

https://tattoy.sh/assets/screenshots/cursor_smear_fade.webm

https://tattoy.sh/assets/screenshots/manga_slash.webm

Rendello 6 days ago | parent | prev [-]

Reminds me of the old Compiz plugin that would make your windows burst into flames on closing.

andrepd 6 days ago | parent | next [-]

Compiz effects was truly the killer feature for Linux for 12 year old me :)

Rendello 6 days ago | parent [-]

14 year-old me set up Linux Mint with this LSD Conky display for my grandmother. I said something like "Well technically it's LSD but it looks cool so don't worry about it".

https://github.com/matmutant/LSD-Conky

eMPee584 6 days ago | parent [-]

in hindsight, I do regret not yet being able to supply my <3 grandma with a small dose, might have condoled her senseless fury (dementia rage or so).. RIP

ckrailo 4 days ago | parent | prev [-]

If you'd like to scratch that itch... https://github.com/Schneegans/Burn-My-Windows

__MatrixMan__ 5 days ago | parent | prev | next [-]

I've not heard of tattoy but I'm glad I ran across it. Most of its usage is not to my taste, but it appears to scratch an itch I've had for some time. I've been chewing on this idea for a... terminal emulator? shell? editor plugin?... something where you could annotate an error message with something like:

> This is fixed in the next release, nothing to see here

or

> I think think one is actually a problem, see issue 1657

And then your coworkers could view the logs in some way (special terminal emulator? piped through some kind of filter? idk) and your annotations would appear in a column next to the logs, perhaps with some background coloring to indicate which annotation goes with which log message. This way you don't all duplicate the effort of deciding whether this particular error is worth worrying about--instead you'd leave notes right there on the error (anchored via context triggered piecewise hashes).

The tattoy protocol seems like it be a good way to apply the highlighting on the logs whenever one that has a matching annotation appears on screen (https://tattoy.sh/docs/plugins/).

DiggyJohnson 5 days ago | parent | next [-]

That would actually be cool. We have a couple issue patterns with the interface between front and backend that leads to our frontend guys always misinterpreting the reason their API call are failing. Wound be cool to annotate “this error message is usually caused by another error message in <this controller>. Please check for this before assuming…”

__MatrixMan__ 5 days ago | parent [-]

It's part of a bigger vision, a sort of general-purpose digital spraypaint, where you don't need write access to the data in order to annotate it and we use patterns in the data itself to index the annotations such that you can direct any bitstream into the app and ask:

> do any of my peers have annotations on any of this?

But I think the way to get there is to make a variety of purpose built apps which all follow the same pattern, and I figure annotations on logs is one of the first ones I'll do. It has been slow going though, holidays and weekends, so it'll be a while.

DiggyJohnson 4 days ago | parent [-]

Best of luck! I know how hard it can be to find time and energy for these sorts of projects, but this is cool

tombh 5 days ago | parent | prev [-]

This is exactly the kind of creative thinking I want Tattoy to both inspire and make easy to implement.

kingforaday 6 days ago | parent | prev | next [-]

I applaud this effort and think it is amazing graphically for a tty, but serious question: does anyone use this as their daily driver?

tombh 6 days ago | parent | next [-]

I'm the creator of Tattoy, so thanks. A significant part of the motivation for the project is that it's fun, like a "toy", as the name suggests. I do use it everyday, but only for one serious usecase, to allow my Twitch chatters to visually interact with my terminal by sending emotes to it. I'm not personally into the animated cursors, they were just easy to implement because I'd already built out support for Ghostty's background shaders.

But, if you want a truly serious usecase, then my pipe dream is that Tattoy becomes the "XWayland" for an entirely new protocol for terminals that explores moving on from ANSI codes, the terminfo database and so on. I wrote a blog post about this idea: https://tattoy.sh/news/an-end-to-terminal-ansi-codes

VTimofeenko 6 days ago | parent | prev [-]

As in the cursor trailing to new position? I use it, albeit on a different emulator.

Greatly helps when demoing something from my terminal and having multiple splits open.

magicalhippo 6 days ago | parent | prev | next [-]

Looks very nice and fun, and potentially very useful. I was going to say I'd prefer a gradient effect to emulate motion blur, but stepping through the video I see you've already implemented something like that.

However, when making large moves, it seems a bit disorienting and the gradient effect seems very subtle in the video. Perhaps make the effect depend on distance, like actual motion blur would?

I was also thinking about having a color shift when moving up vs moving down, not sure about that one but certainly something I'd play with.

tombh 5 days ago | parent [-]

I think this is something that is quite actively being explored in the Ghostty community. And Tattoy automatically benefits from that because it supports the very same cursor shaders. You could check out the Ghostty Discord if you're interested. And of course you can experiment with your own cursor shaders, they follow the same syntax as Shader Toy: https://tattoy.sh/docs/shaders

thanhhaimai 6 days ago | parent | prev | next [-]

For a demo of the new Cursor feature in Ghostty: https://www.youtube.com/watch?v=enwDjM7pNNE

bombela 5 days ago | parent | prev | next [-]

This looks cool. I am a bit off topic here. But my only fear is this entices some people to make it the default in terminals over time.

Like all moderne UIs now have animations, ranging from very slow to barely fast enough for my personal perception.

And it becomes increasingly hard to disable those animations. They creep up absolutely everywhere. And they drive me crazy. I want my computer to act instantaneously. Redraw within 8ms.

Almost all animations are also impossible to abort or skip. Worse plenty will animate concurrently. So you might be jumping around on a webpage faster than the animation, which then jumps you back to then slowly animate.

My life on this planet is finite. A computer isstupidly fast. Why waste my precious lifetime? How many minute of life do developers of animations steal from people?

I do understand that I process visual stimulus faster than most people. Making me an outlier. Modern interfaces are devoided of identifiable buttons and all look like a smear of emptiness with a few dollops of text and burger icons to interact with. Making it hard to notice what changed between two actions. Maybe increasing the need for animations to help people follow

In any case, I suffer greatly with animations.

radicality 5 days ago | parent [-]

On Mac, I recently mistakenly held Shift (or some other key combo?), before hitting Space to open QuickLook as I was gonna select a few image files. It proceeded to open quicklook with an incredibly slow >5s animation, very annoying :S

pimlottc 6 days ago | parent | prev | next [-]

I assumed this meant mouse cursors, so I was confused why the pointer didn’t move in the same video. Would have been better just to turn it off for the recording.

renewiltord 6 days ago | parent | prev | next [-]

This is pretty cool. Helps trace where the cursor is going. I prefer the Ghostty style now that I see it, but nonetheless cool UI feature.

coldblues 6 days ago | parent | prev | next [-]

Emacs has https://github.com/Malabarba/beacon

isoprophlex 6 days ago | parent | prev | next [-]

Barely useable, pfff. Needs at least two out of three of

- airhorn and/or light saber sound effects,

- a sixel-based rendering of lens flares, or

- a fluid dynamics engine to simulate rippling of characters around the path along which the cursor moves

(Joke, looks very cool even though i'd probably find it too distracting)

Nevermark 6 days ago | parent | next [-]

> - airhorn and/or light saber sound effects,

I will take the light saber sounds.

With stereo-spacial transformation, so the sounds "direction" and "distance" match my own physical dynamic orientation relative to the cursor's motion on the screen.

And, the ability to open a small window, which gives me the cursor's visual point-of-view, as it zooms through the graphics on the screen.

Also, each traversed character should get "hot" as the curser goes over it, indicated with a stable glow for a quarter of a second, followed by an exponential fade over another second.

I think we can all agree that when in flow, functional distractions need to work harder, be more immersive, to be effective.

somat 6 days ago | parent | prev | next [-]

Here you go.

https://ash-k.itch.io/textreme

0xFEE1DEAD 5 days ago | parent | prev [-]

Testimonial:

> I've never been asked to pair up eversince I've started using tattoy

ionwake 6 days ago | parent | prev | next [-]

I installed it with homebrew but I dont see this shader tracer, I even see the blue pixel top right. Ive read the docs but it doesnt seem to explain if I need to do anything further which means it must be my already customised iterm which is the issue. Ill see if I can sort it.

tombh 6 days ago | parent [-]

The creator here, sounds like I need to improve the docs. Did you set `enabled = true` in the `[animated_cursors]` section of the config? If so, then this could be bug, and I'd be very grateful for a report in the repo's issues: https://github.com/tattoy-org/tattoy

ionwake 6 days ago | parent | next [-]

tbh im not sure what Im doing wrong, I already have a highly customised iterm window and have spent a hour with chatgpt trying to troubleshoot this to no avail... must just be my setup for some reason. I will let you know if I figure it out - thanks

Vlasar 6 days ago | parent | prev [-]

Sorry if I’m missing something, but isn’t the homebrew version outdated?

tombh 5 days ago | parent [-]

Oh! You weren't missing anything, the automated Homebrew builds have been giving false positive successes since v0.1.3. I've updated it to v0.1.7 now. Thank you for mentioning this.

Animats 5 days ago | parent | prev | next [-]

Comet Cursor! [1]

[1] https://en.wikipedia.org/wiki/Comet_Cursor

ipsum2 6 days ago | parent | prev | next [-]

Wonder what this looks like in asciinema. Does it show up properly?

I wasn't able to get this working. MacOS, homebrew, added [animated_cursor] to the tattoy.toml and the glsl file.

tombh 6 days ago | parent [-]

It very much should work on asciinema, it's all pure text after all.

I'd very much appreciate a bug report. It looks like maybe Tattoy isn't connecting to the GPU on Mac: https://github.com/tattoy-org/tattoy/issues/129

eviks 6 days ago | parent | prev | next [-]

Have you ever lost track of the cursor to require a trail? (and if yes, what shape/color was the cursor)

iforgotpassword 6 days ago | parent [-]

Yes, happens occasionally. I just wiggle it left/right or up/down so I can see where it is. No big deal. But put of curiosity I might still try that one day, with a more subtle effect though. ;)

eviks 6 days ago | parent [-]

What's the shape/color? I guess, non-blinking?

(they have other effects, check effects in neovide for better defaults)

mholm 6 days ago | parent | prev | next [-]

iTerm2 has a basic animated cursor that I like, just a frame or two long, and fairly subtle. It would be nice if it expanded to support this type of animation, I do wish it were a bit more visible (though not, perhaps, the EDM show presented)

knodi123 5 days ago | parent [-]

This (OP) project is inspired by neovide, a recent neovim gui. And iterm2's animated cursor is a brand new feature, also inspired by neovide.

Honestly, iterm2 is way too nice a piece of software considering the price. A real labor of love from a guy who apparently has lots more free time than me. :-)

getflourish 6 days ago | parent | prev | next [-]

Inspiring. So cool, yet useful.

o11c 6 days ago | parent | prev | next [-]

Honestly, just `:set cursorcolumn` is far more useful. Less distractions at the moment of change, but still visible if you alt-tab back.

dangoodmanUT 6 days ago | parent | prev | next [-]

i swear to god i can hear the laser sounds

6 days ago | parent | prev | next [-]
[deleted]
incognito124 6 days ago | parent | prev | next [-]

Love to see another atuin user

hello_computer 6 days ago | parent | prev [-]

[dead]