aboutsummaryrefslogtreecommitdiff
path: root/src/cli.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-11 23:31:36 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-11 23:34:20 +0300
commitfe693f613a23452e68589a4337863f217cc57930 (patch)
tree8d60f6c5b0d8b31426c6623cc8b0c2415d481000 /src/cli.rs
parent84c0d003ddb19a8e95e7ad5206771a663913605b (diff)
feat: add optional pane border labels
Diffstat (limited to 'src/cli.rs')
-rw-r--r--src/cli.rs34
1 files changed, 30 insertions, 4 deletions
diff --git a/src/cli.rs b/src/cli.rs
index ce50b9b5..eae17384 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -7,10 +7,10 @@ use serde::Serialize;
use crate::api;
use crate::api::schema::{
AgentStatus, EmptyParams, IntegrationTarget, Method, OutputMatch, PaneListParams,
- PaneReadParams, PaneSendInputParams, PaneSendKeysParams, PaneSendTextParams, PaneSplitParams,
- PaneTarget, PaneWaitForOutputParams, PingParams, ReadFormat, ReadSource, Request,
- SplitDirection, Subscription, TabCreateParams, TabListParams, TabRenameParams, TabTarget,
- WorkspaceCreateParams, WorkspaceRenameParams, WorkspaceTarget,
+ PaneReadParams, PaneRenameParams, PaneSendInputParams, PaneSendKeysParams, PaneSendTextParams,
+ PaneSplitParams, PaneTarget, PaneWaitForOutputParams, PingParams, ReadFormat, ReadSource,
+ Request, SplitDirection, Subscription, TabCreateParams, TabListParams, TabRenameParams,
+ TabTarget, WorkspaceCreateParams, WorkspaceRenameParams, WorkspaceTarget,
};
pub enum CommandOutcome {
@@ -274,6 +274,7 @@ fn run_pane_command(args: &[String]) -> std::io::Result<i32> {
"list" => pane_list(&args[1..]),
"get" => pane_get(&args[1..]),
"read" => pane_read(&args[1..]),
+ "rename" => pane_rename(&args[1..]),
"split" => pane_split(&args[1..]),
"close" => pane_close(&args[1..]),
"send-text" => pane_send_text(&args[1..]),
@@ -788,6 +789,30 @@ fn pane_get(args: &[String]) -> std::io::Result<i32> {
})?)
}
+fn pane_rename(args: &[String]) -> std::io::Result<i32> {
+ let Some(raw_pane_id) = args.first() else {
+ eprintln!("usage: herdr pane rename <pane_id> <label>|--clear");
+ return Ok(2);
+ };
+ if args.len() < 2 {
+ eprintln!("usage: herdr pane rename <pane_id> <label>|--clear");
+ return Ok(2);
+ }
+ let label = if args.len() == 2 && args[1] == "--clear" {
+ None
+ } else {
+ Some(args[1..].join(" "))
+ };
+
+ print_response(&send_request(&Request {
+ id: "cli:pane:rename".into(),
+ method: Method::PaneRename(PaneRenameParams {
+ pane_id: normalize_pane_id(raw_pane_id),
+ label,
+ }),
+ })?)
+}
+
fn pane_read(args: &[String]) -> std::io::Result<i32> {
let Some(raw_pane_id) = args.first() else {
eprintln!("usage: herdr pane read <pane_id> [--source visible|recent|recent-unwrapped] [--lines N] [--format text|ansi] [--ansi]");
@@ -1497,6 +1522,7 @@ fn print_pane_help() {
eprintln!("herdr pane commands:");
eprintln!(" herdr pane list [--workspace <workspace_id>]");
eprintln!(" herdr pane get <pane_id>");
+ eprintln!(" herdr pane rename <pane_id> <label>|--clear");
eprintln!(" herdr pane read <pane_id> [--source visible|recent|recent-unwrapped] [--lines N] [--format text|ansi] [--ansi]");
eprintln!(
" herdr pane split <pane_id> --direction right|down [--cwd PATH] [--focus] [--no-focus]"