summary refs log tree commit diff
diff options
context:
space:
mode:
authorZhu Zihao <all_but_last@163.com>2022-03-21 09:16:38 +0800
committerLudovic Courtès <ludo@gnu.org>2022-04-04 22:58:02 +0200
commit287b98031f55cbc3a89ad0a0ae99cfa28eb153f4 (patch)
tree8521235c922e4900304111c8f87507e93f5ea5c8
parentef3cae59a2bc29b666e1c6b468b286f4cbb4974c (diff)
downloadguix-287b98031f55cbc3a89ad0a0ae99cfa28eb153f4.tar.gz
gnu: Add fcitx5-gtk4.
* gnu/packages/fcitx5.scm (fcitx5-gtk4): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--gnu/packages/fcitx5.scm44
1 files changed, 44 insertions, 0 deletions
diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 59085b8fe9..ca2d8f6827 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -252,6 +252,50 @@ IM module for GTK+3 applications.
 @end table")
     (license license:lgpl2.1+)))
 
+;; XXX: This package is separated from fcitx5-gtk for following reasons.
+;; 1. GTK4 has a lot more dependencies, some of which maybe unavailable on
+;;    platforms other than x86_64. See <https://issues.guix.gnu.org/53648>.
+;; 2. GTK4 now propagates pango@1.50, it will conflict with GTK3 and GTK2
+;;    (propagates pango@1.48) if they're all in the inputs of same package.
+;;    See <https://issues.guix.gnu.org/54261>.
+(define-public fcitx5-gtk4
+  (package
+    (inherit fcitx5-gtk)
+    (name "fcitx5-gtk4")
+    (arguments
+     (list
+      #:tests? #f                       ;No test
+      #:configure-flags
+      #~(list (string-append "-DCMAKE_CXX_FLAGS=-I"
+                             #$(this-package-input "fcitx5-gtk")
+                             "/include/Fcitx5/GClient")
+              "-DENABLE_GTK2_IM_MODULE=OFF"
+              "-DENABLE_GTK3_IM_MODULE=OFF")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'fix-gclient
+            (lambda* (#:key inputs #:allow-other-keys)
+              (define gclient
+                (search-input-file inputs "lib/libFcitx5GClient.so"))
+              ;; Force cmake search libFcitx5GClient.so in library search
+              ;; path instead of compiling again.
+              (substitute* "gtk4/CMakeLists.txt"
+                (("Fcitx5::GClient")
+                 gclient))))
+          (add-before 'build 'enter-gtk4-subdirectory
+            (lambda _
+              (chdir "gtk4")))
+          (add-after 'install 'leave-gtk4-subdirectory
+            (lambda _
+              (chdir ".."))))))
+    (inputs
+     (modify-inputs (package-inputs fcitx5-gtk)
+       (delete "gtk+")
+       (prepend fcitx5-gtk gtk)))
+    (outputs '("out"))
+    (synopsis "GTK4 IM module for Fcitx 5")
+    (description "Fcitx5-gtk4 provides IM module for GTK4 applications.")))
+
 (define-public fcitx5-qt
   (package
     (name "fcitx5-qt")