Ghostty (and libghostty!) now has a 100% complete implementation of the Kitty Graphics Protocol. We support every feature, every option. We are the first terminal beyond Kitty to do this.
Most terminals stop at basic image placements, then give up on the long tail of other features. Ghostty covers all of them:
- Unicode placeholders (so it works in tmux)
- Relative placements (so images can be positioned relative to other images)
- Animation
- Scroll region handling (so images scroll properly with terminal scroll regions)
- All transport mediums: shared memory, temp files, etc.
- etc...
All of these features don't impact steady-state use (CPU or memory, besides raw code size). And for libghostty consumers, you can use the compile-time features flags to disable them completely.
I read the spec myself a hundred times. I read Kitty's source code to validate behaviors (our implementation is markedly different, so no GPL violation).
I also utilized agents, primarily for validation. I spun Fable and Sol in a loop for 3 weeks (pausing only when their dedicated subs exhausted limits) with a prompt to find mismatches between the spec, Kitty's reference implementation, and Ghostty.
And now we're done. Ghostty is the most compliant Kitty Graphics implementation (ignoring Kitty itself of course). And, this is all in libghostty, so now everyone can be perfectly compliant.
In September 1976, John Lions wrote to Melvin Ferentz of UNIX News, reporting that “more than 30 persons gathered at the University of New South Wales for our first local users meeting.” Lions was the author of the highly influential Lions’ Commentary on UNIX 6th Edition, with Source Code. Originally written as teaching material at the University of New South Wales, the book explained the UNIX kernel source code and, after its distribution was restricted, circulated for years as one of computing’s most famous underground texts.
raylib 6.0 is around the corner and I just updated the architecture diagram, it blows me away how far it has come! 🥲
#raylib architecture v1.0 vs v6.0, 12.5 years apart
El Mundo del Spectrum Podcast. En @mundospectrum llevamos entrevistando a los protagonistas de los 8 bits desde 2012. 14 años. Se dice pronto. Todo ese trabajo lo tienes aquí: Paco Pastor, los hermanos Ruiz, Paco Suárez, Jon Ritman, Azpiri, Rafa Gómez…
https://t.co/t5iP7CFI68
En 1993 gané este concurso de Hobby Consolas diseñando la "mascota oficial" de NeoGeo. Muchas veces me han preguntando qué pasó después, pero la historia es más sencilla de lo que parece (sigue)
Me llamo Jesús Martínez del Vas y soy ilustrador de los que dibujan "a mano". ¿Me ayudas a difundir mi trabajo con un retuit? Cada vez que compartas, curas a un gatito, haces feliz a un unicornio, y además apoyas arte humano frente a la IA generativa. ¡Mil gracias!
Por favor, dadle amor ahora mismo a esta maravillosa experiencia orquestal con música de @cesarastudillo y @riskwood!!! Me parece algo de lo que sentirse muy orgulloso, un precioso evento. Mis profundísimas felicidades a los dos, os admiro.
https://t.co/Rw2oJWVz4i
EXCLUSIVA El Mundo del Spectrum 💥
Descubrimos PROYECTO PALOMA, el visionario trabajo al que Paco Menéndez dedicó sus últimos años de vida.
https://t.co/8dnRrqnOqh
Me llamo Jesús Martínez del Vas y soy ilustrador tradicional. ¿Me ayudas a difundir mi trabajo con un retuit? Cada vez que compartas, curas a un gatito, haces feliz a un unicornio, y ademas apoyas arte humano frente a la IA. ¡Mil gracias!
Today's #raylib dev session, making sure it works multi-platform for multi-monitor multi-ppi configurations... all good! Next: review fullscreen modes and strategies.
Happy holidays! 🚀
The arrow operator (->) is simply a shortcut (syntactic sugar) created to make your code cleaner and easier to read.
— (*p).x : "Go to the address p points to, get the whole structure, and then look at member x."
— p->x : "Go to the address p points to and immediately look at member x."
They do the exact same thing in the computer's memory, but the arrow operator saves you from typing parentheses every time.
Technical Details (Operator Precedence)
To understand why the arrow operator exists, you have to look at how C reads symbols.
— The Dot (.) Operator: This is used to access members of a standard structure variable (e.g., myStruct.x).
— The Dereference (*) Operator: This is used to get the value stored at a pointer's address.
In C, the dot operator “.” has higher priority (precedence) than the star operator “*”.
If you try to write `*p.x`, the compiler thinks you are trying to do `*(p.x)`. This fails because `p` is a pointer, not a structure, so it doesn't have a member named `x` to access first.
To make it work, you must force the compiler to dereference the pointer first by wrapping it in parentheses: `(*p)`. Once that is done, you have the actual structure, and you can use the dot operator: `(*p).x`.
Because typing `(*p).x` is clumsy and tedious to type repeatedly, the C language designers introduced the `->` operator. It combines the "dereference" and "access" steps into one symbol.
Looking at the memory diagram in the image:
`The Pointer (p)`: Think of p as a piece of paper holding the address of that long colored bar (the allocated memory).
`*p`: This creates a view of the entire bar (Red + Green + Blue sections).
(*p).x: You take the view of the whole bar, then zoom in on the Red section (x).
`p->x`: You use the pointer to "shoot an arrow" directly to the Red section (x), skipping the intermediate step of conceptually grabbing the whole bar first.
Este momento será para mí uno de los que atesoraré siempre. Con Paco Pastor, María Jesús López, Pablo Ruiz, Amalio Gómez y Pablo Crespo, a la salida de la charla de @salonvideojuego
Virtual Memory Areas (VMAs) are fundamental to Linux memory management. This is the core abstraction that makes Linux memory management scalable and efficient: instead of treating a process’s address space as millions of individual pages, the kernel represents it as a set of logical regions, each with shared permissions, a defined source (file, anonymous memory, or device), and consistent behaviour, drastically reducing the overhead for address space management.
The underlying idea that a process's virtual address space is managed as a collection of non-overlapping, logical regions has a long history in Unix. The conceptual predecessor to the VMA was the region or segment concept, which appeared in UNIX System V and BSD. The immediate predecessor within Linux was the use of struct vm_area_struct in very early kernels (pre-2.0), but with less sophisticated management. The mm_struct with its mmap field already pointed to a linked list of virtual memory regions (then often called segments or regions) even before the 2.0 kernel. VMAs were formally introduced in Linux around 1996, with the transition to the 2.0 kernel. As Linux began supporting more demanding applications and architectures, the transition to VMAs provided a robust method for managing the complex virtual address space of a process.
In a kernel mailing list disussion from 2001, Linus Torvals explains why Linux moved from per-page metadata stored in hardware page tables to the VMA abstraction, and why VMAs remain necessary despite edge cases where fine-grained manipulation might seem desirable.
CDE (The Common Desktop Environment) has a new bug fix release (2.5.3)!
And, for those wondering… yes. There are some actual reasons to use CDE, as a Linux Desktop Environment, in 2025 (32 years after it first released).
- Fast, lightweight, and stable.
- Battle tested for decades on UNIX systems.
- No need for Wayland.
- As easy to use (if not easier) than the “modern” popular desktop environments.
No fancy animations. No cool GPU accelerated effects. No “touch optimized UI”.
Just some sweet, 1990s styled UNIX workstation aesthetics.
And it is glorious.
The CDE project was started, in 1993, by HP, Sun, & IBM (and included inspiration and tech from OS/2, Motif, VUE, & OpenWindows).
https://t.co/1lNz19CHzm
The IBM RS/6000 product line was a major early-1990s platform of high-performance RISC workstations and servers based on the POWER architecture. RS/6000 machines ran AIX, IBM’s UNIX System V–based OS with many BSD features. AIX was influential in UNIX history, supercomputing, and commercial enterprise systems. In 1990s AIX introduced Logical Volume Manager (LVM) (later influential in Linux’s LVM2) and Journaled File System (JFS). In 1992, RS/6000 desktop workstation, like the Model 220 with a 19-inch color monitor, would set you back $14,795 (approx. $32,000 in today’s dollars).