-
-
Notifications
You must be signed in to change notification settings - Fork 27
Build Instructions
Kevin Kim edited this page Aug 16, 2025
·
5 revisions
Nimf provides a Docker-based unified build system for consistent build environments across all Linux distributions.
# Build for specific distributions
./scripts/build-docker.sh ubuntu.2404
./scripts/build-docker.sh debian.bookworm
./scripts/build-docker.sh fedora.latest
./scripts/build-docker.sh arch
# ARM64 builds
./scripts/build-docker.sh ubuntu.2404.arm64
./scripts/build-docker.sh debian.bookworm.arm64
./scripts/build-docker.sh fedora.latest.arm64
# Test build on all environments
./scripts/build-docker.sh --all
# Additional options
./scripts/build-docker.sh ubuntu.2404 --interactive # Run shell after build
./scripts/build-docker.sh debian.trixie --clean # Clean existing images before build# Build directly from source
git clone --recurse-submodules https://github.com/hamonikr/nimf
cd nimf
./autogen.sh
./configure --prefix=/usr --enable-gtk4 --enable-bundled-libhangul
make -j$(nproc)
sudo make install- Input Engines: Korean (built-in libhangul), Japanese (anthy), Chinese (rime)
- Client Modules: GTK2/3/4, Qt5/6 full support
- Service Modules: ayatana-appindicator, enhanced Wayland, XIM
- Development Files: Headers, libraries, pkg-config files
- 100+ Languages: m17n-based multilingual input engines
- Optional Installation: Install only when needed
dist/
├── ubuntu.2404/ # Ubuntu 24.04 packages
├── debian.bookworm/ # Debian Bookworm packages
├── debian.trixie/ # Debian Trixie packages
├── fedora.latest/ # Fedora packages
├── opensuse/ # openSUSE packages
└── arch/ # Arch Linux packages
| Distribution | Architecture | Package Format | Status | Build Method |
|---|---|---|---|---|
| Ubuntu 22.04+ | x86_64 | .deb | ✅ Stable | Docker |
| Ubuntu 24.04+ | x86_64, ARM64 | .deb | ✅ Stable | Docker |
| Debian Bookworm | x86_64, ARM64 | .deb | ✅ Stable | Docker |
| Debian Trixie | x86_64, ARM64 | .deb | ✅ Stable | Docker |
| Debian Sid | x86_64 | .deb | ✅ Stable | Docker |
| Fedora Latest | x86_64, ARM64 | .rpm | ✅ Stable | Docker |
| openSUSE Leap 15.6 | x86_64, ARM64 | .rpm | ✅ Stable | Docker |
| Arch Linux | x86_64 | .pkg.tar.zst | ✅ Stable | Docker |
# Build only (no package generation)
./scripts/build-docker.sh ubuntu.2404 --build-only
# Package only (skip build)
./scripts/build-docker.sh debian.bookworm --package-only
# Interactive shell after build
./scripts/build-docker.sh fedora.latest --interactive
# Clean existing images before build
./scripts/build-docker.sh arch --clean
# Test all environments
./scripts/build-docker.sh --all
# Show help
./scripts/build-docker.sh --helpsudo apt install build-essential devscripts debhelper autoconf automake \
libglib2.0-dev intltool gtk-doc-tools libgtk-3-dev libgtk2.0-dev \
qtbase5-dev qt6-base-dev libayatana-appindicator3-dev librsvg2-bin \
libhangul-dev anthy libxkbcommon-dev libxklavier-dev libm17n-dev \
m17n-db librime-devgit clone https://github.com/hamonikr/nimf.git
cd nimf
debuild -b -uc -us
# Package installation (v1.4.0 modular structure)
cd ..
sudo dpkg -i nimf_*.deb
# Add multilingual support (optional)
sudo dpkg -i nimf-i18n_*.deb
# Configure input method
im-config -n nimf# Always update all packages to latest before building on Ubuntu 22.04
sudo apt update && sudo apt upgrade -y
# Prevent qtbase5-private-dev package conflicts# Use specific branch (for versions before Ubuntu 21.10)
git clone -b before-ubuntu21.10 https://github.com/hamonikr/nimf.git
# Automatic dependency installation
sudo mk-build-deps --install debian/control
# Or manual installation
sudo apt install -y libglib2.0-dev intltool libgtk-3-dev libgtk2.0-dev \
qtbase5-dev qtbase5-private-dev libappindicator3-dev librsvg2-bin \
libhangul-dev libanthy-dev anthy librime-dev libxkbcommon-dev \
libwayland-dev wayland-protocols libxklavier-dev libm17n-dev m17n-db \
gtk-doc-tools devscripts build-essential debhelper
cd nimf
debuild -b -uc -ussudo dnf install anthy-devel gcc-c++ glib2-devel gtk-doc gtk2-devel \
gtk3-devel intltool libappindicator-gtk3-devel libhangul-devel \
librime-devel librsvg2-tools libtool libxkbcommon-devel \
libxklavier-devel m17n-db-devel m17n-lib-devel qt5-qtbase-devel \
qt5-qtbase-private-devel qt6-qtbase-devel qt6-qtbase-private-devel \
wayland-devel wayland-protocols-devel rpm-buildgit clone https://github.com/hamonikr/nimf.git
cd nimf
# Use RPM build script or Docker build recommended
./scripts/build-docker.sh fedora.latestsudo pacman -S base-devel git glib2 gtk3 gtk2 qt5-base qt6-base \
libappindicator-gtk3 librsvg noto-fonts-cjk libhangul anthy \
librime libxkbcommon wayland libxklavier m17n-lib m17n-db gtk-docgit clone https://github.com/hamonikr/nimf.git
cd nimf
# Modify makepkg.conf (prevent errors)
sudo sed -i 's/CFLAGS=.*/CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -Wno-error=deprecated-declarations"/' /etc/makepkg.conf
makepkg -s
sudo pacman -U nimf-*.pkg.tar.zst
# Environment variable setup
echo 'export GTK_IM_MODULE=nimf
export QT4_IM_MODULE="nimf"
export QT_IM_MODULE=nimf
export XMODIFIERS="@im=nimf"
nimf' >> ~/.xprofilesudo zypper install gcc-c++ glib2-devel gtk2-devel gtk3-devel \
libqt5-qtbase-devel libappindicator3-devel librsvg-devel \
libhangul-devel anthy-devel librime-devel libxkbcommon-devel \
wayland-devel libxklavier-devel m17n-lib-devel gtk-doc rpm-build# Add HamoniKR repository
wget -qO- https://update.hamonikr.org/add-update-repo.apt | sudo -E bash -
# Install packages
sudo apt install nimf nimf-libhangul
# Full language support
sudo apt install libnimf1 nimf nimf-anthy nimf-dev nimf-libhangul nimf-m17n nimf-rime
im-config -n nimf# Install additional dependencies
sudo apt install fakeroot libgtk-3-bin
# Build time: approximately 40+ minutes
git clone https://github.com/hamonikr/nimf.git
cd nimf
debuild -b -uc -us
# Install
cd ..
sudo dpkg -i libnimf1_*.deb nimf_*.deb nimf-libhangul_*.deb
im-config -n nimf
reboot- Build Time: 40+ minutes or more
- Memory: Minimum 1GB RAM recommended
- Storage: Minimum 2GB free space for build
Pre-built packages provided by davidjung-kr:
# Download pre-built packages
wget https://github.com/davidjung-kr/nimf-bin-armhf/releases/latest/download/nimf-armhf.tar.gz
# Extract and install
tar -xzf nimf-armhf.tar.gz
cd nimf-armhf
sudo dpkg -i *.deb
# Configure input method
im-config -n nimf
reboot- OS: Manjaro ARM XFCE
- Platform: Raspberry Pi 4
- Architecture: ARM64
# Use special ARM branch
git clone -b manjaro-arm --single-branch https://github.com/hamonikr/nimf.git
# Install dependencies
sudo pacman -S meson ninja qt5-tools base-devel
# Build
cd nimf/manjaro-arm
makepkg -s
# Install
sudo pacman -U nimf-*.pkg.tar.xz# Create/edit ~/.xprofile file
nano ~/.xprofile
# Add the following content
export GTK_IM_MODULE=nimf
export QT4_IM_MODULE="nimf"
export QT_IM_MODULE=nimf
export XMODIFIERS="@im=nimf"
nimfsudo rebootgit clone --recurse-submodules https://github.com/hamonikr/nimf.git
cd nimf
./autogen.sh
./configure --prefix=/usr --enable-gtk-doc --enable-bundled-libhangul
make -j$(nproc)
sudo make install# Basic options
--prefix=/usr # Installation path
--disable-hardening # Disable hardening
# Input engine toggles
--disable-nimf-libhangul # Disable Korean input
--disable-nimf-anthy # Disable Japanese input
--disable-nimf-m17n # Disable multilingual input
--disable-nimf-rime # Disable Chinese input
# UI toolkit support
--enable-gtk4 # Build GTK4 IM module
--enable-qt6 # Enable Qt6 support
--with-gtk=3|4 # Select GTK version for nimf-settings
# Platform support
--disable-x11 # Wayland-only build (disable X11)
# System integration
--with-im-config-data # Install im-config data
--with-imsettings-data # Install imsettings dataim-config -n nimfimsettings-switch nimf# Add to ~/.bashrc or ~/.zshrc
export GTK_IM_MODULE=nimf
export QT4_IM_MODULE=nimf
export QT_IM_MODULE=nimf
export XMODIFIERS=@im=nimf
# System-wide setup (/etc/environment)
sudo tee -a /etc/environment << EOF
GTK_IM_MODULE=nimf
QT4_IM_MODULE=nimf
QT_IM_MODULE=nimf
XMODIFIERS=@im=nimf
EOF-
gettext Version Error
AM_GNU_GETTEXT_VERSION error occurs→ Automatically resolved (auto-fixed in
autogen.sh) -
Qt6 Related Errors
Qt6 libraries not found→ Use
--disable-qt6option or install Qt6 packages -
Docker Permission Error
sudo usermod -aG docker $USER newgrp docker -
Ubuntu 22.04 Package Conflicts
# Update all packages to latest before building sudo apt update && sudo apt upgrade -y
-
Manjaro Compilation Errors
# Ignore deprecated-declarations warnings in makepkg.conf sudo sed -i 's/CFLAGS=.*/CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -Wno-error=deprecated-declarations"/' /etc/makepkg.conf
# Verbose log output
./scripts/build-docker.sh --verbose
# Check Docker build logs
docker logs nimf-build-ubuntu
# Manual debug build
G_MESSAGES_DEBUG=nimf ./configure --enable-debug
make -j$(nproc)# Ubuntu/Debian
sudo apt update && sudo apt install -f
# Fedora
sudo dnf check-update && sudo dnf install --best --allowerasing
# Arch Linux
sudo pacman -Syu# Ubuntu/Debian
sudo apt purge '*nimf*'
sudo apt autoremove
# Fedora
sudo dnf remove nimf
# Arch Linux
sudo pacman -Rns nimfsudo make uninstall # From source directoryrm -rf ~/.config/nimf
sudo rm -rf /etc/nimf- 🇺🇸 English Documentation - This page
- 🇰🇷 한국어 문서 - Korean documentation
- Installation Guide - Installing built packages
- Configuration - Nimf configuration and usage
- Troubleshooting - Problem solving guide