mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-16 05:34:00 -04:00
osc: implement change window title and icon
This commit is contained in:
parent
998ce52b7e
commit
3ba1721c0f
5 changed files with 65 additions and 10 deletions
41
osc.c
41
osc.c
|
|
@ -1,12 +1,51 @@
|
|||
#include "osc.h"
|
||||
#include <ctype.h>
|
||||
#include "terminal.h"
|
||||
|
||||
#define LOG_MODULE "osc"
|
||||
#define LOG_ENABLE_DBG 0
|
||||
#include "log.h"
|
||||
|
||||
/* TODO */
|
||||
void render_set_title(struct renderer *renderer, const char *title);
|
||||
|
||||
bool
|
||||
osc_dispatch(struct terminal *term)
|
||||
{
|
||||
LOG_DBG("OCS: %.*s", (int)term->vt.osc.idx, term->vt.osc.data);
|
||||
int param = 0;
|
||||
int data_ofs = 0;
|
||||
|
||||
for (size_t i = 0; i < term->vt.osc.idx; i++) {
|
||||
int c = term->vt.osc.data[i];
|
||||
|
||||
if (c == ';') {
|
||||
data_ofs = i + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!isdigit(c)) {
|
||||
LOG_ERR("OSC: invalid parameter: %.*s",
|
||||
(int)term->vt.osc.idx, term->vt.osc.data);
|
||||
return false;
|
||||
}
|
||||
|
||||
param += c - '0';
|
||||
}
|
||||
LOG_DBG("OCS: %.*s (param = %d)",
|
||||
(int)term->vt.osc.idx, term->vt.osc.data, param);
|
||||
|
||||
const char *string = (const char *)&term->vt.osc.data[data_ofs];
|
||||
|
||||
switch (param) {
|
||||
case 0: render_set_title(&term->renderer, string); break; /* icon + title */
|
||||
case 1: break; /* icon */
|
||||
case 2: render_set_title(&term->renderer, string); break; /* title */
|
||||
|
||||
default:
|
||||
LOG_ERR("unimplemented: OSC: %.*s",
|
||||
(int)term->vt.osc.idx, term->vt.osc.data);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue