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=