NixOS/KiCad/Scripts/kicad-cycle.sh
2026-03-30 13:10:42 +07:00

44 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# Cycle through KiCad windows/projects
# Usage: kicad-cycle [f|b] (forward/backward, default: f)
# Supports both Hyprland (Wayland) and dwm (X11)
DIRECTION="${1:-f}"
# ==============================================================================
# Environment Detection
# ==============================================================================
if [[ -n "${HYPRLAND_INSTANCE_SIGNATURE:-}" ]]; then
WM="hyprland"
else
WM="dwm"
fi
# ==============================================================================
# Main
# ==============================================================================
if [[ "$WM" == "hyprland" ]]; then
# Hyprland: Cycle through groups on both workspaces
hyprctl dispatch workspace 101
hyprctl dispatch changegroupactive "$DIRECTION"
hyprctl dispatch workspace 102
hyprctl dispatch changegroupactive "$DIRECTION"
else
# Ensure we're on kicad tag on both monitors first
kicad-show
# Determine focus direction
FOCUS_CMD="focus-next"
[[ "$DIRECTION" == "b" ]] && FOCUS_CMD="focus-prev"
if [[ $(autorandr --detected) != "mobile" ]]; then
# Multi-monitor: cycle on both monitors
echo "mon-prim" > /tmp/dwm.fifo
echo "$FOCUS_CMD" > /tmp/dwm.fifo
echo "mon-sec" > /tmp/dwm.fifo
echo "$FOCUS_CMD" > /tmp/dwm.fifo
else
# Single monitor: just cycle windows
echo "$FOCUS_CMD" > /tmp/dwm.fifo
fi
fi