kitty:get_cwd: Use the match flag for performance

Instead of requesting the full tree as a JSON and extracting the focused
window with `jq`, use `kitten-@-ls`'s `--match` flag. This further
improves the performance.

Also remove the commented code using recursive descent because it is not
up-to-date anymore.
This commit is contained in:
2025-12-11 15:23:26 +01:00
parent b291163a80
commit 3a821d832b

View File

@@ -11,23 +11,10 @@ socket_path="${TMPDIR:-/tmp}/kitty.$USER/kitty${1:+-$1}.sock"
# NOTE: Unfortunately kitten-@-ls(1) is slow, so communicate with the socket
# directly.
# NOTE: the backticks are used for hacky line-continuation, taken from
# https://stackoverflow.com/a/7729087/2092762c9
printf '\eP@kitty-cmd{"cmd":"ls","version":[0,26,0]}\e\\' \
printf '\eP@kitty-cmd{%s,%s,%s}\e\\' \
'"cmd":"ls"' \
'"version":[0,26,0]' \
'"payload":{"match":"state:focused"}' \
| nc -U -q0 "$socket_path" \
| awk '{ print substr($0, 13, length($0) - 14) }' \
| jq -er ".data`
` | fromjson`
` | .[]`
` | select(.is_focused).tabs.[]`
` | select(.is_focused).windows.[]`
` | select(.is_focused).cwd"
# An alternative version that uses recursive descent to find focused objects
# that also have a `.cwd` key:
#
# | jq -er "..`
# ` | objects`
# ` | select(.is_focused)`
# ` | to_entries.[]`
# ` | select(.key == \"cwd\").value"
| jq -er ".data | fromjson | .[].tabs.[].windows.[].cwd"