From bc836e89854c1ea1dadc86bd3f3dd9da660c49ca Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Mon, 11 Aug 2025 11:25:12 -0600 Subject: [PATCH] devshell --- monitors/monitor-tui-rs/.envrc | 1 + monitors/monitor-tui-rs/.gitignore | 1 - monitors/monitor-tui-rs/Cargo.lock | 149 +++++++++++++++++++++++++++- monitors/monitor-tui-rs/flake.nix | 5 +- monitors/monitor-tui-rs/src/main.rs | 10 +- 5 files changed, 157 insertions(+), 9 deletions(-) create mode 100644 monitors/monitor-tui-rs/.envrc diff --git a/monitors/monitor-tui-rs/.envrc b/monitors/monitor-tui-rs/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/monitors/monitor-tui-rs/.envrc @@ -0,0 +1 @@ +use flake diff --git a/monitors/monitor-tui-rs/.gitignore b/monitors/monitor-tui-rs/.gitignore index 3c7779d..26e2cfd 100644 --- a/monitors/monitor-tui-rs/.gitignore +++ b/monitors/monitor-tui-rs/.gitignore @@ -6,7 +6,6 @@ /result /result-* .direnv/ -.envrc # Editors *.swp diff --git a/monitors/monitor-tui-rs/Cargo.lock b/monitors/monitor-tui-rs/Cargo.lock index 7d4e01b..bbab190 100644 --- a/monitors/monitor-tui-rs/Cargo.lock +++ b/monitors/monitor-tui-rs/Cargo.lock @@ -79,18 +79,50 @@ dependencies = [ "windows-link", ] +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "dialoguer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +dependencies = [ + "console", + "shell-words", + "tempfile", + "thiserror", + "zeroize", +] + [[package]] name = "either" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + [[package]] name = "errno" version = "0.3.13" @@ -101,6 +133,24 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi", +] + [[package]] name = "home" version = "0.5.11" @@ -156,6 +206,12 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + [[package]] name = "log" version = "0.4.27" @@ -174,6 +230,7 @@ version = "0.1.0" dependencies = [ "anyhow", "chrono", + "dialoguer", "regex", "which", ] @@ -211,6 +268,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "regex" version = "1.11.1" @@ -249,16 +312,35 @@ dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", "windows-sys 0.59.0", ] +[[package]] +name = "rustix" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.60.2", +] + [[package]] name = "rustversion" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + [[package]] name = "shlex" version = "1.3.0" @@ -276,12 +358,60 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom", + "once_cell", + "rustix 1.0.8", + "windows-sys 0.59.0", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "unicode-ident" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +[[package]] +name = "unicode-width" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.100" @@ -348,7 +478,7 @@ checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", - "rustix", + "rustix 0.38.44", "winsafe", ] @@ -563,3 +693,18 @@ name = "winsafe" version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/monitors/monitor-tui-rs/flake.nix b/monitors/monitor-tui-rs/flake.nix index 22806c4..78e33c2 100644 --- a/monitors/monitor-tui-rs/flake.nix +++ b/monitors/monitor-tui-rs/flake.nix @@ -46,9 +46,12 @@ let pkgs = import nixpkgs { inherit system; }; in { default = pkgs.mkShell { buildInputs = with pkgs; [ - rustc cargo rustfmt clippy + rustc cargo rustfmt clippy rust-analyzer rust-src gnome-monitor-config xorg.xrandr bash coreutils ]; + shellHook = '' + export RUST_SRC_PATH=${pkgs.rust-src}/lib/rustlib/src/rust/library + ''; }; } ); diff --git a/monitors/monitor-tui-rs/src/main.rs b/monitors/monitor-tui-rs/src/main.rs index 4c2d879..171e0a7 100644 --- a/monitors/monitor-tui-rs/src/main.rs +++ b/monitors/monitor-tui-rs/src/main.rs @@ -49,11 +49,11 @@ fn menu(prompt: &str, options: &[(String, String)]) -> Result> { fn checklist(prompt: &str, items: &[(String, String, bool)]) -> Result> { let labels: Vec = items.iter().map(|(k, d, _)| format!("{} {}", k, d)).collect(); let defaults: Vec = items.iter().map(|(_, _, on)| *on).collect(); - let mut ms = MultiSelect::with_theme(&theme()); - ms.with_prompt(prompt).items(&labels); - // Set defaults - ms.defaults(&defaults); - let chosen = ms.interact()?; + let chosen = MultiSelect::with_theme(&theme()) + .with_prompt(prompt) + .items(&labels) + .defaults(&defaults) + .interact()?; Ok(chosen.into_iter().map(|i| items[i].0.clone()).collect()) }