Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rxvt-unicode for openSUSE:Factory 
checked in at 2023-10-11 23:56:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rxvt-unicode (Old)
 and      /work/SRC/openSUSE:Factory/.rxvt-unicode.new.1807 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rxvt-unicode"

Wed Oct 11 23:56:08 2023 rev:44 rq:1116880 version:9.31

Changes:
--------
--- /work/SRC/openSUSE:Factory/rxvt-unicode/rxvt-unicode.changes        
2022-10-03 20:08:17.665392315 +0200
+++ /work/SRC/openSUSE:Factory/.rxvt-unicode.new.1807/rxvt-unicode.changes      
2023-10-12 11:57:47.194980866 +0200
@@ -1,0 +2,34 @@
+Wed Oct 11 09:27:29 UTC 2023 - Marcus 'darix' Rückert <mrueck...@suse.de>
+
+- Update to version 9.31: (CVE-2022-4170 boo#1206069)
+  - implement a fix for CVE-2022-4170 (reported and analyzed by
+    David Leadbeater). While present in version 9.30, it should not
+    be exploitable. It is exploitable in versions 9.25 and 9.26, at
+    least, and allows anybody controlling output to the terminal to
+    execute arbitrary code in the urxvt process.
+  - the background extension no longer requires off focus fading
+    support to be compiled in.
+  - the confirm-paste extension now offers a choice betwene pasting
+    the original or a sanitized version, and also frees up memory
+    used to store the paste text immediately.
+  - fix compiling without frills.
+  - fix rewrapMode: never.
+  - fix regression that caused urxvt to no longer emit responses to
+    OSC color queries other than OSC 4 ones.
+  - fix regression that caused urxvt to no longer process OSC 705.
+  - restore CENTURY to be 1900 to "improve" year parsing in urclock
+    (or at least go back to the old interpretation) (based on an
+    analysis by Tommy Pettersson).
+  - exec_async (used e.g. by the matcher extension to spawn
+    processes) now sets the URXVT_EXT_WINDOWID variable to the
+    window id of the terminal.
+  - implement -fps option/refreshRate resource to change the
+    default 60 Hz maximum refresh limiter. I always wanted an fps
+    option, but had to wait for a user requesting it.
+  - new clickthrough extension.
+  - perl now also requires Xext.
+  - X region and shape extension functionality has been exposed to
+    perl extensions.
+  - RENDER extension no longer depends on ENABLE_XIM_ONTHESPOT.
+
+-------------------------------------------------------------------

Old:
----
  rxvt-unicode-9.30.tar.bz2
  rxvt-unicode-9.30.tar.bz2.sig

New:
----
  rxvt-unicode-9.31.tar.bz2
  rxvt-unicode-9.31.tar.bz2.sig

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

Other differences:
------------------
++++++ rxvt-unicode.spec ++++++
--- /var/tmp/diff_new_pack.wxVTLP/_old  2023-10-12 11:57:48.867041122 +0200
+++ /var/tmp/diff_new_pack.wxVTLP/_new  2023-10-12 11:57:48.867041122 +0200
@@ -22,7 +22,7 @@
 %define with_265color_terminfo_files 1
 %endif
 Name:           rxvt-unicode
-Version:        9.30
+Version:        9.31
 Release:        0
 #
 Summary:        Rxvt X Terminal with Unicode Support
@@ -53,6 +53,7 @@
 BuildRequires:  pkgconfig(libptytty)
 BuildRequires:  pkgconfig(libstartup-notification-1.0)
 BuildRequires:  pkgconfig(x11)
+BuildRequires:  pkgconfig(xext)
 BuildRequires:  pkgconfig(xft)
 BuildRequires:  pkgconfig(xrender)
 BuildRequires:  pkgconfig(xt)
@@ -162,6 +163,7 @@
 %{_libdir}/urxvt/perl/example-refresh-hooks
 %{_libdir}/urxvt/perl/selection
 %{_libdir}/urxvt/perl/block-graphics-to-ascii
+%{_libdir}/urxvt/perl/clickthrough
 %{_libdir}/urxvt/perl/matcher
 %{_libdir}/urxvt/perl/option-popup
 %{_libdir}/urxvt/perl/searchable-scrollback

++++++ rxvt-unicode-9.30.tar.bz2 -> rxvt-unicode-9.31.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/Changes 
new/rxvt-unicode-9.31/Changes
--- old/rxvt-unicode-9.30/Changes       2021-11-27 21:07:16.000000000 +0100
+++ new/rxvt-unicode-9.31/Changes       2023-01-02 20:46:43.000000000 +0100
@@ -37,12 +37,43 @@
 TODO: c&c perl socket via daemon-ext mechanism
 TODO: simplify extension metainfo cache, cache on disk
 TODO: URxvt::Ext::Name installs urxvt ext name and provides pod/manpage for 
URxvt::Ext::Name
-TODO: üpixel droppins idenrasm,ll,scrollup
+TODO: pixel droppins idenrasm,ll,scrollup
 TODO: cuu/cud and probably others default to 1 when arg is 0, not just 
missing, in xterm/vt102, but not in rxvt
 TODO: clean up the resource vs. long option mess, especially in the manpage.
 TODO: think about daemon delaying urxvt client exit.
 IDEA: use harfbuzz to render combining sequences, maybe also complex scripts
-TODO: https://github.com/bbidulock/icewm/issues/492 urxvt wrongfully(?) needa 
configurenotify after mapwindow? also, black border?
+TODO: rclock horribly time-biased
+TODO: rclock iso date mode?
+TODO: printf "\e[4:3m" - "undercurl" - should probbaly be interpreted as 
underline, rather than \e[43m
+
+9.31 Mon 02 Jan 2023 18:13:16 CET
+       - implement a fix for CVE-2022-4170 (reported and analyzed by David 
Leadbeater).
+          While present in version 9.30, it should not be exploitable. It is 
exploitable
+          in versions 9.25 and 9.26, at least, and allows anybody controlling 
output to
+          the terminal to execute arbitrary code in the urxvt process.
+       - the background extension no longer requires off focus fading support
+          to be compiled in.
+        - the confirm-paste extension now offers a choice betwene pasting the 
original
+          or a sanitized version, and also frees up memory used to store the 
paste text
+          immediately.
+        - fix compiling without frills.
+        - fix rewrapMode: never.
+        - fix regression that caused urxvt to no longer emit responses
+          to OSC color queries other than OSC 4 ones.
+        - fix regression that caused urxvt to no longer process OSC 705.
+        - restore CENTURY to be 1900 to "improve" year parsing in urclock (or 
at
+          least go back to the old interpretation) (based on an analysis
+          by Tommy Pettersson).
+        - exec_async (used e.g. by the matcher extension to spawn processes) 
now
+          sets the URXVT_EXT_WINDOWID variable to the window id of the 
terminal.
+        - implement -fps option/refreshRate resource to change the default 60 
Hz
+          maximum refresh limiter. I always wanted an fps option, but had to
+          wait for a user requesting it.
+        - new clickthrough extension.
+        - perl now also requires Xext.
+        - X region and shape extension functionality has been exposed to perl
+          extensions.
+        - RENDER extension no longer depends on ENABLE_XIM_ONTHESPOT.
 
 9.30 Sat 27 Nov 2021 21:07:09 CET
        - the background extension did not initialise properly when 
automatically
@@ -234,6 +265,7 @@
        - a key combination bound to 'matcher:select' can now be used
          to cycle through the matches in matcher.
         - change perl integer accessors (->width et al.) into mutators.
+        - this version has ben verified to work with perl 5.8.3.
 
 9.21 Wed Dec 31 14:50:03 CET 2014
        - the "moa redraw 8-bit british vintage colour management" release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/MANIFEST 
new/rxvt-unicode-9.31/MANIFEST
--- old/rxvt-unicode-9.30/MANIFEST      2021-11-14 18:55:24.000000000 +0100
+++ new/rxvt-unicode-9.31/MANIFEST      2023-01-02 18:15:31.000000000 +0100
@@ -144,6 +144,7 @@
 src/perl/background
 src/perl/bell-command
 src/perl/block-graphics-to-ascii
+src/perl/clickthrough
 src/perl/clipboard-osc
 src/perl/confirm-paste
 src/perl/digital-clock
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/README.configure 
new/rxvt-unicode-9.31/README.configure
--- old/rxvt-unicode-9.30/README.configure      2021-11-22 18:14:02.000000000 
+0100
+++ new/rxvt-unicode-9.31/README.configure      2023-01-02 23:42:05.000000000 
+0100
@@ -33,9 +33,9 @@
         sets). These codeset tables are used for driving X11 core fonts,
         they are not required for Xft fonts, although having them compiled
         in lets rxvt-unicode choose replacement fonts more intelligently.
-        Compiling them in will make your binary bigger (all of together cost
-        about 700kB), but it doesn't increase memory usage unless you use a
-        font requiring one of these encodings.
+        Compiling them in will make your binary bigger (all of them together
+        cost about 700kB), but it doesn't increase memory usage unless you
+        use a font requiring one of these encodings.
 
    all             all available codeset groups 
    zh              common chinese encodings 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/aclocal.m4 
new/rxvt-unicode-9.31/aclocal.m4
--- old/rxvt-unicode-9.30/aclocal.m4    2021-07-23 22:57:20.000000000 +0200
+++ new/rxvt-unicode-9.31/aclocal.m4    2023-01-02 18:13:49.000000000 +0100
@@ -1,7 +1,7 @@
 dnl maybe import pkg.m4 and use PKG_CHECK_MODULES in place of this macro
 AC_DEFUN([RXVT_CHECK_MODULES],
 [
-  AC_MSG_CHECKING(for $2)
+  AC_MSG_CHECKING([for $2 (using pkg-config)])
   if test $PKG_CONFIG != no && $PKG_CONFIG --exists $2; then
     $1[]_CFLAGS="`$PKG_CONFIG --cflags $2`"
     $1[]_LIBS="`$PKG_CONFIG --libs $2`"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/configure 
new/rxvt-unicode-9.31/configure
--- old/rxvt-unicode-9.30/configure     2021-11-27 21:07:00.000000000 +0100
+++ new/rxvt-unicode-9.31/configure     2023-01-02 23:40:04.000000000 +0100
@@ -6846,8 +6846,8 @@
 
 
 
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libptytty" >&5
-printf %s "checking for libptytty... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libptytty (using 
pkg-config)" >&5
+printf %s "checking for libptytty (using pkg-config)... " >&6; }
   if test $PKG_CONFIG != no && $PKG_CONFIG --exists libptytty; then
     PTYTTY_CFLAGS="`$PKG_CONFIG --cflags libptytty`"
     PTYTTY_LIBS="`$PKG_CONFIG --libs libptytty`"
@@ -6874,8 +6874,8 @@
 
 if test x$support_pixbuf = xyes; then
 
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdk-pixbuf-2.0" 
>&5
-printf %s "checking for gdk-pixbuf-2.0... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdk-pixbuf-2.0 
(using pkg-config)" >&5
+printf %s "checking for gdk-pixbuf-2.0 (using pkg-config)... " >&6; }
   if test $PKG_CONFIG != no && $PKG_CONFIG --exists gdk-pixbuf-2.0; then
     PIXBUF_CFLAGS="`$PKG_CONFIG --cflags gdk-pixbuf-2.0`"
     PIXBUF_LIBS="`$PKG_CONFIG --libs gdk-pixbuf-2.0`"
