diff --git a/yazi-config/preset/yazi.toml b/yazi-config/preset/yazi.toml index 0df4b4dd2..bf403d907 100644 --- a/yazi-config/preset/yazi.toml +++ b/yazi-config/preset/yazi.toml @@ -14,6 +14,7 @@ show_hidden = false show_symlink = true scrolloff = 5 mouse_events = [ "click", "scroll" ] +title_format = "Yazi: {cwd}" [preview] tab_size = 2 diff --git a/yazi-config/src/manager/manager.rs b/yazi-config/src/manager/manager.rs index cd980ac26..8e48bbde1 100644 --- a/yazi-config/src/manager/manager.rs +++ b/yazi-config/src/manager/manager.rs @@ -23,6 +23,7 @@ pub struct Manager { pub show_symlink: bool, pub scrolloff: u8, pub mouse_events: MouseEvents, + pub title_format: String, } impl FromStr for Manager { diff --git a/yazi-core/src/manager/commands/refresh.rs b/yazi-core/src/manager/commands/refresh.rs index 8076c53ef..553e8cb72 100644 --- a/yazi-core/src/manager/commands/refresh.rs +++ b/yazi-core/src/manager/commands/refresh.rs @@ -1,6 +1,7 @@ use std::{env, path::MAIN_SEPARATOR}; use crossterm::{execute, terminal::SetTitle}; +use yazi_config::MANAGER; use yazi_shared::event::Cmd; use crate::{manager::Manager, tasks::Tasks}; @@ -8,17 +9,22 @@ use crate::{manager::Manager, tasks::Tasks}; impl Manager { fn title(&self) -> String { let home = dirs::home_dir().unwrap_or_default(); - if let Some(p) = self.cwd().strip_prefix(home) { - format!("Yazi: ~{}{}", MAIN_SEPARATOR, p.display()) + let cwd = if let Some(p) = self.cwd().strip_prefix(home) { + format!("~{}{}", MAIN_SEPARATOR, p.display()) } else { - format!("Yazi: {}", self.cwd().display()) - } + format!("{}", self.cwd().display()) + }; + + MANAGER.title_format.replace("{cwd}", &cwd) } pub fn refresh(&mut self, _: Cmd, tasks: &Tasks) { env::set_current_dir(self.cwd()).ok(); env::set_var("PWD", self.cwd()); - execute!(std::io::stderr(), SetTitle(self.title())).ok(); + + if !MANAGER.title_format.is_empty() { + execute!(std::io::stderr(), SetTitle(self.title())).ok(); + } self.active_mut().apply_files_attrs(); diff --git a/yazi-fm/src/term.rs b/yazi-fm/src/term.rs index ff5516fb2..f68cd61ec 100644 --- a/yazi-fm/src/term.rs +++ b/yazi-fm/src/term.rs @@ -5,7 +5,7 @@ use crossterm::{event::{DisableBracketedPaste, EnableBracketedPaste, KeyboardEnh use cursor::RestoreCursor; use ratatui::{backend::CrosstermBackend, buffer::Buffer, layout::Rect, CompletedFrame, Frame, Terminal}; use yazi_adapter::Emulator; -use yazi_config::INPUT; +use yazi_config::{INPUT, MANAGER}; static CSI_U: AtomicBool = AtomicBool::new(false); static BLINK: AtomicBool = AtomicBool::new(false); @@ -85,6 +85,10 @@ impl Term { execute!(stderr(), PopKeyboardEnhancementFlags).ok(); } + if !MANAGER.title_format.is_empty() { + execute!(stderr(), SetTitle("")).ok(); + } + execute!( stderr(), mouse::SetMouse(false),