Skip to main content

max / shop

4.1 KB · 115 lines History Blame Raw
1 [workspace]
2 resolver = "2"
3 members = [
4 "crates/shop",
5 "crates/shop-font",
6 "crates/kitty-graphics",
7 "crates/shop-wayland",
8 "crates/shop-render",
9 "crates/shop-pty",
10 "crates/shop-grid",
11 "crates/shop-vt",
12 "crates/shop-bench",
13 "crates/shop-xkb",
14 ]
15
16 [workspace.dependencies]
17 tempfile = "3"
18 smithay-client-toolkit = { version = "0.21", features = ["system"] }
19 wayland-client = { version = "0.31", features = ["system"] }
20 # Keysym names only. shop-xkb takes this rather than SCTK so the key-encoding
21 # logic stays testable without a compositor; SCTK re-exports the same type, so
22 # the binary passes its keysyms straight through.
23 xkeysym = "0.2"
24 calloop = "0.14"
25 calloop-wayland-source = "0.4"
26 # Two backends, both reachable: vulkan is the one shop is built for, gles is the
27 # fallback that keeps a machine with no Vulkan driver in a working terminal.
28 # `Backends::GL` finds nothing without this feature, so the pair moves together.
29 # No metal — shop is Wayland-only, so that backend can never be selected.
30 wgpu = { version = "30", default-features = false, features = ["wgsl", "vulkan", "gles"] }
31 raw-window-handle = "0.6"
32 pollster = "1"
33 anyhow = "1"
34 tracing = "0.1"
35 tracing-subscriber = { version = "0.3", features = ["env-filter"] }
36 swash = "0.2"
37 guillotiere = "0.7"
38 bytemuck = { version = "1", features = ["derive"] }
39 nix = { version = "0.31", features = ["term", "process", "fs", "ioctl", "signal"] }
40 base64 = "0.23"
41 image = { version = "0.25", default-features = false, features = ["png"] }
42 # The family's theme loading. shop resolves its sixteen ANSI slots, its default
43 # text and page colours from a theme file rather than carrying a hex table, and
44 # `ansi_intent` is the mapping the bare Linux console and Alloy's generated
45 # configs use, so all three agree on what red means.
46 makeover = "3.0"
47 # For shop's own config file, and already in the tree underneath makeover.
48 toml = "1.1"
49 # How many columns a character occupies. This is a protocol agreement with the
50 # application, not a rendering detail: a program laying out a table computes its
51 # cursor moves from the same table, so the grid has to read it from the same
52 # data rather than assume one column per char.
53 unicode-width = "0.2"
54 # Which font the SYSTEM says has a character the bundled font lacks. Consulted
55 # only on a miss, so ordinary output never reaches it. The C library is Keith
56 # Packard's permissive licence and ships on every Linux desktop, which is
57 # everywhere shop runs.
58 fontconfig = "0.11"
59
60 [workspace.package]
61 edition = "2024"
62 rust-version = "1.85"
63 authors = ["Max Johnson <me@maxj.phd>"]
64 repository = "https://makenot.work/git/max/shop"
65 license = "MIT"
66
67 [workspace.lints.rust]
68 unsafe_code = "warn"
69 unused = "warn"
70 unreachable_pub = "warn"
71
72 [workspace.lints.clippy]
73 pedantic = { level = "warn", priority = -1 }
74 # Allow-list tuned from a measured breakdown across server/multithreaded/pter
75 # (2026-07-22). These are the high-churn / low-signal pedantic lints; everything
76 # else in `pedantic` stays a warning. Keep this block identical across repos.
77 module_name_repetitions = "allow"
78 # Doc lints. No docs-completeness push is underway.
79 missing_errors_doc = "allow"
80 missing_panics_doc = "allow"
81 doc_markdown = "allow"
82 # Numeric casts. Endemic and mostly intentional in size and byte math.
83 cast_possible_truncation = "allow"
84 cast_sign_loss = "allow"
85 cast_precision_loss = "allow"
86 cast_possible_wrap = "allow"
87 cast_lossless = "allow"
88 # Subjective structure and style nags. High churn, low signal.
89 must_use_candidate = "allow"
90 too_many_lines = "allow"
91 struct_excessive_bools = "allow"
92 similar_names = "allow"
93 items_after_statements = "allow"
94 single_match_else = "allow"
95 # Frequent false-positives in TUI and router-heavy code.
96 match_same_arms = "allow"
97 unnecessary_wraps = "allow"
98 type_complexity = "allow"
99
100 [profile.release]
101 lto = "thin"
102 codegen-units = 1
103 strip = "symbols"
104
105 # Same optimizations as release but keep symbols + line-tables so samply /
106 # perf can attribute samples to function names and source lines. Use with
107 # `cargo build --profile profiling`.
108 [profile.profiling]
109 inherits = "release"
110 strip = "none"
111 debug = "line-tables-only"
112
113 [profile.dev]
114 opt-level = 1
115