unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#44920] [PATCH]: Add fcitx5.
@ 2020-11-28  5:44 Zhu Zihao
  2020-12-03  4:09 ` Peng Mei Yu
  0 siblings, 1 reply; 11+ messages in thread
From: Zhu Zihao @ 2020-11-28  5:44 UTC (permalink / raw)
  To: 44920


[-- Attachment #1.1: Type: text/plain, Size: 140 bytes --]

This is a series of patches, add fcitx5 and its build dependecies.
a qt5 and gtk2/3 plugin, chinese inputmethod addon and a material theme


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 515 bytes --]

[-- Attachment #2: 0001-gnu-Add-xcb-imdkit.patch --]
[-- Type: text/x-patch, Size: 3984 bytes --]

From cbe128e488078b3af8f7d1bdb4bf9dc9f12a2f0b Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 28 Nov 2020 13:16:50 +0800
Subject: [PATCH 1/9] gnu: Add xcb-imdkit.

* gnu/packages/fcitx5.scm: New file.
(xcb-imdkit): New variable.
---
 gnu/packages/fcitx5.scm | 84 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)
 create mode 100644 gnu/packages/fcitx5.scm

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
new file mode 100644
index 0000000000..171d545ed8
--- /dev/null
+++ b/gnu/packages/fcitx5.scm
@@ -0,0 +1,84 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages fcitx5)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages datastructures)
+  #:use-module (gnu packages enchant)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages iso-codes)
+  #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages libevent)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages unicode)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg))
+
+(define-public xcb-imdkit
+  (package
+    (name "xcb-imdkit")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/xcb-imdkit/xcb-imdkit-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "0qgbklk5a809asyaxi6v9iasxc19g16fc5rphnamhwrliczlycas"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove bundled uthash.
+           (delete-file-recursively "uthash")
+           #t))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("uthash" ,uthash)
+       ("libxcb" ,libxcb)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/fcitx/xcb-imdkit")
+    (synopsis "Input method development support for XCB.")
+    (description "Xcb-imdkit is an implementation of xim protocol in XCB,
+comparing with the implementation of IMDkit with Xlib, and xim inside Xlib,
+it has less memory foot print, better performance, and safer on malformed
+client.")
+    (license license:lgpl2.1)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-fcitx5.patch --]
[-- Type: text/x-patch, Size: 9097 bytes --]

From 3870f53451deea014e9d28ce7df418bc9793d3e1 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 28 Nov 2020 13:19:26 +0800
Subject: [PATCH 2/9] gnu: Add fcitx5.

* gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch: New file.
* gnu/local.mk (dist_patch_DATA): Reference new patch.
* gnu/packages/fcitx5.scm(fcitx5): New variable.
---
 gnu/local.mk                                  |   1 +
 gnu/packages/fcitx5.scm                       |  63 ++++++++++
 .../patches/fcitx5-allow-set-cldr-dir.patch   | 114 ++++++++++++++++++
 3 files changed, 178 insertions(+)
 create mode 100644 gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 5277403196..00ba3ee818 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -977,6 +977,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/fasthenry-spSolve.patch			\
   %D%/packages/patches/fasthenry-spFactor.patch			\
   %D%/packages/patches/fbreader-curl-7.62.patch		\
+  %D%/packages/patches/fcitx5-allow-set-cldr-dir.patch          \
   %D%/packages/patches/fifengine-swig-compat.patch		\
   %D%/packages/patches/fifo-map-fix-flags-for-gcc.patch		\
   %D%/packages/patches/fifo-map-remove-catch.hpp.patch		\
diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 171d545ed8..c4ee0c6e3c 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -82,3 +82,66 @@ comparing with the implementation of IMDkit with Xlib, and xim inside Xlib,
 it has less memory foot print, better performance, and safer on malformed
 client.")
     (license license:lgpl2.1)))
+
+(define-public fcitx5
+  (package
+    (name "fcitx5")
+    (version "5.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/fcitx5/fcitx5-"
+                           version "_dict.tar.xz"))
+       (sha256
+        (base32 "0ai7qkxvkdl5qmrvkjp53w1809hhla9csf04qsnf8k33pqbzdgw8"))
+       ;; This backport patch allow us to use CLDR data in unicode-cldr-common.
+       ;; it should be removed after upstream make a newer release.
+       (patches (search-patches "fcitx5-allow-set-cldr-dir.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-DCLDR_DIR="
+                            (assoc-ref %build-inputs "unicode-cldr-common")
+                            "/share/unicode/cldr"))))
+    (inputs
+     `(("cairo" ,cairo)
+       ("cairo-xcb" ,cairo-xcb)
+       ("dbus" ,dbus)
+       ("enchant" ,enchant)
+       ("expat" ,expat)
+       ("fmt" ,fmt)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("gettext" ,gettext-minimal)
+       ("glib" ,glib)
+       ("iso-codes" ,iso-codes)
+       ("json-c" ,json-c)
+       ("libevent" ,libevent)
+       ("libpthread-stubs" ,libpthread-stubs)
+       ("libuuid" ,util-linux "lib")
+       ("libx11" ,libx11)
+       ("libxcb" ,libxcb)
+       ("libxfixes" ,libxfixes)
+       ("libxinerama" ,libxinerama)
+       ("libxkbcommon" ,libxkbcommon)
+       ("libxkbfile" ,libxkbfile)
+       ("pango" ,pango)
+       ("unicode-cldr-common" ,unicode-cldr-common)
+       ("wayland" ,wayland)
+       ("wayland-protocols" ,wayland-protocols)
+       ("xcb-imdkit" ,xcb-imdkit)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)
+       ("xcb-util-wm" ,xcb-util-wm)
+       ("xkeyboard-config" ,xkeyboard-config)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "FCITX_ADDON_DIRS")
+            (files '("lib/fcitx5")))))
+    (home-page "https://github.com/fcitx/fcitx5")
+    (synopsis "Next generation of Fcitx")
+    (description "Fcitx 5 is a generic input method framework, the successor
+of Fcitx.")
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch b/gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch
new file mode 100644
index 0000000000..a0c3b9b60f
--- /dev/null
+++ b/gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch
@@ -0,0 +1,114 @@
+https://github.com/fcitx/fcitx5/commit/a2b09de92a73dfa4ae43d3ac8a4ffa1aa791f6c5.patch
+https://github.com/fcitx/fcitx5/issues/154
+
+From a2b09de92a73dfa4ae43d3ac8a4ffa1aa791f6c5 Mon Sep 17 00:00:00 2001
+From: Weng Xuetian <wengxt@gmail.com>
+Date: Sun, 22 Nov 2020 23:42:44 -0800
+Subject: [PATCH] Allow set CLDR dir
+
+Fix #154
+---
+ CMakeLists.txt                   | 22 +++++++++++++++++++---
+ config.h.in                      |  2 +-
+ src/modules/emoji/CMakeLists.txt |  2 +-
+ src/modules/emoji/emoji.cpp      |  8 +++-----
+ 4 files changed, 24 insertions(+), 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e6763dd..fc84b4b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -29,6 +29,19 @@ option(ENABLE_WAYLAND "Enable wayland support" On)
+ option(ENABLE_DOC "Build doxygen" Off)
+ option(USE_SYSTEMD "Use systemd for event loop and dbus, will fallback to libevent/libdbus if not found." On)
+ option(ENABLE_XDGAUTOSTART "Enable xdg autostart desktop file installation" On)
++set(CLDR_DIR "" CACHE STRING "Unicode CLDR (Common Locale Data Repository) directory")
++
++if (CLDR_DIR STREQUAL "")
++    if (IS_DIRECTORY "${CMAKE_INSTALL_FULL_DATADIR}/unicode/cldr")
++        set(CLDR_DIR "${CMAKE_INSTALL_FULL_DATADIR}/unicode/cldr")
++    else(IS_DIRECTORY "/usr/share/unicode/cldr")
++        set(CLDR_DIR "/usr/share/unicode/cldr")
++    endif()
++endif()
++
++if (NOT IS_DIRECTORY "${CLDR_DIR}")
++    message(FATAL_ERROR "Could not find Unicode CLDR directory")
++endif()
+ 
+ #######################################################################
+ # Find packages
+@@ -73,7 +86,6 @@ pkg_check_modules(CairoXCB IMPORTED_TARGET cairo-xcb)
+ pkg_check_modules(Pango IMPORTED_TARGET pango pangocairo)
+ pkg_check_modules(GdkPixbuf IMPORTED_TARGET gdk-pixbuf-2.0)
+ pkg_check_modules(GioUnix IMPORTED_TARGET gio-unix-2.0)
+-pkg_check_modules(CldrEmojiAnnotation REQUIRED IMPORTED_TARGET cldr-emoji-annotation)
+ 
+ if (ENABLE_WAYLAND)
+     find_package(Wayland REQUIRED COMPONENTS Client Egl)
+@@ -106,10 +118,14 @@ else()
+     set(WAYLAND_FOUND FALSE)
+ endif()
+ 
++if (NOT EXISTS "${CLDR_DIR}")
++  message(FATAL_ERROR "Could not find Unicode CLDR directory: ${CLDR_DIR}")
++endif()
++
+ set(DEFAULT_XKB_RULES_FILES "${XKEYBOARDCONFIG_XKBBASE}/rules/${DEFAULT_XKB_RULES}.xml")
+ if (NOT EXISTS "${DEFAULT_XKB_RULES_FILES}")
+-message(FATAL_ERROR "Could not find default xkb rules file: ${DEFAULT_XKB_RULES_FILES}")
+-endif ()
++  message(FATAL_ERROR "Could not find default xkb rules file: ${DEFAULT_XKB_RULES_FILES}")
++endif()
+ 
+ # directory needed by bsd
+ if(NOT CMAKE_INSTALL_LIBDATADIR)
+diff --git a/config.h.in b/config.h.in
+index 09bf002..4291152 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -33,7 +33,7 @@
+ #cmakedefine HAS_DLMOPEN
+ #define XKEYBOARDCONFIG_DATADIR "@XKEYBOARDCONFIG_DATADIR@"
+ #define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "@DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@"
+-#define CLDR_EMOJI_ANNOTATION_PREFIX "@CldrEmojiAnnotation_PREFIX@"
++#define CLDR_DIR "@CLDR_DIR@"
+ 
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
+diff --git a/src/modules/emoji/CMakeLists.txt b/src/modules/emoji/CMakeLists.txt
+index 9fa84bb..57ae48b 100644
+--- a/src/modules/emoji/CMakeLists.txt
++++ b/src/modules/emoji/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-if (NOT IS_DIRECTORY ${CldrEmojiAnnotation_PREFIX}/share/unicode/cldr/common/annotations)
++if ("${CLDR_DIR}" STREQUAL "" OR NOT IS_DIRECTORY "${CLDR_DIR}/common/annotations")
+     return()
+ endif()
+ 
+diff --git a/src/modules/emoji/emoji.cpp b/src/modules/emoji/emoji.cpp
+index 5606a37..805aef7 100644
+--- a/src/modules/emoji/emoji.cpp
++++ b/src/modules/emoji/emoji.cpp
+@@ -126,7 +126,7 @@ bool noSpace(const std::string &str) {
+ 
+ const EmojiMap *Emoji::loadEmoji(const std::string &language,
+                                  bool fallbackToEn) {
+-    // This is to match the file in cldr-emoji-annotation.
++    // This is to match the file in CLDR.
+     static const std::unordered_map<std::string, std::string> languageMap = {
+         {"zh_TW", "zh_Hant"}, {"zh_CN", "zh"}, {"zh_HK", "zh_Hant_HK"}};
+ 
+@@ -172,10 +172,8 @@ const EmojiMap *Emoji::loadEmoji(const std::string &language,
+                               return utf8::lengthValidated(str) > 2;
+                           }}};
+         const auto *filter = findValue(filterMap, lang);
+-        const auto file =
+-            stringutils::joinPath(CLDR_EMOJI_ANNOTATION_PREFIX,
+-                                  "/share/unicode/cldr/common/annotations",
+-                                  stringutils::concat(lang, ".xml"));
++        const auto file = stringutils::joinPath(
++            CLDR_DIR, "/common/annotations", stringutils::concat(lang, ".xml"));
+         EmojiParser parser(filter ? *filter : nullptr);
+         if (parser.parse(file)) {
+             emojiMap = &(langToEmojiMap_[lang] = std::move(parser.emojiMap_));
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-Add-fcitx5-lua.patch --]
[-- Type: text/x-patch, Size: 2373 bytes --]

From d1e53ec2239077da96d871900fbb4c6d2d274cc5 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 28 Nov 2020 13:20:51 +0800
Subject: [PATCH 3/9] gnu: Add fcitx5-lua.

* gnu/packages/fcitx5.scm(fcitx5-lua): New variable.
---
 gnu/packages/fcitx5.scm | 44 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index c4ee0c6e3c..c48eafbad5 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -145,3 +145,47 @@ client.")
     (description "Fcitx 5 is a generic input method framework, the successor
 of Fcitx.")
     (license license:lgpl2.1+)))
+
+(define-public fcitx5-lua
+  (package
+    (name "fcitx5-lua")
+    (version "5.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/fcitx5-lua/fcitx5-lua-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "0v4kjx5bargmzfm3v2kys1kzfbpkbd8inzw23y9hslc8h5zazj33"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        (string-append "-DFEM_INCLUDE_INSTALL_DIR=" %output "/include")
+        (string-append "-DFEM_LIB_INSTALL_DIR=" %output "/lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-install-prefix
+           (lambda* (#:key outputs #:allow-other-keys)
+             (for-each
+              (lambda (x)
+                (format #t "patch-install-prefix: Fixing install prefix in ~a~%"
+                        x)
+                (substitute* x
+                  (("\\$\\{FCITX_INSTALL_PKGDATADIR\\}")
+                   (string-append (assoc-ref outputs "out")
+                                  "/share/fcitx5"))))
+              '("src/addonloader/CMakeLists.txt"
+                "src/imeapi/CMakeLists.txt"))
+             #t)))))
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("lua" ,lua)
+       ("gettext" ,gettext-minimal)
+       ("libpthread-stubs" ,libpthread-stubs)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (home-page "https://github.com/fcitx/fcitx5-lua")
+    (synopsis "Lua support for Fcitx 5")
+    (description "Fcitx5-lua allow user to write Fcitx5 extension in Lua.")
+    (license license:lgpl2.1+)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-Add-libime.patch --]
[-- Type: text/x-patch, Size: 1628 bytes --]

From 69b4cfc316e81e9c0ebdb307af033bf2e0a5faca Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 28 Nov 2020 13:21:38 +0800
Subject: [PATCH 4/9] gnu: Add libime.

* gnu/packages/fcitx5.scm(libime): New variable.
---
 gnu/packages/fcitx5.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index c48eafbad5..9f031a1289 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -189,3 +189,28 @@ of Fcitx.")
     (synopsis "Lua support for Fcitx 5")
     (description "Fcitx5-lua allow user to write Fcitx5 extension in Lua.")
     (license license:lgpl2.1+)))
+
+(define-public libime
+  (package
+    (name "libime")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/libime/libime-"
+                           version "_dict.tar.xz"))
+       (sha256
+        (base32 "0kymzn0srdmpbn43rg4zpz09baz3bcw18v648jsqsb2j488s2paq"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("boost" ,boost)))
+    (native-inputs
+     `(("gcc" ,gcc-9)                  ;for #include <filesystem> and ld support
+       ("extra-cmake-modules" ,extra-cmake-modules)
+       ("python" ,python)))             ;needed to run test
+    (home-page "https://github.com/fcitx/libime")
+    (synopsis "Library supports generic input method implmentation")
+    (description "Libime is a library, being used to implment various input
+methods for Fcitx 5.")
+    (license license:lgpl2.1+)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-gnu-Add-fcitx5-qt.patch --]
[-- Type: text/x-patch, Size: 2075 bytes --]

From 8af5ff96d20a5fd2b3faa43b05935f9755880959 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 28 Nov 2020 13:24:20 +0800
Subject: [PATCH 5/9] gnu: Add fcitx5-qt.

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

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 9f031a1289..4e3ba010ef 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -214,3 +214,39 @@ of Fcitx.")
     (description "Libime is a library, being used to implment various input
 methods for Fcitx 5.")
     (license license:lgpl2.1+)))
+
+(define-public fcitx5-qt
+  (package
+    (name "fcitx5-qt")
+    (version "5.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5"
+                           "/fcitx5-qt/fcitx5-qt-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "0s0spjr8m7dw2f18xxqg6lwn3y575g411j9j9w8xv1cqsm9fm49f"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-DCMAKE_INSTALL_QT5PLUGINDIR="
+                            %output "/lib/qt5/plugins")
+             "-DENABLE_QT4=Off")))
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("libxcb" ,libxcb)
+       ("libxkbcommon" ,libxkbcommon)
+       ("qtbase" ,qtbase)
+       ("gettext" ,gettext-minimal)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (home-page "https://github.com/fcitx/fcitx5-qt")
+    (synopsis "Qt library and IM module for Fcitx 5")
+    (description "Fcitx5-qt provides Qt library for development and IM module
+for Qt5 based application.")
+    (license (list license:lgpl2.1+
+                   ;; Files under qt4/ which include Fcitx5Qt4DBusAddons Library
+                   ;; and input context plugin and files under qt5/dbusaddons
+                   ;; and qt5/platforminputcontext
+                   license:bsd-3))))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-fcitx5-gtk.patch --]
[-- Type: text/x-patch, Size: 2661 bytes --]

From 9a4111139bc059fbacc2f6aa8a3d5922d4f837fd Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 28 Nov 2020 13:25:19 +0800
Subject: [PATCH 6/9] gnu: Add fcitx5-gtk.

* gnu/packages/fcitx5.scm(fcitx5-gtk): New variable.
---
 gnu/packages/fcitx5.scm | 50 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 4e3ba010ef..9673ff2c47 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -215,6 +215,56 @@ of Fcitx.")
 methods for Fcitx 5.")
     (license license:lgpl2.1+)))
 
+(define-public fcitx5-gtk
+  (package
+    (name "fcitx5-gtk")
+    (version "5.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5"
+                           "/fcitx5-gtk/fcitx5-gtk-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "0k09f3ca4jm4y33xr642wrbf2zfjqr7gjx1i28z0vwb1rmjn026y"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;No test
+       #:configure-flags
+       (list (string-append "-DGOBJECT_INTROSPECTION_GIRDIR="
+                            %output "/share/gir-1.0")
+             (string-append "-DGOBJECT_INTROSPECTION_TYPELIBDIR="
+                            %output "/lib/girepository-1.0"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-install-prefix
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gtk3 (assoc-ref outputs "gtk3")))
+
+               (substitute* "gtk3/CMakeLists.txt"
+                 (("\\$\\{CMAKE_INSTALL_LIBDIR\\}")
+                  (string-append gtk3 "/lib")))))))))
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("libxkbcommon" ,libxkbcommon)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk2" ,gtk+-2)
+       ("gtk3" ,gtk+)
+       ("glib" ,glib)
+       ("libx11" ,libx11)
+       ("gettext" ,gettext-minimal)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)
+       ("glib" ,glib "bin")))           ;for glib-genmarshal
+    (outputs '("out" "gtk3"))
+    (home-page "https://github.com/fcitx/fcitx5-gtk")
+    (synopsis "Glib based D-Bus client and GTK IM module for Fcitx 5")
+    (description "Fcitx5-qt provides a Glib based D-Bus client for development
+and IM module for GTK+2/GTK+3 application.")
+    (license license:lgpl2.1+)))
+
 (define-public fcitx5-qt
   (package
     (name "fcitx5-qt")
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-gnu-Add-fcitx5-chinese-addons.patch --]
[-- Type: text/x-patch, Size: 3630 bytes --]

From f0905307b179d478475a0433cbebf1532ecf6a95 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 28 Nov 2020 13:25:37 +0800
Subject: [PATCH 7/9] gnu: Add fcitx5-chinese-addons.

* gnu/packages/fcitx5.scm(fcitx5-chinese-addons): New variable.
---
 gnu/packages/fcitx5.scm | 79 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 9673ff2c47..076a96992d 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -300,3 +300,82 @@ for Qt5 based application.")
                    ;; and input context plugin and files under qt5/dbusaddons
                    ;; and qt5/platforminputcontext
                    license:bsd-3))))
+
+(define-public fcitx5-chinese-addons
+  (package
+    (name "fcitx5-chinese-addons")
+    (version "5.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5"
+                           "/fcitx5-chinese-addons/fcitx5-chinese-addons-"
+                           version "_dict.tar.xz"))
+       (sha256
+        (base32 "015yx7wwhyjnhbrx2akc90nnzvmyhv1jv2n0mv7x7hsj05m62q8l"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        (string-append "-DFEM_INCLUDE_INSTALL_DIR=" %output "/include")
+        (string-append "-DFEM_LIB_INSTALL_DIR=" %output "/lib")
+        ;; "-DENABLE_GUI=Off"
+        )
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-install-prefix
+           (lambda* (#:key outputs #:allow-other-keys)
+             (for-each
+              (lambda (x)
+                (format #t "patch-install-prefix: Fixing install prefix in ~a~%"
+                        x)
+                (substitute* x
+                  (("\\$\\{FCITX_INSTALL_PKGDATADIR\\}")
+                   (string-append (assoc-ref outputs "out")
+                                  "/share/fcitx5"))))
+              (find-files "." "CMakeLists\\.txt$"))
+             #t))
+         (add-before 'configure 'split-outputs
+           ;; Build with GUI supports requires Qt and increase package closure
+           ;; by 800M on x86_64, so place it under another output.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "gui/pinyindictmanager/CMakeLists.txt"
+               (("\\$\\{CMAKE_INSTALL_LIBDIR\\}" _)
+                (string-append (assoc-ref outputs "gui") "/lib"))))))))
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("fcitx5-lua" ,fcitx5-lua)
+       ("boost" ,boost)
+       ("libime",libime)
+       ("curl" ,curl)
+       ("gettext" ,gettext-minimal)
+       ("fmt" ,fmt)
+       ("libpthread-stubs" ,libpthread-stubs)
+       ("opencc" ,opencc)
+       ("qtbase" ,qtbase)
+       ("fcitx5-qt" ,fcitx5-qt)
+       ("qtwebkit" ,qtwebkit)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (outputs '("out" "gui"))
+    (home-page "https://github.com/fcitx/fcitx5-chinese-addons")
+    (synopsis "Chinese related addons for Fcitx 5")
+    (description "Fcitx5-chinese-addons provides Chinese related addons,
+including input methods previous bundled inside Fcitx 4:
+
+@itemize
+@item Bingchan
+@item Cangjie
+@item Erbi
+@item Pinyin
+@item Shuangpin
+@item Wanfeng
+@item Wubi
+@item Wubi Pinyin
+@item Ziranma
+@end itemize\n")
+    (license (list license:lgpl2.1+
+                   license:gpl2+
+                   ;; im/pinyin/emoji.txt
+                   license:unicode))))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-gnu-Add-fcitx5-configtool.patch --]
[-- Type: text/x-patch, Size: 2331 bytes --]

From 95c20d878565cb3ff7870187e1806743d7e526f3 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 28 Nov 2020 13:25:55 +0800
Subject: [PATCH 8/9] gnu: Add fcitx5-configtool.

* gnu/packages/fcitx5.scm(fcitx5-configtool): New variable.
---
 gnu/packages/fcitx5.scm | 42 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 076a96992d..bc8fa5d7dc 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -379,3 +379,45 @@ including input methods previous bundled inside Fcitx 4:
                    license:gpl2+
                    ;; im/pinyin/emoji.txt
                    license:unicode))))
+
+(define-public fcitx5-configtool
+  (let ((revision "0")
+        (commit "9c01bfc7477c203443ed073397670df52d1a6fc0"))
+    (package
+      (name "fcitx5-configtool")
+      (version (git-version "5.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/fcitx/fcitx5-configtool")
+               (commit commit)))
+         (sha256
+          (base32 "03hfbr97953alxax3db1x16h17cgqx30xvqs070iz8rj232iiaia"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:configure-flags
+         ;; KDE is currently not working on Guix, KCM supports doesn't make sense.
+         '("-DENABLE_KCM=Off")))
+      (inputs
+       `(("fcitx5" ,fcitx5)
+         ("fcitx5-qt" ,fcitx5-qt)
+         ("qtbase" ,qtbase)
+         ("qtx11extras" ,qtx11extras)
+         ("kitemviews" ,kitemviews)
+         ("kwidgetsaddons" ,kwidgetsaddons)
+         ("libx11" ,libx11)
+         ("xkeyboard-config" ,xkeyboard-config)
+         ("libxkbfile" ,libxkbfile)
+         ("gettext" ,gettext-minimal)
+         ("iso-codes" ,iso-codes)))
+      (native-inputs
+       `(("gcc" ,gcc-9)
+         ("extra-cmake-modules" ,extra-cmake-modules)
+         ("pkg-config" ,pkg-config)))
+      (home-page "https://github.com/fcitx/fcitx5-configtool")
+      (synopsis "Graphical configuration tool for Fcitx 5")
+      (description "Fcitx5-configtool is a graphical configuration tool
+written in Qt, design for managing different input methods running under
+Fcitx 5.")
+      (license license:gpl2+))))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #10: 0009-gnu-Add-fcitx5-material-color-theme.patch --]
[-- Type: text/x-patch, Size: 3378 bytes --]

From 32f4fef151807a0620fec7654094ed3945a02bcf Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 28 Nov 2020 13:27:08 +0800
Subject: [PATCH 9/9] gnu: Add fcitx5-material-color-theme.

* gnu/packages/fcitx5.scm(fcitx5-material-color-theme): New variable.
---
 gnu/packages/fcitx5.scm | 70 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index bc8fa5d7dc..80fb989408 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -421,3 +421,73 @@ including input methods previous bundled inside Fcitx 4:
 written in Qt, design for managing different input methods running under
 Fcitx 5.")
       (license license:gpl2+))))
+
+(define-public fcitx5-material-color-theme
+  (package
+    (name "fcitx5-material-color-theme")
+    (version "0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hosxy/Fcitx5-Material-Color")
+             (commit version)))
+       (sha256
+        (base32 "1mgc722521jmfx0xc3ibmiycd3q2w7xg2956xcpc07kz90gcdjaa"))))
+    (build-system copy-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (use-modules (srfi srfi-26))
+
+             (let* ((out (assoc-ref outputs "out"))
+                    (assets-dir (string-append
+                                 out "/share/fcitx5-material-color-theme"))
+                    (themes-prefix (string-append out "/share/fcitx5/themes")))
+
+               (define (install-theme-variant variant target)
+                 (let ((dir (string-append themes-prefix "/" target))
+                       (png (string-append "panel-" variant ".png"))
+                       (conf (string-append "theme-" variant ".conf")))
+                   (format #t "install: Installing color variant \"~a\" to ~a~%"
+                           variant dir)
+                   (substitute* conf
+                     (("^Name=.*")
+                      (string-append "Name=" target "\n")))
+                   (mkdir-p dir)
+                   (install-file png dir)
+                   (copy-file conf (string-append dir "/theme.conf"))
+                   (symlink (string-append assets-dir "/arrow.png")
+                            (string-append dir "/arrow.png"))))
+
+               (mkdir-p assets-dir)
+               (install-file "arrow.png" assets-dir)
+               (for-each
+                (lambda (x)
+                  (install-theme-variant
+                   x (string-append "Material-Color-" (string-capitalize x))))
+                '("black" "blue" "brown" "indigo"
+                  "orange" "pink" "red" "teal"))
+
+               (install-theme-variant
+                "deepPurple" "Material-Color-DeepPurple")
+               #t))))))
+    (home-page "https://github.com/hosxy/Fcitx5-Material-Color")
+    (synopsis "Fcitx 5 theme use Material Design")
+    (description "Fcitx5-material-color-theme contains Material Design theme
+with following color variants:
+
+@itemize
+@item Black
+@item Blue
+@item Brown
+@item Indigo
+@item Orange
+@item Pink
+@item Red
+@item teal
+@item DeepPurple
+@end itemize\n")
+    (license license:asl2.0)))
-- 
2.29.2


[-- Attachment #11: Type: text/plain, Size: 72 bytes --]



-- 
Retrieve my PGP public key: https://meta.sr.ht/~citreu.pgp

Zihao

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#44920] [PATCH]: Add fcitx5.
  2020-11-28  5:44 [bug#44920] [PATCH]: Add fcitx5 Zhu Zihao
@ 2020-12-03  4:09 ` Peng Mei Yu
  2020-12-05  4:09   ` Zhu Zihao
  0 siblings, 1 reply; 11+ messages in thread
From: Peng Mei Yu @ 2020-12-03  4:09 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 44920

Hi Zhu Zihao,

Great work.  This patch series provides a long waited alternative to
ibus.  I prefer to use ibus as my input method editor, but still thank
you for this work.

Please see comments bellow.


Zhu Zihao writes:

> This is a series of patches, add fcitx5 and its build dependecies.
> a qt5 and gtk2/3 plugin, chinese inputmethod addon and a material theme
>
> From cbe128e488078b3af8f7d1bdb4bf9dc9f12a2f0b Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 28 Nov 2020 13:16:50 +0800
> Subject: [PATCH 1/9] gnu: Add xcb-imdkit.
>
> * gnu/packages/fcitx5.scm: New file.
> (xcb-imdkit): New variable.

These packages should be put into gnu/packages/fcitx.scm.

> ---
>  gnu/packages/fcitx5.scm | 84 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 84 insertions(+)
>  create mode 100644 gnu/packages/fcitx5.scm
>
> diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
> new file mode 100644
> index 0000000000..171d545ed8
> --- /dev/null
> +++ b/gnu/packages/fcitx5.scm
> @@ -0,0 +1,84 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (gnu packages fcitx5)
> +  #:use-module (guix packages)
> +  #:use-module (guix download)
> +  #:use-module (guix git-download)
> +  #:use-module (guix build-system cmake)
> +  #:use-module (guix build-system copy)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (gnu packages)
> +  #:use-module (gnu packages boost)
> +  #:use-module (gnu packages curl)
> +  #:use-module (gnu packages datastructures)
> +  #:use-module (gnu packages enchant)
> +  #:use-module (gnu packages freedesktop)
> +  #:use-module (gnu packages gettext)
> +  #:use-module (gnu packages gcc)
> +  #:use-module (gnu packages glib)
> +  #:use-module (gnu packages gtk)
> +  #:use-module (gnu packages iso-codes)
> +  #:use-module (gnu packages kde-frameworks)
> +  #:use-module (gnu packages libevent)
> +  #:use-module (gnu packages linux)
> +  #:use-module (gnu packages lua)
> +  #:use-module (gnu packages pkg-config)
> +  #:use-module (gnu packages pretty-print)
> +  #:use-module (gnu packages python)
> +  #:use-module (gnu packages qt)
> +  #:use-module (gnu packages textutils)
> +  #:use-module (gnu packages unicode)
> +  #:use-module (gnu packages web)
> +  #:use-module (gnu packages xdisorg)
> +  #:use-module (gnu packages xml)
> +  #:use-module (gnu packages xorg))
> +
> +(define-public xcb-imdkit
> +  (package
> +    (name "xcb-imdkit")
> +    (version "1.0.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://download.fcitx-im.org/fcitx5/xcb-imdkit/xcb-imdkit-"
> +                           version ".tar.xz"))
> +       (sha256
> +        (base32 "0qgbklk5a809asyaxi6v9iasxc19g16fc5rphnamhwrliczlycas"))
> +       (modules '((guix build utils)))
> +       (snippet
> +        '(begin
> +           ;; Remove bundled uthash.
> +           (delete-file-recursively "uthash")
> +           #t))))
> +    (build-system cmake-build-system)
> +    (inputs
> +     `(("uthash" ,uthash)
> +       ("libxcb" ,libxcb)
> +       ("xcb-util" ,xcb-util)
> +       ("xcb-util-keysyms" ,xcb-util-keysyms)))
> +    (native-inputs
> +     `(("extra-cmake-modules" ,extra-cmake-modules)
> +       ("pkg-config" ,pkg-config)))
> +    (home-page "https://github.com/fcitx/xcb-imdkit")
> +    (synopsis "Input method development support for XCB.")
> +    (description "Xcb-imdkit is an implementation of xim protocol in XCB,
> +comparing with the implementation of IMDkit with Xlib, and xim inside Xlib,
> +it has less memory foot print, better performance, and safer on malformed
> +client.")
> +    (license license:lgpl2.1)))
> --
> 2.29.2
>
> From 3870f53451deea014e9d28ce7df418bc9793d3e1 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 28 Nov 2020 13:19:26 +0800
> Subject: [PATCH 2/9] gnu: Add fcitx5.
>
> * gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Reference new patch.
> * gnu/packages/fcitx5.scm(fcitx5): New variable.
> ---
>  gnu/local.mk                                  |   1 +
>  gnu/packages/fcitx5.scm                       |  63 ++++++++++
>  .../patches/fcitx5-allow-set-cldr-dir.patch   | 114 ++++++++++++++++++
>  3 files changed, 178 insertions(+)
>  create mode 100644 gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 5277403196..00ba3ee818 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -977,6 +977,7 @@ dist_patch_DATA =						\
>    %D%/packages/patches/fasthenry-spSolve.patch			\
>    %D%/packages/patches/fasthenry-spFactor.patch			\
>    %D%/packages/patches/fbreader-curl-7.62.patch		\
> +  %D%/packages/patches/fcitx5-allow-set-cldr-dir.patch          \
>    %D%/packages/patches/fifengine-swig-compat.patch		\
>    %D%/packages/patches/fifo-map-fix-flags-for-gcc.patch		\
>    %D%/packages/patches/fifo-map-remove-catch.hpp.patch		\
> diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
> index 171d545ed8..c4ee0c6e3c 100644
> --- a/gnu/packages/fcitx5.scm
> +++ b/gnu/packages/fcitx5.scm
> @@ -82,3 +82,66 @@ comparing with the implementation of IMDkit with Xlib, and xim inside Xlib,
>  it has less memory foot print, better performance, and safer on malformed
>  client.")
>      (license license:lgpl2.1)))
> +
> +(define-public fcitx5
> +  (package
> +    (name "fcitx5")
> +    (version "5.0.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://download.fcitx-im.org/fcitx5/fcitx5/fcitx5-"
> +                           version "_dict.tar.xz"))
> +       (sha256
> +        (base32 "0ai7qkxvkdl5qmrvkjp53w1809hhla9csf04qsnf8k33pqbzdgw8"))
> +       ;; This backport patch allow us to use CLDR data in unicode-cldr-common.
                  ^^^^^^^^       ^^^^^
                  backported     allows
> +       ;; it should be removed after upstream make a newer release.
             ^^                                  ^^^^
             It
> +       (patches (search-patches "fcitx5-allow-set-cldr-dir.patch"))))
> +    (build-system cmake-build-system)
> +    (arguments
> +     `(#:configure-flags
> +       (list (string-append "-DCLDR_DIR="
> +                            (assoc-ref %build-inputs "unicode-cldr-common")
> +                            "/share/unicode/cldr"))))
> +    (inputs
> +     `(("cairo" ,cairo)
> +       ("cairo-xcb" ,cairo-xcb)
> +       ("dbus" ,dbus)
> +       ("enchant" ,enchant)
> +       ("expat" ,expat)
> +       ("fmt" ,fmt)
> +       ("gdk-pixbuf" ,gdk-pixbuf)
> +       ("gettext" ,gettext-minimal)
> +       ("glib" ,glib)
> +       ("iso-codes" ,iso-codes)
> +       ("json-c" ,json-c)
> +       ("libevent" ,libevent)
> +       ("libpthread-stubs" ,libpthread-stubs)
> +       ("libuuid" ,util-linux "lib")
> +       ("libx11" ,libx11)
> +       ("libxcb" ,libxcb)
> +       ("libxfixes" ,libxfixes)
> +       ("libxinerama" ,libxinerama)
> +       ("libxkbcommon" ,libxkbcommon)
> +       ("libxkbfile" ,libxkbfile)
> +       ("pango" ,pango)
> +       ("unicode-cldr-common" ,unicode-cldr-common)
> +       ("wayland" ,wayland)
> +       ("wayland-protocols" ,wayland-protocols)
> +       ("xcb-imdkit" ,xcb-imdkit)
> +       ("xcb-util" ,xcb-util)
> +       ("xcb-util-keysyms" ,xcb-util-keysyms)
> +       ("xcb-util-wm" ,xcb-util-wm)
> +       ("xkeyboard-config" ,xkeyboard-config)))
> +    (native-inputs
> +     `(("extra-cmake-modules" ,extra-cmake-modules)
> +       ("pkg-config" ,pkg-config)))
> +    (native-search-paths
> +     (list (search-path-specification
> +            (variable "FCITX_ADDON_DIRS")
> +            (files '("lib/fcitx5")))))
> +    (home-page "https://github.com/fcitx/fcitx5")
> +    (synopsis "Next generation of Fcitx")

"Input method framework" is better.

> +    (description "Fcitx 5 is a generic input method framework, the successor
> +of Fcitx.")

I don't think we should emphasize that Fcitx 5 is the successor to
Fcitx.  It's obvious.  The old Fcitx 4 has already been deprecated by
the author.  Do you think there is a good reason to keep the current
Fcitx package while adding a Fcitx 5 package?  Why not replace the old
one?

> +    (license license:lgpl2.1+)))
> diff --git a/gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch b/gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch
> new file mode 100644
> index 0000000000..a0c3b9b60f
> --- /dev/null
> +++ b/gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch
> @@ -0,0 +1,114 @@
> +https://github.com/fcitx/fcitx5/commit/a2b09de92a73dfa4ae43d3ac8a4ffa1aa791f6c5.patch
> +https://github.com/fcitx/fcitx5/issues/154
> +
> +From a2b09de92a73dfa4ae43d3ac8a4ffa1aa791f6c5 Mon Sep 17 00:00:00 2001
> +From: Weng Xuetian <wengxt@gmail.com>
> +Date: Sun, 22 Nov 2020 23:42:44 -0800
> +Subject: [PATCH] Allow set CLDR dir
> +
> +Fix #154
> +---
> + CMakeLists.txt                   | 22 +++++++++++++++++++---
> + config.h.in                      |  2 +-
> + src/modules/emoji/CMakeLists.txt |  2 +-
> + src/modules/emoji/emoji.cpp      |  8 +++-----
> + 4 files changed, 24 insertions(+), 10 deletions(-)
> +
> +diff --git a/CMakeLists.txt b/CMakeLists.txt
> +index e6763dd..fc84b4b 100644
> +--- a/CMakeLists.txt
> ++++ b/CMakeLists.txt
> +@@ -29,6 +29,19 @@ option(ENABLE_WAYLAND "Enable wayland support" On)
> + option(ENABLE_DOC "Build doxygen" Off)
> + option(USE_SYSTEMD "Use systemd for event loop and dbus, will fallback to libevent/libdbus if not found." On)
> + option(ENABLE_XDGAUTOSTART "Enable xdg autostart desktop file installation" On)
> ++set(CLDR_DIR "" CACHE STRING "Unicode CLDR (Common Locale Data Repository) directory")
> ++
> ++if (CLDR_DIR STREQUAL "")
> ++    if (IS_DIRECTORY "${CMAKE_INSTALL_FULL_DATADIR}/unicode/cldr")
> ++        set(CLDR_DIR "${CMAKE_INSTALL_FULL_DATADIR}/unicode/cldr")
> ++    else(IS_DIRECTORY "/usr/share/unicode/cldr")
> ++        set(CLDR_DIR "/usr/share/unicode/cldr")
> ++    endif()
> ++endif()
> ++
> ++if (NOT IS_DIRECTORY "${CLDR_DIR}")
> ++    message(FATAL_ERROR "Could not find Unicode CLDR directory")
> ++endif()
> +
> + #######################################################################
> + # Find packages
> +@@ -73,7 +86,6 @@ pkg_check_modules(CairoXCB IMPORTED_TARGET cairo-xcb)
> + pkg_check_modules(Pango IMPORTED_TARGET pango pangocairo)
> + pkg_check_modules(GdkPixbuf IMPORTED_TARGET gdk-pixbuf-2.0)
> + pkg_check_modules(GioUnix IMPORTED_TARGET gio-unix-2.0)
> +-pkg_check_modules(CldrEmojiAnnotation REQUIRED IMPORTED_TARGET cldr-emoji-annotation)
> +
> + if (ENABLE_WAYLAND)
> +     find_package(Wayland REQUIRED COMPONENTS Client Egl)
> +@@ -106,10 +118,14 @@ else()
> +     set(WAYLAND_FOUND FALSE)
> + endif()
> +
> ++if (NOT EXISTS "${CLDR_DIR}")
> ++  message(FATAL_ERROR "Could not find Unicode CLDR directory: ${CLDR_DIR}")
> ++endif()
> ++
> + set(DEFAULT_XKB_RULES_FILES "${XKEYBOARDCONFIG_XKBBASE}/rules/${DEFAULT_XKB_RULES}.xml")
> + if (NOT EXISTS "${DEFAULT_XKB_RULES_FILES}")
> +-message(FATAL_ERROR "Could not find default xkb rules file: ${DEFAULT_XKB_RULES_FILES}")
> +-endif ()
> ++  message(FATAL_ERROR "Could not find default xkb rules file: ${DEFAULT_XKB_RULES_FILES}")
> ++endif()
> +
> + # directory needed by bsd
> + if(NOT CMAKE_INSTALL_LIBDATADIR)
> +diff --git a/config.h.in b/config.h.in
> +index 09bf002..4291152 100644
> +--- a/config.h.in
> ++++ b/config.h.in
> +@@ -33,7 +33,7 @@
> + #cmakedefine HAS_DLMOPEN
> + #define XKEYBOARDCONFIG_DATADIR "@XKEYBOARDCONFIG_DATADIR@"
> + #define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "@DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@"
> +-#define CLDR_EMOJI_ANNOTATION_PREFIX "@CldrEmojiAnnotation_PREFIX@"
> ++#define CLDR_DIR "@CLDR_DIR@"
> +
> + #ifndef _GNU_SOURCE
> + #define _GNU_SOURCE
> +diff --git a/src/modules/emoji/CMakeLists.txt b/src/modules/emoji/CMakeLists.txt
> +index 9fa84bb..57ae48b 100644
> +--- a/src/modules/emoji/CMakeLists.txt
> ++++ b/src/modules/emoji/CMakeLists.txt
> +@@ -1,4 +1,4 @@
> +-if (NOT IS_DIRECTORY ${CldrEmojiAnnotation_PREFIX}/share/unicode/cldr/common/annotations)
> ++if ("${CLDR_DIR}" STREQUAL "" OR NOT IS_DIRECTORY "${CLDR_DIR}/common/annotations")
> +     return()
> + endif()
> +
> +diff --git a/src/modules/emoji/emoji.cpp b/src/modules/emoji/emoji.cpp
> +index 5606a37..805aef7 100644
> +--- a/src/modules/emoji/emoji.cpp
> ++++ b/src/modules/emoji/emoji.cpp
> +@@ -126,7 +126,7 @@ bool noSpace(const std::string &str) {
> +
> + const EmojiMap *Emoji::loadEmoji(const std::string &language,
> +                                  bool fallbackToEn) {
> +-    // This is to match the file in cldr-emoji-annotation.
> ++    // This is to match the file in CLDR.
> +     static const std::unordered_map<std::string, std::string> languageMap = {
> +         {"zh_TW", "zh_Hant"}, {"zh_CN", "zh"}, {"zh_HK", "zh_Hant_HK"}};
> +
> +@@ -172,10 +172,8 @@ const EmojiMap *Emoji::loadEmoji(const std::string &language,
> +                               return utf8::lengthValidated(str) > 2;
> +                           }}};
> +         const auto *filter = findValue(filterMap, lang);
> +-        const auto file =
> +-            stringutils::joinPath(CLDR_EMOJI_ANNOTATION_PREFIX,
> +-                                  "/share/unicode/cldr/common/annotations",
> +-                                  stringutils::concat(lang, ".xml"));
> ++        const auto file = stringutils::joinPath(
> ++            CLDR_DIR, "/common/annotations", stringutils::concat(lang, ".xml"));
> +         EmojiParser parser(filter ? *filter : nullptr);
> +         if (parser.parse(file)) {
> +             emojiMap = &(langToEmojiMap_[lang] = std::move(parser.emojiMap_));
> --
> 2.29.2
>
> From d1e53ec2239077da96d871900fbb4c6d2d274cc5 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 28 Nov 2020 13:20:51 +0800
> Subject: [PATCH 3/9] gnu: Add fcitx5-lua.
>
> * gnu/packages/fcitx5.scm(fcitx5-lua): New variable.
> ---
>  gnu/packages/fcitx5.scm | 44 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 44 insertions(+)
>
> diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
> index c4ee0c6e3c..c48eafbad5 100644
> --- a/gnu/packages/fcitx5.scm
> +++ b/gnu/packages/fcitx5.scm
> @@ -145,3 +145,47 @@ client.")
>      (description "Fcitx 5 is a generic input method framework, the successor
>  of Fcitx.")
>      (license license:lgpl2.1+)))
> +
> +(define-public fcitx5-lua
> +  (package
> +    (name "fcitx5-lua")
> +    (version "5.0.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://download.fcitx-im.org/fcitx5/fcitx5-lua/fcitx5-lua-"
> +                           version ".tar.xz"))

Please follow 80-column rule.

> +       (sha256
> +        (base32 "0v4kjx5bargmzfm3v2kys1kzfbpkbd8inzw23y9hslc8h5zazj33"))))
> +    (build-system cmake-build-system)
> +    (arguments
> +     `(#:configure-flags
> +       (list
> +        (string-append "-DFEM_INCLUDE_INSTALL_DIR=" %output "/include")
> +        (string-append "-DFEM_LIB_INSTALL_DIR=" %output "/lib"))
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-before 'configure 'patch-install-prefix
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (for-each
> +              (lambda (x)
> +                (format #t "patch-install-prefix: Fixing install prefix in ~a~%"
> +                        x)
> +                (substitute* x
> +                  (("\\$\\{FCITX_INSTALL_PKGDATADIR\\}")
> +                   (string-append (assoc-ref outputs "out")
> +                                  "/share/fcitx5"))))
> +              '("src/addonloader/CMakeLists.txt"
> +                "src/imeapi/CMakeLists.txt"))
> +             #t)))))
> +    (inputs
> +     `(("fcitx5" ,fcitx5)
> +       ("lua" ,lua)
> +       ("gettext" ,gettext-minimal)
> +       ("libpthread-stubs" ,libpthread-stubs)))
> +    (native-inputs
> +     `(("extra-cmake-modules" ,extra-cmake-modules)))
> +    (home-page "https://github.com/fcitx/fcitx5-lua")
> +    (synopsis "Lua support for Fcitx 5")

"Lua support for Fcitx"

> +    (description "Fcitx5-lua allow user to write Fcitx5 extension in Lua.")

"Fcitx5-lua allows writing Fcitx extentions in Lua."

I think we can drop all the emphases on "5".

> +    (license license:lgpl2.1+)))
> --
> 2.29.2
>
> From 69b4cfc316e81e9c0ebdb307af033bf2e0a5faca Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 28 Nov 2020 13:21:38 +0800
> Subject: [PATCH 4/9] gnu: Add libime.
>
> * gnu/packages/fcitx5.scm(libime): New variable.
> ---
>  gnu/packages/fcitx5.scm | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
>
> diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
> index c48eafbad5..9f031a1289 100644
> --- a/gnu/packages/fcitx5.scm
> +++ b/gnu/packages/fcitx5.scm
> @@ -189,3 +189,28 @@ of Fcitx.")
>      (synopsis "Lua support for Fcitx 5")
>      (description "Fcitx5-lua allow user to write Fcitx5 extension in Lua.")
>      (license license:lgpl2.1+)))
> +
> +(define-public libime
> +  (package
> +    (name "libime")
> +    (version "1.0.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://download.fcitx-im.org/fcitx5/libime/libime-"
> +                           version "_dict.tar.xz"))
> +       (sha256
> +        (base32 "0kymzn0srdmpbn43rg4zpz09baz3bcw18v648jsqsb2j488s2paq"))))
> +    (build-system cmake-build-system)
> +    (inputs
> +     `(("fcitx5" ,fcitx5)
> +       ("boost" ,boost)))
> +    (native-inputs
> +     `(("gcc" ,gcc-9)                  ;for #include <filesystem> and ld support
> +       ("extra-cmake-modules" ,extra-cmake-modules)
> +       ("python" ,python)))             ;needed to run test
> +    (home-page "https://github.com/fcitx/libime")
> +    (synopsis "Library supports generic input method implmentation")

"Library for implementing generic input method editors"

> +    (description "Libime is a library, being used to implment various input
> +methods for Fcitx 5.")

"Libime is a library for implementing generic input method editors."

> +    (license license:lgpl2.1+)))
> --
> 2.29.2
>
> From 8af5ff96d20a5fd2b3faa43b05935f9755880959 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 28 Nov 2020 13:24:20 +0800
> Subject: [PATCH 5/9] gnu: Add fcitx5-qt.
>
> * gnu/packages/fcitx5.scm(fcitx5-qt): New variable.
> ---
>  gnu/packages/fcitx5.scm | 36 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
>
> diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
> index 9f031a1289..4e3ba010ef 100644
> --- a/gnu/packages/fcitx5.scm
> +++ b/gnu/packages/fcitx5.scm
> @@ -214,3 +214,39 @@ of Fcitx.")
>      (description "Libime is a library, being used to implment various input
>  methods for Fcitx 5.")
>      (license license:lgpl2.1+)))
> +
> +(define-public fcitx5-qt
> +  (package
> +    (name "fcitx5-qt")
> +    (version "5.0.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://download.fcitx-im.org/fcitx5"
> +                           "/fcitx5-qt/fcitx5-qt-"
> +                           version ".tar.xz"))
> +       (sha256
> +        (base32 "0s0spjr8m7dw2f18xxqg6lwn3y575g411j9j9w8xv1cqsm9fm49f"))))
> +    (build-system cmake-build-system)
> +    (arguments
> +     `(#:configure-flags
> +       (list (string-append "-DCMAKE_INSTALL_QT5PLUGINDIR="
> +                            %output "/lib/qt5/plugins")
> +             "-DENABLE_QT4=Off")))
> +    (inputs
> +     `(("fcitx5" ,fcitx5)
> +       ("libxcb" ,libxcb)
> +       ("libxkbcommon" ,libxkbcommon)
> +       ("qtbase" ,qtbase)
> +       ("gettext" ,gettext-minimal)))
> +    (native-inputs
> +     `(("extra-cmake-modules" ,extra-cmake-modules)))
> +    (home-page "https://github.com/fcitx/fcitx5-qt")
> +    (synopsis "Qt library and IM module for Fcitx 5")
> +    (description "Fcitx5-qt provides Qt library for development and IM module
> +for Qt5 based application.")

"Fcitx5-qt provides a Qt library and an IM module for Qt based applications."

According to CMakeLists.txt:
option(ENABLE_QT4 "Enable Qt 4" On)
option(ENABLE_QT5 "Enable Qt 5" On)
option(ENABLE_QT6 "Enable Qt 6" Off)

The support is not limited to qt5.

> +    (license (list license:lgpl2.1+
> +                   ;; Files under qt4/ which include Fcitx5Qt4DBusAddons Library
> +                   ;; and input context plugin and files under qt5/dbusaddons
> +                   ;; and qt5/platforminputcontext

This is more clear:

"Files under qt4, qt5/dbusaddons, and qt5/platforminputcontext."

> +                   license:bsd-3))))
> --
> 2.29.2
>
> From 9a4111139bc059fbacc2f6aa8a3d5922d4f837fd Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 28 Nov 2020 13:25:19 +0800
> Subject: [PATCH 6/9] gnu: Add fcitx5-gtk.
>
> * gnu/packages/fcitx5.scm(fcitx5-gtk): New variable.
> ---
>  gnu/packages/fcitx5.scm | 50 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
>
> diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
> index 4e3ba010ef..9673ff2c47 100644
> --- a/gnu/packages/fcitx5.scm
> +++ b/gnu/packages/fcitx5.scm
> @@ -215,6 +215,56 @@ of Fcitx.")
>  methods for Fcitx 5.")
>      (license license:lgpl2.1+)))
>
> +(define-public fcitx5-gtk
> +  (package
> +    (name "fcitx5-gtk")
> +    (version "5.0.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://download.fcitx-im.org/fcitx5"
> +                           "/fcitx5-gtk/fcitx5-gtk-"
> +                           version ".tar.xz"))
> +       (sha256
> +        (base32 "0k09f3ca4jm4y33xr642wrbf2zfjqr7gjx1i28z0vwb1rmjn026y"))))
> +    (build-system cmake-build-system)
> +    (arguments
> +     `(#:tests? #f                      ;No test
> +       #:configure-flags
> +       (list (string-append "-DGOBJECT_INTROSPECTION_GIRDIR="
> +                            %output "/share/gir-1.0")
> +             (string-append "-DGOBJECT_INTROSPECTION_TYPELIBDIR="
> +                            %output "/lib/girepository-1.0"))
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-before 'configure 'patch-install-prefix
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let ((out (assoc-ref outputs "out"))
> +                   (gtk3 (assoc-ref outputs "gtk3")))
> +
> +               (substitute* "gtk3/CMakeLists.txt"
> +                 (("\\$\\{CMAKE_INSTALL_LIBDIR\\}")
> +                  (string-append gtk3 "/lib")))))))))
> +    (inputs
> +     `(("fcitx5" ,fcitx5)
> +       ("libxkbcommon" ,libxkbcommon)
> +       ("gobject-introspection" ,gobject-introspection)
> +       ("gtk2" ,gtk+-2)
> +       ("gtk3" ,gtk+)
> +       ("glib" ,glib)
> +       ("libx11" ,libx11)
> +       ("gettext" ,gettext-minimal)))
> +    (native-inputs
> +     `(("extra-cmake-modules" ,extra-cmake-modules)
> +       ("pkg-config" ,pkg-config)
> +       ("glib" ,glib "bin")))           ;for glib-genmarshal
> +    (outputs '("out" "gtk3"))
> +    (home-page "https://github.com/fcitx/fcitx5-gtk")
> +    (synopsis "Glib based D-Bus client and GTK IM module for Fcitx 5")

"Glib based D-Bus client library and GTK IM module for Fcitx"

> +    (description "Fcitx5-qt provides a Glib based D-Bus client for development
> +and IM module for GTK+2/GTK+3 application.")

"Fcitx5-qt provides a Glib based D-Bus client library and an IM module
for GTK+2/GTK+3 applications."

> +    (license license:lgpl2.1+)))
> +
>  (define-public fcitx5-qt
>    (package
>      (name "fcitx5-qt")
> --
> 2.29.2
>
> From f0905307b179d478475a0433cbebf1532ecf6a95 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 28 Nov 2020 13:25:37 +0800
> Subject: [PATCH 7/9] gnu: Add fcitx5-chinese-addons.
>
> * gnu/packages/fcitx5.scm(fcitx5-chinese-addons): New variable.
> ---
>  gnu/packages/fcitx5.scm | 79 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 79 insertions(+)
>
> diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
> index 9673ff2c47..076a96992d 100644
> --- a/gnu/packages/fcitx5.scm
> +++ b/gnu/packages/fcitx5.scm
> @@ -300,3 +300,82 @@ for Qt5 based application.")
>                     ;; and input context plugin and files under qt5/dbusaddons
>                     ;; and qt5/platforminputcontext
>                     license:bsd-3))))
> +
> +(define-public fcitx5-chinese-addons
> +  (package
> +    (name "fcitx5-chinese-addons")
> +    (version "5.0.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://download.fcitx-im.org/fcitx5"
> +                           "/fcitx5-chinese-addons/fcitx5-chinese-addons-"
> +                           version "_dict.tar.xz"))
> +       (sha256
> +        (base32 "015yx7wwhyjnhbrx2akc90nnzvmyhv1jv2n0mv7x7hsj05m62q8l"))))
> +    (build-system cmake-build-system)
> +    (arguments
> +     `(#:configure-flags
> +       (list
> +        (string-append "-DFEM_INCLUDE_INSTALL_DIR=" %output "/include")
> +        (string-append "-DFEM_LIB_INSTALL_DIR=" %output "/lib")
> +        ;; "-DENABLE_GUI=Off"

Remove this redundant line.

> +        )
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-before 'configure 'patch-install-prefix
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (for-each
> +              (lambda (x)
> +                (format #t "patch-install-prefix: Fixing install prefix in ~a~%"
> +                        x)
> +                (substitute* x
> +                  (("\\$\\{FCITX_INSTALL_PKGDATADIR\\}")
> +                   (string-append (assoc-ref outputs "out")
> +                                  "/share/fcitx5"))))
> +              (find-files "." "CMakeLists\\.txt$"))
> +             #t))
> +         (add-before 'configure 'split-outputs
> +           ;; Build with GUI supports requires Qt and increase package closure
> +           ;; by 800M on x86_64, so place it under another output.
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (substitute* "gui/pinyindictmanager/CMakeLists.txt"
> +               (("\\$\\{CMAKE_INSTALL_LIBDIR\\}" _)
> +                (string-append (assoc-ref outputs "gui") "/lib"))))))))
> +    (inputs
> +     `(("fcitx5" ,fcitx5)
> +       ("fcitx5-lua" ,fcitx5-lua)
> +       ("boost" ,boost)
> +       ("libime",libime)
> +       ("curl" ,curl)
> +       ("gettext" ,gettext-minimal)
> +       ("fmt" ,fmt)
> +       ("libpthread-stubs" ,libpthread-stubs)
> +       ("opencc" ,opencc)
> +       ("qtbase" ,qtbase)
> +       ("fcitx5-qt" ,fcitx5-qt)
> +       ("qtwebkit" ,qtwebkit)))
> +    (native-inputs
> +     `(("extra-cmake-modules" ,extra-cmake-modules)
> +       ("pkg-config" ,pkg-config)))
> +    (outputs '("out" "gui"))
> +    (home-page "https://github.com/fcitx/fcitx5-chinese-addons")
> +    (synopsis "Chinese related addons for Fcitx 5")
> +    (description "Fcitx5-chinese-addons provides Chinese related addons,
> +including input methods previous bundled inside Fcitx 4:

I think the refer to Fcitx 4 is unnecessary.

> +
> +@itemize
> +@item Bingchan
> +@item Cangjie
> +@item Erbi
> +@item Pinyin
> +@item Shuangpin
> +@item Wanfeng
> +@item Wubi
> +@item Wubi Pinyin
> +@item Ziranma
> +@end itemize\n")
> +    (license (list license:lgpl2.1+
> +                   license:gpl2+
> +                   ;; im/pinyin/emoji.txt
> +                   license:unicode))))
> --
> 2.29.2
>
> From 95c20d878565cb3ff7870187e1806743d7e526f3 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 28 Nov 2020 13:25:55 +0800
> Subject: [PATCH 8/9] gnu: Add fcitx5-configtool.
>
> * gnu/packages/fcitx5.scm(fcitx5-configtool): New variable.
> ---
>  gnu/packages/fcitx5.scm | 42 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 42 insertions(+)
>
> diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
> index 076a96992d..bc8fa5d7dc 100644
> --- a/gnu/packages/fcitx5.scm
> +++ b/gnu/packages/fcitx5.scm
> @@ -379,3 +379,45 @@ including input methods previous bundled inside Fcitx 4:
>                     license:gpl2+
>                     ;; im/pinyin/emoji.txt
>                     license:unicode))))
> +
> +(define-public fcitx5-configtool
> +  (let ((revision "0")
> +        (commit "9c01bfc7477c203443ed073397670df52d1a6fc0"))
> +    (package
> +      (name "fcitx5-configtool")
> +      (version (git-version "5.0.0" revision commit))
> +      (source
> +       (origin
> +         (method git-fetch)
> +         (uri (git-reference
> +               (url "https://github.com/fcitx/fcitx5-configtool")
> +               (commit commit)))
> +         (sha256
> +          (base32 "03hfbr97953alxax3db1x16h17cgqx30xvqs070iz8rj232iiaia"))))
> +      (build-system cmake-build-system)
> +      (arguments
> +       `(#:configure-flags
> +         ;; KDE is currently not working on Guix, KCM supports doesn't make sense.
> +         '("-DENABLE_KCM=Off")))
> +      (inputs
> +       `(("fcitx5" ,fcitx5)
> +         ("fcitx5-qt" ,fcitx5-qt)
> +         ("qtbase" ,qtbase)
> +         ("qtx11extras" ,qtx11extras)
> +         ("kitemviews" ,kitemviews)
> +         ("kwidgetsaddons" ,kwidgetsaddons)
> +         ("libx11" ,libx11)
> +         ("xkeyboard-config" ,xkeyboard-config)
> +         ("libxkbfile" ,libxkbfile)
> +         ("gettext" ,gettext-minimal)
> +         ("iso-codes" ,iso-codes)))
> +      (native-inputs
> +       `(("gcc" ,gcc-9)
> +         ("extra-cmake-modules" ,extra-cmake-modules)
> +         ("pkg-config" ,pkg-config)))
> +      (home-page "https://github.com/fcitx/fcitx5-configtool")
> +      (synopsis "Graphical configuration tool for Fcitx 5")
> +      (description "Fcitx5-configtool is a graphical configuration tool
> +written in Qt, design for managing different input methods running under
> +Fcitx 5.")

"Fcitx5-configtool is a graphical configuration tool for managing
different input methods in Fcitx."

A user does not care about what programming language it's written in.

> +      (license license:gpl2+))))
> --
> 2.29.2
>
> From 32f4fef151807a0620fec7654094ed3945a02bcf Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 28 Nov 2020 13:27:08 +0800
> Subject: [PATCH 9/9] gnu: Add fcitx5-material-color-theme.
>
> * gnu/packages/fcitx5.scm(fcitx5-material-color-theme): New variable.
> ---
>  gnu/packages/fcitx5.scm | 70 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 70 insertions(+)
>
> diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
> index bc8fa5d7dc..80fb989408 100644
> --- a/gnu/packages/fcitx5.scm
> +++ b/gnu/packages/fcitx5.scm
> @@ -421,3 +421,73 @@ including input methods previous bundled inside Fcitx 4:
>  written in Qt, design for managing different input methods running under
>  Fcitx 5.")
>        (license license:gpl2+))))
> +
> +(define-public fcitx5-material-color-theme
> +  (package
> +    (name "fcitx5-material-color-theme")
> +    (version "0.1")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/hosxy/Fcitx5-Material-Color")
> +             (commit version)))
> +       (sha256
> +        (base32 "1mgc722521jmfx0xc3ibmiycd3q2w7xg2956xcpc07kz90gcdjaa"))))
> +    (build-system copy-build-system)
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'install
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (use-modules (srfi srfi-26))
> +
> +             (let* ((out (assoc-ref outputs "out"))
> +                    (assets-dir (string-append
> +                                 out "/share/fcitx5-material-color-theme"))
> +                    (themes-prefix (string-append out "/share/fcitx5/themes")))
> +
> +               (define (install-theme-variant variant target)
> +                 (let ((dir (string-append themes-prefix "/" target))
> +                       (png (string-append "panel-" variant ".png"))
> +                       (conf (string-append "theme-" variant ".conf")))
> +                   (format #t "install: Installing color variant \"~a\" to ~a~%"
> +                           variant dir)
> +                   (substitute* conf
> +                     (("^Name=.*")
> +                      (string-append "Name=" target "\n")))
> +                   (mkdir-p dir)
> +                   (install-file png dir)
> +                   (copy-file conf (string-append dir "/theme.conf"))
> +                   (symlink (string-append assets-dir "/arrow.png")
> +                            (string-append dir "/arrow.png"))))
> +
> +               (mkdir-p assets-dir)
> +               (install-file "arrow.png" assets-dir)
> +               (for-each
> +                (lambda (x)
> +                  (install-theme-variant
> +                   x (string-append "Material-Color-" (string-capitalize x))))
> +                '("black" "blue" "brown" "indigo"
> +                  "orange" "pink" "red" "teal"))
> +
> +               (install-theme-variant
> +                "deepPurple" "Material-Color-DeepPurple")
> +               #t))))))
> +    (home-page "https://github.com/hosxy/Fcitx5-Material-Color")
> +    (synopsis "Fcitx 5 theme use Material Design")

"Material Design theme for Fcitx"

> +    (description "Fcitx5-material-color-theme contains Material Design theme
> +with following color variants:

"Fcitx5-material-color-theme is a Material Design theme for Fcitx with
the following color variants:"

> +
> +@itemize
> +@item Black
> +@item Blue
> +@item Brown
> +@item Indigo
> +@item Orange
> +@item Pink
> +@item Red
> +@item teal
> +@item DeepPurple
> +@end itemize\n")
> +    (license license:asl2.0)))
> --
> 2.29.2


--
Peng Mei Yu




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#44920] [PATCH]: Add fcitx5.
  2020-12-03  4:09 ` Peng Mei Yu
@ 2020-12-05  4:09   ` Zhu Zihao
  2020-12-06  8:30     ` 宋文武
  0 siblings, 1 reply; 11+ messages in thread
From: Zhu Zihao @ 2020-12-05  4:09 UTC (permalink / raw)
  To: Peng Mei Yu; +Cc: 44920

[-- Attachment #1: Type: text/plain, Size: 1746 bytes --]


Thank you, Peng. your review are helpful, but I still have some
objection on following points.

Peng Mei Yu writes:


> Hi Zhu Zihao,
>
> Great work.  This patch series provides a long waited alternative to
> ibus.  I prefer to use ibus as my input method editor, but still thank
> you for this work.
>
> Please see comments bellow.
>
>
> Zhu Zihao writes:
>
>> This is a series of patches, add fcitx5 and its build dependecies.
>> a qt5 and gtk2/3 plugin, chinese inputmethod addon and a material theme
>>
>> From cbe128e488078b3af8f7d1bdb4bf9dc9f12a2f0b Mon Sep 17 00:00:00 2001
>> From: Zhu Zihao <all_but_last@163.com>
>> Date: Sat, 28 Nov 2020 13:16:50 +0800
>> Subject: [PATCH 1/9] gnu: Add xcb-imdkit.
>>
>> * gnu/packages/fcitx5.scm: New file.
>> (xcb-imdkit): New variable.
>
> These packages should be put into gnu/packages/fcitx.scm.

Why? It currently only used by fcitx5.

>
> I don't think we should emphasize that Fcitx 5 is the successor to
> Fcitx.  It's obvious.  The old Fcitx 4 has already been deprecated by
> the author.  Do you think there is a good reason to keep the current
> Fcitx package while adding a Fcitx 5 package?  Why not replace the old
> one?

Because Fcitx4 and Fcitx5 is totally different, like python2 & python3.
Fcitx5 turns to C++ and Qt technology stack.


>
> "Lua support for Fcitx"
>
>> +    (description "Fcitx5-lua allow user to write Fcitx5 extension in Lua.")
>
> "Fcitx5-lua allows writing Fcitx extentions in Lua."
>
> I think we can drop all the emphases on "5".
>

ditto, because fcitx and fcitx5 are totally different, it's needed to
make a clarification.


-- 
Retrieve my PGP public key: https://meta.sr.ht/~citreu.pgp

Zihao

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 515 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#44920] [PATCH]: Add fcitx5.
  2020-12-05  4:09   ` Zhu Zihao
@ 2020-12-06  8:30     ` 宋文武
  2020-12-06 15:38       ` [bug#44920] " Zhu Zihao
  0 siblings, 1 reply; 11+ messages in thread
From: 宋文武 @ 2020-12-06  8:30 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 44920

Hello, thanks for the patches!

Zhu Zihao <all_but_last@163.com> writes:
>>> This is a series of patches, add fcitx5 and its build dependecies.
>>> a qt5 and gtk2/3 plugin, chinese inputmethod addon and a material theme
>>>
>>> From cbe128e488078b3af8f7d1bdb4bf9dc9f12a2f0b Mon Sep 17 00:00:00 2001
>>> From: Zhu Zihao <all_but_last@163.com>
>>> Date: Sat, 28 Nov 2020 13:16:50 +0800
>>> Subject: [PATCH 1/9] gnu: Add xcb-imdkit.
>>>
>>> * gnu/packages/fcitx5.scm: New file.
>>> (xcb-imdkit): New variable.
>>
>> These packages should be put into gnu/packages/fcitx.scm.
>
> Why? It currently only used by fcitx5.

I’d like to put fcitx5 things into “fcitx.scm” too, as the author and
the github organization dosen’t changed for fcitx5, likewise we also
have both qt4 and qt5 in qt.scm and gtk2 and gtk3 in gtk.scm.


> [0001-gnu-Add-xcb-imdkit.patch]
This patch import guix modules that only needed later by ‘fcitx’, should
clean it up…

Otherwise look good to me!

Also I see fcitx5 got a new release recently (eg: xcb-imdkit -> 1.0.1,
fcitx5 -> 5.0.3), could you update this patches series for ‘fcitx.scm’
and the latest release?

Thank you!




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#44920] Re: [bug#44920] [PATCH]: Add fcitx5.
  2020-12-06  8:30     ` 宋文武
@ 2020-12-06 15:38       ` Zhu Zihao
  2020-12-07 10:55         ` 宋文武
  0 siblings, 1 reply; 11+ messages in thread
From: Zhu Zihao @ 2020-12-06 15:38 UTC (permalink / raw)
  To: 宋文武; +Cc: 44920

[-- Attachment #1: Type: text/plain, Size: 516 bytes --]

In file gnu/packages/fcitx.scm 132:8

;; XXX: We can't simply #:use-module due to a cycle somewhere.

Looks that there's a cyclic dependency somewhere, AFAIK fcitx5's
components heavily depend on packages in (gnu packages kde-frameworks),
will this be a problem for us to merge fcitx.scm and fcitx5.scm?

> I’d like to put fcitx5 things into “fcitx.scm” too, as the author and
> the github organization dosen’t changed for fcitx5, likewise we also
> have both qt4 and qt5 in qt.scm and gtk2 and gtk3 in gtk.scm.

[-- Attachment #2: Type: text/html, Size: 696 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#44920] [PATCH]: Add fcitx5.
  2020-12-06 15:38       ` [bug#44920] " Zhu Zihao
@ 2020-12-07 10:55         ` 宋文武
  2020-12-07 14:53           ` Zhu Zihao
                             ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: 宋文武 @ 2020-12-07 10:55 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 44920

"Zhu Zihao" <all_but_last@163.com> writes:

> In file gnu/packages/fcitx.scm 132:8
>
> ;; XXX: We can't simply #:use-module due to a cycle somewhere.
>
> Looks that there's a cyclic dependency somewhere, AFAIK fcitx5's
> components heavily depend on packages in (gnu packages kde-frameworks),
> will this be a problem for us to merge fcitx.scm and fcitx5.scm?

Ah, that's a bad problem.  The only package use fcitx is ‘sdl2’ from
sdl.scm, which is used by a lot of modules.

Okay, then I think we should add them into fcitx5.scm.

Thank you!




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#44920] [PATCH]: Add fcitx5.
  2020-12-07 10:55         ` 宋文武
@ 2020-12-07 14:53           ` Zhu Zihao
  2020-12-08 12:37             ` bug#44920: " 宋文武
  2020-12-07 15:36           ` [bug#44920] " Zhu Zihao
  2020-12-08 10:30           ` Zhu Zihao
  2 siblings, 1 reply; 11+ messages in thread
From: Zhu Zihao @ 2020-12-07 14:53 UTC (permalink / raw)
  To: 宋文武; +Cc: 44920, all_but_last


[-- Attachment #1.1: Type: text/plain, Size: 56 bytes --]


All Fcitx5 components updated.

Here are the patches.


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 515 bytes --]

[-- Attachment #2: 0001-gnu-Add-gnu-packages-fcitx5.patch --]
[-- Type: text/x-patch, Size: 3201 bytes --]

From ff65eaa03b3dca992dc53e10c139a2601ccf9a53 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:29:58 +0800
Subject: [PATCH 01/10] gnu: Add (gnu packages fcitx5).

* gnu/packages/fcitx5.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Reference to new file.
---
 gnu/local.mk            |  1 +
 gnu/packages/fcitx5.scm | 50 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 51 insertions(+)
 create mode 100644 gnu/packages/fcitx5.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 5277403196..e37f2dac70 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -204,6 +204,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/erlang.scm			\
   %D%/packages/fabric-management.scm		\
   %D%/packages/fcitx.scm			\
+  %D%/packages/fcitx5.scm			\
   %D%/packages/figlet.scm			\
   %D%/packages/file.scm				\
   %D%/packages/file-systems.scm			\
diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
new file mode 100644
index 0000000000..8c1fa49322
--- /dev/null
+++ b/gnu/packages/fcitx5.scm
@@ -0,0 +1,50 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages fcitx5)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages datastructures)
+  #:use-module (gnu packages enchant)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages iso-codes)
+  #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages libevent)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages unicode)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-xcb-imdkit.patch --]
[-- Type: text/x-patch, Size: 1881 bytes --]

From f18d90b7b9a57a6855be72c8daccba7f98f08c4b Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:32:29 +0800
Subject: [PATCH 02/10] gnu: Add xcb-imdkit.

* gnu/packages/fcitx5.scm(xcb-imdkit): New variable.
---
 gnu/packages/fcitx5.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 8c1fa49322..edfd6aca2b 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -48,3 +48,37 @@
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg))
+
+(define-public xcb-imdkit
+  (package
+    (name "xcb-imdkit")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/xcb-imdkit/xcb-imdkit-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "1qgbbp8y8ci7haz99vgbrgpjsbrwwyjianyhdvxcirnbm5bybvmz"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove bundled uthash.
+           (delete-file-recursively "uthash")
+           #t))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("uthash" ,uthash)
+       ("libxcb" ,libxcb)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/fcitx/xcb-imdkit")
+    (synopsis "Input method development support for XCB.")
+    (description "Xcb-imdkit is an implementation of xim protocol in XCB,
+comparing with the implementation of IMDkit with Xlib, and xim inside Xlib,
+it has less memory foot print, better performance, and safer on malformed
+client.")
+    (license license:lgpl2.1)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-Add-fcitx5.patch --]
[-- Type: text/x-patch, Size: 2794 bytes --]

From 00d62c64b453f4053f9c31e37a5ee079233dedd1 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:38:35 +0800
Subject: [PATCH 03/10] gnu: Add fcitx5.

* gnu/packages/fcitx5.scm(fcitx5): New variable.
---
 gnu/packages/fcitx5.scm | 59 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index edfd6aca2b..b65d90f588 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -82,3 +82,62 @@ comparing with the implementation of IMDkit with Xlib, and xim inside Xlib,
 it has less memory foot print, better performance, and safer on malformed
 client.")
     (license license:lgpl2.1)))
+
+(define-public fcitx5
+  (package
+    (name "fcitx5")
+    (version "5.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/fcitx5/fcitx5-"
+                           version "_dict.tar.xz"))
+       (sha256
+        (base32 "06zkb33m2rnhg385iy79n3r4svz5jbav74di61xqa3lhbv7534s3"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-DCLDR_DIR="
+                            (assoc-ref %build-inputs "unicode-cldr-common")
+                            "/share/unicode/cldr"))))
+    (inputs
+     `(("cairo" ,cairo)
+       ("cairo-xcb" ,cairo-xcb)
+       ("dbus" ,dbus)
+       ("enchant" ,enchant)
+       ("expat" ,expat)
+       ("fmt" ,fmt)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("gettext" ,gettext-minimal)
+       ("glib" ,glib)
+       ("iso-codes" ,iso-codes)
+       ("json-c" ,json-c)
+       ("libevent" ,libevent)
+       ("libpthread-stubs" ,libpthread-stubs)
+       ("libuuid" ,util-linux "lib")
+       ("libx11" ,libx11)
+       ("libxcb" ,libxcb)
+       ("libxfixes" ,libxfixes)
+       ("libxinerama" ,libxinerama)
+       ("libxkbcommon" ,libxkbcommon)
+       ("libxkbfile" ,libxkbfile)
+       ("pango" ,pango)
+       ("unicode-cldr-common" ,unicode-cldr-common)
+       ("wayland" ,wayland)
+       ("wayland-protocols" ,wayland-protocols)
+       ("xcb-imdkit" ,xcb-imdkit)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)
+       ("xcb-util-wm" ,xcb-util-wm)
+       ("xkeyboard-config" ,xkeyboard-config)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "FCITX_ADDON_DIRS")
+            (files '("lib/fcitx5")))))
+    (home-page "https://github.com/fcitx/fcitx5")
+    (synopsis "Input method framework")
+    (description "Fcitx 5 is a generic input method framework.")
+    (license license:lgpl2.1+)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-Add-fcitx5-lua.patch --]
[-- Type: text/x-patch, Size: 2385 bytes --]

From 46b3fa824e764c565953f253d2d7d77f0c17851c Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:39:29 +0800
Subject: [PATCH 04/10] gnu: Add fcitx5-lua.

* gnu/packages/fcitx5.scm(fcitx5-lua): New variable.
---
 gnu/packages/fcitx5.scm | 44 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index b65d90f588..db96b190f7 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -141,3 +141,47 @@ client.")
     (synopsis "Input method framework")
     (description "Fcitx 5 is a generic input method framework.")
     (license license:lgpl2.1+)))
+
+(define-public fcitx5-lua
+  (package
+    (name "fcitx5-lua")
+    (version "5.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/fcitx5-lua/fcitx5-lua-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "177mj56j8yrl79hvk7bbrifvm137np23pwalv83ibgk4l51z92hf"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        (string-append "-DFEM_INCLUDE_INSTALL_DIR=" %output "/include")
+        (string-append "-DFEM_LIB_INSTALL_DIR=" %output "/lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-install-prefix
+           (lambda* (#:key outputs #:allow-other-keys)
+             (for-each
+              (lambda (x)
+                (format #t "patch-install-prefix: Fixing install prefix in ~a~%"
+                        x)
+                (substitute* x
+                  (("\\$\\{FCITX_INSTALL_PKGDATADIR\\}")
+                   (string-append (assoc-ref outputs "out")
+                                  "/share/fcitx5"))))
+              '("src/addonloader/CMakeLists.txt"
+                "src/imeapi/CMakeLists.txt"))
+             #t)))))
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("lua" ,lua)
+       ("gettext" ,gettext-minimal)
+       ("libpthread-stubs" ,libpthread-stubs)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (home-page "https://github.com/fcitx/fcitx5-lua")
+    (synopsis "Lua support for Fcitx 5")
+    (description "Fcitx5-lua allows writing Fcitx5 extension in Lua.")
+    (license license:lgpl2.1+)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-gnu-Add-libime.patch --]
[-- Type: text/x-patch, Size: 1604 bytes --]

From eeb7ce9952f5e71157e5fe7b1ff62ac82c878ade Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:40:41 +0800
Subject: [PATCH 05/10] gnu: Add libime.

* gnu/packages/fcitx5.scm(libime): New variable.
---
 gnu/packages/fcitx5.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index db96b190f7..ac4be9a6c6 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -185,3 +185,28 @@ client.")
     (synopsis "Lua support for Fcitx 5")
     (description "Fcitx5-lua allows writing Fcitx5 extension in Lua.")
     (license license:lgpl2.1+)))
+
+(define-public libime
+  (package
+    (name "libime")
+    (version "1.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/libime/libime-"
+                           version "_dict.tar.xz"))
+       (sha256
+        (base32 "006pncby7p6h3rnicckzjwi6jzsrqiqbj6p9bpic80lanlllgw31"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("boost" ,boost)))
+    (native-inputs
+     `(("gcc" ,gcc-9)                  ;for #include <filesystem> and ld support
+       ("extra-cmake-modules" ,extra-cmake-modules)
+       ("python" ,python)))             ;needed to run test
+    (home-page "https://github.com/fcitx/libime")
+    (synopsis "Library for implementing generic input method")
+    (description "Libime is a library for implmenting various input methods
+editors.")
+    (license license:lgpl2.1+)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-fcitx5-qt.patch --]
[-- Type: text/x-patch, Size: 1976 bytes --]

From 847962d45c2d1644782454e493a5c94baf84b5a9 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:42:43 +0800
Subject: [PATCH 06/10] gnu: Add fcitx5-qt.

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

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index ac4be9a6c6..e1676dff27 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -210,3 +210,38 @@ client.")
     (description "Libime is a library for implmenting various input methods
 editors.")
     (license license:lgpl2.1+)))
+
+(define-public fcitx5-qt
+  (package
+    (name "fcitx5-qt")
+    (version "5.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5"
+                           "/fcitx5-qt/fcitx5-qt-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "0ilhb4yw9k3m1c4fidnv3nd5dgm9xxds11dgdys6gswjjnmcgqqm"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-DCMAKE_INSTALL_QT5PLUGINDIR="
+                            %output "/lib/qt5/plugins")
+             "-DENABLE_QT4=Off")))
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("libxcb" ,libxcb)
+       ("libxkbcommon" ,libxkbcommon)
+       ("qtbase" ,qtbase)
+       ("gettext" ,gettext-minimal)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (home-page "https://github.com/fcitx/fcitx5-qt")
+    (synopsis "Qt library and IM module for Fcitx 5")
+    (description "Fcitx5-qt provides Qt library for development and IM module
+for Qt based application.")
+    (license (list license:lgpl2.1+
+                   ;; Files under qt4(Fcitx5Qt4DBusAddons), qt5/dbusaddons
+                   ;; and qt5/platforminputcontext.
+                   license:bsd-3))))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-gnu-Add-fcitx5-gtk.patch --]
[-- Type: text/x-patch, Size: 2633 bytes --]

From 441989303b6b78572c599cb0aa96878ab9f095d2 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:43:47 +0800
Subject: [PATCH 07/10] gnu: Add fcitx5-gtk.

* gnu/packages/fcitx5.scm(fcitx5-gtk): New variable.
---
 gnu/packages/fcitx5.scm | 50 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index e1676dff27..e41a9faee1 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -211,6 +211,56 @@ client.")
 editors.")
     (license license:lgpl2.1+)))
 
+(define-public fcitx5-gtk
+  (package
+    (name "fcitx5-gtk")
+    (version "5.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5"
+                           "/fcitx5-gtk/fcitx5-gtk-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "0h53liraqc5nz4nyi3ixdfdw3zzkdcsiff7j25acc3gmaa5gyij7"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;No test
+       #:configure-flags
+       (list (string-append "-DGOBJECT_INTROSPECTION_GIRDIR="
+                            %output "/share/gir-1.0")
+             (string-append "-DGOBJECT_INTROSPECTION_TYPELIBDIR="
+                            %output "/lib/girepository-1.0"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-install-prefix
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gtk3 (assoc-ref outputs "gtk3")))
+
+               (substitute* "gtk3/CMakeLists.txt"
+                 (("\\$\\{CMAKE_INSTALL_LIBDIR\\}")
+                  (string-append gtk3 "/lib")))))))))
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("libxkbcommon" ,libxkbcommon)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk2" ,gtk+-2)
+       ("gtk3" ,gtk+)
+       ("glib" ,glib)
+       ("libx11" ,libx11)
+       ("gettext" ,gettext-minimal)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)
+       ("glib" ,glib "bin")))           ;for glib-genmarshal
+    (outputs '("out" "gtk3"))
+    (home-page "https://github.com/fcitx/fcitx5-gtk")
+    (synopsis "Glib based D-Bus client and GTK IM module for Fcitx 5")
+    (description "Fcitx5-gtk provides a Glib based D-Bus client and IM module
+for GTK+2/GTK+3 application.")
+    (license license:lgpl2.1+)))
+
 (define-public fcitx5-qt
   (package
     (name "fcitx5-qt")
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-gnu-Add-fcitx5-chinese-addons.patch --]
[-- Type: text/x-patch, Size: 3588 bytes --]

From 0e0ce85ec4e24d005f5ce05b4b12f10bf2518d01 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 28 Nov 2020 13:25:37 +0800
Subject: [PATCH 08/10] gnu: Add fcitx5-chinese-addons.

* gnu/packages/fcitx5.scm(fcitx5-chinese-addons): New variable.
---
 gnu/packages/fcitx5.scm | 77 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index e41a9faee1..a90c90dcf6 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -295,3 +295,80 @@ for Qt based application.")
                    ;; Files under qt4(Fcitx5Qt4DBusAddons), qt5/dbusaddons
                    ;; and qt5/platforminputcontext.
                    license:bsd-3))))
+
+(define-public fcitx5-chinese-addons
+  (package
+    (name "fcitx5-chinese-addons")
+    (version "5.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5"
+                           "/fcitx5-chinese-addons/fcitx5-chinese-addons-"
+                           version "_dict.tar.xz"))
+       (sha256
+        (base32 "0mf91gzwzhfci0jn6g3l516xjw8r4v40ginnbl70h1zx6vr24rfp"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        (string-append "-DFEM_INCLUDE_INSTALL_DIR=" %output "/include")
+        (string-append "-DFEM_LIB_INSTALL_DIR=" %output "/lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-install-prefix
+           (lambda* (#:key outputs #:allow-other-keys)
+             (for-each
+              (lambda (x)
+                (format #t "patch-install-prefix: Fixing install prefix in ~a~%"
+                        x)
+                (substitute* x
+                  (("\\$\\{FCITX_INSTALL_PKGDATADIR\\}")
+                   (string-append (assoc-ref outputs "out")
+                                  "/share/fcitx5"))))
+              (find-files "." "CMakeLists\\.txt$"))
+             #t))
+         (add-before 'configure 'split-outputs
+           ;; Build with GUI supports requires Qt and increase package closure
+           ;; by 800M on x86_64, so place it under another output.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "gui/pinyindictmanager/CMakeLists.txt"
+               (("\\$\\{CMAKE_INSTALL_LIBDIR\\}" _)
+                (string-append (assoc-ref outputs "gui") "/lib"))))))))
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("fcitx5-lua" ,fcitx5-lua)
+       ("boost" ,boost)
+       ("libime",libime)
+       ("curl" ,curl)
+       ("gettext" ,gettext-minimal)
+       ("fmt" ,fmt)
+       ("libpthread-stubs" ,libpthread-stubs)
+       ("opencc" ,opencc)
+       ("qtbase" ,qtbase)
+       ("fcitx5-qt" ,fcitx5-qt)
+       ("qtwebkit" ,qtwebkit)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (outputs '("out" "gui"))
+    (home-page "https://github.com/fcitx/fcitx5-chinese-addons")
+    (synopsis "Chinese related addons for Fcitx 5")
+    (description "Fcitx5-chinese-addons provides Chinese related addons,
+including input methods previous bundled inside Fcitx 4:
+
+@itemize
+@item Bingchan
+@item Cangjie
+@item Erbi
+@item Pinyin
+@item Shuangpin
+@item Wanfeng
+@item Wubi
+@item Wubi Pinyin
+@item Ziranma
+@end itemize\n")
+    (license (list license:lgpl2.1+
+                   license:gpl2+
+                   ;; im/pinyin/emoji.txt
+                   license:unicode))))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #10: 0009-gnu-Add-fcitx5-configtool.patch --]
[-- Type: text/x-patch, Size: 2093 bytes --]

From 10f2b4040e265de88b0505f02f483e22c56aa043 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:46:03 +0800
Subject: [PATCH 09/10] gnu: Add fcitx5-configtool.

* gnu/packages/fcitx5.scm(fcitx5-configtool): New variable.
---
 gnu/packages/fcitx5.scm | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index a90c90dcf6..eb268562a9 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -372,3 +372,42 @@ including input methods previous bundled inside Fcitx 4:
                    license:gpl2+
                    ;; im/pinyin/emoji.txt
                    license:unicode))))
+
+(define-public fcitx5-configtool
+  (package
+   (name "fcitx5-configtool")
+   (version "5.0.1")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append
+           "https://download.fcitx-im.org/fcitx5"
+           "/fcitx5-configtool/fcitx5-configtool-" version ".tar.xz"))
+     (sha256
+      (base32 "0mrqhzvab41hkvhkz7vkb8d2mv5bgx4aqp9jpz4kf3kskwm1q14b"))))
+   (build-system cmake-build-system)
+   (arguments
+    `(#:configure-flags
+      ;; KDE is currently not working on Guix, KCM supports doesn't make sense.
+      '("-DENABLE_KCM=Off")))
+   (inputs
+    `(("fcitx5" ,fcitx5)
+      ("fcitx5-qt" ,fcitx5-qt)
+      ("qtbase" ,qtbase)
+      ("qtx11extras" ,qtx11extras)
+      ("kitemviews" ,kitemviews)
+      ("kwidgetsaddons" ,kwidgetsaddons)
+      ("libx11" ,libx11)
+      ("xkeyboard-config" ,xkeyboard-config)
+      ("libxkbfile" ,libxkbfile)
+      ("gettext" ,gettext-minimal)
+      ("iso-codes" ,iso-codes)))
+   (native-inputs
+    `(("gcc" ,gcc-9)
+      ("extra-cmake-modules" ,extra-cmake-modules)
+      ("pkg-config" ,pkg-config)))
+   (home-page "https://github.com/fcitx/fcitx5-configtool")
+   (synopsis "Graphical configuration tool for Fcitx 5")
+   (description "Fcitx5-configtool is a graphical configuration tool
+to manage different input methods in Fcitx 5.")
+   (license license:gpl2+)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #11: 0010-gnu-Add-fcitx5-material-color-theme.patch --]
[-- Type: text/x-patch, Size: 3410 bytes --]

From bc66cd1957fec1aa6c762498cc898e89ee91114c Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:45:06 +0800
Subject: [PATCH 10/10] gnu: Add fcitx5-material-color-theme.

* gnu/packages/fcitx5.scm(fcitx5-material-color-theme): New variable.
---
 gnu/packages/fcitx5.scm | 70 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index eb268562a9..8ca109ed31 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -411,3 +411,73 @@ including input methods previous bundled inside Fcitx 4:
    (description "Fcitx5-configtool is a graphical configuration tool
 to manage different input methods in Fcitx 5.")
    (license license:gpl2+)))
+
+(define-public fcitx5-material-color-theme
+  (package
+    (name "fcitx5-material-color-theme")
+    (version "0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hosxy/Fcitx5-Material-Color")
+             (commit version)))
+       (sha256
+        (base32 "1mgc722521jmfx0xc3ibmiycd3q2w7xg2956xcpc07kz90gcdjaa"))))
+    (build-system copy-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (use-modules (srfi srfi-26))
+
+             (let* ((out (assoc-ref outputs "out"))
+                    (assets-dir (string-append
+                                 out "/share/fcitx5-material-color-theme"))
+                    (themes-prefix (string-append out "/share/fcitx5/themes")))
+
+               (define (install-theme-variant variant target)
+                 (let ((dir (string-append themes-prefix "/" target))
+                       (png (string-append "panel-" variant ".png"))
+                       (conf (string-append "theme-" variant ".conf")))
+                   (format #t "install: Installing color variant \"~a\" to ~a~%"
+                           variant dir)
+                   (substitute* conf
+                     (("^Name=.*")
+                      (string-append "Name=" target "\n")))
+                   (mkdir-p dir)
+                   (install-file png dir)
+                   (copy-file conf (string-append dir "/theme.conf"))
+                   (symlink (string-append assets-dir "/arrow.png")
+                            (string-append dir "/arrow.png"))))
+
+               (mkdir-p assets-dir)
+               (install-file "arrow.png" assets-dir)
+               (for-each
+                (lambda (x)
+                  (install-theme-variant
+                   x (string-append "Material-Color-" (string-capitalize x))))
+                '("black" "blue" "brown" "indigo"
+                  "orange" "pink" "red" "teal"))
+
+               (install-theme-variant
+                "deepPurple" "Material-Color-DeepPurple")
+               #t))))))
+    (home-page "https://github.com/hosxy/Fcitx5-Material-Color")
+    (synopsis "Material Design for Fcitx 5")
+    (description "Fcitx5-material-color-theme is a Material Design theme
+for Fcitx 5 with following color variants:
+
+@itemize
+@item Black
+@item Blue
+@item Brown
+@item Indigo
+@item Orange
+@item Pink
+@item Red
+@item teal
+@item DeepPurple
+@end itemize\n")
+    (license license:asl2.0)))
-- 
2.29.2


[-- Attachment #12: Type: text/plain, Size: 71 bytes --]


-- 
Retrieve my PGP public key: https://meta.sr.ht/~citreu.pgp

Zihao

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#44920] [PATCH]: Add fcitx5.
  2020-12-07 10:55         ` 宋文武
  2020-12-07 14:53           ` Zhu Zihao
@ 2020-12-07 15:36           ` Zhu Zihao
  2020-12-08 10:30           ` Zhu Zihao
  2 siblings, 0 replies; 11+ messages in thread
From: Zhu Zihao @ 2020-12-07 15:36 UTC (permalink / raw)
  To: iyzsong; +Cc: 44920, all_but_last

[-- Attachment #1: Type: text/plain, Size: 319 bytes --]


BTW, fcitx5-chinese-addons contains a cloud pinyin feature, which use
Google or Baidu's cloud pinyin server. But it was disabled by default
and it'll ask user to enable it or not, should we make a patch to get
rid of such anti-features?

-- 
Retrieve my PGP public key: https://meta.sr.ht/~citreu.pgp

Zihao

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 515 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#44920] [PATCH]: Add fcitx5.
  2020-12-07 10:55         ` 宋文武
  2020-12-07 14:53           ` Zhu Zihao
  2020-12-07 15:36           ` [bug#44920] " Zhu Zihao
@ 2020-12-08 10:30           ` Zhu Zihao
  2020-12-08 12:43             ` 宋文武
  2 siblings, 1 reply; 11+ messages in thread
From: Zhu Zihao @ 2020-12-08 10:30 UTC (permalink / raw)
  To: 宋文武; +Cc: 44920


[-- Attachment #1.1: Type: text/plain, Size: 141 bytes --]


Thanks to upstream maintainer, Fcitx5 now allow us to install addon in
separated prefix without many hacks. (Though some are still needed)


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 515 bytes --]

[-- Attachment #2: 0001-gnu-Add-gnu-packages-fcitx5.patch --]
[-- Type: text/x-patch, Size: 3201 bytes --]

From ff65eaa03b3dca992dc53e10c139a2601ccf9a53 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:29:58 +0800
Subject: [PATCH 01/10] gnu: Add (gnu packages fcitx5).

* gnu/packages/fcitx5.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Reference to new file.
---
 gnu/local.mk            |  1 +
 gnu/packages/fcitx5.scm | 50 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 51 insertions(+)
 create mode 100644 gnu/packages/fcitx5.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 5277403196..e37f2dac70 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -204,6 +204,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/erlang.scm			\
   %D%/packages/fabric-management.scm		\
   %D%/packages/fcitx.scm			\
+  %D%/packages/fcitx5.scm			\
   %D%/packages/figlet.scm			\
   %D%/packages/file.scm				\
   %D%/packages/file-systems.scm			\
diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
new file mode 100644
index 0000000000..8c1fa49322
--- /dev/null
+++ b/gnu/packages/fcitx5.scm
@@ -0,0 +1,50 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages fcitx5)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages datastructures)
+  #:use-module (gnu packages enchant)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages iso-codes)
+  #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages libevent)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages unicode)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-xcb-imdkit.patch --]
[-- Type: text/x-patch, Size: 1881 bytes --]

From f18d90b7b9a57a6855be72c8daccba7f98f08c4b Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:32:29 +0800
Subject: [PATCH 02/10] gnu: Add xcb-imdkit.

* gnu/packages/fcitx5.scm(xcb-imdkit): New variable.
---
 gnu/packages/fcitx5.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 8c1fa49322..edfd6aca2b 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -48,3 +48,37 @@
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg))
+
+(define-public xcb-imdkit
+  (package
+    (name "xcb-imdkit")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/xcb-imdkit/xcb-imdkit-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "1qgbbp8y8ci7haz99vgbrgpjsbrwwyjianyhdvxcirnbm5bybvmz"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove bundled uthash.
+           (delete-file-recursively "uthash")
+           #t))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("uthash" ,uthash)
+       ("libxcb" ,libxcb)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/fcitx/xcb-imdkit")
+    (synopsis "Input method development support for XCB.")
+    (description "Xcb-imdkit is an implementation of xim protocol in XCB,
+comparing with the implementation of IMDkit with Xlib, and xim inside Xlib,
+it has less memory foot print, better performance, and safer on malformed
+client.")
+    (license license:lgpl2.1)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-Add-fcitx5.patch --]
[-- Type: text/x-patch, Size: 2794 bytes --]

From 00d62c64b453f4053f9c31e37a5ee079233dedd1 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:38:35 +0800
Subject: [PATCH 03/10] gnu: Add fcitx5.

* gnu/packages/fcitx5.scm(fcitx5): New variable.
---
 gnu/packages/fcitx5.scm | 59 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index edfd6aca2b..b65d90f588 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -82,3 +82,62 @@ comparing with the implementation of IMDkit with Xlib, and xim inside Xlib,
 it has less memory foot print, better performance, and safer on malformed
 client.")
     (license license:lgpl2.1)))
