Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package foot for openSUSE:Factory checked in 
at 2024-04-12 17:34:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/foot (Old)
 and      /work/SRC/openSUSE:Factory/.foot.new.26366 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "foot"

Fri Apr 12 17:34:42 2024 rev:31 rq:1166917 version:1.17.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/foot/foot.changes        2024-04-03 
17:21:30.667919519 +0200
+++ /work/SRC/openSUSE:Factory/.foot.new.26366/foot.changes     2024-04-12 
17:38:32.440051179 +0200
@@ -1,0 +2,17 @@
+Thu Apr 11 16:33:21 UTC 2024 - Arnav Singh <[email protected]>
+
+- Update to v1.17.1:
+  * foot.ini options:
+    * Added cursor.unfocused-style option to control the look of the cursor
+      when the window is not focused.
+    * Added key-bindings.quit option.
+  * Fixed syslog logging from foot-server to respect log level option.
+  * Fixed terminal to not shut down until the client application exits,
+    even if the client application closed the PTY.
+  * When closing the window, foot now sends SIGHUP to the client application
+    before SIGTERM and SIGKILL. Previously it only sent SIGTERM and SIGKILL.
+  * Fixed crash from malformed DECRQSS request.
+  * Added new themes - dracula-iterm, noirblaze, xterm.
+  * See https://codeberg.org/dnkl/foot/releases/tag/1.17.1 for more details.
+
+-------------------------------------------------------------------

Old:
----
  foot-1.17.0.tar.gz

New:
----
  foot-1.17.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ foot.spec ++++++
--- /var/tmp/diff_new_pack.BG14Am/_old  2024-04-12 17:38:34.228117032 +0200
+++ /var/tmp/diff_new_pack.BG14Am/_new  2024-04-12 17:38:34.240117474 +0200
@@ -20,7 +20,7 @@
 %define _distconfdir %{_sysconfdir}
 %endif
 Name:           foot
-Version:        1.17.0
+Version:        1.17.1
 Release:        0
 Summary:        A Wayland terminal emulator
 License:        MIT

++++++ foot-1.17.0.tar.gz -> foot-1.17.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/CHANGELOG.md new/foot/CHANGELOG.md
--- old/foot/CHANGELOG.md       2024-04-02 16:27:54.000000000 +0200
+++ new/foot/CHANGELOG.md       2024-04-11 15:28:17.000000000 +0200
@@ -1,5 +1,6 @@
 # Changelog
 
