From bac516d4463f034e0052ddd14e59542bc14aedef Mon Sep 17 00:00:00 2001 From: Michael Housh Date: Wed, 8 Oct 2025 11:46:07 -0400 Subject: [PATCH] feat: Fixes missing window-picker script that got deleted. --- .../scripts/hypr/utils/windows/window-picker | 91 +++++++++++++++++++ .../hypr/utils/windows/windowctl-picker | 2 +- 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100755 env/.local/scripts/hypr/utils/windows/window-picker diff --git a/env/.local/scripts/hypr/utils/windows/window-picker b/env/.local/scripts/hypr/utils/windows/window-picker new file mode 100755 index 0000000..fb524b4 --- /dev/null +++ b/env/.local/scripts/hypr/utils/windows/window-picker @@ -0,0 +1,91 @@ +#!/usr/bin/env bash + +set -e +set -o nounset +set -o pipefail + +SCRIPTS=${SCRIPTS:-$HOME/.local/scripts} +THIS=${THIS:-$(basename ${BASH_SOURCE[0]})} + +usage() { + cat < [FZF_OPTIONS] + +FLAGS: + -h | --help: Show this help page. + +NOTES: + +By default, we show a footer and header unless specifically passed in as extra arguments / options. +Any other options or arguments are passed directly to 'fzf'. + +EOF +} + +uses_supplied_footer="0" + +fzf_opts=() +rows=() +window_data=$(hyprctl clients -j | jq 'sort_by(.workspace.id)') + +footer() { + cat <<'EOF' + _ ___ __ +| | /| / (_)__ ___/ /__ _ _____ +| |/ |/ / / _ \/ _ / _ \ |/|/ (_-< +|__/|__/_/_//_/\_,_/\___/__,__/___/ +EOF +} + +generate_rows() { + + readarray -t addresses <<<"$(echo "$window_data" | jq -r '.[] | .address')" + readarray -t titles <<<$(echo "$window_data" | jq -r '.[] | .title') + + # Zip into rows. + for i in "${!addresses[@]}"; do + rows+=("${addresses[i]}|${titles[i]}") + done +} + +################################################################################ +# MAIN +################################################################################ + +while [[ $# -gt 0 ]]; do + if [[ $1 =~ ^--footer ]]; then + uses_supplied_footer="1" + fzf_opts+=("$1") + elif [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then + usage && exit 0 + else + fzf_opts+=("$1") + fi + shift +done + +if [[ $uses_supplied_footer == "0" ]]; then + fzf_opts+=("--footer=$(footer)") +fi + +generate_rows + +sel=$( + printf '%s\n' "${rows[@]}" | + fzf --style=full "${fzf_opts[@]}" \ + --preview-label='[ Window Stats ]' --delimiter='|' --with-nth=2 \ + --preview='$SCRIPTS/hypr/utils/fzf/preview-stats window {1}' +) +status=$? + +[[ -z $sel ]] && exit 1 + +# revove everything but the address portion. +sel=${sel%%|*} +echo "$sel" +exit $status diff --git a/env/.local/scripts/hypr/utils/windows/windowctl-picker b/env/.local/scripts/hypr/utils/windows/windowctl-picker index 0716ca9..fb961c6 100755 --- a/env/.local/scripts/hypr/utils/windows/windowctl-picker +++ b/env/.local/scripts/hypr/utils/windows/windowctl-picker @@ -50,7 +50,7 @@ handle_selected_value() { } prompt_for_window_selection() { - local selected_value=$("$SCRIPTS/hypr/window-picker") + local selected_value=$("$SCRIPTS/hypr/utils/windows/window-picker") local status=$? if [[ $status -ne 0 ]]; then exit $status