Skip to content

Repository files navigation

Tamil Keyboard

A Debian package that makes it easy to enable Tamil input methods on Debian and Ubuntu systems.

What this is (and isn't)

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')]"

Installation

From the APT repository

# 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

From a local build

./build-packages.sh
sudo apt install ../tamil-keyboard_*.deb

Usage

Run 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 tamil99

Switch 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.

Applying the change

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.

Requirements

  • IBus as your input method framework (ibus, ibus-m17n — both pulled in automatically)
  • A desktop that uses the GNOME org.gnome.desktop.input-sources schema

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 -drx

Logging out and back in achieves the same thing.

Building

sudo apt-get install devscripts build-essential debhelper
./verify-package.sh    # sanity-check the packaging
./build-packages.sh    # produces ../tamil-keyboard_*.deb

Repository layout

  • tamil-keyboard/bin/ — the tamil-keyboard-setup script
  • tamil-keyboard/debian/ — packaging metadata
  • docs/ — the published site. index.html is 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.

Releasing

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.0

The 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-pages branch, root folder.

  • Actions secrets GPG_PRIVATE_KEY (and GPG_PASSPHRASE, if the key has one). Export the private key with:

    gpg --armor --export-secret-keys 2B827D30BE0F7CCA4EE6DE8C521B6C93122B6B88

    If GPG_PRIVATE_KEY is 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.

License

GPL-3.0+

About

Debian/Ubuntu package that makes enabling Tamil 99 and Tamil Phonetic input methods

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages