summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO40
-rw-r--r--PKGBUILD100
-rw-r--r--clear.patch61
-rw-r--r--font-width-fix.patch24
-rw-r--r--line-spacing-fix.patch25
-rw-r--r--noinc.diff35
-rw-r--r--popup-menu-hang.diff24
-rw-r--r--secondaryWheel.patch119
-rw-r--r--urxvt-tabbed.desktop9
-rw-r--r--urxvt.desktop9
-rw-r--r--urxvtc.desktop9
11 files changed, 455 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..3d6bc2d9951e
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,40 @@
+# Generated by makepkg 4.2.1
+# Fri Jun 26 08:44:20 UTC 2015
+pkgbase = rxvt-unicode-fontspacing-noinc-vteclear-secondarywheel
+ pkgdesc = Unicode enabled rxvt-clone terminal emulator (urxvt) with fixed font spacing, no increment resizing, clear patched to behave like VTEs (keep all lines) and secondaryWheel.
+ pkgver = 9.21
+ pkgrel = 1
+ url = http://software.schmorp.de/pkg/rxvt-unicode.html
+ arch = i686
+ arch = x86_64
+ license = GPL
+ depends = rxvt-unicode-terminfo
+ depends = libxft
+ depends = perl
+ depends = startup-notification
+ optdepends = gtk2-perl: to use the urxvt-tabbed
+ provides = rxvt-unicode
+ conflicts = rxvt-unicode
+ source = http://dist.schmorp.de/rxvt-unicode/rxvt-unicode-9.21.tar.bz2
+ source = urxvt.desktop
+ source = urxvtc.desktop
+ source = urxvt-tabbed.desktop
+ source = font-width-fix.patch
+ source = line-spacing-fix.patch
+ source = noinc.diff
+ source = popup-menu-hang.diff
+ source = clear.patch
+ source = secondaryWheel.patch
+ md5sums = a9a06c608258c5fd247c3725d8f44582
+ md5sums = fec94dc986fa37ec380079d81de3e0b2
+ md5sums = fac55f0a8404c86dad3e702146762332
+ md5sums = 8a5599197568c63720e282b9722a7990
+ md5sums = f6bb5770d2e7b06d88882513710a267d
+ md5sums = d4e03127a0d3bbf2e173850770651b08
+ md5sums = 1c85de8253b3a9002fabaaaccbdb51de
+ md5sums = aead33ba3b08eeb251fb0c1427a4a024
+ md5sums = 061b851e89e53a71d1afad6947c51ca7
+ md5sums = 6e137593a69b4b584305f3d513e471bf
+
+pkgname = rxvt-unicode-fontspacing-noinc-vteclear-secondarywheel
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..8bc3c44133d9
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,100 @@
+# Maintainer: Ismo Toijala <ismo.toijala@gmail.com>
+# Contributor: Daniel Micay <danielmicay@gmail.com>
+# Contributor: Sébastien Luttringer <seblu@aur.archlinux.org>
+# Contributor: Angel Velasquez <angvp@archlinux.org>
+# Contributor: tobias <tobias@archlinux.org>
+# Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org
+
+_pkgbase='rxvt-unicode'
+pkgname='rxvt-unicode-fontspacing-noinc-vteclear-secondarywheel'
+pkgver=9.21
+pkgrel=1
+pkgdesc='Unicode enabled rxvt-clone terminal emulator (urxvt) with fixed font spacing, no increment resizing, clear patched to behave like VTEs (keep all lines) and secondaryWheel.'
+arch=('i686' 'x86_64')
+url='http://software.schmorp.de/pkg/rxvt-unicode.html'
+license=('GPL')
+depends=('rxvt-unicode-terminfo' 'libxft' 'perl' 'startup-notification')
+optdepends=('gtk2-perl: to use the urxvt-tabbed')
+source=("http://dist.schmorp.de/rxvt-unicode/$_pkgbase-$pkgver.tar.bz2"
+ 'urxvt.desktop'
+ 'urxvtc.desktop'
+ 'urxvt-tabbed.desktop'
+ 'font-width-fix.patch'
+ 'line-spacing-fix.patch'
+ 'noinc.diff'
+ 'popup-menu-hang.diff'
+ 'clear.patch'
+ 'secondaryWheel.patch'
+)
+provides=('rxvt-unicode')
+conflicts=('rxvt-unicode')
+
+prepare() {
+ cd $_pkgbase-$pkgver
+ patch -p0 -i ../font-width-fix.patch
+ patch -p0 -i ../line-spacing-fix.patch
+ patch -p0 -i ../popup-menu-hang.diff
+ patch -p1 -i ../noinc.diff
+ patch -p1 -i ../clear.patch
+ patch -p1 -i ../secondaryWheel.patch
+}
+
+build() {
+ cd $_pkgbase-$pkgver
+ # we disable smart-resize (FS#34807)
+ ./configure \
+ --prefix=/usr \
+ --with-terminfo=/usr/share/terminfo \
+ --enable-256-color \
+ --enable-combining \
+ --enable-fading \
+ --enable-font-styles \
+ --enable-iso14755 \
+ --enable-keepscrolling \
+ --enable-lastlog \
+ --enable-mousewheel \
+ --enable-next-scroll \
+ --enable-perl \
+ --enable-pointer-blank \
+ --enable-rxvt-scroll \
+ --enable-selectionscrolling \
+ --enable-slipwheeling \
+ --disable-smart-resize \
+ --enable-startup-notification \
+ --enable-transparency \
+ --enable-unicode3 \
+ --enable-utmp \
+ --enable-wtmp \
+ --enable-xft \
+ --enable-xim \
+ --enable-xterm-scroll \
+ --disable-pixbuf \
+ --disable-frills
+ make
+}
+
+package() {
+ # install freedesktop menu
+ for _f in urxvt urxvtc urxvt-tabbed; do
+ install -Dm644 $_f.desktop "$pkgdir/usr/share/applications/$_f.desktop"
+ done
+ cd $_pkgbase-$pkgver
+ # workaround terminfo installation
+ export TERMINFO="$srcdir/terminfo"
+ install -d "$TERMINFO"
+ make DESTDIR="$pkgdir" install
+ # install the tabbing wrapper ( requires gtk2-perl! )
+ sed -i 's/\"rxvt\"/"urxvt"/' doc/rxvt-tabbed
+ install -Dm 755 doc/rxvt-tabbed "$pkgdir/usr/bin/urxvt-tabbed"
+}
+
+md5sums=('a9a06c608258c5fd247c3725d8f44582'
+ 'fec94dc986fa37ec380079d81de3e0b2'
+ 'fac55f0a8404c86dad3e702146762332'
+ '8a5599197568c63720e282b9722a7990'
+ 'f6bb5770d2e7b06d88882513710a267d'
+ 'd4e03127a0d3bbf2e173850770651b08'
+ '1c85de8253b3a9002fabaaaccbdb51de'
+ 'aead33ba3b08eeb251fb0c1427a4a024'
+ '061b851e89e53a71d1afad6947c51ca7'
+ '6e137593a69b4b584305f3d513e471bf')
diff --git a/clear.patch b/clear.patch
new file mode 100644
index 000000000000..402287677a61
--- /dev/null
+++ b/clear.patch
@@ -0,0 +1,61 @@
+diff -r 4399ffb6a87c -r 48f53e1cf599 src/command.C
+--- a/src/command.C Sat Jan 21 13:57:22 2012 +0100
++++ b/src/command.C Mon Apr 30 16:22:25 2012 +0200
+@@ -2869,6 +2869,10 @@
+ return;
+ }
+
++ /* remember the current row on position change, in case there's a clear screen
++ * right after, so that we can add "preserve" the buffer (e.g. on ^L) */
++ static int old_row = -1, was_moved = 0;
++
+ switch (ch)
+ {
+ /*
+@@ -2932,6 +2936,12 @@
+
+ case CSI_CUP: /* 8.3.21: (1,1) CURSOR POSITION */
+ case CSI_HVP: /* 8.3.64: (1,1) CHARACTER AND LINE POSITION */
++ /* if moving to row 1, remember current row in case a clear screen comes next */
++ if (nargs == 1 && arg[0] == 1 && current_screen == 0)
++ {
++ was_moved = 1;
++ old_row = screen.cur.row;
++ }
+ scr_gotorc (arg[0] - 1, nargs < 2 ? 0 : (arg[1] - 1), 0);
+ break;
+
+@@ -2943,6 +2953,16 @@
+ break;
+
+ case CSI_ED: /* 8.3.40: (0) ERASE IN PAGE */
++ if (was_moved)
++ {
++ /* this is most likely a ^L, so we'll go back to where we where before
++ * the position change, add a screen of empty lines, then move back
++ * on top. that way the (scrolling) buffer will be preserved */
++ scr_gotorc (old_row, 0, 0);
++ for (int i = nrow - 1; i > 0; --i)
++ scr_add_lines (L"\r\n", 2);
++ scr_gotorc (0, 0, 0);
++ }
+ scr_erase_screen (arg[0]);
+ break;
+
+@@ -3086,6 +3106,16 @@
+ default:
+ break;
+ }
++ if (was_moved > 0)
++ {
++ if (was_moved > 1)
++ {
++ was_moved = 0;
++ old_row = -1;
++ }
++ else
++ ++was_moved;
++ }
+ }
+ /*}}} */
+
diff --git a/font-width-fix.patch b/font-width-fix.patch
new file mode 100644
index 000000000000..3bc8ce04230d
--- /dev/null
+++ b/font-width-fix.patch
@@ -0,0 +1,24 @@
+--- src/rxvtfont.C.bukind 2007-11-30 14:36:33.000000000 +0600
++++ src/rxvtfont.C 2007-11-30 14:39:29.000000000 +0600
+@@ -1171,12 +1171,21 @@
+ XGlyphInfo g;
+ XftTextExtents16 (disp, f, &ch, 1, &g);
+
++/*
++ * bukind: don't use g.width as a width of a character!
++ * instead use g.xOff, see e.g.: http://keithp.com/~keithp/render/Xft.tutorial
++
+ g.width -= g.x;
+
+ int wcw = WCWIDTH (ch);
+ if (wcw > 0) g.width = (g.width + wcw - 1) / wcw;
+
+ if (width < g.width ) width = g.width;
++ */
++ int wcw = WCWIDTH (ch);
++ if (wcw > 1) g.xOff = g.xOff / wcw;
++ if (width < g.xOff) width = g.xOff;
++
+ if (height < g.height ) height = g.height;
+ if (glheight < g.height - g.y) glheight = g.height - g.y;
+ }
diff --git a/line-spacing-fix.patch b/line-spacing-fix.patch
new file mode 100644
index 000000000000..8431c4fa0cb4
--- /dev/null
+++ b/line-spacing-fix.patch
@@ -0,0 +1,25 @@
+--- src/rxvtfont.C.orig 2011-07-20 22:19:29.878012201 -0300
++++ src/rxvtfont.C 2011-07-20 22:19:33.634671723 -0300
+@@ -1237,11 +1237,22 @@
+
+ FT_Face face = XftLockFace (f);
+
++/*
++ * use ascent, descent and height from XftFont *f instead of FT_Face face.
++ * this somehow reproduces the behaviour of the line height as seen on xterm.
++
+ ascent = (face->size->metrics.ascender + 63) >> 6;
+ descent = (-face->size->metrics.descender + 63) >> 6;
+ height = max (ascent + descent, (face->size->metrics.height + 63) >> 6);
+ width = 0;
+
++ */
++
++ ascent = f->ascent;
++ descent = f->descent;
++ height = max (ascent + descent, f->height);
++ width = 0;
++
+ bool scalable = face->face_flags & FT_FACE_FLAG_SCALABLE;
+
+ XftUnlockFace (f);
diff --git a/noinc.diff b/noinc.diff
new file mode 100644
index 000000000000..8b64d6c4e7c0
--- /dev/null
+++ b/noinc.diff
@@ -0,0 +1,35 @@
+--- /src/main.C
++++ /src/main.C
+@@ -588,7 +588,7 @@
+ unsigned int w, h;
+ unsigned int max_width, max_height;
+
+- szHint.flags = PMinSize | PResizeInc | PBaseSize | PWinGravity;
++ szHint.flags = PMinSize | PWinGravity;
+ szHint.win_gravity = NorthWestGravity;
+ /* szHint.min_aspect.x = szHint.min_aspect.y = 1; */
+
+@@ -703,6 +703,8 @@
+
+ ncol = width / fwidth;
+ nrow = height / fheight;
++ width = ncol * fwidth;
++ height = nrow * fheight;
+
+ // When the size of the vt window is not a multiple of the cell
+ // size, i.e., when the wm does not honour our size hints, there are
+@@ -1006,14 +1008,6 @@
+ window_calc (newwidth, newheight);
+
+ bool set_hint = !HOOK_INVOKE ((this, HOOK_RESIZE_ALL_WINDOWS, DT_INT, newwidth, DT_INT, newheight, DT_END));
+-
+- // to avoid races between us and the wm, we clear the incremental size hints around the xresizewindow
+- if (set_hint)
+- {
+- szHint.flags &= ~(PBaseSize | PResizeInc);
+- XSetWMNormalHints (dpy, parent, &szHint);
+- szHint.flags |= PBaseSize | PResizeInc;
+- }
+
+ if (!ignoreparent)
+ {
diff --git a/popup-menu-hang.diff b/popup-menu-hang.diff
new file mode 100644
index 000000000000..09bb3c64b913
--- /dev/null
+++ b/popup-menu-hang.diff
@@ -0,0 +1,24 @@
+Index: src/perl/urxvt-popup
+===================================================================
+RCS file: /schmorpforge/rxvt-unicode/src/perl/urxvt-popup,v
+retrieving revision 1.15
+diff -u -r1.15 urxvt-popup
+--- src/perl/urxvt-popup 24 Dec 2007 08:21:40 -0000 1.15
++++ src/perl/urxvt-popup 2 Aug 2009 08:22:52 -0000
+@@ -120,7 +120,7 @@
+ $self->refresh;
+
+ # might fail, but try anyways
+- $self->grab ($self->{data}{event}{time}, 1)
++ $self->grab ($self->{data}{event}{time})
+ and $self->allow_events_async;
+
+ on_button_press $self, $self->{data}{event} if $self->{data}{event}{button};
+@@ -132,7 +132,7 @@
+ my ($self, $event) = @_;
+
+ # should definitely not fail
+- $self->grab ($self->{data}{event}{time}, 1)
++ $self->grab ($self->{data}{event}{time})
+ and $self->allow_events_async;
+ }
diff --git a/secondaryWheel.patch b/secondaryWheel.patch
new file mode 100644
index 000000000000..3bb71b8557fb
--- /dev/null
+++ b/secondaryWheel.patch
@@ -0,0 +1,119 @@
+diff --git a/doc/rxvt.1.pod b/doc/rxvt.1.pod
+index 87042cd..9dfb861 100644
+--- a/doc/rxvt.1.pod
++++ b/doc/rxvt.1.pod
+@@ -417,6 +417,11 @@ B<secondaryScreen>.
+ Turn on/off secondary screen scroll (default enabled); resource
+ B<secondaryScroll>.
+
++=item B<-ssw>|B<+ssw>
++
++Turn on/off secondary screen wheel support (default disabled); resource
++B<secondaryWheel>.
++
+ =item B<-hold>|B<+hold>
+
+ Turn on/off hold window after exit support. If enabled, @@RXVT_NAME@@
+@@ -1029,6 +1034,13 @@ option is enabled, scrolls on the secondary screen will change the
+ scrollback buffer and, when secondaryScreen is off, switching
+ to/from the secondary screen will instead scroll the screen up.
+
++=item B<secondaryWheel:> I<boolean>
++
++Turn on/off secondary wheel (default disabled). If enabled, when on
++secondary screen, using the mouse wheel will not scroll in the buffer
++but instead send 3 "fake" keystrokes (Up/Down arrow) to the running
++application (allows e.g. natural scrolling in B<man>, B<less>, etc).
++
+ =item B<hold>: I<boolean>
+
+ Turn on/off hold window after exit support. If enabled, @@RXVT_NAME@@
+diff --git a/src/command.C b/src/command.C
+index 153f0e1..df22652 100644
+--- a/src/command.C
++++ b/src/command.C
+@@ -2246,10 +2246,46 @@ rxvt_term::button_release (XButtonEvent &ev)
+ }
+ else
+ # endif
++#ifndef NO_SECONDARY_SCREEN
+ {
+- scr_page (dirn, lines);
+- scrollBar.show (1);
++ /* on SECONDARY screen, we send "fake" UP/DOWN keys instead
++ * (this allows to scroll within man, less, etc) */
++ if (option (Opt_secondaryWheel) && current_screen != PRIMARY)
++ {
++ XKeyEvent event;
++ event.display = ev.display;
++ event.window = ev.window;
++ event.root = ev.root;
++ event.subwindow = ev.subwindow;
++ event.time = ev.time;
++ event.x = ev.x;
++ event.y = ev.y;
++ event.x_root = ev.x_root;
++ event.y_root = ev.y_root;
++ event.same_screen = ev.same_screen;
++ event.state = 0;
++ event.keycode = XKeysymToKeycode(ev.display,
++ (dirn == UP) ? XK_Up : XK_Down);
++ for ( ; lines > 0; --lines)
++ {
++ event.type = KeyPress;
++ XSendEvent (event.display, event.window, True,
++ KeyPressMask, (XEvent *) &event);
++ event.type = KeyRelease;
++ XSendEvent (event.display, event.window, True,
++ KeyPressMask, (XEvent *) &event);
++ }
++ }
++ /* on PRIMARY screen, we scroll in the buffer */
++ else
++#endif
++ {
++ scr_page (dirn, lines);
++ scrollBar.show (1);
++ }
++#ifndef NO_SECONDARY_SCREEN
+ }
++#endif
+ }
+ break;
+ #endif
+diff --git a/src/optinc.h b/src/optinc.h
+index d814035..a365037 100644
+--- a/src/optinc.h
++++ b/src/optinc.h
+@@ -26,6 +26,7 @@
+ def(cursorBlink)
+ def(secondaryScreen)
+ def(secondaryScroll)
++ def(secondaryWheel)
+ def(pastableTabs)
+ def(cursorUnderline)
+ #if ENABLE_FRILLS
+diff --git a/src/rsinc.h b/src/rsinc.h
+index 1483955..10f6642 100644
+--- a/src/rsinc.h
++++ b/src/rsinc.h
+@@ -103,6 +103,7 @@
+ #ifndef NO_SECONDARY_SCREEN
+ def (secondaryScreen)
+ def (secondaryScroll)
++ def (secondaryWheel)
+ #endif
+ #if OFF_FOCUS_FADING
+ def (fade)
+diff --git a/src/xdefaults.C b/src/xdefaults.C
+index 69acdd8..3e858de 100644
+--- a/src/xdefaults.C
++++ b/src/xdefaults.C
+@@ -262,6 +262,7 @@ optList[] = {
+ #ifndef NO_SECONDARY_SCREEN
+ BOOL (Rs_secondaryScreen, "secondaryScreen", "ssc", Opt_secondaryScreen, 0, "enable secondary screen"),
+ BOOL (Rs_secondaryScroll, "secondaryScroll", "ssr", Opt_secondaryScroll, 0, "enable secondary screen scroll"),
++ BOOL (Rs_secondaryWheel, "secondaryWheel", "ssw", Opt_secondaryWheel, 0, "enable secondary screen wheel"),
+ #endif
+ #if ENABLE_PERL
+ RSTRG (Rs_perl_lib, "perl-lib", "string"), //, "colon-separated directories with extension scripts"),TODO
diff --git a/urxvt-tabbed.desktop b/urxvt-tabbed.desktop
new file mode 100644
index 000000000000..172006b4ac12
--- /dev/null
+++ b/urxvt-tabbed.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Version=1.0
+Name=urxvt (tabbed)
+Comment=An unicode capable and tabbed rxvt clone
+Exec=urxvt-tabbed
+Icon=utilities-terminal
+Terminal=false
+Type=Application
+Categories=System;TerminalEmulator;
diff --git a/urxvt.desktop b/urxvt.desktop
new file mode 100644
index 000000000000..76229187034f
--- /dev/null
+++ b/urxvt.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Version=1.0
+Name=urxvt
+Comment=An unicode capable rxvt clone
+Exec=urxvt
+Icon=utilities-terminal
+Terminal=false
+Type=Application
+Categories=System;TerminalEmulator;
diff --git a/urxvtc.desktop b/urxvtc.desktop
new file mode 100644
index 000000000000..3a2df410f7db
--- /dev/null
+++ b/urxvtc.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Version=1.0
+Name=urxvt (client)
+Comment=An unicode capable rxvt clone client for urxvtd
+Exec=urxvtc
+Icon=utilities-terminal
+Terminal=false
+Type=Application
+Categories=System;TerminalEmulator;