codetether_agent/tui/app/
terminal_state.rs1use std::io;
2
3use crossterm::{
4 cursor::Show,
5 event::{DisableBracketedPaste, DisableMouseCapture},
6 execute,
7 terminal::{LeaveAlternateScreen, disable_raw_mode},
8};
9
10pub(super) fn restore_terminal_state() {
11 let _ = disable_raw_mode();
12 let mut stdout = io::stdout();
13 let _ = execute!(
14 stdout,
15 Show,
16 LeaveAlternateScreen,
17 DisableMouseCapture,
18 DisableBracketedPaste
19 );
20}
21
22pub(super) struct TerminalGuard;
23
24impl Drop for TerminalGuard {
25 fn drop(&mut self) {
26 restore_terminal_state();
27 }
28}