+* [1.17.1](#1-17-1)
 * [1.17.0](#1-17-0)
 * [1.16.2](#1-16-2)
 * [1.16.1](#1-16-1)
@@ -49,6 +50,41 @@
 * [1.2.0](#1-2-0)
 
 
+## 1.17.1
+
+### Added
+
+* `cursor.unfocused-style=unchanged|hollow|none` to `foot.ini`. The
+  default is `hollow` ([#1582][1582]).
+* New key binding: `quit` ([#1475][1475]).
+
+[1582]: https://codeberg.org/dnkl/foot/issues/1582
+[1475]: https://codeberg.org/dnkl/foot/issues/1475
+
+
+### Fixed
+
+* Log-level not respected by syslog.
+* Regression: terminal shutting down when the PTY is closed by the
+  client application, which may be earlier than when the client
+  application exits ([#1666][1666]).
+* When closing the window, send `SIGHUP` to the client application,
+  before sending `SIGTERM`. The signal sequence is now `SIGHUP`, wait,
+  `SIGTERM`, wait `SIGKILL`.
+* Crash when receiving a `DECRQSS` request with more than 2 bytes in
+  the `q` parameter.
+
+[1666]: https://codeberg.org/dnkl/foot/issues/1666
+
+
+### Contributors
+
+* Holger Weiß
+* izmyname
+* Marcin Puc
+* tunjan
+
+
 ## 1.17.0
 
 ### Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/CODE_OF_CONDUCT.md new/foot/CODE_OF_CONDUCT.md
--- old/foot/CODE_OF_CONDUCT.md 1970-01-01 01:00:00.000000000 +0100
+++ new/foot/CODE_OF_CONDUCT.md 2024-04-11 15:28:17.000000000 +0200
@@ -0,0 +1,83 @@
+# Foot Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, caste, color, religion, or sexual
+identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+  and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the overall
+  community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or advances 
of
+  any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email address,
+  without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+  professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for 
moderation
+decisions when appropriate.
+
+## Scope
+
+Participants in the foot community are expected to uphold the described
+standards not only in official community spaces (issue trackers, IRC channels,
+etc.) but in all public spaces. The Code of Conduct however does acknowledge
+that people are fallible and that it is possible to truely correct a past
+pattern of unacceptable behavior. That is to say, the scope of the Code of
+Conduct does not necessarily extend into the distant past.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior
+may be reported to the community leaders responsible for enforcement
+at [[email protected]](mailto:[email protected]).  All complaints will
+be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+The consequences for Code of Conduct violations will be decided upon and
+enforced by community leaders. These may include a formal warning, a temporary
+ban from community spaces, a permanent ban from community spaces, etc.
+
+There are no hard and fast rules for exactly what behavior in which space will
+result in what consequences, it is up to the community leaders to enforce the
+Code of Conduct in a way that they believe best promotes a healthy community.
+
+## Attribution
+
+This Code of Conduct is adapted from the
+[Contributor Covenant](https://www.contributor-covenant.org/),
+version 2.1, available at
+https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/README.md new/foot/README.md
--- old/foot/README.md  2024-04-02 16:27:54.000000000 +0200
+++ new/foot/README.md  2024-04-11 15:28:17.000000000 +0200
@@ -37,6 +37,7 @@
 1. [Programmatically checking if running in 
foot](#programmatically-checking-if-running-in-foot)
 1. [XTGETTCAP](#xtgettcap)
 1. [Credits](#Credits)
+1. [Code of Conduct](#code-of-conduct)
 1. [Bugs](#bugs)
 1. [Contact](#contact)
    1. [IRC](#irc)
@@ -304,7 +305,7 @@
 desktop), and then run `footclient` instead of `foot` whenever you
 want to launch a new terminal.
 
-Foot support socket activation, which means `foot --server` will only be
+Foot supports socket activation, which means `foot --server` will only be
 started the first time you'll run `footclient`. (systemd user units are
 included, but it can work with other supervision suites).
 
@@ -644,6 +645,11 @@
 contributing foot's [logo](icons/hicolor/48x48/apps/foot.png).
 
 
+# Code of Conduct
+
+See [Code of Conduct](CODE_OF_CONDUCT.md)
+
+
 # Bugs
 
 Please report bugs to https://codeberg.org/dnkl/foot/issues
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/config.c new/foot/config.c
--- old/foot/config.c   2024-04-02 16:27:54.000000000 +0200
+++ new/foot/config.c   2024-04-11 15:28:17.000000000 +0200
@@ -119,6 +119,7 @@
     [BIND_ACTION_PROMPT_PREV] = "prompt-prev",
     [BIND_ACTION_PROMPT_NEXT] = "prompt-next",
     [BIND_ACTION_UNICODE_INPUT] = "unicode-input",
+    [BIND_ACTION_QUIT] = "quit",
 
     /* Mouse-specific actions */
     [BIND_ACTION_SCROLLBACK_UP_MOUSE] = "scrollback-up-mouse",
@@ -1383,6 +1384,16 @@
             (int *)&conf->cursor.style);
     }
 
+    else if (streq(key, "unfocused-style")) {
+        _Static_assert(sizeof(conf->cursor.unfocused_style) == sizeof(int),
+                       "enum is not 32-bit");
+
+        return value_to_enum(
+            ctx,
+            (const char *[]){"unchanged", "hollow", "none", NULL},
+            (int *)&conf->cursor.unfocused_style);
+    }
+
     else if (streq(key, "blink"))
         return value_to_bool(ctx, &conf->cursor.blink);
 
@@ -3090,6 +3101,7 @@
 
         .cursor = {
             .style = CURSOR_BLOCK,
+            .unfocused_style = CURSOR_UNFOCUSED_HOLLOW,
             .blink = false,
             .color = {
                 .text = 0,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/config.h new/foot/config.h
--- old/foot/config.h   2024-04-02 16:27:54.000000000 +0200
+++ new/foot/config.h   2024-04-11 15:28:17.000000000 +0200
@@ -28,6 +28,11 @@
 };
 
 enum cursor_style { CURSOR_BLOCK, CURSOR_UNDERLINE, CURSOR_BEAM };
+enum cursor_unfocused_style {
+    CURSOR_UNFOCUSED_UNCHANGED,
+    CURSOR_UNFOCUSED_HOLLOW,
+    CURSOR_UNFOCUSED_NONE
+};
 
 enum conf_size_type {CONF_SIZE_PX, CONF_SIZE_CELLS};
 
@@ -256,6 +261,7 @@
 
     struct {
         enum cursor_style style;
+        enum cursor_unfocused_style unfocused_style;
         bool blink;
         struct {
             uint32_t text;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/dcs.c new/foot/dcs.c
--- old/foot/dcs.c      2024-04-02 16:27:54.000000000 +0200
+++ new/foot/dcs.c      2024-04-11 15:28:17.000000000 +0200
@@ -239,7 +239,7 @@
         return;
 
     struct vt *vt = &term->vt;
-    if (vt->dcs.idx > 2)
+    if (vt->dcs.idx >= 2)
         return;
     vt->dcs.data[vt->dcs.idx++] = c;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/doc/foot.ini.5.scd new/foot/doc/foot.ini.5.scd
--- old/foot/doc/foot.ini.5.scd 2024-04-02 16:27:54.000000000 +0200
+++ new/foot/doc/foot.ini.5.scd 2024-04-11 15:28:17.000000000 +0200
@@ -500,6 +500,15 @@
        *beam* or *underline*. Note that this can be overridden by
        applications. Default: _block_.
 
+*unfocused-style*
+       Configures how the cursor is rendered when the terminal window is
+       unfocused. Possible values are:
+       
+       - unchanged: render cursor in exactly the same way as when the
+         window has focus.
+       - hollow: render a block cursor, but hollowed out.
+       - none: do not display any cursor at all.
+
 *blink*
        Boolean. Enables blinking cursor. Note that this can be overridden
        by applications. Default: _no_.
@@ -916,6 +925,9 @@
        
        Default: _Control+Shift+u_.
 
+*quit*
+       Quit foot. Default: _none_.
+
 # SECTION: search-bindings
 
 This section lets you override the default key bindings used in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/foot.ini new/foot/foot.ini
--- old/foot/foot.ini   2024-04-02 16:27:54.000000000 +0200
+++ new/foot/foot.ini   2024-04-11 15:28:17.000000000 +0200
@@ -193,6 +193,7 @@
 # clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
 # primary-paste=Shift+Insert
 # unicode-input=none
+# quit=none
 # scrollback-up-page=Shift+Page_Up
 # scrollback-up-half-page=none
 # scrollback-up-line=none
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/input.c new/foot/input.c
--- old/foot/input.c    2024-04-02 16:27:54.000000000 +0200
+++ new/foot/input.c    2024-04-11 15:28:17.000000000 +0200
@@ -444,6 +444,10 @@
         unicode_mode_activate(seat);
         return true;
 
+    case BIND_ACTION_QUIT:
+        term_shutdown(term);
+        return true;
+
     case BIND_ACTION_SELECT_BEGIN:
         selection_start(
             term, seat->mouse.col, seat->mouse.row, SELECTION_CHAR_WISE, 
false);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/key-binding.h new/foot/key-binding.h
--- old/foot/key-binding.h      2024-04-02 16:27:54.000000000 +0200
+++ new/foot/key-binding.h      2024-04-11 15:28:17.000000000 +0200
@@ -40,6 +40,7 @@
     BIND_ACTION_PROMPT_PREV,
     BIND_ACTION_PROMPT_NEXT,
     BIND_ACTION_UNICODE_INPUT,
+    BIND_ACTION_QUIT,
 
     /* Mouse specific actions - i.e. they require a mouse coordinate */
     BIND_ACTION_SCROLLBACK_UP_MOUSE,
@@ -53,7 +54,7 @@
     BIND_ACTION_SELECT_QUOTE,
     BIND_ACTION_SELECT_ROW,
 
-    BIND_ACTION_KEY_COUNT = BIND_ACTION_UNICODE_INPUT + 1,
+    BIND_ACTION_KEY_COUNT = BIND_ACTION_QUIT + 1,
     BIND_ACTION_COUNT = BIND_ACTION_SELECT_ROW + 1,
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/log.c new/foot/log.c
--- old/foot/log.c      2024-04-02 16:27:54.000000000 +0200
+++ new/foot/log.c      2024-04-11 15:28:17.000000000 +0200
@@ -105,6 +105,9 @@
     if (!do_syslog)
         return;
 
+    if (log_class > log_level)
+        return;
+
     /* Map our log level to syslog's level */
     int level = log_level_map[log_class].syslog_equivalent;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/meson.build new/foot/meson.build
--- old/foot/meson.build        2024-04-02 16:27:54.000000000 +0200
+++ new/foot/meson.build        2024-04-11 15:28:17.000000000 +0200
@@ -1,5 +1,5 @@
 project('foot', 'c',
-        version: '1.17.0',
+        version: '1.17.1',
         license: 'MIT',
         meson_version: '>=0.59.0',
         default_options: [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/render.c new/foot/render.c
--- old/foot/render.c   2024-04-02 16:27:54.000000000 +0200
+++ new/foot/render.c   2024-04-11 15:28:17.000000000 +0200
@@ -305,8 +305,8 @@
 }
 
 static void
-draw_unfocused_block(const struct terminal *term, pixman_image_t *pix,
-                     const pixman_color_t *color, int x, int y, int cell_cols)
+draw_hollow_block(const struct terminal *term, pixman_image_t *pix,
+                  const pixman_color_t *color, int x, int y, int cell_cols)
 {
     const int scale = (int)roundf(term->scale);
     const int width = min(min(scale, term->cell_width), term->cell_height);
@@ -429,10 +429,23 @@
 
     switch (term->cursor_style) {
     case CURSOR_BLOCK:
-        if (unlikely(!term->kbd_focus))
-            draw_unfocused_block(term, pix, &cursor_color, x, y, cols);
+        if (unlikely(!term->kbd_focus)) {
+            switch (term->conf->cursor.unfocused_style) {
+            case CURSOR_UNFOCUSED_UNCHANGED:
+                break;
+
+            case CURSOR_UNFOCUSED_HOLLOW:
+                draw_hollow_block(term, pix, fg, x, y, cols);
+                return;
+
+            case CURSOR_UNFOCUSED_NONE:
+                return;
+            }
+        }
 
-        else if (likely(term->cursor_blink.state == CURSOR_BLINK_ON)) {
+        if (likely(term->cursor_blink.state == CURSOR_BLINK_ON) ||
+            !term->kbd_focus)
+        {
             *fg = text_color;
             pixman_image_fill_rectangles(
                 PIXMAN_OP_SRC, pix, &cursor_color, 1,
@@ -1513,7 +1526,7 @@
             /* Hollow cursor */
             if (start >= 0 && end <= term->cols) {
                 int cols = end - start;
-                draw_unfocused_block(term, buf->pix[0], &cursor_color, x, y, 
cols);
+                draw_hollow_block(term, buf->pix[0], &cursor_color, x, y, 
cols);
             }
 
             term_ime_set_cursor_rect(
@@ -3373,7 +3386,7 @@
 
                     /* TODO: how do we handle a partially hidden rectangle? */
                     if (start >= 0 && end <= visible_cells) {
-                        draw_unfocused_block(
+                        draw_hollow_block(
                             term, buf->pix[0], &fg, x + start * 
term->cell_width, y, end - start);
                     }
                     term_ime_set_cursor_rect(term,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/terminal.c new/foot/terminal.c
--- old/foot/terminal.c 2024-04-02 16:27:54.000000000 +0200
+++ new/foot/terminal.c 2024-04-11 15:28:17.000000000 +0200
@@ -364,8 +364,20 @@
         del_utmp_record(term->conf, term->reaper, term->ptmx);
         fdm_del(fdm, fd);
         term->ptmx = -1;
-        if (!term->conf->hold_at_exit)
+
+        /*
+         * Normally, we do *not* want to shutdown when the PTY is
+         * closed. Instead, we want to wait for the client application
+         * to exit.
+         *
+         * However, when we're using a pre-existing PTY (the --pty
+         * option), there _is_ no client application. That is, foot
+         * does *not* fork+exec anything, and thus the only way to
+         * shutdown is to wait for the PTY to be closed.
+         */
+        if (term->slave < 0 && !term->conf->hold_at_exit) {
             term_shutdown(term);
+        }
     }
 
     return true;
@@ -1527,10 +1539,36 @@
     struct terminal *term = data;
     xassert(!term->shutdown.client_has_terminated);
 
-    LOG_DBG("slave (PID=%u) has not terminated, sending SIGKILL (%d)",
-            term->slave, SIGKILL);
+    LOG_DBG("slave (PID=%u) has not terminated, sending %s (%d)",
+            term->slave,
+            term->shutdown.next_signal == SIGTERM ? "SIGTERM"
+                : term->shutdown.next_signal == SIGKILL ? "SIGKILL"
+                    : "<unknown>",
+            term->shutdown.next_signal);
+
+    kill(-term->slave, term->shutdown.next_signal);
+
+    switch (term->shutdown.next_signal) {
+    case SIGTERM:
+        term->shutdown.next_signal = SIGKILL;
+        break;
+
+    case SIGKILL:
+        /* Disarm. Shouldn't be necessary, as we should be able to
+           shutdown completely after sending SIGKILL, before the next
+           timeout occurs). But lets play it safe... */
+        if (term->shutdown.terminate_timeout_fd >= 0) {
+            timerfd_settime(
+                term->shutdown.terminate_timeout_fd, 0,
+                &(const struct itimerspec){0}, NULL);
+        }
+        break;
+
+    default:
+        BUG("can only handle SIGTERM and SIGKILL");
+        return false;
+    }
 
-    kill(-term->slave, SIGKILL);
     return true;
 }
 
@@ -1571,11 +1609,18 @@
             term->shutdown.client_has_terminated = true;
         } else {
             LOG_DBG("initiating asynchronous terminate of slave; "
-                    "sending SIGTERM to PID=%u", term->slave);
+                    "sending SIGHUP to PID=%u", term->slave);
 
-            kill(-term->slave, SIGTERM);
+            kill(-term->slave, SIGHUP);
 
-            const struct itimerspec timeout = {.it_value = {.tv_sec = 60}};
+            /*
+             * Set up a timer, with an interval - on the first timeout
+             * we'll send SIGTERM. If the the client application still
+             * isn't terminating, we'll wait an additional interval,
+             * and then send SIGKILL.
+             */
+            const struct itimerspec timeout = {.it_value = {.tv_sec = 30},
+                                               .it_interval = {.tv_sec = 30}};
 
             int timeout_fd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | 
TFD_NONBLOCK);
             if (timeout_fd < 0 ||
@@ -1590,6 +1635,7 @@
 
             xassert(term->shutdown.terminate_timeout_fd < 0);
             term->shutdown.terminate_timeout_fd = timeout_fd;
+            term->shutdown.next_signal = SIGTERM;
         }
     }
 
@@ -1772,9 +1818,9 @@
             exit_status = term->shutdown.exit_status;
         else {
             LOG_DBG("initiating blocking terminate of slave; "
-                    "sending SIGTERM to PID=%u", term->slave);
+                    "sending SIGHUP to PID=%u", term->slave);
 
-            kill(-term->slave, SIGTERM);
+            kill(-term->slave, SIGHUP);
 
             /*
              * we've closed the ptxm, and sent SIGTERM to the client
@@ -1795,7 +1841,12 @@
             struct sigaction action = {.sa_handler = &sig_alarm};
             sigemptyset(&action.sa_mask);
             sigaction(SIGALRM, &action, NULL);
-            alarm(60);
+
+            /* Wait, then send SIGTERM, wait again, then send SIGKILL */
+            int next_signal = SIGTERM;
+
+            alarm_raised = 0;
+            alarm(30);
 
             while (true) {
                 int r = waitpid(term->slave, &exit_status, 0);
@@ -1807,11 +1858,16 @@
                     xassert(errno == EINTR);
 
                     if (alarm_raised) {
-                        LOG_DBG(
-                            "slave (PID=%u) has not terminate yet, "
-                            "sending: SIGKILL (%d)", term->slave, SIGKILL);
+                        LOG_DBG("slave (PID=%u) has not terminated yet, "
+                                "sending: %s (%d)", term->slave,
+                                next_signal == SIGTERM ? "SIGTERM" : "SIGKILL",
+                                next_signal);
+
+                        kill(-term->slave, next_signal);
+                        next_signal = SIGKILL;
 
-                        kill(-term->slave, SIGKILL);
+                        alarm_raised = 0;
+                        alarm(30);
                     }
                 }
             }
@@ -2125,7 +2181,7 @@
 bool
 term_preferred_buffer_scale(const struct terminal *term)
 {
-    return term->wl->has_wl_compositor_v6;
+    return term->wl->has_wl_compositor_v6 && 
term->window->preferred_buffer_scale > 0;
 }
 
 bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/terminal.h new/foot/terminal.h
--- old/foot/terminal.h 2024-04-02 16:27:54.000000000 +0200
+++ new/foot/terminal.h 2024-04-11 15:28:17.000000000 +0200
@@ -723,6 +723,7 @@
         bool client_has_terminated;
         int terminate_timeout_fd;
         int exit_status;
+        int next_signal;
 
         void (*cb)(void *data, int exit_code);
         void *cb_data;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/tests/test-config.c new/foot/tests/test-config.c
--- old/foot/tests/test-config.c        2024-04-02 16:27:54.000000000 +0200
+++ new/foot/tests/test-config.c        2024-04-11 15:28:17.000000000 +0200
@@ -635,6 +635,12 @@
         (const char *[]){"block", "beam", "underline"},
         (int []){CURSOR_BLOCK, CURSOR_BEAM, CURSOR_UNDERLINE},
         (int *)&conf.cursor.style);
+    test_enum(
+        &ctx, &parse_section_cursor, "unfocused-style",
+        3,
+        (const char *[]){"unchanged", "hollow", "none"},
+        (int []){CURSOR_UNFOCUSED_UNCHANGED, CURSOR_UNFOCUSED_HOLLOW, 
CURSOR_UNFOCUSED_NONE},
+        (int *)&conf.cursor.unfocused_style);
     test_boolean(&ctx, &parse_section_cursor, "blink", &conf.cursor.blink);
     test_pt_or_px(&ctx, &parse_section_cursor, "beam-thickness",
                   &conf.cursor.beam_thickness);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/themes/dracula-iterm 
new/foot/themes/dracula-iterm
--- old/foot/themes/dracula-iterm       1970-01-01 01:00:00.000000000 +0100
+++ new/foot/themes/dracula-iterm       2024-04-11 15:28:17.000000000 +0200
@@ -0,0 +1,25 @@
+# -*- conf -*-
+# Dracula iTerm2 variant
+
+[cursor]
+color=ffffff bbbbbb
+
+[colors]
+foreground=f8f8f2
+background=1e1f29
+regular0=000000  # black
+regular1=ff5555  # red
+regular2=50fa7b  # green
+regular3=f1fa8c  # yellow
+regular4=bd93f9  # blue
+regular5=ff79c6  # magenta
+regular6=8be9fd  # cyan
+regular7=bbbbbb  # white
+bright0=555555   # bright black
+bright1=ff5555   # bright red
+bright2=50fa7b   # bright green
+bright3=f1fa8c   # bright yellow
+bright4=bd93f9   # bright blue
+bright5=ff79c6   # bright magenta
+bright6=8be9fd   # bright cyan
+bright7=ffffff   # bright white
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/themes/noirblaze new/foot/themes/noirblaze
--- old/foot/themes/noirblaze   1970-01-01 01:00:00.000000000 +0100
+++ new/foot/themes/noirblaze   2024-04-11 15:28:17.000000000 +0200
@@ -0,0 +1,31 @@
+# -*- conf -*-
+# noirblaze-kitty
+# https://github.com/n1ghtmare/noirblaze-kitty
+
+
+[cursor]
+color=121212 ff0088
+
+[colors]
+foreground=d5d5d5
+background=121212
+
+# selection-foreground=121212
+# selection-background=b0b0b0
+
+regular0=121212  # black
+regular1=ff0088  # red
+regular2=00ff77  # green
+regular3=ffffff  # yellow
+regular4=b0b0b0  # blue
+regular5=7a7a7a  # magenta
+regular6=787878  # cyan
+regular7=d5d5d5  # white
+bright0=737373   # bright black
+bright1=FD319E   # bright red
+bright2=FD319E   # bright green
+bright3=FDFDFD   # bright yellow
+bright4=BEBEBE   # bright blue
+bright5=939393   # bright magenta
+bright6=919191   # bright cyan
+bright7=f5f5f5   # bright white
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/themes/xterm new/foot/themes/xterm
--- old/foot/themes/xterm       1970-01-01 01:00:00.000000000 +0100
+++ new/foot/themes/xterm       2024-04-11 15:28:17.000000000 +0200
@@ -0,0 +1,22 @@
+# -*- conf -*-
+# The default palette of xterm.
+
+[colors]
+foreground=e5e5e5
+background=000000
+regular0=000000 # black
+regular1=cd0000 # red
+regular2=00cd00 # green
+regular3=cdcd00 # yellow
+regular4=0000ee # blue
+regular5=cd00cd # magenta
+regular6=00cdcd # cyan
+regular7=e5e5e5 # white
+bright0=7f7f7f  # bright black
+bright1=ff0000  # bright red
+bright2=00ff00  # bright green
+bright3=ffff00  # bright yellow
+bright4=5c5cff  # bright blue
+bright5=ff00ff  # bright magenta
+bright6=00ffff  # bright cyan
+bright7=ffffff  # bright white
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/foot/wayland.c new/foot/wayland.c
--- old/foot/wayland.c  2024-04-02 16:27:54.000000000 +0200
+++ new/foot/wayland.c  2024-04-11 15:28:17.000000000 +0200
@@ -1738,10 +1738,6 @@
             win->fractional_scale, &fractional_scale_listener, win);
     }
 
-    if (wayl->has_wl_compositor_v6) {
-        win->preferred_buffer_scale = 1;
-    }
-
     win->xdg_surface = xdg_wm_base_get_xdg_surface(wayl->shell, 
win->surface.surf);
     xdg_surface_add_listener(win->xdg_surface, &xdg_surface_listener, win);
 

Reply via email to