diff options
Diffstat (limited to 'src/protocol')
| -rw-r--r-- | src/protocol/wire.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/protocol/wire.rs b/src/protocol/wire.rs index 03492547..79c051b7 100644 --- a/src/protocol/wire.rs +++ b/src/protocol/wire.rs @@ -628,6 +628,12 @@ pub enum ServerMessage { data: String, }, + /// Set the foreground client's outer terminal window title. + WindowTitle { + /// Sanitized title to write with OSC 0. `None` restores Herdr's default title. + title: Option<String>, + }, + /// Client-local runtime config changed on disk; refresh it without reconnecting. ReloadSoundConfig, @@ -929,7 +935,7 @@ mod tests { } #[test] - fn client_message_wire_tags_preserve_protocol_13_order() { + fn client_message_wire_tags_preserve_protocol_14_order() { fn tag(msg: &ClientMessage) -> u8 { *bincode::serde::encode_to_vec(msg, bincode::config::standard()) .unwrap() @@ -1279,6 +1285,17 @@ mod tests { } #[test] + fn server_window_title_roundtrip() { + for title in [Some("herdr api".to_owned()), None] { + let msg = ServerMessage::WindowTitle { title }; + let encoded = bincode::serde::encode_to_vec(&msg, bincode::config::standard()).unwrap(); + let (decoded, _): (ServerMessage, _) = + bincode::serde::decode_from_slice(&encoded, bincode::config::standard()).unwrap(); + assert_eq!(msg, decoded); + } + } + + #[test] fn server_graphics_roundtrip() { let msg = ServerMessage::Graphics { bytes: b"\x1b_Ga=d,d=A,q=2;\x1b\\".to_vec(), |
