aboutsummaryrefslogtreecommitdiff
path: root/src/protocol
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocol')
-rw-r--r--src/protocol/wire.rs19
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(),