aboutsummaryrefslogtreecommitdiff
path: root/tty.c
diff options
context:
space:
mode:
Diffstat (limited to 'tty.c')
-rw-r--r--tty.c44
1 files changed, 43 insertions, 1 deletions
diff --git a/tty.c b/tty.c
index 8410a64c..ea10e61e 100644
--- a/tty.c
+++ b/tty.c
@@ -83,6 +83,8 @@ static void tty_check_overlay_range(struct tty *, u_int, u_int, u_int,
#define TTY_BLOCK_START(tty) (1 + ((tty)->sx * (tty)->sy) * 8)
#define TTY_BLOCK_STOP(tty) (1 + ((tty)->sx * (tty)->sy) / 8)
+#define TTY_QUERY_TIMEOUT 5
+
void
tty_create_log(void)
{
@@ -307,7 +309,7 @@ tty_start_tty(struct tty *tty)
{
struct client *c = tty->client;
struct termios tio;
- struct timeval tv = { .tv_sec = 3 };
+ struct timeval tv = { .tv_sec = TTY_QUERY_TIMEOUT };
setblocking(c->fd, 0);
event_add(&tty->event_in, NULL);
@@ -653,6 +655,18 @@ tty_set_title(struct tty *tty, const char *title)
tty_putcode(tty, TTYC_FSL);
}
+void
+tty_set_path(struct tty *tty, const char *title)
+{
+ if (!tty_term_has(tty->term, TTYC_SWD) ||
+ !tty_term_has(tty->term, TTYC_FSL))
+ return;
+
+ tty_putcode(tty, TTYC_SWD);
+ tty_puts(tty, title);
+ tty_putcode(tty, TTYC_FSL);
+}
+
static void
tty_force_cursor_colour(struct tty *tty, int c)
{
@@ -2917,3 +2931,31 @@ tty_default_attributes(struct tty *tty, const struct grid_cell *defaults,
gc.bg = bg;
tty_attributes(tty, &gc, defaults, palette);
}
+
+static void
+tty_clipboard_query_callback(__unused int fd, __unused short events, void *data)
+{
+ struct tty *tty = data;
+ struct client *c = tty->client;
+
+ c->flags &= ~CLIENT_CLIPBOARDBUFFER;
+ free(c->clipboard_panes);
+ c->clipboard_panes = NULL;
+ c->clipboard_npanes = 0;
+
+ tty->flags &= ~TTY_OSC52QUERY;
+}
+
+void
+tty_clipboard_query(struct tty *tty)
+{
+ struct timeval tv = { .tv_sec = TTY_QUERY_TIMEOUT };
+
+ if ((~tty->flags & TTY_STARTED) || (tty->flags & TTY_OSC52QUERY))
+ return;
+ tty_putcode_ptr2(tty, TTYC_MS, "", "?");
+
+ tty->flags |= TTY_OSC52QUERY;
+ evtimer_set(&tty->clipboard_timer, tty_clipboard_query_callback, tty);
+ evtimer_add(&tty->clipboard_timer, &tv);
+}