initial commit
This commit is contained in:
commit
90cff4f16a
59 changed files with 6855 additions and 0 deletions
103
KiCad/Scripts/kicad-launch.sh
Normal file
103
KiCad/Scripts/kicad-launch.sh
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
#!/usr/bin/env bash
|
||||
# Launch KiCad with managed window layout
|
||||
# Usage: kicad-launch <project.kicad_pro>
|
||||
# Supports both Hyprland (Wayland) and dwm (X11)
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# ==============================================================================
|
||||
# Environment Detection
|
||||
# ==============================================================================
|
||||
if [[ -n "${HYPRLAND_INSTANCE_SIGNATURE:-}" ]]; then
|
||||
WM="hyprland"
|
||||
else
|
||||
WM="dwm"
|
||||
fi
|
||||
|
||||
# ==============================================================================
|
||||
# Main
|
||||
# ==============================================================================
|
||||
PROJECT="${1:-}"
|
||||
if [[ -z "$PROJECT" ]]; then
|
||||
echo "Usage: kicad-launch <project.kicad_pro>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PROJECT_NAME=$(basename "$PROJECT" .kicad_pro)
|
||||
|
||||
if [[ "$WM" == "hyprland" ]]; then
|
||||
# Hyprland: Use special workspace for PM
|
||||
hyprctl dispatch workspace 102
|
||||
hyprctl dispatch togglespecialworkspace kicad-pm
|
||||
hyprctl dispatch exec "[workspace special:kicad-pm silent]" -- env GDK_BACKEND=x11 kicad "$PROJECT"
|
||||
|
||||
# Wait for project manager window
|
||||
PM_ADDR=""
|
||||
for i in {1..50}; do
|
||||
PM_ADDR=$(hyprctl clients -j | jq -r --arg name "$PROJECT_NAME" \
|
||||
'.[] | select(.class == "KiCad" and (.title | test($name))) | .address' 2>/dev/null | head -1)
|
||||
[[ -n "$PM_ADDR" ]] && break
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
if [[ -z "$PM_ADDR" ]]; then
|
||||
hyprctl dispatch togglespecialworkspace kicad-pm
|
||||
echo "Failed to find KiCad project manager window"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Focus PM and open PCB editor
|
||||
hyprctl dispatch focuswindow "address:$PM_ADDR"
|
||||
sleep 0.25
|
||||
xdotool key ctrl+p
|
||||
sleep 0.25
|
||||
|
||||
# Hide special workspace
|
||||
hyprctl dispatch togglespecialworkspace kicad-pm
|
||||
|
||||
# Focus PCB editor and open schematic
|
||||
sleep 2
|
||||
hyprctl dispatch workspace 101
|
||||
sleep 0.25
|
||||
xdotool key ctrl+e
|
||||
sleep 0.25
|
||||
|
||||
# Switch to KiCad workspaces
|
||||
hyprctl dispatch workspace 101
|
||||
hyprctl dispatch workspace 102
|
||||
|
||||
else
|
||||
# dwm: Launch KiCad, window rules handle placement
|
||||
# Tag 16 = kicad-pm, Tag 17 = kicad (sch/pcb), Tag 18 = kicad-aux (mobile)
|
||||
|
||||
# Detect profile
|
||||
PROFILE=$(autorandr --detected 2>/dev/null || echo "mobile")
|
||||
|
||||
# Switch to PM tag and launch
|
||||
[[ "$PROFILE" != "mobile" ]] && echo "mon-sec" > /tmp/dwm.fifo
|
||||
echo "kicad-pm" > /tmp/dwm.fifo
|
||||
kicad "$PROJECT" &
|
||||
|
||||
# Wait for PM, open PCB editor
|
||||
sleep 1
|
||||
sleep 0.25
|
||||
xdotool key ctrl+p
|
||||
|
||||
# Wait for PCB Editor
|
||||
sleep 2
|
||||
[[ "$PROFILE" != "mobile" ]] && echo "mon-prim" > /tmp/dwm.fifo
|
||||
echo "kicad" > /tmp/dwm.fifo
|
||||
|
||||
if [[ "$PROFILE" == "mobile" ]]; then
|
||||
# Mobile: retag PCB to tag 18 (kicad-aux)
|
||||
# PCB landed on tag 17, focus it, retag to 18, follow
|
||||
xdotool search --name "PCB Editor" windowactivate --sync
|
||||
sleep 0.25
|
||||
echo "tag 18" > /tmp/dwm.fifo
|
||||
echo "kicad-aux" > /tmp/dwm.fifo
|
||||
fi
|
||||
|
||||
# Focus PCB Editor, open Schematic
|
||||
sleep 0.25
|
||||
xdotool key ctrl+e
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue