mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
.desktop: remove StartupWMClass from server, use distinct StartupWMClass for foot and footclient
For this to work, the default app-id of footclient has been changed from ‘foot’ to ‘footclient’. By using distinct StartupWMClasses, the compositor can connect a running foot/footclient instance to the correct .desktop-file. This ensures the correct icon is being used in e.g. docks, and that actions like “open another window” works correctly. Note that the user can override the app-id, either by setting app-id in foot.ini, or with the -a,--app-id command line option. Closes #1355
This commit is contained in:
parent
f4b8e4f4d6
commit
134b54dfe0
10 changed files with 19 additions and 13 deletions
|
|
@ -62,7 +62,6 @@
|
||||||
* Meson option `default-utempter-path` renamed to
|
* Meson option `default-utempter-path` renamed to
|
||||||
`utmp-default-helper-path`.
|
`utmp-default-helper-path`.
|
||||||
|
|
||||||
|
|
||||||
### Deprecated
|
### Deprecated
|
||||||
|
|
||||||
* `[main].utempter` option.
|
* `[main].utempter` option.
|
||||||
|
|
@ -75,8 +74,12 @@
|
||||||
* Crash when scrolling after resizing the window with non-zero
|
* Crash when scrolling after resizing the window with non-zero
|
||||||
scrolling regions.
|
scrolling regions.
|
||||||
* `XTMODKEYS` state not being reset on a terminal reset.
|
* `XTMODKEYS` state not being reset on a terminal reset.
|
||||||
|
* In Gnome dock foot always groups under "foot client". Change
|
||||||
|
instances of footclient and foot to appear as "foot client" and
|
||||||
|
"foot" respectively. ([#1355][1355])
|
||||||
|
|
||||||
[1317]: https://codeberg.org/dnkl/foot/issues/1317
|
[1317]: https://codeberg.org/dnkl/foot/issues/1317
|
||||||
|
[1355]: https://codeberg.org/dnkl/foot/issues/1355
|
||||||
|
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|
|
||||||
7
config.c
7
config.c
|
|
@ -2905,7 +2905,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();
|
||||||
|
|
@ -2914,7 +2915,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,
|
||||||
|
|
@ -3348,7 +3349,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", ¬s, &overrides, false);
|
bool ret = config_load(&original, "/dev/null", ¬s, &overrides, false, false);
|
||||||
xassert(ret);
|
xassert(ret);
|
||||||
|
|
||||||
struct config *clone = config_clone(&original);
|
struct config *clone = config_clone(&original);
|
||||||
|
|
|
||||||
3
config.h
3
config.h
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ the foot command line
|
||||||
|
|
||||||
*-a*,*--app-id*=_ID_
|
*-a*,*--app-id*=_ID_
|
||||||
Value to set the *app-id* property on the Wayland window
|
Value to set the *app-id* property on the Wayland window
|
||||||
to. Default: _foot_.
|
to. Default: _foot_ (normal mode), or _footclient_ (server mode).
|
||||||
|
|
||||||
*-m*,*--maximized*
|
*-m*,*--maximized*
|
||||||
Start in maximized mode. If both *--maximized* and *--fullscreen*
|
Start in maximized mode. If both *--maximized* and *--fullscreen*
|
||||||
|
|
|
||||||
|
|
@ -289,7 +289,8 @@ empty string to be set, but it must be quoted: *KEY=""*)
|
||||||
*app-id*
|
*app-id*
|
||||||
Value to set the *app-id* property on the Wayland window to. The
|
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
|
compositor can use this value to e.g. group multiple windows, or
|
||||||
apply window management rules. Default: _foot_.
|
apply window management rules. Default: _foot_ (normal mode), or
|
||||||
|
_footclient_ (server mode).
|
||||||
|
|
||||||
*bold-text-in-bright*
|
*bold-text-in-bright*
|
||||||
Semi-boolean. When enabled, bold text is rendered in a brighter
|
Semi-boolean. When enabled, bold text is rendered in a brighter
|
||||||
|
|
@ -314,7 +315,8 @@ empty string to be set, but it must be quoted: *KEY=""*)
|
||||||
and _body_ (message content).
|
and _body_ (message content).
|
||||||
|
|
||||||
_${app-id}_ is replaced with the value of the command line option
|
_${app-id}_ is replaced with the value of the command line option
|
||||||
_--app-id_, and defaults to *foot*.
|
_--app-id_, and defaults to *foot* (normal mode), or
|
||||||
|
*footclient* (server mode).
|
||||||
|
|
||||||
_${window-title}_ is replaced with the current window title.
|
_${window-title}_ is replaced with the current window title.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ terminal has terminated.
|
||||||
|
|
||||||
*-a*,*--app-id*=_ID_
|
*-a*,*--app-id*=_ID_
|
||||||
Value to set the *app-id* property on the Wayland window
|
Value to set the *app-id* property on the Wayland window
|
||||||
to. Default: _foot_.
|
to. Default: _foot_ (normal mode), or _footclient_ (server mode).
|
||||||
|
|
||||||
*-w*,*--window-size-pixels*=_WIDTHxHEIGHT_
|
*-w*,*--window-size-pixels*=_WIDTHxHEIGHT_
|
||||||
Set initial window width and height, in pixels. Default: _700x500_.
|
Set initial window width and height, in pixels. Default: _700x500_.
|
||||||
|
|
|
||||||
2
foot.ini
2
foot.ini
|
|
@ -4,7 +4,7 @@
|
||||||
# term=foot (or xterm-256color if built with -Dterminfo=disabled)
|
# term=foot (or xterm-256color if built with -Dterminfo=disabled)
|
||||||
# login-shell=no
|
# login-shell=no
|
||||||
|
|
||||||
# app-id=foot
|
# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode
|
||||||
# title=foot
|
# title=foot
|
||||||
# locked-title=no
|
# locked-title=no
|
||||||
|
|
||||||
|
|
|
||||||
2
main.c
2
main.c
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -9,4 +9,3 @@ Keywords=shell;prompt;command;commandline;
|
||||||
Name=Foot Server
|
Name=Foot Server
|
||||||
GenericName=Terminal
|
GenericName=Terminal
|
||||||
Comment=A wayland native terminal emulator (server)
|
Comment=A wayland native terminal emulator (server)
|
||||||
StartupWMClass=foot
|
|
||||||
|
|
|
||||||
|
|
@ -9,4 +9,4 @@ Keywords=shell;prompt;command;commandline;
|
||||||
Name=Foot Client
|
Name=Foot Client
|
||||||
GenericName=Terminal
|
GenericName=Terminal
|
||||||
Comment=A wayland native terminal emulator (client)
|
Comment=A wayland native terminal emulator (client)
|
||||||
StartupWMClass=foot
|
StartupWMClass=footclient
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue