Files
joakim 4eb93b7640 Initial commit
Dotfiles managed with GNU Stow: Hyprland (Lua config), Neovim, zsh,
tmux, ghostty, alacritty, waybar, yazi, lazygit, herdr, Claude Code.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 18:02:28 +02:00

57 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Norwegian Handy instance (whisper-large-v3, language pinned to "no").
# Runs on a private D-Bus session bus so the tauri single-instance lock
# (D-Bus name com.pais.handy) doesn't collide with the main English
# instance, and with its own XDG_DATA_HOME for a separate settings store.
# Models are shared via ~/.cache/huggingface — no duplicate downloads.
#
# Usage: handy-no start | toggle | gui | cancel
set -euo pipefail
export XDG_DATA_HOME="$HOME/.local/share/handy-no"
export BUSFILE="$XDG_RUNTIME_DIR/handy-no.bus"
case "${1:-start}" in
start)
# First run on a new machine: seed this instance's settings from the
# main (English) store and apply the Norwegian overrides. The live
# store stays out of git — Handy rewrites it at runtime and it can
# hold API keys.
NO_STORE="$XDG_DATA_HOME/com.pais.handy/settings_store.json"
EN_STORE="$HOME/.local/share/com.pais.handy/settings_store.json"
if [ ! -f "$NO_STORE" ] && [ -f "$EN_STORE" ]; then
mkdir -p "${NO_STORE%/*}"
python3 - "$EN_STORE" "$NO_STORE" <<'PY'
import json, sys
en, out = sys.argv[1:3]
d = json.load(open(en))
s = d["settings"]
s["selected_model"] = "handy-computer/whisper-large-v3-gguf/whisper-large-v3-Q5_K_M.gguf"
s["selected_language"] = "no" # pinned: auto-detect mistakes Norwegian for Swedish
s["show_tray_icon"] = False
s["autostart_enabled"] = False # hyprland autostarts this instance
s["onboarding_completed"] = True
s["post_process_api_keys"] = {k: "" for k in s.get("post_process_api_keys", {})}
json.dump(d, open(out, "w"), indent=2)
PY
fi
# Publish the private bus address so toggle/gui/cancel can reach
# this instance through the single-instance forwarder.
exec dbus-run-session -- sh -c \
'echo "$DBUS_SESSION_BUS_ADDRESS" > "$BUSFILE"; exec handy --start-hidden --no-tray'
;;
toggle | gui | cancel)
DBUS_SESSION_BUS_ADDRESS="$(cat "$BUSFILE")"
export DBUS_SESSION_BUS_ADDRESS
case "$1" in
toggle) exec handy --toggle-transcription ;;
cancel) exec handy --cancel ;;
gui) exec handy ;;
esac
;;
*)
echo "usage: handy-no {start|toggle|gui|cancel}" >&2
exit 2
;;
esac