rs-mrxvt/Cargo.toml

111 lines
3.1 KiB
TOML
Executable File

[package]
name = "rs-mrxvt"
version = "0.1.0"
edition = "2021"
rust-version = "1.75"
authors = ["rs-mrxvt contributors"]
license = "GPL-2.0-or-later"
description = "A modernized, distro-agnostic mrxvt-inspired terminal emulator written in Rust"
repository = "https://example.com/rs-mrxvt"
homepage = "https://example.com/rs-mrxvt"
keywords = ["terminal", "mrxvt", "tabs", "broadcasting", "tui"]
categories = ["command-line-utilities"]
readme = "README.md"
exclude = [
"/target",
"/scripts/stress_test.py",
"/docs",
]
[lib]
name = "mrxvt"
path = "src/lib.rs"
[[bin]]
name = "rs-mrxvt"
path = "src/main.rs"
[dependencies]
# --- Terminal emulation (pure Rust, no GUI deps) ---
alacritty_terminal = "0.26"
portable-pty = "0.9"
# --- TUI rendering (cross-platform, distro-agnostic; default backend) ---
ratatui = "0.29"
crossterm = "0.28"
# --- Async + concurrency ---
tokio = { version = "1", features = ["rt", "sync", "time", "macros", "io-util", "process", "fs"] }
crossbeam-channel = "0.5"
# --- Config + serialization ---
serde = { version = "1", features = ["derive"] }
toml = "0.8"
# --- Misc utilities ---
anyhow = "1"
libc = "0.2"
thiserror = "1"
log = "0.4"
env_logger = "0.11"
clap = { version = "4", features = ["derive", "env"] }
shellexpand = "3"
fuzzy-matcher = "0.3"
unicode-width = "0.2"
# --- GPU / software-rasterizer backend (opt-in via --features gpu) ---
# These pull in wgpu + winit + softbuffer + tiny-skia, which need Vulkan/Wayland/X11
# dev headers to compile. Gated behind a feature so the default build stays
# lightweight and works in any environment (SSH, headless, CI, etc.).
wgpu = { version = "22", optional = true }
winit = { version = "0.29", optional = true, features = ["wayland", "x11"] }
softbuffer = { version = "0.4", optional = true }
tiny-skia = { version = "0.11", optional = true }
ab_glyph = { version = "0.2", optional = true }
pollster = { version = "0.4", optional = true }
raw-window-handle = { version = "0.6", optional = true }
bytemuck = { version = "1", optional = true, features = ["derive"] }
# --- Lua config (opt-in via --features lua) ---
# Enables dynamic, programmable configuration via config.lua. Uses mlua with
# the vendored Lua 5.4 build so there's no system liblua dependency.
mlua = { version = "0.10", optional = true, features = ["lua54", "vendored"] }
# --- Sixel / image protocol (opt-in via --features images) ---
# Pulls in image decoders for Sixel and iTerm2 inline image support.
image = { version = "0.25", optional = true }
[features]
default = []
# Enable the wgpu + softbuffer backends. Requires libwayland-dev, libxkbcommon-dev,
# and libvulkan-dev (or their distro equivalents) at build time.
gpu = [
"dep:wgpu",
"dep:winit",
"dep:softbuffer",
"dep:tiny-skia",
"dep:ab_glyph",
"dep:pollster",
"dep:raw-window-handle",
"dep:bytemuck",
]
# Enable Lua config support. No system deps (mlua vendors Lua 5.4).
lua = ["dep:mlua"]
# Enable Sixel / iTerm2 image protocol support.
images = ["dep:image"]
[dev-dependencies]
pretty_assertions = "1"
tempfile = "3"
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
strip = true
panic = "abort"
[profile.dev]
opt-level = 0
debug = true