summaryrefslogtreecommitdiffstats
path: root/src/term.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/term.rs')
-rw-r--r--src/term.rs28
1 files changed, 21 insertions, 7 deletions
diff --git a/src/term.rs b/src/term.rs
index 81c1feb..7c63066 100644
--- a/src/term.rs
+++ b/src/term.rs
@@ -15,7 +15,8 @@ pub type TermMode = AlternateScreen<MouseTerminal<RawTerminal<BufWriter<Stdout>>
#[derive(Clone)]
pub struct Screen {
screen: Arc<Mutex<Option<TermMode>>>,
- size: Arc<RwLock<Option<(usize, usize)>>>
+ size: Arc<RwLock<Option<(usize, usize)>>>,
+ terminal: String
}
impl Screen {
@@ -23,11 +24,13 @@ impl Screen {
let screen = BufWriter::new(std::io::stdout()).into_raw_mode()?;
let mut screen = MouseTerminal::from(screen);
let mut screen = AlternateScreen::from(screen);
+ let terminal = std::env::var("TERM").unwrap_or("xterm".into());
screen.cursor_hide()?;
Ok(Screen {
screen: Arc::new(Mutex::new(Some(screen))),
- size: Arc::new(RwLock::new(None))
+ size: Arc::new(RwLock::new(None)),
+ terminal: terminal
})
}
@@ -58,6 +61,16 @@ impl Screen {
pub fn take_size(&self) -> HResult<(usize, usize)> {
Ok(self.size.write()?.take()?)
}
+
+ pub fn set_title(&mut self, title: &str) -> HResult<()> {
+ if !self.terminal.starts_with("rxvt") {
+ write!(self, "\x1b]2;hunter: {}", title)?;
+ }
+ if self.terminal.starts_with("tmux") {
+ write!(self, "\x1bkhunter: {}\x1b\\", title)?;
+ }
+ Ok(())
+ }
}
impl Write for Screen {
@@ -112,11 +125,6 @@ pub trait ScreenExt: Write {
let (_, ysize) = termion::terminal_size()?;
Ok((ysize - 1) as usize)
}
- fn set_title(&mut self, title: &str) -> HResult<()> {
- write!(self, "\x1b]2;hunter: {}", title)?;
- write!(self, "\x1bkhunter: {}\x1b\\", title)?;
- Ok(())
- }
fn to_main_screen(&mut self) -> HResult<()> {
write!(self, "{}", termion::screen::ToMainScreen)?;
self.flush()?;
@@ -132,6 +140,11 @@ pub fn xsize() -> u16 {
xsize
}
+pub fn xsize_u() -> usize {
+ let (xsize, _) = termion::terminal_size().unwrap();
+ xsize as usize - 1
+}
+
pub fn ysize() -> u16 {
let (_, ysize) = termion::terminal_size().unwrap();
ysize
@@ -195,6 +208,7 @@ pub fn sized_string_u(string: &str, xsize: usize) -> String {
padded
}
+
// Do these as constants