pixelactions 0.2.0

Execute desktop interactions from pixelcoords sessions: resolve a labeled region, act at the verified point, confirm it landed
[package]
name = "pixelactions"
description = "Execute desktop interactions from pixelcoords sessions: resolve a labeled region, act at the verified point, confirm it landed"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
readme.workspace = true
authors.workspace = true
homepage.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true

[dependencies]
pixelactions-core = { path = "../pixelactions-core", version = "0.2.0" }
pixelcoords-core = "0.2"
anyhow = "1"
clap = { version = "4", features = ["derive"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
enigo = "0.6"

# Wayland input is a negotiation with the compositor, not a library call,
# so the Linux platform layer owns the protocols directly. Each of these
# is here because nothing already in the tree does the job:
#
# - zbus: the portal handshake is D-Bus. Its blocking API is what keeps
#   AGENTS.md's "no async runtime" rule intact; ashpd is async-only.
# - reis: pure-Rust libei. Its core is synchronous and it forbids unsafe.
#   enigo's own libei path is feature-gated for bugs and GNOME-46-only,
#   and abstracts away the region geometry this tool exists to be exact
#   about (design/02 ยง5 recommends owning this layer directly).
# - xkbcommon: an EI keyboard carries the compositor's keymap, and typing
#   a character means finding it in that keymap. Already in the tree via
#   enigo; named here because this crate calls it directly. The `wayland`
#   feature is what reads a keymap from an fd, and is stated rather than
#   inherited so a future default change cannot silently remove it.
#   Needs libxkbcommon-dev to link, which CI already installs.
[target.'cfg(target_os = "linux")'.dependencies]
zbus = "5"
reis = "0.7"
xkbcommon = { version = "0.9", features = ["wayland"] }

[lints]
workspace = true