A Debian package that makes it easy to enable Tamil input methods on Debian and Ubuntu systems.
The Tamil 99 and Tamil Phonetic layouts are already on your system —
they ship with ibus-m17n, which is in Debian and Ubuntu main. The hard
part is not installing them, it's knowing which input source to add.
This package provides tamil-keyboard-setup, a small command that adds
either layout to your desktop input sources for you.
If you would rather not install anything, you can do the same thing by hand:
sudo apt install ibus ibus-m17n
gsettings set org.gnome.desktop.input-sources sources \
"[('xkb', 'us'), ('ibus', 'm17n:ta:tamil99')]"# Add the signing key
sudo install -d -m 0755 /etc/apt/keyrings
wget -qO- https://khaleeljageer.github.io/tamil-keyboard/public-key.asc \
| sudo tee /etc/apt/keyrings/tamil-keyboard.asc > /dev/null
# Add the repository, trusting that key for this repository only
echo "deb [signed-by=/etc/apt/keyrings/tamil-keyboard.asc] https://khaleeljageer.github.io/tamil-keyboard stable main" \
| sudo tee /etc/apt/sources.list.d/tamil-keyboard.list
sudo apt update
sudo apt install tamil-keyboard./build-packages.sh
sudo apt install ../tamil-keyboard_*.debRun it as your normal user, not with sudo — it configures the
session it is run from.
# Add the Tamil 99 layout
tamil-keyboard-setup tamil99
# Or the phonetic layout
tamil-keyboard-setup phonetic
# See what you currently have
tamil-keyboard-setup --list
# Change your mind
tamil-keyboard-setup --remove tamil99Switch between input sources with Super+Space.
The layout is added alongside whatever you already had; your existing input sources are left untouched. Running the command twice is harmless.
See man tamil-keyboard-setup for the full reference.
If you have just installed this package, log out and log back in.
Installing tamil-keyboard pulls in IBus for the first time, and your
session only picks up IBus as its input method framework when it starts.
Until you log back in, the layout will not work no matter what is listed
in your input sources.
If IBus was already running before you started, the layout appears in the switcher straight away and no restart is needed.
tamil-keyboard-setup checks which of the two applies and tells you
after it makes the change, so you do not have to guess.
- IBus as your input method framework (
ibus,ibus-m17n— both pulled in automatically) - A desktop that uses the GNOME
org.gnome.desktop.input-sourcesschema
Both Wayland and X11 are supported. If you are on a desktop that does
not use GNOME input sources (KDE, XFCE, and others), the command will say
so and you can configure IBus directly with ibus-setup.
If the layout does not show up after adding it, IBus may not be running:
ibus-daemon -drxLogging out and back in achieves the same thing.
sudo apt-get install devscripts build-essential debhelper
./verify-package.sh # sanity-check the packaging
./build-packages.sh # produces ../tamil-keyboard_*.debtamil-keyboard/bin/— thetamil-keyboard-setupscripttamil-keyboard/debian/— packaging metadatadocs/— the published site.index.htmlis the landing page; the archive itself (dists/,pool/,public-key.asc) is generated by CI and not committed.github/workflows/— builds the package and publishes the APT repository to GitHub Pages on tagged releases
The gh-pages branch holds only the published archive, with no source
tree, and is written solely by CI.
Publishing is automated. Tag a version and push the tag:
git tag -a v1.0.0 -m "Release 1.0.0"
git push origin v1.0.0The workflow builds the package, regenerates the APT archive, signs it,
and pushes the result to the gh-pages branch, which GitHub Pages serves
at https://khaleeljageer.github.io/tamil-keyboard/.
It also exports the public half of the signing key to public-key.asc,
so the key users download always matches the key the archive was signed
with. No key material is kept in this repository.
Two things must be in place first, both one-time:
-
GitHub Pages enabled, deploying from the
gh-pagesbranch, root folder. -
Actions secrets
GPG_PRIVATE_KEY(andGPG_PASSPHRASE, if the key has one). Export the private key with:gpg --armor --export-secret-keys 2B827D30BE0F7CCA4EE6DE8C521B6C93122B6B88
If
GPG_PRIVATE_KEYis missing the build fails on purpose: an unsigned archive is rejected by apt, so publishing one would be worse than a failed release.
./setup-github-pages.sh prints these steps as a checklist.
GPL-3.0+