+
+(define-public fcitx5
+  (package
+    (name "fcitx5")
+    (version "5.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/fcitx5/fcitx5-"
+                           version "_dict.tar.xz"))
+       (sha256
+        (base32 "06zkb33m2rnhg385iy79n3r4svz5jbav74di61xqa3lhbv7534s3"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-DCLDR_DIR="
+                            (assoc-ref %build-inputs "unicode-cldr-common")
+                            "/share/unicode/cldr"))))
+    (inputs
+     `(("cairo" ,cairo)
+       ("cairo-xcb" ,cairo-xcb)
+       ("dbus" ,dbus)
+       ("enchant" ,enchant)
+       ("expat" ,expat)
+       ("fmt" ,fmt)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("gettext" ,gettext-minimal)
+       ("glib" ,glib)
+       ("iso-codes" ,iso-codes)
+       ("json-c" ,json-c)
+       ("libevent" ,libevent)
+       ("libpthread-stubs" ,libpthread-stubs)
+       ("libuuid" ,util-linux "lib")
+       ("libx11" ,libx11)
+       ("libxcb" ,libxcb)
+       ("libxfixes" ,libxfixes)
+       ("libxinerama" ,libxinerama)
+       ("libxkbcommon" ,libxkbcommon)
+       ("libxkbfile" ,libxkbfile)
+       ("pango" ,pango)
+       ("unicode-cldr-common" ,unicode-cldr-common)
+       ("wayland" ,wayland)
+       ("wayland-protocols" ,wayland-protocols)
+       ("xcb-imdkit" ,xcb-imdkit)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)
+       ("xcb-util-wm" ,xcb-util-wm)
+       ("xkeyboard-config" ,xkeyboard-config)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "FCITX_ADDON_DIRS")
+            (files '("lib/fcitx5")))))
+    (home-page "https://github.com/fcitx/fcitx5")
+    (synopsis "Input method framework")
+    (description "Fcitx 5 is a generic input method framework.")
+    (license license:lgpl2.1+)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-Add-fcitx5-lua.patch --]
[-- Type: text/x-patch, Size: 1519 bytes --]

From c457b386b591b42c7fee42feba60d1d11a7e173f Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:39:29 +0800
Subject: [PATCH 04/10] gnu: Add fcitx5-lua.

* gnu/packages/fcitx5.scm(fcitx5-lua): New variable.
---
 gnu/packages/fcitx5.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index b65d90f588..7fa35a372a 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -141,3 +141,27 @@ client.")
     (synopsis "Input method framework")
     (description "Fcitx 5 is a generic input method framework.")
     (license license:lgpl2.1+)))
+
+(define-public fcitx5-lua
+  (package
+    (name "fcitx5-lua")
+    (version "5.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/fcitx5-lua/fcitx5-lua-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "177mj56j8yrl79hvk7bbrifvm137np23pwalv83ibgk4l51z92hf"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("lua" ,lua)
+       ("gettext" ,gettext-minimal)
+       ("libpthread-stubs" ,libpthread-stubs)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (home-page "https://github.com/fcitx/fcitx5-lua")
+    (synopsis "Lua support for Fcitx 5")
+    (description "Fcitx5-lua allows writing Fcitx5 extension in Lua.")
+    (license license:lgpl2.1+)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-gnu-Add-libime.patch --]
[-- Type: text/x-patch, Size: 1604 bytes --]

From 5d9940529b0ae06403ff7f5a2a176d5d14f1f44c Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:40:41 +0800
Subject: [PATCH 05/10] gnu: Add libime.

* gnu/packages/fcitx5.scm(libime): New variable.
---
 gnu/packages/fcitx5.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 7fa35a372a..cfcb454fa9 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -165,3 +165,28 @@ client.")
     (synopsis "Lua support for Fcitx 5")
     (description "Fcitx5-lua allows writing Fcitx5 extension in Lua.")
     (license license:lgpl2.1+)))
+
+(define-public libime
+  (package
+    (name "libime")
+    (version "1.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5/libime/libime-"
+                           version "_dict.tar.xz"))
+       (sha256
+        (base32 "006pncby7p6h3rnicckzjwi6jzsrqiqbj6p9bpic80lanlllgw31"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("boost" ,boost)))
+    (native-inputs
+     `(("gcc" ,gcc-9)                  ;for #include <filesystem> and ld support
+       ("extra-cmake-modules" ,extra-cmake-modules)
+       ("python" ,python)))             ;needed to run test
+    (home-page "https://github.com/fcitx/libime")
+    (synopsis "Library for implementing generic input method")
+    (description "Libime is a library for implmenting various input methods
+editors.")
+    (license license:lgpl2.1+)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-fcitx5-qt.patch --]
[-- Type: text/x-patch, Size: 1976 bytes --]

From 3b2066d8e5e84020401d762a9584a77b55bb6304 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:42:43 +0800
Subject: [PATCH 06/10] gnu: Add fcitx5-qt.

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

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index cfcb454fa9..2ca1e8d8e5 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -190,3 +190,38 @@ client.")
     (description "Libime is a library for implmenting various input methods
 editors.")
     (license license:lgpl2.1+)))
+
+(define-public fcitx5-qt
+  (package
+    (name "fcitx5-qt")
+    (version "5.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5"
+                           "/fcitx5-qt/fcitx5-qt-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "0ilhb4yw9k3m1c4fidnv3nd5dgm9xxds11dgdys6gswjjnmcgqqm"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-DCMAKE_INSTALL_QT5PLUGINDIR="
+                            %output "/lib/qt5/plugins")
+             "-DENABLE_QT4=Off")))
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("libxcb" ,libxcb)
+       ("libxkbcommon" ,libxkbcommon)
+       ("qtbase" ,qtbase)
+       ("gettext" ,gettext-minimal)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (home-page "https://github.com/fcitx/fcitx5-qt")
+    (synopsis "Qt library and IM module for Fcitx 5")
+    (description "Fcitx5-qt provides Qt library for development and IM module
+for Qt based application.")
+    (license (list license:lgpl2.1+
+                   ;; Files under qt4(Fcitx5Qt4DBusAddons), qt5/dbusaddons
+                   ;; and qt5/platforminputcontext.
+                   license:bsd-3))))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-gnu-Add-fcitx5-gtk.patch --]
[-- Type: text/x-patch, Size: 2581 bytes --]

