this repo has no description
13
fork

Configure Feed

Select the types of activity you want to include in your feed.

parser: handle parsing of apc, sos, pm strings

This lets us detect kitty graphics.

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>

+50 -5
+40
src/Parser.zig
··· 444 444 }, 445 445 } 446 446 }, 447 + .apc => { 448 + switch (b) { 449 + 0x1B => { 450 + state = .ground; 451 + // advance one more for the backslash 452 + i += 1; 453 + switch (input[start + 1]) { 454 + 'G' => { 455 + return .{ 456 + .event = .cap_kitty_graphics, 457 + .n = i + 1, 458 + }; 459 + }, 460 + else => { 461 + log.warn("unhandled apc: APC {s}", .{input[start + 1 .. i + 1]}); 462 + return .{ 463 + .event = null, 464 + .n = i + 1, 465 + }; 466 + }, 467 + } 468 + }, 469 + else => {}, 470 + } 471 + }, 472 + .sos, .pm => { 473 + switch (b) { 474 + 0x1B => { 475 + state = .ground; 476 + // advance one more for the backslash 477 + i += 1; 478 + log.warn("unhandled sos/pm: SOS/PM {s}", .{input[start + 1 .. i + 1]}); 479 + return .{ 480 + .event = null, 481 + .n = i + 1, 482 + }; 483 + }, 484 + else => {}, 485 + } 486 + }, 447 487 else => {}, 448 488 } 449 489 }
+7 -1
src/Tty.zig
··· 178 178 } 179 179 }, 180 180 .cap_kitty_keyboard => { 181 - log.info("kitty capability detected", .{}); 181 + log.info("kitty keyboard capability detected", .{}); 182 182 vx.caps.kitty_keyboard = true; 183 + }, 184 + .cap_kitty_graphics => { 185 + if (!vx.caps.kitty_graphics) { 186 + log.info("kitty graphics capability detected", .{}); 187 + vx.caps.kitty_graphics = true; 188 + } 183 189 }, 184 190 .cap_rgb => { 185 191 log.info("rgb capability detected", .{});
+1
src/event.zig
··· 10 10 11 11 // these are delivered as discovered terminal capabilities 12 12 cap_kitty_keyboard, 13 + cap_kitty_graphics, 13 14 cap_rgb, 14 15 cap_unicode, 15 16 cap_da1,
+2 -4
src/vaxis.zig
··· 222 222 // that 223 223 // _ = try tty.write(ctlseqs.xtversion); 224 224 _ = try tty.write(ctlseqs.csi_u_query); 225 - // TODO: KITTY_GRAPHICS has an APC response. uncomment when we can 226 - // parse that 227 - // that 228 - // _ = try tty.write(ctlseqs.kitty_graphics_query); 225 + _ = try tty.write(ctlseqs.kitty_graphics_query); 229 226 // TODO: sixel geometry query interferes with F4 keys. 230 227 // _ = try tty.write(ctlseqs.sixel_geometry_query); 231 228 ··· 590 587 alloc: std.mem.Allocator, 591 588 src: Image.Source, 592 589 ) !Image { 590 + if (!self.caps.kitty_graphics) return error.NoGraphicsCapability; 593 591 var tty = self.tty orelse return error.NoTTY; 594 592 defer self.next_img_id += 1; 595 593