From b99dfa33cddaa25a59ade1296c6336c3451f10d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oscar=20S=C3=B6derlund?= Date: Tue, 7 Apr 2026 07:26:34 +0200 Subject: [PATCH] feat(handy): integrate handy for kde - install handy from the upstream Fedora rpm release - add a launch-and-toggle wrapper for KDE-managed shortcuts - wire the wrapper into the existing KWin shortcut system --- Makefile | 2 ++ handy/Makefile | 33 +++++++++++++++++++++++++++++++++ handy/handy-toggle | 20 ++++++++++++++++++++ kwin/contents/code/main.js | 7 +++++++ 4 files changed, 62 insertions(+) create mode 100644 handy/Makefile create mode 100755 handy/handy-toggle diff --git a/Makefile b/Makefile index 6b284ed..f4f4ae0 100644 --- a/Makefile +++ b/Makefile @@ -38,6 +38,7 @@ install-packages: gifsicle \ git \ git-delta \ + gtk-layer-shell \ hexyl \ htop \ iftop \ @@ -60,6 +61,7 @@ install-packages: ttyd \ unzip \ unrar \ + wtype \ wl-clipboard \ yt-dlp \ -y -q diff --git a/handy/Makefile b/handy/Makefile new file mode 100644 index 0000000..7f04bd2 --- /dev/null +++ b/handy/Makefile @@ -0,0 +1,33 @@ +name := handy +# Discovery: https://github.com/cjpais/Handy/releases/latest +version := 0.8.2 +release := 1 +package_url := https://github.com/cjpais/Handy/releases/download/v$(version)/Handy-$(version)-$(release).x86_64.rpm +data_dir := $(HOME)/.local/share/odsod/machine/data/$(name) + +.PHONY: install +install: \ + install-dependencies \ + install-package \ + ~/.local/bin/handy-toggle + +.PHONY: install-dependencies +install-dependencies: + $(info [$(name)] Installing dependencies...) + @sudo dnf install -y gtk-layer-shell wtype + +.PHONY: install-package +install-package: $(data_dir)/$(version)/package.rpm + $(info [$(name)] Installing package...) + @sudo dnf install -y $< + +.PHONY: ~/.local/bin/handy-toggle +~/.local/bin/handy-toggle: handy-toggle + $(info [$(name)] Symlinking $@...) + @mkdir -p $(dir $@) + @ln -fsT $(abspath $<) $@ + +$(data_dir)/$(version)/package.rpm: + $(info [$(name)] Downloading package...) + @curl -L $(package_url) --create-dirs -o $@ + @touch $@ diff --git a/handy/handy-toggle b/handy/handy-toggle new file mode 100755 index 0000000..776d6fc --- /dev/null +++ b/handy/handy-toggle @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +set -euo pipefail + +if ! command -v handy >/dev/null 2>&1; then + echo "handy is not installed" >&2 + exit 1 +fi + +if ! pgrep -x handy >/dev/null 2>&1; then + setsid handy --start-hidden >/dev/null 2>&1 < /dev/null & +fi + +for _ in $(seq 1 30); do + if handy --toggle-transcription >/dev/null 2>&1; then + exit 0 + fi + sleep 0.1 +done + +pkill -USR2 -n handy diff --git a/kwin/contents/code/main.js b/kwin/contents/code/main.js index 95c3b0e..54c5c5b 100644 --- a/kwin/contents/code/main.js +++ b/kwin/contents/code/main.js @@ -159,6 +159,13 @@ const shortcuts = [ resourceClass: "systemsettings", }, + { + actionId: ["kwin", "[odsod] handy", "KWin", ""], + key: "Meta+N", + kind: "command", + command: ["handy-toggle"], + }, + { actionId: ["kwin", "[odsod] zed", "KWin", ""], key: "Meta+Z",