Add SSH connections: saved hosts manager and hierarchical shell picker
This commit is contained in:
parent
4e5bc7e081
commit
872fb0e80e
14 changed files with 1324 additions and 171 deletions
36
src/ipc.ts
36
src/ipc.ts
|
|
@ -3,11 +3,36 @@ import { listen, type UnlistenFn } from "@tauri-apps/api/event";
|
|||
|
||||
export type PaneId = number;
|
||||
|
||||
/** What to spawn into a fresh PTY. Mirrors the Rust `SpawnSpec` enum. */
|
||||
export type SpawnSpec =
|
||||
| { kind: "wsl"; distro?: string; cwd?: string }
|
||||
| { kind: "powershell" }
|
||||
| {
|
||||
kind: "ssh";
|
||||
host: string;
|
||||
user?: string;
|
||||
port?: number;
|
||||
identityFile?: string;
|
||||
jumpHost?: string;
|
||||
extraArgs?: string[];
|
||||
};
|
||||
|
||||
/** One saved SSH host. Mirrors the Rust `SshHost` struct. */
|
||||
export interface SshHost {
|
||||
id: string;
|
||||
label: string;
|
||||
hostname: string;
|
||||
user?: string;
|
||||
port?: number;
|
||||
identityFile?: string;
|
||||
jumpHost?: string;
|
||||
extraArgs?: string[];
|
||||
}
|
||||
|
||||
export const listDistros = (): Promise<string[]> => invoke("list_distros");
|
||||
|
||||
export const spawnPane = (args: {
|
||||
distro?: string;
|
||||
cwd?: string;
|
||||
spec: SpawnSpec;
|
||||
cols: number;
|
||||
rows: number;
|
||||
}): Promise<PaneId> => invoke("spawn_pane", args);
|
||||
|
|
@ -38,3 +63,10 @@ export const saveWorkspace = (json: string): Promise<void> =>
|
|||
|
||||
export const loadWorkspace = (): Promise<string | null> =>
|
||||
invoke("load_workspace");
|
||||
|
||||
// ---- SSH hosts -------------------------------------------------------------
|
||||
|
||||
export const listSshHosts = (): Promise<SshHost[]> => invoke("list_ssh_hosts");
|
||||
|
||||
export const saveSshHosts = (hosts: SshHost[]): Promise<void> =>
|
||||
invoke("save_ssh_hosts", { hosts });
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue