vaxis: implement osc9 and osc777 notifications
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
This commit is contained in:
parent
3d6f42a66e
commit
33d43dc6d1
5 changed files with 26 additions and 2 deletions
|
@ -24,8 +24,8 @@ Contributions are welcome.
|
|||
| Styled Underlines | ✅ | ✅ | ✅ |
|
||||
| Mouse Shapes (OSC 22) | ✅ | planned | ❌ |
|
||||
| System Clipboard (OSC 52) | ✅ | planned | ❌ |
|
||||
| System Notifications (OSC 9) | ✅ | planned | ❌ |
|
||||
| System Notifications (OSC 777) | ✅ | planned | ❌ |
|
||||
| System Notifications (OSC 9) | ✅ | ✅ | ❌ |
|
||||
| System Notifications (OSC 777) | ✅ | ✅ | ❌ |
|
||||
| Synchronized Output (DEC 2026) | ✅ | ✅ | ✅ |
|
||||
| Unicode Core (DEC 2027) | ✅ | ✅ | ❌ |
|
||||
| Color Mode Updates (DEC 2031) | ✅ | planned | ❌ |
|
||||
|
|
|
@ -71,6 +71,8 @@ pub fn main() !void {
|
|||
break :outer;
|
||||
} else if (key.matches('l', .{ .ctrl = true })) {
|
||||
vx.queueRefresh();
|
||||
} else if (key.matches('n', .{ .ctrl = true })) {
|
||||
try vx.notify("vaxis", "hello from vaxis");
|
||||
} else {
|
||||
try text_input.update(.{ .key_press = key });
|
||||
}
|
||||
|
|
|
@ -22,6 +22,8 @@ pub const Style = struct {
|
|||
bg: Color = .default,
|
||||
ul: Color = .default,
|
||||
ul_style: Underline = .off,
|
||||
// TODO: url should maybe go outside of style. We'll need to allocate these
|
||||
// in the internal screen
|
||||
url: ?[]const u8 = null,
|
||||
url_params: ?[]const u8 = null,
|
||||
|
||||
|
|
|
@ -76,3 +76,5 @@ pub const strikethrough_reset = "\x1b[29m";
|
|||
// OSC sequences
|
||||
pub const osc8 = "\x1b]8;{s};{s}\x1b\\";
|
||||
pub const osc8_clear = "\x1b]8;;\x1b\\";
|
||||
pub const osc9_notify = "\x1b]9;{s}\x1b\\";
|
||||
pub const osc777_notify = "\x1b]777;notify;{s};{s}\x1b\\";
|
||||
|
|
|
@ -472,6 +472,24 @@ pub fn Vaxis(comptime T: type) type {
|
|||
);
|
||||
try self.tty.?.flush();
|
||||
}
|
||||
|
||||
/// send a system notification
|
||||
pub fn notify(self: *Self, title: ?[]const u8, body: []const u8) !void {
|
||||
if (self.tty == null) return;
|
||||
if (title) |t| {
|
||||
try std.fmt.format(
|
||||
self.tty.?.buffered_writer.writer(),
|
||||
ctlseqs.osc777_notify,
|
||||
.{ t, body },
|
||||
);
|
||||
} else {
|
||||
try std.fmt.format(
|
||||
self.tty.?.buffered_writer.writer(),
|
||||
ctlseqs.osc9_notify,
|
||||
.{body},
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue