366c708e44
Keyboard window capture in the region picker: Return, Tab, arrows ( #6466 )
...
* Keyboard window capture in the region picker: Ctrl+Return, Tab, arrows
Return already captures the entire focused monitor while slurp is open,
but grabbing a single window required the mouse: hover highlights a
window, a click captures it. Now the keyboard can do the same.
Ctrl+Return captures the selected window — the one under the cursor,
falling back to the focused window. Tab and Ctrl+Tab cycle that
selection through the workspace's windows in reading order, and the
arrow keys move it spatially; both warp the cursor to the target
window's center, so slurp's own hover highlight tracks the selection.
Ctrl+Return is implemented like --take-fullscreen: a layer-scoped bind
flags the intent via a marker file and dismisses slurp, and the picker
resolves the window under the cursor. On an empty workspace the pick
resolves to nothing and exits as cancelled.
Ctrl is the chord modifier because slurp reacts to held Shift by
squaring the selection's aspect ratio, which visibly reshapes the
hover highlight mid-chord. None of the keys slurp itself uses (Escape,
held Space to move a selection, held Shift) are bound, so its own
keyboard behavior is unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
* Resolve overlapping windows the way slurp highlights them
slurp highlights the smallest box under the cursor, but the capture and
selection hit-tests returned the first geometric match in hyprctl
clients order. With a floating window over a tiled one, Ctrl+Return
could capture the window underneath the visibly highlighted one. Track
the smallest containing window instead, in both the capture resolution
and the selection-movement origin.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
* Document the region picker's keyboard modes in its usage line
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
* Resolve keyboard capture and navigation from one rectangle list
Duplicate window geometry (tabbed groups, stacked floating windows) stalled
the Tab cycle on the first copy, and the smallest-window-under-cursor
tie-break was applied to two differently ordered lists, so navigation could
cycle from one window while Ctrl+Return captured another. Ctrl+Return over a
gap or an empty workspace also ignored the monitor rectangle slurp was
highlighting.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
* Capture the highlighted window with Return, the display with Ctrl+Return
The picker highlights a window under the cursor far more often than a whole
display, so the unmodified key takes the highlighted rectangle.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
Co-authored-by: David Heinemeier Hansson <david@hey.com >
2026-08-10 19:12:11 +02:00
..
2026-08-07 23:04:42 +02:00
2026-08-09 13:27:38 +02:00
2026-08-07 23:49:43 +02:00
2026-08-07 23:49:43 +02:00
2026-08-07 15:46:10 +02:00
2026-05-16 20:34:09 +02:00
2026-05-21 11:53:48 +02:00
2026-07-24 18:25:02 -07:00
2026-07-24 18:25:02 -07:00
2026-07-24 18:25:02 -07:00
2026-07-24 18:25:02 -07:00
2026-07-24 18:25:02 -07:00
2026-05-22 13:26:26 +02:00
2026-08-07 23:43:49 +02:00
2026-08-09 19:38:46 +02:00
2026-07-08 11:49:56 -07:00
2026-05-21 15:45:36 +02:00
2026-05-01 17:40:22 +02:00
2026-07-20 16:37:33 -07:00
2026-07-29 10:41:22 -07:00
2026-08-01 19:55:02 -05:00
2026-08-01 19:55:02 -05:00
2026-08-01 15:35:34 -05:00
2026-06-24 13:52:37 +02:00
2026-08-01 15:35:34 -05:00
2026-06-24 13:52:37 +02:00
2026-05-02 10:24:31 +02:00
2026-08-10 19:12:11 +02:00
2026-08-09 12:30:47 +02:00
2026-05-25 20:28:22 +02:00
2026-08-09 12:30:47 +02:00
2026-07-15 18:23:40 -07:00
2026-07-26 15:27:06 -07:00
2026-06-29 11:28:32 -05:00
2026-07-23 17:05:29 -07:00
2026-07-22 17:25:28 -07:00
2026-08-09 12:30:47 +02:00
2026-07-24 12:25:20 -07:00
2026-06-29 13:45:11 -05:00
2026-07-24 12:25:20 -07:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-07-19 09:59:13 -07:00
2026-07-29 09:15:53 -07:00
2026-08-10 11:59:39 +02:00
2026-08-04 09:03:50 -07:00
2026-07-24 09:01:17 -07:00
2026-05-19 21:42:02 +02:00
2026-06-04 18:38:25 -04:00
2026-06-12 13:49:46 -04:00
2026-07-22 17:32:01 -07:00
2026-05-17 21:55:53 +02:00
2026-08-07 23:43:49 +02:00
2026-07-23 17:05:29 -07:00
2026-06-06 20:36:21 -04:00
2026-06-08 12:03:40 -04:00
2026-07-18 16:24:51 -07:00
2026-05-21 19:30:30 +02:00
2026-07-23 14:19:24 -07:00
2026-08-07 23:04:42 +02:00
2026-07-31 22:05:00 -05:00
2026-07-22 16:45:17 -07:00
2026-07-16 21:53:15 -07:00
2026-05-01 17:40:22 +02:00
2026-07-18 18:21:39 -07:00
2026-05-06 12:58:55 +02:00
2026-08-01 19:55:02 -05:00
2026-05-14 16:34:21 -04:00
2026-05-01 17:40:22 +02:00
2026-07-25 08:46:39 -07:00
2026-05-11 13:01:45 +02:00
2026-06-04 18:37:32 -04:00
2026-05-01 17:40:22 +02:00
2026-05-15 11:03:21 +02:00
2026-07-18 10:08:43 -07:00
2026-05-07 10:33:12 +02:00
2026-05-07 10:34:28 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-05-07 12:10:45 +02:00
2026-07-23 13:51:07 -07:00
2026-05-08 21:07:51 +02:00
2026-05-01 17:40:22 +02:00
2026-08-07 23:59:50 +02:00
2026-05-21 19:30:30 +02:00
2026-08-09 21:54:01 +02:00
2026-05-01 17:40:22 +02:00
2026-07-18 10:08:43 -07:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-07-18 12:31:25 -07:00
2026-07-20 08:09:07 -07:00
2026-07-23 13:51:07 -07:00
2026-05-01 17:40:22 +02:00
2026-05-25 20:28:39 +02:00
2026-05-03 15:58:32 +02:00
2026-05-03 15:58:32 +02:00
2026-05-11 10:40:26 -04:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-07-23 16:33:12 -07:00
2026-07-17 10:20:08 -07:00
2026-07-24 12:28:55 -07:00
2026-07-02 22:14:33 -07:00
2026-05-01 17:40:22 +02:00
2026-08-01 15:35:34 -05:00
2026-07-24 12:28:55 -07:00
2026-07-24 12:28:55 -07:00
2026-07-24 12:28:55 -07:00
2026-08-05 08:30:12 -05:00
2026-07-20 08:15:09 -07:00
2026-08-01 22:12:01 -05:00
2026-05-17 19:51:29 +02:00
2026-05-11 10:40:26 -04:00
2026-05-11 10:40:26 -04:00
2026-07-16 21:19:28 -07:00
2026-05-01 17:40:22 +02:00
2026-05-11 10:40:26 -04:00
2026-05-10 11:26:59 +02:00
2026-05-29 15:59:13 +02:00
2026-05-11 10:40:26 -04:00
2026-05-23 13:37:57 +02:00
2026-07-23 21:03:43 -07:00
2026-08-04 12:16:54 -05:00
2026-05-14 17:43:12 -04:00
2026-08-01 12:44:40 -07:00
2026-07-22 17:25:28 -07:00
2026-05-04 13:23:27 +02:00
2026-06-04 11:15:28 +02:00
2026-05-01 17:40:22 +02:00
2026-05-04 13:23:27 +02:00
2026-08-04 12:16:54 -05:00
2026-06-09 19:48:37 -04:00
2026-08-04 12:16:54 -05:00
2026-08-04 12:16:54 -05:00
2026-05-14 17:43:12 -04:00
2026-06-24 13:31:17 +02:00
2026-05-27 11:15:21 +02:00
2026-05-27 11:15:21 +02:00
2026-08-04 12:16:54 -05:00
2026-05-04 13:23:27 +02:00
2026-07-18 12:30:54 -07:00
2026-08-04 12:16:54 -05:00
2026-05-27 11:15:21 +02:00
2026-05-27 11:15:21 +02:00
2026-05-25 17:29:02 +02:00
2026-07-29 22:39:55 -04:00
2026-08-05 22:57:56 +02:00
2026-05-27 10:53:30 +02:00
2026-05-25 18:19:06 +02:00
2026-05-25 18:12:40 +02:00
2026-06-04 18:37:32 -04:00
2026-07-29 22:39:55 -04:00
2026-05-15 17:44:09 +02:00
2026-06-23 16:22:27 +02:00
2026-06-23 16:22:27 +02:00
2026-07-22 16:10:45 -07:00
2026-08-08 11:05:05 +02:00
2026-08-04 10:04:26 -07:00
2026-05-21 19:30:30 +02:00
2026-07-29 17:15:27 -04:00
2026-05-19 17:08:14 +02:00
2026-05-22 14:24:04 +02:00
2026-07-20 09:44:48 -07:00
2026-05-14 13:15:03 +02:00
2026-05-14 11:12:25 +02:00
2026-05-11 10:40:26 -04:00
2026-08-08 11:05:05 +02:00
2026-05-01 17:40:22 +02:00
2026-08-10 11:59:39 +02:00
2026-08-09 12:59:32 +02:00
2026-05-25 18:19:06 +02:00
2026-05-25 18:12:40 +02:00
2026-05-14 10:56:10 +02:00
2026-08-10 18:44:19 +02:00
2026-05-14 10:57:44 +02:00
2026-08-08 11:05:05 +02:00
2026-05-01 17:40:22 +02:00
2026-05-23 04:32:20 -04:00
2026-05-20 14:09:09 +02:00
2026-05-20 14:12:06 +02:00
2026-05-29 15:25:21 +02:00
2026-05-19 20:54:20 +02:00
2026-08-10 18:44:19 +02:00
2026-06-24 13:49:22 +02:00
2026-05-19 20:54:20 +02:00
2026-07-27 15:32:56 -07:00
2026-08-07 02:38:06 -07:00
2026-08-07 02:38:06 -07:00
2026-07-02 22:14:33 -07:00
2026-06-29 08:51:15 -05:00
2026-07-19 10:00:46 -07:00
2026-07-26 14:53:29 -07:00
2026-08-09 12:30:47 +02:00
2026-08-08 04:01:02 -07:00
2026-08-01 15:35:34 -05:00
2026-07-30 10:11:23 -04:00
2026-07-31 17:18:42 -04:00
2026-08-07 12:50:04 +02:00
2026-07-22 15:52:58 -07:00
2026-06-28 20:11:21 -04:00
2026-05-14 12:02:53 +02:00
2026-05-20 14:24:19 +02:00
2026-08-09 12:30:47 +02:00
2026-05-14 12:02:53 +02:00
2026-07-26 14:53:29 -07:00
2026-07-07 09:18:03 -07:00
2026-07-24 16:48:14 -07:00
2026-06-04 18:35:01 -04:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-07-18 12:31:03 -07:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-07-29 22:39:55 -04:00
2026-07-29 22:39:55 -04:00
2026-08-01 13:13:39 -05:00
2026-07-29 21:34:47 -04:00
2026-07-29 22:39:55 -04:00
2026-07-29 21:34:47 -04:00
2026-07-29 22:39:55 -04:00
2026-07-29 21:34:47 -04:00
2026-07-29 21:34:47 -04:00
2026-07-24 12:19:39 -07:00
2026-07-24 12:19:39 -07:00
2026-07-18 10:08:43 -07:00
2026-07-24 12:20:04 -07:00
2026-07-29 19:45:43 -07:00
2026-07-24 12:19:39 -07:00
2026-07-24 12:19:39 -07:00
2026-06-29 10:49:43 -05:00
2026-07-19 09:33:23 -07:00
2026-07-19 21:29:15 -07:00
2026-07-19 21:29:15 -07:00
2026-08-09 22:01:35 +02:00
2026-08-10 09:31:44 -07:00
2026-08-09 22:01:35 +02:00
2026-06-04 18:37:32 -04:00
2026-08-01 12:44:40 -07:00
2026-06-22 18:30:16 +02:00
2026-08-09 13:57:36 +02:00
2026-06-16 01:25:04 -04:00
2026-05-01 17:40:22 +02:00
2026-08-09 13:17:28 +02:00
2026-06-04 18:38:25 -04:00
2026-07-18 10:08:43 -07:00
2026-07-18 10:08:43 -07:00
2026-07-16 21:15:00 -07:00
2026-05-01 17:40:22 +02:00
2026-06-04 18:37:32 -04:00
2026-06-04 18:38:25 -04:00
2026-06-04 18:38:25 -04:00
2026-05-23 18:04:21 +02:00
2026-07-24 09:01:17 -07:00
2026-05-01 17:40:22 +02:00
2026-06-29 14:49:39 -05:00
2026-07-18 10:08:43 -07:00
2026-05-04 11:18:25 +02:00
2026-05-04 10:31:06 +02:00
2026-05-04 08:57:19 +02:00
2026-07-18 12:30:54 -07:00
2026-05-04 08:57:19 +02:00
2026-05-04 09:57:13 +02:00
2026-05-27 11:15:21 +02:00
2026-07-18 10:08:43 -07:00
2026-08-01 19:52:04 -07:00
2026-05-08 20:52:29 +02:00
2026-07-26 12:31:04 -07:00
2026-07-18 16:09:03 -07:00
2026-05-25 17:29:02 +02:00
2026-07-29 22:39:55 -04:00
2026-05-16 13:00:30 +02:00
2026-07-29 22:39:55 -04:00
2026-05-01 17:40:22 +02:00
2026-05-22 13:26:46 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-07-20 09:44:48 -07:00
2026-05-05 12:53:51 +02:00
2026-08-09 13:57:36 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-08-09 12:59:32 +02:00
2026-05-01 17:40:22 +02:00
2026-07-23 17:40:47 -07:00
2026-05-05 14:22:03 +02:00
2026-05-21 10:19:36 +02:00
2026-07-27 09:49:15 -07:00
2026-08-10 13:59:20 +02:00
2026-08-09 13:17:28 +02:00
2026-08-09 21:54:21 +02:00
2026-07-24 12:22:36 -07:00
2026-05-08 20:52:29 +02:00
2026-08-09 21:54:01 +02:00
2026-07-24 12:25:20 -07:00
2026-08-09 21:54:21 +02:00
2026-07-27 15:32:56 -07:00
2026-07-24 12:16:51 -07:00
2026-05-01 17:40:22 +02:00
2026-06-04 18:34:04 -04:00
2026-08-08 02:31:23 -07:00
2026-05-06 13:20:34 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-08-10 17:41:05 +02:00
2026-08-10 17:41:05 +02:00
2026-07-25 12:35:17 -07:00
2026-07-18 10:08:43 -07:00
2026-07-24 16:48:14 -07:00
2026-07-24 16:48:14 -07:00
2026-07-24 16:48:14 -07:00
2026-07-25 12:35:17 -07:00
2026-07-29 23:21:45 -04:00
2026-05-21 11:58:43 +02:00
2026-06-22 21:48:35 +02:00
2026-08-09 12:30:47 +02:00
2026-07-26 19:07:11 -07:00
2026-06-09 19:48:37 -04:00
2026-06-09 19:48:37 -04:00
2026-06-09 19:48:37 -04:00
2026-08-01 18:13:45 -07:00
2026-06-09 19:48:37 -04:00
2026-06-09 19:48:37 -04:00
2026-08-04 13:26:26 -05:00
2026-07-18 16:24:51 -07:00
2026-07-24 12:24:09 -07:00
2026-07-24 12:19:39 -07:00
2026-05-03 19:36:50 +02:00
2026-07-24 12:24:09 -07:00
2026-07-03 09:06:31 -07:00
2026-06-09 19:48:37 -04:00
2026-06-09 19:48:37 -04:00
2026-08-01 12:44:40 -07:00
2026-07-19 19:05:42 -07:00
2026-08-01 13:06:19 -05:00
2026-06-09 19:48:37 -04:00
2026-07-03 09:06:31 -07:00
2026-05-06 13:20:34 +02:00
2026-06-09 19:48:37 -04:00
2026-06-09 19:48:37 -04:00
2026-06-09 19:48:37 -04:00
2026-06-09 19:48:37 -04:00
2026-07-03 09:06:31 -07:00
2026-07-15 18:13:39 -07:00
2026-06-09 19:48:37 -04:00
2026-06-09 19:48:37 -04:00
2026-05-01 17:40:22 +02:00
2026-06-04 11:14:04 +02:00
2026-06-04 11:14:04 +02:00
2026-05-01 17:40:22 +02:00
2026-07-18 10:08:43 -07:00
2026-07-21 15:25:49 -07:00
2026-07-24 12:18:25 -07:00
2026-07-21 16:01:49 -07:00
2026-07-19 22:46:27 -07:00
2026-07-24 12:17:16 -07:00
2026-07-24 12:17:16 -07:00
2026-07-24 12:18:25 -07:00
2026-07-24 12:18:25 -07:00
2026-07-22 16:39:00 -07:00
2026-07-02 22:09:14 -07:00
2026-06-04 18:37:32 -04:00
2026-06-28 20:46:23 -04:00
2026-07-18 10:08:43 -07:00
2026-08-07 18:44:37 +02:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-07-23 15:28:32 -07:00
2026-08-08 02:35:44 -07:00
2026-07-23 15:28:32 -07:00
2026-05-01 17:40:22 +02:00
2026-05-08 20:48:36 +02:00
2026-07-29 20:04:49 -07:00
2026-08-08 03:12:08 -07:00
2026-06-04 18:38:25 -04:00
2026-06-04 18:38:25 -04:00
2026-07-29 18:47:27 -04:00
2026-08-08 01:44:56 -07:00
2026-07-29 20:04:49 -07:00
2026-08-10 03:45:49 -07:00
2026-07-27 15:50:28 -07:00
2026-07-29 19:26:26 -07:00
2026-05-01 17:40:22 +02:00
2026-06-04 18:38:25 -04:00
2026-08-08 10:16:41 +02:00
2026-07-18 10:08:43 -07:00
2026-07-29 09:15:53 -07:00
2026-06-04 18:38:25 -04:00
2026-06-29 11:28:32 -05:00
2026-05-01 17:40:22 +02:00
2026-05-29 14:36:26 -04:00
2026-07-22 21:39:15 -07:00
2026-05-14 16:33:51 -04:00
2026-07-22 21:39:15 -07:00
2026-05-16 21:01:09 +02:00
2026-08-05 17:43:14 +02:00
2026-07-16 14:46:56 -07:00
2026-07-16 14:46:56 -07:00
2026-05-01 17:40:22 +02:00
2026-05-01 17:40:22 +02:00
2026-07-22 17:02:52 -07:00
2026-06-28 20:46:23 -04:00
2026-07-18 10:08:43 -07:00
2026-07-29 19:26:26 -07:00