Go to file
jess ab23a4a885 same shit- windows 2026-04-22 18:11:33 -07:00
include Windows - dot net for shell 2026-04-22 17:58:58 -07:00
resources Init 2026-04-22 15:40:20 -07:00
scripts Init 2026-04-22 15:40:20 -07:00
shell/windows/LayersShell same shit- windows 2026-04-22 18:11:33 -07:00
src Windows - dot net for shell 2026-04-22 17:58:58 -07:00
.gitignore Windows - dot net for shell 2026-04-22 17:58:58 -07:00
Cargo.toml Windows - dot net for shell 2026-04-22 17:58:58 -07:00
Info.plist Init 2026-04-22 15:40:20 -07:00
LICENCE Init 2026-04-22 15:40:20 -07:00
README.md Windows - dot net for shell 2026-04-22 17:58:58 -07:00
build-linux.sh Windows - dot net for shell 2026-04-22 17:58:58 -07:00
build.bat Windows - dot net for shell 2026-04-22 17:58:58 -07:00
install.bat Fixed windows plugin dir 2026-04-22 17:27:56 -07:00
plugin.json.in Windows - dot net for shell 2026-04-22 17:58:58 -07:00

README.md

Layers

A Photoshop-style logical-layer panel for KiCad 10. Group items into named logical layers, hide them as a unit, rename/colour/lock/annotate, run set ops (merge/subtract/intersect), snap to grid, snapshot and restore — all live against an open pcbnew session over KiCad's IPC API.

Rendering of in-panel board previews is powered by Siphon, a pure-Rust KiCad-board-to-vectors crate. No shell-outs, no kicad-cli.

Install

Every platform installs into KiCad 10's 3rd-party plugin directory. After install, open KiCad's Plugin and Content Manager and rescan, or relaunch KiCad; the Layers toolbar button appears in pcbnew.

macOS

Requires Xcode Command-Line Tools, Rust (rustup), and rsvg-convert (optional; only used to regenerate icons from resources/Layers.svg).

git clone https://git.else-if.org/jess/Layers
cd Layers
./scripts/install.sh

Installs to ~/Documents/KiCad/10.0/plugins/com.jesshunter.layers/.

Windows (10 / 11, ARM64 or x86_64)

The Windows shell is a WinUI 3 (.NET 8) app that hosts the Rust renderer through a SwapChainPanel. The Rust side builds as a cdylib via MSYS2 + MinGW — no full Visual Studio Build Tools required. Both ARM64 and x86_64 hosts work the same way.

1. Install MSYS2

Download and run the installer from https://www.msys2.org. Accept the defaults (C:\msys64). When it finishes, launch the MSYS2 shell it drops on your Start menu.

2. Install the toolchain for your CPU

In the MSYS2 shell:

# ARM64 (Snapdragon X, Surface Pro 11, etc.)
pacman -Syu
pacman -S --needed \
    mingw-w64-clang-aarch64-toolchain \
    mingw-w64-clang-aarch64-cmake \
    mingw-w64-clang-aarch64-ninja \
    git

# x86_64 (Intel / AMD)
pacman -Syu
pacman -S --needed \
    mingw-w64-ucrt-x86_64-toolchain \
    mingw-w64-ucrt-x86_64-cmake \
    mingw-w64-ucrt-x86_64-ninja \
    git

(You can close + reopen the shell after the first pacman -Syu if it asks you to.)

3. Install Rust + the GNU target

In PowerShell (not MSYS2):

# Install rustup
winget install --id Rustlang.Rustup
# or: irm https://win.rustup.rs/x86_64 | iex

# After rustup finishes, add the matching GNU target:
#   ARM64:
rustup target add aarch64-pc-windows-gnullvm
#   x86_64:
rustup target add x86_64-pc-windows-gnu

4. Add MinGW to your user PATH

Rust's GNU target calls out to the MinGW linker, so that directory needs to be on PATH. Run this once in PowerShell (elevated shell not required):

# ARM64
[Environment]::SetEnvironmentVariable(
  "Path",
  [Environment]::GetEnvironmentVariable("Path", "User") + ";C:\msys64\clangarm64\bin",
  "User"
)

# x86_64
[Environment]::SetEnvironmentVariable(
  "Path",
  [Environment]::GetEnvironmentVariable("Path", "User") + ";C:\msys64\ucrt64\bin",
  "User"
)

Close and reopen every PowerShell / cmd window after this so they pick up the change.

5. Install .NET 8 SDK + Windows App SDK workload

In PowerShell:

winget install Microsoft.DotNet.SDK.8

The Windows App SDK is pulled in automatically via NuGet when the shell builds — no extra workload install needed.

6. Build + install

git clone https://git.else-if.org/jess/Layers
cd Layers
install.bat

Installs to %USERPROFILE%\Documents\KiCad\10.0\plugins\com.jesshunter.layers\ (or the OneDrive-redirected equivalent).

Runtime requirement on the target machine: .NET 8 Desktop Runtime. winget install Microsoft.DotNet.DesktopRuntime.8 — the installer's ~100 MB and common on modern Windows boxes.

Optional: winget install GNOME.librsvg gives you rsvg-convert for regenerating icons from resources/Layers.svg. Not required to build.

Linux — Debian / Ubuntu / Pop!_OS (apt)

sudo apt update
sudo apt install -y \
    build-essential pkg-config curl git \
    libgtk-3-dev libxkbcommon-dev libwayland-dev \
    libvulkan-dev mesa-vulkan-drivers \
    librsvg2-bin
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"

git clone https://git.else-if.org/jess/Layers
cd Layers
./scripts/install-linux.sh

Installs to ~/.local/share/kicad/10.0/3rdparty/plugins/com.jesshunter.layers/.

Linux — Arch / Manjaro (pacman)

sudo pacman -Syu --needed \
    base-devel pkgconf curl git \
    gtk3 libxkbcommon wayland \
    vulkan-icd-loader vulkan-headers \
    librsvg
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"

git clone https://git.else-if.org/jess/Layers
cd Layers
./scripts/install-linux.sh

Installs to ~/.local/share/kicad/10.0/3rdparty/plugins/com.jesshunter.layers/.

Configuration

resources/colors.toml in the installed plugin directory controls every UI colour and the window-fade alphas. Edit to taste and restart the plugin to pick up the change.

The plugin writes settings and state to:

Platform Path
macOS ~/Library/Application Support/com.jesshunter.layers/
Linux $XDG_DATA_HOME/com.jesshunter.layers/ (typically ~/.local/share/com.jesshunter.layers/)
Windows %APPDATA%\com.jesshunter.layers\

Licence

Unlicensed — see LICENCE.

Written by pszsh.