Add screenshot OCR functionality with Minimal Dependencies (#1918)

* Add script to capture screenshot, perform OCR, and copy text to clipboard

* Add binding for screenshot-ocr

* Update OCR binding description

* Add tesseract OCR and language data installation

* Update bindings to current dev

* Refactor screenshot capture method to use wayfreeze and slurp for region selection

* Refactor OCR text extraction to simplify error handling

* Bring up to date

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
This commit is contained in:
K T Prajwal Prathiksh
2026-05-03 15:25:33 +02:00
committed by GitHub
co-authored by David Heinemeier Hansson
parent fcf742a3a1
commit 75eec08758
5 changed files with 34 additions and 1 deletions
+26
View File
@@ -0,0 +1,26 @@
#!/bin/bash
# omarchy:summary=Extract text from a screenshot region with OCR
# omarchy:group=capture
# omarchy:examples=omarchy capture ocr
# Keep hyprpicker alive until after grim captures so the screenshot sees the
# frozen overlay rather than live content shifting during teardown.
cleanup_freeze() {
[[ -n $PID ]] && kill $PID 2>/dev/null
}
trap cleanup_freeze EXIT
hyprpicker -r -z >/dev/null 2>&1 &
PID=$!
sleep .1
SELECTION=$(slurp 2>/dev/null)
[[ -z $SELECTION ]] && exit 0
TEXT=$(grim -g "$SELECTION" - | tesseract stdin stdout --oem 1 --psm 6 -l eng --dpi 300 -c preserve_interword_spaces=1 2>/dev/null) || exit 1
[[ -z $TEXT ]] && exit 1
printf "%s" "$TEXT" | wl-copy
notify-send "󰴑 Copied text from selection to clipboard"
+2 -1
View File
@@ -103,9 +103,10 @@ show_trigger_menu() {
}
show_capture_menu() {
case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in
case $(menu "Capture" " Screenshot\n Screenrecord\n󰴑 Text Extraction\n󰃉 Color") in
*Screenshot*) omarchy-capture-screenshot ;;
*Screenrecord*) show_screenrecord_menu ;;
*Text*) omarchy-capture-text-extraction ;;
*Color*) pkill hyprpicker || hyprpicker -a ;;
*) back_to show_trigger_menu ;;
esac
+1
View File
@@ -38,6 +38,7 @@ bindl = , switch:off:Lid Switch, exec, omarchy-hyprland-monitor-internal on
bindd = , PRINT, Screenshot, exec, omarchy-capture-screenshot
bindd = ALT, PRINT, Screenrecording, exec, omarchy-menu screenrecord
bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
bindd = SUPER CTRL, PRINT, Extract text (OCR) from screenshot, exec, omarchy-capture-text-extraction
# File sharing
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
+2
View File
@@ -120,6 +120,8 @@ sushi
swaybg
swayosd
system-config-printer
tesseract
tesseract-data-eng
tldr
tree-sitter-cli
tmux
+3
View File
@@ -0,0 +1,3 @@
echo "Install tesseract OCR and language data files"
omarchy-pkg-add tesseract tesseract-data-eng