ibus-engines.typing-booster: init at 2.1.1

This package providesa completion input method for faster typing.
See https://mike-fabian.github.io/ibus-typing-booster

Detailed instructions how to activate this IBus engine on your desktop
can be found in the upstream docs: https://mike-fabian.github.io/ibus-typing-booster/documentation.html

A simple VM with the Gnome3 desktop and activated `ibus' looks like
this:

```nix
{
  emojipicker = { pkgs, ... }: {
    services.xserver = {
      enable = true;
      desktopManager.gnome3.enable = true;
      desktopManager.xterm.enable = false;
    };
    users.extraUsers.vm = {
      password = "vm";
      isNormalUser = true;
    };
    i18n.inputMethod.ibus.engines = [
      pkgs.ibus-engines.typing-booster
    ];
    i18n.inputMethod.enabled = "ibus";
    virtualisation.memorySize = 2048;
  };
}
```

Fixes #38721
This commit is contained in:
Maximilian Bosch
2018-09-16 18:36:21 +02:00
parent d3d465e32f
commit dee2dab7c6
5 changed files with 168 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
{ stdenv, fetchFromGitHub, autoreconfHook, python3, ibus, pkgconfig, gtk3, m17n_lib
, wrapGAppsHook, gobjectIntrospection
}:
let
python = python3.withPackages (ps: with ps; [
pygobject3
dbus-python
]);
in
stdenv.mkDerivation rec {
name = "ibus-typing-booster-${version}";
version = "2.1.1";
src = fetchFromGitHub {
owner = "mike-fabian";
repo = "ibus-typing-booster";
rev = version;
sha256 = "01kpxplk9nh56f32fkq3nnsqykbzpi7pcxbfp38dq0prgrhw9a6b";
};
patches = [ ./hunspell-dirs.patch ];
nativeBuildInputs = [ autoreconfHook pkgconfig wrapGAppsHook gobjectIntrospection ];
buildInputs = [ python ibus gtk3 m17n_lib ];
preFixup = ''
gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${m17n_lib}/lib")
'';
meta = with stdenv.lib; {
homepage = https://mike-fabian.github.io/ibus-typing-booster/;
license = licenses.gpl3Plus;
description = "A typing booster engine for the IBus platform";
maintainers = with maintainers; [ ma27 ];
isIbusEngine = true;
};
}

View File

@@ -0,0 +1,31 @@
diff --git a/engine/itb_util.py b/engine/itb_util.py
index ded236a..633525a 100755
--- a/engine/itb_util.py
+++ b/engine/itb_util.py
@@ -1876,14 +1876,18 @@ def find_hunspell_dictionary(language):
If no dictionary can be found for the requested language,
the return value is ('', '').
'''
- dirnames = [
- '/usr/share/hunspell',
- '/usr/share/myspell',
- '/usr/share/myspell/dicts',
- '/usr/local/share/hunspell', # On FreeBSD the dictionaries are here
- '/usr/local/share/myspell',
- '/usr/local/share/myspell/dicts',
- ]
+
+ if "NIX_HUNSPELL_DIRS" in os.environ:
+ dirnames = os.environ["NIX_HUNSPELL_DIRS"].split(":")
+ else: # fallback to the original behavior
+ dirnames = [
+ '/usr/share/hunspell',
+ '/usr/share/myspell',
+ '/usr/share/myspell/dicts',
+ '/usr/local/share/hunspell', # On FreeBSD the dictionaries are here
+ '/usr/local/share/myspell',
+ '/usr/local/share/myspell/dicts',
+ ]
dic_path = ''
aff_path = ''
for language in expand_languages([language]):

View File

@@ -0,0 +1,30 @@
{ typing-booster, symlinkJoin, hunspellDicts, lib, makeWrapper
, langs ? [ "de-de" "en-us" "es-es" "it-it" "sv-se" "sv-fi" ]
}:
let
hunspellDirs = with lib; makeSearchPath ":" (flatten (flip map langs (lang: [
"${hunspellDicts.${lang}}/share/hunspell"
"${hunspellDicts.${lang}}/share/myspell"
"${hunspellDicts.${lang}}/share/myspell/dicts"
])));
in
symlinkJoin {
name = "${typing-booster.name}-with-hunspell";
paths = [ typing-booster ];
nativeBuildInputs = [ makeWrapper ];
postBuild = ''
for i in bin/emoji-picker libexec/ibus-{setup,engine}-typing-booster; do
wrapProgram "$out/$i" \
--prefix NIX_HUNSPELL_DIRS : ${hunspellDirs}
done
sed -i -e "s,${typing-booster},$out," $out/share/ibus/component/typing-booster.xml
'';
inherit (typing-booster) meta;
}