config: add locked-title=no|yes

Closes #386
This commit is contained in:
Daniel Eklöf 2021-07-04 17:59:40 +02:00
parent 07652d3b9e
commit fcb60abc13
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
7 changed files with 22 additions and 0 deletions

View file

@ -30,6 +30,11 @@
## Unreleased
### Added
* `locked-title=no|yes` to `foot.ini`
(https://codeberg.org/dnkl/foot/issues/386).
### Changed
* Non-empty lines are now considered to have a hard linebreak,

View file

@ -643,6 +643,9 @@ parse_section_main(const char *key, const char *value, struct config *conf,
conf->title = xstrdup(value);
}
else if (strcmp(key, "locked-title") == 0)
conf->locked_title = str_to_bool(value);
else if (strcmp(key, "app-id") == 0) {
free(conf->app_id);
conf->app_id = xstrdup(value);

View file

@ -77,6 +77,7 @@ struct config {
wchar_t *word_delimiters;
bool login_shell;
bool no_wait;
bool locked_title;
struct {
enum conf_size_type type;

View file

@ -224,6 +224,10 @@ in this order:
*title*
Initial window title. Default: _foot_.
*locked-title*
Boolean. If enabled, applications are not allowed to change the
title at run-time. Default: _no_.
*app-id*
Value to set the *app-id* property on the Wayland window to. The
compositor can use this value to e.g. group multiple windows, or

View file

@ -4,6 +4,10 @@
# term=foot (or xterm-256color if built with -Dterminfo=disabled)
# login-shell=no
# app-id=foot
# title=foot
# locked-title=no
# font=monospace:size=8
# font-bold=<bold variant of regular font>
# font-italic=<italic variant of regular font>

View file

@ -2634,9 +2634,13 @@ term_xcursor_update(struct terminal *term)
void
term_set_window_title(struct terminal *term, const char *title)
{
if (term->conf->locked_title && term->window_title_has_been_set)
return;
free(term->window_title);
term->window_title = xstrdup(title);
render_refresh_title(term);
term->window_title_has_been_set = true;
}
void

View file

@ -382,6 +382,7 @@ struct terminal {
bool sixel_cursor_right_of_graphics:1;
} xtsave;
bool window_title_has_been_set;
char *window_title;
tll(char *) window_title_stack;