From 2714deeafbc744edcd96462af9655f25d6fe81ed Mon Sep 17 00:00:00 2001 From: Joscha Date: Fri, 5 Jan 2024 13:33:08 +0100 Subject: [PATCH] Add support for setting window title --- CHANGELOG.md | 3 +++ src/frame.rs | 6 ++++++ src/terminal.rs | 10 +++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9083adf..d029ed5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ Procedure when bumping the version number: ## Unreleased +### Added +- `Frame::set_title` + ## v0.2.0 - 2023-08-31 ### Changed diff --git a/src/frame.rs b/src/frame.rs index 2e9bad1..03fbb04 100644 --- a/src/frame.rs +++ b/src/frame.rs @@ -7,6 +7,7 @@ use crate::{Pos, Size, Styled, WidthDb}; pub struct Frame { pub(crate) widthdb: WidthDb, pub(crate) buffer: Buffer, + pub(crate) title: Option, } impl Frame { @@ -24,6 +25,7 @@ impl Frame { pub fn reset(&mut self) { self.buffer.reset(); + self.title = None; } pub fn cursor(&self) -> Option { @@ -42,6 +44,10 @@ impl Frame { self.set_cursor(None); } + pub fn set_title(&mut self, title: Option) { + self.title = title; + } + pub fn widthdb(&mut self) -> &mut WidthDb { &mut self.widthdb } diff --git a/src/terminal.rs b/src/terminal.rs index db7dcdd..545a701 100644 --- a/src/terminal.rs +++ b/src/terminal.rs @@ -11,7 +11,7 @@ use crossterm::event::{ use crossterm::style::{PrintStyledContent, StyledContent}; use crossterm::terminal::{ BeginSynchronizedUpdate, Clear, ClearType, EndSynchronizedUpdate, EnterAlternateScreen, - LeaveAlternateScreen, + LeaveAlternateScreen, SetTitle, }; use crossterm::{ExecutableCommand, QueueableCommand}; @@ -253,6 +253,7 @@ impl Terminal { self.draw_differences()?; self.update_cursor()?; + self.update_title()?; Ok(()) } @@ -287,4 +288,11 @@ impl Terminal { self.out.queue(Hide)?; Ok(()) } + + fn update_title(&mut self) -> io::Result<()> { + if let Some(title) = &self.frame.title { + self.out.queue(SetTitle(title.clone()))?; + } + Ok(()) + } }