summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Szuba <marecki@gentoo.org>2020-12-31 14:45:19 +0000
committerMarek Szuba <marecki@gentoo.org>2020-12-31 14:52:49 +0000
commit01fa0495e04575b2295bfb0afe2164caba7511e4 (patch)
tree0061a2d9bcf391fe24e69333a0e91aaef52d1981 /x11-terms/rxvt-unicode
parentmedia-gfx/meshlab: version bump to 2012.12 (diff)
downloadgentoo-01fa0495e04575b2295bfb0afe2164caba7511e4.tar.gz
gentoo-01fa0495e04575b2295bfb0afe2164caba7511e4.tar.bz2
gentoo-01fa0495e04575b2295bfb0afe2164caba7511e4.zip
x11-terms/rxvt-unicode: Optionally support xterm SGR 1006 mouse extension
Needed in order for mouse tracking to work properly in large terminals, for all applications which do not the urxvt 1015 extension (and not many do). Relies on a third-party patch (ported from AUR, and extended to make this feature dependent on a build-time flag, by the bug reporter), as upstream allegedly refused to implement this. Suggested-by: Oscar L <oscar_bugs@nym.hush.com> Closes: https://bugs.gentoo.org/761787 Signed-off-by: Marek Szuba <marecki@gentoo.org>
Diffstat (limited to 'x11-terms/rxvt-unicode')
-rw-r--r--x11-terms/rxvt-unicode/files/rxvt-unicode-9.22-sgr-mouse-mode-flag.patch165
-rw-r--r--x11-terms/rxvt-unicode/metadata.xml3
-rw-r--r--x11-terms/rxvt-unicode/rxvt-unicode-9.22-r7.ebuild112
3 files changed, 280 insertions, 0 deletions
diff --git a/x11-terms/rxvt-unicode/files/rxvt-unicode-9.22-sgr-mouse-mode-flag.patch b/x11-terms/rxvt-unicode/files/rxvt-unicode-9.22-sgr-mouse-mode-flag.patch
new file mode 100644
index 000000000000..3f6f5d90618e
--- /dev/null
+++ b/x11-terms/rxvt-unicode/files/rxvt-unicode-9.22-sgr-mouse-mode-flag.patch
@@ -0,0 +1,165 @@
+diff --git a/config.h.in b/config.h.in
+index 914d606..b869bfb 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -9,6 +9,9 @@
+ /* Define if you want handling for rarely used but handy features */
+ #undef ENABLE_FRILLS
+
++/* Define if you want support for SGR mouse mode 1006 */
++#undef ENABLE_SGRMOUSE
++
+ /* Define if you can embed a perl interpreter */
+ #undef ENABLE_PERL
+
+diff --git a/configure.ac b/configure.ac
+index 0da3b59..c8b9c80 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -76,6 +76,7 @@ AC_SEARCH_LIBS(gethostbyname, nsl)
+ AC_SEARCH_LIBS(socket, socket)
+
+ support_frills=yes
++support_sgrmouse=yes
+ support_inheritpixmap=yes
+ support_fading=yes
+ support_keepscrolling=yes
+@@ -109,6 +110,7 @@ AC_ARG_ENABLE(everything,
+ [
+ if test x$enableval = xno; then
+ support_frills=no
++ support_sgrmouse=no
+ support_inheritpixmap=no
+ support_fading=no
+ support_keepscrolling=no
+@@ -137,6 +139,7 @@ AC_ARG_ENABLE(everything,
+ fi
+ if test x$enableval = xyes; then
+ support_frills=yes
++ support_sgrmouse=yes
+ support_inheritpixmap=yes
+ support_fading=yes
+ support_keepscrolling=yes
+@@ -359,6 +362,12 @@ AC_ARG_ENABLE(frills,
+ support_frills=$enableval
+ fi])
+
++AC_ARG_ENABLE(sgrmouse,
++ [ --enable-sgrmouse enable support for SGR mouse mode 1006],
++ [if test x$enableval = xyes -o x$enableval = xno; then
++ support_sgrmouse=$enableval
++ fi])
++
+ AC_ARG_ENABLE(keepscrolling,
+ [ --enable-keepscrolling enable continual scrolling on scrollbar arrow press],
+ [if test x$enableval = xyes -o x$enableval = xno; then
+@@ -666,6 +675,9 @@ fi
+ if test x$support_frills = xyes; then
+ AC_DEFINE(ENABLE_FRILLS, 1, Define if you want handling for rarely used but handy features)
+ fi
++if test x$support_sgrmouse = xyes; then
++ AC_DEFINE(ENABLE_SGRMOUSE, 1, Define if you want support for SGR mouse mode 1006)
++fi
+ if test x$support_mousewheel = xyes; then
+ AC_DEFINE(MOUSE_WHEEL, 1, Define to use wheel events (button4 and button5) to scroll)
+ fi
+diff --git a/src/command.C b/src/command.C
+index 7b79f51..a62ef87 100644
+--- a/src/command.C
++++ b/src/command.C
+@@ -1282,6 +1282,13 @@ rxvt_term::mouse_report (XButtonEvent &ev)
+ int button_number, key_state = 0;
+ int x, y;
+ int code = 32;
++ bool mode_sgr = false;
++
++#if ENABLE_SGRMOUSE
++ if (priv_modes & PrivMode_ExtMouseSgr) mode_sgr = true;
++#endif
++
++ if (mode_sgr) code = 0;
+
+ x = Pixel2Col (ev.x) + 1;
+ y = Pixel2Row (ev.y) + 1;
+@@ -1296,11 +1303,18 @@ rxvt_term::mouse_report (XButtonEvent &ev)
+ code += 32;
+ }
+
+- if (MEvent.button == AnyButton)
++ if (!(mode_sgr) && MEvent.button == AnyButton)
+ button_number = 3;
+ else
+ {
+- button_number = MEvent.button - Button1;
++ if (ev.type == MotionNotify) {
++ if (ev.state & Button1Mask) button_number = 0;
++ else if (ev.state & Button2Mask) button_number = 1;
++ else if (ev.state & Button3Mask) button_number = 2;
++ else return;
++ } else {
++ button_number = ev.button - Button1;
++ }
+ /* add 0x3D for wheel events, like xterm does */
+ if (button_number >= 3)
+ button_number += 64 - 3;
+@@ -1361,6 +1375,15 @@ rxvt_term::mouse_report (XButtonEvent &ev)
+ wint_t (32 + x),
+ wint_t (32 + y));
+ else
++#endif
++#if ENABLE_SGRMOUSE
++ if (mode_sgr)
++ tt_printf ("\033[<%d;%d;%d%c",
++ code + button_number + key_state,
++ x,
++ y,
++ (ev.type == ButtonRelease ? 'm' : 'M'));
++ else
+ #endif
+ tt_printf ("\033[M%c%c%c",
+ code + button_number + key_state,
+@@ -2904,7 +2927,7 @@ rxvt_term::process_csi_seq ()
+ scr_soft_reset ();
+
+ static const int pm_h[] = { 7, 25 };
+- static const int pm_l[] = { 1, 3, 4, 5, 6, 9, 66, 1000, 1001, 1005, 1015, 1049 };
++ static const int pm_l[] = { 1, 3, 4, 5, 6, 9, 66, 1000, 1001, 1002, 1003, 1005, 1006, 1015, 1049 };
+
+ process_terminal_mode ('h', 0, ecb_array_length (pm_h), pm_h);
+ process_terminal_mode ('l', 0, ecb_array_length (pm_l), pm_l);
+@@ -3710,6 +3733,9 @@ rxvt_term::process_terminal_mode (int mode, int priv ecb_unused, unsigned int na
+ { 1003, PrivMode_MouseAnyEvent },
+ #if ENABLE_FRILLS
+ { 1005, PrivMode_ExtModeMouse },
++#endif
++#if ENABLE_SGRMOUSE
++ { 1006, PrivMode_ExtMouseSgr },
+ #endif
+ { 1010, PrivMode_TtyOutputInh }, // rxvt extension
+ { 1011, PrivMode_Keypress }, // rxvt extension
+diff --git a/src/rxvt.h b/src/rxvt.h
+index 5c7cf66..2ffd3fb 100644
+--- a/src/rxvt.h
++++ b/src/rxvt.h
+@@ -645,6 +645,7 @@ enum {
+ #define PrivMode_ExtModeMouse (1UL<<23) // xterm pseudo-utf-8 hack
+ #define PrivMode_ExtMouseRight (1UL<<24) // xterm pseudo-utf-8, but works in non-utf-8-locales
+ #define PrivMode_BlinkingCursor (1UL<<25)
++#define PrivMode_ExtMouseSgr (1UL<<27) // sgr mouse extension
+
+ #define PrivMode_mouse_report (PrivMode_MouseX10|PrivMode_MouseX11|PrivMode_MouseBtnEvent|PrivMode_MouseAnyEvent)
+
+diff --git a/src/xdefaults.C b/src/xdefaults.C
+index 894aa8d..e5952b7 100644
+--- a/src/xdefaults.C
++++ b/src/xdefaults.C
+@@ -359,6 +359,9 @@ static const char optionsstring[] = "options: "
+ #if defined(ENABLE_FRILLS)
+ "frills,"
+ #endif
++#if defined(ENABLE_SGRMOUSE)
++ "sgrmouse,"
++#endif
+ #if defined(SELECTION_SCROLLING)
+ "selectionscrolling,"
+ #endif
diff --git a/x11-terms/rxvt-unicode/metadata.xml b/x11-terms/rxvt-unicode/metadata.xml
index e088706493d5..b2f262896f27 100644
--- a/x11-terms/rxvt-unicode/metadata.xml
+++ b/x11-terms/rxvt-unicode/metadata.xml
@@ -21,6 +21,9 @@
<flag name="iso14755">Enable ISO-14755 support</flag>
<flag name="mousewheel">Enable scrolling via mouse wheel or buttons 4 and 5</flag>
<flag name="perl">Enable perl script support. You can still disable this at runtime with -pe ""</flag>
+<flag name="sgrmouse">Enable unofficial support for the xterm SGR 1006 mouse-tracking extension.
+ Needed to properly support mouse events for terminals with more than 223
+ rows or columns, in applications not supporting the urxvt 1015 extension.</flag>
<flag name="unicode3">Use 21 instead of 16 bits to represent unicode characters</flag>
<flag name="utmp">Enable utmp support</flag>
<flag name="wtmp">Enable wtmp support</flag>
diff --git a/x11-terms/rxvt-unicode/rxvt-unicode-9.22-r7.ebuild b/x11-terms/rxvt-unicode/rxvt-unicode-9.22-r7.ebuild
new file mode 100644
index 000000000000..3f1cb44b6c4b
--- /dev/null
+++ b/x11-terms/rxvt-unicode/rxvt-unicode-9.22-r7.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools desktop systemd
+
+COLOUR_PATCH_NAME="${PN}-9.22_24-bit-color_cpixl-20201108.patch"
+
+DESCRIPTION="rxvt clone with xft and unicode support"
+HOMEPAGE="http://software.schmorp.de/pkg/rxvt-unicode.html"
+SRC_URI="http://dist.schmorp.de/rxvt-unicode/Attic/${P}.tar.bz2
+ https://dev.gentoo.org/~marecki/dists/${PN}/${COLOUR_PATCH_NAME}.xz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris"
+IUSE="-24-bit-color 256-color blink fading-colors +font-styles gdk-pixbuf iso14755 +mousewheel
+ +perl -sgrmouse startup-notification unicode3 +utmp +wtmp xft"
+
+RESTRICT="test"
+
+RDEPEND=">=sys-libs/ncurses-5.7-r6:=
+ media-libs/fontconfig
+ x11-libs/libX11
+ x11-libs/libXrender
+ gdk-pixbuf? ( x11-libs/gdk-pixbuf )
+ kernel_Darwin? ( dev-perl/Mac-Pasteboard )
+ perl? ( dev-lang/perl:= )
+ startup-notification? ( x11-libs/startup-notification )
+ xft? ( x11-libs/libXft )"
+DEPEND="${RDEPEND}
+ x11-base/xorg-proto"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-9.06-case-insensitive-fs.patch
+ "${FILESDIR}"/${PN}-9.21-xsubpp.patch
+ "${FILESDIR}"/${PN}-9.22-sgr-mouse-mode-flag.patch
+ "${WORKDIR}"/${COLOUR_PATCH_NAME}
+)
+DOCS=(
+ Changes
+ README.FAQ
+ doc/README.xvt
+ doc/changes.txt
+ doc/etc/${PN}.term{cap,info}
+ doc/rxvt-tabbed
+)
+
+src_prepare() {
+ default
+
+ # kill the rxvt-unicode terminfo file - #192083
+ sed -i -e "/rxvt-unicode.terminfo/d" doc/Makefile.in || die "sed failed"
+
+ eautoreconf
+}
+
+src_configure() {
+ # --enable-everything goes first: the order of the arguments matters
+ econf --enable-everything \
+ $(use_enable 24-bit-color) \
+ $(use_enable 256-color) \
+ $(use_enable blink text-blink) \
+ $(use_enable fading-colors fading) \
+ $(use_enable font-styles) \
+ $(use_enable gdk-pixbuf pixbuf) \
+ $(use_enable iso14755) \
+ $(use_enable mousewheel) \
+ $(use_enable perl) \
+ $(use_enable sgrmouse) \
+ $(use_enable startup-notification) \
+ $(use_enable unicode3) \
+ $(use_enable utmp) \
+ $(use_enable wtmp) \
+ $(use_enable xft)
+}
+
+src_compile() {
+ default
+
+ sed -i \
+ -e 's/RXVT_BASENAME = "rxvt"/RXVT_BASENAME = "urxvt"/' \
+ "${S}"/doc/rxvt-tabbed || die
+}
+
+src_install() {
+ default
+
+ systemd_douserunit "${FILESDIR}"/urxvtd.service
+
+ make_desktop_entry urxvt rxvt-unicode utilities-terminal \
+ "System;TerminalEmulator"
+}
+
+pkg_postinst() {
+ if use 24-bit-color; then
+ ewarn
+ ewarn "You have enabled 24-bit colour support in ${PN}, which is UNOFFICIAL and INCOMPLETE."
+ ewarn "You may or may not encounter visual glitches or stability issues. When in doubt,"
+ ewarn "rebuild =${CATEGORY}/${PF} with USE=-24-bit-color (the default setting)."
+ ewarn
+ fi
+
+ if use sgrmouse; then
+ ewarn
+ ewarn "Support for the SGR 1006 mouse extension in ${PN} is UNOFFICIAL and provided as-is."
+ ewarn "When in doubt, rebuild =${CATEGORY}/${PF} with USE=-sgrmouse (the default setting)."
+ ewarn
+ fi
+}