#!/usr/bin/env bash set -e set -o nounset set -o pipefail SCRIPTS=${SCRIPTS:-$HOME/.local/scripts} THIS_FILE=${BASH_SOURCE[0]} LOG_LABEL=$(basename "$THIS_FILE") THIS=${THIS:-$LOG_LABEL} LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"} usage() { cat < FLAGS: -a | --active: Select action to perform on active window. -h | --help: Show this page. EOF } # Logging utility function, use in place of echo. log() { logging log --source "$THIS_FILE" "$@" } handle_selected_value() { local selection="" read -r selection if [[ -z $selection ]]; then log "No selected value." return 1 fi log "Prompting for action, window: '$selection'" local res=$(echo "$selection" | "$SCRIPTS/hypr/utils/windows/window-action-picker" --show-back) log "Action callback result: $res" echo "$res" } prompt_for_window_selection() { local selected_value=$("$SCRIPTS/hypr/window-picker") local status=$? if [[ $status -ne 0 ]]; then exit $status fi echo "$selected_value" } ################################################################################ # MAIN ################################################################################ # Setup logging file and label. source "$SCRIPTS/hypr/logging" setup-logging $LOG_FILE $LOG_LABEL should_quit="0" address="" log "Starting $THIS..." while [[ $# -gt 0 ]]; do if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then usage && exit 0 elif [[ $1 == "-a" ]] || [[ $1 == "--active" ]]; then address=$(hyprctl activewindow -j | jq -r '.address') elif [[ -n $1 ]]; then address=$1 fi shift done trap 'log "Stoping..."; should_quit="1"' SIGINT while [[ $should_quit -eq 0 ]]; do if [[ -n $address ]]; then res=$(echo $address | handle_selected_value) else res=$(prompt_for_window_selection | handle_selected_value) fi if [[ ! $res =~ ^back ]]; then should_quit=1 elif [[ $res == "back:close" ]]; then sleep 0.3 # allow time for windows close, to prevent showing closed windows. fi log "Should quit: $should_quit" done