aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crates/atuin-client/src/settings.rs2
-rw-r--r--crates/atuin/src/command/client/search/interactive.rs26
2 files changed, 15 insertions, 13 deletions
diff --git a/crates/atuin-client/src/settings.rs b/crates/atuin-client/src/settings.rs
index 78953320..22b892d1 100644
--- a/crates/atuin-client/src/settings.rs
+++ b/crates/atuin-client/src/settings.rs
@@ -1094,6 +1094,7 @@ pub struct Settings {
pub history_format: String,
pub prefers_reduced_motion: bool,
pub store_failed: bool,
+ pub no_mouse: bool,
#[serde(with = "serde_regex", default = "RegexSet::empty", skip_serializing)]
pub history_filter: RegexSet,
@@ -1563,6 +1564,7 @@ impl Settings {
.map(|_| config::Value::new(None, config::ValueKind::Boolean(true)))
.unwrap_or_else(|| config::Value::new(None, config::ValueKind::Boolean(false))),
)?
+ .set_default("no_mouse", false)?
.add_source(
Environment::with_prefix("atuin")
.prefix_separator("_")
diff --git a/crates/atuin/src/command/client/search/interactive.rs b/crates/atuin/src/command/client/search/interactive.rs
index a0b1fe31..8e5f8551 100644
--- a/crates/atuin/src/command/client/search/interactive.rs
+++ b/crates/atuin/src/command/client/search/interactive.rs
@@ -1490,10 +1490,11 @@ fn restore_popup_area(saved: &SavedScreen, popup_rect: Rect, scroll_offset: u16)
struct Stdout {
writer: TerminalWriter,
inline_mode: bool,
+ no_mouse: bool,
}
impl Stdout {
- pub fn new(inline_mode: bool) -> std::io::Result<Self> {
+ pub fn new(inline_mode: bool, no_mouse: bool) -> std::io::Result<Self> {
terminal::enable_raw_mode()?;
let mut writer = TerminalWriter::new()?;
@@ -1502,11 +1503,11 @@ impl Stdout {
execute!(writer, terminal::EnterAlternateScreen)?;
}
- execute!(
- writer,
- event::EnableMouseCapture,
- event::EnableBracketedPaste,
- )?;
+ if !no_mouse {
+ execute!(writer, event::EnableMouseCapture)?;
+ }
+
+ execute!(writer, event::EnableBracketedPaste)?;
#[cfg(not(target_os = "windows"))]
execute!(
@@ -1521,6 +1522,7 @@ impl Stdout {
Ok(Self {
writer,
inline_mode,
+ no_mouse,
})
}
}
@@ -1533,12 +1535,10 @@ impl Drop for Stdout {
if !self.inline_mode {
execute!(self.writer, terminal::LeaveAlternateScreen).unwrap();
}
- execute!(
- self.writer,
- event::DisableMouseCapture,
- event::DisableBracketedPaste,
- )
- .unwrap();
+ if !self.no_mouse {
+ execute!(self.writer, event::DisableMouseCapture).unwrap();
+ }
+ execute!(self.writer, event::DisableBracketedPaste).unwrap();
terminal::disable_raw_mode().unwrap();
}
@@ -1667,7 +1667,7 @@ pub async fn history(
let popup_mode = saved_screen.is_some();
- let stdout = Stdout::new(inline_height > 0)?;
+ let stdout = Stdout::new(inline_height > 0, settings.no_mouse)?;
// In popup mode, clear the popup region on the physical terminal before
// ratatui takes over. Ratatui's diff-based rendering compares against an