Skip to main content

Install on Linux

On Linux, Funput is an engine that runs inside Fcitx5 — not a portable application. This page is the recommended route: install from the GPG-signed repository, run on Fcitx5.

Work through all five steps in order. The one people skip is step 3 — and it is behind nearly every "installed it but typing does nothing" report.

Step 1 — Find out where you are​

Funput runs inside Fcitx5, so the machine needs Fcitx5. First, note these two values; step 3 needs them:

echo "$XDG_SESSION_TYPE" # x11 or wayland
echo "$XDG_CURRENT_DESKTOP" # GNOME, KDE, sway…
GNOME and Ubuntu

The default session here wires into IBus, not Fcitx5. Choosing Fcitx5 means rewiring the session (step 3) and then logging out and back in — you will not be typing right after the install. To skip that, use the IBus build.

Step 2 — Add the repository and install​

The Funput package repository (repo.funput.app) is GPG-signed and updates itself when a new release ships. Add it once, then install and upgrade like any other system package.

This list mirrors how install.sh identifies distros, but Funput has not been tested on all of them. If your package manager reports a missing library, your distro is older than the machine the packages were built on — please report it on GitHub, or use the install into ~/.local.

Add the repository (once):

sudo install -d /usr/share/keyrings
curl -fsSL https://repo.funput.app/funput.asc | sudo tee /usr/share/keyrings/funput.asc >/dev/null
sudo tee /etc/apt/sources.list.d/funput.sources >/dev/null <<'REPO'
Types: deb
URIs: https://repo.funput.app/deb
Suites: ./
Signed-By: /usr/share/keyrings/funput.asc
REPO
sudo apt update

Install:

sudo apt install funput
Why .sources and not .list?

This is the deb822 format. The old one-line .list form still works, but apt 3.0 (Debian 13, Ubuntu 25.04 and later) prints a deprecation notice on every run.

The funput package pulls in funput-settings — the Settings app — at the exact same version. The repository only carries the newest release; for an older one see Other install methods.

Step 3 — Wire the session to Fcitx5​

Funput is an engine inside Fcitx5, so two things have to happen: Fcitx5 must run, and the session must point at it. This is the step that breaks most often — do all three parts.

3a. Make Fcitx5 start automatically​

KDE Plasma: System Settings → Virtual keyboard → Fcitx 5. The Fcitx5 documentation states this is what makes the text-input protocol work with native Wayland applications — autostart is not a substitute.

GNOME and every other desktop:

mkdir -p ~/.config/autostart
cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/

3b. Set the environment variables​

Pick exactly one block, based on the two values you printed in step 1.

XDG_SESSION_TYPE is x11 — any desktop.

Prefer your distro's own tool: it puts the variables where your display manager reads them, and handles part 3a as well.

# Debian / Ubuntu (and Mint, Pop!_OS…)
im-config -n fcitx5

# Fedora
sudo dnf install fcitx5-autostart

Arch, openSUSE and any distro without such a tool: set them by hand.

cat >> ~/.bash_profile <<'CONF'
export XMODIFIERS=@im=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
CONF

~/.bash_profile is used because GDM, SDDM and LightDM all read it. If you use a shell other than bash, or want this to apply to every user, see where to set the variables.

XDG_SESSION_TYPE is wayland and XDG_CURRENT_DESKTOP is GNOME / sway / a wlroots compositor:

mkdir -p ~/.config/environment.d
cat > ~/.config/environment.d/fcitx5.conf <<'CONF'
XMODIFIERS=@im=fcitx
QT_IM_MODULE=fcitx
CONF

GTK_IM_MODULE is left out on purpose — on Wayland, GTK 3/4 already talks to the compositor over text-input-v3.

XDG_SESSION_TYPE is wayland and XDG_CURRENT_DESKTOP is KDE:

mkdir -p ~/.config/environment.d
cat > ~/.config/environment.d/fcitx5.conf <<'CONF'
XMODIFIERS=@im=fcitx
CONF

One line only. Setting GTK_IM_MODULE or QT_IM_MODULE globally makes the candidate window flicker on KWin.

3c. Log out and back in​

caution

Environment variables are only picked up when a new session starts. Opening a new terminal is not enough, and source does not help either. Log out and back in — or reboot to be sure.

Those three parts cover the common cases. If you are on Qt 6.8.2 or later, use a display manager that does not read environment.d, or once ran im-config and want to undo it: see Session — special cases.

Step 4 — Enable Funput​

  1. Open fcitx5-configtool.
  2. Click +, clear Only Show Current Language, find Funput (Vietnamese group), and add it.
  3. Toggle Vietnamese with Ctrl + ` or the Fcitx5 tray icon.

Step 5 — Verify​

fcitx5-diagnose

This checks both the session environment variables and the loaded addons, and points straight at whatever is missing. Run it before looking anywhere else — if anything in step 3 is wrong, it will say so.

After installing​

  • Open the Funput app from your application menu to choose Telex or VNI, smart/eager restore and the other options.
  • Settings live in ~/.config/Funput/settings.json — changes take effect when you refocus an input field.

Updating​

Once the repository is added in step 2, updates are automatic, alongside your system packages:

sudo apt update && sudo apt upgrade funput # Debian / Ubuntu
sudo dnf upgrade funput # Fedora
sudo zypper update funput # openSUSE
sudo pacman -Syu # Arch
tip

If the input method misbehaves after an update, logging out and back in is the safe move on every desktop. (fcitx5 -r -d also works — except on KDE, see this warning.)

This route does not work for you?​

SituationSee
Already on IBus and would rather not change the sessionFunput on IBus
No root access, Arch ARM, a distro outside the listOther install methods
Need to pin an older versionOther install methods
Installed, but typing does nothingTroubleshooting

Need more help?​