├── .gitignore ├── proto ├── .gitignore ├── Cargo.toml ├── abont-api │ ├── Cargo.toml │ └── src │ │ ├── lib.rs │ │ └── atext.rs ├── abont-shell │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── abont-egui │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── abont │ ├── Cargo.toml │ └── src │ │ └── main.rs ├── README.md └── Cargo.lock └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /proto/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /proto/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = ["abont-shell", "abont-api", "abont-egui", "abont"] 3 | resolver = "2" 4 | -------------------------------------------------------------------------------- /proto/abont-api/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "abont-api" 3 | version = "0.0.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /proto/abont-shell/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "abont-shell" 3 | version = "0.0.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | abont-api = { version = "0.0.0", path = "../abont-api" } 8 | -------------------------------------------------------------------------------- /proto/abont-egui/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "abont-egui" 3 | version = "0.0.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | abont-api = { version = "0.0.0", path = "../abont-api" } 8 | eframe = "0.28.1" 9 | egui = "0.28.1" 10 | oneshot = "0.1.8" 11 | -------------------------------------------------------------------------------- /proto/abont/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "abont" 3 | version = "0.0.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | abont-api = { version = "0.0.0", path = "../abont-api" } 8 | abont-egui = { version = "0.0.0", path = "../abont-egui" } 9 | abont-shell = { version = "0.0.0", path = "../abont-shell" } 10 | tokio = { version = "1.40.0", features = ["rt"]} 11 | -------------------------------------------------------------------------------- /proto/abont/src/main.rs: -------------------------------------------------------------------------------- 1 | struct App; 2 | 3 | impl abont_egui::AbontApp for App { 4 | fn start(self, abont_api: impl abont_api::AbontApi + Send + 'static) { 5 | std::thread::spawn(move || { 6 | let rt = tokio::runtime::Builder::new_current_thread().build().unwrap(); 7 | rt.block_on(abont_shell::main(&abont_api)); 8 | }); 9 | } 10 | } 11 | 12 | fn main() { 13 | if let Err(err) = abont_egui::run(App) { 14 | eprintln!("{}", err); 15 | std::process::exit(1); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /proto/abont-shell/src/lib.rs: -------------------------------------------------------------------------------- 1 | //! Uses abont-api to implement shell/editor/file manager. 2 | 3 | use abont_api::{AText, AbontApi, BufferRef, DocumentRef, SelectionRequest, Split}; 4 | 5 | pub async fn main(abont: &impl AbontApi) { 6 | let (input_buffer, _input_document) = show_buffer_with_document(abont, "$".into()).await; 7 | let (output_buffer, _output_document) = 8 | show_buffer_with_document(abont, "drwxr-xr-x - matklad 7 Sep 14:55 proto".into()).await; 9 | 10 | abont.splits_set(Split::Branch(vec![ 11 | Split::Leaf(input_buffer), 12 | Split::Leaf(output_buffer), 13 | ])).await; 14 | } 15 | 16 | async fn show_buffer_with_document( 17 | abont: &impl AbontApi, 18 | initial_contents: AText, 19 | ) -> (BufferRef, DocumentRef) { 20 | let document = abont.document_create().await; 21 | abont.document_replace(document, SelectionRequest::Everything, initial_contents).await; 22 | let buffer = abont.buffer_create().await; 23 | abont.buffer_show_document(buffer, document).await; 24 | return (buffer, document); 25 | } 26 | -------------------------------------------------------------------------------- /proto/abont-api/src/lib.rs: -------------------------------------------------------------------------------- 1 | //! Defines the interface used by the shell and implemented by the engine. 2 | #![allow(async_fn_in_trait)] 3 | mod atext; 4 | 5 | pub use atext::{AText, Point, PointRange, Selection, SelectionRequest}; 6 | 7 | #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)] 8 | pub struct DocumentRef(pub u32); 9 | 10 | #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)] 11 | pub struct BufferRef(pub u32); 12 | 13 | pub trait AbontApi { 14 | async fn splits_get(&self) -> Split; 15 | async fn splits_set(&self, splits: Split); 16 | 17 | async fn buffer_create(&self) -> BufferRef; 18 | async fn buffer_show_document(&self, buffer: BufferRef, document: DocumentRef); 19 | 20 | async fn document_create(&self) -> DocumentRef; 21 | async fn document_replace(&self, document: DocumentRef, selection: SelectionRequest, text: AText); 22 | } 23 | 24 | #[derive(Debug)] 25 | pub enum Split { 26 | Leaf(BufferRef), 27 | Branch(Vec), 28 | } 29 | 30 | impl Default for Split { 31 | fn default() -> Split { 32 | Split::Branch(Vec::new()) 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /proto/abont-api/src/atext.rs: -------------------------------------------------------------------------------- 1 | pub enum SelectionRequest { 2 | Everything, 3 | Start, 4 | End, 5 | Selection(Selection), 6 | } 7 | 8 | pub struct Selection { 9 | pub ranges: PointRange, 10 | } 11 | 12 | pub struct PointRange { 13 | pub start: Point, 14 | pub end: Point, 15 | } 16 | 17 | pub struct Point { 18 | pub utf8_index: u32, 19 | } 20 | 21 | #[derive(Default, Debug)] 22 | pub struct AText { 23 | text: String, 24 | } 25 | impl AText { 26 | pub fn new() -> AText { 27 | AText::default() 28 | } 29 | 30 | pub fn replace(&mut self, selection_request: SelectionRequest, text: AText) { 31 | match selection_request { 32 | SelectionRequest::Everything => *self = text, 33 | SelectionRequest::Start => todo!(), 34 | SelectionRequest::End => todo!(), 35 | SelectionRequest::Selection(_) => todo!(), 36 | } 37 | } 38 | 39 | pub fn as_str(&self) -> &str { 40 | &self.text 41 | } 42 | } 43 | 44 | impl From<&'_ str> for AText { 45 | fn from(value: &str) -> AText { 46 | AText { 47 | text: value.to_string(), 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /proto/README.md: -------------------------------------------------------------------------------- 1 | Prototype Abont implementation. Again, I don't intend to spend a lot of time on this, but I just 2 | can't help sketching at least some code... 3 | 4 | * `abont-api` this crate defines the thin waist I've been talking in the top-level README. This is 5 | _just_ API, without its user or implementer. 6 | 7 | Note that attributed text as a value type is a part of these API layer (the same way a `String` 8 | would be). 9 | 10 | `atext` module is worth noting --- it implements attributed text, and needs _a lot_ of work. 11 | 12 | * `abont-shell` is the user of the API. While the plan is to have many users communicating over IPC, 13 | let's start with something simple, just a basic shell/editor/file browser. Shouldn't be hard, 14 | right? 15 | 16 | * `abont-egui` this is the other side of API, the thing that shows pixels. Obviously, the real 17 | implementation would use a real GUI here, with hand written shaders, vulkan and what not. I am not 18 | particularly interested in GUIs though, so this is intended to be just a placeholder implemented 19 | with egui (I picked egui because it has rich text as an example on the main page). 20 | 21 | When we finish prototyping, we'll replace this thing whole-sale. That's why it is crucially 22 | important that there aren't any dependencies between `abont-shell` and `abont-egui` 23 | 24 | * `abont` --- neither shell nor gui depend on each other, but there needs to be _something_ to bind 25 | them to together. `abont` is this thing, it has a trivial main that just plugs `shell` into 26 | `egui`. 27 | -------------------------------------------------------------------------------- /proto/abont-egui/src/lib.rs: -------------------------------------------------------------------------------- 1 | use std::{ 2 | collections::HashMap, 3 | sync::{ 4 | self, 5 | mpsc::{Receiver, Sender}, 6 | }, 7 | }; 8 | 9 | use abont_api::{AText, AbontApi, BufferRef, DocumentRef, SelectionRequest, Split}; 10 | use egui::{Layout, Pos2, Rect, Vec2}; 11 | 12 | pub trait AbontApp: 'static { 13 | fn start(self, abont_api: impl AbontApi + Send + 'static); 14 | } 15 | 16 | pub fn run(app: impl AbontApp) -> eframe::Result { 17 | let options = eframe::NativeOptions { 18 | viewport: egui::ViewportBuilder::default().with_inner_size([320.0, 240.0]), 19 | ..Default::default() 20 | }; 21 | let result = eframe::run_native( 22 | "abont", 23 | options, 24 | Box::new(move |cc| { 25 | let (tx, rx) = sync::mpsc::channel(); 26 | app.start(AbontHandle { 27 | tx, 28 | ctx: cc.egui_ctx.clone(), 29 | }); 30 | 31 | Ok(Box::new(Gui { 32 | rx, 33 | abont: AbontEgui::new(), 34 | })) 35 | }), 36 | ); 37 | result 38 | } 39 | 40 | type F = Box; 41 | 42 | struct Gui { 43 | rx: Receiver, 44 | abont: AbontEgui, 45 | } 46 | 47 | impl eframe::App for Gui { 48 | fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { 49 | while let Ok(f) = self.rx.try_recv() { 50 | f(&mut self.abont) 51 | } 52 | ctx.set_visuals(egui::Visuals::light()); 53 | egui::CentralPanel::default() 54 | // .frame(egui::Frame::default().fill(Color32::LIGHT_BLUE)) 55 | .show(ctx, |ui| { 56 | self.update_split(ui, &self.abont, &self.abont.splits, 0); 57 | }); 58 | } 59 | } 60 | 61 | impl Gui { 62 | fn update_split(&self, ui: &mut egui::Ui, abont: &AbontEgui, split: &Split, level: u32) { 63 | match split { 64 | Split::Leaf(buffer) => self.update_buffer(ui, abont, *buffer), 65 | Split::Branch(splits) => { 66 | if splits.is_empty() { 67 | return; 68 | } 69 | let vertical = level % 2 == 0; 70 | let size = ui.available_size(); 71 | let mut i = 0.0; 72 | for split in splits { 73 | let rect = if vertical { 74 | let step = size.y / (splits.len() as f32); 75 | Rect::from_min_size(Pos2::new(0.0, step * i), Vec2::new(size.x, step)) 76 | } else { 77 | let step = size.x / (splits.len() as f32); 78 | Rect::from_min_size(Pos2::new(step * i, 0.0), Vec2::new(step, size.y)) 79 | }; 80 | self.update_split( 81 | &mut ui.child_ui(rect, Layout::default(), None), 82 | abont, 83 | split, 84 | level + 1, 85 | ); 86 | i += 1.0; 87 | } 88 | } 89 | } 90 | } 91 | 92 | fn update_buffer(&self, ui: &mut egui::Ui, abont: &AbontEgui, buffer_ref: BufferRef) { 93 | let Some(buffer) = abont.buffers.get(&buffer_ref) else { 94 | return; 95 | }; 96 | let Some(document_ref) = buffer.document else { 97 | return; 98 | }; 99 | let Some(document) = abont.documents.get(&document_ref) else { 100 | return; 101 | }; 102 | ui.monospace(document.text.as_str()); 103 | } 104 | } 105 | 106 | #[derive(Clone)] 107 | struct AbontHandle { 108 | ctx: egui::Context, 109 | tx: Sender, 110 | } 111 | 112 | impl AbontHandle { 113 | async fn call( 114 | &self, 115 | f: impl FnOnce(&mut AbontEgui) -> T + Send + Sync + 'static, 116 | ) -> T { 117 | let (tx, rx) = oneshot::channel(); 118 | let _ = self.tx.send(Box::new(move |abont| { 119 | let _ = tx.send(f(abont)); 120 | })); 121 | self.ctx.request_repaint(); 122 | rx.await.unwrap() 123 | } 124 | } 125 | 126 | impl AbontApi for AbontHandle { 127 | async fn splits_get(&self) -> abont_api::Split { 128 | todo!() 129 | } 130 | 131 | async fn splits_set(&self, splits: abont_api::Split) { 132 | self.call(move |abont| abont.splits_set(splits)).await 133 | } 134 | 135 | async fn buffer_create(&self) -> abont_api::BufferRef { 136 | self.call(move |abont| abont.buffer_create()).await 137 | } 138 | 139 | async fn buffer_show_document( 140 | &self, 141 | buffer: abont_api::BufferRef, 142 | document: abont_api::DocumentRef, 143 | ) { 144 | self.call(move |abont| abont.buffer_show_document(buffer, document)) 145 | .await 146 | } 147 | 148 | async fn document_create(&self) -> abont_api::DocumentRef { 149 | self.call(move |abont| abont.document_create()).await 150 | } 151 | 152 | async fn document_replace( 153 | &self, 154 | document: DocumentRef, 155 | selection: SelectionRequest, 156 | text: AText, 157 | ) { 158 | self.call(move |abont| abont.document_replace(document, selection, text)) 159 | .await 160 | } 161 | } 162 | 163 | #[derive(Default, Debug)] 164 | pub struct AbontEgui { 165 | splits: Split, 166 | documents: HashMap, 167 | document_id: u32, 168 | buffers: HashMap, 169 | buffer_id: u32, 170 | } 171 | 172 | impl AbontEgui { 173 | fn new() -> AbontEgui { 174 | AbontEgui::default() 175 | } 176 | 177 | fn splits_set(&mut self, splits: abont_api::Split) { 178 | self.splits = splits; 179 | } 180 | 181 | fn buffer_create(&mut self) -> BufferRef { 182 | let buffer_ref = BufferRef(self.buffer_id); 183 | self.buffer_id += 1; 184 | self.buffers.insert(buffer_ref, Buffer::new()); 185 | buffer_ref 186 | } 187 | 188 | fn buffer_show_document(&mut self, buffer_ref: BufferRef, document_ref: DocumentRef) { 189 | let Some(buffer) = self.buffers.get_mut(&buffer_ref) else { 190 | return; 191 | }; 192 | buffer.document = Some(document_ref) 193 | } 194 | 195 | fn document_create(&mut self) -> DocumentRef { 196 | let document_ref = DocumentRef(self.document_id); 197 | self.document_id += 1; 198 | self.documents.insert(document_ref, Document::new()); 199 | document_ref 200 | } 201 | fn document_replace( 202 | &mut self, 203 | document_ref: DocumentRef, 204 | selection: SelectionRequest, 205 | text: AText, 206 | ) { 207 | let Some(document) = self.documents.get_mut(&document_ref) else { 208 | return; 209 | }; 210 | 211 | document.text.replace(selection, text); 212 | } 213 | } 214 | 215 | #[derive(Debug)] 216 | struct Buffer { 217 | document: Option, 218 | } 219 | 220 | impl Buffer { 221 | fn new() -> Buffer { 222 | Buffer { document: None } 223 | } 224 | } 225 | 226 | #[derive(Debug)] 227 | struct Document { 228 | text: AText, 229 | } 230 | 231 | impl Document { 232 | fn new() -> Document { 233 | Document { text: AText::new() } 234 | } 235 | } 236 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Abont 2 | 3 | ## Preface 4 | 5 | This is a design document for Abont: a new take on programmer-oriented interface, a superset of 6 | shells, terminals, orthodox file managers and code editors. If you are thinking "but this is Emacs, 7 | no?", you are not wrong. 8 | 9 | This is something I'd be building if I had a spare couple of years. As I don't have spare capacity 10 | for this endeavor, but can't help thinking about this, I'll restrain myself to writing this design 11 | document. I don't know how complete it'll end up being! 12 | 13 | If you are excited about these ideas, please feel free to start hacking! Maybe there are enough 14 | like-minding people around that we could bootstrap a community without any single individual 15 | spending years on it? 16 | 17 | ## Introduction 18 | 19 | Abont is a new API to develop "line of business" applications against, where business is programming. 20 | It's a different "thin waist". Today we have two popular "thin waists" for programming tools: 21 | 22 | * GUI: a **canvas of pixels** in a window. 23 | * Terminal: a **textual stream** with escape sequencies to modify behavior of the stream. 24 | 25 | Similarly, Abont is a **set of annotated text buffers**, arranged in a tiled display. That is: 26 | 27 | The foundation is text, like with the terminal. Unlike the terminal, it is not an append-only text 28 | stream, but rather a mutable text buffer. An application which displays the text buffer can update 29 | the buffer in the middle. 30 | 31 | The text is "rich", in a sense that the spans of text are annotated with attributes. For example, a 32 | span of text can be annotated with a hyper-link. Buttons, checkboxes and other interactive elements 33 | are also implemented as clickable text. 34 | 35 | Unlike full HTML, the text is not nested, and logically is a 2 dimensional grid of characters. This 36 | makes _text_ navigation (kbd>Home, End, PgUp, and 37 | PgDown) universally applicable. 38 | 39 | Another different from a terminal is that there are _multiple_ text buffers. You can have several 40 | apps running at the same time and displaying a text buffer each, or you could have a single app that 41 | owns multiple buffers. 42 | 43 | Buffers are arranged in splits and tabs. Applications have _limited_ control over the spatial 44 | arrangement of the buffers. It is the user who chooses which buffers are displayed in the 45 | foreground. 46 | 47 | This is how Abont should look like: 48 | 49 | ![Magit status screenshot](https://matklad.github.io/assets/magit.png) 50 | 51 | This is a screenshot of excellent Magit interface from Emacs. The maximalist goal of Abont is to 52 | ensure that all interactive programming tools _start_ with a magit-like interface, that this kind of 53 | experience becomes the default, and that this kind of experience is easily emendable into different 54 | tools, the same way most code editors embed terminals. 55 | 56 | ## Design 57 | 58 | This sections collects various micro essays on various aspects of the architecture. 59 | 60 | ### Extensibility Vs Composability 61 | 62 | Emacs is extensible --- you can change the way Emacs behaves by writing some lisp. Unix shell is 63 | composable: you can extend it by combining existing processes in a new way or writing new programs. 64 | It is worth noting that composability is nothing more than extensibility on the next level. A shell 65 | is composable because UNIX is exentisble -- you can extend your UNIX environment with new program, 66 | which you can then compose in a shell. 67 | 68 | It seems that the sweet spot is to straddle to levels --- have _both_ composability across processes 69 | and extensibility within the process. Vim, Emacs, and shell all have a scripting engine, and 70 | affordances for outsourcing the work to external processes. 71 | 72 | Where Emacs falls short, I think, is in not exposing Emacs date model to the external world. As far 73 | as I know, there's no easy way to implement Magit as a separate process. 74 | 75 | So, one specific technical goal of Abont is to introduce an IPC protocol to expose a **set of 76 | attributed text buffers** across the process boundary. 77 | 78 | At the same time, for small-scale extensibility and private scripting, in-process scripting language 79 | would be more convenient. 80 | 81 | ### Scripting Language 82 | 83 | As far as I am aware, there's no suitable scripting language for Abont. The following two design 84 | criteria exclude all popular languages, as far as I am aware: 85 | 86 | * Static (but maybe gradual) type system. The tooling unlocked by static typing is just too 87 | valuable. It is much easier to extend something if you can auto-complete your way through the API. 88 | * Good support for utf-8 text. Obviously, if our model is text buffers, we should be good at text! 89 | 90 | The _closest_ language would be TypeScript. I'd take all JavaScript quirks (even IEEE754) if I also 91 | get TypeScript-level tooling. But utf-16 strings feel like a hard blocker. Can we hack some JS 92 | interpreter to use utf8? 93 | 94 | Alternatively, perhaps "just compile to WASM" is an answer? Doesn't seem so, as there are at least 95 | two blockers: 96 | 97 | * WASM still lacks component model (I think?). Building compenents on the level of byte buffers is 98 | too low-level. 99 | * There isn't a default choice of a WASM-compiled scripting language. Even if we use WASM, we'd 100 | still want 90% of code to be in the same language. Rust feels a bit too low-level to write your 101 | `init.abont` in. 102 | 103 | If we forgo static types, then it makes sense to take a look at Lua, or, better Janet. 104 | 105 | Decision: keep it Rust. We _really_ need a proper high-iteration-speed scripting language here, but 106 | there isn't one, and building our own is a yak too hairy. Instead the plan: 107 | 108 | * Make strict separation about the API (window creation, etc), the engine realizing API in a form of 109 | graphical window, and the `abont` implementation, which uses the API, but doesn't depend (even 110 | transitively!) on the engine. 111 | * At some point later, allow user-scripts, by compiling them to .so/.wasm on the fly. 112 | * In the far future, pick a real scripting language to slowly transition to. 113 | 114 | ### Open-vs-Closed API 115 | 116 | For in-process extensibility, the two related questions are: 117 | 118 | * open API (Emacs, IntelliJ) vs closed API (VS Code) 119 | * image based programming (Emacs, Pharo, Erlang) vs traditional "run this source code" programming 120 | (everything that's not smalltalk or a lisp machine) 121 | 122 | Open API means that there isn't a strict distinction between the platform, and the extension. 123 | Extensions can touch and change everything, which is very powerful, but can easily break things or 124 | makes things slow. 125 | 126 | Closed API means that the platform exposes a bridge specifically for extensions. This restricts the 127 | power of extensions but also makes evolving API much easier. Additionally closed API could be much 128 | easier to learn. `vscode.d.ts` is brilliant --- the entire API surface as a single self-contained 129 | file! 130 | 131 | Given that IPC API is effecively closed, it might makes sense to go for open API for the `abont` 132 | binary? If we code ourself into backwards compatability corner with the internal API, we can declare 133 | bankruptcy and start `abont2`, getting to re-use all out of process components! It would perhaps be 134 | best to even _start_ with a couple of different `abont` implementations? 135 | 136 | Image based programming is when the bug you are chasing is in the code that no longer exists as a 137 | source code. I am pretty convinced that serializing everything as text is the way to go, and that 138 | there shouldn't be much support for image based programming outside of tightly scoped live-reload ( 139 | it is a research question whether tightly scoped live-reload and image based programming are in fact 140 | distinct things). 141 | 142 | ### Extensions 143 | 144 | We'd want to be like VS Code marketplace, rather than like Emacs wiki. Or rather, we want to be like 145 | Go: everything is decentralized and can be hosted whatever, but there's also default caching service 146 | which guarantees some amount of availability and also provides some measure of discoverability. Just 147 | leverage crates.io? 148 | 149 | ### GUI 150 | 151 | Would be great to pick a GUI lib that can do rich text out of the box! No idea what's the right 152 | choice here in 2024. 153 | 154 | ### Compat 155 | 156 | It would be cool to lift usual terminal applications into `abont` world. That doesn't feel _too_ 157 | hard --- there needs to be a wrapper that creates a pty pair and adapts the output to `abont` IPC. 158 | Sadly, this seem to really require going all the way down to the kernel for a pty-pair! Horrible. 159 | Abont itself clearly should be very cleanly virtualizable. It would be disgusting to have abont 160 | server implemented as a terminal program! 161 | 162 | ### Remoting 163 | 164 | We are obviously living in the future, so I should be able to run a local abont on my laptop and use 165 | that command the laptop, the server runnning in the basement and an ephemeral machine on the other 166 | side of the cloud. 167 | 168 | Crucially, abont IPC protocol itself _shouldn't_ be a thin waist for remoting. I should be running 169 | the shell locally, and, when I run `ls` alternative, it should execute the logic on my machine. But 170 | it obviously should run `readdir` syscall on a remote machine, and shuttle only the results back. 171 | 172 | Is this in scope of Abont even? Maybe not! 173 | 174 | ### Applications 175 | 176 | Things which I think are going to be hard without something like `abont`: 177 | 178 | * Non-blocking shell: when you spawn `cargo build`, it is detached by default. Immediately after, 179 | you can spawn another `cargo build`, or do a `git commit`, while the original `cargo build` is 180 | still running. Its output is clearly visible, but doesn't get in a way. Similarly, each command 181 | gets stamped with its start and end time. 182 | 183 | * Concurrent shell: if I need to spawn a cluster of tree programs, I shouldn't jump through hoops to 184 | separate the three outputs into different streems. I shouldn't do anything at all for that 185 | purpose, in fact: waiting for process to finish should be a special case, a-la Rust inert async 186 | case. 187 | 188 | * Command palette front and center: when I am typing a shell command, I don't want to look at the 189 | lower-left corner of my screen. The thing should be front and center. 190 | 191 | * Magit as a separate program 192 | 193 | Things which are not innovative per-se, but which would be required to actually use the thing: 194 | 195 | * Basic shell to run programs. Maybe a shell language? 196 | * Basic text editor (replacing something like Zed or VS Code is a non-goal, at least until it is 197 | proven that abont model works) 198 | * File browser. 199 | 200 | ## Reference 201 | 202 | ### Data Model 203 | 204 | That's actually the main thing to fill out! Feel free to send PRs! 205 | 206 | #### State 207 | 208 | ```rust 209 | /// Singleton repressing the entire abont process. This probably corresponds to a single window. 210 | /// Do we want to have abont spawning multiple windows? Probably, but I think it would be OK to cut 211 | /// that, at least initially. 212 | struct Abont { 213 | prompt: Prompt, 214 | split_tree: SplitTree, 215 | buffers: Vec, 216 | documents: Vec, 217 | } 218 | 219 | /// Prompt is a special singleton split used for the primary interaction with the user. 220 | /// Think command palette, `M-x`, or, indeed, shell's prompt. Maybe we want to display it at the 221 | /// bottom, like in Emacs, or maybe we want to popup it front and center. 222 | struct Prompt { 223 | buffer: BufferRef 224 | } 225 | 226 | /// How window is subdivided into splits. 227 | /// 228 | /// Split tree is n-ary (three side-by-side columns are one level in the tree). 229 | /// 230 | /// Direction is implicit: `vec![Leaf, Leaf]` is vertical split, `vec![vec![Leaf, Leaf]]` is 231 | /// horizontal 232 | /// 233 | /// Splits are ephemeral --- there are no SplitRefs, you can get-set the whole tree at once. 234 | struct SplitTree { 235 | root: Split 236 | } 237 | 238 | enum Split { 239 | Leaf(BufferRef) 240 | Branch(Vec) // Even branches are v-splits, odd are h-splits. 241 | } 242 | 243 | /// A Buffer is its textual content plus extra state, notably, cursors. 244 | /// Do cursors belong in the core model? I think so, they are the primary means of interaction. 245 | /// Though, it's a bit hard to see how to make Vim vs Emacs bindings customizable without 246 | /// hard-coding? 247 | struct Buffer { 248 | document: Option, // Multi buffers? 249 | selection: Selection 250 | } 251 | 252 | struct Selection { 253 | ranges: PointRange, 254 | } 255 | 256 | struct PointRage { 257 | start: Point, 258 | end: Point, 259 | } 260 | 261 | /// Point _points_ at text. Physically, it is utf-8 offset that logically points at the nearest 262 | /// utf-8 boundary. As we are open for extension, we want to be forgiving here --- don't through 263 | /// index out of bounds, but rather fix stuff up. 264 | struct Point(u32); 265 | 266 | /// A single document could be shown in several buffers 267 | struct Document { 268 | text: AText 269 | } 270 | 271 | /// Logically, this is attributed text! Have no idea how to represent it physically. 272 | struct AText { 273 | text: String, 274 | attrs: Vec 275 | } 276 | 277 | struct Attribute { 278 | range: PointRange, 279 | value: AttributeValue, 280 | } 281 | 282 | ``` 283 | 284 | #### Operations 285 | 286 | ```rust 287 | impl Abont { 288 | fn split_tree_get() -> SplitTree; 289 | fn split_tree_set(SplitTree); 290 | 291 | fn buffer_create() -> BufferRef; 292 | fn buffer_show_document(BufferRef, DocumentRef); 293 | 294 | fn document_create() -> DocumentRef; 295 | fn document_replace(DocumentRef, SelectionRequest, AText); 296 | } 297 | 298 | enum SelectionRequest { 299 | Everything, 300 | Start, 301 | End, 302 | Selection(Selection), 303 | } 304 | ``` 305 | 306 | ### IPC 307 | 308 | TBD 309 | 310 | ## Prior Art 311 | 312 | * Acme: https://research.swtch.com/acme.pdf. 313 | 314 | It seems _very_ close to what I want here, with three major differences: 315 | 316 | * I am not a big fan of mice, I'd love to keep things keyboard driven 317 | * Acme is plain-text editor (not even syntax highlighting!). It works by heuristically 318 | identifying text as file names, etc. I think it makes more sense to follow Emacs model and 319 | endow the text with attributes! 320 | * It only has "external" extensibility. To me, it seems that you'd want to both script the 321 | system from inside, as well as extract larger things into separate processes. The API should 322 | be the same either way! External/Internal is the question of distribution, not interaction! 323 | 324 | * Emacs: magit, dired, eshell 325 | * terminal.click 326 | * Arcan's cat9 327 | * warp (though they don't make any attempts to actually move the state of the art, and rather just 328 | pile more hacks on the sandy foundation) 329 | * kitty on tmux 330 | 331 | ## Naming 332 | 333 | ```console 334 | $ sha256sum abont 335 | 9fce2fc695ad8dcda4c6e3dcb1842be801c0bd9808c0af36ae963f62d3494349 abont 336 | ``` 337 | -------------------------------------------------------------------------------- /proto/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "ab_glyph" 7 | version = "0.2.28" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "79faae4620f45232f599d9bc7b290f88247a0834162c4495ab2f02d60004adfb" 10 | dependencies = [ 11 | "ab_glyph_rasterizer", 12 | "owned_ttf_parser", 13 | ] 14 | 15 | [[package]] 16 | name = "ab_glyph_rasterizer" 17 | version = "0.1.8" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" 20 | 21 | [[package]] 22 | name = "abont" 23 | version = "0.0.0" 24 | dependencies = [ 25 | "abont-api", 26 | "abont-egui", 27 | "abont-shell", 28 | "tokio", 29 | ] 30 | 31 | [[package]] 32 | name = "abont-api" 33 | version = "0.0.0" 34 | 35 | [[package]] 36 | name = "abont-egui" 37 | version = "0.0.0" 38 | dependencies = [ 39 | "abont-api", 40 | "eframe", 41 | "egui", 42 | "oneshot", 43 | ] 44 | 45 | [[package]] 46 | name = "abont-shell" 47 | version = "0.0.0" 48 | dependencies = [ 49 | "abont-api", 50 | ] 51 | 52 | [[package]] 53 | name = "accesskit" 54 | version = "0.12.3" 55 | source = "registry+https://github.com/rust-lang/crates.io-index" 56 | checksum = "74a4b14f3d99c1255dcba8f45621ab1a2e7540a0009652d33989005a4d0bfc6b" 57 | 58 | [[package]] 59 | name = "accesskit_consumer" 60 | version = "0.16.1" 61 | source = "registry+https://github.com/rust-lang/crates.io-index" 62 | checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" 63 | dependencies = [ 64 | "accesskit", 65 | ] 66 | 67 | [[package]] 68 | name = "accesskit_macos" 69 | version = "0.10.1" 70 | source = "registry+https://github.com/rust-lang/crates.io-index" 71 | checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" 72 | dependencies = [ 73 | "accesskit", 74 | "accesskit_consumer", 75 | "objc2 0.3.0-beta.3.patch-leaks.3", 76 | "once_cell", 77 | ] 78 | 79 | [[package]] 80 | name = "accesskit_unix" 81 | version = "0.6.2" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | checksum = "09f46c18d99ba61ad7123dd13eeb0c104436ab6af1df6a1cd8c11054ed394a08" 84 | dependencies = [ 85 | "accesskit", 86 | "accesskit_consumer", 87 | "async-channel", 88 | "async-once-cell", 89 | "atspi", 90 | "futures-lite 1.13.0", 91 | "once_cell", 92 | "serde", 93 | "zbus", 94 | ] 95 | 96 | [[package]] 97 | name = "accesskit_windows" 98 | version = "0.15.1" 99 | source = "registry+https://github.com/rust-lang/crates.io-index" 100 | checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" 101 | dependencies = [ 102 | "accesskit", 103 | "accesskit_consumer", 104 | "once_cell", 105 | "paste", 106 | "static_assertions", 107 | "windows 0.48.0", 108 | ] 109 | 110 | [[package]] 111 | name = "accesskit_winit" 112 | version = "0.16.1" 113 | source = "registry+https://github.com/rust-lang/crates.io-index" 114 | checksum = "5284218aca17d9e150164428a0ebc7b955f70e3a9a78b4c20894513aabf98a67" 115 | dependencies = [ 116 | "accesskit", 117 | "accesskit_macos", 118 | "accesskit_unix", 119 | "accesskit_windows", 120 | "winit", 121 | ] 122 | 123 | [[package]] 124 | name = "addr2line" 125 | version = "0.24.1" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" 128 | dependencies = [ 129 | "gimli", 130 | ] 131 | 132 | [[package]] 133 | name = "adler" 134 | version = "1.0.2" 135 | source = "registry+https://github.com/rust-lang/crates.io-index" 136 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 137 | 138 | [[package]] 139 | name = "adler2" 140 | version = "2.0.0" 141 | source = "registry+https://github.com/rust-lang/crates.io-index" 142 | checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" 143 | 144 | [[package]] 145 | name = "ahash" 146 | version = "0.8.11" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" 149 | dependencies = [ 150 | "cfg-if", 151 | "getrandom", 152 | "once_cell", 153 | "version_check", 154 | "zerocopy", 155 | ] 156 | 157 | [[package]] 158 | name = "aho-corasick" 159 | version = "1.1.3" 160 | source = "registry+https://github.com/rust-lang/crates.io-index" 161 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 162 | dependencies = [ 163 | "memchr", 164 | ] 165 | 166 | [[package]] 167 | name = "allocator-api2" 168 | version = "0.2.18" 169 | source = "registry+https://github.com/rust-lang/crates.io-index" 170 | checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" 171 | 172 | [[package]] 173 | name = "android-activity" 174 | version = "0.5.2" 175 | source = "registry+https://github.com/rust-lang/crates.io-index" 176 | checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" 177 | dependencies = [ 178 | "android-properties", 179 | "bitflags 2.6.0", 180 | "cc", 181 | "cesu8", 182 | "jni", 183 | "jni-sys", 184 | "libc", 185 | "log", 186 | "ndk", 187 | "ndk-context", 188 | "ndk-sys", 189 | "num_enum", 190 | "thiserror", 191 | ] 192 | 193 | [[package]] 194 | name = "android-properties" 195 | version = "0.2.2" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" 198 | 199 | [[package]] 200 | name = "android_system_properties" 201 | version = "0.1.5" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 204 | dependencies = [ 205 | "libc", 206 | ] 207 | 208 | [[package]] 209 | name = "arboard" 210 | version = "3.4.0" 211 | source = "registry+https://github.com/rust-lang/crates.io-index" 212 | checksum = "9fb4009533e8ff8f1450a5bcbc30f4242a1d34442221f72314bea1f5dc9c7f89" 213 | dependencies = [ 214 | "clipboard-win", 215 | "log", 216 | "objc2 0.5.2", 217 | "objc2-app-kit", 218 | "objc2-foundation", 219 | "parking_lot", 220 | "x11rb", 221 | ] 222 | 223 | [[package]] 224 | name = "arrayref" 225 | version = "0.3.8" 226 | source = "registry+https://github.com/rust-lang/crates.io-index" 227 | checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" 228 | 229 | [[package]] 230 | name = "arrayvec" 231 | version = "0.7.6" 232 | source = "registry+https://github.com/rust-lang/crates.io-index" 233 | checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 234 | 235 | [[package]] 236 | name = "as-raw-xcb-connection" 237 | version = "1.0.1" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" 240 | 241 | [[package]] 242 | name = "ash" 243 | version = "0.37.3+1.3.251" 244 | source = "registry+https://github.com/rust-lang/crates.io-index" 245 | checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" 246 | dependencies = [ 247 | "libloading 0.7.4", 248 | ] 249 | 250 | [[package]] 251 | name = "async-broadcast" 252 | version = "0.5.1" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" 255 | dependencies = [ 256 | "event-listener 2.5.3", 257 | "futures-core", 258 | ] 259 | 260 | [[package]] 261 | name = "async-channel" 262 | version = "2.3.1" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" 265 | dependencies = [ 266 | "concurrent-queue", 267 | "event-listener-strategy", 268 | "futures-core", 269 | "pin-project-lite", 270 | ] 271 | 272 | [[package]] 273 | name = "async-executor" 274 | version = "1.13.0" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" 277 | dependencies = [ 278 | "async-task", 279 | "concurrent-queue", 280 | "fastrand 2.1.1", 281 | "futures-lite 2.3.0", 282 | "slab", 283 | ] 284 | 285 | [[package]] 286 | name = "async-fs" 287 | version = "1.6.0" 288 | source = "registry+https://github.com/rust-lang/crates.io-index" 289 | checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" 290 | dependencies = [ 291 | "async-lock 2.8.0", 292 | "autocfg", 293 | "blocking", 294 | "futures-lite 1.13.0", 295 | ] 296 | 297 | [[package]] 298 | name = "async-io" 299 | version = "1.13.0" 300 | source = "registry+https://github.com/rust-lang/crates.io-index" 301 | checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" 302 | dependencies = [ 303 | "async-lock 2.8.0", 304 | "autocfg", 305 | "cfg-if", 306 | "concurrent-queue", 307 | "futures-lite 1.13.0", 308 | "log", 309 | "parking", 310 | "polling 2.8.0", 311 | "rustix 0.37.27", 312 | "slab", 313 | "socket2", 314 | "waker-fn", 315 | ] 316 | 317 | [[package]] 318 | name = "async-io" 319 | version = "2.3.4" 320 | source = "registry+https://github.com/rust-lang/crates.io-index" 321 | checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" 322 | dependencies = [ 323 | "async-lock 3.4.0", 324 | "cfg-if", 325 | "concurrent-queue", 326 | "futures-io", 327 | "futures-lite 2.3.0", 328 | "parking", 329 | "polling 3.7.3", 330 | "rustix 0.38.36", 331 | "slab", 332 | "tracing", 333 | "windows-sys 0.59.0", 334 | ] 335 | 336 | [[package]] 337 | name = "async-lock" 338 | version = "2.8.0" 339 | source = "registry+https://github.com/rust-lang/crates.io-index" 340 | checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" 341 | dependencies = [ 342 | "event-listener 2.5.3", 343 | ] 344 | 345 | [[package]] 346 | name = "async-lock" 347 | version = "3.4.0" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" 350 | dependencies = [ 351 | "event-listener 5.3.1", 352 | "event-listener-strategy", 353 | "pin-project-lite", 354 | ] 355 | 356 | [[package]] 357 | name = "async-once-cell" 358 | version = "0.5.3" 359 | source = "registry+https://github.com/rust-lang/crates.io-index" 360 | checksum = "9338790e78aa95a416786ec8389546c4b6a1dfc3dc36071ed9518a9413a542eb" 361 | 362 | [[package]] 363 | name = "async-process" 364 | version = "1.8.1" 365 | source = "registry+https://github.com/rust-lang/crates.io-index" 366 | checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" 367 | dependencies = [ 368 | "async-io 1.13.0", 369 | "async-lock 2.8.0", 370 | "async-signal", 371 | "blocking", 372 | "cfg-if", 373 | "event-listener 3.1.0", 374 | "futures-lite 1.13.0", 375 | "rustix 0.38.36", 376 | "windows-sys 0.48.0", 377 | ] 378 | 379 | [[package]] 380 | name = "async-recursion" 381 | version = "1.1.1" 382 | source = "registry+https://github.com/rust-lang/crates.io-index" 383 | checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" 384 | dependencies = [ 385 | "proc-macro2", 386 | "quote", 387 | "syn 2.0.77", 388 | ] 389 | 390 | [[package]] 391 | name = "async-signal" 392 | version = "0.2.10" 393 | source = "registry+https://github.com/rust-lang/crates.io-index" 394 | checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" 395 | dependencies = [ 396 | "async-io 2.3.4", 397 | "async-lock 3.4.0", 398 | "atomic-waker", 399 | "cfg-if", 400 | "futures-core", 401 | "futures-io", 402 | "rustix 0.38.36", 403 | "signal-hook-registry", 404 | "slab", 405 | "windows-sys 0.59.0", 406 | ] 407 | 408 | [[package]] 409 | name = "async-task" 410 | version = "4.7.1" 411 | source = "registry+https://github.com/rust-lang/crates.io-index" 412 | checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 413 | 414 | [[package]] 415 | name = "async-trait" 416 | version = "0.1.82" 417 | source = "registry+https://github.com/rust-lang/crates.io-index" 418 | checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" 419 | dependencies = [ 420 | "proc-macro2", 421 | "quote", 422 | "syn 2.0.77", 423 | ] 424 | 425 | [[package]] 426 | name = "atomic-waker" 427 | version = "1.1.2" 428 | source = "registry+https://github.com/rust-lang/crates.io-index" 429 | checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 430 | 431 | [[package]] 432 | name = "atspi" 433 | version = "0.19.0" 434 | source = "registry+https://github.com/rust-lang/crates.io-index" 435 | checksum = "6059f350ab6f593ea00727b334265c4dfc7fd442ee32d264794bd9bdc68e87ca" 436 | dependencies = [ 437 | "atspi-common", 438 | "atspi-connection", 439 | "atspi-proxies", 440 | ] 441 | 442 | [[package]] 443 | name = "atspi-common" 444 | version = "0.3.0" 445 | source = "registry+https://github.com/rust-lang/crates.io-index" 446 | checksum = "92af95f966d2431f962bc632c2e68eda7777330158bf640c4af4249349b2cdf5" 447 | dependencies = [ 448 | "enumflags2", 449 | "serde", 450 | "static_assertions", 451 | "zbus", 452 | "zbus_names", 453 | "zvariant", 454 | ] 455 | 456 | [[package]] 457 | name = "atspi-connection" 458 | version = "0.3.0" 459 | source = "registry+https://github.com/rust-lang/crates.io-index" 460 | checksum = "a0c65e7d70f86d4c0e3b2d585d9bf3f979f0b19d635a336725a88d279f76b939" 461 | dependencies = [ 462 | "atspi-common", 463 | "atspi-proxies", 464 | "futures-lite 1.13.0", 465 | "zbus", 466 | ] 467 | 468 | [[package]] 469 | name = "atspi-proxies" 470 | version = "0.3.0" 471 | source = "registry+https://github.com/rust-lang/crates.io-index" 472 | checksum = "6495661273703e7a229356dcbe8c8f38223d697aacfaf0e13590a9ac9977bb52" 473 | dependencies = [ 474 | "atspi-common", 475 | "serde", 476 | "zbus", 477 | ] 478 | 479 | [[package]] 480 | name = "autocfg" 481 | version = "1.3.0" 482 | source = "registry+https://github.com/rust-lang/crates.io-index" 483 | checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" 484 | 485 | [[package]] 486 | name = "backtrace" 487 | version = "0.3.74" 488 | source = "registry+https://github.com/rust-lang/crates.io-index" 489 | checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" 490 | dependencies = [ 491 | "addr2line", 492 | "cfg-if", 493 | "libc", 494 | "miniz_oxide 0.8.0", 495 | "object", 496 | "rustc-demangle", 497 | "windows-targets 0.52.6", 498 | ] 499 | 500 | [[package]] 501 | name = "bit-set" 502 | version = "0.5.3" 503 | source = "registry+https://github.com/rust-lang/crates.io-index" 504 | checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" 505 | dependencies = [ 506 | "bit-vec", 507 | ] 508 | 509 | [[package]] 510 | name = "bit-vec" 511 | version = "0.6.3" 512 | source = "registry+https://github.com/rust-lang/crates.io-index" 513 | checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 514 | 515 | [[package]] 516 | name = "bitflags" 517 | version = "1.3.2" 518 | source = "registry+https://github.com/rust-lang/crates.io-index" 519 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 520 | 521 | [[package]] 522 | name = "bitflags" 523 | version = "2.6.0" 524 | source = "registry+https://github.com/rust-lang/crates.io-index" 525 | checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" 526 | 527 | [[package]] 528 | name = "block" 529 | version = "0.1.6" 530 | source = "registry+https://github.com/rust-lang/crates.io-index" 531 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 532 | 533 | [[package]] 534 | name = "block-buffer" 535 | version = "0.10.4" 536 | source = "registry+https://github.com/rust-lang/crates.io-index" 537 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 538 | dependencies = [ 539 | "generic-array", 540 | ] 541 | 542 | [[package]] 543 | name = "block-sys" 544 | version = "0.1.0-beta.1" 545 | source = "registry+https://github.com/rust-lang/crates.io-index" 546 | checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" 547 | dependencies = [ 548 | "objc-sys 0.2.0-beta.2", 549 | ] 550 | 551 | [[package]] 552 | name = "block-sys" 553 | version = "0.2.1" 554 | source = "registry+https://github.com/rust-lang/crates.io-index" 555 | checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" 556 | dependencies = [ 557 | "objc-sys 0.3.5", 558 | ] 559 | 560 | [[package]] 561 | name = "block2" 562 | version = "0.2.0-alpha.6" 563 | source = "registry+https://github.com/rust-lang/crates.io-index" 564 | checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" 565 | dependencies = [ 566 | "block-sys 0.1.0-beta.1", 567 | "objc2-encode 2.0.0-pre.2", 568 | ] 569 | 570 | [[package]] 571 | name = "block2" 572 | version = "0.3.0" 573 | source = "registry+https://github.com/rust-lang/crates.io-index" 574 | checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" 575 | dependencies = [ 576 | "block-sys 0.2.1", 577 | "objc2 0.4.1", 578 | ] 579 | 580 | [[package]] 581 | name = "block2" 582 | version = "0.5.1" 583 | source = "registry+https://github.com/rust-lang/crates.io-index" 584 | checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" 585 | dependencies = [ 586 | "objc2 0.5.2", 587 | ] 588 | 589 | [[package]] 590 | name = "blocking" 591 | version = "1.6.1" 592 | source = "registry+https://github.com/rust-lang/crates.io-index" 593 | checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" 594 | dependencies = [ 595 | "async-channel", 596 | "async-task", 597 | "futures-io", 598 | "futures-lite 2.3.0", 599 | "piper", 600 | ] 601 | 602 | [[package]] 603 | name = "bumpalo" 604 | version = "3.16.0" 605 | source = "registry+https://github.com/rust-lang/crates.io-index" 606 | checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 607 | 608 | [[package]] 609 | name = "bytemuck" 610 | version = "1.18.0" 611 | source = "registry+https://github.com/rust-lang/crates.io-index" 612 | checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" 613 | dependencies = [ 614 | "bytemuck_derive", 615 | ] 616 | 617 | [[package]] 618 | name = "bytemuck_derive" 619 | version = "1.7.1" 620 | source = "registry+https://github.com/rust-lang/crates.io-index" 621 | checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" 622 | dependencies = [ 623 | "proc-macro2", 624 | "quote", 625 | "syn 2.0.77", 626 | ] 627 | 628 | [[package]] 629 | name = "byteorder" 630 | version = "1.5.0" 631 | source = "registry+https://github.com/rust-lang/crates.io-index" 632 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 633 | 634 | [[package]] 635 | name = "byteorder-lite" 636 | version = "0.1.0" 637 | source = "registry+https://github.com/rust-lang/crates.io-index" 638 | checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" 639 | 640 | [[package]] 641 | name = "bytes" 642 | version = "1.7.1" 643 | source = "registry+https://github.com/rust-lang/crates.io-index" 644 | checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" 645 | 646 | [[package]] 647 | name = "calloop" 648 | version = "0.12.4" 649 | source = "registry+https://github.com/rust-lang/crates.io-index" 650 | checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" 651 | dependencies = [ 652 | "bitflags 2.6.0", 653 | "log", 654 | "polling 3.7.3", 655 | "rustix 0.38.36", 656 | "slab", 657 | "thiserror", 658 | ] 659 | 660 | [[package]] 661 | name = "calloop" 662 | version = "0.13.0" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" 665 | dependencies = [ 666 | "bitflags 2.6.0", 667 | "log", 668 | "polling 3.7.3", 669 | "rustix 0.38.36", 670 | "slab", 671 | "thiserror", 672 | ] 673 | 674 | [[package]] 675 | name = "calloop-wayland-source" 676 | version = "0.2.0" 677 | source = "registry+https://github.com/rust-lang/crates.io-index" 678 | checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" 679 | dependencies = [ 680 | "calloop 0.12.4", 681 | "rustix 0.38.36", 682 | "wayland-backend", 683 | "wayland-client", 684 | ] 685 | 686 | [[package]] 687 | name = "calloop-wayland-source" 688 | version = "0.3.0" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" 691 | dependencies = [ 692 | "calloop 0.13.0", 693 | "rustix 0.38.36", 694 | "wayland-backend", 695 | "wayland-client", 696 | ] 697 | 698 | [[package]] 699 | name = "cc" 700 | version = "1.1.18" 701 | source = "registry+https://github.com/rust-lang/crates.io-index" 702 | checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" 703 | dependencies = [ 704 | "jobserver", 705 | "libc", 706 | "shlex", 707 | ] 708 | 709 | [[package]] 710 | name = "cesu8" 711 | version = "1.1.0" 712 | source = "registry+https://github.com/rust-lang/crates.io-index" 713 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 714 | 715 | [[package]] 716 | name = "cfg-if" 717 | version = "1.0.0" 718 | source = "registry+https://github.com/rust-lang/crates.io-index" 719 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 720 | 721 | [[package]] 722 | name = "cfg_aliases" 723 | version = "0.1.1" 724 | source = "registry+https://github.com/rust-lang/crates.io-index" 725 | checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" 726 | 727 | [[package]] 728 | name = "cgl" 729 | version = "0.3.2" 730 | source = "registry+https://github.com/rust-lang/crates.io-index" 731 | checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" 732 | dependencies = [ 733 | "libc", 734 | ] 735 | 736 | [[package]] 737 | name = "clipboard-win" 738 | version = "5.4.0" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" 741 | dependencies = [ 742 | "error-code", 743 | ] 744 | 745 | [[package]] 746 | name = "codespan-reporting" 747 | version = "0.11.1" 748 | source = "registry+https://github.com/rust-lang/crates.io-index" 749 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 750 | dependencies = [ 751 | "termcolor", 752 | "unicode-width", 753 | ] 754 | 755 | [[package]] 756 | name = "com" 757 | version = "0.6.0" 758 | source = "registry+https://github.com/rust-lang/crates.io-index" 759 | checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" 760 | dependencies = [ 761 | "com_macros", 762 | ] 763 | 764 | [[package]] 765 | name = "com_macros" 766 | version = "0.6.0" 767 | source = "registry+https://github.com/rust-lang/crates.io-index" 768 | checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" 769 | dependencies = [ 770 | "com_macros_support", 771 | "proc-macro2", 772 | "syn 1.0.109", 773 | ] 774 | 775 | [[package]] 776 | name = "com_macros_support" 777 | version = "0.6.0" 778 | source = "registry+https://github.com/rust-lang/crates.io-index" 779 | checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" 780 | dependencies = [ 781 | "proc-macro2", 782 | "quote", 783 | "syn 1.0.109", 784 | ] 785 | 786 | [[package]] 787 | name = "combine" 788 | version = "4.6.7" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" 791 | dependencies = [ 792 | "bytes", 793 | "memchr", 794 | ] 795 | 796 | [[package]] 797 | name = "concurrent-queue" 798 | version = "2.5.0" 799 | source = "registry+https://github.com/rust-lang/crates.io-index" 800 | checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 801 | dependencies = [ 802 | "crossbeam-utils", 803 | ] 804 | 805 | [[package]] 806 | name = "core-foundation" 807 | version = "0.9.4" 808 | source = "registry+https://github.com/rust-lang/crates.io-index" 809 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 810 | dependencies = [ 811 | "core-foundation-sys", 812 | "libc", 813 | ] 814 | 815 | [[package]] 816 | name = "core-foundation-sys" 817 | version = "0.8.7" 818 | source = "registry+https://github.com/rust-lang/crates.io-index" 819 | checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 820 | 821 | [[package]] 822 | name = "core-graphics" 823 | version = "0.23.2" 824 | source = "registry+https://github.com/rust-lang/crates.io-index" 825 | checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" 826 | dependencies = [ 827 | "bitflags 1.3.2", 828 | "core-foundation", 829 | "core-graphics-types", 830 | "foreign-types", 831 | "libc", 832 | ] 833 | 834 | [[package]] 835 | name = "core-graphics-types" 836 | version = "0.1.3" 837 | source = "registry+https://github.com/rust-lang/crates.io-index" 838 | checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 839 | dependencies = [ 840 | "bitflags 1.3.2", 841 | "core-foundation", 842 | "libc", 843 | ] 844 | 845 | [[package]] 846 | name = "cpufeatures" 847 | version = "0.2.14" 848 | source = "registry+https://github.com/rust-lang/crates.io-index" 849 | checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" 850 | dependencies = [ 851 | "libc", 852 | ] 853 | 854 | [[package]] 855 | name = "crc32fast" 856 | version = "1.4.2" 857 | source = "registry+https://github.com/rust-lang/crates.io-index" 858 | checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 859 | dependencies = [ 860 | "cfg-if", 861 | ] 862 | 863 | [[package]] 864 | name = "crossbeam-utils" 865 | version = "0.8.20" 866 | source = "registry+https://github.com/rust-lang/crates.io-index" 867 | checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" 868 | 869 | [[package]] 870 | name = "crypto-common" 871 | version = "0.1.6" 872 | source = "registry+https://github.com/rust-lang/crates.io-index" 873 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 874 | dependencies = [ 875 | "generic-array", 876 | "typenum", 877 | ] 878 | 879 | [[package]] 880 | name = "cursor-icon" 881 | version = "1.1.0" 882 | source = "registry+https://github.com/rust-lang/crates.io-index" 883 | checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" 884 | 885 | [[package]] 886 | name = "derivative" 887 | version = "2.2.0" 888 | source = "registry+https://github.com/rust-lang/crates.io-index" 889 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 890 | dependencies = [ 891 | "proc-macro2", 892 | "quote", 893 | "syn 1.0.109", 894 | ] 895 | 896 | [[package]] 897 | name = "digest" 898 | version = "0.10.7" 899 | source = "registry+https://github.com/rust-lang/crates.io-index" 900 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 901 | dependencies = [ 902 | "block-buffer", 903 | "crypto-common", 904 | ] 905 | 906 | [[package]] 907 | name = "dispatch" 908 | version = "0.2.0" 909 | source = "registry+https://github.com/rust-lang/crates.io-index" 910 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 911 | 912 | [[package]] 913 | name = "dlib" 914 | version = "0.5.2" 915 | source = "registry+https://github.com/rust-lang/crates.io-index" 916 | checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" 917 | dependencies = [ 918 | "libloading 0.8.5", 919 | ] 920 | 921 | [[package]] 922 | name = "document-features" 923 | version = "0.2.10" 924 | source = "registry+https://github.com/rust-lang/crates.io-index" 925 | checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" 926 | dependencies = [ 927 | "litrs", 928 | ] 929 | 930 | [[package]] 931 | name = "downcast-rs" 932 | version = "1.2.1" 933 | source = "registry+https://github.com/rust-lang/crates.io-index" 934 | checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" 935 | 936 | [[package]] 937 | name = "ecolor" 938 | version = "0.28.1" 939 | source = "registry+https://github.com/rust-lang/crates.io-index" 940 | checksum = "2e6b451ff1143f6de0f33fc7f1b68fecfd2c7de06e104de96c4514de3f5396f8" 941 | dependencies = [ 942 | "bytemuck", 943 | "emath", 944 | ] 945 | 946 | [[package]] 947 | name = "eframe" 948 | version = "0.28.1" 949 | source = "registry+https://github.com/rust-lang/crates.io-index" 950 | checksum = "6490ef800b2e41ee129b1f32f9ac15f713233fe3bc18e241a1afe1e4fb6811e0" 951 | dependencies = [ 952 | "ahash", 953 | "bytemuck", 954 | "document-features", 955 | "egui", 956 | "egui-wgpu", 957 | "egui-winit", 958 | "egui_glow", 959 | "glow", 960 | "glutin", 961 | "glutin-winit", 962 | "image", 963 | "js-sys", 964 | "log", 965 | "objc2 0.5.2", 966 | "objc2-app-kit", 967 | "objc2-foundation", 968 | "parking_lot", 969 | "percent-encoding", 970 | "raw-window-handle 0.5.2", 971 | "raw-window-handle 0.6.2", 972 | "static_assertions", 973 | "wasm-bindgen", 974 | "wasm-bindgen-futures", 975 | "web-sys", 976 | "web-time", 977 | "winapi", 978 | "winit", 979 | ] 980 | 981 | [[package]] 982 | name = "egui" 983 | version = "0.28.1" 984 | source = "registry+https://github.com/rust-lang/crates.io-index" 985 | checksum = "20c97e70a2768de630f161bb5392cbd3874fcf72868f14df0e002e82e06cb798" 986 | dependencies = [ 987 | "accesskit", 988 | "ahash", 989 | "emath", 990 | "epaint", 991 | "log", 992 | "nohash-hasher", 993 | ] 994 | 995 | [[package]] 996 | name = "egui-wgpu" 997 | version = "0.28.1" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | checksum = "47c7a7c707877c3362a321ebb4f32be811c0b91f7aebf345fb162405c0218b4c" 1000 | dependencies = [ 1001 | "ahash", 1002 | "bytemuck", 1003 | "document-features", 1004 | "egui", 1005 | "epaint", 1006 | "log", 1007 | "thiserror", 1008 | "type-map", 1009 | "web-time", 1010 | "wgpu", 1011 | "winit", 1012 | ] 1013 | 1014 | [[package]] 1015 | name = "egui-winit" 1016 | version = "0.28.1" 1017 | source = "registry+https://github.com/rust-lang/crates.io-index" 1018 | checksum = "fac4e066af341bf92559f60dbdf2020b2a03c963415349af5f3f8d79ff7a4926" 1019 | dependencies = [ 1020 | "accesskit_winit", 1021 | "ahash", 1022 | "arboard", 1023 | "egui", 1024 | "log", 1025 | "raw-window-handle 0.6.2", 1026 | "smithay-clipboard", 1027 | "web-time", 1028 | "webbrowser", 1029 | "winit", 1030 | ] 1031 | 1032 | [[package]] 1033 | name = "egui_glow" 1034 | version = "0.28.1" 1035 | source = "registry+https://github.com/rust-lang/crates.io-index" 1036 | checksum = "4e2bdc8b38cfa17cc712c4ae079e30c71c00cd4c2763c9e16dc7860a02769103" 1037 | dependencies = [ 1038 | "ahash", 1039 | "bytemuck", 1040 | "egui", 1041 | "glow", 1042 | "log", 1043 | "memoffset 0.9.1", 1044 | "wasm-bindgen", 1045 | "web-sys", 1046 | "winit", 1047 | ] 1048 | 1049 | [[package]] 1050 | name = "emath" 1051 | version = "0.28.1" 1052 | source = "registry+https://github.com/rust-lang/crates.io-index" 1053 | checksum = "0a6a21708405ea88f63d8309650b4d77431f4bc28fb9d8e6f77d3963b51249e6" 1054 | dependencies = [ 1055 | "bytemuck", 1056 | ] 1057 | 1058 | [[package]] 1059 | name = "enumflags2" 1060 | version = "0.7.10" 1061 | source = "registry+https://github.com/rust-lang/crates.io-index" 1062 | checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" 1063 | dependencies = [ 1064 | "enumflags2_derive", 1065 | "serde", 1066 | ] 1067 | 1068 | [[package]] 1069 | name = "enumflags2_derive" 1070 | version = "0.7.10" 1071 | source = "registry+https://github.com/rust-lang/crates.io-index" 1072 | checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" 1073 | dependencies = [ 1074 | "proc-macro2", 1075 | "quote", 1076 | "syn 2.0.77", 1077 | ] 1078 | 1079 | [[package]] 1080 | name = "epaint" 1081 | version = "0.28.1" 1082 | source = "registry+https://github.com/rust-lang/crates.io-index" 1083 | checksum = "3f0dcc0a0771e7500e94cd1cb797bd13c9f23b9409bdc3c824e2cbc562b7fa01" 1084 | dependencies = [ 1085 | "ab_glyph", 1086 | "ahash", 1087 | "bytemuck", 1088 | "ecolor", 1089 | "emath", 1090 | "log", 1091 | "nohash-hasher", 1092 | "parking_lot", 1093 | ] 1094 | 1095 | [[package]] 1096 | name = "equivalent" 1097 | version = "1.0.1" 1098 | source = "registry+https://github.com/rust-lang/crates.io-index" 1099 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 1100 | 1101 | [[package]] 1102 | name = "errno" 1103 | version = "0.3.9" 1104 | source = "registry+https://github.com/rust-lang/crates.io-index" 1105 | checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" 1106 | dependencies = [ 1107 | "libc", 1108 | "windows-sys 0.52.0", 1109 | ] 1110 | 1111 | [[package]] 1112 | name = "error-code" 1113 | version = "3.2.0" 1114 | source = "registry+https://github.com/rust-lang/crates.io-index" 1115 | checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" 1116 | 1117 | [[package]] 1118 | name = "event-listener" 1119 | version = "2.5.3" 1120 | source = "registry+https://github.com/rust-lang/crates.io-index" 1121 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 1122 | 1123 | [[package]] 1124 | name = "event-listener" 1125 | version = "3.1.0" 1126 | source = "registry+https://github.com/rust-lang/crates.io-index" 1127 | checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" 1128 | dependencies = [ 1129 | "concurrent-queue", 1130 | "parking", 1131 | "pin-project-lite", 1132 | ] 1133 | 1134 | [[package]] 1135 | name = "event-listener" 1136 | version = "5.3.1" 1137 | source = "registry+https://github.com/rust-lang/crates.io-index" 1138 | checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" 1139 | dependencies = [ 1140 | "concurrent-queue", 1141 | "parking", 1142 | "pin-project-lite", 1143 | ] 1144 | 1145 | [[package]] 1146 | name = "event-listener-strategy" 1147 | version = "0.5.2" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" 1150 | dependencies = [ 1151 | "event-listener 5.3.1", 1152 | "pin-project-lite", 1153 | ] 1154 | 1155 | [[package]] 1156 | name = "fastrand" 1157 | version = "1.9.0" 1158 | source = "registry+https://github.com/rust-lang/crates.io-index" 1159 | checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" 1160 | dependencies = [ 1161 | "instant", 1162 | ] 1163 | 1164 | [[package]] 1165 | name = "fastrand" 1166 | version = "2.1.1" 1167 | source = "registry+https://github.com/rust-lang/crates.io-index" 1168 | checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" 1169 | 1170 | [[package]] 1171 | name = "fdeflate" 1172 | version = "0.3.4" 1173 | source = "registry+https://github.com/rust-lang/crates.io-index" 1174 | checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" 1175 | dependencies = [ 1176 | "simd-adler32", 1177 | ] 1178 | 1179 | [[package]] 1180 | name = "flate2" 1181 | version = "1.0.33" 1182 | source = "registry+https://github.com/rust-lang/crates.io-index" 1183 | checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" 1184 | dependencies = [ 1185 | "crc32fast", 1186 | "miniz_oxide 0.8.0", 1187 | ] 1188 | 1189 | [[package]] 1190 | name = "foreign-types" 1191 | version = "0.5.0" 1192 | source = "registry+https://github.com/rust-lang/crates.io-index" 1193 | checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 1194 | dependencies = [ 1195 | "foreign-types-macros", 1196 | "foreign-types-shared", 1197 | ] 1198 | 1199 | [[package]] 1200 | name = "foreign-types-macros" 1201 | version = "0.2.3" 1202 | source = "registry+https://github.com/rust-lang/crates.io-index" 1203 | checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 1204 | dependencies = [ 1205 | "proc-macro2", 1206 | "quote", 1207 | "syn 2.0.77", 1208 | ] 1209 | 1210 | [[package]] 1211 | name = "foreign-types-shared" 1212 | version = "0.3.1" 1213 | source = "registry+https://github.com/rust-lang/crates.io-index" 1214 | checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 1215 | 1216 | [[package]] 1217 | name = "form_urlencoded" 1218 | version = "1.2.1" 1219 | source = "registry+https://github.com/rust-lang/crates.io-index" 1220 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 1221 | dependencies = [ 1222 | "percent-encoding", 1223 | ] 1224 | 1225 | [[package]] 1226 | name = "futures-core" 1227 | version = "0.3.30" 1228 | source = "registry+https://github.com/rust-lang/crates.io-index" 1229 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 1230 | 1231 | [[package]] 1232 | name = "futures-io" 1233 | version = "0.3.30" 1234 | source = "registry+https://github.com/rust-lang/crates.io-index" 1235 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 1236 | 1237 | [[package]] 1238 | name = "futures-lite" 1239 | version = "1.13.0" 1240 | source = "registry+https://github.com/rust-lang/crates.io-index" 1241 | checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" 1242 | dependencies = [ 1243 | "fastrand 1.9.0", 1244 | "futures-core", 1245 | "futures-io", 1246 | "memchr", 1247 | "parking", 1248 | "pin-project-lite", 1249 | "waker-fn", 1250 | ] 1251 | 1252 | [[package]] 1253 | name = "futures-lite" 1254 | version = "2.3.0" 1255 | source = "registry+https://github.com/rust-lang/crates.io-index" 1256 | checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" 1257 | dependencies = [ 1258 | "fastrand 2.1.1", 1259 | "futures-core", 1260 | "futures-io", 1261 | "parking", 1262 | "pin-project-lite", 1263 | ] 1264 | 1265 | [[package]] 1266 | name = "futures-sink" 1267 | version = "0.3.30" 1268 | source = "registry+https://github.com/rust-lang/crates.io-index" 1269 | checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" 1270 | 1271 | [[package]] 1272 | name = "futures-task" 1273 | version = "0.3.30" 1274 | source = "registry+https://github.com/rust-lang/crates.io-index" 1275 | checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 1276 | 1277 | [[package]] 1278 | name = "futures-util" 1279 | version = "0.3.30" 1280 | source = "registry+https://github.com/rust-lang/crates.io-index" 1281 | checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 1282 | dependencies = [ 1283 | "futures-core", 1284 | "futures-io", 1285 | "futures-sink", 1286 | "futures-task", 1287 | "memchr", 1288 | "pin-project-lite", 1289 | "pin-utils", 1290 | "slab", 1291 | ] 1292 | 1293 | [[package]] 1294 | name = "generic-array" 1295 | version = "0.14.7" 1296 | source = "registry+https://github.com/rust-lang/crates.io-index" 1297 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1298 | dependencies = [ 1299 | "typenum", 1300 | "version_check", 1301 | ] 1302 | 1303 | [[package]] 1304 | name = "gethostname" 1305 | version = "0.4.3" 1306 | source = "registry+https://github.com/rust-lang/crates.io-index" 1307 | checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" 1308 | dependencies = [ 1309 | "libc", 1310 | "windows-targets 0.48.5", 1311 | ] 1312 | 1313 | [[package]] 1314 | name = "getrandom" 1315 | version = "0.2.15" 1316 | source = "registry+https://github.com/rust-lang/crates.io-index" 1317 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 1318 | dependencies = [ 1319 | "cfg-if", 1320 | "libc", 1321 | "wasi", 1322 | ] 1323 | 1324 | [[package]] 1325 | name = "gimli" 1326 | version = "0.31.0" 1327 | source = "registry+https://github.com/rust-lang/crates.io-index" 1328 | checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" 1329 | 1330 | [[package]] 1331 | name = "gl_generator" 1332 | version = "0.14.0" 1333 | source = "registry+https://github.com/rust-lang/crates.io-index" 1334 | checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" 1335 | dependencies = [ 1336 | "khronos_api", 1337 | "log", 1338 | "xml-rs", 1339 | ] 1340 | 1341 | [[package]] 1342 | name = "glow" 1343 | version = "0.13.1" 1344 | source = "registry+https://github.com/rust-lang/crates.io-index" 1345 | checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" 1346 | dependencies = [ 1347 | "js-sys", 1348 | "slotmap", 1349 | "wasm-bindgen", 1350 | "web-sys", 1351 | ] 1352 | 1353 | [[package]] 1354 | name = "glutin" 1355 | version = "0.31.3" 1356 | source = "registry+https://github.com/rust-lang/crates.io-index" 1357 | checksum = "18fcd4ae4e86d991ad1300b8f57166e5be0c95ef1f63f3f5b827f8a164548746" 1358 | dependencies = [ 1359 | "bitflags 2.6.0", 1360 | "cfg_aliases", 1361 | "cgl", 1362 | "core-foundation", 1363 | "dispatch", 1364 | "glutin_egl_sys", 1365 | "glutin_glx_sys", 1366 | "glutin_wgl_sys", 1367 | "icrate", 1368 | "libloading 0.8.5", 1369 | "objc2 0.4.1", 1370 | "once_cell", 1371 | "raw-window-handle 0.5.2", 1372 | "wayland-sys", 1373 | "windows-sys 0.48.0", 1374 | "x11-dl", 1375 | ] 1376 | 1377 | [[package]] 1378 | name = "glutin-winit" 1379 | version = "0.4.2" 1380 | source = "registry+https://github.com/rust-lang/crates.io-index" 1381 | checksum = "1ebcdfba24f73b8412c5181e56f092b5eff16671c514ce896b258a0a64bd7735" 1382 | dependencies = [ 1383 | "cfg_aliases", 1384 | "glutin", 1385 | "raw-window-handle 0.5.2", 1386 | "winit", 1387 | ] 1388 | 1389 | [[package]] 1390 | name = "glutin_egl_sys" 1391 | version = "0.6.0" 1392 | source = "registry+https://github.com/rust-lang/crates.io-index" 1393 | checksum = "77cc5623f5309ef433c3dd4ca1223195347fe62c413da8e2fdd0eb76db2d9bcd" 1394 | dependencies = [ 1395 | "gl_generator", 1396 | "windows-sys 0.48.0", 1397 | ] 1398 | 1399 | [[package]] 1400 | name = "glutin_glx_sys" 1401 | version = "0.5.0" 1402 | source = "registry+https://github.com/rust-lang/crates.io-index" 1403 | checksum = "a165fd686c10dcc2d45380b35796e577eacfd43d4660ee741ec8ebe2201b3b4f" 1404 | dependencies = [ 1405 | "gl_generator", 1406 | "x11-dl", 1407 | ] 1408 | 1409 | [[package]] 1410 | name = "glutin_wgl_sys" 1411 | version = "0.5.0" 1412 | source = "registry+https://github.com/rust-lang/crates.io-index" 1413 | checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" 1414 | dependencies = [ 1415 | "gl_generator", 1416 | ] 1417 | 1418 | [[package]] 1419 | name = "gpu-alloc" 1420 | version = "0.6.0" 1421 | source = "registry+https://github.com/rust-lang/crates.io-index" 1422 | checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" 1423 | dependencies = [ 1424 | "bitflags 2.6.0", 1425 | "gpu-alloc-types", 1426 | ] 1427 | 1428 | [[package]] 1429 | name = "gpu-alloc-types" 1430 | version = "0.3.0" 1431 | source = "registry+https://github.com/rust-lang/crates.io-index" 1432 | checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" 1433 | dependencies = [ 1434 | "bitflags 2.6.0", 1435 | ] 1436 | 1437 | [[package]] 1438 | name = "gpu-allocator" 1439 | version = "0.25.0" 1440 | source = "registry+https://github.com/rust-lang/crates.io-index" 1441 | checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" 1442 | dependencies = [ 1443 | "log", 1444 | "presser", 1445 | "thiserror", 1446 | "winapi", 1447 | "windows 0.52.0", 1448 | ] 1449 | 1450 | [[package]] 1451 | name = "gpu-descriptor" 1452 | version = "0.3.0" 1453 | source = "registry+https://github.com/rust-lang/crates.io-index" 1454 | checksum = "9c08c1f623a8d0b722b8b99f821eb0ba672a1618f0d3b16ddbee1cedd2dd8557" 1455 | dependencies = [ 1456 | "bitflags 2.6.0", 1457 | "gpu-descriptor-types", 1458 | "hashbrown", 1459 | ] 1460 | 1461 | [[package]] 1462 | name = "gpu-descriptor-types" 1463 | version = "0.2.0" 1464 | source = "registry+https://github.com/rust-lang/crates.io-index" 1465 | checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" 1466 | dependencies = [ 1467 | "bitflags 2.6.0", 1468 | ] 1469 | 1470 | [[package]] 1471 | name = "hashbrown" 1472 | version = "0.14.5" 1473 | source = "registry+https://github.com/rust-lang/crates.io-index" 1474 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1475 | dependencies = [ 1476 | "ahash", 1477 | "allocator-api2", 1478 | ] 1479 | 1480 | [[package]] 1481 | name = "hassle-rs" 1482 | version = "0.11.0" 1483 | source = "registry+https://github.com/rust-lang/crates.io-index" 1484 | checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" 1485 | dependencies = [ 1486 | "bitflags 2.6.0", 1487 | "com", 1488 | "libc", 1489 | "libloading 0.8.5", 1490 | "thiserror", 1491 | "widestring", 1492 | "winapi", 1493 | ] 1494 | 1495 | [[package]] 1496 | name = "hermit-abi" 1497 | version = "0.3.9" 1498 | source = "registry+https://github.com/rust-lang/crates.io-index" 1499 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 1500 | 1501 | [[package]] 1502 | name = "hermit-abi" 1503 | version = "0.4.0" 1504 | source = "registry+https://github.com/rust-lang/crates.io-index" 1505 | checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" 1506 | 1507 | [[package]] 1508 | name = "hex" 1509 | version = "0.4.3" 1510 | source = "registry+https://github.com/rust-lang/crates.io-index" 1511 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1512 | 1513 | [[package]] 1514 | name = "hexf-parse" 1515 | version = "0.2.1" 1516 | source = "registry+https://github.com/rust-lang/crates.io-index" 1517 | checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" 1518 | 1519 | [[package]] 1520 | name = "home" 1521 | version = "0.5.9" 1522 | source = "registry+https://github.com/rust-lang/crates.io-index" 1523 | checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" 1524 | dependencies = [ 1525 | "windows-sys 0.52.0", 1526 | ] 1527 | 1528 | [[package]] 1529 | name = "icrate" 1530 | version = "0.0.4" 1531 | source = "registry+https://github.com/rust-lang/crates.io-index" 1532 | checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" 1533 | dependencies = [ 1534 | "block2 0.3.0", 1535 | "dispatch", 1536 | "objc2 0.4.1", 1537 | ] 1538 | 1539 | [[package]] 1540 | name = "idna" 1541 | version = "0.5.0" 1542 | source = "registry+https://github.com/rust-lang/crates.io-index" 1543 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 1544 | dependencies = [ 1545 | "unicode-bidi", 1546 | "unicode-normalization", 1547 | ] 1548 | 1549 | [[package]] 1550 | name = "image" 1551 | version = "0.25.2" 1552 | source = "registry+https://github.com/rust-lang/crates.io-index" 1553 | checksum = "99314c8a2152b8ddb211f924cdae532d8c5e4c8bb54728e12fff1b0cd5963a10" 1554 | dependencies = [ 1555 | "bytemuck", 1556 | "byteorder-lite", 1557 | "num-traits", 1558 | "png", 1559 | ] 1560 | 1561 | [[package]] 1562 | name = "indexmap" 1563 | version = "2.5.0" 1564 | source = "registry+https://github.com/rust-lang/crates.io-index" 1565 | checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" 1566 | dependencies = [ 1567 | "equivalent", 1568 | "hashbrown", 1569 | ] 1570 | 1571 | [[package]] 1572 | name = "instant" 1573 | version = "0.1.13" 1574 | source = "registry+https://github.com/rust-lang/crates.io-index" 1575 | checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 1576 | dependencies = [ 1577 | "cfg-if", 1578 | ] 1579 | 1580 | [[package]] 1581 | name = "io-lifetimes" 1582 | version = "1.0.11" 1583 | source = "registry+https://github.com/rust-lang/crates.io-index" 1584 | checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" 1585 | dependencies = [ 1586 | "hermit-abi 0.3.9", 1587 | "libc", 1588 | "windows-sys 0.48.0", 1589 | ] 1590 | 1591 | [[package]] 1592 | name = "jni" 1593 | version = "0.21.1" 1594 | source = "registry+https://github.com/rust-lang/crates.io-index" 1595 | checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 1596 | dependencies = [ 1597 | "cesu8", 1598 | "cfg-if", 1599 | "combine", 1600 | "jni-sys", 1601 | "log", 1602 | "thiserror", 1603 | "walkdir", 1604 | "windows-sys 0.45.0", 1605 | ] 1606 | 1607 | [[package]] 1608 | name = "jni-sys" 1609 | version = "0.3.0" 1610 | source = "registry+https://github.com/rust-lang/crates.io-index" 1611 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1612 | 1613 | [[package]] 1614 | name = "jobserver" 1615 | version = "0.1.32" 1616 | source = "registry+https://github.com/rust-lang/crates.io-index" 1617 | checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" 1618 | dependencies = [ 1619 | "libc", 1620 | ] 1621 | 1622 | [[package]] 1623 | name = "js-sys" 1624 | version = "0.3.70" 1625 | source = "registry+https://github.com/rust-lang/crates.io-index" 1626 | checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" 1627 | dependencies = [ 1628 | "wasm-bindgen", 1629 | ] 1630 | 1631 | [[package]] 1632 | name = "khronos-egl" 1633 | version = "6.0.0" 1634 | source = "registry+https://github.com/rust-lang/crates.io-index" 1635 | checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" 1636 | dependencies = [ 1637 | "libc", 1638 | "libloading 0.8.5", 1639 | "pkg-config", 1640 | ] 1641 | 1642 | [[package]] 1643 | name = "khronos_api" 1644 | version = "3.1.0" 1645 | source = "registry+https://github.com/rust-lang/crates.io-index" 1646 | checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 1647 | 1648 | [[package]] 1649 | name = "libc" 1650 | version = "0.2.158" 1651 | source = "registry+https://github.com/rust-lang/crates.io-index" 1652 | checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" 1653 | 1654 | [[package]] 1655 | name = "libloading" 1656 | version = "0.7.4" 1657 | source = "registry+https://github.com/rust-lang/crates.io-index" 1658 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 1659 | dependencies = [ 1660 | "cfg-if", 1661 | "winapi", 1662 | ] 1663 | 1664 | [[package]] 1665 | name = "libloading" 1666 | version = "0.8.5" 1667 | source = "registry+https://github.com/rust-lang/crates.io-index" 1668 | checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" 1669 | dependencies = [ 1670 | "cfg-if", 1671 | "windows-targets 0.52.6", 1672 | ] 1673 | 1674 | [[package]] 1675 | name = "libredox" 1676 | version = "0.0.2" 1677 | source = "registry+https://github.com/rust-lang/crates.io-index" 1678 | checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" 1679 | dependencies = [ 1680 | "bitflags 2.6.0", 1681 | "libc", 1682 | "redox_syscall 0.4.1", 1683 | ] 1684 | 1685 | [[package]] 1686 | name = "linux-raw-sys" 1687 | version = "0.3.8" 1688 | source = "registry+https://github.com/rust-lang/crates.io-index" 1689 | checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" 1690 | 1691 | [[package]] 1692 | name = "linux-raw-sys" 1693 | version = "0.4.14" 1694 | source = "registry+https://github.com/rust-lang/crates.io-index" 1695 | checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" 1696 | 1697 | [[package]] 1698 | name = "litrs" 1699 | version = "0.4.1" 1700 | source = "registry+https://github.com/rust-lang/crates.io-index" 1701 | checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" 1702 | 1703 | [[package]] 1704 | name = "lock_api" 1705 | version = "0.4.12" 1706 | source = "registry+https://github.com/rust-lang/crates.io-index" 1707 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 1708 | dependencies = [ 1709 | "autocfg", 1710 | "scopeguard", 1711 | ] 1712 | 1713 | [[package]] 1714 | name = "log" 1715 | version = "0.4.22" 1716 | source = "registry+https://github.com/rust-lang/crates.io-index" 1717 | checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" 1718 | 1719 | [[package]] 1720 | name = "malloc_buf" 1721 | version = "0.0.6" 1722 | source = "registry+https://github.com/rust-lang/crates.io-index" 1723 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1724 | dependencies = [ 1725 | "libc", 1726 | ] 1727 | 1728 | [[package]] 1729 | name = "memchr" 1730 | version = "2.7.4" 1731 | source = "registry+https://github.com/rust-lang/crates.io-index" 1732 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 1733 | 1734 | [[package]] 1735 | name = "memmap2" 1736 | version = "0.9.4" 1737 | source = "registry+https://github.com/rust-lang/crates.io-index" 1738 | checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" 1739 | dependencies = [ 1740 | "libc", 1741 | ] 1742 | 1743 | [[package]] 1744 | name = "memoffset" 1745 | version = "0.7.1" 1746 | source = "registry+https://github.com/rust-lang/crates.io-index" 1747 | checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" 1748 | dependencies = [ 1749 | "autocfg", 1750 | ] 1751 | 1752 | [[package]] 1753 | name = "memoffset" 1754 | version = "0.9.1" 1755 | source = "registry+https://github.com/rust-lang/crates.io-index" 1756 | checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 1757 | dependencies = [ 1758 | "autocfg", 1759 | ] 1760 | 1761 | [[package]] 1762 | name = "metal" 1763 | version = "0.28.0" 1764 | source = "registry+https://github.com/rust-lang/crates.io-index" 1765 | checksum = "5637e166ea14be6063a3f8ba5ccb9a4159df7d8f6d61c02fc3d480b1f90dcfcb" 1766 | dependencies = [ 1767 | "bitflags 2.6.0", 1768 | "block", 1769 | "core-graphics-types", 1770 | "foreign-types", 1771 | "log", 1772 | "objc", 1773 | "paste", 1774 | ] 1775 | 1776 | [[package]] 1777 | name = "miniz_oxide" 1778 | version = "0.7.4" 1779 | source = "registry+https://github.com/rust-lang/crates.io-index" 1780 | checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" 1781 | dependencies = [ 1782 | "adler", 1783 | "simd-adler32", 1784 | ] 1785 | 1786 | [[package]] 1787 | name = "miniz_oxide" 1788 | version = "0.8.0" 1789 | source = "registry+https://github.com/rust-lang/crates.io-index" 1790 | checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" 1791 | dependencies = [ 1792 | "adler2", 1793 | ] 1794 | 1795 | [[package]] 1796 | name = "naga" 1797 | version = "0.20.0" 1798 | source = "registry+https://github.com/rust-lang/crates.io-index" 1799 | checksum = "e536ae46fcab0876853bd4a632ede5df4b1c2527a58f6c5a4150fe86be858231" 1800 | dependencies = [ 1801 | "arrayvec", 1802 | "bit-set", 1803 | "bitflags 2.6.0", 1804 | "codespan-reporting", 1805 | "hexf-parse", 1806 | "indexmap", 1807 | "log", 1808 | "num-traits", 1809 | "rustc-hash", 1810 | "spirv", 1811 | "termcolor", 1812 | "thiserror", 1813 | "unicode-xid", 1814 | ] 1815 | 1816 | [[package]] 1817 | name = "ndk" 1818 | version = "0.8.0" 1819 | source = "registry+https://github.com/rust-lang/crates.io-index" 1820 | checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" 1821 | dependencies = [ 1822 | "bitflags 2.6.0", 1823 | "jni-sys", 1824 | "log", 1825 | "ndk-sys", 1826 | "num_enum", 1827 | "raw-window-handle 0.5.2", 1828 | "raw-window-handle 0.6.2", 1829 | "thiserror", 1830 | ] 1831 | 1832 | [[package]] 1833 | name = "ndk-context" 1834 | version = "0.1.1" 1835 | source = "registry+https://github.com/rust-lang/crates.io-index" 1836 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 1837 | 1838 | [[package]] 1839 | name = "ndk-sys" 1840 | version = "0.5.0+25.2.9519653" 1841 | source = "registry+https://github.com/rust-lang/crates.io-index" 1842 | checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" 1843 | dependencies = [ 1844 | "jni-sys", 1845 | ] 1846 | 1847 | [[package]] 1848 | name = "nix" 1849 | version = "0.26.4" 1850 | source = "registry+https://github.com/rust-lang/crates.io-index" 1851 | checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" 1852 | dependencies = [ 1853 | "bitflags 1.3.2", 1854 | "cfg-if", 1855 | "libc", 1856 | "memoffset 0.7.1", 1857 | ] 1858 | 1859 | [[package]] 1860 | name = "nohash-hasher" 1861 | version = "0.2.0" 1862 | source = "registry+https://github.com/rust-lang/crates.io-index" 1863 | checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" 1864 | 1865 | [[package]] 1866 | name = "num-traits" 1867 | version = "0.2.19" 1868 | source = "registry+https://github.com/rust-lang/crates.io-index" 1869 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 1870 | dependencies = [ 1871 | "autocfg", 1872 | ] 1873 | 1874 | [[package]] 1875 | name = "num_enum" 1876 | version = "0.7.3" 1877 | source = "registry+https://github.com/rust-lang/crates.io-index" 1878 | checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" 1879 | dependencies = [ 1880 | "num_enum_derive", 1881 | ] 1882 | 1883 | [[package]] 1884 | name = "num_enum_derive" 1885 | version = "0.7.3" 1886 | source = "registry+https://github.com/rust-lang/crates.io-index" 1887 | checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" 1888 | dependencies = [ 1889 | "proc-macro-crate 3.2.0", 1890 | "proc-macro2", 1891 | "quote", 1892 | "syn 2.0.77", 1893 | ] 1894 | 1895 | [[package]] 1896 | name = "objc" 1897 | version = "0.2.7" 1898 | source = "registry+https://github.com/rust-lang/crates.io-index" 1899 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 1900 | dependencies = [ 1901 | "malloc_buf", 1902 | ] 1903 | 1904 | [[package]] 1905 | name = "objc-sys" 1906 | version = "0.2.0-beta.2" 1907 | source = "registry+https://github.com/rust-lang/crates.io-index" 1908 | checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" 1909 | 1910 | [[package]] 1911 | name = "objc-sys" 1912 | version = "0.3.5" 1913 | source = "registry+https://github.com/rust-lang/crates.io-index" 1914 | checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" 1915 | 1916 | [[package]] 1917 | name = "objc2" 1918 | version = "0.3.0-beta.3.patch-leaks.3" 1919 | source = "registry+https://github.com/rust-lang/crates.io-index" 1920 | checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" 1921 | dependencies = [ 1922 | "block2 0.2.0-alpha.6", 1923 | "objc-sys 0.2.0-beta.2", 1924 | "objc2-encode 2.0.0-pre.2", 1925 | ] 1926 | 1927 | [[package]] 1928 | name = "objc2" 1929 | version = "0.4.1" 1930 | source = "registry+https://github.com/rust-lang/crates.io-index" 1931 | checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" 1932 | dependencies = [ 1933 | "objc-sys 0.3.5", 1934 | "objc2-encode 3.0.0", 1935 | ] 1936 | 1937 | [[package]] 1938 | name = "objc2" 1939 | version = "0.5.2" 1940 | source = "registry+https://github.com/rust-lang/crates.io-index" 1941 | checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" 1942 | dependencies = [ 1943 | "objc-sys 0.3.5", 1944 | "objc2-encode 4.0.3", 1945 | ] 1946 | 1947 | [[package]] 1948 | name = "objc2-app-kit" 1949 | version = "0.2.2" 1950 | source = "registry+https://github.com/rust-lang/crates.io-index" 1951 | checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" 1952 | dependencies = [ 1953 | "bitflags 2.6.0", 1954 | "block2 0.5.1", 1955 | "libc", 1956 | "objc2 0.5.2", 1957 | "objc2-core-data", 1958 | "objc2-core-image", 1959 | "objc2-foundation", 1960 | "objc2-quartz-core", 1961 | ] 1962 | 1963 | [[package]] 1964 | name = "objc2-core-data" 1965 | version = "0.2.2" 1966 | source = "registry+https://github.com/rust-lang/crates.io-index" 1967 | checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" 1968 | dependencies = [ 1969 | "bitflags 2.6.0", 1970 | "block2 0.5.1", 1971 | "objc2 0.5.2", 1972 | "objc2-foundation", 1973 | ] 1974 | 1975 | [[package]] 1976 | name = "objc2-core-image" 1977 | version = "0.2.2" 1978 | source = "registry+https://github.com/rust-lang/crates.io-index" 1979 | checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" 1980 | dependencies = [ 1981 | "block2 0.5.1", 1982 | "objc2 0.5.2", 1983 | "objc2-foundation", 1984 | "objc2-metal", 1985 | ] 1986 | 1987 | [[package]] 1988 | name = "objc2-encode" 1989 | version = "2.0.0-pre.2" 1990 | source = "registry+https://github.com/rust-lang/crates.io-index" 1991 | checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" 1992 | dependencies = [ 1993 | "objc-sys 0.2.0-beta.2", 1994 | ] 1995 | 1996 | [[package]] 1997 | name = "objc2-encode" 1998 | version = "3.0.0" 1999 | source = "registry+https://github.com/rust-lang/crates.io-index" 2000 | checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" 2001 | 2002 | [[package]] 2003 | name = "objc2-encode" 2004 | version = "4.0.3" 2005 | source = "registry+https://github.com/rust-lang/crates.io-index" 2006 | checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" 2007 | 2008 | [[package]] 2009 | name = "objc2-foundation" 2010 | version = "0.2.2" 2011 | source = "registry+https://github.com/rust-lang/crates.io-index" 2012 | checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" 2013 | dependencies = [ 2014 | "bitflags 2.6.0", 2015 | "block2 0.5.1", 2016 | "libc", 2017 | "objc2 0.5.2", 2018 | ] 2019 | 2020 | [[package]] 2021 | name = "objc2-metal" 2022 | version = "0.2.2" 2023 | source = "registry+https://github.com/rust-lang/crates.io-index" 2024 | checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" 2025 | dependencies = [ 2026 | "bitflags 2.6.0", 2027 | "block2 0.5.1", 2028 | "objc2 0.5.2", 2029 | "objc2-foundation", 2030 | ] 2031 | 2032 | [[package]] 2033 | name = "objc2-quartz-core" 2034 | version = "0.2.2" 2035 | source = "registry+https://github.com/rust-lang/crates.io-index" 2036 | checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" 2037 | dependencies = [ 2038 | "bitflags 2.6.0", 2039 | "block2 0.5.1", 2040 | "objc2 0.5.2", 2041 | "objc2-foundation", 2042 | "objc2-metal", 2043 | ] 2044 | 2045 | [[package]] 2046 | name = "object" 2047 | version = "0.36.4" 2048 | source = "registry+https://github.com/rust-lang/crates.io-index" 2049 | checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" 2050 | dependencies = [ 2051 | "memchr", 2052 | ] 2053 | 2054 | [[package]] 2055 | name = "once_cell" 2056 | version = "1.19.0" 2057 | source = "registry+https://github.com/rust-lang/crates.io-index" 2058 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 2059 | 2060 | [[package]] 2061 | name = "oneshot" 2062 | version = "0.1.8" 2063 | source = "registry+https://github.com/rust-lang/crates.io-index" 2064 | checksum = "e296cf87e61c9cfc1a61c3c63a0f7f286ed4554e0e22be84e8a38e1d264a2a29" 2065 | 2066 | [[package]] 2067 | name = "orbclient" 2068 | version = "0.3.47" 2069 | source = "registry+https://github.com/rust-lang/crates.io-index" 2070 | checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" 2071 | dependencies = [ 2072 | "libredox", 2073 | ] 2074 | 2075 | [[package]] 2076 | name = "ordered-stream" 2077 | version = "0.2.0" 2078 | source = "registry+https://github.com/rust-lang/crates.io-index" 2079 | checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" 2080 | dependencies = [ 2081 | "futures-core", 2082 | "pin-project-lite", 2083 | ] 2084 | 2085 | [[package]] 2086 | name = "owned_ttf_parser" 2087 | version = "0.24.0" 2088 | source = "registry+https://github.com/rust-lang/crates.io-index" 2089 | checksum = "490d3a563d3122bf7c911a59b0add9389e5ec0f5f0c3ac6b91ff235a0e6a7f90" 2090 | dependencies = [ 2091 | "ttf-parser", 2092 | ] 2093 | 2094 | [[package]] 2095 | name = "parking" 2096 | version = "2.2.0" 2097 | source = "registry+https://github.com/rust-lang/crates.io-index" 2098 | checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" 2099 | 2100 | [[package]] 2101 | name = "parking_lot" 2102 | version = "0.12.3" 2103 | source = "registry+https://github.com/rust-lang/crates.io-index" 2104 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 2105 | dependencies = [ 2106 | "lock_api", 2107 | "parking_lot_core", 2108 | ] 2109 | 2110 | [[package]] 2111 | name = "parking_lot_core" 2112 | version = "0.9.10" 2113 | source = "registry+https://github.com/rust-lang/crates.io-index" 2114 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 2115 | dependencies = [ 2116 | "cfg-if", 2117 | "libc", 2118 | "redox_syscall 0.5.3", 2119 | "smallvec", 2120 | "windows-targets 0.52.6", 2121 | ] 2122 | 2123 | [[package]] 2124 | name = "paste" 2125 | version = "1.0.15" 2126 | source = "registry+https://github.com/rust-lang/crates.io-index" 2127 | checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 2128 | 2129 | [[package]] 2130 | name = "percent-encoding" 2131 | version = "2.3.1" 2132 | source = "registry+https://github.com/rust-lang/crates.io-index" 2133 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 2134 | 2135 | [[package]] 2136 | name = "pin-project-lite" 2137 | version = "0.2.14" 2138 | source = "registry+https://github.com/rust-lang/crates.io-index" 2139 | checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" 2140 | 2141 | [[package]] 2142 | name = "pin-utils" 2143 | version = "0.1.0" 2144 | source = "registry+https://github.com/rust-lang/crates.io-index" 2145 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2146 | 2147 | [[package]] 2148 | name = "piper" 2149 | version = "0.2.4" 2150 | source = "registry+https://github.com/rust-lang/crates.io-index" 2151 | checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" 2152 | dependencies = [ 2153 | "atomic-waker", 2154 | "fastrand 2.1.1", 2155 | "futures-io", 2156 | ] 2157 | 2158 | [[package]] 2159 | name = "pkg-config" 2160 | version = "0.3.30" 2161 | source = "registry+https://github.com/rust-lang/crates.io-index" 2162 | checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" 2163 | 2164 | [[package]] 2165 | name = "png" 2166 | version = "0.17.13" 2167 | source = "registry+https://github.com/rust-lang/crates.io-index" 2168 | checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" 2169 | dependencies = [ 2170 | "bitflags 1.3.2", 2171 | "crc32fast", 2172 | "fdeflate", 2173 | "flate2", 2174 | "miniz_oxide 0.7.4", 2175 | ] 2176 | 2177 | [[package]] 2178 | name = "polling" 2179 | version = "2.8.0" 2180 | source = "registry+https://github.com/rust-lang/crates.io-index" 2181 | checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" 2182 | dependencies = [ 2183 | "autocfg", 2184 | "bitflags 1.3.2", 2185 | "cfg-if", 2186 | "concurrent-queue", 2187 | "libc", 2188 | "log", 2189 | "pin-project-lite", 2190 | "windows-sys 0.48.0", 2191 | ] 2192 | 2193 | [[package]] 2194 | name = "polling" 2195 | version = "3.7.3" 2196 | source = "registry+https://github.com/rust-lang/crates.io-index" 2197 | checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" 2198 | dependencies = [ 2199 | "cfg-if", 2200 | "concurrent-queue", 2201 | "hermit-abi 0.4.0", 2202 | "pin-project-lite", 2203 | "rustix 0.38.36", 2204 | "tracing", 2205 | "windows-sys 0.59.0", 2206 | ] 2207 | 2208 | [[package]] 2209 | name = "ppv-lite86" 2210 | version = "0.2.20" 2211 | source = "registry+https://github.com/rust-lang/crates.io-index" 2212 | checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" 2213 | dependencies = [ 2214 | "zerocopy", 2215 | ] 2216 | 2217 | [[package]] 2218 | name = "presser" 2219 | version = "0.3.1" 2220 | source = "registry+https://github.com/rust-lang/crates.io-index" 2221 | checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" 2222 | 2223 | [[package]] 2224 | name = "proc-macro-crate" 2225 | version = "1.3.1" 2226 | source = "registry+https://github.com/rust-lang/crates.io-index" 2227 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 2228 | dependencies = [ 2229 | "once_cell", 2230 | "toml_edit 0.19.15", 2231 | ] 2232 | 2233 | [[package]] 2234 | name = "proc-macro-crate" 2235 | version = "3.2.0" 2236 | source = "registry+https://github.com/rust-lang/crates.io-index" 2237 | checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" 2238 | dependencies = [ 2239 | "toml_edit 0.22.20", 2240 | ] 2241 | 2242 | [[package]] 2243 | name = "proc-macro2" 2244 | version = "1.0.86" 2245 | source = "registry+https://github.com/rust-lang/crates.io-index" 2246 | checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" 2247 | dependencies = [ 2248 | "unicode-ident", 2249 | ] 2250 | 2251 | [[package]] 2252 | name = "profiling" 2253 | version = "1.0.15" 2254 | source = "registry+https://github.com/rust-lang/crates.io-index" 2255 | checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" 2256 | 2257 | [[package]] 2258 | name = "quick-xml" 2259 | version = "0.36.1" 2260 | source = "registry+https://github.com/rust-lang/crates.io-index" 2261 | checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" 2262 | dependencies = [ 2263 | "memchr", 2264 | ] 2265 | 2266 | [[package]] 2267 | name = "quote" 2268 | version = "1.0.37" 2269 | source = "registry+https://github.com/rust-lang/crates.io-index" 2270 | checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" 2271 | dependencies = [ 2272 | "proc-macro2", 2273 | ] 2274 | 2275 | [[package]] 2276 | name = "rand" 2277 | version = "0.8.5" 2278 | source = "registry+https://github.com/rust-lang/crates.io-index" 2279 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 2280 | dependencies = [ 2281 | "libc", 2282 | "rand_chacha", 2283 | "rand_core", 2284 | ] 2285 | 2286 | [[package]] 2287 | name = "rand_chacha" 2288 | version = "0.3.1" 2289 | source = "registry+https://github.com/rust-lang/crates.io-index" 2290 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2291 | dependencies = [ 2292 | "ppv-lite86", 2293 | "rand_core", 2294 | ] 2295 | 2296 | [[package]] 2297 | name = "rand_core" 2298 | version = "0.6.4" 2299 | source = "registry+https://github.com/rust-lang/crates.io-index" 2300 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2301 | dependencies = [ 2302 | "getrandom", 2303 | ] 2304 | 2305 | [[package]] 2306 | name = "raw-window-handle" 2307 | version = "0.5.2" 2308 | source = "registry+https://github.com/rust-lang/crates.io-index" 2309 | checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" 2310 | 2311 | [[package]] 2312 | name = "raw-window-handle" 2313 | version = "0.6.2" 2314 | source = "registry+https://github.com/rust-lang/crates.io-index" 2315 | checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 2316 | 2317 | [[package]] 2318 | name = "redox_syscall" 2319 | version = "0.3.5" 2320 | source = "registry+https://github.com/rust-lang/crates.io-index" 2321 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 2322 | dependencies = [ 2323 | "bitflags 1.3.2", 2324 | ] 2325 | 2326 | [[package]] 2327 | name = "redox_syscall" 2328 | version = "0.4.1" 2329 | source = "registry+https://github.com/rust-lang/crates.io-index" 2330 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 2331 | dependencies = [ 2332 | "bitflags 1.3.2", 2333 | ] 2334 | 2335 | [[package]] 2336 | name = "redox_syscall" 2337 | version = "0.5.3" 2338 | source = "registry+https://github.com/rust-lang/crates.io-index" 2339 | checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" 2340 | dependencies = [ 2341 | "bitflags 2.6.0", 2342 | ] 2343 | 2344 | [[package]] 2345 | name = "regex" 2346 | version = "1.10.6" 2347 | source = "registry+https://github.com/rust-lang/crates.io-index" 2348 | checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" 2349 | dependencies = [ 2350 | "aho-corasick", 2351 | "memchr", 2352 | "regex-automata", 2353 | "regex-syntax", 2354 | ] 2355 | 2356 | [[package]] 2357 | name = "regex-automata" 2358 | version = "0.4.7" 2359 | source = "registry+https://github.com/rust-lang/crates.io-index" 2360 | checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" 2361 | dependencies = [ 2362 | "aho-corasick", 2363 | "memchr", 2364 | "regex-syntax", 2365 | ] 2366 | 2367 | [[package]] 2368 | name = "regex-syntax" 2369 | version = "0.8.4" 2370 | source = "registry+https://github.com/rust-lang/crates.io-index" 2371 | checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" 2372 | 2373 | [[package]] 2374 | name = "renderdoc-sys" 2375 | version = "1.1.0" 2376 | source = "registry+https://github.com/rust-lang/crates.io-index" 2377 | checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" 2378 | 2379 | [[package]] 2380 | name = "rustc-demangle" 2381 | version = "0.1.24" 2382 | source = "registry+https://github.com/rust-lang/crates.io-index" 2383 | checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 2384 | 2385 | [[package]] 2386 | name = "rustc-hash" 2387 | version = "1.1.0" 2388 | source = "registry+https://github.com/rust-lang/crates.io-index" 2389 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 2390 | 2391 | [[package]] 2392 | name = "rustix" 2393 | version = "0.37.27" 2394 | source = "registry+https://github.com/rust-lang/crates.io-index" 2395 | checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" 2396 | dependencies = [ 2397 | "bitflags 1.3.2", 2398 | "errno", 2399 | "io-lifetimes", 2400 | "libc", 2401 | "linux-raw-sys 0.3.8", 2402 | "windows-sys 0.48.0", 2403 | ] 2404 | 2405 | [[package]] 2406 | name = "rustix" 2407 | version = "0.38.36" 2408 | source = "registry+https://github.com/rust-lang/crates.io-index" 2409 | checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" 2410 | dependencies = [ 2411 | "bitflags 2.6.0", 2412 | "errno", 2413 | "libc", 2414 | "linux-raw-sys 0.4.14", 2415 | "windows-sys 0.52.0", 2416 | ] 2417 | 2418 | [[package]] 2419 | name = "same-file" 2420 | version = "1.0.6" 2421 | source = "registry+https://github.com/rust-lang/crates.io-index" 2422 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2423 | dependencies = [ 2424 | "winapi-util", 2425 | ] 2426 | 2427 | [[package]] 2428 | name = "scoped-tls" 2429 | version = "1.0.1" 2430 | source = "registry+https://github.com/rust-lang/crates.io-index" 2431 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 2432 | 2433 | [[package]] 2434 | name = "scopeguard" 2435 | version = "1.2.0" 2436 | source = "registry+https://github.com/rust-lang/crates.io-index" 2437 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2438 | 2439 | [[package]] 2440 | name = "sctk-adwaita" 2441 | version = "0.8.3" 2442 | source = "registry+https://github.com/rust-lang/crates.io-index" 2443 | checksum = "70b31447ca297092c5a9916fc3b955203157b37c19ca8edde4f52e9843e602c7" 2444 | dependencies = [ 2445 | "ab_glyph", 2446 | "log", 2447 | "memmap2", 2448 | "smithay-client-toolkit 0.18.1", 2449 | "tiny-skia", 2450 | ] 2451 | 2452 | [[package]] 2453 | name = "serde" 2454 | version = "1.0.210" 2455 | source = "registry+https://github.com/rust-lang/crates.io-index" 2456 | checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" 2457 | dependencies = [ 2458 | "serde_derive", 2459 | ] 2460 | 2461 | [[package]] 2462 | name = "serde_derive" 2463 | version = "1.0.210" 2464 | source = "registry+https://github.com/rust-lang/crates.io-index" 2465 | checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" 2466 | dependencies = [ 2467 | "proc-macro2", 2468 | "quote", 2469 | "syn 2.0.77", 2470 | ] 2471 | 2472 | [[package]] 2473 | name = "serde_repr" 2474 | version = "0.1.19" 2475 | source = "registry+https://github.com/rust-lang/crates.io-index" 2476 | checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" 2477 | dependencies = [ 2478 | "proc-macro2", 2479 | "quote", 2480 | "syn 2.0.77", 2481 | ] 2482 | 2483 | [[package]] 2484 | name = "sha1" 2485 | version = "0.10.6" 2486 | source = "registry+https://github.com/rust-lang/crates.io-index" 2487 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 2488 | dependencies = [ 2489 | "cfg-if", 2490 | "cpufeatures", 2491 | "digest", 2492 | ] 2493 | 2494 | [[package]] 2495 | name = "shlex" 2496 | version = "1.3.0" 2497 | source = "registry+https://github.com/rust-lang/crates.io-index" 2498 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 2499 | 2500 | [[package]] 2501 | name = "signal-hook-registry" 2502 | version = "1.4.2" 2503 | source = "registry+https://github.com/rust-lang/crates.io-index" 2504 | checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 2505 | dependencies = [ 2506 | "libc", 2507 | ] 2508 | 2509 | [[package]] 2510 | name = "simd-adler32" 2511 | version = "0.3.7" 2512 | source = "registry+https://github.com/rust-lang/crates.io-index" 2513 | checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 2514 | 2515 | [[package]] 2516 | name = "slab" 2517 | version = "0.4.9" 2518 | source = "registry+https://github.com/rust-lang/crates.io-index" 2519 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 2520 | dependencies = [ 2521 | "autocfg", 2522 | ] 2523 | 2524 | [[package]] 2525 | name = "slotmap" 2526 | version = "1.0.7" 2527 | source = "registry+https://github.com/rust-lang/crates.io-index" 2528 | checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" 2529 | dependencies = [ 2530 | "version_check", 2531 | ] 2532 | 2533 | [[package]] 2534 | name = "smallvec" 2535 | version = "1.13.2" 2536 | source = "registry+https://github.com/rust-lang/crates.io-index" 2537 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 2538 | 2539 | [[package]] 2540 | name = "smithay-client-toolkit" 2541 | version = "0.18.1" 2542 | source = "registry+https://github.com/rust-lang/crates.io-index" 2543 | checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" 2544 | dependencies = [ 2545 | "bitflags 2.6.0", 2546 | "calloop 0.12.4", 2547 | "calloop-wayland-source 0.2.0", 2548 | "cursor-icon", 2549 | "libc", 2550 | "log", 2551 | "memmap2", 2552 | "rustix 0.38.36", 2553 | "thiserror", 2554 | "wayland-backend", 2555 | "wayland-client", 2556 | "wayland-csd-frame", 2557 | "wayland-cursor", 2558 | "wayland-protocols 0.31.2", 2559 | "wayland-protocols-wlr 0.2.0", 2560 | "wayland-scanner", 2561 | "xkeysym", 2562 | ] 2563 | 2564 | [[package]] 2565 | name = "smithay-client-toolkit" 2566 | version = "0.19.2" 2567 | source = "registry+https://github.com/rust-lang/crates.io-index" 2568 | checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" 2569 | dependencies = [ 2570 | "bitflags 2.6.0", 2571 | "calloop 0.13.0", 2572 | "calloop-wayland-source 0.3.0", 2573 | "cursor-icon", 2574 | "libc", 2575 | "log", 2576 | "memmap2", 2577 | "rustix 0.38.36", 2578 | "thiserror", 2579 | "wayland-backend", 2580 | "wayland-client", 2581 | "wayland-csd-frame", 2582 | "wayland-cursor", 2583 | "wayland-protocols 0.32.4", 2584 | "wayland-protocols-wlr 0.3.4", 2585 | "wayland-scanner", 2586 | "xkeysym", 2587 | ] 2588 | 2589 | [[package]] 2590 | name = "smithay-clipboard" 2591 | version = "0.7.2" 2592 | source = "registry+https://github.com/rust-lang/crates.io-index" 2593 | checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" 2594 | dependencies = [ 2595 | "libc", 2596 | "smithay-client-toolkit 0.19.2", 2597 | "wayland-backend", 2598 | ] 2599 | 2600 | [[package]] 2601 | name = "smol_str" 2602 | version = "0.2.2" 2603 | source = "registry+https://github.com/rust-lang/crates.io-index" 2604 | checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" 2605 | dependencies = [ 2606 | "serde", 2607 | ] 2608 | 2609 | [[package]] 2610 | name = "socket2" 2611 | version = "0.4.10" 2612 | source = "registry+https://github.com/rust-lang/crates.io-index" 2613 | checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" 2614 | dependencies = [ 2615 | "libc", 2616 | "winapi", 2617 | ] 2618 | 2619 | [[package]] 2620 | name = "spirv" 2621 | version = "0.3.0+sdk-1.3.268.0" 2622 | source = "registry+https://github.com/rust-lang/crates.io-index" 2623 | checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" 2624 | dependencies = [ 2625 | "bitflags 2.6.0", 2626 | ] 2627 | 2628 | [[package]] 2629 | name = "static_assertions" 2630 | version = "1.1.0" 2631 | source = "registry+https://github.com/rust-lang/crates.io-index" 2632 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 2633 | 2634 | [[package]] 2635 | name = "strict-num" 2636 | version = "0.1.1" 2637 | source = "registry+https://github.com/rust-lang/crates.io-index" 2638 | checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" 2639 | 2640 | [[package]] 2641 | name = "syn" 2642 | version = "1.0.109" 2643 | source = "registry+https://github.com/rust-lang/crates.io-index" 2644 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 2645 | dependencies = [ 2646 | "proc-macro2", 2647 | "quote", 2648 | "unicode-ident", 2649 | ] 2650 | 2651 | [[package]] 2652 | name = "syn" 2653 | version = "2.0.77" 2654 | source = "registry+https://github.com/rust-lang/crates.io-index" 2655 | checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" 2656 | dependencies = [ 2657 | "proc-macro2", 2658 | "quote", 2659 | "unicode-ident", 2660 | ] 2661 | 2662 | [[package]] 2663 | name = "tempfile" 2664 | version = "3.12.0" 2665 | source = "registry+https://github.com/rust-lang/crates.io-index" 2666 | checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" 2667 | dependencies = [ 2668 | "cfg-if", 2669 | "fastrand 2.1.1", 2670 | "once_cell", 2671 | "rustix 0.38.36", 2672 | "windows-sys 0.59.0", 2673 | ] 2674 | 2675 | [[package]] 2676 | name = "termcolor" 2677 | version = "1.4.1" 2678 | source = "registry+https://github.com/rust-lang/crates.io-index" 2679 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 2680 | dependencies = [ 2681 | "winapi-util", 2682 | ] 2683 | 2684 | [[package]] 2685 | name = "thiserror" 2686 | version = "1.0.63" 2687 | source = "registry+https://github.com/rust-lang/crates.io-index" 2688 | checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" 2689 | dependencies = [ 2690 | "thiserror-impl", 2691 | ] 2692 | 2693 | [[package]] 2694 | name = "thiserror-impl" 2695 | version = "1.0.63" 2696 | source = "registry+https://github.com/rust-lang/crates.io-index" 2697 | checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" 2698 | dependencies = [ 2699 | "proc-macro2", 2700 | "quote", 2701 | "syn 2.0.77", 2702 | ] 2703 | 2704 | [[package]] 2705 | name = "tiny-skia" 2706 | version = "0.11.4" 2707 | source = "registry+https://github.com/rust-lang/crates.io-index" 2708 | checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" 2709 | dependencies = [ 2710 | "arrayref", 2711 | "arrayvec", 2712 | "bytemuck", 2713 | "cfg-if", 2714 | "log", 2715 | "tiny-skia-path", 2716 | ] 2717 | 2718 | [[package]] 2719 | name = "tiny-skia-path" 2720 | version = "0.11.4" 2721 | source = "registry+https://github.com/rust-lang/crates.io-index" 2722 | checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" 2723 | dependencies = [ 2724 | "arrayref", 2725 | "bytemuck", 2726 | "strict-num", 2727 | ] 2728 | 2729 | [[package]] 2730 | name = "tinyvec" 2731 | version = "1.8.0" 2732 | source = "registry+https://github.com/rust-lang/crates.io-index" 2733 | checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" 2734 | dependencies = [ 2735 | "tinyvec_macros", 2736 | ] 2737 | 2738 | [[package]] 2739 | name = "tinyvec_macros" 2740 | version = "0.1.1" 2741 | source = "registry+https://github.com/rust-lang/crates.io-index" 2742 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 2743 | 2744 | [[package]] 2745 | name = "tokio" 2746 | version = "1.40.0" 2747 | source = "registry+https://github.com/rust-lang/crates.io-index" 2748 | checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" 2749 | dependencies = [ 2750 | "backtrace", 2751 | "pin-project-lite", 2752 | ] 2753 | 2754 | [[package]] 2755 | name = "toml_datetime" 2756 | version = "0.6.8" 2757 | source = "registry+https://github.com/rust-lang/crates.io-index" 2758 | checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" 2759 | 2760 | [[package]] 2761 | name = "toml_edit" 2762 | version = "0.19.15" 2763 | source = "registry+https://github.com/rust-lang/crates.io-index" 2764 | checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" 2765 | dependencies = [ 2766 | "indexmap", 2767 | "toml_datetime", 2768 | "winnow 0.5.40", 2769 | ] 2770 | 2771 | [[package]] 2772 | name = "toml_edit" 2773 | version = "0.22.20" 2774 | source = "registry+https://github.com/rust-lang/crates.io-index" 2775 | checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" 2776 | dependencies = [ 2777 | "indexmap", 2778 | "toml_datetime", 2779 | "winnow 0.6.18", 2780 | ] 2781 | 2782 | [[package]] 2783 | name = "tracing" 2784 | version = "0.1.40" 2785 | source = "registry+https://github.com/rust-lang/crates.io-index" 2786 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 2787 | dependencies = [ 2788 | "pin-project-lite", 2789 | "tracing-attributes", 2790 | "tracing-core", 2791 | ] 2792 | 2793 | [[package]] 2794 | name = "tracing-attributes" 2795 | version = "0.1.27" 2796 | source = "registry+https://github.com/rust-lang/crates.io-index" 2797 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 2798 | dependencies = [ 2799 | "proc-macro2", 2800 | "quote", 2801 | "syn 2.0.77", 2802 | ] 2803 | 2804 | [[package]] 2805 | name = "tracing-core" 2806 | version = "0.1.32" 2807 | source = "registry+https://github.com/rust-lang/crates.io-index" 2808 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 2809 | dependencies = [ 2810 | "once_cell", 2811 | ] 2812 | 2813 | [[package]] 2814 | name = "ttf-parser" 2815 | version = "0.24.1" 2816 | source = "registry+https://github.com/rust-lang/crates.io-index" 2817 | checksum = "5be21190ff5d38e8b4a2d3b6a3ae57f612cc39c96e83cedeaf7abc338a8bac4a" 2818 | 2819 | [[package]] 2820 | name = "type-map" 2821 | version = "0.5.0" 2822 | source = "registry+https://github.com/rust-lang/crates.io-index" 2823 | checksum = "deb68604048ff8fa93347f02441e4487594adc20bb8a084f9e564d2b827a0a9f" 2824 | dependencies = [ 2825 | "rustc-hash", 2826 | ] 2827 | 2828 | [[package]] 2829 | name = "typenum" 2830 | version = "1.17.0" 2831 | source = "registry+https://github.com/rust-lang/crates.io-index" 2832 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 2833 | 2834 | [[package]] 2835 | name = "uds_windows" 2836 | version = "1.1.0" 2837 | source = "registry+https://github.com/rust-lang/crates.io-index" 2838 | checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 2839 | dependencies = [ 2840 | "memoffset 0.9.1", 2841 | "tempfile", 2842 | "winapi", 2843 | ] 2844 | 2845 | [[package]] 2846 | name = "unicode-bidi" 2847 | version = "0.3.15" 2848 | source = "registry+https://github.com/rust-lang/crates.io-index" 2849 | checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" 2850 | 2851 | [[package]] 2852 | name = "unicode-ident" 2853 | version = "1.0.12" 2854 | source = "registry+https://github.com/rust-lang/crates.io-index" 2855 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 2856 | 2857 | [[package]] 2858 | name = "unicode-normalization" 2859 | version = "0.1.23" 2860 | source = "registry+https://github.com/rust-lang/crates.io-index" 2861 | checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" 2862 | dependencies = [ 2863 | "tinyvec", 2864 | ] 2865 | 2866 | [[package]] 2867 | name = "unicode-segmentation" 2868 | version = "1.11.0" 2869 | source = "registry+https://github.com/rust-lang/crates.io-index" 2870 | checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" 2871 | 2872 | [[package]] 2873 | name = "unicode-width" 2874 | version = "0.1.13" 2875 | source = "registry+https://github.com/rust-lang/crates.io-index" 2876 | checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" 2877 | 2878 | [[package]] 2879 | name = "unicode-xid" 2880 | version = "0.2.5" 2881 | source = "registry+https://github.com/rust-lang/crates.io-index" 2882 | checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" 2883 | 2884 | [[package]] 2885 | name = "url" 2886 | version = "2.5.2" 2887 | source = "registry+https://github.com/rust-lang/crates.io-index" 2888 | checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" 2889 | dependencies = [ 2890 | "form_urlencoded", 2891 | "idna", 2892 | "percent-encoding", 2893 | ] 2894 | 2895 | [[package]] 2896 | name = "version_check" 2897 | version = "0.9.5" 2898 | source = "registry+https://github.com/rust-lang/crates.io-index" 2899 | checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 2900 | 2901 | [[package]] 2902 | name = "waker-fn" 2903 | version = "1.2.0" 2904 | source = "registry+https://github.com/rust-lang/crates.io-index" 2905 | checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" 2906 | 2907 | [[package]] 2908 | name = "walkdir" 2909 | version = "2.5.0" 2910 | source = "registry+https://github.com/rust-lang/crates.io-index" 2911 | checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 2912 | dependencies = [ 2913 | "same-file", 2914 | "winapi-util", 2915 | ] 2916 | 2917 | [[package]] 2918 | name = "wasi" 2919 | version = "0.11.0+wasi-snapshot-preview1" 2920 | source = "registry+https://github.com/rust-lang/crates.io-index" 2921 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 2922 | 2923 | [[package]] 2924 | name = "wasm-bindgen" 2925 | version = "0.2.93" 2926 | source = "registry+https://github.com/rust-lang/crates.io-index" 2927 | checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" 2928 | dependencies = [ 2929 | "cfg-if", 2930 | "once_cell", 2931 | "wasm-bindgen-macro", 2932 | ] 2933 | 2934 | [[package]] 2935 | name = "wasm-bindgen-backend" 2936 | version = "0.2.93" 2937 | source = "registry+https://github.com/rust-lang/crates.io-index" 2938 | checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" 2939 | dependencies = [ 2940 | "bumpalo", 2941 | "log", 2942 | "once_cell", 2943 | "proc-macro2", 2944 | "quote", 2945 | "syn 2.0.77", 2946 | "wasm-bindgen-shared", 2947 | ] 2948 | 2949 | [[package]] 2950 | name = "wasm-bindgen-futures" 2951 | version = "0.4.43" 2952 | source = "registry+https://github.com/rust-lang/crates.io-index" 2953 | checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" 2954 | dependencies = [ 2955 | "cfg-if", 2956 | "js-sys", 2957 | "wasm-bindgen", 2958 | "web-sys", 2959 | ] 2960 | 2961 | [[package]] 2962 | name = "wasm-bindgen-macro" 2963 | version = "0.2.93" 2964 | source = "registry+https://github.com/rust-lang/crates.io-index" 2965 | checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" 2966 | dependencies = [ 2967 | "quote", 2968 | "wasm-bindgen-macro-support", 2969 | ] 2970 | 2971 | [[package]] 2972 | name = "wasm-bindgen-macro-support" 2973 | version = "0.2.93" 2974 | source = "registry+https://github.com/rust-lang/crates.io-index" 2975 | checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" 2976 | dependencies = [ 2977 | "proc-macro2", 2978 | "quote", 2979 | "syn 2.0.77", 2980 | "wasm-bindgen-backend", 2981 | "wasm-bindgen-shared", 2982 | ] 2983 | 2984 | [[package]] 2985 | name = "wasm-bindgen-shared" 2986 | version = "0.2.93" 2987 | source = "registry+https://github.com/rust-lang/crates.io-index" 2988 | checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" 2989 | 2990 | [[package]] 2991 | name = "wayland-backend" 2992 | version = "0.3.7" 2993 | source = "registry+https://github.com/rust-lang/crates.io-index" 2994 | checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" 2995 | dependencies = [ 2996 | "cc", 2997 | "downcast-rs", 2998 | "rustix 0.38.36", 2999 | "scoped-tls", 3000 | "smallvec", 3001 | "wayland-sys", 3002 | ] 3003 | 3004 | [[package]] 3005 | name = "wayland-client" 3006 | version = "0.31.6" 3007 | source = "registry+https://github.com/rust-lang/crates.io-index" 3008 | checksum = "e3f45d1222915ef1fd2057220c1d9d9624b7654443ea35c3877f7a52bd0a5a2d" 3009 | dependencies = [ 3010 | "bitflags 2.6.0", 3011 | "rustix 0.38.36", 3012 | "wayland-backend", 3013 | "wayland-scanner", 3014 | ] 3015 | 3016 | [[package]] 3017 | name = "wayland-csd-frame" 3018 | version = "0.3.0" 3019 | source = "registry+https://github.com/rust-lang/crates.io-index" 3020 | checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" 3021 | dependencies = [ 3022 | "bitflags 2.6.0", 3023 | "cursor-icon", 3024 | "wayland-backend", 3025 | ] 3026 | 3027 | [[package]] 3028 | name = "wayland-cursor" 3029 | version = "0.31.6" 3030 | source = "registry+https://github.com/rust-lang/crates.io-index" 3031 | checksum = "3a94697e66e76c85923b0d28a0c251e8f0666f58fc47d316c0f4da6da75d37cb" 3032 | dependencies = [ 3033 | "rustix 0.38.36", 3034 | "wayland-client", 3035 | "xcursor", 3036 | ] 3037 | 3038 | [[package]] 3039 | name = "wayland-protocols" 3040 | version = "0.31.2" 3041 | source = "registry+https://github.com/rust-lang/crates.io-index" 3042 | checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" 3043 | dependencies = [ 3044 | "bitflags 2.6.0", 3045 | "wayland-backend", 3046 | "wayland-client", 3047 | "wayland-scanner", 3048 | ] 3049 | 3050 | [[package]] 3051 | name = "wayland-protocols" 3052 | version = "0.32.4" 3053 | source = "registry+https://github.com/rust-lang/crates.io-index" 3054 | checksum = "2b5755d77ae9040bb872a25026555ce4cb0ae75fd923e90d25fba07d81057de0" 3055 | dependencies = [ 3056 | "bitflags 2.6.0", 3057 | "wayland-backend", 3058 | "wayland-client", 3059 | "wayland-scanner", 3060 | ] 3061 | 3062 | [[package]] 3063 | name = "wayland-protocols-plasma" 3064 | version = "0.2.0" 3065 | source = "registry+https://github.com/rust-lang/crates.io-index" 3066 | checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" 3067 | dependencies = [ 3068 | "bitflags 2.6.0", 3069 | "wayland-backend", 3070 | "wayland-client", 3071 | "wayland-protocols 0.31.2", 3072 | "wayland-scanner", 3073 | ] 3074 | 3075 | [[package]] 3076 | name = "wayland-protocols-wlr" 3077 | version = "0.2.0" 3078 | source = "registry+https://github.com/rust-lang/crates.io-index" 3079 | checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" 3080 | dependencies = [ 3081 | "bitflags 2.6.0", 3082 | "wayland-backend", 3083 | "wayland-client", 3084 | "wayland-protocols 0.31.2", 3085 | "wayland-scanner", 3086 | ] 3087 | 3088 | [[package]] 3089 | name = "wayland-protocols-wlr" 3090 | version = "0.3.4" 3091 | source = "registry+https://github.com/rust-lang/crates.io-index" 3092 | checksum = "dad87b5fd1b1d3ca2f792df8f686a2a11e3fe1077b71096f7a175ab699f89109" 3093 | dependencies = [ 3094 | "bitflags 2.6.0", 3095 | "wayland-backend", 3096 | "wayland-client", 3097 | "wayland-protocols 0.32.4", 3098 | "wayland-scanner", 3099 | ] 3100 | 3101 | [[package]] 3102 | name = "wayland-scanner" 3103 | version = "0.31.5" 3104 | source = "registry+https://github.com/rust-lang/crates.io-index" 3105 | checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3" 3106 | dependencies = [ 3107 | "proc-macro2", 3108 | "quick-xml", 3109 | "quote", 3110 | ] 3111 | 3112 | [[package]] 3113 | name = "wayland-sys" 3114 | version = "0.31.5" 3115 | source = "registry+https://github.com/rust-lang/crates.io-index" 3116 | checksum = "efa8ac0d8e8ed3e3b5c9fc92c7881406a268e11555abe36493efabe649a29e09" 3117 | dependencies = [ 3118 | "dlib", 3119 | "log", 3120 | "once_cell", 3121 | "pkg-config", 3122 | ] 3123 | 3124 | [[package]] 3125 | name = "web-sys" 3126 | version = "0.3.70" 3127 | source = "registry+https://github.com/rust-lang/crates.io-index" 3128 | checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" 3129 | dependencies = [ 3130 | "js-sys", 3131 | "wasm-bindgen", 3132 | ] 3133 | 3134 | [[package]] 3135 | name = "web-time" 3136 | version = "0.2.4" 3137 | source = "registry+https://github.com/rust-lang/crates.io-index" 3138 | checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" 3139 | dependencies = [ 3140 | "js-sys", 3141 | "wasm-bindgen", 3142 | ] 3143 | 3144 | [[package]] 3145 | name = "webbrowser" 3146 | version = "1.0.1" 3147 | source = "registry+https://github.com/rust-lang/crates.io-index" 3148 | checksum = "425ba64c1e13b1c6e8c5d2541c8fac10022ca584f33da781db01b5756aef1f4e" 3149 | dependencies = [ 3150 | "block2 0.5.1", 3151 | "core-foundation", 3152 | "home", 3153 | "jni", 3154 | "log", 3155 | "ndk-context", 3156 | "objc2 0.5.2", 3157 | "objc2-foundation", 3158 | "url", 3159 | "web-sys", 3160 | ] 3161 | 3162 | [[package]] 3163 | name = "wgpu" 3164 | version = "0.20.1" 3165 | source = "registry+https://github.com/rust-lang/crates.io-index" 3166 | checksum = "90e37c7b9921b75dfd26dd973fdcbce36f13dfa6e2dc82aece584e0ed48c355c" 3167 | dependencies = [ 3168 | "arrayvec", 3169 | "cfg-if", 3170 | "cfg_aliases", 3171 | "document-features", 3172 | "js-sys", 3173 | "log", 3174 | "parking_lot", 3175 | "profiling", 3176 | "raw-window-handle 0.6.2", 3177 | "smallvec", 3178 | "static_assertions", 3179 | "wasm-bindgen", 3180 | "wasm-bindgen-futures", 3181 | "web-sys", 3182 | "wgpu-core", 3183 | "wgpu-hal", 3184 | "wgpu-types", 3185 | ] 3186 | 3187 | [[package]] 3188 | name = "wgpu-core" 3189 | version = "0.21.1" 3190 | source = "registry+https://github.com/rust-lang/crates.io-index" 3191 | checksum = "d50819ab545b867d8a454d1d756b90cd5f15da1f2943334ca314af10583c9d39" 3192 | dependencies = [ 3193 | "arrayvec", 3194 | "bit-vec", 3195 | "bitflags 2.6.0", 3196 | "cfg_aliases", 3197 | "codespan-reporting", 3198 | "document-features", 3199 | "indexmap", 3200 | "log", 3201 | "naga", 3202 | "once_cell", 3203 | "parking_lot", 3204 | "profiling", 3205 | "raw-window-handle 0.6.2", 3206 | "rustc-hash", 3207 | "smallvec", 3208 | "thiserror", 3209 | "web-sys", 3210 | "wgpu-hal", 3211 | "wgpu-types", 3212 | ] 3213 | 3214 | [[package]] 3215 | name = "wgpu-hal" 3216 | version = "0.21.1" 3217 | source = "registry+https://github.com/rust-lang/crates.io-index" 3218 | checksum = "172e490a87295564f3fcc0f165798d87386f6231b04d4548bca458cbbfd63222" 3219 | dependencies = [ 3220 | "android_system_properties", 3221 | "arrayvec", 3222 | "ash", 3223 | "bitflags 2.6.0", 3224 | "cfg_aliases", 3225 | "core-graphics-types", 3226 | "glow", 3227 | "glutin_wgl_sys", 3228 | "gpu-alloc", 3229 | "gpu-allocator", 3230 | "gpu-descriptor", 3231 | "hassle-rs", 3232 | "js-sys", 3233 | "khronos-egl", 3234 | "libc", 3235 | "libloading 0.8.5", 3236 | "log", 3237 | "metal", 3238 | "naga", 3239 | "ndk-sys", 3240 | "objc", 3241 | "once_cell", 3242 | "parking_lot", 3243 | "profiling", 3244 | "raw-window-handle 0.6.2", 3245 | "renderdoc-sys", 3246 | "rustc-hash", 3247 | "smallvec", 3248 | "thiserror", 3249 | "wasm-bindgen", 3250 | "web-sys", 3251 | "wgpu-types", 3252 | "winapi", 3253 | ] 3254 | 3255 | [[package]] 3256 | name = "wgpu-types" 3257 | version = "0.20.0" 3258 | source = "registry+https://github.com/rust-lang/crates.io-index" 3259 | checksum = "1353d9a46bff7f955a680577f34c69122628cc2076e1d6f3a9be6ef00ae793ef" 3260 | dependencies = [ 3261 | "bitflags 2.6.0", 3262 | "js-sys", 3263 | "web-sys", 3264 | ] 3265 | 3266 | [[package]] 3267 | name = "widestring" 3268 | version = "1.1.0" 3269 | source = "registry+https://github.com/rust-lang/crates.io-index" 3270 | checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" 3271 | 3272 | [[package]] 3273 | name = "winapi" 3274 | version = "0.3.9" 3275 | source = "registry+https://github.com/rust-lang/crates.io-index" 3276 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3277 | dependencies = [ 3278 | "winapi-i686-pc-windows-gnu", 3279 | "winapi-x86_64-pc-windows-gnu", 3280 | ] 3281 | 3282 | [[package]] 3283 | name = "winapi-i686-pc-windows-gnu" 3284 | version = "0.4.0" 3285 | source = "registry+https://github.com/rust-lang/crates.io-index" 3286 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3287 | 3288 | [[package]] 3289 | name = "winapi-util" 3290 | version = "0.1.9" 3291 | source = "registry+https://github.com/rust-lang/crates.io-index" 3292 | checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" 3293 | dependencies = [ 3294 | "windows-sys 0.59.0", 3295 | ] 3296 | 3297 | [[package]] 3298 | name = "winapi-x86_64-pc-windows-gnu" 3299 | version = "0.4.0" 3300 | source = "registry+https://github.com/rust-lang/crates.io-index" 3301 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3302 | 3303 | [[package]] 3304 | name = "windows" 3305 | version = "0.48.0" 3306 | source = "registry+https://github.com/rust-lang/crates.io-index" 3307 | checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" 3308 | dependencies = [ 3309 | "windows-implement", 3310 | "windows-interface", 3311 | "windows-targets 0.48.5", 3312 | ] 3313 | 3314 | [[package]] 3315 | name = "windows" 3316 | version = "0.52.0" 3317 | source = "registry+https://github.com/rust-lang/crates.io-index" 3318 | checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" 3319 | dependencies = [ 3320 | "windows-core", 3321 | "windows-targets 0.52.6", 3322 | ] 3323 | 3324 | [[package]] 3325 | name = "windows-core" 3326 | version = "0.52.0" 3327 | source = "registry+https://github.com/rust-lang/crates.io-index" 3328 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 3329 | dependencies = [ 3330 | "windows-targets 0.52.6", 3331 | ] 3332 | 3333 | [[package]] 3334 | name = "windows-implement" 3335 | version = "0.48.0" 3336 | source = "registry+https://github.com/rust-lang/crates.io-index" 3337 | checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c" 3338 | dependencies = [ 3339 | "proc-macro2", 3340 | "quote", 3341 | "syn 1.0.109", 3342 | ] 3343 | 3344 | [[package]] 3345 | name = "windows-interface" 3346 | version = "0.48.0" 3347 | source = "registry+https://github.com/rust-lang/crates.io-index" 3348 | checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7" 3349 | dependencies = [ 3350 | "proc-macro2", 3351 | "quote", 3352 | "syn 1.0.109", 3353 | ] 3354 | 3355 | [[package]] 3356 | name = "windows-sys" 3357 | version = "0.45.0" 3358 | source = "registry+https://github.com/rust-lang/crates.io-index" 3359 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 3360 | dependencies = [ 3361 | "windows-targets 0.42.2", 3362 | ] 3363 | 3364 | [[package]] 3365 | name = "windows-sys" 3366 | version = "0.48.0" 3367 | source = "registry+https://github.com/rust-lang/crates.io-index" 3368 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 3369 | dependencies = [ 3370 | "windows-targets 0.48.5", 3371 | ] 3372 | 3373 | [[package]] 3374 | name = "windows-sys" 3375 | version = "0.52.0" 3376 | source = "registry+https://github.com/rust-lang/crates.io-index" 3377 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 3378 | dependencies = [ 3379 | "windows-targets 0.52.6", 3380 | ] 3381 | 3382 | [[package]] 3383 | name = "windows-sys" 3384 | version = "0.59.0" 3385 | source = "registry+https://github.com/rust-lang/crates.io-index" 3386 | checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 3387 | dependencies = [ 3388 | "windows-targets 0.52.6", 3389 | ] 3390 | 3391 | [[package]] 3392 | name = "windows-targets" 3393 | version = "0.42.2" 3394 | source = "registry+https://github.com/rust-lang/crates.io-index" 3395 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 3396 | dependencies = [ 3397 | "windows_aarch64_gnullvm 0.42.2", 3398 | "windows_aarch64_msvc 0.42.2", 3399 | "windows_i686_gnu 0.42.2", 3400 | "windows_i686_msvc 0.42.2", 3401 | "windows_x86_64_gnu 0.42.2", 3402 | "windows_x86_64_gnullvm 0.42.2", 3403 | "windows_x86_64_msvc 0.42.2", 3404 | ] 3405 | 3406 | [[package]] 3407 | name = "windows-targets" 3408 | version = "0.48.5" 3409 | source = "registry+https://github.com/rust-lang/crates.io-index" 3410 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 3411 | dependencies = [ 3412 | "windows_aarch64_gnullvm 0.48.5", 3413 | "windows_aarch64_msvc 0.48.5", 3414 | "windows_i686_gnu 0.48.5", 3415 | "windows_i686_msvc 0.48.5", 3416 | "windows_x86_64_gnu 0.48.5", 3417 | "windows_x86_64_gnullvm 0.48.5", 3418 | "windows_x86_64_msvc 0.48.5", 3419 | ] 3420 | 3421 | [[package]] 3422 | name = "windows-targets" 3423 | version = "0.52.6" 3424 | source = "registry+https://github.com/rust-lang/crates.io-index" 3425 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 3426 | dependencies = [ 3427 | "windows_aarch64_gnullvm 0.52.6", 3428 | "windows_aarch64_msvc 0.52.6", 3429 | "windows_i686_gnu 0.52.6", 3430 | "windows_i686_gnullvm", 3431 | "windows_i686_msvc 0.52.6", 3432 | "windows_x86_64_gnu 0.52.6", 3433 | "windows_x86_64_gnullvm 0.52.6", 3434 | "windows_x86_64_msvc 0.52.6", 3435 | ] 3436 | 3437 | [[package]] 3438 | name = "windows_aarch64_gnullvm" 3439 | version = "0.42.2" 3440 | source = "registry+https://github.com/rust-lang/crates.io-index" 3441 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 3442 | 3443 | [[package]] 3444 | name = "windows_aarch64_gnullvm" 3445 | version = "0.48.5" 3446 | source = "registry+https://github.com/rust-lang/crates.io-index" 3447 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 3448 | 3449 | [[package]] 3450 | name = "windows_aarch64_gnullvm" 3451 | version = "0.52.6" 3452 | source = "registry+https://github.com/rust-lang/crates.io-index" 3453 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 3454 | 3455 | [[package]] 3456 | name = "windows_aarch64_msvc" 3457 | version = "0.42.2" 3458 | source = "registry+https://github.com/rust-lang/crates.io-index" 3459 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 3460 | 3461 | [[package]] 3462 | name = "windows_aarch64_msvc" 3463 | version = "0.48.5" 3464 | source = "registry+https://github.com/rust-lang/crates.io-index" 3465 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 3466 | 3467 | [[package]] 3468 | name = "windows_aarch64_msvc" 3469 | version = "0.52.6" 3470 | source = "registry+https://github.com/rust-lang/crates.io-index" 3471 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 3472 | 3473 | [[package]] 3474 | name = "windows_i686_gnu" 3475 | version = "0.42.2" 3476 | source = "registry+https://github.com/rust-lang/crates.io-index" 3477 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 3478 | 3479 | [[package]] 3480 | name = "windows_i686_gnu" 3481 | version = "0.48.5" 3482 | source = "registry+https://github.com/rust-lang/crates.io-index" 3483 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 3484 | 3485 | [[package]] 3486 | name = "windows_i686_gnu" 3487 | version = "0.52.6" 3488 | source = "registry+https://github.com/rust-lang/crates.io-index" 3489 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 3490 | 3491 | [[package]] 3492 | name = "windows_i686_gnullvm" 3493 | version = "0.52.6" 3494 | source = "registry+https://github.com/rust-lang/crates.io-index" 3495 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 3496 | 3497 | [[package]] 3498 | name = "windows_i686_msvc" 3499 | version = "0.42.2" 3500 | source = "registry+https://github.com/rust-lang/crates.io-index" 3501 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 3502 | 3503 | [[package]] 3504 | name = "windows_i686_msvc" 3505 | version = "0.48.5" 3506 | source = "registry+https://github.com/rust-lang/crates.io-index" 3507 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 3508 | 3509 | [[package]] 3510 | name = "windows_i686_msvc" 3511 | version = "0.52.6" 3512 | source = "registry+https://github.com/rust-lang/crates.io-index" 3513 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 3514 | 3515 | [[package]] 3516 | name = "windows_x86_64_gnu" 3517 | version = "0.42.2" 3518 | source = "registry+https://github.com/rust-lang/crates.io-index" 3519 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 3520 | 3521 | [[package]] 3522 | name = "windows_x86_64_gnu" 3523 | version = "0.48.5" 3524 | source = "registry+https://github.com/rust-lang/crates.io-index" 3525 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 3526 | 3527 | [[package]] 3528 | name = "windows_x86_64_gnu" 3529 | version = "0.52.6" 3530 | source = "registry+https://github.com/rust-lang/crates.io-index" 3531 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 3532 | 3533 | [[package]] 3534 | name = "windows_x86_64_gnullvm" 3535 | version = "0.42.2" 3536 | source = "registry+https://github.com/rust-lang/crates.io-index" 3537 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 3538 | 3539 | [[package]] 3540 | name = "windows_x86_64_gnullvm" 3541 | version = "0.48.5" 3542 | source = "registry+https://github.com/rust-lang/crates.io-index" 3543 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 3544 | 3545 | [[package]] 3546 | name = "windows_x86_64_gnullvm" 3547 | version = "0.52.6" 3548 | source = "registry+https://github.com/rust-lang/crates.io-index" 3549 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 3550 | 3551 | [[package]] 3552 | name = "windows_x86_64_msvc" 3553 | version = "0.42.2" 3554 | source = "registry+https://github.com/rust-lang/crates.io-index" 3555 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 3556 | 3557 | [[package]] 3558 | name = "windows_x86_64_msvc" 3559 | version = "0.48.5" 3560 | source = "registry+https://github.com/rust-lang/crates.io-index" 3561 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 3562 | 3563 | [[package]] 3564 | name = "windows_x86_64_msvc" 3565 | version = "0.52.6" 3566 | source = "registry+https://github.com/rust-lang/crates.io-index" 3567 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 3568 | 3569 | [[package]] 3570 | name = "winit" 3571 | version = "0.29.15" 3572 | source = "registry+https://github.com/rust-lang/crates.io-index" 3573 | checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" 3574 | dependencies = [ 3575 | "ahash", 3576 | "android-activity", 3577 | "atomic-waker", 3578 | "bitflags 2.6.0", 3579 | "bytemuck", 3580 | "calloop 0.12.4", 3581 | "cfg_aliases", 3582 | "core-foundation", 3583 | "core-graphics", 3584 | "cursor-icon", 3585 | "icrate", 3586 | "js-sys", 3587 | "libc", 3588 | "log", 3589 | "memmap2", 3590 | "ndk", 3591 | "ndk-sys", 3592 | "objc2 0.4.1", 3593 | "once_cell", 3594 | "orbclient", 3595 | "percent-encoding", 3596 | "raw-window-handle 0.5.2", 3597 | "raw-window-handle 0.6.2", 3598 | "redox_syscall 0.3.5", 3599 | "rustix 0.38.36", 3600 | "sctk-adwaita", 3601 | "smithay-client-toolkit 0.18.1", 3602 | "smol_str", 3603 | "unicode-segmentation", 3604 | "wasm-bindgen", 3605 | "wasm-bindgen-futures", 3606 | "wayland-backend", 3607 | "wayland-client", 3608 | "wayland-protocols 0.31.2", 3609 | "wayland-protocols-plasma", 3610 | "web-sys", 3611 | "web-time", 3612 | "windows-sys 0.48.0", 3613 | "x11-dl", 3614 | "x11rb", 3615 | "xkbcommon-dl", 3616 | ] 3617 | 3618 | [[package]] 3619 | name = "winnow" 3620 | version = "0.5.40" 3621 | source = "registry+https://github.com/rust-lang/crates.io-index" 3622 | checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" 3623 | dependencies = [ 3624 | "memchr", 3625 | ] 3626 | 3627 | [[package]] 3628 | name = "winnow" 3629 | version = "0.6.18" 3630 | source = "registry+https://github.com/rust-lang/crates.io-index" 3631 | checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" 3632 | dependencies = [ 3633 | "memchr", 3634 | ] 3635 | 3636 | [[package]] 3637 | name = "x11-dl" 3638 | version = "2.21.0" 3639 | source = "registry+https://github.com/rust-lang/crates.io-index" 3640 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 3641 | dependencies = [ 3642 | "libc", 3643 | "once_cell", 3644 | "pkg-config", 3645 | ] 3646 | 3647 | [[package]] 3648 | name = "x11rb" 3649 | version = "0.13.1" 3650 | source = "registry+https://github.com/rust-lang/crates.io-index" 3651 | checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" 3652 | dependencies = [ 3653 | "as-raw-xcb-connection", 3654 | "gethostname", 3655 | "libc", 3656 | "libloading 0.8.5", 3657 | "once_cell", 3658 | "rustix 0.38.36", 3659 | "x11rb-protocol", 3660 | ] 3661 | 3662 | [[package]] 3663 | name = "x11rb-protocol" 3664 | version = "0.13.1" 3665 | source = "registry+https://github.com/rust-lang/crates.io-index" 3666 | checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" 3667 | 3668 | [[package]] 3669 | name = "xcursor" 3670 | version = "0.3.8" 3671 | source = "registry+https://github.com/rust-lang/crates.io-index" 3672 | checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" 3673 | 3674 | [[package]] 3675 | name = "xdg-home" 3676 | version = "1.3.0" 3677 | source = "registry+https://github.com/rust-lang/crates.io-index" 3678 | checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" 3679 | dependencies = [ 3680 | "libc", 3681 | "windows-sys 0.59.0", 3682 | ] 3683 | 3684 | [[package]] 3685 | name = "xkbcommon-dl" 3686 | version = "0.4.2" 3687 | source = "registry+https://github.com/rust-lang/crates.io-index" 3688 | checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" 3689 | dependencies = [ 3690 | "bitflags 2.6.0", 3691 | "dlib", 3692 | "log", 3693 | "once_cell", 3694 | "xkeysym", 3695 | ] 3696 | 3697 | [[package]] 3698 | name = "xkeysym" 3699 | version = "0.2.1" 3700 | source = "registry+https://github.com/rust-lang/crates.io-index" 3701 | checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" 3702 | 3703 | [[package]] 3704 | name = "xml-rs" 3705 | version = "0.8.21" 3706 | source = "registry+https://github.com/rust-lang/crates.io-index" 3707 | checksum = "539a77ee7c0de333dcc6da69b177380a0b81e0dacfa4f7344c465a36871ee601" 3708 | 3709 | [[package]] 3710 | name = "zbus" 3711 | version = "3.15.2" 3712 | source = "registry+https://github.com/rust-lang/crates.io-index" 3713 | checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" 3714 | dependencies = [ 3715 | "async-broadcast", 3716 | "async-executor", 3717 | "async-fs", 3718 | "async-io 1.13.0", 3719 | "async-lock 2.8.0", 3720 | "async-process", 3721 | "async-recursion", 3722 | "async-task", 3723 | "async-trait", 3724 | "blocking", 3725 | "byteorder", 3726 | "derivative", 3727 | "enumflags2", 3728 | "event-listener 2.5.3", 3729 | "futures-core", 3730 | "futures-sink", 3731 | "futures-util", 3732 | "hex", 3733 | "nix", 3734 | "once_cell", 3735 | "ordered-stream", 3736 | "rand", 3737 | "serde", 3738 | "serde_repr", 3739 | "sha1", 3740 | "static_assertions", 3741 | "tracing", 3742 | "uds_windows", 3743 | "winapi", 3744 | "xdg-home", 3745 | "zbus_macros", 3746 | "zbus_names", 3747 | "zvariant", 3748 | ] 3749 | 3750 | [[package]] 3751 | name = "zbus_macros" 3752 | version = "3.15.2" 3753 | source = "registry+https://github.com/rust-lang/crates.io-index" 3754 | checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" 3755 | dependencies = [ 3756 | "proc-macro-crate 1.3.1", 3757 | "proc-macro2", 3758 | "quote", 3759 | "regex", 3760 | "syn 1.0.109", 3761 | "zvariant_utils", 3762 | ] 3763 | 3764 | [[package]] 3765 | name = "zbus_names" 3766 | version = "2.6.1" 3767 | source = "registry+https://github.com/rust-lang/crates.io-index" 3768 | checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" 3769 | dependencies = [ 3770 | "serde", 3771 | "static_assertions", 3772 | "zvariant", 3773 | ] 3774 | 3775 | [[package]] 3776 | name = "zerocopy" 3777 | version = "0.7.35" 3778 | source = "registry+https://github.com/rust-lang/crates.io-index" 3779 | checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" 3780 | dependencies = [ 3781 | "byteorder", 3782 | "zerocopy-derive", 3783 | ] 3784 | 3785 | [[package]] 3786 | name = "zerocopy-derive" 3787 | version = "0.7.35" 3788 | source = "registry+https://github.com/rust-lang/crates.io-index" 3789 | checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" 3790 | dependencies = [ 3791 | "proc-macro2", 3792 | "quote", 3793 | "syn 2.0.77", 3794 | ] 3795 | 3796 | [[package]] 3797 | name = "zvariant" 3798 | version = "3.15.2" 3799 | source = "registry+https://github.com/rust-lang/crates.io-index" 3800 | checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" 3801 | dependencies = [ 3802 | "byteorder", 3803 | "enumflags2", 3804 | "libc", 3805 | "serde", 3806 | "static_assertions", 3807 | "zvariant_derive", 3808 | ] 3809 | 3810 | [[package]] 3811 | name = "zvariant_derive" 3812 | version = "3.15.2" 3813 | source = "registry+https://github.com/rust-lang/crates.io-index" 3814 | checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" 3815 | dependencies = [ 3816 | "proc-macro-crate 1.3.1", 3817 | "proc-macro2", 3818 | "quote", 3819 | "syn 1.0.109", 3820 | "zvariant_utils", 3821 | ] 3822 | 3823 | [[package]] 3824 | name = "zvariant_utils" 3825 | version = "1.0.1" 3826 | source = "registry+https://github.com/rust-lang/crates.io-index" 3827 | checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" 3828 | dependencies = [ 3829 | "proc-macro2", 3830 | "quote", 3831 | "syn 1.0.109", 3832 | ] 3833 | --------------------------------------------------------------------------------