Files
wayscriber/Cargo.toml
T

113 lines
3.7 KiB
TOML

[package]
name = "wayscriber"
version = "0.9.27"
edition = "2024"
rust-version = "1.98.1"
description = "Screen annotation tool for Wayland compositors"
homepage = "https://wayscriber.com"
repository = "https://github.com/devmobasa/wayscriber"
default-run = "wayscriber"
[workspace]
members = ["configurator"]
default-members = ["."]
[workspace.lints.clippy]
cognitive_complexity = "warn"
# Rules from the Google Rust style guide that Clippy can check. CI promotes
# these warnings to errors; clippy.toml holds their settings.
absolute_paths = "warn"
enum_glob_use = "warn"
fn_params_excessive_bools = "warn"
missing_assert_message = "warn"
missing_panics_doc = "warn"
must_use_candidate = "warn"
needless_for_each = "warn"
needless_pass_by_value = "warn"
redundant_clone = "warn"
ref_option = "warn"
return_self_not_must_use = "warn"
string_add = "warn"
undocumented_unsafe_blocks = "warn"
unnecessary_safety_comment = "warn"
unwrap_used = "warn"
wildcard_imports = "warn"
[lints]
workspace = true
[dependencies]
# Wayland
wayland-client = "0.31"
wayland-protocols = { version = "0.32", features = ["client", "staging", "unstable"] }
wayland-protocols-wlr = { version = "0.3", features = ["client"] }
smithay-client-toolkit = { version = "0.20", default-features = false, features = ["calloop", "xkbcommon"] }
# Cairo for drawing
cairo-rs = { version = "0.22", features = ["png", "pdf"] }
# Already required by Cairo/Pango; protocol v2 also uses its SHA-256 checksum API.
glib = { version = "0.22", default-features = false }
# Pango for advanced text rendering and font support
pango = "0.22"
pangocairo = "0.22"
# Utils
log = { version = "0.4", features = ["std"] }
anyhow = "1.0"
toml = "1.1"
toml_edit = "0.25"
serde = { version = "1.0", features = ["derive"] }
serde_ignored = "0.1"
schemars = { version = "1.2", features = ["derive"], optional = true }
libc = "0.2"
# Securely created, self-deleting temporary files for the OCR engine handoff.
tempfile = "3"
flate2 = "1.0"
zune-jpeg = "0.5"
# Grapheme/word segmentation for the text-editor caret and selection.
unicode-segmentation = "1"
# Daemon mode
ksni = { version = "0.3", optional = true }
tokio = { version = "1.0", features = ["rt-multi-thread", "macros", "time", "sync"] }
# Screenshot capture
zbus = { version = "5.0", optional = true, default-features = false, features = ["tokio"] }
getrandom = { version = "0.3", optional = true }
serde_json = "1.0"
png = "0.18"
# GTK4 toolbar frontend (layer-shell compositors)
gtk4 = { version = "0.11", optional = true, features = ["v4_12"] }
gtk4-layer-shell = { version = "0.8", optional = true }
# System-wide input capture for the input HUD (opt-in `input-monitor`)
input = { version = "0.10", optional = true }
udev = { version = "0.9", optional = true }
xkbcommon = { version = "0.8", optional = true }
[build-dependencies]
[features]
# Optional Wayland tablet/stylus input support (zwp_tablet_v2)
tablet-input = []
# D-Bus dependent functionality (portal capture, notifications, tray)
dbus = ["zbus"]
portal = ["dbus", "dep:getrandom"]
tray = ["dbus", "ksni"]
config-schema = ["dep:schemars"]
# GTK4-rendered toolbars on layer-shell compositors; the built-in Cairo
# toolbars remain compiled in as the fallback for everything else.
toolbar-gtk = ["dep:gtk4", "dep:gtk4-layer-shell"]
# System-wide keystroke/click capture for the input HUD. Opt-in: it links
# libinput/libudev and needs read access to /dev/input (usually `input` group
# membership), so it stays out of the default set.
input-monitor = ["dep:input", "dep:udev", "dep:xkbcommon"]
default = ["tablet-input", "portal", "tray", "toolbar-gtk"]
[[bin]]
name = "dump_config_schema"
path = "src/bin/dump_config_schema.rs"
required-features = ["config-schema"]