Comments (6)
That would be a nice to have for after the first release. Marking it as wish list.
Believe kitty terminal also does that with icat: https://sw.kovidgoyal.net/kitty/kittens/icat/
from rio.
The basic protocol for images in Kitty is pretty simple:
https://sw.kovidgoyal.net/kitty/graphics-protocol/
I used it to make a simple but fully functional Chromium-based web browser that renders in Kitty and WezTerm (with Kitty protocols enabled): https://github.com/chase/awrit
There is also the iTerm2 image protocol which has support in a lot of newer terminal emulators: https://iterm2.com/documentation-images.html
from rio.
The basic protocol for images in Kitty is pretty simple:
Point of correction... it's not that "simple" on the end of the terminal emulator.
It's probably the main reason why no terminal emulator other than Kitty implements nearly half of the protocol [correctly].
from rio.
The basic protocol for images in Kitty is pretty simple:
Point of correction... it's not that "simple" on the end of the terminal emulator.
It's probably the main reason why no terminal emulator other than Kitty implements nearly half of the protocol (correctly).
Fair enough, certainly the protocol in its entirety is complicated.
The scope of this issue isn't to support image IDs, arbitrary positions, animation etc. It's to render images directly in the terminal, and that can be done with a subset of the protocol, described within the first few paragraphs.
A minimal subset, similar to iTerm2's protocol, can be implemented: permitting only PNG filenames to be transmitted and displayed immediately at the current cursor position. Then handling a clear screen to remove said image.
Although you certainly have more experience with such things than myself, I wouldn't want the maintainer to get discouraged. Incremental improvement and all that.
from rio.
The scope of this issue isn't to support image IDs, arbitrary positions, animation etc. It's to render images directly in the terminal, and that can be done with a subset of the protocol, described within the first few paragraphs.
Defining that "subset" is where the problem begins.
A minimal subset, similar to iTerm2's protocol, can be implemented: permitting only PNG filenames to be transmitted and displayed immediately at the current cursor position. Then handling a clear screen to remove said image.
Although you certainly have more experience with such things than myself, I wouldn't want the maintainer to get discouraged. Incremental improvement and all that.
From the little experience I have with the two protocols mentioned here, I'll advice the iTerm2 protocol be implemented first (because it's a lot less complex than Kitty's) and the Kitty graphics protocol should only be implemented when the project is more mature and developers/contributors are ready to take it on properly.
For some insight, check out the current state of support in Wezterm (just a search through the issues on there will do). By the way, the support is declared experimental but comparing it to the state of the iTerm2 protocol support (and how long each has been in development) makes my point clear.
Please Note: The above mention/reference is not intended to talk lightly/negatively about the project or its author/developers (in fact, Wezterm is my daily driver and it's doing very well in almost every other aspect I can think of).
The summary of all I've said is... It's better to have a [almost] complete, spec-compliant implementation of a less-capable protocol than a highly incomplete implementation of a more-capable protocol. Also, it'll be less headache for the developers.
That said, there's also sixels (requested in #46) but that has its own unique set of headaches, primarily due to the lack of a complete central/standard specification and limited access to a reference implementation (in fact, the closest to a reference implementation I've come across is probably not something any relevant implementation today would want to follow head-on).
Anyways, sixels are probably still simpler to implement than the kitty graphics protocol given the limited scope.
I should note that my experience with sixels is currently limited, there are others way more knowledgeable/experienced on the topic.
from rio.
Hello @raphamorim !
I noticed some sixel implementation work was underway, though, I'm not sure of the state as I'm yet to test.
I just wanted to inform you about an ongoing related discussion that's quite important as I believe it's important that things are done well and correctly right from the onset.
See hpjansson/chafa#192, you might wanna follow along and possibly chime in.
Well done and thank you.
from rio.
Related Issues (20)
- Glyphs have very weird rendering HOT 6
- Layout support HOT 1
- Linux Wayland: WA migration
- Linux X11: Wa migration
- Windows: WA migration
- Fix cached run on lines that crashes few times [sugarloaf] HOT 1
- Load emoji and falllback fonts on demand and drop memory after not being used anymore leaving only the file path as reference
- Are ligatures actually supported in 0.0.36? HOT 3
- newline issue when pasting multi-line text HOT 2
- [Bug] Noticeable text update HOT 12
- [Bug] Noticeable text update
- [Bug] Tab indicator doesn't disappear HOT 2
- [Bug] The `[colors]` option does not override theme colors. HOT 3
- zsh with glyphs won't render HOT 8
- Changing zellij pane with <alt> + arrow does not work HOT 3
- [Feature] Add support for choosing font width HOT 1
- When init ssh session backspace and navigation with ctrl dont work as expected HOT 2
- Visible lines on transparent background HOT 5
- Delete key doesn't work in kitty mode
- Odd background transparency on macOS (Intel) HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rio.