mirror of
https://github.com/wez/wezterm.git
synced 2024-12-23 13:21:38 +03:00
move mux to its own crate
This commit is contained in:
parent
9a48f7f536
commit
a511abb1c2
24
Cargo.lock
generated
24
Cargo.lock
generated
@ -2044,6 +2044,28 @@ dependencies = [
|
|||||||
"pkg-config",
|
"pkg-config",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mux"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"async-trait",
|
||||||
|
"bintree",
|
||||||
|
"config",
|
||||||
|
"downcast-rs",
|
||||||
|
"log",
|
||||||
|
"portable-pty",
|
||||||
|
"promise",
|
||||||
|
"rangeset",
|
||||||
|
"ratelim",
|
||||||
|
"regex",
|
||||||
|
"serde",
|
||||||
|
"termwiz",
|
||||||
|
"thiserror",
|
||||||
|
"url",
|
||||||
|
"wezterm-term",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nb-connect"
|
name = "nb-connect"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
@ -4070,7 +4092,6 @@ dependencies = [
|
|||||||
"async-trait",
|
"async-trait",
|
||||||
"base64 0.10.1",
|
"base64 0.10.1",
|
||||||
"base91",
|
"base91",
|
||||||
"bintree",
|
|
||||||
"bitflags 1.2.1",
|
"bitflags 1.2.1",
|
||||||
"bstr 0.2.13",
|
"bstr 0.2.13",
|
||||||
"cc",
|
"cc",
|
||||||
@ -4105,6 +4126,7 @@ dependencies = [
|
|||||||
"luahelper",
|
"luahelper",
|
||||||
"metrics",
|
"metrics",
|
||||||
"mlua",
|
"mlua",
|
||||||
|
"mux",
|
||||||
"notify-rust",
|
"notify-rust",
|
||||||
"objc",
|
"objc",
|
||||||
"open",
|
"open",
|
||||||
|
@ -22,7 +22,6 @@ allsorts = "0.4"
|
|||||||
async-task = "1.2"
|
async-task = "1.2"
|
||||||
async-trait = "0.1"
|
async-trait = "0.1"
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
bintree = { path = "bintree" }
|
|
||||||
thiserror = "1.0"
|
thiserror = "1.0"
|
||||||
base64 = "0.10"
|
base64 = "0.10"
|
||||||
base91 = { path = "base91" }
|
base91 = { path = "base91" }
|
||||||
@ -47,6 +46,7 @@ libc = "0.2"
|
|||||||
log = "0.4"
|
log = "0.4"
|
||||||
lru = "0.5"
|
lru = "0.5"
|
||||||
luahelper = { path = "luahelper" }
|
luahelper = { path = "luahelper" }
|
||||||
|
mux = { path = "mux" }
|
||||||
open = "1.2"
|
open = "1.2"
|
||||||
pulldown-cmark = "0.7"
|
pulldown-cmark = "0.7"
|
||||||
metrics = { version="0.12", features=["std"]}
|
metrics = { version="0.12", features=["std"]}
|
||||||
|
25
mux/Cargo.toml
Normal file
25
mux/Cargo.toml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
[package]
|
||||||
|
name = "mux"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Wez Furlong <wez@wezfurlong.org>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
anyhow = "1.0"
|
||||||
|
async-trait = "0.1"
|
||||||
|
bintree = { path = "../bintree" }
|
||||||
|
config = { path = "../config" }
|
||||||
|
downcast-rs = "1.0"
|
||||||
|
log = "0.4"
|
||||||
|
portable-pty = { path = "../pty", features = ["serde_support"]}
|
||||||
|
promise = { path = "../promise" }
|
||||||
|
rangeset = { path = "../rangeset" }
|
||||||
|
ratelim= { path = "../ratelim" }
|
||||||
|
regex = "1"
|
||||||
|
serde = {version="1.0", features = ["rc", "derive"]}
|
||||||
|
termwiz = { path = "../termwiz" }
|
||||||
|
thiserror = "1.0"
|
||||||
|
url = "2"
|
||||||
|
wezterm-term = { path = "../term", features=["use_serde"] }
|
@ -5,11 +5,11 @@
|
|||||||
//! container or actually remote, running on the other end
|
//! container or actually remote, running on the other end
|
||||||
//! of an ssh session somewhere.
|
//! of an ssh session somewhere.
|
||||||
|
|
||||||
use crate::mux::localtab::LocalPane;
|
use crate::localtab::LocalPane;
|
||||||
use crate::mux::pane::{alloc_pane_id, Pane, PaneId};
|
use crate::pane::{alloc_pane_id, Pane, PaneId};
|
||||||
use crate::mux::tab::{SplitDirection, Tab, TabId};
|
use crate::tab::{SplitDirection, Tab, TabId};
|
||||||
use crate::mux::window::WindowId;
|
use crate::window::WindowId;
|
||||||
use crate::mux::Mux;
|
use crate::Mux;
|
||||||
use anyhow::{bail, Error};
|
use anyhow::{bail, Error};
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use config::configuration;
|
use config::configuration;
|
||||||
@ -146,7 +146,7 @@ impl Domain for LocalDomain {
|
|||||||
size.pixel_height as usize,
|
size.pixel_height as usize,
|
||||||
std::sync::Arc::new(config::TermConfig {}),
|
std::sync::Arc::new(config::TermConfig {}),
|
||||||
"WezTerm",
|
"WezTerm",
|
||||||
crate::wezterm_version(),
|
config::wezterm_version(),
|
||||||
Box::new(writer),
|
Box::new(writer),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -228,7 +228,7 @@ impl Domain for LocalDomain {
|
|||||||
split_size.second.pixel_height as usize,
|
split_size.second.pixel_height as usize,
|
||||||
std::sync::Arc::new(config::TermConfig {}),
|
std::sync::Arc::new(config::TermConfig {}),
|
||||||
"WezTerm",
|
"WezTerm",
|
||||||
crate::wezterm_version(),
|
config::wezterm_version(),
|
||||||
Box::new(writer),
|
Box::new(writer),
|
||||||
);
|
);
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
use crate::mux::pane::{Pane, PaneId};
|
use crate::pane::{Pane, PaneId};
|
||||||
use crate::mux::tab::{Tab, TabId};
|
use crate::tab::{Tab, TabId};
|
||||||
use crate::mux::window::{Window, WindowId};
|
use crate::window::{Window, WindowId};
|
||||||
use anyhow::{anyhow, Error};
|
use anyhow::{anyhow, Error};
|
||||||
use domain::{Domain, DomainId};
|
use domain::{Domain, DomainId};
|
||||||
use log::error;
|
use log::error;
|
@ -1,6 +1,6 @@
|
|||||||
use crate::mux::domain::DomainId;
|
use crate::domain::DomainId;
|
||||||
use crate::mux::pane::{Pane, PaneId, Pattern, SearchResult};
|
use crate::pane::{Pane, PaneId, Pattern, SearchResult};
|
||||||
use crate::mux::renderable::Renderable;
|
use crate::renderable::Renderable;
|
||||||
use anyhow::Error;
|
use anyhow::Error;
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use portable_pty::{Child, MasterPty, PtySize};
|
use portable_pty::{Child, MasterPty, PtySize};
|
@ -1,6 +1,6 @@
|
|||||||
use crate::mux::domain::DomainId;
|
use crate::domain::DomainId;
|
||||||
use crate::mux::renderable::Renderable;
|
use crate::renderable::Renderable;
|
||||||
use crate::mux::Mux;
|
use crate::Mux;
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use downcast_rs::{impl_downcast, Downcast};
|
use downcast_rs::{impl_downcast, Downcast};
|
||||||
use portable_pty::PtySize;
|
use portable_pty::PtySize;
|
@ -1,6 +1,6 @@
|
|||||||
use crate::mux::domain::DomainId;
|
use crate::domain::DomainId;
|
||||||
use crate::mux::pane::*;
|
use crate::pane::*;
|
||||||
use crate::mux::{Mux, WindowId};
|
use crate::{Mux, WindowId};
|
||||||
use bintree::PathBranch;
|
use bintree::PathBranch;
|
||||||
use config::keyassignment::PaneDirection;
|
use config::keyassignment::PaneDirection;
|
||||||
use portable_pty::PtySize;
|
use portable_pty::PtySize;
|
||||||
@ -1458,7 +1458,7 @@ impl Into<String> for SerdeUrl {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::mux::renderable::Renderable;
|
use crate::renderable::Renderable;
|
||||||
use url::Url;
|
use url::Url;
|
||||||
use wezterm_term::color::ColorPalette;
|
use wezterm_term::color::ColorPalette;
|
||||||
use wezterm_term::{KeyCode, KeyModifiers, MouseEvent};
|
use wezterm_term::{KeyCode, KeyModifiers, MouseEvent};
|
@ -1,4 +1,4 @@
|
|||||||
use crate::mux::{Tab, TabId};
|
use crate::{Tab, TabId};
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use wezterm_term::Clipboard;
|
use wezterm_term::Clipboard;
|
@ -1,10 +1,10 @@
|
|||||||
use crate::font::FontConfiguration;
|
use crate::font::FontConfiguration;
|
||||||
use crate::frontend::FrontEnd;
|
use crate::frontend::FrontEnd;
|
||||||
use crate::mux::tab::Tab;
|
|
||||||
use crate::mux::window::WindowId as MuxWindowId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use ::window::*;
|
use ::window::*;
|
||||||
use config::configuration;
|
use config::configuration;
|
||||||
|
use mux::tab::Tab;
|
||||||
|
use mux::window::WindowId as MuxWindowId;
|
||||||
|
use mux::Mux;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use std::sync::atomic::{AtomicBool, Ordering};
|
use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
use crate::mux::pane::PaneId;
|
|
||||||
use crate::mux::tab::TabId;
|
|
||||||
use crate::mux::window::WindowId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use crate::termwiztermtab::TermWizTerminal;
|
use crate::termwiztermtab::TermWizTerminal;
|
||||||
|
use mux::pane::PaneId;
|
||||||
|
use mux::tab::TabId;
|
||||||
|
use mux::window::WindowId;
|
||||||
|
use mux::Mux;
|
||||||
use termwiz::color::ColorAttribute;
|
use termwiz::color::ColorAttribute;
|
||||||
use termwiz::input::{InputEvent, KeyCode, KeyEvent};
|
use termwiz::input::{InputEvent, KeyCode, KeyEvent};
|
||||||
use termwiz::surface::{Change, Position};
|
use termwiz::surface::{Change, Position};
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
use crate::frontend::gui::selection::{SelectionCoordinate, SelectionRange};
|
use crate::frontend::gui::selection::{SelectionCoordinate, SelectionRange};
|
||||||
use crate::frontend::gui::termwindow::TermWindow;
|
use crate::frontend::gui::termwindow::TermWindow;
|
||||||
use crate::mux::domain::DomainId;
|
use mux::domain::DomainId;
|
||||||
use crate::mux::pane::{Pane, PaneId};
|
use mux::pane::{Pane, PaneId};
|
||||||
use crate::mux::renderable::*;
|
use mux::renderable::*;
|
||||||
use portable_pty::PtySize;
|
use portable_pty::PtySize;
|
||||||
use rangeset::RangeSet;
|
use rangeset::RangeSet;
|
||||||
use std::cell::{RefCell, RefMut};
|
use std::cell::{RefCell, RefMut};
|
||||||
|
@ -6,14 +6,14 @@
|
|||||||
//! time of writing our window layer doesn't provide an API for context
|
//! time of writing our window layer doesn't provide an API for context
|
||||||
//! menus.
|
//! menus.
|
||||||
use crate::frontend::gui::termwindow::{ClipboardHelper, SpawnWhere, TermWindow};
|
use crate::frontend::gui::termwindow::{ClipboardHelper, SpawnWhere, TermWindow};
|
||||||
use crate::mux::domain::{DomainId, DomainState};
|
|
||||||
use crate::mux::tab::TabId;
|
|
||||||
use crate::mux::window::WindowId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use crate::termwiztermtab::TermWizTerminal;
|
use crate::termwiztermtab::TermWizTerminal;
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
use config::configuration;
|
use config::configuration;
|
||||||
use config::keyassignment::{SpawnCommand, SpawnTabDomain};
|
use config::keyassignment::{SpawnCommand, SpawnTabDomain};
|
||||||
|
use mux::domain::{DomainId, DomainState};
|
||||||
|
use mux::tab::TabId;
|
||||||
|
use mux::window::WindowId;
|
||||||
|
use mux::Mux;
|
||||||
use portable_pty::PtySize;
|
use portable_pty::PtySize;
|
||||||
use termwiz::cell::{AttributeChange, CellAttributes};
|
use termwiz::cell::{AttributeChange, CellAttributes};
|
||||||
use termwiz::color::ColorAttribute;
|
use termwiz::color::ColorAttribute;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use crate::frontend::gui::termwindow::TermWindow;
|
use crate::frontend::gui::termwindow::TermWindow;
|
||||||
use crate::mux::pane::{Pane, PaneId};
|
|
||||||
use crate::mux::tab::{Tab, TabId};
|
|
||||||
use crate::termwiztermtab::{allocate, TermWizTerminal};
|
use crate::termwiztermtab::{allocate, TermWizTerminal};
|
||||||
|
use mux::pane::{Pane, PaneId};
|
||||||
|
use mux::tab::{Tab, TabId};
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
use crate::frontend::gui::selection::{SelectionCoordinate, SelectionRange};
|
use crate::frontend::gui::selection::{SelectionCoordinate, SelectionRange};
|
||||||
use crate::frontend::gui::termwindow::TermWindow;
|
use crate::frontend::gui::termwindow::TermWindow;
|
||||||
use crate::mux::domain::DomainId;
|
use mux::domain::DomainId;
|
||||||
use crate::mux::pane::{Pane, PaneId, Pattern, SearchResult};
|
use mux::pane::{Pane, PaneId, Pattern, SearchResult};
|
||||||
use crate::mux::renderable::*;
|
use mux::renderable::*;
|
||||||
use portable_pty::PtySize;
|
use portable_pty::PtySize;
|
||||||
use rangeset::RangeSet;
|
use rangeset::RangeSet;
|
||||||
use std::cell::{RefCell, RefMut};
|
use std::cell::{RefCell, RefMut};
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
use crate::mux::tab::TabId;
|
|
||||||
use crate::mux::window::WindowId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use crate::termwiztermtab::TermWizTerminal;
|
use crate::termwiztermtab::TermWizTerminal;
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
|
use mux::tab::TabId;
|
||||||
|
use mux::window::WindowId;
|
||||||
|
use mux::Mux;
|
||||||
use termwiz::cell::{AttributeChange, CellAttributes};
|
use termwiz::cell::{AttributeChange, CellAttributes};
|
||||||
use termwiz::color::ColorAttribute;
|
use termwiz::color::ColorAttribute;
|
||||||
use termwiz::input::{InputEvent, KeyCode, KeyEvent, MouseButtons, MouseEvent};
|
use termwiz::input::{InputEvent, KeyCode, KeyEvent, MouseButtons, MouseEvent};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use crate::mux::renderable::Renderable;
|
|
||||||
use ::window::*;
|
use ::window::*;
|
||||||
|
use mux::renderable::Renderable;
|
||||||
use portable_pty::PtySize;
|
use portable_pty::PtySize;
|
||||||
use wezterm_term::StableRowIndex;
|
use wezterm_term::StableRowIndex;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// The range_plus_one lint can't see when the LHS is not compatible with
|
// The range_plus_one lint can't see when the LHS is not compatible with
|
||||||
// and inclusive range
|
// and inclusive range
|
||||||
#![cfg_attr(feature = "cargo-clippy", allow(clippy::range_plus_one))]
|
#![cfg_attr(feature = "cargo-clippy", allow(clippy::range_plus_one))]
|
||||||
use crate::mux::renderable::Renderable;
|
use mux::renderable::Renderable;
|
||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
use termwiz::surface::line::DoubleClickRange;
|
use termwiz::surface::line::DoubleClickRange;
|
||||||
use wezterm_term::StableRowIndex;
|
use wezterm_term::StableRowIndex;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use crate::mux::window::Window as MuxWindow;
|
|
||||||
use config::{ConfigHandle, TabBarColors};
|
use config::{ConfigHandle, TabBarColors};
|
||||||
|
use mux::window::Window as MuxWindow;
|
||||||
use std::cell::Ref;
|
use std::cell::Ref;
|
||||||
use termwiz::cell::unicode_column_width;
|
use termwiz::cell::unicode_column_width;
|
||||||
use termwiz::cell::{Cell, CellAttributes};
|
use termwiz::cell::{Cell, CellAttributes};
|
||||||
|
@ -14,12 +14,6 @@ use crate::frontend::gui::overlay::{
|
|||||||
use crate::frontend::gui::scrollbar::*;
|
use crate::frontend::gui::scrollbar::*;
|
||||||
use crate::frontend::gui::selection::*;
|
use crate::frontend::gui::selection::*;
|
||||||
use crate::frontend::gui::tabbar::{TabBarItem, TabBarState};
|
use crate::frontend::gui::tabbar::{TabBarItem, TabBarState};
|
||||||
use crate::mux::domain::{DomainId, DomainState};
|
|
||||||
use crate::mux::pane::{Pane, PaneId};
|
|
||||||
use crate::mux::renderable::{RenderableDimensions, StableCursorPosition};
|
|
||||||
use crate::mux::tab::{PositionedPane, PositionedSplit, SplitDirection, Tab, TabId};
|
|
||||||
use crate::mux::window::WindowId as MuxWindowId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use ::wezterm_term::input::MouseButton as TMB;
|
use ::wezterm_term::input::MouseButton as TMB;
|
||||||
use ::wezterm_term::input::MouseEventKind as TMEK;
|
use ::wezterm_term::input::MouseEventKind as TMEK;
|
||||||
use ::window::bitmaps::atlas::{OutOfTextureSpace, SpriteSlice};
|
use ::window::bitmaps::atlas::{OutOfTextureSpace, SpriteSlice};
|
||||||
@ -37,6 +31,12 @@ use config::keyassignment::{
|
|||||||
};
|
};
|
||||||
use config::{configuration, ConfigHandle, TextStyle};
|
use config::{configuration, ConfigHandle, TextStyle};
|
||||||
use lru::LruCache;
|
use lru::LruCache;
|
||||||
|
use mux::domain::{DomainId, DomainState};
|
||||||
|
use mux::pane::{Pane, PaneId};
|
||||||
|
use mux::renderable::{RenderableDimensions, StableCursorPosition};
|
||||||
|
use mux::tab::{PositionedPane, PositionedSplit, SplitDirection, Tab, TabId};
|
||||||
|
use mux::window::WindowId as MuxWindowId;
|
||||||
|
use mux::Mux;
|
||||||
use portable_pty::{CommandBuilder, PtySize};
|
use portable_pty::{CommandBuilder, PtySize};
|
||||||
use std::any::Any;
|
use std::any::Any;
|
||||||
use std::cell::{RefCell, RefMut};
|
use std::cell::{RefCell, RefMut};
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
use crate::font::FontConfiguration;
|
use crate::font::FontConfiguration;
|
||||||
use crate::mux::tab::Tab;
|
|
||||||
use crate::mux::window::WindowId;
|
|
||||||
use anyhow::Error;
|
use anyhow::Error;
|
||||||
use downcast_rs::{impl_downcast, Downcast};
|
use downcast_rs::{impl_downcast, Downcast};
|
||||||
|
use mux::tab::Tab;
|
||||||
|
use mux::window::WindowId;
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use std::sync::atomic::{AtomicBool, Ordering};
|
use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
//! Implements the multiplexer server frontend
|
//! Implements the multiplexer server frontend
|
||||||
use crate::font::FontConfiguration;
|
use crate::font::FontConfiguration;
|
||||||
use crate::frontend::FrontEnd;
|
use crate::frontend::FrontEnd;
|
||||||
use crate::mux::tab::Tab;
|
|
||||||
use crate::mux::window::WindowId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use crate::server::listener::spawn_listener;
|
use crate::server::listener::spawn_listener;
|
||||||
use anyhow::{bail, Error};
|
use anyhow::{bail, Error};
|
||||||
use crossbeam::channel::{unbounded as channel, Receiver};
|
use crossbeam::channel::{unbounded as channel, Receiver};
|
||||||
use log::info;
|
use log::info;
|
||||||
|
use mux::tab::Tab;
|
||||||
|
use mux::window::WindowId;
|
||||||
|
use mux::Mux;
|
||||||
use promise::*;
|
use promise::*;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
|
@ -4,6 +4,10 @@
|
|||||||
use crate::server::listener::umask;
|
use crate::server::listener::umask;
|
||||||
use anyhow::{anyhow, bail};
|
use anyhow::{anyhow, bail};
|
||||||
use config::{wezterm_version, SshParameters};
|
use config::{wezterm_version, SshParameters};
|
||||||
|
use mux::domain::{Domain, LocalDomain};
|
||||||
|
use mux::pane::PaneId;
|
||||||
|
use mux::tab::SplitDirection;
|
||||||
|
use mux::Mux;
|
||||||
use promise::spawn::block_on;
|
use promise::spawn::block_on;
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
use std::io::{Read, Write};
|
use std::io::{Read, Write};
|
||||||
@ -20,7 +24,6 @@ mod connui;
|
|||||||
mod frontend;
|
mod frontend;
|
||||||
use config::keyassignment;
|
use config::keyassignment;
|
||||||
mod markdown;
|
mod markdown;
|
||||||
mod mux;
|
|
||||||
mod server;
|
mod server;
|
||||||
mod ssh;
|
mod ssh;
|
||||||
mod stats;
|
mod stats;
|
||||||
@ -29,10 +32,6 @@ mod update;
|
|||||||
|
|
||||||
use crate::frontend::activity::Activity;
|
use crate::frontend::activity::Activity;
|
||||||
use crate::frontend::{front_end, FrontEndSelection};
|
use crate::frontend::{front_end, FrontEndSelection};
|
||||||
use crate::mux::domain::{Domain, LocalDomain};
|
|
||||||
use crate::mux::pane::PaneId;
|
|
||||||
use crate::mux::tab::SplitDirection;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use crate::server::client::{unix_connect_with_retry, Client};
|
use crate::server::client::{unix_connect_with_retry, Client};
|
||||||
use crate::server::domain::{ClientDomain, ClientDomainConfig};
|
use crate::server::domain::{ClientDomain, ClientDomainConfig};
|
||||||
use portable_pty::cmdbuilder::CommandBuilder;
|
use portable_pty::cmdbuilder::CommandBuilder;
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
use crate::connui::ConnectionUI;
|
use crate::connui::ConnectionUI;
|
||||||
use crate::mux::domain::{alloc_domain_id, DomainId};
|
|
||||||
use crate::mux::pane::PaneId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use crate::server::codec::*;
|
use crate::server::codec::*;
|
||||||
use crate::server::domain::{ClientDomain, ClientDomainConfig};
|
use crate::server::domain::{ClientDomain, ClientDomainConfig};
|
||||||
use crate::server::pollable::*;
|
use crate::server::pollable::*;
|
||||||
@ -13,6 +10,9 @@ use config::{configuration, SshDomain, TlsDomainClient, UnixDomain};
|
|||||||
use crossbeam::channel::TryRecvError;
|
use crossbeam::channel::TryRecvError;
|
||||||
use filedescriptor::{poll, pollfd, AsRawSocketDescriptor};
|
use filedescriptor::{poll, pollfd, AsRawSocketDescriptor};
|
||||||
use log::info;
|
use log::info;
|
||||||
|
use mux::domain::{alloc_domain_id, DomainId};
|
||||||
|
use mux::pane::PaneId;
|
||||||
|
use mux::Mux;
|
||||||
use openssl::ssl::{SslConnector, SslFiletype, SslMethod};
|
use openssl::ssl::{SslConnector, SslFiletype, SslMethod};
|
||||||
use openssl::x509::X509;
|
use openssl::x509::X509;
|
||||||
use portable_pty::{CommandBuilder, NativePtySystem, PtySystem};
|
use portable_pty::{CommandBuilder, NativePtySystem, PtySystem};
|
||||||
|
@ -11,14 +11,14 @@
|
|||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
#![cfg_attr(feature = "cargo-clippy", allow(clippy::range_plus_one))]
|
#![cfg_attr(feature = "cargo-clippy", allow(clippy::range_plus_one))]
|
||||||
|
|
||||||
use crate::mux::domain::DomainId;
|
|
||||||
use crate::mux::pane::PaneId;
|
|
||||||
use crate::mux::renderable::{RenderableDimensions, StableCursorPosition};
|
|
||||||
use crate::mux::tab::{PaneNode, SerdeUrl, SplitDirection, TabId};
|
|
||||||
use crate::mux::window::WindowId;
|
|
||||||
use anyhow::{bail, Context as _, Error};
|
use anyhow::{bail, Context as _, Error};
|
||||||
use leb128;
|
use leb128;
|
||||||
use log::debug;
|
use log::debug;
|
||||||
|
use mux::domain::DomainId;
|
||||||
|
use mux::pane::PaneId;
|
||||||
|
use mux::renderable::{RenderableDimensions, StableCursorPosition};
|
||||||
|
use mux::tab::{PaneNode, SerdeUrl, SplitDirection, TabId};
|
||||||
|
use mux::window::WindowId;
|
||||||
use portable_pty::{CommandBuilder, PtySize};
|
use portable_pty::{CommandBuilder, PtySize};
|
||||||
use rangeset::*;
|
use rangeset::*;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@ -683,12 +683,12 @@ pub struct GetLinesResponse {
|
|||||||
#[derive(Deserialize, Serialize, PartialEq, Debug)]
|
#[derive(Deserialize, Serialize, PartialEq, Debug)]
|
||||||
pub struct SearchScrollbackRequest {
|
pub struct SearchScrollbackRequest {
|
||||||
pub pane_id: PaneId,
|
pub pane_id: PaneId,
|
||||||
pub pattern: crate::mux::pane::Pattern,
|
pub pattern: mux::pane::Pattern,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, PartialEq, Debug)]
|
#[derive(Deserialize, Serialize, PartialEq, Debug)]
|
||||||
pub struct SearchScrollbackResponse {
|
pub struct SearchScrollbackResponse {
|
||||||
pub results: Vec<crate::mux::pane::SearchResult>,
|
pub results: Vec<mux::pane::SearchResult>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -1,11 +1,6 @@
|
|||||||
use crate::connui::ConnectionUI;
|
use crate::connui::ConnectionUI;
|
||||||
use crate::font::FontConfiguration;
|
use crate::font::FontConfiguration;
|
||||||
use crate::frontend::front_end;
|
use crate::frontend::front_end;
|
||||||
use crate::mux::domain::{alloc_domain_id, Domain, DomainId, DomainState};
|
|
||||||
use crate::mux::pane::{Pane, PaneId};
|
|
||||||
use crate::mux::tab::{SplitDirection, Tab, TabId};
|
|
||||||
use crate::mux::window::WindowId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use crate::server::client::Client;
|
use crate::server::client::Client;
|
||||||
use crate::server::codec::{ListPanesResponse, Spawn, SplitPane};
|
use crate::server::codec::{ListPanesResponse, Spawn, SplitPane};
|
||||||
use crate::server::tab::ClientPane;
|
use crate::server::tab::ClientPane;
|
||||||
@ -13,6 +8,11 @@ use anyhow::{anyhow, bail};
|
|||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use config::keyassignment::SpawnTabDomain;
|
use config::keyassignment::SpawnTabDomain;
|
||||||
use config::{SshDomain, TlsDomainClient, UnixDomain};
|
use config::{SshDomain, TlsDomainClient, UnixDomain};
|
||||||
|
use mux::domain::{alloc_domain_id, Domain, DomainId, DomainState};
|
||||||
|
use mux::pane::{Pane, PaneId};
|
||||||
|
use mux::tab::{SplitDirection, Tab, TabId};
|
||||||
|
use mux::window::WindowId;
|
||||||
|
use mux::Mux;
|
||||||
use portable_pty::{CommandBuilder, PtySize};
|
use portable_pty::{CommandBuilder, PtySize};
|
||||||
use promise::spawn::{join_handle_result, spawn_into_new_thread};
|
use promise::spawn::{join_handle_result, spawn_into_new_thread};
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
use crate::mux::{Mux, MuxNotification};
|
|
||||||
use crate::server::codec::*;
|
use crate::server::codec::*;
|
||||||
use crate::server::listener::sessionhandler::SessionHandler;
|
use crate::server::listener::sessionhandler::SessionHandler;
|
||||||
use crate::server::pollable::*;
|
use crate::server::pollable::*;
|
||||||
@ -6,6 +5,7 @@ use anyhow::{bail, Context, Error};
|
|||||||
use crossbeam::channel::TryRecvError;
|
use crossbeam::channel::TryRecvError;
|
||||||
use filedescriptor::poll;
|
use filedescriptor::poll;
|
||||||
use log::error;
|
use log::error;
|
||||||
|
use mux::{Mux, MuxNotification};
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
|
|
||||||
pub struct ClientSession<S: ReadAndWrite> {
|
pub struct ClientSession<S: ReadAndWrite> {
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
use crate::mux::pane::{Pane, PaneId};
|
|
||||||
use crate::mux::renderable::{RenderableDimensions, StableCursorPosition};
|
|
||||||
use crate::mux::tab::TabId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use crate::server::codec::*;
|
use crate::server::codec::*;
|
||||||
use crate::server::listener::PKI;
|
use crate::server::listener::PKI;
|
||||||
use crate::server::pollable::*;
|
use crate::server::pollable::*;
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
use config::keyassignment::SpawnTabDomain;
|
use config::keyassignment::SpawnTabDomain;
|
||||||
|
use mux::pane::{Pane, PaneId};
|
||||||
|
use mux::renderable::{RenderableDimensions, StableCursorPosition};
|
||||||
|
use mux::tab::TabId;
|
||||||
|
use mux::Mux;
|
||||||
use portable_pty::PtySize;
|
use portable_pty::PtySize;
|
||||||
use promise::spawn::spawn_into_main_thread;
|
use promise::spawn::spawn_into_main_thread;
|
||||||
use rangeset::RangeSet;
|
use rangeset::RangeSet;
|
||||||
@ -253,7 +253,7 @@ impl SessionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Pdu::SearchScrollbackRequest(SearchScrollbackRequest { pane_id, pattern }) => {
|
Pdu::SearchScrollbackRequest(SearchScrollbackRequest { pane_id, pattern }) => {
|
||||||
use crate::mux::pane::Pattern;
|
use mux::pane::Pattern;
|
||||||
|
|
||||||
async fn do_search(pane_id: TabId, pattern: Pattern) -> anyhow::Result<Pdu> {
|
async fn do_search(pane_id: TabId, pattern: Pattern) -> anyhow::Result<Pdu> {
|
||||||
let mux = Mux::get().unwrap();
|
let mux = Mux::get().unwrap();
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
use crate::mux::domain::DomainId;
|
|
||||||
use crate::mux::pane::{alloc_pane_id, Pane, PaneId, Pattern, SearchResult};
|
|
||||||
use crate::mux::renderable::{Renderable, RenderableDimensions};
|
|
||||||
use crate::mux::tab::TabId;
|
|
||||||
use crate::server::codec::*;
|
use crate::server::codec::*;
|
||||||
use crate::server::domain::ClientInner;
|
use crate::server::domain::ClientInner;
|
||||||
use crate::server::tab::mousestate::MouseState;
|
use crate::server::tab::mousestate::MouseState;
|
||||||
@ -11,6 +7,10 @@ use async_trait::async_trait;
|
|||||||
use config::configuration;
|
use config::configuration;
|
||||||
use filedescriptor::Pipe;
|
use filedescriptor::Pipe;
|
||||||
use log::info;
|
use log::info;
|
||||||
|
use mux::domain::DomainId;
|
||||||
|
use mux::pane::{alloc_pane_id, Pane, PaneId, Pattern, SearchResult};
|
||||||
|
use mux::renderable::{Renderable, RenderableDimensions};
|
||||||
|
use mux::tab::TabId;
|
||||||
use portable_pty::PtySize;
|
use portable_pty::PtySize;
|
||||||
use ratelim::RateLimiter;
|
use ratelim::RateLimiter;
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use crate::mux::tab::TabId;
|
|
||||||
use crate::server::client::Client;
|
use crate::server::client::Client;
|
||||||
use crate::server::codec::*;
|
use crate::server::codec::*;
|
||||||
|
use mux::tab::TabId;
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::collections::VecDeque;
|
use std::collections::VecDeque;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
use crate::mux::renderable::{Renderable, RenderableDimensions, StableCursorPosition};
|
|
||||||
use crate::mux::tab::TabId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use crate::server::codec::*;
|
use crate::server::codec::*;
|
||||||
use crate::server::domain::ClientInner;
|
use crate::server::domain::ClientInner;
|
||||||
use crate::server::tab::clienttab::ClientPane;
|
use crate::server::tab::clienttab::ClientPane;
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
use config::{configuration, ConfigHandle};
|
use config::{configuration, ConfigHandle};
|
||||||
use lru::LruCache;
|
use lru::LruCache;
|
||||||
|
use mux::renderable::{Renderable, RenderableDimensions, StableCursorPosition};
|
||||||
|
use mux::tab::TabId;
|
||||||
|
use mux::Mux;
|
||||||
use promise::BrokenPromise;
|
use promise::BrokenPromise;
|
||||||
use rangeset::*;
|
use rangeset::*;
|
||||||
use ratelim::RateLimiter;
|
use ratelim::RateLimiter;
|
||||||
@ -350,7 +350,7 @@ impl RenderableInner {
|
|||||||
if !dirty.is_empty() {
|
if !dirty.is_empty() {
|
||||||
Mux::get()
|
Mux::get()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.notify(crate::mux::MuxNotification::PaneOutput(self.local_pane_id));
|
.notify(mux::MuxNotification::PaneOutput(self.local_pane_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut to_fetch = RangeSet::new();
|
let mut to_fetch = RangeSet::new();
|
||||||
|
12
src/ssh.rs
12
src/ssh.rs
@ -1,12 +1,12 @@
|
|||||||
use crate::connui::ConnectionUI;
|
use crate::connui::ConnectionUI;
|
||||||
use crate::mux::domain::{alloc_domain_id, Domain, DomainId, DomainState};
|
|
||||||
use crate::mux::localtab::LocalPane;
|
|
||||||
use crate::mux::pane::{alloc_pane_id, Pane, PaneId};
|
|
||||||
use crate::mux::tab::{SplitDirection, Tab, TabId};
|
|
||||||
use crate::mux::window::WindowId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use anyhow::{anyhow, bail, Context, Error};
|
use anyhow::{anyhow, bail, Context, Error};
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
|
use mux::domain::{alloc_domain_id, Domain, DomainId, DomainState};
|
||||||
|
use mux::localtab::LocalPane;
|
||||||
|
use mux::pane::{alloc_pane_id, Pane, PaneId};
|
||||||
|
use mux::tab::{SplitDirection, Tab, TabId};
|
||||||
|
use mux::window::WindowId;
|
||||||
|
use mux::Mux;
|
||||||
use portable_pty::cmdbuilder::CommandBuilder;
|
use portable_pty::cmdbuilder::CommandBuilder;
|
||||||
use portable_pty::{PtySize, PtySystem};
|
use portable_pty::{PtySize, PtySystem};
|
||||||
use promise::{Future, Promise};
|
use promise::{Future, Promise};
|
||||||
|
@ -5,16 +5,16 @@
|
|||||||
|
|
||||||
use crate::font::FontConfiguration;
|
use crate::font::FontConfiguration;
|
||||||
use crate::frontend::front_end;
|
use crate::frontend::front_end;
|
||||||
use crate::mux::domain::{alloc_domain_id, Domain, DomainId, DomainState};
|
|
||||||
use crate::mux::pane::{alloc_pane_id, Pane, PaneId};
|
|
||||||
use crate::mux::renderable::Renderable;
|
|
||||||
use crate::mux::tab::{SplitDirection, Tab, TabId};
|
|
||||||
use crate::mux::window::WindowId;
|
|
||||||
use crate::mux::Mux;
|
|
||||||
use anyhow::{bail, Error};
|
use anyhow::{bail, Error};
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use crossbeam::channel::{unbounded as channel, Receiver, Sender};
|
use crossbeam::channel::{unbounded as channel, Receiver, Sender};
|
||||||
use filedescriptor::{FileDescriptor, Pipe};
|
use filedescriptor::{FileDescriptor, Pipe};
|
||||||
|
use mux::domain::{alloc_domain_id, Domain, DomainId, DomainState};
|
||||||
|
use mux::pane::{alloc_pane_id, Pane, PaneId};
|
||||||
|
use mux::renderable::Renderable;
|
||||||
|
use mux::tab::{SplitDirection, Tab, TabId};
|
||||||
|
use mux::window::WindowId;
|
||||||
|
use mux::Mux;
|
||||||
use portable_pty::*;
|
use portable_pty::*;
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::cell::RefMut;
|
use std::cell::RefMut;
|
||||||
|
Loading…
Reference in New Issue
Block a user