aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; 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 fcitx)
  #:use-module ((guix licenses) #:select (gpl2+ bsd-3))
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix gexp)
  #:use-module (guix git-download)
  #:use-module (guix build-system cmake)
  #:use-module (guix build-system glib-or-gtk)
  #:use-module (guix build-system qt)
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages check)
  #:use-module (gnu packages documentation)
  #:use-module (gnu packages enchant)
  #:use-module (gnu packages gettext)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages graphviz)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages icu4c)
  #:use-module (gnu packages iso-codes)
  #:use-module (gnu packages kde-frameworks)
  #:use-module (gnu packages man)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages python)
  #:use-module (gnu packages qt)
  #:use-module (gnu packages sqlite)
  #:use-module (gnu packages web)
  #:use-module (gnu packages xml)
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages xdisorg))

(define-public fcitx-qt5
  (package
    (name "fcitx-qt5")
    (version "1.2.7")
    (source
     (origin
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/fcitx/fcitx-qt5.git")
         (commit version)))
       (file-name
        (git-file-name name version))
       (sha256
        (base32 "1gw51m7hfnplkym33dzwfa8g0q20ji61pr80s2i6xhy2glrm1ssj"))))
    (build-system qt-build-system)
    (arguments
     `(#:tests? #f                      ; No target
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'patch-install-dir
           (lambda* (#:key outputs #:allow-other-keys)
             (substitute* "qt5/quickphrase-editor/CMakeLists.txt"
               (("\\$\\{FCITX4_ADDON_INSTALL_DIR\\}")
                (string-append
                 (assoc-ref outputs "out")
                 "/lib/fcitx")))
             (substitute* "qt5/platforminputcontext/CMakeLists.txt"
               (("\\$\\{CMAKE_INSTALL_QTPLUGINDIR\\}")
                (string-append
                 (assoc-ref outputs "out")
                 "/lib/qt5/plugins")))
             #t)))))
    (native-inputs
     (list extra-cmake-modules pkg-config))
    (inputs
     `(("fcitx" ,fcitx)
       ("libintl" ,intltool)
       ("libxkbcommon" ,libxkbcommon)))
    (propagated-inputs
     (list qtbase-5))
    (synopsis "Fcitx Qt5 Input Context")
    (description "This package provides a Qt5 frontend for fcitx.")
    (home-page "https://github.com/fcitx/fcitx-qt5/")
    (license
     (list
      ;; Plugin
      bsd-3
      ;; Others
      gpl2+))))

(define-public presage
  (package
    (name "presage")
    (version "0.9.1")
    (source
     (origin
       (method url-fetch)
       (uri
        (string-append "mirror://sourceforge/presage/presage/"
                       version "/presage-" version ".tar.gz"))
       (sha256
        (base32 "0rm3b3zaf6bd7hia0lr1wyvi1rrvxkn7hg05r5r1saj0a3ingmay"))))
    (build-system glib-or-gtk-build-system)
    (outputs '("out" "doc"))
    (arguments
     `(#:configure-flags
       (list
        "CFLAGS=-Wno-narrowing -std=c++14"
        "CXXFLAGS=-Wno-narrowing -std=c++14")
       #:phases
       (modify-phases %standard-phases
         (add-after 'install 'move-doc
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((out (assoc-ref outputs "out"))
                    (doc (assoc-ref outputs "doc")))
               (mkdir-p (string-append doc "/share/presage"))
               (rename-file
                (string-append out "/share/presage/html")
                (string-append doc "/share/presage/html")))))
         (add-after 'unpack 'update-config-scripts
           (lambda* (#:key native-inputs inputs #:allow-other-keys)
             (for-each (lambda (file)
                         (install-file
                          (search-input-file
                           (or native-inputs inputs)
                           (string-append "/bin/" file)) "."))
                       '("config.guess" "config.sub")))))))
    (native-inputs
     `(("config" ,config)
       ("dot" ,graphviz)
       ("doxygen" ,doxygen)
       ("gettext" ,gettext-minimal)
       ("glib:bin" ,glib "bin")
       ("gtk+:bin" ,gtk+ "bin")
       ("help2man" ,help2man)
       ("pkg-config" ,pkg-config)
       ("python-wrapper" ,python-wrapper)))
    (inputs
     (list glib gtk+ libx11 sqlite tinyxml))
    (synopsis "Intelligent Predictive Text Entry System")
    (description "Presage generates predictions by modelling natural language as
a combination of redundant information sources.  It computes probabilities for
words which are most likely to be entered next by merging predictions generated
by the different predictive algorithms.")
    (home-page "https://presage.sourceforge.io/")
    (license gpl2+)))

(define-public fcitx
  (package
    (name "fcitx")
    (version "4.2.9.9")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://download.fcitx-im.org/fcitx/"
                                  "fcitx-" version "_dict.tar.xz"))
              (sha256
               (base32
                "0x5980l7ry34scvfdwc330d9nxv3id9jj9wcl7bvqjkp32gz3aj5"))))
    (build-system cmake-build-system)
    (outputs '("out" "gtk2" "gtk3"))
    (arguments
     (list
      #:configure-flags
      #~(list "-DENABLE_TEST=ON"
              (string-append "-DXKB_RULES_XML_FILE="
                             (search-input-file
                              %build-inputs "share/X11/xkb/rules/evdev.xml"))
              "-DENABLE_GTK2_IM_MODULE=ON"
              "-DENABLE_GTK3_IM_MODULE=ON"
              (string-append "-DGTK2_IM_MODULEDIR="
                             #$output:gtk2
                             "/lib/gtk-2.0/2.10.0/immodules")
              (string-append "-DGTK3_IM_MODULEDIR="
                             #$output:gtk3
                             "/lib/gtk-3.0/3.0.0/immodules")
              ;; XXX: Enable GObject Introspection and Qt4 support.
              "-DENABLE_GIR=OFF"
              "-DENABLE_QT=OFF"
              "-DENABLE_QT_IM_MODULE=OFF")))
    (native-inputs
     (list doxygen
           ;; XXX: We can't simply #:use-module due to a cycle somewhere.
           (module-ref
            (resolve-interface '(gnu packages kde-frameworks))
            'extra-cmake-modules)
           `(,glib "bin")               ; for glib-genmarshal
           pkg-config))
    (inputs
     (list dbus
           enchant-1.6
           gettext-minimal
           gtk+-2
           gtk+
           icu4c
           iso-codes/pinned
           json-c
           libxkbfile
           libxml2
           xkeyboard-config))
    (home-page "https://fcitx-im.org")
    (synopsis "Input method framework")
    (description
     "Fcitx is an input method framework with extension support.  It has
Pinyin, Quwei and some table-based (Wubi, Cangjie, Erbi, etc.) input methods
built-in.")
    (license gpl2+)))

(define-public fcitx-configtool
  (package
   (name "fcitx-configtool")
   (version "0.4.10")
   (source (origin
            (method url-fetch)
            (uri (string-append "https://download.fcitx-im.org/fcitx-configtool/"
                                "fcitx-configtool-" version ".tar.xz"))
            (sha256
             (base32
              "1yyi9jhkwn49lx9a47k1zbvwgazv4y4z72gnqgzdpgdzfrlrgi5w"))))
   (build-system cmake-build-system)
   (arguments
    `(#:configure-flags
      (list "-DENABLE_GTK2=ON"
            "-DENABLE_GTK3=ON")
      #:tests? #f)) ; No tests.
   (native-inputs
    `(("glib:bin"   ,glib "bin")
      ("pkg-config" ,pkg-config)))
   (inputs
    `(("fcitx"      ,fcitx)
      ("dbus-glib"  ,dbus-glib)
      ("gettext"    ,gettext-minimal)
      ("gtk2"       ,gtk+-2)
      ("gtk3"       ,gtk+)
      ("iso-codes"  ,iso-codes/pinned)))
   (home-page "https://fcitx-im.org/wiki/Configtool")
   (synopsis "Graphic Fcitx configuration tool")
   (description
    "Fcitx is an input method framework with extension support.  It has
Pinyin, Quwei and some table-based (Wubi, Cangjie, Erbi, etc.) input methods
built-in.  This package provides GTK version of the graphic configuration
tool of Fcitx.")
   (license gpl2+)))
egr.org/~wavexx/software/wmnd/") (synopsis "Network interface monitor") (description "WMND is a dockapp for monitoring network interfaces under WindowMaker and other compatible window managers.") (license license:gpl2+))) (define-public wmcpuload (package (name "wmcpuload") (version "1.1.1") (source (origin (method url-fetch) (uri (string-append "mirror://debian/pool/main/w/wmcpuload/" name "_" version ".orig.tar.gz")) (sha256 (base32 "1334y0axnxydwv05d172f405iljrfakg4kcyg9kmn46v6ywv424g")))) (build-system gnu-build-system) (inputs (list libx11 libxext libxpm)) (native-inputs (list pkg-config)) (home-page "https://www.dockapps.net/wmcpuload") (synopsis "Monitor CPU usage") (description "Wmcpuload displays the current CPU usage, expressed as a percentile and a chart, and has an LCD look-alike user interface. The back-light may be turned on and off by clicking the mouse button over the application. If the CPU usage hits a certain threshold, an alarm-mode will alert you by turning back-light on.") (license license:gpl2+))) (define-public wmclock (package (name "wmclock") (version "1.0.16") (source (origin (method url-fetch) (uri (string-append "mirror://debian/pool/main/w/wmclock/" name "_" version ".orig.tar.gz")) (sha256 (base32 "1lx276ba8r2yydhmwj1g586jdqg695ad89ng36fr3mb067gvb2rz")))) (build-system gnu-build-system) (inputs (list libx11 libxext libxpm)) ;; wmclock requires autoreconf to generate its configure script. (native-inputs (list autoconf automake pkg-config)) (home-page "https://www.dockapps.net/wmclock") (synopsis "Display the date and time") (description "wmclock is an applet for Window Maker which displays the date and time in a dockable tile. It features multiple language support, 24h or 12h time display, and can run a user-specified program on mouse click.") (license license:gpl2+))) (define-public wmfire (package (name "wmfire") (version "1.2.4") (source (origin (method url-fetch) (uri (string-append "https://www.improbability.net/" name "/" name "-" version ".tar.gz")) (sha256 (base32 "101grahd80n97y2dczb629clmcgiavdpbbwy78kk5wgs362m12z3")) (patches (search-patches "wmfire-dont-inline-draw-fire.patch" "wmfire-update-for-new-gdk-versions.patch")))) (build-system gnu-build-system) (inputs (list gtk+-2 libgtop)) (native-inputs (list pkg-config)) (home-page "https://www.improbability.net/") (synopsis "Display flames to represent resource usage") (description "wmfire is an applet for Window Maker that can monitor the average cpu load, or individual cpu load on SMP computers. Additionally it can monitor the memory, network load, a file or just be set to show a pretty flame. On entering the dock a burning spot replaces the cursor, and after two seconds symbols to represent the current monitor are \"burnt\" onscreen. The flame colour can also be changed.") (license license:gpl2+))) (define-public wmamixer (package (name "wmamixer") (version "1.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/gryf/wmamixer") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "04vv4kr4mj1nwri6zqgdg4yzbbmmng73qd4h0azliril75m7sldf")))) (inputs (list libx11 libxpm libxext alsa-lib)) (build-system gnu-build-system) (arguments (list #:phases #~(modify-phases %standard-phases (delete 'configure) (delete 'check) (replace 'install (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin"))) (install-file "wmamixer" bin))))))) (synopsis "Window maker applet to display the current volume") (description "wmamixer is an applet for window maker which displays the current volume level both numerically and visiaully with a volume bar. It includes the ability to toggle through different outputs to show their respective volume level.") (home-page "https://github.com/gryf/wmamixer") (license license:gpl2+)))