10c54b0056
It is possible to render images in terminals with protocols such as Sixel, iTerm2's, or Kitty's. For a basic sixel or iTerm2 image printing, it is sufficient to print some escape sequence with the data, e.g. cat image just works, the image is displayed and enough lines are scrolled. But for more sophisticated usage of images, such as TUIs, it is necessary to know exactly what area that image would cover, in terms of columns/rows of characters. Then it would be possible to e.g. resize the image to a size that fits a col/row area precisely, not overdraw the image area, accommodate layouts, etc. Thus, provide the window size in pixel width/height, in addition to cols/rows. The windows implementation always returns a "not implemented" error. The windows API exposes a font-size, but in logical units, not pixels. This could be further extended to expose either "logical window size", or "pixel font size" and "logical font size".
19 lines
378 B
Rust
19 lines
378 B
Rust
use crossterm::{
|
|
execute,
|
|
terminal::{size, SetSize},
|
|
tty::IsTty,
|
|
};
|
|
use std::io::{stdin, stdout};
|
|
|
|
pub fn main() {
|
|
println!("size: {:?}", size().unwrap());
|
|
execute!(stdout(), SetSize(10, 10)).unwrap();
|
|
println!("resized: {:?}", size().unwrap());
|
|
|
|
if stdin().is_tty() {
|
|
println!("Is TTY");
|
|
} else {
|
|
println!("Is not TTY");
|
|
}
|
|
}
|