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.

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.
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')]"
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!
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
];
};
}
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.
ibus-bamboo is available on the main Void Linux repo. You can install it directly.
sudo xbps-install -S ibus-bamboo
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.
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
IBus Bamboo is released under the GNU General Public License v3.0
$ claude mcp add ibus-bamboo \
-- python -m otcore.mcp_server <graph>