term: track current window title in terminal struct

This commit is contained in:
Daniel Eklöf 2019-07-21 17:35:53 +02:00
parent 326808f94d
commit 97350f6488
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
4 changed files with 17 additions and 4 deletions

3
main.c
View file

@ -589,7 +589,7 @@ main(int argc, char *const *argv)
xdg_toplevel_add_listener(term.wl.xdg_toplevel, &xdg_toplevel_listener, &term);
xdg_toplevel_set_app_id(term.wl.xdg_toplevel, "foot");
render_set_title(&term, "foot");
term_set_window_title(&term, "foot");
wl_surface_commit(term.wl.surface);
wl_display_roundtrip(term.wl.display);
@ -848,6 +848,7 @@ out:
for (int row = 0; row < term.alt.num_rows; row++)
grid_row_free(term.alt.rows[row]);
free(term.alt.rows);
free(term.window_title);
for (size_t i = 0; i < sizeof(term.fonts) / sizeof(term.fonts[0]); i++) {
struct font *f = &term.fonts[i];

6
osc.c
View file

@ -234,9 +234,9 @@ osc_dispatch(struct terminal *term)
}
switch (param) {
case 0: render_set_title(term, string); break; /* icon + title */
case 1: break; /* icon */
case 2: render_set_title(term, string); break; /* title */
case 0: term_set_window_title(term, string); break; /* icon + title */
case 1: break; /* icon */
case 2: term_set_window_title(term, string); break; /* title */
case 52: osc_selection(term, string); break;
case 104: /* Reset Color Number 'c' */

View file

@ -10,6 +10,7 @@
#define LOG_ENABLE_DBG 0
#include "log.h"
#include "grid.h"
#include "render.h"
#include "vt.h"
#define min(x, y) ((x) < (y) ? (x) : (y))
@ -460,3 +461,11 @@ term_mouse_motion(struct terminal *term, int button, int row, int col,
break;
}
}
void
term_set_window_title(struct terminal *term, const char *title)
{
free(term->window_title);
term->window_title = strdup(title);
render_set_title(term, term->window_title);
}

View file

@ -245,6 +245,7 @@ struct terminal {
int selected_charset;
enum charset charset[4]; /* G0-G3 */
char *window_title;
struct vt vt;
struct kbd kbd;
@ -341,3 +342,5 @@ void term_mouse_up(struct terminal *term, int button, int row, int col,
bool shift, bool alt, bool ctrl);
void term_mouse_motion(struct terminal *term, int button, int row, int col,
bool shift, bool alt, bool ctrl);
void term_set_window_title(struct terminal *term, const char *title);