Subject: [PATCH 177/209] gnu: Add qtvirtualkeyboard-5.

From: Zheng Junjie <[email-masked]>
Date: Sun, 23 Jul 2023 16:46:37 +0800

* gnu/packages/qt.scm (qtvirtualkeyboard-5): New variable.
---
 gnu/packages/qt.scm | 45 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 89e49661de..405a981dc1 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -28,6 +28,7 @@
 ;;; Copyright © 2022 Petr Hodina <[email-masked]>
 ;;; Copyright © 2022 Yash Tiwari <[email-masked]>
 ;;; Copyright © 2023 Sharlatan Hellseher <[email-masked]>
+;;; Copyright © 2022 Zheng Junjie <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2355,6 +2356,50 @@ (define-public qtspeech
 In such a scenario, the messaging application can read out the incoming
 message.")))
 
+(define-public qtvirtualkeyboard-5
+  (package
+    (inherit qtsvg-5)
+    (name "qtvirtualkeyboard")
+    (version %qt-version)
+    (source (origin
+              (method url-fetch)
+              (uri (qt-urls name version))
+              (sha256
+               (base32
+                "1skdjh9q4m438wwl8hwx3jc5hg22dmi5pwm3vd2yksxw6ny67rd7"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
+       ((#:tests? _ #f) #f) ; TODO: pass 2 fail test
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-before 'check 'set-display
+             (lambda _
+               ;; Make Qt render "offscreen", required for tests.
+               (setenv "QT_QPA_PLATFORM" "offscreen")
+               (setenv "DISPLAY" ":1")
+               (system "Xvfb +extension GLX :1 &")))
+           (delete 'check)               ;move after the install phase
+           (add-after 'install 'check
+             (assoc-ref %standard-phases 'check))
+           (add-before 'check 'prepare-for-tests
+             (lambda* (#:key outputs #:allow-other-keys)
+               (setenv "QML2_IMPORT_PATH"
+                       (string-append (assoc-ref outputs "out")
+                                      "/lib/qt5/qml:"
+                                      (getenv "QML2_IMPORT_PATH")))
+               (setenv "QT_PLUGIN_PATH"
+                       (string-append (assoc-ref outputs "out")
+                                      "/lib/qt6/plugins:"
+                                      (getenv "QT_PLUGIN_PATH")))))))))
+    (native-inputs (list perl xorg-server-for-tests))
+    (inputs (list qtbase-5 qtdeclarative-5))
+    (propagated-inputs
+     (list qtquickcontrols-5 qtsvg-5))
+    (synopsis " QtQuick virtual keyboard")
+    (description "The Qt Speech module provides a virtual keyboard framework
+that consists of a C++ backend supporting custom input methods as well as a UI
+frontend implemented in QML.")))
+
 (define-public qtspell
   (package
     (name "qtspell")
-- 
2.41.0