gnu: rime-data: Iterate over inputs to find Rime schemas.
[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.git")
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.git")
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 ;; Set .DEFAULT_GOAL to `all'.
376 ;; Don't build binary schemas. The output is not deterministic.
377 (substitute* "Makefile"
378 (("^\\.DEFAULT_GOAL := preset")
379 ".DEFAULT_GOAL := all"))
380 #t))
381 ;; Copy Rime schemas into the "package/rime" directory.
382 (add-after 'unpack 'copy-rime-schemas
383 (lambda* (#:key inputs #:allow-other-keys)
384 (let ((dest-dir "package/rime"))
385 (mkdir-p dest-dir)
386 (for-each
387 (match-lambda
388 ((name . path)
389 (if (string-prefix? "rime-" name)
390 (let ((schema (substring name (string-length "rime-"))))
391 (symlink path (string-append dest-dir "/" schema))))))
392 inputs))
393 #t))
394 (delete 'configure))))
395 (inputs
396 `(("rime-array"
397 ,(origin
398 (method git-fetch)
399 (uri (git-reference
400 (url "https://github.com/rime/rime-array.git")
401 (commit "93cc99238f120606a076220ec4ddcad164f6396a")))
402 (file-name "rime-array-checkout")
403 (sha256
404 (base32
405 "06yxrv3x702751jvx46rfw3ix34jk7jh183rz6bllznzi7lxz7sz"))))
406 ("rime-bopomofo"
407 ,(origin
408 (method git-fetch)
409 (uri (git-reference
410 (url "https://github.com/rime/rime-bopomofo.git")
411 (commit "ed25098386f5efd3d70b08650f0d1b70c41c11a3")))
412 (file-name "rime-bopomofo-checkout")
413 (sha256
414 (base32
415 "1ip1pbfb1hadf2mcymr5939iagf25ywfl67d9198jahzyr6rdyvc"))))
416 ("rime-cangjie"
417 ,(origin
418 (method git-fetch)
419 (uri (git-reference
420 (url "https://github.com/rime/rime-cangjie.git")
421 (commit "5fd8ce6f64039e505ca02655a621f2e830b97c19")))
422 (file-name "rime-cangjie-checkout")
423 (sha256
424 (base32
425 "1gf6r0q593ixar6v0jyvs56cik2gjp7pf9v799rfd2yydyia3bfg"))))
426 ("rime-cantonese"
427 ,(origin
428 (method git-fetch)
429 (uri (git-reference
430 (url "https://github.com/rime/rime-cantonese.git")
431 (commit "e06fe8e79d7d64db2f2b6339aabc004d8cbc1f67")))
432 (file-name "rime-cantonese-checkout")
433 (sha256
434 (base32
435 "0j6kbhdfj7dx812yzykndzbk53s2v1rsaa2jlyma03hz7qlnnl0s"))))
436 ("rime-combo-pinyin"
437 ,(origin
438 (method git-fetch)
439 (uri (git-reference
440 (url "https://github.com/rime/rime-combo-pinyin.git")
441 (commit "67b29cdc786928ea46b43a9c660dee3db8f1adff")))
442 (file-name "rime-combo-pinyin-checkout")
443 (sha256
444 (base32
445 "1v6ax51xll2aizbz1xzjyk6p3lmq8cyzbxkrwcffa723zaj0zz4l"))))
446 ("rime-double-pinyin"
447 ,(origin
448 (method git-fetch)
449 (uri (git-reference
450 (url "https://github.com/rime/rime-double-pinyin.git")
451 (commit "69bf85d4dfe8bac139c36abbd68d530b8b6622ea")))
452 (file-name "rime-double-pinyin-checkout")
453 (sha256
454 (base32
455 "093wif5avvvw45fqbwj5wkbxrychy4pagl4mwsmbrayc8jkp69ak"))))
456 ("rime-emoji"
457 ,(origin
458 (method git-fetch)
459 (uri (git-reference
460 (url "https://github.com/rime/rime-emoji.git")
461 (commit "c99d34e4a837349e4679a110bb4b94f71fe015ae")))
462 (file-name "rime-emoji-checkout")
463 (sha256
464 (base32
465 "1wiwlxjjml9xfgg7z1wzaf4b1bsg81dkwvsfff2b61fwxq61zkgw"))))
466 ("rime-essay"
467 ,(origin
468 (method git-fetch)
469 (uri (git-reference
470 (url "https://github.com/rime/rime-essay.git")
471 (commit "88055afa3752e4582fa887765d962a30e02bb1fa")))
472 (file-name "rime-essay-checkout")
473 (sha256
474 (base32
475 "0ap7xqv6v0x6mdkw2cv93cbr6qhpla3803z04522wb8l9hr7iryg"))))
476 ("rime-ipa"
477 ,(origin
478 (method git-fetch)
479 (uri (git-reference
480 (url "https://github.com/rime/rime-ipa.git")
481 (commit "22b71710e029bcb412e9197192a638ab11bc2abf")))
482 (file-name "rime-ipa-checkout")
483 (sha256
484 (base32
485 "0zdk4f9qkfj3q5hmjnairj1lv6f6y27mic12k886n6sxywwbwr2k"))))
486 ("rime-jyutping"
487 ,(origin
488 (method git-fetch)
489 (uri (git-reference
490 (url "https://github.com/rime/rime-jyutping.git")
491 (commit "6fe0d727b3178feabd0f01e6cd82599202764735")))
492 (file-name "rime-jyutping-checkout")
493 (sha256
494 (base32
495 "0wz6d3pmi72ysh2c0nml3rsz9hd2vazsyhnz34gq26yf4j85phfs"))))
496 ("rime-luna-pinyin"
497 ,(origin
498 (method git-fetch)
499 (uri (git-reference
500 (url "https://github.com/rime/rime-luna-pinyin.git")
501 (commit "f1268e192ca88b9526467ce04ac3e47c837891ad")))
502 (file-name "rime-luna-pinyin-checkout")
503 (sha256
504 (base32
505 "0nxnjp1ybcrsan1mxnzwbkfhwl99kza6i9k1s7m9wzmhv7x7zahg"))))
506 ("rime-middle-chinese"
507 ,(origin
508 (method git-fetch)
509 (uri (git-reference
510 (url "https://github.com/rime/rime-middle-chinese.git")
511 (commit "ed6d44f8d0bedf6e0c1c3183a270f8f01a211a40")))
512 (file-name "rime-middle-chinese-checkout")
513 (sha256
514 (base32
515 "09mql88lsrxa99pyllby5z22kaiwwa037ha8gwaxjnnlsjgvz7zx"))))
516 ("rime-pinyin-simp"
517 ,(origin
518 (method git-fetch)
519 (uri (git-reference
520 (url "https://github.com/rime/rime-pinyin-simp.git")
521 (commit "b73df7fc0994912ce785462b3be569ae81258ac2")))
522 (file-name "rime-pinyin-simp-checkout")
523 (sha256
524 (base32
525 "1m9hchnj1xf5s5185qm66ja0g1324drc98b2jjhnqgcp47bwz9fx"))))
526 ("rime-prelude"
527 ,(origin
528 (method git-fetch)
529 (uri (git-reference
530 (url "https://github.com/rime/rime-prelude.git")
531 (commit "8a52b4f86a59f3eb602f9a4cf6a680a67c15df8c")))
532 (file-name "rime-prelude-checkout")
533 (sha256
534 (base32
535 "039fr3996vfxzn2milaq1f5fw08f6zgjsxsql6cfhsc5b55fidm7"))))
536 ("rime-quick"
537 ,(origin
538 (method git-fetch)
539 (uri (git-reference
540 (url "https://github.com/rime/rime-quick.git")
541 (commit "3fe5911ba608cb2df1b6301b76ad1573bd482a76")))
542 (file-name "rime-quick-checkout")
543 (sha256
544 (base32
545 "08bh87ym5qvw55lyw20l3m7jd4c2z5rvil8h5q8790r7z6j6ijy9"))))
546 ("rime-scj"
547 ,(origin
548 (method git-fetch)
549 (uri (git-reference
550 (url "https://github.com/rime/rime-scj.git")
551 (commit "cab5a0858765eff0553dd685a2d61d5536e9149c")))
552 (file-name "rime-scj-checkout")
553 (sha256
554 (base32
555 "0ard2bjp4896a8dimmcwyjwgmp9kl4rz92yc92jnd3y4rgwl6fvk"))))
556 ("rime-soutzoe"
557 ,(origin
558 (method git-fetch)
559 (uri (git-reference
560 (url "https://github.com/rime/rime-soutzoe.git")
561 (commit "beeaeca72d8e17dfd1e9af58680439e9012987dc")))
562 (file-name "rime-soutzoe-checkout")
563 (sha256
564 (base32
565 "0jyqx0q9s0qxn168l5n8zav8jcl2g5ppr7pa8jm1vwrllf20slcc"))))
566 ("rime-stenotype"
567 ,(origin
568 (method git-fetch)
569 (uri (git-reference
570 (url "https://github.com/rime/rime-stenotype.git")
571 (commit "f3e9189d5ce33c55d3936cc58e39d0c88b3f0c88")))
572 (file-name "rime-stenotype-checkout")
573 (sha256
574 (base32
575 "0dl6px7lrh3xa87knjzwzdcwjj1k1dg4l72q7lb48an4s9f1cy5d"))))
576 ("rime-stroke"
577 ,(origin
578 (method git-fetch)
579 (uri (git-reference
580 (url "https://github.com/rime/rime-stroke.git")
581 (commit "ea8576d1accd6fda339e96b415caadb56e2a07d1")))
582 (file-name "rime-stroke-checkout")
583 (sha256
584 (base32
585 "07h6nq9867hjrd2v3h1pnr940sdrw4mqrzj43siz1rzjxz3s904r"))))
586 ("rime-terra-pinyin"
587 ,(origin
588 (method git-fetch)
589 (uri (git-reference
590 (url "https://github.com/rime/rime-terra-pinyin.git")
591 (commit "492aaf914f9de37cc9d26b846dc693116de70ae8")))
592 (file-name "rime-terra-pinyin-checkout")
593 (sha256
594 (base32
595 "1l4l2w42mc3sf7jwbadx95gzrsq11ld9f6yj2hwaq9accainw3bf"))))
596 ("rime-wubi"
597 ,(origin
598 (method git-fetch)
599 (uri (git-reference
600 (url "https://github.com/rime/rime-wubi.git")
601 (commit "dd052ee158a38cb791755318b1aef9b4a3ed0316")))
602 (file-name "rime-wubi-checkout")
603 (sha256
604 (base32
605 "00xzv3sbwqh2jz4i7s315h7rw17qa2dgj7kflyy3blxk0s2cqiqa"))))
606 ("rime-wugniu"
607 ,(origin
608 (method git-fetch)
609 (uri (git-reference
610 (url "https://github.com/rime/rime-wugniu.git")
611 (commit "abd1ee98efbf170258fcf43875c21a4259e00b61")))
612 (file-name "rime-wugniu-checkout")
613 (sha256
614 (base32
615 "0qn54d3cclny106ixdw08r5n6wn52ffs1hgrma3k0j4pv0kr9nlq"))))))
616 (home-page "https://rime.im/")
617 (synopsis "Schema data of Rime Input Method Engine")
618 (description "@dfn{rime-data} provides the schema data of Rime Input
619 Method Engine.")
620 (license lgpl3+)))
621
622 (define-public ibus-rime
623 (package
624 (name "ibus-rime")
625 (version "1.4.0")
626 (source
627 (origin
628 (method git-fetch)
629 (uri (git-reference
630 (url "https://github.com/rime/ibus-rime.git")
631 (commit version)))
632 (file-name (git-file-name name version))
633 (sha256
634 (base32 "12y6jdz1amhgrnqa7zjim63dfsz6zyxyahbirfan37wmcfp6gp1d"))))
635 (build-system gnu-build-system)
636 (arguments
637 `(#:tests? #f ; no tests
638 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
639 #:phases
640 (modify-phases %standard-phases
641 (add-after 'unpack 'patch-source
642 (lambda* (#:key inputs outputs #:allow-other-keys)
643 ;; Define RIME_DATA_DIR. It's required but not used by the code.
644 (substitute* "Makefile"
645 (("cmake")
646 (string-append "cmake -DRIME_DATA_DIR="
647 (assoc-ref inputs "rime-data")
648 "/share/rime-data")))
649 ;; rime_config.h defines the actual data directory.
650 (substitute* "rime_config.h"
651 (("^#define IBUS_RIME_INSTALL_PREFIX .*$")
652 (string-append "#define IBUS_RIME_INSTALL_PREFIX \""
653 (assoc-ref outputs "out")
654 "\"\n"))
655 (("^#define IBUS_RIME_SHARED_DATA_DIR .*$")
656 (string-append "#define IBUS_RIME_SHARED_DATA_DIR \""
657 (assoc-ref inputs "rime-data")
658 "/share/rime-data\"\n")))
659 #t))
660 (add-after 'unpack 'fix-file-names
661 (lambda* (#:key outputs #:allow-other-keys)
662 ;; IBus uses the component file rime.xml to start the Rime
663 ;; engine. It must be patched with appropriate file names.
664 (substitute* "rime.xml"
665 (("/usr") (assoc-ref outputs "out")))
666 #t))
667 (delete 'configure))))
668 (inputs
669 `(("gdk-pixbuf" ,gdk-pixbuf)
670 ("glib" ,glib)
671 ("ibus" ,ibus)
672 ("libnotify" ,libnotify)
673 ("librime" ,librime)
674 ("rime-data" ,rime-data)))
675 (native-inputs
676 `(("cmake" ,cmake-minimal)
677 ("pkg-config" ,pkg-config)))
678 (home-page "https://rime.im/")
679 (synopsis "Rime Input Method Engine for IBus")
680 (description "@dfn{ibus-rime} provides the Rime input method engine for
681 IBus. Rime is a lightweight, extensible input method engine supporting
682 various input schemas including glyph-based input methods, romanization-based
683 input methods as well as those for Chinese dialects. It has the ability to
684 compose phrases and sentences intelligently and provide very accurate
685 traditional Chinese output.")
686 (license gpl3+)))
687
688 (define-public libhangul
689 (package
690 (name "libhangul")
691 (version "0.1.0")
692 (source
693 (origin
694 (method url-fetch)
695 (uri (string-append "http://kldp.net/hangul/release/"
696 "3442-libhangul-" version ".tar.gz"))
697 (sha256
698 (base32
699 "0ni9b0v70wkm0116na7ghv03pgxsfpfszhgyj3hld3bxamfal1ar"))))
700 (build-system gnu-build-system)
701 (home-page "https://github.com/libhangul/libhangul")
702 (synopsis "Library to support hangul input method logic")
703 (description
704 "This package provides a library to support hangul input method logic,
705 hanja dictionary and small hangul character classification.")
706 (license lgpl2.1+)))
707
708 (define-public ibus-libhangul
709 (package
710 (name "ibus-libhangul")
711 (version "1.5.3")
712 (source
713 (origin
714 (method url-fetch)
715 (uri (string-append "https://github.com/libhangul/ibus-hangul/"
716 "releases/download/" version
717 "/ibus-hangul-" version ".tar.gz"))
718 (sha256
719 (base32
720 "1400ba2p34vr9q285lqvjm73f6m677cgfdymmjpiwyrjgbbiqrjy"))))
721 (build-system gnu-build-system)
722 (arguments
723 `(#:phases
724 (modify-phases %standard-phases
725 (add-after 'install 'wrap
726 (lambda* (#:key inputs outputs #:allow-other-keys)
727 (wrap-program (string-append (assoc-ref outputs "out")
728 "/libexec/ibus-setup-hangul")
729 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))
730 `("LD_LIBRARY_PATH" ":" prefix
731 (,(string-append (assoc-ref inputs "libhangul") "/lib")))
732 `("GI_TYPELIB_PATH" ":" prefix
733 (,(getenv "GI_TYPELIB_PATH"))))
734 #t)))))
735 (native-inputs
736 `(("pkg-config" ,pkg-config)
737 ("gettext" ,gettext-minimal)
738 ("glib:bin" ,glib "bin")))
739 (inputs
740 `(("ibus" ,ibus)
741 ("glib" ,glib)
742 ("python-pygobject" ,python-pygobject)
743 ("gtk+" ,gtk+)
744 ("libhangul" ,libhangul)
745 ("python" ,python)))
746 (home-page "https://github.com/libhangul/ibus-hangul")
747 (synopsis "Hangul engine for IBus")
748 (description
749 "ibus-hangul is a Korean input method engine for IBus.")
750 (license gpl2+)))