Skip to main content

Install on macOS

On macOS, Funput is a native input method — deeply integrated with the system, visible in the menu bar, and working in every app.

Requirements​

Minimum OSmacOS 26 (Tahoe). macOS 27 is fully supported
ChipApple Silicon (M-series) and Intel — releases are universal binaries
SigningDeveloper ID signed and notarized, so Gatekeeper does not block it
macOS 26 is a hard requirement

Funput will not run on macOS 15 (Sequoia) or earlier — the system refuses to load the input method, and there is no reduced mode to fall back on. This limit is baked into the bundle itself; it is not a recommendation.

The reason is that Funput's interface is built on SwiftUI APIs introduced in macOS 26 (Liquid Glass), not on anything in the Vietnamese typing engine.

To check your version: → About This Mac.

Features​

Three input methodsTelex · Telex Advanced (leading w, plus [ / ] shortcuts) · VNI
Tone placementTraditional (hòa, khỏe) or modern (hoà, khoẻ)
Smart typingEnglish word restore · instant restore · spell check · auto-capitalization
Retone after BackspaceDelete back, type a different tone mark, and Funput re-tones the word correctly
Per-app memoryVietnamese on in Pages, off in Terminal — Funput switches as you change apps
Text expansionAbbreviation table that expands as you type, with optional case-insensitive matching
Charset converterConvert between precomposed Unicode, combining Unicode, TCVN3 (ABC) and VNI-Windows
Export / import configMove every option and abbreviation to another machine as a single file

Download​

Get the latest release from GitHub Releases. Each macOS release ships two installers:

FileDescription
Funput-*.pkgSystem-wide install, requires admin rights
Funput-*.app.zipUnzip and install manually, no admin rights needed
Which one to choose
  • You have admin rights → use the .pkg (one step, shared by every account on the Mac).
  • No admin rights (work machine, Standard account) → use the .app.zip.

Verify the SHA-256 before installing — compare with the .sha256 file on the release page:

shasum -a 256 Funput-*.pkg
  1. Double-click Funput-*.pkg — macOS opens Installer.app.
  2. Follow the on-screen steps and enter your password when asked.
  3. Funput is installed to /Library/Input Methods/Funput.app.
info

That path is the system-wide Input Methods folder, distinct from the per-user one (~/Library/Input Methods).

Once installed, continue to Enable the input method below.

Option 2: Install with .app.zip (no admin rights)​

  1. Double-click Funput-*.app.zip to unzip — you get Funput.app.
  2. Open the per-user Input Methods folder:
    • Open Finder
    • Press Cmd + Shift + G
    • Type ~/Library/Input Methods and press Enter
    • If the folder does not exist, create one named Input Methods
  3. Drag Funput.app into that folder.
  4. Continue to Enable the input method below.
caution

Do not run Funput from Downloads or Desktop long term — place it in ~/Library/Input Methods so macOS recognizes it as an Input Method.

Enable the input method​

warning

Installing is not enough to start typing Vietnamese. macOS requires you to add Funput to your input sources first.

  1. Open System Settings
  2. Go to Keyboard → Input Sources
  3. Click +
  4. Select Vietnamese → Funput
  5. Click Add

Funput appears in the menu bar. Use the macOS input-switching shortcut (usually ⌃Space or the 🌐 key) to select Funput.

Getting started​

Once Funput is the active input source, the default shortcut to turn Vietnamese on and off is ⌃ + \ (Control + backslash). You can change it in Settings → Shortcuts.

Try typing:

Input methodType thisYou get
Telextieesng vieejttiếng việt
VNIxin chao2xin chào
How Telex and VNI differ

Telex marks tones with letters: s acute, f grave, r hook, x tilde, j dot below — so chaof gives chào.

VNI marks tones with digits: 1 acute, 2 grave, 3 hook, 4 tilde, 5 dot below — so chao2 is what gives chào.

Funput also offers Telex Advanced: plain Telex plus a leading w and the [ / ] shortcuts for ư and ơ.

Where to find Funput after installing​

The input method lives in a Library/Input Methods folder, and Spotlight does not index those — so searching for "Funput" finds nothing if only the input method is installed.

To work around that, Funput adds a small companion app as an entry point:

Install methodApp location
.pkg/Applications/Funput.app
.app.zip~/Applications/Funput.app — created by the app on first launch

That app is not the input method; it simply opens the Settings window. With it in place, searching "Funput" in Spotlight gets you to settings like any normal app.

The VI icon in the menu bar is the other quick way in: toggle Vietnamese, switch input method, open Settings. You can hide it under Settings → Overview → Show menu bar icon.

Configuration​

The Settings window has four main sections, plus tools at the bottom of the sidebar:

SectionWhat you can change
OverviewStatus · input method · launch at login · show menu bar icon
TypingInput method · tone placement · English restore · instant restore · spell check · auto-capitalization
ShortcutsVietnamese/English toggle key · key to flip the word you just typed
Text expansionAbbreviation table, with optional case-insensitive matching
ToolsCharset converter · import / export configuration · check for updates · about
Custom key combinations