From 61abe1f5eb7bb3bd4e80199fb8225be200a223e7 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:43:47 +0800
Subject: [PATCH 07/10] gnu: Add fcitx5-gtk.

* gnu/packages/fcitx5.scm(fcitx5-gtk): New variable.
---
 gnu/packages/fcitx5.scm | 49 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 2ca1e8d8e5..13f4cd12ad 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -191,6 +191,55 @@ client.")
 editors.")
     (license license:lgpl2.1+)))
 
+(define-public fcitx5-gtk
+  (package
+    (name "fcitx5-gtk")
+    (version "5.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5"
+                           "/fcitx5-gtk/fcitx5-gtk-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "0h53liraqc5nz4nyi3ixdfdw3zzkdcsiff7j25acc3gmaa5gyij7"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;No test
+       #:configure-flags
+       (list (string-append "-DGOBJECT_INTROSPECTION_GIRDIR="
+                            %output "/share/gir-1.0")
+             (string-append "-DGOBJECT_INTROSPECTION_TYPELIBDIR="
+                            %output "/lib/girepository-1.0"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-install-prefix
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((gtk3 (assoc-ref outputs "gtk3")))
+
+               (substitute* "gtk3/CMakeLists.txt"
+                 (("\\$\\{CMAKE_INSTALL_LIBDIR\\}")
+                  (string-append gtk3 "/lib")))))))))
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("libxkbcommon" ,libxkbcommon)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk2" ,gtk+-2)
+       ("gtk3" ,gtk+)
+       ("glib" ,glib)
+       ("libx11" ,libx11)
+       ("gettext" ,gettext-minimal)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)
+       ("glib" ,glib "bin")))           ;for glib-genmarshal
+    (outputs '("out" "gtk3"))
+    (home-page "https://github.com/fcitx/fcitx5-gtk")
+    (synopsis "Glib based D-Bus client and GTK IM module for Fcitx 5")
+    (description "Fcitx5-gtk provides a Glib based D-Bus client and IM module
+for GTK+2/GTK+3 application.")
+    (license license:lgpl2.1+)))
+
 (define-public fcitx5-qt
   (package
     (name "fcitx5-qt")
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-gnu-Add-fcitx5-chinese-addons.patch --]
[-- Type: text/x-patch, Size: 2859 bytes --]

From f3d583ef9b349f1f848ac76d9d15ba30ec3c87b1 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 28 Nov 2020 13:25:37 +0800
Subject: [PATCH 08/10] gnu: Add fcitx5-chinese-addons.

* gnu/packages/fcitx5.scm(fcitx5-chinese-addons): New variable.
---
 gnu/packages/fcitx5.scm | 61 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 13f4cd12ad..47386ea6a3 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -274,3 +274,64 @@ for Qt based application.")
                    ;; Files under qt4(Fcitx5Qt4DBusAddons), qt5/dbusaddons
                    ;; and qt5/platforminputcontext.
                    license:bsd-3))))
+
+(define-public fcitx5-chinese-addons
+  (package
+    (name "fcitx5-chinese-addons")
+    (version "5.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5"
+                           "/fcitx5-chinese-addons/fcitx5-chinese-addons-"
+                           version "_dict.tar.xz"))
+       (sha256
+        (base32 "0mf91gzwzhfci0jn6g3l516xjw8r4v40ginnbl70h1zx6vr24rfp"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'split-outputs
+           ;; Build with GUI supports requires Qt and increase package closure
+           ;; by 800M on x86_64, so place it under another output.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "gui/pinyindictmanager/CMakeLists.txt"
+               (("\\$\\{CMAKE_INSTALL_LIBDIR\\}" _)
+                (string-append (assoc-ref outputs "gui") "/lib"))))))))
+    (inputs
+     `(("fcitx5" ,fcitx5)
+       ("fcitx5-lua" ,fcitx5-lua)
+       ("boost" ,boost)
+       ("libime",libime)
+       ("curl" ,curl)
+       ("gettext" ,gettext-minimal)
+       ("fmt" ,fmt)
+       ("libpthread-stubs" ,libpthread-stubs)
+       ("opencc" ,opencc)
+       ("qtbase" ,qtbase)
+       ("fcitx5-qt" ,fcitx5-qt)
+       ("qtwebkit" ,qtwebkit)))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (outputs '("out" "gui"))
+    (home-page "https://github.com/fcitx/fcitx5-chinese-addons")
+    (synopsis "Chinese related addons for Fcitx 5")
+    (description "Fcitx5-chinese-addons provides Chinese related addons,
+including input methods previous bundled inside Fcitx 4:
+
+@itemize
+@item Bingchan
+@item Cangjie
+@item Erbi
+@item Pinyin
+@item Shuangpin
+@item Wanfeng
+@item Wubi
+@item Wubi Pinyin
+@item Ziranma
+@end itemize\n")
+    (license (list license:lgpl2.1+
+                   license:gpl2+
+                   ;; im/pinyin/emoji.txt
+                   license:unicode))))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #10: 0009-gnu-Add-fcitx5-configtool.patch --]
[-- Type: text/x-patch, Size: 2093 bytes --]

From 4ab7096a696c2fd0b0d6a43af89e2208dfbf1810 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:46:03 +0800
Subject: [PATCH 09/10] gnu: Add fcitx5-configtool.

* gnu/packages/fcitx5.scm(fcitx5-configtool): New variable.
---
 gnu/packages/fcitx5.scm | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 47386ea6a3..19d0f55a7c 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -335,3 +335,42 @@ including input methods previous bundled inside Fcitx 4:
                    license:gpl2+
                    ;; im/pinyin/emoji.txt
                    license:unicode))))
+
+(define-public fcitx5-configtool
+  (package
+   (name "fcitx5-configtool")
+   (version "5.0.1")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append
+           "https://download.fcitx-im.org/fcitx5"
+           "/fcitx5-configtool/fcitx5-configtool-" version ".tar.xz"))
+     (sha256
+      (base32 "0mrqhzvab41hkvhkz7vkb8d2mv5bgx4aqp9jpz4kf3kskwm1q14b"))))
+   (build-system cmake-build-system)
+   (arguments
+    `(#:configure-flags
+      ;; KDE is currently not working on Guix, KCM supports doesn't make sense.
+      '("-DENABLE_KCM=Off")))
+   (inputs
+    `(("fcitx5" ,fcitx5)
+      ("fcitx5-qt" ,fcitx5-qt)
+      ("qtbase" ,qtbase)
+      ("qtx11extras" ,qtx11extras)
+      ("kitemviews" ,kitemviews)
+      ("kwidgetsaddons" ,kwidgetsaddons)
+      ("libx11" ,libx11)
+      ("xkeyboard-config" ,xkeyboard-config)
+      ("libxkbfile" ,libxkbfile)
+      ("gettext" ,gettext-minimal)
+      ("iso-codes" ,iso-codes)))
+   (native-inputs
+    `(("gcc" ,gcc-9)
+      ("extra-cmake-modules" ,extra-cmake-modules)
+      ("pkg-config" ,pkg-config)))
+   (home-page "https://github.com/fcitx/fcitx5-configtool")
+   (synopsis "Graphical configuration tool for Fcitx 5")
+   (description "Fcitx5-configtool is a graphical configuration tool
+to manage different input methods in Fcitx 5.")
+   (license license:gpl2+)))
-- 
2.29.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #11: 0010-gnu-Add-fcitx5-material-color-theme.patch --]
[-- Type: text/x-patch, Size: 3410 bytes --]

From d5089c5300a905bd50c1d58c0d0ec71334632945 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 7 Dec 2020 22:45:06 +0800
Subject: [PATCH 10/10] gnu: Add fcitx5-material-color-theme.

* gnu/packages/fcitx5.scm(fcitx5-material-color-theme): New variable.
---
 gnu/packages/fcitx5.scm | 70 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 19d0f55a7c..0a6a2c45e5 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -374,3 +374,73 @@ including input methods previous bundled inside Fcitx 4:
    (description "Fcitx5-configtool is a graphical configuration tool
 to manage different input methods in Fcitx 5.")
    (license license:gpl2+)))
+
+(define-public fcitx5-material-color-theme
+  (package
+    (name "fcitx5-material-color-theme")
+    (version "0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hosxy/Fcitx5-Material-Color")
+             (commit version)))
+       (sha256
+        (base32 "1mgc722521jmfx0xc3ibmiycd3q2w7xg2956xcpc07kz90gcdjaa"))))
+    (build-system copy-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (use-modules (srfi srfi-26))
+
+             (let* ((out (assoc-ref outputs "out"))
+                    (assets-dir (string-append
+                                 out "/share/fcitx5-material-color-theme"))
+                    (themes-prefix (string-append out "/share/fcitx5/themes")))
+
+               (define (install-theme-variant variant target)
+                 (let ((dir (string-append themes-prefix "/" target))
+                       (png (string-append "panel-" variant ".png"))
+                       (conf (string-append "theme-" variant ".conf")))
+                   (format #t "install: Installing color variant \"~a\" to ~a~%"
+                           variant dir)
+                   (substitute* conf
+                     (("^Name=.*")
+                      (string-append "Name=" target "\n")))
+                   (mkdir-p dir)
+                   (install-file png dir)
+                   (copy-file conf (string-append dir "/theme.conf"))
+                   (symlink (string-append assets-dir "/arrow.png")
+                            (string-append dir "/arrow.png"))))
+
+               (mkdir-p assets-dir)
+               (install-file "arrow.png" assets-dir)
+               (for-each
+                (lambda (x)
+                  (install-theme-variant
+                   x (string-append "Material-Color-" (string-capitalize x))))
+                '("black" "blue" "brown" "indigo"
+                  "orange" "pink" "red" "teal"))
+
+               (install-theme-variant
+                "deepPurple" "Material-Color-DeepPurple")
+               #t))))))
+    (home-page "https://github.com/hosxy/Fcitx5-Material-Color")
+    (synopsis "Material Design for Fcitx 5")
+    (description "Fcitx5-material-color-theme is a Material Design theme
+for Fcitx 5 with following color variants:
+
+@itemize
+@item Black
+@item Blue
+@item Brown
+@item Indigo
+@item Orange
+@item Pink
+@item Red
+@item teal
+@item DeepPurple
+@end itemize\n")
+    (license license:asl2.0)))
-- 
2.29.2


[-- Attachment #12: Type: text/plain, Size: 70 bytes --]

-- 
Retrieve my PGP public key: https://meta.sr.ht/~citreu.pgp

Zihao

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#44920: [PATCH]: Add fcitx5.
  2020-12-07 14:53           ` Zhu Zihao
@ 2020-12-08 12:37             ` 宋文武
  0 siblings, 0 replies; 11+ messages in thread
From: 宋文武 @ 2020-12-08 12:37 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 44920-done

Zhu Zihao <all_but_last@163.com> writes:

> All Fcitx5 components updated.
>
> Here are the patches.
>

For fcitx5-gtk, I change the "gtk3" output to "gtk2", as GTK+ 3 is the
default version.

Applied, thank you!


> BTW, fcitx5-chinese-addons contains a cloud pinyin feature, which use
> Google or Baidu's cloud pinyin server. But it was disabled by default
> and it'll ask user to enable it or not, should we make a patch to get
> rid of such anti-features?

I leave it in for now, maybe it's good to ask upstream for a disable
option for cloudpinyin.




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#44920] [PATCH]: Add fcitx5.
  2020-12-08 10:30           ` Zhu Zihao
@ 2020-12-08 12:43             ` 宋文武
  0 siblings, 0 replies; 11+ messages in thread
From: 宋文武 @ 2020-12-08 12:43 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 44920

Zhu Zihao <all_but_last@163.com> writes:

> Thanks to upstream maintainer, Fcitx5 now allow us to install addon in
> separated prefix without many hacks. (Though some are still needed)
>

Oh, sorry for my ignorance, I missed this one, as the previous patches
already pushed, could you rebase this patch for master?

Thank you!




^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-12-08 12:43 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-11-28  5:44 [bug#44920] [PATCH]: Add fcitx5 Zhu Zihao
2020-12-03  4:09 ` Peng Mei Yu
2020-12-05  4:09   ` Zhu Zihao
2020-12-06  8:30     ` 宋文武
2020-12-06 15:38       ` [bug#44920] " Zhu Zihao
2020-12-07 10:55         ` 宋文武
2020-12-07 14:53           ` Zhu Zihao
2020-12-08 12:37             ` bug#44920: " 宋文武
2020-12-07 15:36           ` [bug#44920] " Zhu Zihao
2020-12-08 10:30           ` Zhu Zihao
2020-12-08 12:43             ` 宋文武

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).