MCPcopy Index your code
hub / github.com/BambooEngine/ibus-bamboo

github.com/BambooEngine/ibus-bamboo @v0.8.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.8.5 ↗ · + Follow
385 symbols 863 edges 30 files 56 documented · 15%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

IBus Bamboo - An open source Vietnamese IME for IBus using Bamboo Engine

GitHub release License: GPL v3 contributions welcome

IBus Bamboo is a Vietnamese input method engine for IBus that translates key strokes into Vietnamese characters. For example, when you type a, an a will appear on the screen, but if one more a is typed, IBus Bamboo will replace the first a with the letter â according to Telex typing.

ibus-bamboo

Note 🚧:

The project has been stalled for quite a long time and may not be maintained in the future. You can use fcitx5-unikey as an alternative solution (almost all features are complete and it supports Wayland better).

If you want to revive ibus-bamboo or discuss the project's future, please visit https://github.com/BambooEngine/ibus-bamboo/issues/590.

Getting Started

Features

  • Support many Vietnamese character sets/encodings:
  • Unicode, TCVN (ABC)
  • VIQR, VNI, VPS, VISCII, BK HCM1, BK HCM2,…
  • Unicode UTF-8, Unicode NCR - for Web editors.
  • All popular typing methods:
  • Telex, Telex W, Telex 2, Telex + VNI + VIQR
  • VNI, VIQR, Microsoft layout
  • Using shortcut Shift+~ to switch between typing modes for an application or add it to the exclusion list:
    • Pre-edit (default)
    • Surrounding text, IBus ForwardKeyEvent,...
  • Other useful futures, easy to use:
  • Spelling check (using dictionary/rules)
  • Use oà, uý (instead of òa, úy)
  • Free tone making, macro,...
  • 2666 emojis from emojiOne

Installation

Ubuntu and derivatives

sudo add-apt-repository ppa:bamboo-engine/ibus-bamboo
sudo apt-get update
sudo apt-get install ibus-bamboo
ibus restart
# Make ibus-bamboo your default input method, this will remove other existing input layouts
env DCONF_PROFILE=ibus dconf write /desktop/ibus/general/preload-engines "['xkb:us::eng', 'Bamboo']" && gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('ibus', 'Bamboo')]"

Arch Linux and derivatives

ibus-bamboo is now available on the AUR. Don't forget to leave a vote for the maintainers so that one day it can be included in the official Arch repository!

NixOS

Nixpkgs

ibus-bamboo is available on the main Nixpkgs repo. Make sure your NixOS configuration must contain this code to install it.

{
 i18n.inputMethod = {
  enabled = "ibus";
  ibus.engines = with pkgs.ibus-engines; [
    bamboo
  ];
 };
}

Ibus-bamboo flake

If you don't like to use package from Nixpkgs, you can use latest version flake package from Ibus-bamboo repo. Note that this approach only work for flake.

First, make sure you have added repo path in your nixos flake config.

Example code at flake.nix

{
  inputs = {
    nixpkgs = {
      url = "github:nixos/nixpkgs/nixos-24.05";
    };

    ibus-bamboo = {
      url = "github:BambooEngine/ibus-bamboo";
    };
  };

  outputs = {
    self,
    nixpkgs,
    ibus-bamboo
  }@inputs:
  let
    inherit (self) outputs;

    system = "x86_64-linux";
  in
  {
    nixosConfigurations = {
      nixos = nixpkgs.lib.nixosSystem {
        specialArgs = { inherit inputs outputs system; };

        # Some nixos config
      };
    };
  }
}
}

Next, you need to declare a variable and add it to ibus.engines

Example code at input-method.nix

{ inputs, system, ... }:

let
  bamboo = inputs.ibus-bamboo.packages."${system}".default;
in
{
  i18n.inputMethod = {
    enabled = "ibus";
    ibus.engines = [
      bamboo
    ];
  };
}

Final step is update flake and switch your system to new config.

Void Linux

ibus-bamboo is available on the main Void Linux repo. You can install it directly.

sudo xbps-install -S ibus-bamboo

Install from OpenBuildService

OpenBuildService

Usage

The difference between ibus-bamboo and other input methods is that ibus-bamboo provides different typing modes (1 underlined and 5 non-underlined typing modes - don't confuse typing mode with typing method, typing methods are telex, vni, ...).

To switch between typing modes, simply click on an input box (a box to enter text), then press the combination Shift+~, a table with the available typing modes will appear, you just need to press the corresponding number key to select.

Note: - An app may work well with one typing mode while not working well with another. - Typing modes are saved separately for each software (firefox is probably using mode 5, while libreoffice is using mode 2). - You can use Add to the exclusion list mode to not type Vietnamese in a certain program. - To type the character ~, press the combination Shift+~ twice. - Support for Wayland in IBus is not yet ideal. For a better typing experience, please use Xorg.

Bug reports

Before submitting a question or bug report, please ensure you have read through these common issues and see if you can resolve the problem on your own. If you still encounter issues after trying these steps, or you don't see something similar to your issue listed, please submit a bug report in the Bamboo issue tracker

License

IBus Bamboo is released under the GNU General Public License v3.0

Extension points exported contracts — how you extend this code

IEngine (Interface)
(no doc) [1 implementers]
fake_engine.go
ZwlrForeignToplevelManagerV1ToplevelHandler (Interface)
(no doc) [1 implementers]
client.go
ZwlrForeignToplevelHandleV1AppIdHandler (Interface)
(no doc) [1 implementers]
client.go
ZwlrForeignToplevelHandleV1DoneHandler (Interface)
(no doc) [1 implementers]
client.go
ZwlrForeignToplevelManagerV1FinishedHandler (Interface)
(no doc)
client.go
ZwlrForeignToplevelHandleV1TitleHandler (Interface)
(no doc)
client.go

Core symbols most depended-on inside this repo

Reset
called by 14
fake_engine.go
ProcessKey
called by 13
emoji.go
getProcessedString
called by 13
engine_preedit.go
getPreeditString
called by 13
engine_preedit.go
checkInputMode
called by 12
engine_utils.go
MatchString
called by 11
emoji.go
getWmClass
called by 10
engine_utils.go
ForwardKeyEvent
called by 10
fake_engine.go

Shape

Method 227
Function 120
Struct 25
Interface 11
Class 1
TypeAlias 1

Languages

Go88%
C12%

Modules by API surface

fake_engine.go81 symbols
client.go67 symbols
engine_utils.go34 symbols
ui/keyboard-shortcut-editor.c21 symbols
engine.go18 symbols
engine_preedit.go16 symbols
utils.go15 symbols
x11.go12 symbols
wl_introspector.go12 symbols
engine_backspace.go12 symbols
emoji.go11 symbols
x11_introspector.c10 symbols

For agents

$ claude mcp add ibus-bamboo \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact