Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package foot for openSUSE:Factory checked in at 2025-01-18 13:58:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/foot (Old) and /work/SRC/openSUSE:Factory/.foot.new.5589 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "foot" Sat Jan 18 13:58:40 2025 rev:39 rq:1238660 version:1.20.2 Changes: -------- --- /work/SRC/openSUSE:Factory/foot/foot.changes 2025-01-05 15:29:54.766446521 +0100 +++ /work/SRC/openSUSE:Factory/.foot.new.5589/foot.changes 2025-01-18 13:58:40.953961472 +0100 @@ -1,0 +2,23 @@ +Sat Jan 18 10:10:43 UTC 2025 - Arnav Singh <opens...@arnavion.dev> + +- Update to v1.20.2: + * foot.ini options: + * colors.flash-alpha can be set to 1.0 (fully opaque) again. + The issue where this would cause window to be stuck in flash state + has been fixed separately. + * "Report window title" (CSI 21 t) and "Report app-id" (OSC 176 ?) + are now ignored. This relates to CVEs reported in some other terminals + where a malicious program / ssh remote can trick the user into running + arbitrary commands by using these sequences to fill + the shell input buffer. + * Fixed a crash on startup if the compositor sent a keyboard enter event + before the window was mapped. + * See https://codeberg.org/dnkl/foot/releases/tag/1.20.2 for more details. + +------------------------------------------------------------------- +Fri Jan 17 10:25:58 UTC 2025 - Thorsten Kukuk <ku...@suse.com> + +- Disable libutempter, it doesn't work anymore with the switch + from utmp to systemd-logind + +------------------------------------------------------------------- Old: ---- foot-1.20.1.tar.gz foot-1.20.1.tar.gz.sig New: ---- foot-1.20.2.tar.gz foot-1.20.2.tar.gz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ foot.spec ++++++ --- /var/tmp/diff_new_pack.86SZFU/_old 2025-01-18 13:58:41.801996426 +0100 +++ /var/tmp/diff_new_pack.86SZFU/_new 2025-01-18 13:58:41.805996592 +0100 @@ -20,7 +20,7 @@ %define _distconfdir %{_sysconfdir} %endif Name: foot -Version: 1.20.1 +Version: 1.20.2 Release: 0 Summary: A Wayland terminal emulator License: MIT @@ -30,7 +30,9 @@ # https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xb19964fbba09664cc81027ed5bbd4992c116573f Source2: %{name}.keyring Requires: terminfo +%if 0%{?suse_version} < 1600 Requires: utempter +%endif BuildRequires: meson >= 0.59 BuildRequires: pkgconfig BuildRequires: python3 @@ -86,8 +88,12 @@ -Dterminfo=enabled \ -Dterminfo-base-name=foot-extra \ -Dthemes=true \ +%if 0%{?suse_version} < 1600 -Dutmp-backend=libutempter \ -Dutmp-default-helper-path=%{_libexecdir}/utempter/utempter +%else + -Dutmp-backend=none +%endif %meson_build %install ++++++ foot-1.20.1.tar.gz -> foot-1.20.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/.builds/alpine-x64.yml new/foot-1.20.2/.builds/alpine-x64.yml --- old/foot-1.20.1/.builds/alpine-x64.yml 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/.builds/alpine-x64.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,55 +0,0 @@ -image: alpine/edge -packages: - - musl-dev - - eudev-libs - - eudev-dev - - linux-headers - - meson - - ninja - - gcc - - scdoc - - wayland-dev - - wayland-protocols - - freetype-dev - - fontconfig-dev - - harfbuzz-dev - - utf8proc-dev - - pixman-dev - - libxkbcommon-dev - - ncurses - - python3 - - py3-pip - - check-dev - - ttf-hack - - font-noto-emoji - -sources: - - https://git.sr.ht/~dnkl/foot - -# triggers: -# - action: email -# condition: failure -# to: <committer> - -tasks: - - fcft: | - cd foot/subprojects - git clone https://codeberg.org/dnkl/fcft.git - cd ../.. - - debug: | - mkdir -p bld/debug - meson --buildtype=debug -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true foot bld/debug - ninja -C bld/debug -k0 - meson test -C bld/debug --print-errorlogs - - release: | - mkdir -p bld/release - meson --buildtype=minsize -Db_pgo=generate -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true foot bld/release - ninja -C bld/release -k0 - meson test -C bld/release --print-errorlogs - - codespell: | - python3 -m venv codespell-venv - source codespell-venv/bin/activate - pip install codespell - cd foot - ~/.local/bin/codespell -Lser,doas,zar README.md INSTALL.md CHANGELOG.md *.c *.h doc/*.scd - deactivate diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/.builds/alpine-x64.yml.disabled new/foot-1.20.2/.builds/alpine-x64.yml.disabled --- old/foot-1.20.1/.builds/alpine-x64.yml.disabled 1970-01-01 01:00:00.000000000 +0100 +++ new/foot-1.20.2/.builds/alpine-x64.yml.disabled 2025-01-18 09:31:05.000000000 +0100 @@ -0,0 +1,55 @@ +image: alpine/edge +packages: + - musl-dev + - eudev-libs + - eudev-dev + - linux-headers + - meson + - ninja + - gcc + - scdoc + - wayland-dev + - wayland-protocols + - freetype-dev + - fontconfig-dev + - harfbuzz-dev + - utf8proc-dev + - pixman-dev + - libxkbcommon-dev + - ncurses + - python3 + - py3-pip + - check-dev + - ttf-hack + - font-noto-emoji + +sources: + - https://git.sr.ht/~dnkl/foot + +# triggers: +# - action: email +# condition: failure +# to: <committer> + +tasks: + - fcft: | + cd foot/subprojects + git clone https://codeberg.org/dnkl/fcft.git + cd ../.. + - debug: | + mkdir -p bld/debug + meson --buildtype=debug -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true foot bld/debug + ninja -C bld/debug -k0 + meson test -C bld/debug --print-errorlogs + - release: | + mkdir -p bld/release + meson --buildtype=minsize -Db_pgo=generate -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true foot bld/release + ninja -C bld/release -k0 + meson test -C bld/release --print-errorlogs + - codespell: | + python3 -m venv codespell-venv + source codespell-venv/bin/activate + pip install codespell + cd foot + ~/.local/bin/codespell -Lser,doas,zar README.md INSTALL.md CHANGELOG.md *.c *.h doc/*.scd + deactivate diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/.builds/freebsd-x64.yml new/foot-1.20.2/.builds/freebsd-x64.yml --- old/foot-1.20.1/.builds/freebsd-x64.yml 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/.builds/freebsd-x64.yml 2025-01-18 09:31:05.000000000 +0100 @@ -19,7 +19,7 @@ - noto-emoji sources: - - https://git.sr.ht/~dnkl/foot + - https://codeberg.org/dnkl/foot.git # triggers: # - action: email @@ -29,11 +29,12 @@ tasks: - fcft: | cd foot/subprojects + git clone https://codeberg.org/dnkl/tllist.git git clone https://codeberg.org/dnkl/fcft.git cd ../.. - debug: | mkdir -p bld/debug - meson --buildtype=debug -Dterminfo=disabled -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true foot bld/debug + meson setup --buildtype=debug -Dterminfo=disabled -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true foot bld/debug ninja -C bld/debug -k0 meson test -C bld/debug --print-errorlogs bld/debug/foot --version @@ -41,7 +42,7 @@ - release: | mkdir -p bld/release - meson --buildtype=minsize -Db_pgo=generate -Dterminfo=disabled -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true foot bld/release + meson setup --buildtype=minsize -Db_pgo=generate -Dterminfo=disabled -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true foot bld/release ninja -C bld/release -k0 meson test -C bld/release --print-errorlogs bld/release/foot --version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/.forgejo/issue_template/issue_template.yml new/foot-1.20.2/.forgejo/issue_template/issue_template.yml --- old/foot-1.20.1/.forgejo/issue_template/issue_template.yml 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/.forgejo/issue_template/issue_template.yml 2025-01-18 09:31:05.000000000 +0100 @@ -34,6 +34,21 @@ placeholder: "sway version 1.9" validations: required: true + - type: input + id: distro + attributes: + label: Distribution + description: "The name of the Linux distribution, or BSD flavor, you are running" + placeholder: "Arch Linux" + validations: + required: true + - type: textarea + id: config + attributes: + label: Foot config + description: Paste your entire `foot.ini` here + validations: + required: true - type: textarea id: repro attributes: @@ -59,8 +74,8 @@ other terminal multiplexer? Does the bug happen in a plain foot instance? - **IME** do you use an IME? Which one? Does the bug happen if - you disable the IME? + **IME** do you use an IME (e.g. fcitx5, ibus etc)? Which one? + Does the bug happen if you disable the IME? Obtaining logs and stacktraces ------------------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/.woodpecker.yaml new/foot-1.20.2/.woodpecker.yaml --- old/foot-1.20.1/.woodpecker.yaml 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/.woodpecker.yaml 2025-01-18 09:31:05.000000000 +0100 @@ -49,7 +49,7 @@ # Debug - mkdir -p bld/debug-x64 - cd bld/debug-x64 - - meson --buildtype=debug -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. + - meson setup --buildtype=debug -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. - ninja -v -k0 - ninja -v test - ./foot --version @@ -59,7 +59,7 @@ # Release (gcc) - mkdir -p bld/release-x64 - cd bld/release-x64 - - meson --buildtype=release -Db_pgo=generate -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. + - meson setup --buildtype=release -Db_pgo=generate -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. - ninja -v -k0 - ninja -v test - ./foot --version @@ -69,7 +69,7 @@ # Release (clang) - mkdir -p bld/release-x64-clang - cd bld/release-x64-clang - - CC=clang meson --buildtype=release -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. + - CC=clang meson setup --buildtype=release -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. - ninja -v -k0 - ninja -v test - ./foot --version @@ -80,7 +80,7 @@ - apk del harfbuzz harfbuzz-dev utf8proc utf8proc-dev - mkdir -p bld/debug - cd bld/debug - - meson --buildtype=debug -Dgrapheme-clustering=disabled -Dfcft:grapheme-shaping=disabled -Dfcft:run-shaping=disabled -Dfcft:test-text-shaping=false ../.. + - meson setup --buildtype=debug -Dgrapheme-clustering=disabled -Dfcft:grapheme-shaping=disabled -Dfcft:run-shaping=disabled -Dfcft:test-text-shaping=false ../.. - ninja -v -k0 - ninja -v test - ./foot --version @@ -106,7 +106,7 @@ # Debug - mkdir -p bld/debug-x86 - cd bld/debug-x86 - - meson --buildtype=debug -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. + - meson setup --buildtype=debug -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. - ninja -v -k0 - ninja -v test - ./foot --version @@ -116,7 +116,7 @@ # Release (gcc) - mkdir -p bld/release-x86 - cd bld/release-x86 - - meson --buildtype=release -Db_pgo=generate -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. + - meson setup --buildtype=release -Db_pgo=generate -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. - ninja -v -k0 - ninja -v test - ./foot --version @@ -126,7 +126,7 @@ # Release (clang) - mkdir -p bld/release-x86-clang - cd bld/release-x86-clang - - CC=clang meson --buildtype=release -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. + - CC=clang meson setup --buildtype=release -Dgrapheme-clustering=enabled -Dfcft:grapheme-shaping=enabled -Dfcft:run-shaping=enabled -Dfcft:test-text-shaping=true ../.. - ninja -v -k0 - ninja -v test - ./foot --version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/CHANGELOG.md new/foot-1.20.2/CHANGELOG.md --- old/foot-1.20.1/CHANGELOG.md 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/CHANGELOG.md 2025-01-18 09:31:05.000000000 +0100 @@ -1,5 +1,6 @@ # Changelog +* [1.20.2](#1-20-2) * [1.20.1](#1-20-1) * [1.20.0](#1-20-0) * [1.19.0](#1-19-0) @@ -56,6 +57,35 @@ * [1.2.0](#1-2-0) +## 1.20.2 + +### Changed + +* The `CSI 21 t` (report window title) and `OSC 176 ?` (report app-id) + escape sequences are now ignored ([#1894][1894]). + +[1894]: https://codeberg.org/dnkl/foot/issues/1894 + + +### Fixed + +* 'flash' overlay (triggered by either `tput flash`, or enabling + `bell.visual` and then sending `BEL` to the terminal) stuck when + `colors.flash-alpha=1.0`. +* Crash when compositor sends a keyboard enter event before the foot + window has been mapped ([#1910][1910]). +* Build failures (`utf8proc.h` not found) on at least FreeBSD, but + most likely other BSDs, as well as some Linuxes ([#1903][1903]). + +[1910]: https://codeberg.org/dnkl/foot/issues/1910 +[1903]: https://codeberg.org/dnkl/foot/issues/1903 + + +### Contributors + +* Alexander Orzechowski + + ## 1.20.1 ### Changed @@ -72,7 +102,7 @@ ### Fixed * Regression: trying to print a Unicode _"Legacy Computing symbol"_, - in the range U+1FB00 - U+1FB9B would crash foot ([#][]). + in the range U+1FB00 - U+1FB9B would crash foot ([#1901][1901]). [1901]: https://codeberg.org/dnkl/foot/issues/1901 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/config.c new/foot-1.20.2/config.c --- old/foot-1.20.1/config.c 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/config.c 2025-01-18 09:31:05.000000000 +0100 @@ -1445,8 +1445,8 @@ if (!value_to_float(ctx, &alpha)) return false; - if (alpha < 0. || alpha >= 1.) { - LOG_CONTEXTUAL_ERR("not in range 0.0-0.999"); + if (alpha < 0. || alpha > 1.) { + LOG_CONTEXTUAL_ERR("not in range 0.0-1.0"); return false; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/csi.c new/foot-1.20.2/csi.c --- old/foot-1.20.1/csi.c 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/csi.c 2025-01-18 09:31:05.000000000 +0100 @@ -1354,10 +1354,14 @@ } case 21: { +#if 0 /* Disabled for now, see #1894 */ char reply[3 + strlen(term->window_title) + 2 + 1]; int chars = xsnprintf( reply, sizeof(reply), "\033]l%s\033\\", term->window_title); term_to_slave(term, reply, chars); +#else + LOG_WARN("CSI 21 t (report window title) ignored"); +#endif break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/doc/foot-ctlseqs.7.scd new/foot-1.20.2/doc/foot-ctlseqs.7.scd --- old/foot-1.20.1/doc/foot-ctlseqs.7.scd 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/doc/foot-ctlseqs.7.scd 2025-01-18 09:31:05.000000000 +0100 @@ -391,9 +391,6 @@ | 20 : - : Report icon label. -| 21 -: - -: Report window title. | 22 : - : Push window title+icon. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/meson.build new/foot-1.20.2/meson.build --- old/foot-1.20.1/meson.build 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/meson.build 2025-01-18 09:31:05.000000000 +0100 @@ -1,5 +1,5 @@ project('foot', 'c', - version: '1.20.1', + version: '1.20.2', license: 'MIT', meson_version: '>=0.59.0', default_options: [ @@ -226,7 +226,8 @@ 'debug.c', 'debug.h', 'macros.h', 'xmalloc.c', 'xmalloc.h', - 'xsnprintf.c', 'xsnprintf.h' + 'xsnprintf.c', 'xsnprintf.h', + dependencies: [utf8proc] ) misc = static_library( @@ -234,7 +235,9 @@ 'hsl.c', 'hsl.h', 'macros.h', 'misc.c', 'misc.h', - 'uri.c', 'uri.h' + 'uri.c', 'uri.h', + dependencies: [utf8proc], + link_with: [common] ) vtlib = static_library( @@ -268,6 +271,7 @@ tokenize = static_library( 'tokenizelib', 'tokenize.c', + dependencies: [utf8proc], link_with: [common], ) @@ -321,7 +325,7 @@ 'macros.h', 'util.h', version, - dependencies: [tllist], + dependencies: [tllist, utf8proc], link_with: common, install: true) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/osc.c new/foot-1.20.2/osc.c --- old/foot-1.20.1/osc.c 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/osc.c 2025-01-18 09:31:05.000000000 +0100 @@ -1498,6 +1498,7 @@ case 176: if (string[0] == '?' && string[1] == '\0') { +#if 0 /* Disabled for now, see #1894 */ const char *terminator = term->vt.osc.bel ? "\a" : "\033\\"; char *reply = xasprintf( "\033]176;%s%s", @@ -1506,6 +1507,9 @@ term_to_slave(term, reply, strlen(reply)); free(reply); +#else + LOG_WARN("OSC-176 app-id query ignored"); +#endif break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/pgo/pgo.c new/foot-1.20.2/pgo/pgo.c --- old/foot-1.20.1/pgo/pgo.c 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/pgo/pgo.c 2025-01-18 09:31:05.000000000 +0100 @@ -72,6 +72,8 @@ void render_refresh_app_id(struct terminal *term) {} void render_refresh_icon(struct terminal *term) {} +void render_overlay(struct terminal *term) {} + bool render_xcursor_is_valid(const struct seat *seat, const char *cursor) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/render.c new/foot-1.20.2/render.c --- old/foot-1.20.1/render.c 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/render.c 2025-01-18 09:31:05.000000000 +0100 @@ -1862,7 +1862,7 @@ } } -static void +void render_overlay(struct terminal *term) { struct wayl_sub_surface *overlay = &term->window->overlay; @@ -1898,27 +1898,6 @@ break; case OVERLAY_FLASH: - /* - * A compositor will not send a frame callback for our main - * window if it is fully occluded (for example, by a fully - * opaque overlay...). This causes the overlay to stuck. - * - * For regular buffers, it _should_ be enough to *not* hint - * the compositor it's opaque. But at least some compositor - * special cases single-pixel buffers, and actually look at - * their pixel value. - * - * Thus, we have two options: implement frame callback - * handling for the overlay sub-surface, or ensure we don't - * use a fully opaque surface. Since no overlays are fully - * opaque by default, and the flash surface is the only one - * that can be configured to be opaque (colors.flash-alpha), - * and since adding frame callback handling adds a lot of - * boilerplate code... let's go with the simpler solution of - * not allowing colors.flash-alpha to be 1.0. - */ - xassert(term->conf->colors.flash_alpha != 0xffff); - color = color_hex_to_pixman_with_alpha( term->conf->colors.flash, term->conf->colors.flash_alpha); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/render.h new/foot-1.20.2/render.h --- old/foot-1.20.1/render.h 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/render.h 2025-01-18 09:31:05.000000000 +0100 @@ -31,6 +31,8 @@ struct seat *seat, struct terminal *term, enum cursor_shape shape); bool render_xcursor_is_valid(const struct seat *seat, const char *cursor); +void render_overlay(struct terminal *term); + struct render_worker_context { int my_id; struct terminal *term; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/foot-1.20.1/terminal.c new/foot-1.20.2/terminal.c --- old/foot-1.20.1/terminal.c 2025-01-03 08:01:35.000000000 +0100 +++ new/foot-1.20.2/terminal.c 2025-01-18 09:31:05.000000000 +0100 @@ -419,7 +419,12 @@ (unsigned long long)expiration_count); term->flash.active = false; - render_refresh(term); + render_overlay(term); + + // since the overlay surface is synced with the main window surface, we have + // to commit the main surface for the compositor to acknowledge the new + // overlay state. + wl_surface_commit(term->window->surface.surf); return true; } @@ -510,6 +515,9 @@ static void cursor_refresh(struct terminal *term) { + if (!term->window->is_configured) + return; + term->grid->cur_row->cells[term->grid->cursor.point.col].attrs.clean = 0; term->grid->cur_row->dirty = true; render_refresh(term);