@@ -6904,8 +6904,8 @@
 
 if test x$support_startup_notification = xyes; then
 
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 
libstartup-notification-1.0" >&5
-printf %s "checking for libstartup-notification-1.0... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 
libstartup-notification-1.0 (using pkg-config)" >&5
+printf %s "checking for libstartup-notification-1.0 (using pkg-config)... " 
>&6; }
   if test $PKG_CONFIG != no && $PKG_CONFIG --exists 
libstartup-notification-1.0; then
     STARTUP_NOTIFICATION_CFLAGS="`$PKG_CONFIG --cflags 
libstartup-notification-1.0`"
     STARTUP_NOTIFICATION_LIBS="`$PKG_CONFIG --libs 
libstartup-notification-1.0`"
@@ -6930,8 +6930,8 @@
 
 if test x$support_frills = xyes; then
 
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xmu" >&5
-printf %s "checking for xmu... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xmu (using 
pkg-config)" >&5
+printf %s "checking for xmu (using pkg-config)... " >&6; }
   if test $PKG_CONFIG != no && $PKG_CONFIG --exists xmu; then
     XMU_CFLAGS="`$PKG_CONFIG --cflags xmu`"
     XMU_LIBS="`$PKG_CONFIG --libs xmu`"
@@ -7465,8 +7465,8 @@
 if test x$support_xft = xyes || test x$support_image = xyes; then
   rxvt_have_xrender=no
 
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xrender" >&5
-printf %s "checking for xrender... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xrender (using 
pkg-config)" >&5
+printf %s "checking for xrender (using pkg-config)... " >&6; }
   if test $PKG_CONFIG != no && $PKG_CONFIG --exists xrender; then
     XRENDER_CFLAGS="`$PKG_CONFIG --cflags xrender`"
     XRENDER_LIBS="`$PKG_CONFIG --libs xrender`"
@@ -7508,8 +7508,8 @@
 
 if test x$support_xft = xyes && test x$rxvt_have_xrender = xyes; then
 
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fontconfig xft" 
>&5
-printf %s "checking for fontconfig xft... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fontconfig xft 
(using pkg-config)" >&5
+printf %s "checking for fontconfig xft (using pkg-config)... " >&6; }
   if test $PKG_CONFIG != no && $PKG_CONFIG --exists fontconfig xft; then
     XFT_CFLAGS="`$PKG_CONFIG --cflags fontconfig xft`"
     XFT_LIBS="`$PKG_CONFIG --libs fontconfig xft`"
@@ -7832,6 +7832,28 @@
 
 
 
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xext (using 
pkg-config)" >&5
+printf %s "checking for xext (using pkg-config)... " >&6; }
+  if test $PKG_CONFIG != no && $PKG_CONFIG --exists xext; then
+    XEXT_CFLAGS="`$PKG_CONFIG --cflags xext`"
+    XEXT_LIBS="`$PKG_CONFIG --libs xext`"
+
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+printf "%s\n" "ok" >&6; }
+    :
+  else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+    as_fn_error $? "unable to find xext, required for perl" "$LINENO" 5
+
+  fi
+
+
+  X_LIBS="$XEXT_LIBS $X_LIBS"
+  CPPFLAGS="$CPPFLAGS $XEXT_CFLAGS"
+
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $PERL 
suitability" >&5
 printf %s "checking for $PERL suitability... " >&6; }
   if $PERL -MExtUtils::Embed -e "use v5.8" >/dev/null 2>/dev/null; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/configure.ac 
new/rxvt-unicode-9.31/configure.ac
--- old/rxvt-unicode-9.30/configure.ac  2021-11-27 21:07:00.000000000 +0100
+++ new/rxvt-unicode-9.31/configure.ac  2023-01-02 18:11:06.000000000 +0100
@@ -714,6 +714,13 @@
 if test x$support_perl = xyes; then
   AC_PATH_PROG(PERL, perl5, perl)
 
+  RXVT_CHECK_MODULES([XEXT], [xext], [:], [
+    AC_MSG_ERROR([unable to find xext, required for perl])
+  ])
+
+  X_LIBS="$XEXT_LIBS $X_LIBS"
+  CPPFLAGS="$CPPFLAGS $XEXT_CFLAGS"
+
   AC_MSG_CHECKING(for $PERL suitability)
   if $PERL -MExtUtils::Embed -e "use v5.8" >/dev/null 2>/dev/null; then
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/doc/Makefile.in 
new/rxvt-unicode-9.31/doc/Makefile.in
--- old/rxvt-unicode-9.30/doc/Makefile.in       2021-11-14 18:56:05.000000000 
+0100
+++ new/rxvt-unicode-9.31/doc/Makefile.in       2022-12-29 02:31:09.000000000 
+0100
@@ -83,7 +83,7 @@
        rm -f $(srcdir)/etc/rxvt-unicode.termcap
 
 clean:
-       rm -f rxvt.1.man rxvt.7.man rxvtc.1.man rxvtd.1.man
+       rm -f rxvt.1.man rxvt.7.man rxvtc.1.man rxvtd.1.man rclock.1.man
 
 distclean: clean
        rm -f Makefile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/doc/rclock.1.man.in 
new/rxvt-unicode-9.31/doc/rclock.1.man.in
--- old/rxvt-unicode-9.30/doc/rclock.1.man.in   2021-11-22 16:21:14.000000000 
+0100
+++ new/rxvt-unicode-9.31/doc/rclock.1.man.in   2023-01-02 23:42:05.000000000 
+0100
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "@@RXVT_NAME@@ 1"
-.TH @@RXVT_NAME@@ 1 "2021-11-22" "@@RXVT_VERSION@@" "RXVT-UNICODE"
+.TH @@RXVT_NAME@@ 1 "2023-01-02" "@@RXVT_VERSION@@" "RXVT-UNICODE"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/doc/rxvt-tabbed 
new/rxvt-unicode-9.31/doc/rxvt-tabbed
--- old/rxvt-unicode-9.30/doc/rxvt-tabbed       2014-05-22 20:53:16.000000000 
+0200
+++ new/rxvt-unicode-9.31/doc/rxvt-tabbed       2021-11-30 00:33:14.000000000 
+0100
@@ -133,7 +133,7 @@
 $window->set_default_size (700, 400);
 $window->show_all;
 
-# ugly, but gdk_window_filters are ot available in perl
+# ugly, but gdk_window_filters are not available in perl
 
 Gtk2::Gdk::Event->handler_set (sub {
    my ($event) = @_;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/doc/rxvt.1.man.in 
new/rxvt-unicode-9.31/doc/rxvt.1.man.in
--- old/rxvt-unicode-9.30/doc/rxvt.1.man.in     2021-11-22 18:14:01.000000000 
+0100
+++ new/rxvt-unicode-9.31/doc/rxvt.1.man.in     2023-01-02 23:42:05.000000000 
+0100
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "@@RXVT_NAME@@ 1"
-.TH @@RXVT_NAME@@ 1 "2021-11-22" "@@RXVT_VERSION@@" "RXVT-UNICODE"
+.TH @@RXVT_NAME@@ 1 "2023-01-02" "@@RXVT_VERSION@@" "RXVT-UNICODE"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -253,6 +253,10 @@
 .IP "\fB\-ss\fR|\fB+ss\fR" 4
 .IX Item "-ss|+ss"
 Turn on/off skip scrolling (allow multiple screens per refresh); resource 
\fBskipScroll\fR.
+.IP "\fB\-fps\fR \fInumber\fR" 4
+.IX Item "-fps number"
+Compile \fIfrills\fR: Set the refresh interval (in frames per second or
+negative seconds); resource \fBrefreshRate\fR.
 .IP "\fB\-fade\fR \fInumber\fR" 4
 .IX Item "-fade number"
 Fade the text by the given percentage when focus is lost. Small values
@@ -754,6 +758,17 @@
 \&\fBFalse\fR: specify that everything is to be displayed, even
 if the refresh is too fast for the human eye to read anything (or the
 monitor to display anything); option \fB+ss\fR.
+.IP "\fBrefreshRate:\fR \fInumber\fR" 4
+.IX Item "refreshRate: number"
+Compile \fIfrills\fR: When positive, sets the maximum refreshes per second
+(the default is \f(CW60\fR). When zero or negative, sets the minimum interval
+between refreshes, negated. That is, positive numbers limit the number
+of refreshes per second to that number, similar to a fps limiter in
+games. A negative number gets negated and directly sets the minimum
+interval between refreshes, that is, \f(CW10\fR and \f(CW\*(C`\-0.1\*(C'\fR 
both specify
+the same refresh interval (likewise \f(CW50\fR and \f(CW0.02\fR). Finally, zero
+makes @@RXVT_NAME@@ refresh as fast as possible. Fractional values are
+supported; option \fB\-fps\fR.
 .IP "\fBfading:\fR \fInumber\fR" 4
 .IX Item "fading: number"
 Fade the text by the given percentage when focus is lost; option \fB\-fade\fR.
@@ -1329,7 +1344,7 @@
 .Sp
 To prohibit autoloading of extensions, you can prefix them with 
\f(CW\*(C`/\*(C'\fR,
 which will make urxvt refuse to automatically load them (this can be
-overriden, however, by specifying the extension name again without a
+overridden, however, by specifying the extension name again without a
 prefix, though). This does not prohibit extensions themselves loading
 other extensions. For example, \f(CW\*(C`default,/background\*(C'\fR will keep 
the
 \&\f(CW\*(C`background\*(C'\fR extension from being loaded when a background 
\s-1OSC\s0 sequence
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/doc/rxvt.1.pod 
new/rxvt-unicode-9.31/doc/rxvt.1.pod
--- old/rxvt-unicode-9.30/doc/rxvt.1.pod        2021-11-22 18:01:34.000000000 
+0100
+++ new/rxvt-unicode-9.31/doc/rxvt.1.pod        2022-12-23 22:48:38.000000000 
+0100
@@ -130,6 +130,11 @@
 
 Turn on/off skip scrolling (allow multiple screens per refresh); resource 
B<skipScroll>.
 
+=item B<-fps> I<number>
+
+Compile I<frills>: Set the refresh interval (in frames per second or
+negative seconds); resource B<refreshRate>.
+
 =item B<-fade> I<number>
 
 Fade the text by the given percentage when focus is lost. Small values
@@ -699,6 +704,18 @@
 if the refresh is too fast for the human eye to read anything (or the
 monitor to display anything); option B<+ss>.
 
+=item B<refreshRate:> I<number>
+
+Compile I<frills>: When positive, sets the maximum refreshes per second
+(the default is C<60>). When zero or negative, sets the minimum interval
+between refreshes, negated. That is, positive numbers limit the number
+of refreshes per second to that number, similar to a fps limiter in
+games. A negative number gets negated and directly sets the minimum
+interval between refreshes, that is, C<10> and C<-0.1> both specify
+the same refresh interval (likewise C<50> and C<0.02>). Finally, zero
+makes @@RXVT_NAME@@ refresh as fast as possible. Fractional values are
+supported; option B<-fps>.
+
 =item B<fading:> I<number>
 
 Fade the text by the given percentage when focus is lost; option B<-fade>.
@@ -1314,7 +1331,7 @@
 
 To prohibit autoloading of extensions, you can prefix them with C</>,
 which will make urxvt refuse to automatically load them (this can be
-overriden, however, by specifying the extension name again without a
+overridden, however, by specifying the extension name again without a
 prefix, though). This does not prohibit extensions themselves loading
 other extensions. For example, C<default,/background> will keep the
 C<background> extension from being loaded when a background OSC sequence
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/doc/rxvt.7.man.in 
new/rxvt-unicode-9.31/doc/rxvt.7.man.in
--- old/rxvt-unicode-9.30/doc/rxvt.7.man.in     2021-11-22 18:14:02.000000000 
+0100
+++ new/rxvt-unicode-9.31/doc/rxvt.7.man.in     2023-01-02 23:42:05.000000000 
+0100
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "@@RXVT_NAME@@ 7"
-.TH @@RXVT_NAME@@ 7 "2021-11-22" "@@RXVT_VERSION@@" "RXVT-UNICODE"
+.TH @@RXVT_NAME@@ 7 "2023-01-02" "@@RXVT_VERSION@@" "RXVT-UNICODE"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -1762,12 +1762,11 @@
 .IX Item "ESC [ Ps K"
 Erase in Line (\s-1EL\s0)
 .TS
-l l l l .
+l l .
 Ps = 0 Clear to Right (default)
 Ps = 1 Clear to Left
 Ps = 2 Clear All
-Ps = 3 Like Ps = 0, but is ignored when wrapped
-                       (@@RXVT_NAME@@ extension)
+Ps = 3 Like Ps = 0, but is ignored when wrapped (@@RXVT_NAME@@ extension)
 .TE
 .ie n .IP "\fB\f(CB""ESC [ Ps L""\fB\fR" 4
 .el .IP "\fB\f(CBESC [ Ps L\fB\fR" 4
@@ -2575,8 +2574,9 @@
 codeset tables are used for driving X11 core fonts, they are not required
 for Xft fonts, although having them compiled in lets rxvt-unicode choose
 replacement fonts more intelligently. Compiling them in will make your
-binary bigger (all of together cost about 700kB), but it doesn't increase
-memory usage unless you use a font requiring one of these encodings.
+binary bigger (all of them together cost about 700kB), but it doesn't
+increase memory usage unless you use a font requiring one of these
+encodings.
 .TS
 l l .
 all    all available codeset groups
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/doc/rxvt.7.pod 
new/rxvt-unicode-9.31/doc/rxvt.7.pod
--- old/rxvt-unicode-9.30/doc/rxvt.7.pod        2021-11-22 00:49:03.000000000 
+0100
+++ new/rxvt-unicode-9.31/doc/rxvt.7.pod        2023-01-02 20:25:40.000000000 
+0100
@@ -1492,8 +1492,7 @@
        B<< C<Ps = 0> >>        Clear to Right (default)
        B<< C<Ps = 1> >>        Clear to Left
        B<< C<Ps = 2> >>        Clear All
-       B<< C<Ps = 3> >>        Like Ps = 0, but is ignored when wrapped
-                               (@@RXVT_NAME@@ extension)
+       B<< C<Ps = 3> >>        Like Ps = 0, but is ignored when wrapped 
(@@RXVT_NAME@@ extension)
 
 =end table
 
@@ -2385,8 +2384,9 @@
 codeset tables are used for driving X11 core fonts, they are not required
 for Xft fonts, although having them compiled in lets rxvt-unicode choose
 replacement fonts more intelligently. Compiling them in will make your
-binary bigger (all of together cost about 700kB), but it doesn't increase
-memory usage unless you use a font requiring one of these encodings.
+binary bigger (all of them together cost about 700kB), but it doesn't
+increase memory usage unless you use a font requiring one of these
+encodings.
 
 =begin table
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/doc/rxvtc.1.man.in 
new/rxvt-unicode-9.31/doc/rxvtc.1.man.in
--- old/rxvt-unicode-9.30/doc/rxvtc.1.man.in    2021-11-22 18:14:02.000000000 
+0100
+++ new/rxvt-unicode-9.31/doc/rxvtc.1.man.in    2023-01-02 23:42:05.000000000 
+0100
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "@@RXVT_NAME@@ 1"
-.TH @@RXVT_NAME@@ 1 "2021-11-22" "@@RXVT_VERSION@@" "RXVT-UNICODE"
+.TH @@RXVT_NAME@@ 1 "2023-01-02" "@@RXVT_VERSION@@" "RXVT-UNICODE"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/doc/rxvtd.1.man.in 
new/rxvt-unicode-9.31/doc/rxvtd.1.man.in
--- old/rxvt-unicode-9.30/doc/rxvtd.1.man.in    2021-11-22 18:14:02.000000000 
+0100
+++ new/rxvt-unicode-9.31/doc/rxvtd.1.man.in    2023-01-02 23:42:05.000000000 
+0100
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "@@RXVT_NAME@@ 1"
-.TH @@RXVT_NAME@@ 1 "2021-11-22" "@@RXVT_VERSION@@" "RXVT-UNICODE"
+.TH @@RXVT_NAME@@ 1 "2023-01-02" "@@RXVT_VERSION@@" "RXVT-UNICODE"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/libev/ev.c 
new/rxvt-unicode-9.31/libev/ev.c
--- old/rxvt-unicode-9.30/libev/ev.c    2021-05-19 08:15:12.000000000 +0200
+++ new/rxvt-unicode-9.31/libev/ev.c    2022-08-10 18:49:41.000000000 +0200
@@ -37,6 +37,10 @@
  * either the BSD or the GPL.
  */
 
+#pragma clang diagnostic ignored "-Wunused-value"
+#pragma clang diagnostic ignored "-Wcomment"
+#pragma clang diagnostic ignored "-Wextern-initializer"
+
 /* this big block deduces configuration from config.h */
 #ifndef EV_STANDALONE
 # ifdef EV_CONFIG_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/libev/ev_iouring.c 
new/rxvt-unicode-9.31/libev/ev_iouring.c
--- old/rxvt-unicode-9.30/libev/ev_iouring.c    2020-10-24 22:51:34.000000000 
+0200
+++ new/rxvt-unicode-9.31/libev/ev_iouring.c    2022-08-10 18:47:27.000000000 
+0200
@@ -348,7 +348,7 @@
 
 /* called for full and partial cleanup */
 ecb_cold
-static int
+static void
 iouring_internal_destroy (EV_P)
 {
   close (iouring_tfd);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/command.C 
new/rxvt-unicode-9.31/src/command.C
--- old/rxvt-unicode-9.30/src/command.C 2021-11-22 00:34:29.000000000 +0100
+++ new/rxvt-unicode-9.31/src/command.C 2022-12-23 22:36:57.000000000 +0100
@@ -1018,7 +1018,7 @@
 rxvt_term::refresh_check ()
 {
   if (want_refresh && !flush_ev.is_active ())
-    flush_ev.start (1. / 60.); // refresh at max. 60 Hz normally
+    flush_ev.start ();
 
   display->flush ();
 }
@@ -3336,15 +3336,22 @@
 
   /* we allow one of the 6 closest neighbouring colours */
   /* to replace the current color, if they not used recently */
-  static const signed char dxyz[][3] = {
+  #if 0
+  static const unsigned char dxyz[][3] = {
     0, 0, 0,
     0, 0, 4,
-    0, 4, 0,
-    4, 0, 0,
     0, 4, 4,
     4, 4, 0,
     4, 0, 4,
+    0, 4, 0,
+    4, 0, 0,
+  };
+  #else
+  // silly compressed verlapping triplets version of above
+  static const unsigned char dxyz[] = {
+    0, 0, 0, 4, 4, 0, 4, 0, 0,
   };
+  #endif
 
   static const unsigned char color_level[8][32] = {
     // neighbour index
@@ -3361,11 +3368,11 @@
 
   unsigned int idx;
 
-  for (int n = 0; n < ecb_array_length (dxyz); ++n)
+  for (int n = 0; n < ecb_array_length (dxyz) - 2; ++n)
     {
-      unsigned int idx_r = color_level[  Red_levels - dxyz[n][0]][r / 8];
-      unsigned int idx_g = color_level[Green_levels - dxyz[n][1]][g / 8];
-      unsigned int idx_b = color_level[ Blue_levels - dxyz[n][2]][b / 8];
+      unsigned int idx_r = color_level[  Red_levels - dxyz[n + 0]][r / 8];
+      unsigned int idx_g = color_level[Green_levels - dxyz[n + 1]][g / 8];
+      unsigned int idx_b = color_level[ Blue_levels - dxyz[n + 2]][b / 8];
       unsigned int index = colorcube_index (idx_r, idx_g, idx_b);
 
       if (n == 0)
@@ -3385,8 +3392,8 @@
         }
 
       // like (rgb24_seqno[idx] > rgb24_seqno[index])
-      // but also handles wrap around values good enough
-      if ((uint16_t)(rgb24_seqno[idx] - rgb24_seqno[index]) < 0x7fff)
+      // but also handles wrap around values well enough
+      if ((uint16_t)(rgb24_seqno[idx] - rgb24_seqno[index]) < 0x8000)
         idx = index;
     }
 
@@ -3407,19 +3414,21 @@
 {
   if (str[0] == '?' && !str[1])
     {
-      if (!IN_RANGE_INC (color, minCOLOR, maxTermCOLOR))
-        return;
-
       rgba c;
       pix_colors_focused[color].get (c);
-      color -= minCOLOR;
+      char rgba_str[32];
 
 #if XFT
       if (c.a != rgba::MAX_CC)
-        tt_printf ("\033]%d;%d;rgba:%04x/%04x/%04x/%04x%c", report, color, 
c.r, c.g, c.b, c.a, resp);
+        snprintf (rgba_str, sizeof (rgba_str), "rgba:%04x/%04x/%04x/%04x", 
c.r, c.g, c.b, c.a);
       else
 #endif
-        tt_printf ("\033]%d;%d;rgb:%04x/%04x/%04x%c", report, color, c.r, c.g, 
c.b, resp);
+        snprintf (rgba_str, sizeof (rgba_str), "rgb:%04x/%04x/%04x", c.r, c.g, 
c.b);
+
+      if (IN_RANGE_INC (color, minCOLOR, maxTermCOLOR))
+        tt_printf ("\033]%d;%d;%s%c", report, color - minCOLOR, rgba_str, 
resp);
+      else
+        tt_printf ("\033]%d;%s%c", report, rgba_str, resp);
     }
   else
     set_window_color (color, str);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/init.C 
new/rxvt-unicode-9.31/src/init.C
--- old/rxvt-unicode-9.30/src/init.C    2021-07-03 05:21:25.000000000 +0200
+++ new/rxvt-unicode-9.31/src/init.C    2022-12-23 22:37:56.000000000 +0100
@@ -848,6 +848,23 @@
   keyboard->register_done ();
 #endif
 
+  {
+    ev_tstamp interval = 1. / 60.;
+
+#if ENABLE_FRILLS
+    if (rs[Rs_refreshRate])
+      {
+        interval = atof (rs[Rs_refreshRate]);
+        if (interval <= 0.)
+          interval = -interval;
+        else
+          interval = 1. / interval;
+      }
+#endif
+
+    flush_ev.set (interval, interval);
+  }
+
   if (const char *path = rs[Rs_chdir])
     if (*path) // ignored if empty
       {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/perl/background 
new/rxvt-unicode-9.31/src/perl/background
--- old/rxvt-unicode-9.30/src/perl/background   2021-11-26 19:48:31.000000000 
+0100
+++ new/rxvt-unicode-9.31/src/perl/background   2022-12-06 11:14:55.000000000 
+0100
@@ -58,8 +58,8 @@
 It does so by evaluating a Perl expression that I<calculates> the image on
 the fly, for example, by grabbing the root background or loading a file.
 
-While the full power of Perl is available, the operators have been design
-to be as simple as possible.
+While the full power of Perl is available, the operators have been
+designed to be as simple as possible.
 
 For example, to load an image and scale it to the window size, you would
 use:
@@ -988,7 +988,7 @@
          if FOCUS;
 
       my $fade   = @_ >= 1 ? $_[0] : defined $self->resource ("fade") ? 
$self->resource ("fade") * 0.01 : 0;
-      my $color  = @_ >= 2 ? $_[1] : $self->resource ("color+" . 
urxvt::Color_fade);
+      my $color  = @_ >= 2 ? $_[1] : $self->resource ("color+" . 
&urxvt::Color_fade ()); # Color_fade not always available
 
       $img = $img->tint ($color)         if $color ne "rgb:00/00/00";
       $img = $img->muladd (1 - $fade, 0) if $fade;
@@ -1450,11 +1450,9 @@
 }
 
 # helper function, quote string as perl without allowing
-# any code execution or other shenanigans. does not
-# support binary NULs in string.
+# any code execution or other shenanigans.
 sub q0 {
-   (my $str = shift) =~ s/\x00//g; # make sure there really aren't any 
embedded NULs
-   "q\x00$str\x00"
+   "qq\x00\Q$_[0]\E\x00"
 }
 
 sub old_bg_expr {
@@ -1581,7 +1579,7 @@
 sub on_osc_seq {
    my ($self, $op, $arg) = @_;
 
-   $op eq "20" or $op eq "706"
+   $op eq "20" or $op eq "705"
       or return;
 
    $self->{bg_opts}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/perl/clickthrough 
new/rxvt-unicode-9.31/src/perl/clickthrough
--- old/rxvt-unicode-9.30/src/perl/clickthrough 1970-01-01 01:00:00.000000000 
+0100
+++ new/rxvt-unicode-9.31/src/perl/clickthrough 2023-01-02 19:37:18.000000000 
+0100
@@ -0,0 +1,112 @@
+#! perl
+
+#:META:RESOURCE:clickthrough:string:clickthrough disable/off/on
+
+=head1 NAME
+
+clickthrough - make window "transparent" with respect to input events
+
+=head1 SYNOPSIS
+
+   # create a transparent non-interactable overlay
+   urxvt -override-redirect -depth 32 -bg "[0]black" -clickthrough on -e top
+
+=head1 DESCRIPTION
+
+This extension can toggle the terminal window between "normal" and
+"clickthrough" states. In the latter state, input events such as clicks
+will go "through" the window, as if it weren't there. This can be used to
+put a (preferably partially transparent) window in front of other windows
+and let clicks and other events go through the underlying window.
+
+See L<https://shallowsky.com/blog/2017/Apr/06/> for an example.
+
+This extension is loaded automatically when the C<-clickthrough mode>
+command line argument is given, and operates in one of three modes:
+
+=over
+
+=item C<disable> (the default)
+
+In this mode, everything works normally and the OSC sequence is not
+active.
+
+=item C<on>
+
+In this mode, events go through the window, and this can be toggled via an
+OSC sequence.
+
+=item C<off>
+
+In this mode, events act normally, but this can be toggled via an OSC
+sequence.
+
+=back
+
+=head2 OSC SEQUENCE
+
+When enabled, the OSC sequence C<< 777;clickthroughI<mode> >> can be used
+to change the clickthrough mode. Example, switch it on, and then switch it
+off again:
+
+   printf '\033]777;clickthrough:on\007'
+   printf '\033]777;clickthrough:off\007'
+
+=head2 BUGS
+
+For this to work as expected, your window manager needs to support shaped
+windows fully, but most only have partial support. The only window manager
+known to handle this correctly is openbox 3.7.
+
+A workaround is to also use C<-override-redirect>.
+
+In addition, input shapes don't seem to be well supported in Xorg,
+which sometimes does not generate the necessary events for window
+managers. This is currently being worked around in this extension by
+re-setting the input shape after every map event.
+
+=cut
+
+sub on_start {
+   my ($self) = @_;
+
+   my $mode = $self->x_resource ("clickthrough");
+
+   if ($mode eq "on" or $mode eq "off") {
+      my ($major, $minor) = $self->XShapeQueryVersion;
+
+      if ($major < 1 or ($major == 1 && $minor < 1)) {
+         warn "clickthrough cannot be enabled since the shape extension is 
missing or too old\n";
+         return;
+      }
+
+      my $set_mode = sub {
+         if ($mode eq "on") {
+            my $reg = urxvt::XCreateRegion;
+            $self->XShapeCombineRegion ($self->parent, urxvt::ShapeInput, 0, 
0, $reg, urxvt::ShapeSet);
+            urxvt::XDestroyRegion ($reg);
+         } elsif ($mode eq "off") {
+            $self->XShapeCombineMask ($self->parent, urxvt::ShapeInput, 0, 0, 
urxvt::None, urxvt::ShapeSet);
+         }
+      };
+
+      $set_mode->();
+
+      $self->{on_osc_seq_perl} = $self->on (osc_seq_perl => sub {
+         my ($self, $osc, $resp) = @_;
+
+         if ($osc =~ /^clickthrough:(on|off)\z/) {
+            $mode = $1;
+            $set_mode->();
+         }
+      });
+
+      # at least my x-server does not send a ShapeNotify event to the window 
manager
+      # for input shapes unless the window is mapped. Works for bounding 
shapes, so
+      # this is likely an X bug, which we work around by setting the mask on 
every map
+      #$self->{on_map_notify}  = $self->on (map_notify => $set_mode);
+   }
+
+   ()
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/perl/confirm-paste 
new/rxvt-unicode-9.31/src/perl/confirm-paste
--- old/rxvt-unicode-9.30/src/perl/confirm-paste        2021-11-27 
21:07:00.000000000 +0100
+++ new/rxvt-unicode-9.31/src/perl/confirm-paste        2022-12-29 
02:20:05.000000000 +0100
@@ -7,7 +7,9 @@
 =head1 DESCRIPTION
 
 Displays a confirmation dialog when a paste containing control characters
-is detected.
+is detected. The user can choose C<y> to either paste a sanitized variant
+where all control characters are removed, C<p> to paste the string
+unmodified or C<n> to drop the paste request completely.
 
 This is mostly meant as a defense-in-depth mechanism to protect against
 the common web browser bug of you selecting some text but the browser
@@ -16,6 +18,19 @@
 It can also be useful to prevent you from accidentally pasting large
 amounts of text.
 
+=head2 DETAILS
+
+If a string containing unicode control characters (specifically U+0000 ..
+U+001F currrently) is pasted into the terminal, this extension will ask
+whether it should be pasted. Strings without control characters get pasted
+without prompt.
+
+When a sanitized version is pasted (choice C<y>), then contiguous
+sequences of those control characters will be replaced by a single spaces.
+
+The exact detection and sanitization algorithm is subject to change in
+future versions.
+
 =cut
 
 sub msg {
@@ -32,7 +47,7 @@
       or return;
 
    $self->{paste} = \$str;
-   $self->msg ("Pasting $count control characters, continue? (y/n)");
+   $self->msg ("Pasting $count control characters, continue? (y/p/n)");
 
    my $preview = substr $self->locale_decode ($str), 0, $self->ncol;
    $preview =~ s/\n/\\n/g;
@@ -55,12 +70,21 @@
 sub key_press {
    my ($self, $event, $keysym, $string) =  @_;
 
+   my $paste = delete $self->{paste};
+
    if ($keysym == 121) { # y
-      $self->tt_paste (${$self->{paste}});
+      my $paste = $$paste;
+      $paste =~ s/[\x00-\x1f]+/ /g;
+      $self->tt_paste ($paste);
+      $self->leave;
+   } elsif ($keysym == 112) { # p
+      $self->tt_paste ($$paste);
       $self->leave;
    } elsif ($keysym == 110) { # n
       $self->leave;
    }
 
+   $self->{paste} = $paste;
+
    1
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/perl/matcher 
new/rxvt-unicode-9.31/src/perl/matcher
--- old/rxvt-unicode-9.30/src/perl/matcher      2021-11-21 20:33:25.000000000 
+0100
+++ new/rxvt-unicode-9.31/src/perl/matcher      2022-12-09 05:51:54.000000000 
+0100
@@ -21,7 +21,7 @@
 mouse button specified in the C<matcher.button> resource (default 2, or
 middle), the program specified in the C<matcher.launcher> resource
 (default, the C<url-launcher> resource, C<sensible-browser>) will be started
-with the matched text as first argument.  The default configuration is
+with the matched text as first argument. The default configuration is
 suitable for matching URLs and launching a web browser, like the
 former "mark-urls" extension.
 
@@ -31,7 +31,7 @@
 The launcher can also be overridden on a per-pattern basis.
 
 It is possible to activate the most recently seen match or a list of matches
-from the keyboard.  Simply bind a keysym to "matcher:last" or
+from the keyboard. Simply bind a keysym to "matcher:last" or
 "matcher:list" as seen in the example below.
 
 The C<matcher:select> action enables a mode in which it is possible to
@@ -225,16 +225,19 @@
    my ($self) = shift;
    my $row = $self->nrow - 1;
    my @exec;
+
    while ($row >= $self->top_row) {
       my $line = $self->line ($row);
-      @exec = $self->command_for($row);
-      last if(@exec);
+      @exec = $self->command_for ($row);
+      last if @exec;
 
       $row = $line->beg - 1;
    }
-   if(@exec) {
+
+   if (@exec) {
       return $self->exec_async (@exec);
    }
+
    ()
 }
 
@@ -343,15 +346,18 @@
          my @end = @+;
          my @exec;
 
-         if (!defined($off) || ($-[0] <= $off && $+[0] >= $off)) {
+         if (!(defined $off) || ($-[0] <= $off && $+[0] >= $off)) {
             if ($launcher !~ /\$/) {
                @exec = ($launcher, $match);
             } else {
                # It'd be nice to just access a list like ($&,$1,$2...),
                # but alas, m//g behaves differently in list context.
-               @exec = map { s/\$(\d+)|\$\{(\d+)\}/
-                  substr $text, $begin[$1 || $2], $end[$1 || $2] - $begin[$1 
|| $2]
-                  /egx; $_ } split /\s+/, $launcher;
+               @exec = map {
+                     s{\$(\d+)|\$\{(\d+)\}}{
+                        substr $text, $begin[$1 || $2], $end[$1 || $2] - 
$begin[$1 || $2]
+                     }egx;
+                     $_
+                  } split /\s+/, $launcher;
             }
 
             push @matches, [ $line->coord_of ($begin[0]), $line->coord_of 
($end[0]), $match, @exec ];
@@ -359,7 +365,7 @@
       }
    }
 
-   @matches;
+   @matches
 }
 
 sub command_for {
@@ -376,8 +382,11 @@
 
 sub on_button_press {
    my ($self, $event) = @_;
-   if($self->valid_button($event)
-      && (my @exec = $self->command_for($event->{row},$event->{col}))) {
+
+   if (
+      $self->valid_button ($event)
+      && (my @exec = $self->command_for ($event->{row}, $event->{col}))
+   ) {
       $self->{row} = $event->{row};
       $self->{col} = $event->{col};
       $self->{cmd} = \@exec;
@@ -400,12 +409,13 @@
 
    return if !defined $row;
 
-   if($row == $event->{row} && abs($col-$event->{col}) < 2
-      && join("\x00", @$cmd) eq join("\x00", $self->command_for($row,$col))) {
-      if($self->valid_button($event)) {
-
+   if (
+      $row == $event->{row}
+      && (abs $col-$event->{col}) < 2
+      && (join "\x00", @$cmd) eq (join "\x00", $self->command_for ($row, $col))
+   ) {
+      if ($self->valid_button ($event)) {
          $self->exec_async (@$cmd);
-
       }
    }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/rclock.C 
new/rxvt-unicode-9.31/src/rclock.C
--- old/rxvt-unicode-9.30/src/rclock.C  2021-11-14 19:43:57.000000000 +0100
+++ new/rxvt-unicode-9.31/src/rclock.C  2022-12-24 01:14:16.000000000 +0100
@@ -130,7 +130,7 @@
  * #define ADJUST_TIME
  *     to add -adjust command-line option
  *
- * #define CENTURY     2000
+ * #define CENTURY     1900
  *     to set the base century for 2 digit year short-hand
  *----------------------------------------------------------------------*/
 #define        CLOCKUPDATE     30
@@ -139,7 +139,7 @@
 #define DEFER_TIME     3
 #define ADJUST_TIME
 
-#define CENTURY                2000 /* TODO: verify */
+#define CENTURY                1900
 
 /*----------------------------------------------------------------------*
  * #define FONT_NAME   "7x14"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/rsinc.h 
new/rxvt-unicode-9.31/src/rsinc.h
--- old/rxvt-unicode-9.30/src/rsinc.h   2021-07-03 05:41:06.000000000 +0200
+++ new/rxvt-unicode-9.31/src/rsinc.h   2022-12-23 22:29:36.000000000 +0100
@@ -72,6 +72,7 @@
   def (letterSpace)
   def (cursorUnderline)
   def (urgentOnBell)
+  def (refreshRate)
 #endif
 #if BUILTIN_GLYPHS
   def (skipBuiltinGlyphs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/rxvtperl.xs 
new/rxvt-unicode-9.31/src/rxvtperl.xs
--- old/rxvt-unicode-9.30/src/rxvtperl.xs       2021-11-27 21:07:00.000000000 
+0100
+++ new/rxvt-unicode-9.31/src/rxvtperl.xs       2022-12-30 20:18:20.000000000 
+0100
@@ -32,7 +32,14 @@
 #include <stddef.h>
 #include <stdarg.h>
 
-#include "unistd.h"
+#include <unistd.h>
+
+#include <X11/extensions/shape.h>
+
+// support old includes (https://bugs.freedesktop.org/show_bug.cgi?id=2799, 
https://lists.x.org/archives/xorg-arch/2005-March/000004.html)
+#ifndef ShapeInput
+# define ShapeInput 2
+#endif
 
 #include "ev_cpp.h"
 #include "rxvt.h"
@@ -849,15 +856,16 @@
     // TODO: should support all colour constants, create colorinc.h &c
     const_iv (Color_fg),
     const_iv (Color_bg),
-#if OFF_FOCUS_FADING
+#   if OFF_FOCUS_FADING
     const_iv (Color_fade),
-#endif
+#   endif
     const_iv (Color_pointer_fg),
     const_iv (Color_pointer_bg),
     const_iv (Color_border),
     const_iv (NRS_COLORS),
     const_iv (TOTAL_COLORS),
 
+    const_iv (None),
     const_iv (CurrentTime),
     const_iv (ShiftMask),
     const_iv (LockMask),
@@ -938,6 +946,19 @@
     const_iv (ColormapNotify),
     const_iv (ClientMessage),
     const_iv (MappingNotify),
+
+    // shape extension
+    const_iv (ShapeSet),
+    const_iv (ShapeUnion),
+    const_iv (ShapeIntersect),
+    const_iv (ShapeSubtract),
+    const_iv (ShapeInvert),
+
+    const_iv (ShapeBounding),
+    const_iv (ShapeClip),
+    const_iv (ShapeInput),
+
+    // XIM
 #   if ENABLE_XIM_ONTHESPOT
     const_iv (XIMReverse),
     const_iv (XIMUnderline),
@@ -948,7 +969,8 @@
     const_iv (XIMVisibleToForward),
     const_iv (XIMVisibleToBackword),
     const_iv (XIMVisibleToCenter),
-#if XRENDER
+#   endif
+#   if XRENDER
     const_iv (PictStandardARGB32),
     const_iv (PictStandardRGB24),
     const_iv (PictStandardA8),
@@ -1014,7 +1036,7 @@
     const_iv (PictOpHSLSaturation),
     const_iv (PictOpHSLColor),
     const_iv (PictOpHSLLuminosity),
-#endif
+#   endif
 #   if 0
     const_iv (XIMForwardChar),
     const_iv (XIMBackwardChar),
@@ -1029,7 +1051,6 @@
     const_iv (XIMAbsolutePosition),
     const_iv (XIMDontChange),
 #   endif
-#   endif
 
     /* DEC private modes */
     const_iv (PrivMode_132),
@@ -1195,6 +1216,41 @@
 
         delete req;
 
+Region
+XCreateRegion ()
+
+int
+XUnionRectWithRegion (int x, int y, int w, int h, Region src, Region dst)
+       CODE:
+        XRectangle rect;
+        rect.x      = x;
+        rect.y      = y;
+        rect.width  = w;
+        rect.height = h;
+        RETVAL = XUnionRectWithRegion (&rect, src, dst);
+        OUTPUT: RETVAL
+
+int
+XIntersectRegion (Region src1, Region src2, Region res)
+
+int
+XUnionRegion (Region src1, Region src2, Region res)
+
+int
+XSubtractRegion (Region src1, Region src2, Region res)
+
+int
+XXorRegion (Region src1, Region src2, Region res)
+
+int
+XOffsetRegion (Region r, int dx, int dy)
+
+int
+XShrinkRegion (Region r, int dx, int dy)
+
+int
+XDestroyRegion (Region r)
+
 MODULE = urxvt             PACKAGE = urxvt::term
 
 SV *
@@ -2205,6 +2261,29 @@
 XDeleteProperty (rxvt_term *term, Window window, Atom property)
        C_ARGS: term->dpy, window, property
 
+void
+rxvt_term::XShapeQueryVersion ()
+       PPCODE:
+        int major, minor;
+        EXTEND (SP, 2);
+        if (XShapeQueryVersion (THIS->display->dpy, &major, &minor))
+          {
+            PUSHs (sv_2mortal (newSViv (major)));
+            PUSHs (sv_2mortal (newSViv (minor)));
+          }
+
+void
+XShapeCombineRegion (rxvt_term *term, Window dest, int destKind, int xOff, int 
yOff, Region r, int op)
+       C_ARGS: term->display->dpy, dest, destKind, xOff, yOff, r, op
+
+void
+XShapeCombineMask (rxvt_term *term, XID dest, int destKind, int xOff, int 
yOff, Pixmap src, int op)
+       C_ARGS: term->display->dpy, dest, destKind, xOff, yOff, src, op
+
+void
+XShapeCombineShape (rxvt_term *term, XID dest, int destKind, int xOff, int 
yOff, Pixmap src, int srcKind, int op)
+       C_ARGS: term->display->dpy, dest, destKind, xOff, yOff, src, srcKind, op
+
 Window
 rxvt_term::DefaultRootWindow ()
        CODE:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/screen.C 
new/rxvt-unicode-9.31/src/screen.C
--- old/rxvt-unicode-9.30/src/screen.C  2021-07-03 05:55:47.000000000 +0200
+++ new/rxvt-unicode-9.31/src/screen.C  2022-08-08 12:33:08.000000000 +0200
@@ -293,6 +293,7 @@
 
       int common_col = min (prev_ncol, ncol);
 
+      // resize swap_buf, blank drawn_buf
       for (int row = min (nrow, prev_nrow); row--; )
         {
           scr_blank_screen_mem (drawn_buf [row], DEFAULT_RSTYLE);
@@ -306,6 +307,7 @@
       int pend = MOD (term_start + top_row  , prev_total_rows);
       int q    = total_rows; // rewrapped row
 
+#if ENABLE_FRILLS
       if ((rewrap_always || top_row) && !rewrap_never)
         {
           // Re-wrap lines. This is rather ugly, possibly because I am too dumb
@@ -387,36 +389,35 @@
               scr_blank_line (*qline, qline->l, ncol - qline->l, 
DEFAULT_RSTYLE);
             }
           while (p != pend && q > 0);
-
-          term_start = total_rows - nrow;
-          top_row = q - term_start;
-
-          // make sure all terminal lines exist
-          while (top_row > 0)
-            scr_blank_screen_mem (ROW (--top_row), DEFAULT_RSTYLE);
         }
       else
+#endif
         {
-          // if no scrollback exists (yet), wing, instead of wrap
+          // wing, instead of wrap
+          screen.cur.row += nrow - prev_nrow;
 
-          for (int row = min (nrow, prev_nrow); row--; )
+          do
             {
-              line_t &src = prev_row_buf [MOD (term_start + row, 
prev_total_rows)];
-              line_t &dst = row_buf [row];
+              p = MOD (p - 1, prev_total_rows);
+              q--;
 
-              copy_line (dst, src);
+              copy_line (row_buf [q], prev_row_buf [p]);
             }
+          while (p != pend && q > 0);
+        }
 
-          for (int row = prev_nrow; row < nrow; row++)
-            scr_blank_screen_mem (row_buf [row], DEFAULT_RSTYLE);
+      term_start = total_rows - nrow;
+      top_row = q - term_start;
 
-          term_start = 0;
-        }
+      // make sure all terminal lines exist
+      while (top_row > 0)
+        scr_blank_screen_mem (ROW (--top_row), DEFAULT_RSTYLE);
 
       clamp_it (screen.cur.row, 0, nrow - 1);
       clamp_it (screen.cur.col, 0, ncol - 1);
     }
 
+  // ensure drawn_buf, swap_buf and terminal rows are all initialized
   for (int row = nrow; row--; )
     {
       if (!ROW       (row).valid ()) scr_blank_screen_mem (ROW       (row), 
DEFAULT_RSTYLE);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/typemap 
new/rxvt-unicode-9.31/src/typemap
--- old/rxvt-unicode-9.30/src/typemap   2014-11-16 13:22:35.000000000 +0100
+++ new/rxvt-unicode-9.31/src/typemap   2022-12-30 17:52:24.000000000 +0100
@@ -1,9 +1,11 @@
 overlay *              OVERLAY
 
 Time                   T_UV
+XID                    T_UV
 Atom                   T_UV
 Window                 T_UV
 Pixmap                 T_UV
+Region                 T_UV
 rxvt_img::nv           T_NV
 
 urxvt::pixbuf           T_PTROBJ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/urxvt.pm 
new/rxvt-unicode-9.31/src/urxvt.pm
--- old/rxvt-unicode-9.30/src/urxvt.pm  2021-11-26 04:38:21.000000000 +0100
+++ new/rxvt-unicode-9.31/src/urxvt.pm  2022-12-28 10:55:30.000000000 +0100
@@ -1366,6 +1366,10 @@
 the user environment before exec'ing the command (e.g. C<PATH>) and should
 be preferred over explicit calls to C<exec> or C<system>.
 
+It also sets the C<URXVT_EXT_WINDOWID> environment variable to the window
+ID of the terminal (C<< $self->parent >>), similar to the C<WINDOWID>
+variable set for the process spawned inside the terminal.
+
 Returns the pid of the subprocess or C<undef> on error.
 
 =cut
@@ -1378,7 +1382,10 @@
    return $pid
       if !defined $pid or $pid;
 
-   %ENV = %{ $self->env };
+   %ENV = (
+      %{ $self->env },
+      URXVT_EXT_WINDOWID => $self->parent,
+   );
 
    exec @_;
    urxvt::_exit 255;
@@ -2016,13 +2023,13 @@
    )
 }
 
-=item $text = $term->special_encode $string
+=item $text = $term->special_encode ($string)
 
 Converts a perl string into the special encoding used by rxvt-unicode,
 where one character corresponds to one screen cell. See
 C<< $term->ROW_t >> for details.
 
-=item $string = $term->special_decode $text
+=item $string = $term->special_decode ($text)
 
 Converts rxvt-unicode's text representation into a perl string. See
 C<< $term->ROW_t >> for details.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/version.h 
new/rxvt-unicode-9.31/src/version.h
--- old/rxvt-unicode-9.30/src/version.h 2021-11-27 21:07:28.000000000 +0100
+++ new/rxvt-unicode-9.31/src/version.h 2023-01-02 18:13:10.000000000 +0100
@@ -1,3 +1,3 @@
 // VERSION _must_ be \d.\d+
-#define VERSION "9.30"
-#define DATE   "2021-11-27"
+#define VERSION "9.31"
+#define DATE   "2023-01-02"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rxvt-unicode-9.30/src/xdefaults.C 
new/rxvt-unicode-9.31/src/xdefaults.C
--- old/rxvt-unicode-9.30/src/xdefaults.C       2021-07-03 18:36:13.000000000 
+0200
+++ new/rxvt-unicode-9.31/src/xdefaults.C       2022-12-23 22:38:28.000000000 
+0100
@@ -222,6 +222,7 @@
               BOOL (Rs_buffered, "buffered", NULL, Opt_buffered, 0, NULL),
 #endif
 #if ENABLE_FRILLS
+              STRG (Rs_refreshRate, "refreshRate", "fps", "number", "refresh 
rate / frames per second"),
               STRG (Rs_depth, "depth", "depth", "number", "depth of visual to 
request"),
               STRG (Rs_visual, "visual", "visual", "number", "visual id to 
request"),
               RSTRG (Rs_transient_for, "transient-for", "windowid"),

++++++ rxvt-unicode-9.30.tar.bz2.sig -> rxvt-unicode-9.31.tar.bz2.sig ++++++
--- /work/SRC/openSUSE:Factory/rxvt-unicode/rxvt-unicode-9.30.tar.bz2.sig       
2022-03-01 17:03:36.284334026 +0100
+++ 
/work/SRC/openSUSE:Factory/.rxvt-unicode.new.1807/rxvt-unicode-9.31.tar.bz2.sig 
    2023-10-12 11:57:47.182980433 +0200
@@ -1,2 +1,2 @@
-untrusted comment: verify with dist.schmorp.de.pub
-RWSUBDizLm/GKSQteF+rNbXuwNiOfinkids1yQbVKG/iEnwS1Bdn0q05m516IVCTgIMjn3ESIL1atkQETf2NpL8ZUOQjP1hlbwk=
+untrusted comment: see http://dist.schmorp.de/signing-key.txt
+RWSUBDizLm/GKfrjRYh1zf7LFstJxuQb8ZVDRydzF+Urm+yWgsac7ER2D19QMAKQb+TIP/O/Vh0s+2Ad351tFUvtJn2tOtLpzwI=

Reply via email to