summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoan Bruguera2021-09-26 21:48:30 +0200
committerJoan Bruguera2021-09-26 21:50:02 +0200
commitb73ba6934670d5eaead1afe068ff31a26b2d3118 (patch)
tree3a02db2933ee556014e7c99a23e82f5cd4226216
downloadaur-b73ba6934670d5eaead1afe068ff31a26b2d3118.tar.gz
Initial commit.
-rw-r--r--.SRCINFO36
-rw-r--r--PKGBUILD55
-rw-r--r--spice-extra-mouse-buttons.patch90
-rw-r--r--spice-gtk.install8
4 files changed, 189 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..65446bec819b
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,36 @@
+pkgbase = spice-gtk-extra-mouse-buttons
+ pkgdesc = GTK+ client library for SPICE (with support for extra mouse buttons)
+ pkgver = 0.39
+ pkgrel = 3
+ url = https://www.spice-space.org/
+ install = spice-gtk.install
+ arch = x86_64
+ license = LGPL2.1
+ makedepends = gobject-introspection
+ makedepends = meson
+ makedepends = spice-protocol
+ makedepends = usbutils
+ makedepends = vala
+ depends = gtk3
+ depends = libcacard
+ depends = libjpeg-turbo
+ depends = opus
+ depends = phodav
+ depends = usbredir
+ depends = gst-plugins-base
+ depends = gst-plugins-good
+ provides = spice-glib=0.39
+ provides = spice-gtk3=0.39
+ provides = spice-gtk
+ conflicts = spice-gtk
+ replaces = spice-glib
+ replaces = spice-gtk3
+ source = https://www.spice-space.org/download/gtk/spice-gtk-0.39.tar.xz
+ source = https://www.spice-space.org/download/gtk/spice-gtk-0.39.tar.xz.sig
+ source = spice-extra-mouse-buttons.patch
+ validpgpkeys = 206D3B352F566F3B0E6572E997D9123DE37A484F
+ sha256sums = 23acbee197eaaec9bce6e6bfd885bd8f79708332639243ff04833020865713cd
+ sha256sums = SKIP
+ sha256sums = 8b8ed51d76f7170aea7d5d9af3b60ab17d43d4437b07979ac297589ef65ec05b
+
+pkgname = spice-gtk-extra-mouse-buttons
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..6c26c9c2501a
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,55 @@
+# Maintainer: Joan Bruguera Micó <joanbrugueram@gmail.com>
+# Maintainer: Balló György <ballogyor+arch at gmail dot com>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Stefano Facchini <stefano.facchini@gmail.com>
+# Contributor: Jonathan Lestrelin <zanko@daemontux.org>
+# Contributor: Lucio Zara <pennega@gmail.com>
+
+pkgname=spice-gtk
+pkgver=0.39
+pkgrel=3
+pkgdesc="GTK+ client library for SPICE"
+arch=('x86_64')
+url="https://www.spice-space.org/"
+license=('LGPL2.1')
+depends=('gtk3' 'libcacard' 'libjpeg-turbo' 'opus' 'phodav' 'usbredir' 'gst-plugins-base' 'gst-plugins-good')
+makedepends=('gobject-introspection' 'meson' 'spice-protocol' 'usbutils' 'vala')
+provides=("spice-glib=$pkgver" "spice-gtk3=$pkgver")
+replaces=('spice-glib' 'spice-gtk3')
+source=("https://www.spice-space.org/download/gtk/$pkgname-$pkgver.tar.xz"{,.sig})
+install=spice-gtk.install
+sha256sums=('23acbee197eaaec9bce6e6bfd885bd8f79708332639243ff04833020865713cd'
+ 'SKIP')
+validpgpkeys=('206D3B352F566F3B0E6572E997D9123DE37A484F') # Victor Toso de Carvalho <me@victortoso.com>
+
+build() {
+ arch-meson $pkgname-$pkgver build -D celt051=disabled
+ ninja -C build
+}
+
+check() {
+ meson test -C build --print-errorlogs
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+}
+
+# Support for extra mouse buttons (typically "Back" and "Forward" in e.g. Firefox) by Kevin Pouget:
+# https://lists.freedesktop.org/archives/spice-devel/2020-May/051651.html
+# His patches have been rebased on top of this commit to spice-protocol:
+# https://gitlab.freedesktop.org/spice/spice-protocol/-/commit/cbe7b2c28543f4c5e57d1db1b753b73a64104162
+provides+=(spice-gtk)
+conflicts+=(spice-gtk)
+
+source+=("spice-extra-mouse-buttons.patch")
+sha256sums+=('8b8ed51d76f7170aea7d5d9af3b60ab17d43d4437b07979ac297589ef65ec05b')
+
+_pkgname=$pkgname
+pkgname+="-extra-mouse-buttons"
+pkgdesc+=" (with support for extra mouse buttons)"
+eval "$(declare -f build | sed 's/$pkgname/$_pkgname/g')"
+
+prepare() {
+ patch -d"$_pkgname-$pkgver" -Np1 -i "${srcdir}"/spice-extra-mouse-buttons.patch
+}
diff --git a/spice-extra-mouse-buttons.patch b/spice-extra-mouse-buttons.patch
new file mode 100644
index 000000000000..e066014e9e9c
--- /dev/null
+++ b/spice-extra-mouse-buttons.patch
@@ -0,0 +1,90 @@
+From c67a35580039c3e81c5b59085f3cf7a94fbbf5d4 Mon Sep 17 00:00:00 2001
+From: Kevin Pouget <kpouget@redhat.com>
+Date: Thu, 14 May 2020 16:00:59 +0200
+Subject: [PATCH] Capture and forward mouse buttons 8 and 9
+
+These buttons are not mapped by GTK
+(`/usr/include/gtk-3.0/gdk/gdktypes.h`) but still exposed, so I
+hardcoded their values:
+
+ #define _GTK_BUTTON_PREV_MASK (1 << 15) /* button 9 */
+ #define _GTK_BUTTON_NEXT_MASK (1 << 16) /* button 8 */
+---
+ src/channel-inputs.c | 12 ++++++++++++
+ src/spice-widget.c | 16 ++++++++++++++++
+ 2 files changed, 28 insertions(+)
+
+diff --git a/src/channel-inputs.c b/src/channel-inputs.c
+index 5e6c7b4a..293344ed 100644
+--- a/src/channel-inputs.c
++++ b/src/channel-inputs.c
+@@ -426,6 +426,12 @@ void spice_inputs_channel_button_press(SpiceInputsChannel *channel, gint button,
+ case SPICE_MOUSE_BUTTON_RIGHT:
+ button_state |= SPICE_MOUSE_BUTTON_MASK_RIGHT;
+ break;
++ case SPICE_MOUSE_BUTTON_SIDE:
++ button_state |= SPICE_MOUSE_BUTTON_MASK_SIDE;
++ break;
++ case SPICE_MOUSE_BUTTON_EXTRA:
++ button_state |= SPICE_MOUSE_BUTTON_MASK_EXTRA;
++ break;
+ }
+
+ c->bs = button_state;
+@@ -491,6 +497,12 @@ void spice_inputs_channel_button_release(SpiceInputsChannel *channel, gint butto
+ case SPICE_MOUSE_BUTTON_RIGHT:
+ button_state &= ~SPICE_MOUSE_BUTTON_MASK_RIGHT;
+ break;
++ case SPICE_MOUSE_BUTTON_SIDE:
++ button_state &= ~SPICE_MOUSE_BUTTON_MASK_SIDE;
++ break;
++ case SPICE_MOUSE_BUTTON_EXTRA:
++ button_state &= ~SPICE_MOUSE_BUTTON_MASK_EXTRA;
++ break;
+ }
+
+ c->bs = button_state;
+diff --git a/src/spice-widget.c b/src/spice-widget.c
+index 5cef966b..85d0f4db 100644
+--- a/src/spice-widget.c
++++ b/src/spice-widget.c
+@@ -1997,6 +1997,10 @@ static int button_gdk_to_spice(guint gdk)
+ [ 3 ] = SPICE_MOUSE_BUTTON_RIGHT,
+ [ 4 ] = SPICE_MOUSE_BUTTON_UP,
+ [ 5 ] = SPICE_MOUSE_BUTTON_DOWN,
++ [ 6 ] = 0,
++ [ 7 ] = 0,
++ [ 8 ] = SPICE_MOUSE_BUTTON_EXTRA,
++ [ 9 ] = SPICE_MOUSE_BUTTON_SIDE,
+ };
+
+ if (gdk < SPICE_N_ELEMENTS(map)) {
+@@ -2011,6 +2015,10 @@ static int button_gdk_to_spice_mask(guint gdk)
+ [1] = SPICE_MOUSE_BUTTON_MASK_LEFT,
+ [2] = SPICE_MOUSE_BUTTON_MASK_MIDDLE,
+ [3] = SPICE_MOUSE_BUTTON_MASK_RIGHT,
++ [6] = 0,
++ [7] = 0,
++ [8] = SPICE_MOUSE_BUTTON_EXTRA,
++ [9] = SPICE_MOUSE_BUTTON_SIDE,
+ };
+
+ if (gdk < SPICE_N_ELEMENTS(map)) {
+@@ -2029,6 +2037,14 @@ static int button_mask_gdk_to_spice(int gdk)
+ spice |= SPICE_MOUSE_BUTTON_MASK_MIDDLE;
+ if (gdk & GDK_BUTTON3_MASK)
+ spice |= SPICE_MOUSE_BUTTON_MASK_RIGHT;
++ /* Mouse buttons above 5 are not defined by GDK */
++#define _GTK_BUTTON_PREV_MASK (1 << 15) /* button 9 */
++#define _GTK_BUTTON_NEXT_MASK (1 << 16) /* button 8 */
++ if (gdk & _GTK_BUTTON_PREV_MASK)
++ spice |= SPICE_MOUSE_BUTTON_MASK_EXTRA;
++ if (gdk & _GTK_BUTTON_NEXT_MASK)
++ spice |= SPICE_MOUSE_BUTTON_MASK_SIDE;
++
+ return spice;
+ }
+
+--
+GitLab
+
diff --git a/spice-gtk.install b/spice-gtk.install
new file mode 100644
index 000000000000..f788c95b5e48
--- /dev/null
+++ b/spice-gtk.install
@@ -0,0 +1,8 @@
+post_install() {
+# this is executed by make install, but doesn't work since setcap can only be run as root
+ setcap CAP_FOWNER=+ep /usr/lib/spice-client-glib-usb-acl-helper
+}
+
+post_upgrade() {
+ post_install
+}