pub struct TuiConfig {
pub confirm_countdown_secs: u32,
pub auto_refresh_secs: u64,
pub open: TuiOpenConfig,
pub sidebar_position: SidebarPosition,
pub keys: TuiKeysConfig,
pub macro1: Option<TuiMacroConfig>,
pub macro2: Option<TuiMacroConfig>,
}Expand description
[tui] table — runtime knobs for the worktree TUI. Currently exposes
the safety countdown on the delete-confirm overlay (issue #30): when
delete_branch_on_remove has been toggled ON, the modal forces the
user to wait N seconds (visualised by a progress bar) before the
destructive action actually fires. 0 disables the countdown and
falls back to the classic single-keystroke confirm even when delete-
branch is armed; the value is clamped to 5 at read time so a typo
like confirm_countdown_secs = 300 can never strand a destructive
path behind a 300-second wait.
Fields§
§confirm_countdown_secs: u32Safety countdown (in seconds) applied to the confirm overlay when
delete_branch_on_remove is ON. Accepts any non-negative integer;
values above Self::MAX_CONFIRM_COUNTDOWN_SECS are clamped on
read via Self::effective_confirm_countdown_secs. The field is
u32 (rather than u8) so a typo like confirm_countdown_secs = 300
still round-trips through TOML deserialization and reaches the
clamp instead of erroring out at parse time.
auto_refresh_secs: u64Periodic worktree-list refresh interval in seconds. Default 60
keeps Issue/PR table state reasonably fresh; 0 disables the
automatic refresh loop.
open: TuiOpenConfig[tui.open] sub-table — drives the dispatch of the o key in the
list view. Default mode is shell (lazygit-like worktree-manager
workflow); pre-#73 behaviour (open / xdg-open / explorer) is
kept available under mode = "finder".
Which side the worktree-details sidebar sits on in the side-by-side
layout (issue #188). Default right preserves pre-#188 behaviour;
left flips the split. Toggled live in the TUI with H. Ignored by
the stacked (narrow-terminal) layout, where the sidebar is always at
the bottom.
keys: TuiKeysConfig[tui.keys] sub-table (issue #87) — user overrides for the
remappable keymap. Absent → keymap stays at the built-in
defaults. Present → every listed action replaces its default
binding set; actions left unmentioned keep their defaults. An
empty array (down = []) unbinds the action entirely.
macro1: Option<TuiMacroConfig>[tui.macro1] — user-defined command bound to h by default (#290).
Absent → the key does nothing.
macro2: Option<TuiMacroConfig>[tui.macro2] — user-defined command bound to H by default (#290).
Absent → the key does nothing.
Implementations§
Source§impl TuiConfig
impl TuiConfig
Sourcepub const MAX_CONFIRM_COUNTDOWN_SECS: u32 = 5
pub const MAX_CONFIRM_COUNTDOWN_SECS: u32 = 5
Documented range cap. Centralised so the TUI and the doctor share the same clamp logic.
Sourcepub fn effective_confirm_countdown_secs(&self) -> u32
pub fn effective_confirm_countdown_secs(&self) -> u32
Effective countdown value used by the TUI, clamped to
[0, MAX_CONFIRM_COUNTDOWN_SECS]. The raw field stays at the
user’s value so a future doctor check can surface “your config
asked for X but we capped at 5”.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for TuiConfig
impl<'de> Deserialize<'de> for TuiConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for TuiConfig
impl RefUnwindSafe for TuiConfig
impl Send for TuiConfig
impl Sync for TuiConfig
impl Unpin for TuiConfig
impl UnsafeUnpin for TuiConfig
impl UnwindSafe for TuiConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more