Skip to main content

TabManager

Struct TabManager 

Source
pub struct TabManager { /* private fields */ }
Expand description

Manages multiple terminal tabs within a single window

Implementations§

Source§

impl TabManager

Source

pub fn new() -> Self

Create a new empty tab manager

Source

pub fn new_tab( &mut self, config: &Config, runtime: Arc<Runtime>, inherit_cwd_from_active: bool, grid_size: Option<(usize, usize)>, ) -> Result<TabId>

Create a new tab and return its ID

§Arguments
  • config - Terminal configuration
  • runtime - Tokio runtime for async operations
  • inherit_cwd_from_active - Whether to inherit working directory from active tab
  • grid_size - Optional (cols, rows) override for initial terminal size. When provided, these dimensions are used instead of config.cols/rows. This is important when the renderer has already calculated the correct grid size accounting for tab bar height.
Source

pub fn new_tab_with_cwd( &mut self, config: &Config, runtime: Arc<Runtime>, working_dir: Option<String>, grid_size: Option<(usize, usize)>, ) -> Result<TabId>

Create a new tab with a specific working directory

Used by arrangement restore to create tabs with saved CWDs.

Source

pub fn new_tab_from_profile( &mut self, config: &Config, runtime: Arc<Runtime>, profile: &Profile, grid_size: Option<(usize, usize)>, ) -> Result<TabId>

Create a new tab from a profile configuration

The profile specifies the working directory, command, and tab name.

§Arguments
  • config - Terminal configuration
  • runtime - Tokio runtime for async operations
  • profile - Profile configuration to use
  • grid_size - Optional (cols, rows) override for initial terminal size
Source

pub fn close_tab(&mut self, id: TabId) -> bool

Close a tab by ID Returns true if this was the last tab (window should close)

Source

pub fn remove_tab(&mut self, id: TabId) -> Option<(Tab, bool)>

Remove a tab by ID without dropping it, returning the live Tab.

Handles active tab switching and renumbering just like close_tab, but returns the Tab so the caller can keep it alive.

Returns Some((tab, is_empty)) if the tab was found, None otherwise.

Source

pub fn insert_tab_at(&mut self, tab: Tab, index: usize)

Insert a live Tab at a specific index and make it active.

The index is clamped to 0..=self.tabs.len().

Source

pub fn active_tab(&self) -> Option<&Tab>

Get a reference to the active tab

Source

pub fn active_tab_mut(&mut self) -> Option<&mut Tab>

Get a mutable reference to the active tab

Source

pub fn switch_to(&mut self, id: TabId)

Switch to a tab by ID

Source

pub fn next_tab(&mut self)

Switch to the next tab (wraps around)

Source

pub fn prev_tab(&mut self)

Switch to the previous tab (wraps around)

Source

pub fn switch_to_index(&mut self, index: usize)

Switch to tab by index (1-based for Cmd+1-9)

Source

pub fn move_tab(&mut self, id: TabId, direction: i32)

Move a tab left or right direction: -1 for left, 1 for right

Source

pub fn move_tab_to_index(&mut self, id: TabId, target_index: usize) -> bool

Move a tab to a specific index (used by drag-and-drop reordering) Returns true if the tab was actually moved, false if not found or already at target

Source

pub fn move_active_tab_left(&mut self)

Move active tab left

Source

pub fn move_active_tab_right(&mut self)

Move active tab right

Source

pub fn tab_count(&self) -> usize

Get the number of tabs

Source

pub fn has_multiple_tabs(&self) -> bool

Check if there are multiple tabs

Source

pub fn active_tab_id(&self) -> Option<TabId>

Get the active tab ID

Source

pub fn tabs(&self) -> &[Tab]

Get all tabs as a slice

Source

pub fn tabs_mut(&mut self) -> &mut [Tab]

Get all tabs as mutable slice

Source

pub fn drain_tabs(&mut self) -> Vec<Tab>

Drain all tabs from the manager, returning them without dropping

This is used during fast shutdown to extract tabs so their terminals can be dropped on background threads in parallel.

Source

pub fn get_tab(&self, id: TabId) -> Option<&Tab>

Get a tab by ID

Source

pub fn get_tab_mut(&mut self, id: TabId) -> Option<&mut Tab>

Get a mutable reference to a tab by ID

Source

pub fn mark_activity(&mut self, tab_id: TabId)

Mark non-active tabs as having activity when they receive output

Source

pub fn update_all_titles(&mut self)

Update titles for all tabs

Source

pub fn duplicate_active_tab( &mut self, config: &Config, runtime: Arc<Runtime>, grid_size: Option<(usize, usize)>, ) -> Result<Option<TabId>>

Duplicate the active tab (creates new tab with same working directory and color)

§Arguments
  • config - Terminal configuration
  • runtime - Tokio runtime for async operations
  • grid_size - Optional (cols, rows) override for initial terminal size
Source

pub fn duplicate_tab_by_id( &mut self, source_tab_id: TabId, config: &Config, runtime: Arc<Runtime>, grid_size: Option<(usize, usize)>, ) -> Result<Option<TabId>>

Duplicate a specific tab by ID (creates new tab with same working directory and color)

§Arguments
  • source_tab_id - The ID of the tab to duplicate
  • config - Terminal configuration
  • runtime - Tokio runtime for async operations
  • grid_size - Optional (cols, rows) override for initial terminal size
Source

pub fn active_tab_index(&self) -> Option<usize>

Get index of active tab (0-based)

Source

pub fn cleanup_dead_tabs(&mut self)

Clean up closed/dead tabs

Trait Implementations§

Source§

impl Default for TabManager

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,