A shortcut you record must include ⌃, ⌥ or ⌘. A bare key would fire in the middle of normal typing, so Funput refuses to accept one.

Where settings are stored​

macOS does not use a separate configuration file — Funput writes to the system's UserDefaults:

DomainHolds
app.funput.inputmethod.FunputThe input method and every option
app.funput.FunputThe entry-point app in Applications

To move your configuration to another machine, use Settings → Data → Export configuration rather than copying files by hand.

Known limitations​

Typing can stop working in Chromium/Electron apps on macOS 26/27 beta

Symptom: after switching input source while a text field in Chrome, Cursor, VS Code, Slack, Discord or Notion already has focus, character keys stop producing text. Shortcuts that do not need the input method (⌘C, Delete, arrow keys) keep working. In the worst case the app freezes for 15–30 seconds.

This is not a Funput bug. Apple changed internals of TextInputUIMacHelper on macOS 26/27 beta, and Chromium's NSTextInputContext bridge does not yet handle the new timing. Every third-party input method is affected — Funput, OpenKey, EVKey, GoTiengViet alike — because macOS offers no other API for a custom input method.

Workaround: switch to Funput before clicking into a text field, or click away and back into the field after switching. Native AppKit apps (TextEdit, Notes, Mail, Safari, Pages) are unaffected.

  • Retone after Backspace does not work in Cursor. Cursor reports a self-contradictory caret position, so Funput declines rather than guessing and corrupting your text. VS Code works fine.
  • No background update checks — you have to choose Check for updates yourself.
  • No Mac App Store build. An input method cannot be sandboxed, so Funput is distributed directly through GitHub Releases.

Updating​

Open Settings → Check for updates. Funput reads the signed appcast.xml from GitHub Releases, verifies its Ed25519 signature, and installs the new version.

info

Funput never checks for updates in the background and does not notify you when a new version appears — you have to choose Check for updates.

To update manually:

  1. Download the new release from GitHub Releases
  2. Install over the previous version using the same method (.pkg or .app.zip)

Uninstalling​

macOS remembers input sources independently of the files on disk, so order matters:

  1. Open System Settings → Keyboard → Input Sources, select Funput, click −.
  2. Delete Funput's files (see below).
  3. Log out and back in, or restart, so macOS forgets the input source completely.

If you have the source checkout, the uninstall script cleans up everything — system-wide and per-user bundles, the entry-point app, the .pkg receipt, preferences and caches:

./scripts/uninstall.sh # remove everything
./scripts/uninstall.sh --keep-prefs # remove the apps but keep settings
warning

Run the script as your normal user — not sudo ./uninstall.sh. It escalates with sudo exactly where needed; running the whole script as root would wipe root's preferences instead of yours.

To clean up by hand, these are all the paths involved:

sudo rm -rf "/Library/Input Methods/Funput.app" # .pkg install
rm -rf "$HOME/Library/Input Methods/Funput.app" # .app.zip install
sudo rm -rf /Applications/Funput.app # entry-point app (.pkg)
rm -rf "$HOME/Applications/Funput.app" # entry-point app (.app.zip)
sudo pkgutil --forget com.funput.installer # .pkg receipt
defaults delete app.funput.inputmethod.Funput # settings
defaults delete app.funput.Funput

Troubleshooting​

Funput does not appear in Input Sources​

  • Log out and log back in once — macOS only rescans the Input Method list at the start of a login session.
  • Confirm Funput.app is in /Library/Input Methods or ~/Library/Input Methods.
  • Confirm your Mac runs macOS 26 or newer — older versions will not load the input method, see Requirements.

Spotlight cannot find "Funput"​

That is expected: the input method sits in a folder Spotlight does not index. See Where to find Funput after installing — the entry-point app in Applications is what Spotlight sees.

Funput is selected but I still get English​

Funput may be in English mode. Press ⌃ + \ to switch back, or click the VI menu bar icon to check the current state.

VNI typing produces no tone marks​

VNI marks tones with digits (chao2 → chào), not letters. If chaof is what you are used to, you are typing Telex — switch method from the menu bar or in Settings → Typing.

Chrome / VS Code / Slack stops accepting characters​

See Known limitations — this is a Chromium-side issue on macOS 26/27 beta, not a Funput bug.

macOS warns when opening the file​

Official releases are signed and notarized. If you still see a warning:

  • Make sure you downloaded from the official GitHub Releases, not an unofficial mirror.
  • Verify the SHA-256 checksum (.sha256 file on the release page) to confirm the download is intact.

Verify SHA-256​

On macOS, run this in Terminal (replace the filename as needed):

shasum -a 256 Funput-*.pkg

Compare the output with the contents of the .sha256 file on the release page.

Need more help?​