# SPDX-FileCopyrightText: 2026 fuddlesworth
# SPDX-License-Identifier: GPL-3.0-or-later
#
# Requires Plasma 6.7+ (KF6 6.26, Qt 6.10, KWin 6.7).
#
# Build-Depends carry alternatives because the same control file feeds three
# targets and they disagree on binary package names. Only the Debian spellings
# are covered by CI, which builds this package on testing and unstable. The
# other two are kept for anyone building by hand there, and cost nothing:
#   - Debian testing/unstable: `qt6-shadertools-dev`, `qt6-svg-dev`,
#     `libkf6colorscheme-dev`, and notably `libkirigami-dev` and
#     `libplasmaactivities-dev`, which carry neither a `kf6-` nor a `libkf6-`
#     prefix. Verified against sid on 2026-08-28. The last two exist under no
#     other name there, so dropping them makes the OBS Debian build
#     unresolvable rather than failing loudly.
#   - KDE Neon (Ubuntu-based): `kf6-kcolorscheme-dev`, `kf6-kirigami-dev`
#   - Ubuntu proper:           `libqt6shadertools6-dev`, `libqt6svg6-dev`
# An alternative that does not exist on a given target is simply skipped, so
# listing every spelling is safe everywhere. The order within Build-Depends
# does not rank the targets. apt takes the first alternative it can satisfy,
# and every spelling in one of these fields carries the same version floor as
# its siblings, so any of them is an acceptable answer wherever it exists.
# That symmetry is a property of Build-Depends only. Some of the runtime
# Depends below version only their first alternative, where which one resolves
# does change what you get.
#
# A `#` comment may sit inside a field, on its own line and at column 0, which
# is the only form dpkg strips. packaging/obs/generate-dsc.sh skips that form
# when it re-parses Build-Depends into the OBS .dsc, and skips an indented one
# too, which dpkg would instead read as part of the field's value. Neither
# accepts a comment trailing a dependency on the same line (`cmake, # why`).
# generate-dsc.sh rejects that outright rather than folding it into the .dsc as
# a bogus token. Prefer column 0 for a comment inside a field. The indented form
# is only safe on the generator side, since dpkg keeps it and would then choke
# on it as a dependency, which at least fails loudly.
Source: plasmazones
Section: kde
Priority: optional
Maintainer: fuddlesworth <fuddlesworth@users.noreply.github.com>
Build-Depends:
 debhelper-compat (= 13),
 cmake (>= 3.16),
 ninja-build,
 extra-cmake-modules (>= 6.26.0),
 pkg-kde-tools,
 qt6-base-dev (>= 6.10.0),
 qt6-base-private-dev,
 qt6-declarative-dev,
# Debian ships QtQuick's private headers in their own package, which
# phosphor-animation needs for Qt6::QuickPrivate. Note there is no matching
# split for shadertools: qt6-shadertools-dev already carries the private
# headers that Qt6::ShaderToolsPrivate wants.
 qt6-declarative-private-dev,
 qt6-tools-dev,
 qt6-shadertools-dev | libqt6shadertools6-dev,
 qt6-svg-dev | libqt6svg6-dev,
 libkf6kcmutils-dev (>= 6.26.0),
 libkf6globalaccel-dev (>= 6.26.0),
 libkf6colorscheme-dev (>= 6.26.0) | kf6-kcolorscheme-dev (>= 6.26.0),
 libkf6kirigami-dev (>= 6.26.0) | kf6-kirigami-dev (>= 6.26.0) | libkirigami-dev (>= 6.26.0),
 kwin-dev (>= 6.7.0),
 libxkbcommon-dev,
 libwayland-dev,
# KWinConfig.cmake does find_dependency(Libdrm), so configuring the KWin
# effect needs libdrm's headers even though we never include them ourselves.
 libdrm-dev,
 libvulkan-dev,
 qt6-wayland-dev (>= 6.10.0),
 qt6-wayland-private-dev (>= 6.10.0),
 plasma-activities-dev | libplasmaactivities-dev,
Standards-Version: 4.6.2
Homepage: https://github.com/fuddlesworth/PlasmaZones
Vcs-Git: https://github.com/fuddlesworth/PlasmaZones.git
Vcs-Browser: https://github.com/fuddlesworth/PlasmaZones
Rules-Requires-Root: no

Package: plasmazones
Architecture: any
Depends:
 ${shlibs:Depends},
 ${misc:Depends},
# KWin: minimum version, NOT an exact pin. The kwin-effect plugin's IID embeds
# KWin's exact upstream version and KWin refuses to load an effect whose IID
# doesn't match (even across patch bumps, e.g. 6.7.0 -> 6.7.1). An exact pin,
# however, makes apt hold KWin back whenever a newer KWin lands before this
# package is rebuilt, stranding the desktop in a half-upgraded Plasma ("No
# KScreen backend found", black screen). A mismatched effect is harmless: KWin
# reads the IID from plugin metadata and never loads a non-matching effect, so
# the .so stays inert; only the drag overlay is missing until a rebuild. Core
# tiling runs in the daemon + layer-shell QPA plugin, independent of the effect.
 kwin-common (>= 6.7.0),
 qt6-wayland (>= 6.10.0),
 libqt6shadertools6 (>= 6.10.0) | qt6-shadertools,
 libkf6kirigami-bin (>= 6.26.0) | kf6-kirigami | qml6-module-org-kde-kirigami,
 libkf6kcmutils-bin (>= 6.26.0) | kcmutils6,
Recommends:
 systemd,
Suggests:
 plasma-activities-bin | plasma-activities,
 pci.ids,
Description: Window snapping, tiling and scrolling for KDE Plasma
 PlasmaZones is a window placement tool for KDE Plasma 6.7+. It gives every
 monitor one of three placement modes. Snapping drops windows into zones you
 drew, tiling places them automatically with a scripted algorithm, and
 scrolling arranges them as columns on an endless strip.
 .
 Features include:
  - Custom zone layout editor
  - Automatic tiling with a library of bundled Luau algorithms
  - Scrolling columns with width presets, tabs, and strip templates
  - KWin effect for visual feedback during window dragging
  - Keyboard navigation with rebindable shortcuts throughout
  - Per-application window rules
  - Per-monitor, per-desktop, and per-activity layouts and modes
  - GLSL shader overlays, decoration packs, and window animations
  - System Settings integration (KCM)
