Add OmaKeyboard: keyboard remapping and shortcuts (#564)

A Qt Quick application for remapping keys, building Fn-style layers and
managing shortcuts, per keyboard. It generates real XKB keymaps with
libxkbcommon and loads them through Hyprland's per-device kb_file; no
input daemon or third-party remapping engine is involved.

Builds from the published v0.1.0 tag. check() runs the project's tests,
which need no display.

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Gabriel AramburuandClaude authored and GitHub committed 2026-10-09 01:10:24 +00:00
1 parent 5abe08fbab
commit 17ae27fb21
3 files changed
+96

No files matched your search

@@ -0,0 +1,9 @@
{
"source": "local",
"upstream": {
"watch": {
"github": "gabamnml/omakeyboard",
"pattern": "v(?P<version>[0-9]+(?:\\.[0-9]+)*)"
}
}
}
+63
View File
@@ -0,0 +1,63 @@
# Maintainer: Gabriel Aramburu <aramburu.gabriel@gmail.com>
pkgname=omakeyboard
pkgver=0.1.0
pkgrel=1
pkgdesc='Keyboard remapping and shortcuts for Omarchy, built with Qt Quick'
arch=('x86_64' 'aarch64')
url='https://github.com/gabamnml/omakeyboard'
license=('MIT')
install='omakeyboard.install'
options=('!debug')
# hyprland and lua are runtime tools, not linked: hyprctl applies the
# changes, and lua reads the bindings already in the configuration.
depends=(
'hicolor-icon-theme'
'hyprland'
'libxkbcommon'
'lua'
'qt6-base'
'qt6-declarative'
'qt6-wayland'
)
makedepends=(
'gcc'
'make'
'qt6-base'
'qt6-declarative'
)
checkdepends=(
'qt6-base'
'qt6-declarative'
)
optdepends=('xdg-desktop-portal: follow the desktop dark mode and text scale, and use the desktop file chooser when exporting or importing')
source=("$pkgname-$pkgver.tar.gz::https://github.com/gabamnml/omakeyboard/archive/refs/tags/v$pkgver.tar.gz")
sha256sums=('3cc272c47cd0670b6d475e058fafbfbe264555780e7442c357428bbf1b7282a6')
build() {
cd "$srcdir/$pkgname-$pkgver"
./bin/build
}
check() {
cd "$srcdir/$pkgname-$pkgver"
./bin/test
}
package() {
cd "$srcdir/$pkgname-$pkgver"
install -Dm755 build/omakeyboard "$pkgdir/usr/bin/omakeyboard"
install -Dm644 packaging/omakeyboard.desktop \
"$pkgdir/usr/share/applications/omakeyboard.desktop"
for size in 16 22 24 32 48 64 96 128 256 512; do
install -Dm644 "resources/icons/${size}.png" \
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/omakeyboard.png"
done
install -Dm644 resources/wordmark.svg \
"$pkgdir/usr/share/omakeyboard/wordmark.svg"
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
}
+24
View File
@@ -0,0 +1,24 @@
post_install() {
gtk-update-icon-cache -q -t -f usr/share/icons/hicolor >/dev/null 2>&1 || true
update-desktop-database -q >/dev/null 2>&1 || true
}
post_upgrade() {
post_install
}
post_remove() {
post_install
cat <<'MESSAGE'
OmaKeyboard has been removed, but the configuration it generated is still in place:
~/.config/omakeyboard/ your rules and the generated data
~/.config/hypr/omakeyboard.lua the loader
~/.local/state/omakeyboard/ generated keymaps and backups
and hyprland.lua still requires the loader. To undo all of that, run
"Restore defaults" in the app before uninstalling, or remove the block
marked OmaKeyboard from ~/.config/hypr/hyprland.lua by hand.
MESSAGE
}