Repository navigation
Build from Source
Language: English · 简体中文
Prefer to build manually instead of using install.sh? Here's how.
| Distro | Command |
|---|---|
| Arch | sudo pacman -S gtk4 libevdev json-glib ncurses gettext pkgconf gcc make |
| Fedora | sudo dnf install gtk4-devel libevdev-devel json-glib-devel ncurses-devel gettext pkgconf-pkg-config gcc make |
| Debian / Ubuntu | sudo apt install libgtk-4-dev libevdev-dev libjson-glib-dev libncursesw5-dev gettext pkg-config build-essential |
| openSUSE | sudo zypper install gtk4-devel libevdev-devel ncurses-devel json-glib-devel gettext-tools pkg-config gcc make |
| Alpine | sudo apk add gtk4-dev libevdev-dev ncurses-dev json-glib-dev gettext pkgconf gcc make musl-dev |
| Void | sudo xbps-install gtk4-devel libevdev-devel ncurses-devel json-glib-devel gettext pkg-config gcc make |
This is what lets seekey anchor to the bottom edge and stay put across workspaces on niri / Hyprland / Sway / river / Wayfire / labwc. Without it, seekey falls back to a plain transparent window (see Compositor Compatibility).
# Arch
sudo pacman -S gtk4-layer-shell
# Fedora
sudo dnf install gtk4-layer-shell-develOn Debian/Ubuntu there is no official package yet — see the gtk4-layer-shell project for build instructions. Seekey works without it (fallback mode).
make # build seekeyThe Makefile auto-detects gtk4-layer-shell via pkg-config (probing both
gtk4-layer-shell and gtk4-layer-shell-0 pc-file names) and links it
before GTK4. That ordering is required: gtk4-layer-shell registers a
static constructor that must run before libwayland-client is initialized,
otherwise gtk_layer_init_for_window() fails.
./seekey # run from the build dir
./seekey --init-config # create ./seekey.ini with defaults
./seekey --config-tui # edit settings interactivelymake install # installs to PREFIX (default /usr/local)
make uninstall # removes installed filesOverride the prefix:
make install PREFIX=$HOME/.localmake install puts the binary in $PREFIX/bin/seekey, the example config in
$PREFIX/share/seekey/seekey.ini.example, the desktop entry in
$PREFIX/share/applications/, and translations in $PREFIX/share/locale/<lang>/.
You still need input permissions — see Installation#input-permissions.
| Target | What it does |
|---|---|
make / make all
|
Build seekey + compile translations (.mo) |
make check |
Build and run the unit tests |
make install |
Install binary, config sample, desktop entry, translations |
make uninstall |
Remove installed files |
make pot |
Regenerate po/seekey.pot from source (needs xgettext) |
make mo |
Compile .po → .mo under locale/
|
make format |
Run clang-format on src/ and tests/ (if installed) |
make clean |
Remove build artifacts + locale/
|
See Testing for the test setup and Translations for the i18n workflow.
Getting started
Behaviour & compatibility
Looks
For contributors
Reference