gnu: ruby-pandoc-ruby: Use pandoc instead of ghc-pandoc.
[jackhill/guix/guix.git] / gnu / packages / ibus.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
3 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
4 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
5 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
6 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
7 ;;; Copyright © 2018, 2019, 2020 Peng Mei Yu <i@pengmeiyu.com>
8 ;;; Copyright © 2020 kanichos <kanichos@yandex.ru>
9 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
10 ;;;
11 ;;; This file is part of GNU Guix.
12 ;;;
13 ;;; GNU Guix is free software; you can redistribute it and/or modify it
14 ;;; under the terms of the GNU General Public License as published by
15 ;;; the Free Software Foundation; either version 3 of the License, or (at
16 ;;; your option) any later version.
17 ;;;
18 ;;; GNU Guix is distributed in the hope that it will be useful, but
19 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ;;; GNU General Public License for more details.
22 ;;;
23 ;;; You should have received a copy of the GNU General Public License
24 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26 (define-module (gnu packages ibus)
27 #:use-module (guix licenses)
28 #:use-module (guix packages)
29 #:use-module (guix download)
30 #:use-module (guix git-download)
31 #:use-module (guix build-system cmake)
32 #:use-module (guix build-system gnu)
33 #:use-module (guix build-system glib-or-gtk)
34 #:use-module (guix utils)
35 #:use-module (gnu packages)
36 #:use-module (gnu packages anthy)
37 #:use-module (gnu packages autotools)
38 #:use-module (gnu packages base)
39 #:use-module (gnu packages boost)
40 #:use-module (gnu packages check)
41 #:use-module (gnu packages cmake)
42 #:use-module (gnu packages databases)
43 #:use-module (gnu packages datastructures)
44 #:use-module (gnu packages dbm)
45 #:use-module (gnu packages freedesktop)
46 #:use-module (gnu packages gettext)
47 #:use-module (gnu packages glib)
48 #:use-module (gnu packages gnome)
49 #:use-module (gnu packages gtk)
50 #:use-module (gnu packages iso-codes)
51 #:use-module (gnu packages logging)
52 #:use-module (gnu packages pkg-config)
53 #:use-module (gnu packages python)
54 #:use-module (gnu packages serialization)
55 #:use-module (gnu packages sqlite)
56 #:use-module (gnu packages textutils)
57 #:use-module (gnu packages unicode)
58 #:use-module (gnu packages xorg))
59
60 (define-public ibus
61 (package
62 (name "ibus")
63 (version "1.5.22")
64 (source (origin
65 (method url-fetch)
66 (uri (string-append "https://github.com/ibus/ibus/"
67 "releases/download/"
68 version "/ibus-" version ".tar.gz"))
69 (sha256
70 (base32
71 "0jmy2w01phpmqnjnfnak7nvfna57mpgfnl87jwc4iai8ijjynw41"))))
72 (build-system glib-or-gtk-build-system)
73 (arguments
74 `(#:tests? #f ; tests fail because there's no connection to dbus
75 #:parallel-build? #f ; race condition discovered with emoji support
76 #:configure-flags (list "--enable-python-library"
77 (string-append
78 "--with-unicode-emoji-dir="
79 (assoc-ref %build-inputs "unicode-emoji")
80 "/share/unicode/emoji")
81 (string-append
82 "--with-emoji-annotation-dir="
83 (assoc-ref %build-inputs "unicode-cldr-common")
84 "/share/unicode/cldr/common/annotations")
85 (string-append "--with-ucd-dir="
86 (assoc-ref %build-inputs "ucd")
87 "/share/ucd")
88 "--enable-wayland")
89 #:phases
90 (modify-phases %standard-phases
91 (add-after 'unpack 'patch-python-target-directories
92 (lambda* (#:key outputs #:allow-other-keys)
93 (let ((root (string-append (assoc-ref outputs "out")
94 "/lib/python"
95 ,(version-major+minor (package-version python))
96 "/site-packages")))
97 (substitute* "configure"
98 (("(py2?overridesdir)=.*" _ var)
99 (string-append var "=" root "/gi/overrides/"))
100 (("(pkgpython2dir=).*" _ var)
101 (string-append var root "/ibus"))))
102 #t))
103 (add-before 'configure 'disable-dconf-update
104 (lambda _
105 (substitute* "data/dconf/Makefile.in"
106 (("dconf update") "echo dconf update"))
107 #t))
108 (add-after 'unpack 'delete-generated-files
109 (lambda _
110 (for-each (lambda (file)
111 (let ((c (string-append (string-drop-right file 4) "c")))
112 (when (file-exists? c)
113 (format #t "deleting ~a\n" c)
114 (delete-file c))))
115 (find-files "." "\\.vala"))
116 #t))
117 (add-after 'unpack 'fix-paths
118 (lambda* (#:key inputs #:allow-other-keys)
119 (substitute* "src/ibusenginesimple.c"
120 (("/usr/share/X11/locale")
121 (string-append (assoc-ref inputs "libx11")
122 "/share/X11/locale")))
123 (substitute* "ui/gtk3/xkblayout.vala"
124 (("\"(setxkbmap|xmodmap)\"" _ prog)
125 (string-append "\"" (assoc-ref inputs prog) "/bin/" prog "\"")))
126 #t))
127 (add-after 'wrap-program 'wrap-with-additional-paths
128 (lambda* (#:key outputs #:allow-other-keys)
129 ;; Make sure 'ibus-setup' runs with the correct PYTHONPATH and
130 ;; GI_TYPELIB_PATH.
131 (let ((out (assoc-ref outputs "out")))
132 (wrap-program (string-append out "/bin/ibus-setup")
133 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))
134 `("GI_TYPELIB_PATH" ":" prefix
135 (,(getenv "GI_TYPELIB_PATH")
136 ,(string-append out "/lib/girepository-1.0")))))
137 #t)))))
138 (inputs
139 `(("dbus" ,dbus)
140 ("dconf" ,dconf)
141 ("gconf" ,gconf)
142 ("gtk2" ,gtk+-2)
143 ("gtk+" ,gtk+)
144 ("json-glib" ,json-glib)
145 ("libnotify" ,libnotify)
146 ("libx11" ,libx11)
147 ("setxkbmap" ,setxkbmap)
148 ("wayland" ,wayland)
149 ("xmodmap" ,xmodmap)
150 ("iso-codes" ,iso-codes)
151 ("pygobject2" ,python-pygobject)
152 ("python" ,python)))
153 (native-inputs
154 `(("glib" ,glib "bin") ; for glib-genmarshal
155 ("gettext" ,gettext-minimal)
156 ("gobject-introspection" ,gobject-introspection) ; for g-ir-compiler
157 ("ucd" ,ucd)
158 ("unicode-emoji" ,unicode-emoji)
159 ("unicode-cldr-common" ,unicode-cldr-common)
160 ("vala" ,vala)
161 ("pkg-config" ,pkg-config)))
162 (native-search-paths
163 (list (search-path-specification
164 (variable "IBUS_COMPONENT_PATH")
165 (files '("share/ibus/component")))))
166 (synopsis "Input method framework")
167 (description
168 "IBus is an input framework providing a full-featured and user-friendly
169 input method user interface. It comes with multilingual input support. It
170 may also simplify input method development.")
171 (home-page "https://github.com/ibus/ibus/wiki")
172 (license lgpl2.1+)))
173
174 (define-public ibus-libpinyin
175 (package
176 (name "ibus-libpinyin")
177 (version "1.11.1")
178 (source (origin
179 (method url-fetch)
180 (uri (string-append "https://github.com/libpinyin/ibus-libpinyin/"
181 "releases/download/" version
182 "/ibus-libpinyin-" version ".tar.gz"))
183 (sha256
184 (base32
185 "1bl1cgicd2df797dx1x0q904438bsn8i23djzcfcai4dp3631xc0"))))
186 (build-system glib-or-gtk-build-system)
187 (arguments
188 `(#:phases
189 (modify-phases %standard-phases
190 (add-after 'wrap-program 'wrap-with-additional-paths
191 (lambda* (#:key inputs outputs #:allow-other-keys)
192 ;; Make sure 'ibus-setup-libpinyin' runs with the correct
193 ;; PYTHONPATH and GI_TYPELIB_PATH.
194 (let ((out (assoc-ref outputs "out")))
195 (wrap-program (string-append out "/libexec/ibus-setup-libpinyin")
196 `("PYTHONPATH" ":" prefix
197 (,(getenv "PYTHONPATH")
198 ,(string-append (assoc-ref inputs "ibus")
199 "/lib/girepository-1.0")))
200 `("GI_TYPELIB_PATH" ":" prefix
201 (,(string-append (assoc-ref inputs "ibus")
202 "/lib/girepository-1.0"))))
203 #t))))))
204 (inputs
205 `(("ibus" ,ibus)
206 ("libpinyin" ,libpinyin)
207 ("bdb" ,bdb)
208 ("sqlite" ,sqlite)
209 ("python" ,python)
210 ("pyxdg" ,python-pyxdg)
211 ("pygobject2" ,python-pygobject)
212 ("gtk+" ,gtk+)))
213 (native-inputs
214 `(("pkg-config" ,pkg-config)
215 ("intltool" ,intltool)
216 ("glib" ,glib "bin")))
217 (synopsis "Chinese pinyin and ZhuYin input methods for IBus")
218 (description
219 "This package includes a Chinese pinyin input method and a Chinese
220 ZhuYin (Bopomofo) input method based on libpinyin for IBus.")
221 (home-page "https://github.com/libpinyin/ibus-libpinyin")
222 (license gpl2+)))
223
224 (define-public libpinyin
225 (package
226 (name "libpinyin")
227 (version "2.3.0")
228 (source (origin
229 (method url-fetch)
230 (uri (string-append "https://github.com/libpinyin/libpinyin/"
231 "releases/download/" version
232 "/libpinyin-" version ".tar.gz"))
233 (sha256
234 (base32
235 "14969v6w8n1aiqphl2386dws7dmsdwbzyqnlz4kr8ppm39m9rp5k"))))
236 (build-system gnu-build-system)
237 (inputs
238 `(("glib" ,glib)
239 ("bdb" ,bdb)))
240 (native-inputs
241 `(("pkg-config" ,pkg-config)))
242 (synopsis "Library to handle Chinese pinyin")
243 (description
244 "The libpinyin C++ library provides algorithms needed for sentence-based
245 Chinese pinyin input methods.")
246 (home-page "https://github.com/libpinyin/libpinyin")
247 (license gpl2+)))
248
249 (define-public ibus-anthy
250 (package
251 (name "ibus-anthy")
252 (version "1.5.9")
253 (source (origin
254 (method url-fetch)
255 (uri (string-append
256 "https://github.com/ibus/ibus-anthy/releases/download/"
257 version "/ibus-anthy-" version ".tar.gz"))
258 (sha256
259 (base32
260 "1y8sf837rmp662bv6zakny0xcm7c9c5qda7f9kq9riv9ywpcbw6x"))))
261 (build-system gnu-build-system)
262 (arguments
263 '(#:configure-flags
264 ;; Use absolute exec path in the anthy.xml.
265 (list (string-append "--libexecdir=" %output "/libexec"))
266 #:phases
267 (modify-phases %standard-phases
268 (add-after 'install 'wrap-programs
269 (lambda* (#:key outputs #:allow-other-keys)
270 (let ((out (assoc-ref outputs "out")))
271 (for-each
272 (lambda (prog)
273 (wrap-program (string-append out "/libexec/" prog)
274 `("PYTHONPATH" ":" prefix
275 (,(getenv "PYTHONPATH")))
276 `("GI_TYPELIB_PATH" ":" prefix
277 (,(getenv "GI_TYPELIB_PATH")
278 ,(string-append out "/lib/girepository-1.0")))))
279 '("ibus-engine-anthy" "ibus-setup-anthy"))
280 #t))))))
281 (native-inputs
282 `(("gettext" ,gettext-minimal)
283 ("intltool" ,intltool)
284 ("pkg-config" ,pkg-config)
285 ("python" ,python)))
286 (inputs
287 `(("anthy" ,anthy)
288 ("gtk+" ,gtk+)
289 ("ibus" ,ibus)
290 ("gobject-introspection" ,gobject-introspection)
291 ("python-pygobject" ,python-pygobject)))
292 (synopsis "Anthy Japanese language input method for IBus")
293 (description "IBus-Anthy is an engine for the input bus \"IBus\"). It
294 adds the Anthy Japanese language input method to IBus. Because most graphical
295 applications allow text input via IBus, installing this package will enable
296 Japanese language input in most graphical applications.")
297 (home-page "https://github.com/fujiwarat/ibus-anthy")
298 (license gpl2+)))
299
300 (define-public librime
301 (package
302 (name "librime")
303 (version "1.5.3")
304 (source
305 (origin
306 (method git-fetch)
307 (uri (git-reference
308 (url "https://github.com/rime/librime")
309 (commit version)))
310 (file-name (git-file-name name version))
311 (sha256
312 (base32
313 "0xskhdhk7dgpc71r39pfzxi5vrlzy90aqj1gzv8nnapq91p2awhv"))
314 (modules '((guix build utils)))
315 (snippet
316 '(begin
317 (delete-file-recursively "thirdparty/src")
318 (delete-file-recursively "thirdparty/bin")
319 (delete-file-recursively "thirdparty/include/X11")
320 #t))))
321 (build-system cmake-build-system)
322 (arguments
323 '(#:phases
324 (modify-phases %standard-phases
325 (add-after 'unpack 'patch-source
326 (lambda _
327 (substitute* "CMakeLists.txt"
328 (("include_directories\\($\\{PROJECT_SOURCE_DIR\\}/thirdparty/include\\)") "")
329 (("link_directories\\($\\{PROJECT_SOURCE_DIR\\}/thirdparty/lib\\)") ""))
330 #t)))))
331 (inputs
332 `(("boost" ,boost)
333 ("glog" ,glog)
334 ("leveldb" ,leveldb)
335 ("marisa" ,marisa)
336 ("opencc" ,opencc)
337 ("yaml-cpp" ,yaml-cpp)))
338 (native-inputs
339 `(("googletest" ,googletest)
340 ("xorgproto" ,xorgproto))) ; keysym.h
341 (home-page "https://rime.im/")
342 (synopsis "The core library of Rime Input Method Engine")
343 (description "@dfn{librime} is the core library of Rime Input Method
344 Engine, which is a lightweight, extensible input method engine supporting
345 various input schemas including glyph-based input methods, romanization-based
346 input methods as well as those for Chinese dialects. It has the ability to
347 compose phrases and sentences intelligently and provide very accurate
348 traditional Chinese output.")
349 (license bsd-3)))
350
351 (define-public rime-data
352 (package
353 (name "rime-data")
354 (version "0.38.20200623")
355 (source
356 (origin
357 (method git-fetch)
358 (uri (git-reference
359 (url "https://github.com/rime/plum")
360 (commit "397d601dd22cfc857613973724724b8f44db9f9c")))
361 (file-name "plum-checkout")
362 (sha256
363 (base32 "06ad5c4m7xsfr4if5ywshfj2aj5g5b5hwzh38dzccn7c1l2ibi0z"))))
364 (build-system gnu-build-system)
365 (arguments
366 `(#:modules ((ice-9 match)
367 ,@%gnu-build-system-modules)
368 #:tests? #f ; no tests
369 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
370 "no_update=1")
371 #:phases
372 (modify-phases %standard-phases
373 (add-after 'unpack 'patch-source
374 (lambda _
375 ;; Don't build binary Rime schema. The binary Rime schema files
376 ;; are platform dependent and contains timestamp information.
377 ;; Thus they are not reproducible.
378
379 ;; Change `.DEFAULT_GOAL' to `all'.
380 (substitute* "Makefile"
381 (("^\\.DEFAULT_GOAL := preset")
382 ".DEFAULT_GOAL := all"))
383 ;; Disable git operations.
384 (substitute* "scripts/install-packages.sh"
385 ((".*update-package\\.sh.*") ""))
386 #t))
387 ;; Copy Rime schemas into the "package/rime" directory.
388 (add-after 'unpack 'copy-rime-schemas
389 (lambda* (#:key inputs #:allow-other-keys)
390 (let ((dest-dir "package/rime"))
391 (mkdir-p dest-dir)
392 (for-each
393 (match-lambda
394 ((name . path)
395 (if (string-prefix? "rime-" name)
396 (let ((schema (substring name (string-length "rime-"))))
397 (symlink path (string-append dest-dir "/" schema))))))
398 inputs))
399 #t))
400 (delete 'configure))))
401 (inputs
402 `(("rime-array"
403 ,(origin
404 (method git-fetch)
405 (uri (git-reference
406 (url "https://github.com/rime/rime-array")
407 (commit "93cc99238f120606a076220ec4ddcad164f6396a")))
408 (file-name "rime-array-checkout")
409 (sha256
410 (base32
411 "06yxrv3x702751jvx46rfw3ix34jk7jh183rz6bllznzi7lxz7sz"))))
412 ("rime-bopomofo"
413 ,(origin
414 (method git-fetch)
415 (uri (git-reference
416 (url "https://github.com/rime/rime-bopomofo")
417 (commit "ed25098386f5efd3d70b08650f0d1b70c41c11a3")))
418 (file-name "rime-bopomofo-checkout")
419 (sha256
420 (base32
421 "1ip1pbfb1hadf2mcymr5939iagf25ywfl67d9198jahzyr6rdyvc"))))
422 ("rime-cangjie"
423 ,(origin
424 (method git-fetch)
425 (uri (git-reference
426 (url "https://github.com/rime/rime-cangjie")
427 (commit "5fd8ce6f64039e505ca02655a621f2e830b97c19")))
428 (file-name "rime-cangjie-checkout")
429 (sha256
430 (base32
431 "1gf6r0q593ixar6v0jyvs56cik2gjp7pf9v799rfd2yydyia3bfg"))))
432 ("rime-cantonese"
433 ,(origin
434 (method git-fetch)
435 (uri (git-reference
436 (url "https://github.com/rime/rime-cantonese")
437 (commit "e06fe8e79d7d64db2f2b6339aabc004d8cbc1f67")))
438 (file-name "rime-cantonese-checkout")
439 (sha256
440 (base32
441 "0j6kbhdfj7dx812yzykndzbk53s2v1rsaa2jlyma03hz7qlnnl0s"))))
442 ("rime-combo-pinyin"
443 ,(origin
444 (method git-fetch)
445 (uri (git-reference
446 (url "https://github.com/rime/rime-combo-pinyin")
447 (commit "67b29cdc786928ea46b43a9c660dee3db8f1adff")))
448 (file-name "rime-combo-pinyin-checkout")
449 (sha256
450 (base32
451 "1v6ax51xll2aizbz1xzjyk6p3lmq8cyzbxkrwcffa723zaj0zz4l"))))
452 ("rime-double-pinyin"
453 ,(origin
454 (method git-fetch)
455 (uri (git-reference
456 (url "https://github.com/rime/rime-double-pinyin")
457 (commit "69bf85d4dfe8bac139c36abbd68d530b8b6622ea")))
458 (file-name "rime-double-pinyin-checkout")
459 (sha256
460 (base32
461 "093wif5avvvw45fqbwj5wkbxrychy4pagl4mwsmbrayc8jkp69ak"))))
462 ("rime-emoji"
463 ,(origin
464 (method git-fetch)
465 (uri (git-reference
466 (url "https://github.com/rime/rime-emoji")
467 (commit "c99d34e4a837349e4679a110bb4b94f71fe015ae")))
468 (file-name "rime-emoji-checkout")
469 (sha256
470 (base32
471 "1wiwlxjjml9xfgg7z1wzaf4b1bsg81dkwvsfff2b61fwxq61zkgw"))))
472 ("rime-essay"
473 ,(origin
474 (method git-fetch)
475 (uri (git-reference
476 (url "https://github.com/rime/rime-essay")
477 (commit "88055afa3752e4582fa887765d962a30e02bb1fa")))
478 (file-name "rime-essay-checkout")
479 (sha256
480 (base32
481 "0ap7xqv6v0x6mdkw2cv93cbr6qhpla3803z04522wb8l9hr7iryg"))))
482 ("rime-ipa"
483 ,(origin
484 (method git-fetch)
485 (uri (git-reference
486 (url "https://github.com/rime/rime-ipa")
487 (commit "22b71710e029bcb412e9197192a638ab11bc2abf")))
488 (file-name "rime-ipa-checkout")
489 (sha256
490 (base32
491 "0zdk4f9qkfj3q5hmjnairj1lv6f6y27mic12k886n6sxywwbwr2k"))))
492 ("rime-jyutping"
493 ,(origin
494 (method git-fetch)
495 (uri (git-reference
496 (url "https://github.com/rime/rime-jyutping")
497 (commit "6fe0d727b3178feabd0f01e6cd82599202764735")))
498 (file-name "rime-jyutping-checkout")
499 (sha256
500 (base32
501 "0wz6d3pmi72ysh2c0nml3rsz9hd2vazsyhnz34gq26yf4j85phfs"))))
502 ("rime-luna-pinyin"
503 ,(origin
504 (method git-fetch)
505 (uri (git-reference
506 (url "https://github.com/rime/rime-luna-pinyin")
507 (commit "f1268e192ca88b9526467ce04ac3e47c837891ad")))
508 (file-name "rime-luna-pinyin-checkout")
509 (sha256
510 (base32
511 "0nxnjp1ybcrsan1mxnzwbkfhwl99kza6i9k1s7m9wzmhv7x7zahg"))))
512 ("rime-middle-chinese"
513 ,(origin
514 (method git-fetch)
515 (uri (git-reference
516 (url "https://github.com/rime/rime-middle-chinese")
517 (commit "ed6d44f8d0bedf6e0c1c3183a270f8f01a211a40")))
518 (file-name "rime-middle-chinese-checkout")
519 (sha256
520 (base32
521 "09mql88lsrxa99pyllby5z22kaiwwa037ha8gwaxjnnlsjgvz7zx"))))
522 ("rime-pinyin-simp"
523 ,(origin
524 (method git-fetch)
525 (uri (git-reference
526 (url "https://github.com/rime/rime-pinyin-simp")
527 (commit "b73df7fc0994912ce785462b3be569ae81258ac2")))
528 (file-name "rime-pinyin-simp-checkout")
529 (sha256
530 (base32
531 "1m9hchnj1xf5s5185qm66ja0g1324drc98b2jjhnqgcp47bwz9fx"))))
532 ("rime-prelude"
533 ,(origin
534 (method git-fetch)
535 (uri (git-reference
536 (url "https://github.com/rime/rime-prelude")
537 (commit "8a52b4f86a59f3eb602f9a4cf6a680a67c15df8c")))
538 (file-name "rime-prelude-checkout")
539 (sha256
540 (base32
541 "039fr3996vfxzn2milaq1f5fw08f6zgjsxsql6cfhsc5b55fidm7"))))
542 ("rime-quick"
543 ,(origin
544 (method git-fetch)
545 (uri (git-reference
546 (url "https://github.com/rime/rime-quick")
547 (commit "3fe5911ba608cb2df1b6301b76ad1573bd482a76")))
548 (file-name "rime-quick-checkout")
549 (sha256
550 (base32
551 "08bh87ym5qvw55lyw20l3m7jd4c2z5rvil8h5q8790r7z6j6ijy9"))))
552 ("rime-scj"
553 ,(origin
554 (method git-fetch)
555 (uri (git-reference
556 (url "https://github.com/rime/rime-scj")
557 (commit "cab5a0858765eff0553dd685a2d61d5536e9149c")))
558 (file-name "rime-scj-checkout")
559 (sha256
560 (base32
561 "0ard2bjp4896a8dimmcwyjwgmp9kl4rz92yc92jnd3y4rgwl6fvk"))))
562 ("rime-soutzoe"
563 ,(origin
564 (method git-fetch)
565 (uri (git-reference
566 (url "https://github.com/rime/rime-soutzoe")
567 (commit "beeaeca72d8e17dfd1e9af58680439e9012987dc")))
568 (file-name "rime-soutzoe-checkout")
569 (sha256
570 (base32
571 "0jyqx0q9s0qxn168l5n8zav8jcl2g5ppr7pa8jm1vwrllf20slcc"))))
572 ("rime-stenotype"
573 ,(origin
574 (method git-fetch)
575 (uri (git-reference
576 (url "https://github.com/rime/rime-stenotype")
577 (commit "f3e9189d5ce33c55d3936cc58e39d0c88b3f0c88")))
578 (file-name "rime-stenotype-checkout")
579 (sha256
580 (base32
581 "0dl6px7lrh3xa87knjzwzdcwjj1k1dg4l72q7lb48an4s9f1cy5d"))))
582 ("rime-stroke"
583 ,(origin
584 (method git-fetch)
585 (uri (git-reference
586 (url "https://github.com/rime/rime-stroke")
587 (commit "ea8576d1accd6fda339e96b415caadb56e2a07d1")))
588 (file-name "rime-stroke-checkout")
589 (sha256
590 (base32
591 "07h6nq9867hjrd2v3h1pnr940sdrw4mqrzj43siz1rzjxz3s904r"))))
592 ("rime-terra-pinyin"
593 ,(origin
594 (method git-fetch)
595 (uri (git-reference
596 (url "https://github.com/rime/rime-terra-pinyin")
597 (commit "492aaf914f9de37cc9d26b846dc693116de70ae8")))
598 (file-name "rime-terra-pinyin-checkout")
599 (sha256
600 (base32
601 "1l4l2w42mc3sf7jwbadx95gzrsq11ld9f6yj2hwaq9accainw3bf"))))
602 ("rime-wubi"
603 ,(origin
604 (method git-fetch)
605 (uri (git-reference
606 (url "https://github.com/rime/rime-wubi")
607 (commit "dd052ee158a38cb791755318b1aef9b4a3ed0316")))
608 (file-name "rime-wubi-checkout")
609 (sha256
610 (base32
611 "00xzv3sbwqh2jz4i7s315h7rw17qa2dgj7kflyy3blxk0s2cqiqa"))))
612 ("rime-wugniu"
613 ,(origin
614 (method git-fetch)
615 (uri (git-reference
616 (url "https://github.com/rime/rime-wugniu")
617 (commit "abd1ee98efbf170258fcf43875c21a4259e00b61")))
618 (file-name "rime-wugniu-checkout")
619 (sha256
620 (base32
621 "0qn54d3cclny106ixdw08r5n6wn52ffs1hgrma3k0j4pv0kr9nlq"))))))
622 (home-page "https://rime.im/")
623 (synopsis "Schema data of Rime Input Method Engine")
624 (description "@dfn{rime-data} provides the schema data of Rime Input
625 Method Engine.")
626 (license lgpl3)))
627
628 (define-public ibus-rime
629 (package
630 (name "ibus-rime")
631 (version "1.4.0")
632 (source
633 (origin
634 (method git-fetch)
635 (uri (git-reference
636 (url "https://github.com/rime/ibus-rime")
637 (commit version)))
638 (file-name (git-file-name name version))
639 (sha256
640 (base32 "12y6jdz1amhgrnqa7zjim63dfsz6zyxyahbirfan37wmcfp6gp1d"))))
641 (build-system gnu-build-system)
642 (arguments
643 `(#:tests? #f ; no tests
644 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
645 #:phases
646 (modify-phases %standard-phases
647 (add-after 'unpack 'patch-source
648 (lambda* (#:key inputs outputs #:allow-other-keys)
649 ;; Define RIME_DATA_DIR. It's required but not used by the code.
650 (substitute* "Makefile"
651 (("cmake")
652 (string-append "cmake -DRIME_DATA_DIR="
653 (assoc-ref inputs "rime-data")
654 "/share/rime-data")))
655 ;; rime_config.h defines the actual data directory.
656 (substitute* "rime_config.h"
657 (("^#define IBUS_RIME_INSTALL_PREFIX .*$")
658 (string-append "#define IBUS_RIME_INSTALL_PREFIX \""
659 (assoc-ref outputs "out")
660 "\"\n"))
661 (("^#define IBUS_RIME_SHARED_DATA_DIR .*$")
662 (string-append "#define IBUS_RIME_SHARED_DATA_DIR \""
663 (assoc-ref inputs "rime-data")
664 "/share/rime-data\"\n")))
665 #t))
666 (add-after 'unpack 'fix-file-names
667 (lambda* (#:key outputs #:allow-other-keys)
668 ;; IBus uses the component file rime.xml to start the Rime
669 ;; engine. It must be patched with appropriate file names.
670 (substitute* "rime.xml"
671 (("/usr") (assoc-ref outputs "out")))
672 #t))
673 (delete 'configure))))
674 (inputs
675 `(("gdk-pixbuf" ,gdk-pixbuf)
676 ("glib" ,glib)
677 ("ibus" ,ibus)
678 ("libnotify" ,libnotify)
679 ("librime" ,librime)
680 ("rime-data" ,rime-data)))
681 (native-inputs
682 `(("cmake" ,cmake-minimal)
683 ("pkg-config" ,pkg-config)))
684 (home-page "https://rime.im/")
685 (synopsis "Rime Input Method Engine for IBus")
686 (description "@dfn{ibus-rime} provides the Rime input method engine for
687 IBus. Rime is a lightweight, extensible input method engine supporting
688 various input schemas including glyph-based input methods, romanization-based
689 input methods as well as those for Chinese dialects. It has the ability to
690 compose phrases and sentences intelligently and provide very accurate
691 traditional Chinese output.")
692 (license gpl3)))
693
694 (define-public libhangul
695 (package
696 (name "libhangul")
697 (version "0.1.0")
698 (source
699 (origin
700 (method url-fetch)
701 (uri (string-append "http://kldp.net/hangul/release/"
702 "3442-libhangul-" version ".tar.gz"))
703 (sha256
704 (base32
705 "0ni9b0v70wkm0116na7ghv03pgxsfpfszhgyj3hld3bxamfal1ar"))))
706 (build-system gnu-build-system)
707 (home-page "https://github.com/libhangul/libhangul")
708 (synopsis "Library to support hangul input method logic")
709 (description
710 "This package provides a library to support hangul input method logic,
711 hanja dictionary and small hangul character classification.")
712 (license lgpl2.1+)))
713
714 (define-public ibus-libhangul
715 (package
716 (name "ibus-libhangul")
717 (version "1.5.3")
718 (source
719 (origin
720 (method url-fetch)
721 (uri (string-append "https://github.com/libhangul/ibus-hangul/"
722 "releases/download/" version
723 "/ibus-hangul-" version ".tar.gz"))
724 (sha256
725 (base32
726 "1400ba2p34vr9q285lqvjm73f6m677cgfdymmjpiwyrjgbbiqrjy"))))
727 (build-system gnu-build-system)
728 (arguments
729 `(#:phases
730 (modify-phases %standard-phases
731 (add-after 'install 'wrap
732 (lambda* (#:key inputs outputs #:allow-other-keys)
733 (wrap-program (string-append (assoc-ref outputs "out")
734 "/libexec/ibus-setup-hangul")
735 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))
736 `("LD_LIBRARY_PATH" ":" prefix
737 (,(string-append (assoc-ref inputs "libhangul") "/lib")))
738 `("GI_TYPELIB_PATH" ":" prefix
739 (,(getenv "GI_TYPELIB_PATH"))))
740 #t)))))
741 (native-inputs
742 `(("pkg-config" ,pkg-config)
743 ("gettext" ,gettext-minimal)
744 ("glib:bin" ,glib "bin")))
745 (inputs
746 `(("ibus" ,ibus)
747 ("glib" ,glib)
748 ("python-pygobject" ,python-pygobject)
749 ("gtk+" ,gtk+)
750 ("libhangul" ,libhangul)
751 ("python" ,python)))
752 (home-page "https://github.com/libhangul/ibus-hangul")
753 (synopsis "Hangul engine for IBus")
754 (description
755 "ibus-hangul is a Korean input method engine for IBus.")
756 (license gpl2+)))