From 33e09f8e93577531989d6fde78183ff75aef00bd Mon Sep 17 00:00:00 2001 From: moons Date: Wed, 5 Aug 2026 03:56:08 +0900 Subject: [PATCH] normcap-translate --- flake.lock | 12 ++--- flake.nix | 2 +- modules/applications/labwc/home.nix | 1 + modules/applications/niri/home/nixos.nix | 5 +++ modules/applications/normcap/home/nixos.nix | 44 +++++++++++++++++++ modules/applications/normcap/meta.nix | 7 +++ .../profiles/interface/linux-desktop/meta.nix | 1 + 7 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 modules/applications/normcap/home/nixos.nix create mode 100644 modules/applications/normcap/meta.nix diff --git a/flake.lock b/flake.lock index 6f0fb67..5319033 100644 --- a/flake.lock +++ b/flake.lock @@ -663,17 +663,17 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1785856454, - "narHash": "sha256-7f2AfONkRN5XpCUjN0TAO1Qlk/YImDCM28vDcC1mppI=", + "lastModified": 1785857772, + "narHash": "sha256-JMEQH9x8Pb9cHW4JbWfFBcqxsh4JkPDR5k8dCnphUTU=", "ref": "refs/heads/main", - "rev": "e0e919b6cc4eab40afe02f4ed72b93ed383674db", - "revCount": 6, + "rev": "9d6fec627a620841c27c7e67e8e7b5719ce9b465", + "revCount": 8, "type": "git", - "url": "https://github.com/zunoser/nani-translate-linux-mirror.git" + "url": "https://github.com/zunoser/nani-translate-linux.git" }, "original": { "type": "git", - "url": "https://github.com/zunoser/nani-translate-linux-mirror.git" + "url": "https://github.com/zunoser/nani-translate-linux.git" } }, "niri-flake": { diff --git a/flake.nix b/flake.nix index 811c683..96cd7cf 100644 --- a/flake.nix +++ b/flake.nix @@ -111,7 +111,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - nani-translate-linux.url = "git+https://github.com/zunoser/nani-translate-linux-mirror.git"; + nani-translate-linux.url = "git+https://github.com/zunoser/nani-translate-linux.git"; }; diff --git a/modules/applications/labwc/home.nix b/modules/applications/labwc/home.nix index e1a0490..db470ef 100644 --- a/modules/applications/labwc/home.nix +++ b/modules/applications/labwc/home.nix @@ -125,6 +125,7 @@ in (execute "W-l" "loginctl lock-session") (execute "W-v" "vicinae vicinae://launch/clipboard/history?toggle=true") (execute "W-j" "nani-translate-primary") + (execute "W-S-j" "normcap-translate") (execute "W-C-j" "${lib.getExe' pkgs.xdg-utils "xdg-open"} naniapp://translate") (execute "W-space" "ghostty +toggle-quick-terminal") (execute "W-p" "wdisplays") diff --git a/modules/applications/niri/home/nixos.nix b/modules/applications/niri/home/nixos.nix index d041911..80d836b 100644 --- a/modules/applications/niri/home/nixos.nix +++ b/modules/applications/niri/home/nixos.nix @@ -117,6 +117,11 @@ in action.spawn = [ "nani-translate-primary" ]; hotkey-overlay.title = "Translate Primary Selection"; }; + "Mod+Shift+J" = { + repeat = false; + action.spawn = [ "normcap-translate" ]; + hotkey-overlay.title = "OCR and Translate with Nani"; + }; "Mod+Ctrl+J" = { repeat = false; action.spawn = [ diff --git a/modules/applications/normcap/home/nixos.nix b/modules/applications/normcap/home/nixos.nix new file mode 100644 index 0000000..b8dd862 --- /dev/null +++ b/modules/applications/normcap/home/nixos.nix @@ -0,0 +1,44 @@ +{ pkgs, ... }: +let + normcap = pkgs.normcap.override { + tesseract4 = pkgs.tesseract4.override { + enableLanguages = [ + "chi_sim" + "jpn" + "eng" + ]; + }; + }; + + normcapTranslate = pkgs.writeShellApplication { + name = "normcap-translate"; + + runtimeInputs = [ + normcap + pkgs.jq + pkgs.xdg-utils + ]; + + text = '' + captured_text="$( + normcap \ + --cli-mode \ + --screenshot-handler grim \ + --show-introduction False \ + --update False \ + --detect-codes False \ + --notification False \ + -l jpn eng chi_sim + )" || exit 0 + [ -n "$captured_text" ] || exit 0 + encoded_text="$(printf '%s' "$captured_text" | jq -sRr @uri)" + exec xdg-open "naniapp://translate?source=$encoded_text" + ''; + }; +in +{ + home.packages = [ + normcap + normcapTranslate + ]; +} diff --git a/modules/applications/normcap/meta.nix b/modules/applications/normcap/meta.nix new file mode 100644 index 0000000..e59654b --- /dev/null +++ b/modules/applications/normcap/meta.nix @@ -0,0 +1,7 @@ +{ + description = "NormCap OCR screen capture"; + + includes = [ + "applications.nani" + ]; +} diff --git a/modules/profiles/interface/linux-desktop/meta.nix b/modules/profiles/interface/linux-desktop/meta.nix index ccff06d..3ccb5fc 100644 --- a/modules/profiles/interface/linux-desktop/meta.nix +++ b/modules/profiles/interface/linux-desktop/meta.nix @@ -13,6 +13,7 @@ "applications.loupe" "applications.linux-wallpaperengine" "applications.nautilus" + "applications.normcap" "applications.papers" "applications.qalculate-gtk" "applications.resources"