*.desktop: Update to allow footclient and foot to track running instances as separate icons in gnome.

Make windows spawned from Server mode have the app-id of footclient.
Make sure that foot.ini app-id settings are respected.
Change StartupWMClass to footclient from foot to track app-id change.
This commit is contained in:
jdevdevdev 2023-05-14 21:19:49 +10:00
parent d76aa539aa
commit 250b499c1d
No known key found for this signature in database
GPG key ID: CFA7C1B81166E2CC
3 changed files with 7 additions and 8 deletions

View file

@ -2889,7 +2889,8 @@ config_font_list_clone(struct config_font_list *dst,
bool bool
config_load(struct config *conf, const char *conf_path, config_load(struct config *conf, const char *conf_path,
user_notifications_t *initial_user_notifications, user_notifications_t *initial_user_notifications,
config_override_t *overrides, bool errors_are_fatal) config_override_t *overrides, bool errors_are_fatal,
bool as_server)
{ {
bool ret = false; bool ret = false;
enum fcft_capabilities fcft_caps = fcft_capabilities(); enum fcft_capabilities fcft_caps = fcft_capabilities();
@ -2898,7 +2899,7 @@ config_load(struct config *conf, const char *conf_path,
.term = xstrdup(FOOT_DEFAULT_TERM), .term = xstrdup(FOOT_DEFAULT_TERM),
.shell = get_shell(), .shell = get_shell(),
.title = xstrdup("foot"), .title = xstrdup("foot"),
.app_id = xstrdup("foot"), .app_id = (as_server ? xstrdup("footclient") : xstrdup("foot")),
.word_delimiters = xc32dup(U",│`|:\"'()[]{}<>"), .word_delimiters = xc32dup(U",│`|:\"'()[]{}<>"),
.size = { .size = {
.type = CONF_SIZE_PX, .type = CONF_SIZE_PX,
@ -3329,7 +3330,7 @@ UNITTEST
user_notifications_t nots = tll_init(); user_notifications_t nots = tll_init();
config_override_t overrides = tll_init(); config_override_t overrides = tll_init();
bool ret = config_load(&original, "/dev/null", &nots, &overrides, false); bool ret = config_load(&original, "/dev/null", &nots, &overrides, false, false);
xassert(ret); xassert(ret);
struct config *clone = config_clone(&original); struct config *clone = config_clone(&original);

View file

@ -355,7 +355,8 @@ bool config_override_apply(struct config *conf, config_override_t *overrides,
bool config_load( bool config_load(
struct config *conf, const char *path, struct config *conf, const char *path,
user_notifications_t *initial_user_notifications, user_notifications_t *initial_user_notifications,
config_override_t *overrides, bool errors_are_fatal); config_override_t *overrides, bool errors_are_fatal,
bool as_server);
void config_free(struct config *conf); void config_free(struct config *conf);
struct config *config_clone(const struct config *old); struct config *config_clone(const struct config *old);

5
main.c
View file

@ -487,7 +487,7 @@ main(int argc, char *const *argv)
struct config conf = {NULL}; struct config conf = {NULL};
bool conf_successful = config_load( bool conf_successful = config_load(
&conf, conf_path, &user_notifications, &overrides, check_config); &conf, conf_path, &user_notifications, &overrides, check_config, as_server);
tll_free(overrides); tll_free(overrides);
if (!conf_successful) { if (!conf_successful) {
@ -521,9 +521,6 @@ main(int argc, char *const *argv)
if (conf_app_id != NULL) { if (conf_app_id != NULL) {
free(conf.app_id); free(conf.app_id);
conf.app_id = xstrdup(conf_app_id); conf.app_id = xstrdup(conf_app_id);
} else if (as_server) {
free(conf.app_id);
conf.app_id = xstrdup("footclient");
} }
if (login_shell) if (login_shell)
conf.login_shell = true; conf.login_shell = true;