Compare commits
13 Commits
27ede7fc64
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 20f33f5694 | |||
| 989e0aef91 | |||
| 54ddc9851c | |||
| dcc863c451 | |||
| 9e56322705 | |||
| 5f691c2e2f | |||
| 62fb8cd330 | |||
| 86cff34cd5 | |||
| fb8c852a4d | |||
| e038981d7f | |||
| 05ced3b7ea | |||
| d46c35c49f | |||
| eb34efb652 |
1878
Cargo.lock
generated
1878
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
11
Cargo.toml
11
Cargo.toml
@ -3,7 +3,14 @@ name = "rklip"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[target.'cfg(target_os = "linux")'.dependencies]
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
arboard = "3.6.1"
|
crossterm = "0.29.0"
|
||||||
|
directories = "6.0.0"
|
||||||
|
fuzzy-matcher = "0.3.7"
|
||||||
|
image = "0.25.9"
|
||||||
|
ratatui = "0.30.0"
|
||||||
|
ratatui-image = { version = "10.0.6", features = ["crossterm"] }
|
||||||
rklipd = {path = "rklipd"}
|
rklipd = {path = "rklipd"}
|
||||||
|
serde = { version = "1.0.228", features = ["derive"] }
|
||||||
|
serde_json = "1.0.149"
|
||||||
|
uuid = "1.22.0"
|
||||||
|
|||||||
164
rklipd/Cargo.lock
generated
164
rklipd/Cargo.lock
generated
@ -282,6 +282,27 @@ version = "0.2.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
|
checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "directories"
|
||||||
|
version = "6.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d"
|
||||||
|
dependencies = [
|
||||||
|
"dirs-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dirs-sys"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"option-ext",
|
||||||
|
"redox_users",
|
||||||
|
"windows-sys 0.61.2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dispatch2"
|
name = "dispatch2"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
@ -292,6 +313,12 @@ dependencies = [
|
|||||||
"objc2",
|
"objc2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "downcast-rs"
|
||||||
|
version = "1.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "either"
|
name = "either"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
@ -434,6 +461,17 @@ dependencies = [
|
|||||||
"windows-link",
|
"windows-link",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "getrandom"
|
||||||
|
version = "0.2.17"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"wasi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "getrandom"
|
name = "getrandom"
|
||||||
version = "0.3.4"
|
version = "0.3.4"
|
||||||
@ -645,6 +683,15 @@ dependencies = [
|
|||||||
"cc",
|
"cc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libredox"
|
||||||
|
version = "0.1.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libsqlite3-sys"
|
name = "libsqlite3-sys"
|
||||||
version = "0.36.0"
|
version = "0.36.0"
|
||||||
@ -948,6 +995,22 @@ version = "1.21.3"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "option-ext"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "os_pipe"
|
||||||
|
version = "1.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"windows-sys 0.61.2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parking_lot"
|
name = "parking_lot"
|
||||||
version = "0.12.5"
|
version = "0.12.5"
|
||||||
@ -1076,6 +1139,15 @@ version = "2.0.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
|
checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quick-xml"
|
||||||
|
version = "0.39.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "958f21e8e7ceb5a1aa7fa87fab28e7c75976e0bfe7e23ff069e0a260f894067d"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.45"
|
version = "1.0.45"
|
||||||
@ -1205,6 +1277,17 @@ dependencies = [
|
|||||||
"bitflags",
|
"bitflags",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "redox_users"
|
||||||
|
version = "0.5.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
|
||||||
|
dependencies = [
|
||||||
|
"getrandom 0.2.17",
|
||||||
|
"libredox",
|
||||||
|
"thiserror",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rgb"
|
name = "rgb"
|
||||||
version = "0.8.53"
|
version = "0.8.53"
|
||||||
@ -1217,9 +1300,13 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"arboard",
|
"arboard",
|
||||||
"clipboard-master",
|
"clipboard-master",
|
||||||
|
"directories",
|
||||||
"image",
|
"image",
|
||||||
"rusqlite",
|
"rusqlite",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
"uuid",
|
"uuid",
|
||||||
|
"wayland-clipboard-listener",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1285,6 +1372,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
|
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde_core",
|
"serde_core",
|
||||||
|
"serde_derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1451,6 +1539,12 @@ version = "0.2.15"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasi"
|
||||||
|
version = "0.11.1+wasi-snapshot-preview1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasip2"
|
name = "wasip2"
|
||||||
version = "1.0.2+wasi-0.2.9"
|
version = "1.0.2+wasi-0.2.9"
|
||||||
@ -1548,6 +1642,76 @@ dependencies = [
|
|||||||
"semver",
|
"semver",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-backend"
|
||||||
|
version = "0.3.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "aa75f400b7f719bcd68b3f47cd939ba654cedeef690f486db71331eec4c6a406"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
"downcast-rs",
|
||||||
|
"rustix",
|
||||||
|
"smallvec",
|
||||||
|
"wayland-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-client"
|
||||||
|
version = "0.31.13"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ab51d9f7c071abeee76007e2b742499e535148035bb835f97aaed1338cf516c3"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"rustix",
|
||||||
|
"wayland-backend",
|
||||||
|
"wayland-scanner",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-clipboard-listener"
|
||||||
|
version = "0.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e27b4464dcbc041268b018226dceda1ce94ca9d1a020fe47c251fa3de88e7706"
|
||||||
|
dependencies = [
|
||||||
|
"log",
|
||||||
|
"os_pipe",
|
||||||
|
"thiserror",
|
||||||
|
"wayland-client",
|
||||||
|
"wayland-protocols",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-protocols"
|
||||||
|
version = "0.32.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b23b5df31ceff1328f06ac607591d5ba360cf58f90c8fad4ac8d3a55a3c4aec7"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"wayland-backend",
|
||||||
|
"wayland-client",
|
||||||
|
"wayland-scanner",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-scanner"
|
||||||
|
version = "0.31.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c86287151a309799b821ca709b7345a048a2956af05957c89cb824ab919fa4e3"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quick-xml",
|
||||||
|
"quote",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-sys"
|
||||||
|
version = "0.31.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "374f6b70e8e0d6bf9461a32988fd553b59ff630964924dad6e4a4eb6bd538d17"
|
||||||
|
dependencies = [
|
||||||
|
"pkg-config",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "weezl"
|
name = "weezl"
|
||||||
version = "0.1.12"
|
version = "0.1.12"
|
||||||
|
|||||||
@ -9,6 +9,10 @@ image = "0.25.9"
|
|||||||
clipboard-master = "4.0.0"
|
clipboard-master = "4.0.0"
|
||||||
uuid = {version = "1.22.0", features = ["v4", "serde"]}
|
uuid = {version = "1.22.0", features = ["v4", "serde"]}
|
||||||
rusqlite = "0.38.0"
|
rusqlite = "0.38.0"
|
||||||
|
wayland-clipboard-listener = "0.6.0"
|
||||||
|
directories = "6.0.0"
|
||||||
|
serde = { version = "1.0.228", features = ["derive"] }
|
||||||
|
serde_json = "1.0.149"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
x11 = []
|
x11 = []
|
||||||
|
|||||||
@ -1,44 +1,27 @@
|
|||||||
use arboard::{Clipboard, ImageData};
|
use arboard::Clipboard;
|
||||||
use image::{ExtendedColorType, ImageEncoder, codecs::png::PngEncoder};
|
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use std::time::SystemTime;
|
use std::time::SystemTime;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use crate::models::{ClipboardData, ClipboardEntry, Image};
|
use crate::models::{ClipboardData, ClipboardEntry, Image};
|
||||||
|
|
||||||
use clipboard_master::{CallbackResult, ClipboardHandler};
|
// pub trait ImageDataExt {
|
||||||
use std::sync::mpsc::Sender;
|
// fn to_png(&self) -> Result<Vec<u8>, Box<dyn Error>>;
|
||||||
|
// }
|
||||||
pub struct Handler {
|
//
|
||||||
pub clipboard_tx: Sender<()>,
|
// impl ImageDataExt for ImageData<'_> {
|
||||||
}
|
// fn to_png(&self) -> Result<Vec<u8>, Box<dyn Error>> {
|
||||||
|
// let mut buffer = Vec::new();
|
||||||
impl ClipboardHandler for Handler {
|
// let encoder = PngEncoder::new(&mut buffer);
|
||||||
fn on_clipboard_change(&mut self) -> CallbackResult {
|
// encoder.write_image(
|
||||||
if let Err(e) = self.clipboard_tx.send(()) {
|
// &self.bytes,
|
||||||
eprintln!("{}", e);
|
// self.width as u32,
|
||||||
}
|
// self.height as u32,
|
||||||
CallbackResult::Next
|
// ExtendedColorType::Rgba8,
|
||||||
}
|
// )?;
|
||||||
}
|
// Ok(buffer)
|
||||||
|
// }
|
||||||
pub trait ImageDataExt {
|
// }
|
||||||
fn to_png(&self) -> Result<Vec<u8>, Box<dyn Error>>;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ImageDataExt for ImageData<'_> {
|
|
||||||
fn to_png(&self) -> Result<Vec<u8>, Box<dyn Error>> {
|
|
||||||
let mut buffer = Vec::new();
|
|
||||||
let encoder = PngEncoder::new(&mut buffer);
|
|
||||||
encoder.write_image(
|
|
||||||
&self.bytes,
|
|
||||||
self.width as u32,
|
|
||||||
self.height as u32,
|
|
||||||
ExtendedColorType::Rgba8,
|
|
||||||
)?;
|
|
||||||
Ok(buffer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ClipboardEntry {
|
impl ClipboardEntry {
|
||||||
pub fn new(clipboard: &mut Clipboard) -> Result<ClipboardEntry, Box<dyn Error>> {
|
pub fn new(clipboard: &mut Clipboard) -> Result<ClipboardEntry, Box<dyn Error>> {
|
||||||
@ -48,7 +31,9 @@ impl ClipboardEntry {
|
|||||||
Ok(image) => {
|
Ok(image) => {
|
||||||
let id = Uuid::new_v4();
|
let id = Uuid::new_v4();
|
||||||
Some(ClipboardData::Image(Image {
|
Some(ClipboardData::Image(Image {
|
||||||
bytes: Some(image.to_png()?),
|
raw_pixels: Some(image.bytes.into_owned()),
|
||||||
|
width: image.width as u32,
|
||||||
|
height: image.height as u32,
|
||||||
id,
|
id,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,11 @@
|
|||||||
use crate::models::{ClipboardData, ClipboardEntry, Image};
|
use crate::models::{ClipboardData, ClipboardEntry, Image};
|
||||||
|
use image::codecs::jpeg::JpegEncoder;
|
||||||
|
use image::codecs::png::PngEncoder;
|
||||||
|
use image::{ExtendedColorType, ImageEncoder};
|
||||||
use rusqlite::Connection;
|
use rusqlite::Connection;
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
use std::path::Path;
|
||||||
use std::time::{Duration, UNIX_EPOCH};
|
use std::time::{Duration, UNIX_EPOCH};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
@ -12,20 +16,12 @@ pub struct Database {
|
|||||||
|
|
||||||
impl Database {
|
impl Database {
|
||||||
pub fn init(dir_path: &str) -> Result<Self, Box<dyn Error>> {
|
pub fn init(dir_path: &str) -> Result<Self, Box<dyn Error>> {
|
||||||
if !std::fs::exists(dir_path)? {
|
let base_path = Path::new(dir_path);
|
||||||
fs::create_dir(dir_path)?;
|
let images_path = base_path.join("images");
|
||||||
} else {
|
std::fs::create_dir_all(&images_path)?;
|
||||||
println!("{:?} dir already exists.", { dir_path });
|
|
||||||
}
|
|
||||||
|
|
||||||
let image_path = format!("{}/images", dir_path);
|
let db_path = base_path.join("clipboard.db");
|
||||||
if !std::fs::exists(&image_path)? {
|
|
||||||
fs::create_dir(&image_path)?;
|
|
||||||
} else {
|
|
||||||
println!("{:?} dir already exists.", { image_path });
|
|
||||||
}
|
|
||||||
|
|
||||||
let db_path = format!("{}/clipboard.db", dir_path);
|
|
||||||
let conn = Connection::open(&db_path)?;
|
let conn = Connection::open(&db_path)?;
|
||||||
|
|
||||||
conn.execute(
|
conn.execute(
|
||||||
@ -50,9 +46,21 @@ impl Database {
|
|||||||
let (entry_type, content) = match &entry.content {
|
let (entry_type, content) = match &entry.content {
|
||||||
ClipboardData::Text(text) => ("text", text.clone()),
|
ClipboardData::Text(text) => ("text", text.clone()),
|
||||||
ClipboardData::Image(img) => {
|
ClipboardData::Image(img) => {
|
||||||
if let Some(bytes) = &img.bytes {
|
if let Some(raw_pixels) = &img.raw_pixels {
|
||||||
let img_path = format!("{}/images/{}.png", self.dir_path, img.id);
|
let img_path = img.file_path(&self.dir_path);
|
||||||
fs::write(&img_path, bytes)?;
|
|
||||||
|
let file = fs::File::create(&img_path)?;
|
||||||
|
let rgb_pixels: Vec<u8> = raw_pixels
|
||||||
|
.chunks_exact(4)
|
||||||
|
.flat_map(|rgba| [rgba[0], rgba[1], rgba[2]])
|
||||||
|
.collect();
|
||||||
|
let encoder = JpegEncoder::new_with_quality(file, 70);
|
||||||
|
encoder.write_image(
|
||||||
|
&rgb_pixels,
|
||||||
|
img.width,
|
||||||
|
img.height,
|
||||||
|
ExtendedColorType::Rgb8,
|
||||||
|
)?;
|
||||||
}
|
}
|
||||||
("image", img.id.to_string())
|
("image", img.id.to_string())
|
||||||
}
|
}
|
||||||
@ -88,21 +96,14 @@ impl Database {
|
|||||||
ClipboardData::Text(content)
|
ClipboardData::Text(content)
|
||||||
} else {
|
} else {
|
||||||
let id = Uuid::parse_str(&content)?;
|
let id = Uuid::parse_str(&content)?;
|
||||||
ClipboardData::Image(Image { id, bytes: None })
|
ClipboardData::Image(Image {
|
||||||
|
id,
|
||||||
|
raw_pixels: None,
|
||||||
|
width: 0,
|
||||||
|
height: 0,
|
||||||
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
// let data = if ty == "text" {
|
|
||||||
// ClipboardData::Text(content)
|
|
||||||
// } else {
|
|
||||||
// let id = Uuid::parse_str(&content)?;
|
|
||||||
// let img_path = format!("{}/images/{}.png", self.dir_path, id);
|
|
||||||
// let bytes = fs::read(&img_path).unwrap_or_default();
|
|
||||||
// ClipboardData::Image(Image {
|
|
||||||
// bytes: Some(bytes),
|
|
||||||
// id,
|
|
||||||
// })
|
|
||||||
// };
|
|
||||||
|
|
||||||
entries.push(ClipboardEntry {
|
entries.push(ClipboardEntry {
|
||||||
content: data,
|
content: data,
|
||||||
timestamp,
|
timestamp,
|
||||||
@ -111,4 +112,10 @@ impl Database {
|
|||||||
|
|
||||||
Ok(entries)
|
Ok(entries)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn delete_entry_by_content(&self, content: &str) -> Result<(), Box<dyn Error>> {
|
||||||
|
self.conn
|
||||||
|
.execute("DELETE FROM history WHERE content = ?1", [content])?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
125
rklipd/src/ipc.rs
Normal file
125
rklipd/src/ipc.rs
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
use crate::database::Database;
|
||||||
|
use crate::models::ClipboardData;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use std::fs;
|
||||||
|
use std::io::{Read, Write};
|
||||||
|
use std::os::unix::net::UnixListener;
|
||||||
|
use std::path::Path;
|
||||||
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
|
pub enum IpcRequest {
|
||||||
|
GetHistory { limit: usize },
|
||||||
|
SetClipboard { content: String },
|
||||||
|
DeleteEntry { content: String },
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
|
pub enum IpcResponse {
|
||||||
|
History(Vec<String>),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn start_server(db: Arc<Mutex<Database>>, socket_path: &Path) {
|
||||||
|
if socket_path.exists() {
|
||||||
|
let _ = fs::remove_file(socket_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
let listener = match UnixListener::bind(socket_path) {
|
||||||
|
Ok(l) => l,
|
||||||
|
Err(e) => {
|
||||||
|
eprintln!("Error while creating socket {}", e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
println!("ipc server listening {:?}", socket_path);
|
||||||
|
|
||||||
|
for stream in listener.incoming() {
|
||||||
|
match stream {
|
||||||
|
Ok(mut stream) => {
|
||||||
|
let db_clone = Arc::clone(&db);
|
||||||
|
|
||||||
|
std::thread::spawn(move || {
|
||||||
|
let mut buffer = String::new();
|
||||||
|
|
||||||
|
if stream.read_to_string(&mut buffer).is_ok() {
|
||||||
|
if let Ok(request) = serde_json::from_str::<IpcRequest>(&buffer) {
|
||||||
|
match request {
|
||||||
|
IpcRequest::GetHistory { limit } => {
|
||||||
|
let db_lock = db_clone.lock().unwrap();
|
||||||
|
|
||||||
|
// TODO Implem read_history(limit)
|
||||||
|
let history = db_lock.read_history().unwrap_or_default();
|
||||||
|
|
||||||
|
let items: Vec<String> = history
|
||||||
|
.into_iter()
|
||||||
|
.rev()
|
||||||
|
.take(limit)
|
||||||
|
.map(|entry| match entry.content {
|
||||||
|
ClipboardData::Text(t) => t,
|
||||||
|
ClipboardData::Image(img) => format!("{}.jpg", img.id),
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let response = IpcResponse::History(items);
|
||||||
|
let response_json = serde_json::to_string(&response).unwrap();
|
||||||
|
let _ = stream.write_all(response_json.as_bytes());
|
||||||
|
}
|
||||||
|
IpcRequest::SetClipboard { content } => {
|
||||||
|
if let Ok(mut clipboard) = arboard::Clipboard::new() {
|
||||||
|
if content.ends_with(".jpg") || content.ends_with(".png") {
|
||||||
|
if let Some(proj_dirs) = directories::ProjectDirs::from(
|
||||||
|
"com", "zefad", "rklipd",
|
||||||
|
) {
|
||||||
|
let img_path = proj_dirs
|
||||||
|
.data_dir()
|
||||||
|
.join("images")
|
||||||
|
.join(&content);
|
||||||
|
if let Ok(img) = image::open(&img_path) {
|
||||||
|
let rgba = img.into_rgba8();
|
||||||
|
let img_data = arboard::ImageData {
|
||||||
|
width: rgba.width() as usize,
|
||||||
|
height: rgba.height() as usize,
|
||||||
|
bytes: std::borrow::Cow::Borrowed(
|
||||||
|
rgba.as_raw(),
|
||||||
|
),
|
||||||
|
};
|
||||||
|
let _ = clipboard.set_image(img_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let _ = clipboard.set_text(content);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IpcRequest::DeleteEntry { content } => {
|
||||||
|
{
|
||||||
|
let db_lock = db_clone.lock().unwrap();
|
||||||
|
let _ = db_lock.delete_entry_by_content(&content);
|
||||||
|
}
|
||||||
|
|
||||||
|
if content.ends_with(".jpg") || content.ends_with(".png") {
|
||||||
|
if let Some(proj_dirs) =
|
||||||
|
directories::ProjectDirs::from("com", "zefad", "rklipd")
|
||||||
|
{
|
||||||
|
let img_path =
|
||||||
|
proj_dirs.data_dir().join("images").join(&content);
|
||||||
|
if img_path.exists() {
|
||||||
|
if let Err(e) = std::fs::remove_file(&img_path) {
|
||||||
|
eprintln!("Error while deleting image: {}", e);
|
||||||
|
} else {
|
||||||
|
println!("Image deleted : {}", content);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Err(e) => eprintln!("Erreur de connexion IPC: {}", e),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,21 +1,31 @@
|
|||||||
use arboard::Clipboard;
|
|
||||||
|
|
||||||
use crate::database::Database;
|
use crate::database::Database;
|
||||||
|
use arboard::Clipboard;
|
||||||
|
use directories::ProjectDirs;
|
||||||
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
mod clipboard;
|
mod clipboard;
|
||||||
mod database;
|
mod database;
|
||||||
|
mod ipc;
|
||||||
mod models;
|
mod models;
|
||||||
mod monitor;
|
mod monitor;
|
||||||
|
mod ws;
|
||||||
|
|
||||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let clipboard = Clipboard::new()?;
|
let clipboard = Clipboard::new()?;
|
||||||
|
|
||||||
let dir_path = "clipboard";
|
let proj_dirs = ProjectDirs::from("com", "zefad", "rklipd").expect("Unable to open dir");
|
||||||
|
let dir_path = proj_dirs.data_dir();
|
||||||
|
let dir_path_str = dir_path.to_str().expect("Invalid path").to_string();
|
||||||
|
|
||||||
let db = Database::init(dir_path)?;
|
let db = Arc::new(Mutex::new(Database::init(&dir_path_str)?));
|
||||||
|
|
||||||
println!("{:#?}", db.read_history());
|
let socket_path = dir_path.join("rklip.sock");
|
||||||
|
let db_for_ipc = Arc::clone(&db);
|
||||||
|
std::thread::spawn(move || {
|
||||||
|
crate::ipc::start_server(db_for_ipc, &socket_path);
|
||||||
|
});
|
||||||
|
|
||||||
|
println!("rklipd starting...");
|
||||||
monitor::start(db, clipboard)?;
|
monitor::start(db, clipboard)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
use std::path::PathBuf;
|
||||||
use std::time::SystemTime;
|
use std::time::SystemTime;
|
||||||
use std::{fs, io};
|
use std::{fs, io};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
@ -16,16 +17,20 @@ pub enum ClipboardData {
|
|||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct Image {
|
pub struct Image {
|
||||||
pub bytes: Option<Vec<u8>>,
|
pub raw_pixels: Option<Vec<u8>>,
|
||||||
|
pub width: u32,
|
||||||
|
pub height: u32,
|
||||||
pub id: Uuid,
|
pub id: Uuid,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Image {
|
impl Image {
|
||||||
|
pub fn file_path(&self, base_dir: &str) -> PathBuf {
|
||||||
|
std::path::Path::new(base_dir)
|
||||||
|
.join("images")
|
||||||
|
.join(format!("{}.jpg", self.id))
|
||||||
|
}
|
||||||
|
|
||||||
pub fn load_bytes(&self, dir_path: &str) -> io::Result<Vec<u8>> {
|
pub fn load_bytes(&self, dir_path: &str) -> io::Result<Vec<u8>> {
|
||||||
if let Some(b) = &self.bytes {
|
fs::read(self.file_path(dir_path))
|
||||||
return Ok(b.clone());
|
|
||||||
}
|
|
||||||
let img_path = format!("{}/images/{}.png", dir_path, self.id);
|
|
||||||
fs::read(img_path)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,32 +1,25 @@
|
|||||||
use std::{error::Error, sync::mpsc::channel};
|
|
||||||
|
|
||||||
use arboard::Clipboard;
|
|
||||||
use clipboard_master::Master;
|
|
||||||
|
|
||||||
use crate::clipboard::Handler;
|
|
||||||
use crate::database::Database;
|
use crate::database::Database;
|
||||||
use crate::models::ClipboardEntry;
|
use arboard::Clipboard;
|
||||||
|
use std::error::Error;
|
||||||
pub fn start(db: Database, mut clipboard: Clipboard) -> Result<(), Box<dyn Error>> {
|
use std::sync::{Arc, Mutex};
|
||||||
let (tx, rx) = channel();
|
|
||||||
|
|
||||||
let mut master = Master::new(Handler { clipboard_tx: tx })?;
|
|
||||||
std::thread::spawn(move || {
|
|
||||||
if let Err(e) = master.run() {
|
|
||||||
eprintln!("Clipboard monitor error : {}", e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
for _ in rx {
|
|
||||||
print!("Clipboard changed!");
|
|
||||||
if let Ok(entry) = ClipboardEntry::new(&mut clipboard) {
|
|
||||||
if let Err(e) = db.append(entry) {
|
|
||||||
eprintln!("SQLite writing error: {}", e);
|
|
||||||
} else {
|
|
||||||
println!("SQLite edited!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
#[cfg(feature = "x11")]
|
||||||
|
use crate::ws;
|
||||||
|
#[cfg(feature = "x11")]
|
||||||
|
pub fn start(db: Arc<Mutex<Database>>, clipboard: Clipboard) -> Result<(), Box<dyn Error>> {
|
||||||
|
ws::x11::start(db, clipboard)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "wayland")]
|
||||||
|
use crate::ws;
|
||||||
|
#[cfg(feature = "wayland")]
|
||||||
|
pub fn start(db: Arc<Mutex<Database>>, clipboard: Clipboard) -> Result<(), Box<dyn Error>> {
|
||||||
|
ws::wayland::start(db, clipboard)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(not(any(feature = "x11", feature = "wayland")))]
|
||||||
|
pub fn start(_db: Arc<Mutex<Database>>, _clipboard: Clipboard) -> Result<(), Box<dyn Error>> {
|
||||||
|
Err("No window system feature enabled".into())
|
||||||
|
}
|
||||||
|
|||||||
4
rklipd/src/ws.rs
Normal file
4
rklipd/src/ws.rs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#[cfg(feature = "wayland")]
|
||||||
|
pub mod wayland;
|
||||||
|
#[cfg(feature = "x11")]
|
||||||
|
pub mod x11;
|
||||||
54
rklipd/src/ws/wayland.rs
Normal file
54
rklipd/src/ws/wayland.rs
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
use crate::{database::Database, models::ClipboardEntry};
|
||||||
|
use arboard::Clipboard;
|
||||||
|
use std::time::Duration;
|
||||||
|
use std::{
|
||||||
|
error::Error,
|
||||||
|
sync::mpsc::channel,
|
||||||
|
sync::{Arc, Mutex},
|
||||||
|
};
|
||||||
|
use wayland_clipboard_listener::{WlClipboardPasteStream, WlListenType};
|
||||||
|
|
||||||
|
pub fn start(db: Arc<Mutex<Database>>, mut clipboard: Clipboard) -> Result<(), Box<dyn Error>> {
|
||||||
|
let (tx, rx) = channel();
|
||||||
|
|
||||||
|
std::thread::spawn(
|
||||||
|
move || match WlClipboardPasteStream::init(WlListenType::ListenOnCopy) {
|
||||||
|
Ok(mut stream) => {
|
||||||
|
for _ in stream.paste_stream().flatten() {
|
||||||
|
std::thread::sleep(Duration::new(1, 0));
|
||||||
|
if let Err(e) = tx.send(()) {
|
||||||
|
eprintln!("{}", e);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
eprintln!("{}", e);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
for _ in rx {
|
||||||
|
println!("Clipboard update!");
|
||||||
|
if let Ok(entry) = ClipboardEntry::new(&mut clipboard) {
|
||||||
|
let db_clone = Arc::clone(&db);
|
||||||
|
|
||||||
|
std::thread::spawn(move || {
|
||||||
|
let db_lock = db_clone.lock().unwrap();
|
||||||
|
|
||||||
|
if let Err(e) = db_lock.append(entry) {
|
||||||
|
eprintln!("SQLite writing error: {}", e);
|
||||||
|
} else {
|
||||||
|
println!("SQLite edited!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// match ClipboardEntry::new(&mut clipboard) {
|
||||||
|
// Ok(entry) => db.append(entry)?,
|
||||||
|
// Err(e) => eprintln!("{}", e),
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
49
rklipd/src/ws/x11.rs
Normal file
49
rklipd/src/ws/x11.rs
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
use crate::{database::Database, models::ClipboardEntry};
|
||||||
|
use arboard::Clipboard;
|
||||||
|
use clipboard_master::{CallbackResult, ClipboardHandler, Master};
|
||||||
|
use std::sync::{Arc, Mutex};
|
||||||
|
use std::{
|
||||||
|
error::Error,
|
||||||
|
sync::mpsc::{Sender, channel},
|
||||||
|
};
|
||||||
|
|
||||||
|
pub struct Handler {
|
||||||
|
pub clipboard_tx: Sender<()>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ClipboardHandler for Handler {
|
||||||
|
fn on_clipboard_change(&mut self) -> CallbackResult {
|
||||||
|
if let Err(e) = self.clipboard_tx.send(()) {
|
||||||
|
eprintln!("{}", e);
|
||||||
|
}
|
||||||
|
CallbackResult::Next
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn start(db: Arc<Mutex<Database>>, mut clipboard: Clipboard) -> Result<(), Box<dyn Error>> {
|
||||||
|
let (tx, rx) = channel();
|
||||||
|
|
||||||
|
let mut master = Master::new(Handler { clipboard_tx: tx })?;
|
||||||
|
std::thread::spawn(move || {
|
||||||
|
if let Err(e) = master.run() {
|
||||||
|
eprintln!("Clipboard monitor error : {}", e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
for _ in rx {
|
||||||
|
println!("Clipboard update!");
|
||||||
|
if let Ok(entry) = ClipboardEntry::new(&mut clipboard) {
|
||||||
|
let db_clone = Arc::clone(&db);
|
||||||
|
std::thread::spawn(move || {
|
||||||
|
let db_lock = db_clone.lock().unwrap();
|
||||||
|
if let Err(e) = db_lock.append(entry) {
|
||||||
|
eprintln!("SQLite writing error: {}", e);
|
||||||
|
} else {
|
||||||
|
println!("SQLite edited!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
198
src/app.rs
Normal file
198
src/app.rs
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
use crate::ipc;
|
||||||
|
use fuzzy_matcher::{FuzzyMatcher, skim::SkimMatcherV2};
|
||||||
|
use ratatui::widgets::ListState;
|
||||||
|
use ratatui_image::{picker::Picker, protocol};
|
||||||
|
|
||||||
|
#[derive(PartialEq)]
|
||||||
|
pub enum Mode {
|
||||||
|
Normal,
|
||||||
|
Command,
|
||||||
|
Search,
|
||||||
|
ConfirmDelete,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct App {
|
||||||
|
pub mode: Mode,
|
||||||
|
pub all_items: Vec<String>,
|
||||||
|
pub filtered_items: Vec<String>,
|
||||||
|
pub list_state: ListState,
|
||||||
|
pub input_buffer: String,
|
||||||
|
pub should_quit: bool,
|
||||||
|
pub undo_stack: Vec<(usize, String)>,
|
||||||
|
pub current_image: Option<protocol::StatefulProtocol>,
|
||||||
|
pub last_selected_index: Option<usize>,
|
||||||
|
pub picker: Picker,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl App {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
let mut list_state = ListState::default();
|
||||||
|
list_state.select(Some(0));
|
||||||
|
|
||||||
|
let items = ipc::fetch_history(100).unwrap_or_default();
|
||||||
|
|
||||||
|
let mut list_state = ListState::default();
|
||||||
|
if items.is_empty() {
|
||||||
|
list_state.select(None);
|
||||||
|
} else {
|
||||||
|
list_state.select(Some(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
let picker = Picker::from_query_stdio().unwrap_or_else(|_| Picker::halfblocks());
|
||||||
|
|
||||||
|
let mut app = Self {
|
||||||
|
mode: Mode::Normal,
|
||||||
|
filtered_items: items.clone(),
|
||||||
|
all_items: items,
|
||||||
|
list_state,
|
||||||
|
input_buffer: String::new(),
|
||||||
|
should_quit: false,
|
||||||
|
undo_stack: Vec::new(),
|
||||||
|
current_image: None,
|
||||||
|
last_selected_index: None,
|
||||||
|
picker,
|
||||||
|
};
|
||||||
|
|
||||||
|
app.update_preview();
|
||||||
|
app
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn update_search(&mut self) {
|
||||||
|
if self.input_buffer.is_empty() {
|
||||||
|
self.filtered_items = self.all_items.clone();
|
||||||
|
} else {
|
||||||
|
let matcher = SkimMatcherV2::default();
|
||||||
|
|
||||||
|
let mut matched: Vec<(i64, String)> = self
|
||||||
|
.all_items
|
||||||
|
.iter()
|
||||||
|
.filter_map(|item| {
|
||||||
|
matcher
|
||||||
|
.fuzzy_match(item, &self.input_buffer)
|
||||||
|
.map(|score| (score, item.clone()))
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
matched.sort_by(|a, b| b.0.cmp(&a.0));
|
||||||
|
|
||||||
|
self.filtered_items = matched.into_iter().map(|(_, item)| item).collect();
|
||||||
|
self.update_preview();
|
||||||
|
}
|
||||||
|
|
||||||
|
self.list_state.select(if self.filtered_items.is_empty() {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(0)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn delete_selected(&mut self) {
|
||||||
|
if let Some(i) = self.list_state.selected() {
|
||||||
|
if i < self.filtered_items.len() {
|
||||||
|
let item_to_remove = self.filtered_items.remove(i);
|
||||||
|
|
||||||
|
self.undo_stack.push((i, item_to_remove.clone()));
|
||||||
|
|
||||||
|
if let Some(pos) = self.all_items.iter().position(|x| *x == item_to_remove) {
|
||||||
|
self.all_items.remove(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.filtered_items.is_empty() {
|
||||||
|
self.list_state.select(None);
|
||||||
|
} else if i >= self.filtered_items.len() {
|
||||||
|
self.list_state.select(Some(self.filtered_items.len() - 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.update_preview();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn undo_delete(&mut self) {
|
||||||
|
if let Some((i, item)) = self.undo_stack.pop() {
|
||||||
|
self.all_items.insert(i, item.clone());
|
||||||
|
self.update_search();
|
||||||
|
self.list_state.select(Some(i));
|
||||||
|
}
|
||||||
|
self.update_preview();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn update_preview(&mut self) {
|
||||||
|
let current_index = self.list_state.selected();
|
||||||
|
|
||||||
|
if self.last_selected_index == current_index {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self.last_selected_index = current_index;
|
||||||
|
self.current_image = None;
|
||||||
|
|
||||||
|
if let Some(selected_text) = self.get_selected_item() {
|
||||||
|
// To change later with entry type
|
||||||
|
if selected_text.ends_with(".jpg") || selected_text.ends_with(".png") {
|
||||||
|
let base_dir = directories::ProjectDirs::from("com", "zefad", "rklipd")
|
||||||
|
.expect("No home dir")
|
||||||
|
.data_dir()
|
||||||
|
.to_path_buf();
|
||||||
|
|
||||||
|
let img_path = base_dir.join("images").join(selected_text);
|
||||||
|
|
||||||
|
if img_path.exists() {
|
||||||
|
if let Ok(img) = image::open(&img_path) {
|
||||||
|
let protocol = self.picker.new_resize_protocol(img);
|
||||||
|
self.current_image = Some(protocol);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn next(&mut self) {
|
||||||
|
if self.filtered_items.is_empty() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let i = match self.list_state.selected() {
|
||||||
|
Some(i) => {
|
||||||
|
if i >= self.filtered_items.len() - 1 {
|
||||||
|
0
|
||||||
|
} else {
|
||||||
|
i + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None => 0,
|
||||||
|
};
|
||||||
|
self.list_state.select(Some(i));
|
||||||
|
self.update_preview();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn previous(&mut self) {
|
||||||
|
if self.filtered_items.is_empty() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let i = match self.list_state.selected() {
|
||||||
|
Some(i) => {
|
||||||
|
if i == 0 {
|
||||||
|
self.filtered_items.len() - 1
|
||||||
|
} else {
|
||||||
|
i - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None => 0,
|
||||||
|
};
|
||||||
|
self.list_state.select(Some(i));
|
||||||
|
self.update_preview();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_selected_item(&self) -> Option<&String> {
|
||||||
|
self.list_state
|
||||||
|
.selected()
|
||||||
|
.and_then(|i| self.filtered_items.get(i))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn sync_with_daemon(&mut self) {
|
||||||
|
if let Some(new_history) = crate::ipc::fetch_history(100) {
|
||||||
|
if self.all_items != new_history {
|
||||||
|
self.all_items = new_history;
|
||||||
|
self.update_search();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
65
src/ipc.rs
Normal file
65
src/ipc.rs
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use std::io::{Read, Write};
|
||||||
|
use std::os::unix::net::UnixStream;
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
|
pub enum IpcRequest {
|
||||||
|
GetHistory { limit: usize },
|
||||||
|
SetClipboard { content: String },
|
||||||
|
DeleteEntry { content: String },
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
|
pub enum IpcResponse {
|
||||||
|
History(Vec<String>),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn fetch_history(limit: usize) -> Option<Vec<String>> {
|
||||||
|
let base_dir = directories::ProjectDirs::from("com", "zefad", "rklipd")?
|
||||||
|
.data_dir()
|
||||||
|
.to_path_buf();
|
||||||
|
let socket_path = base_dir.join("rklip.sock");
|
||||||
|
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket_path) {
|
||||||
|
let req = IpcRequest::GetHistory { limit };
|
||||||
|
let req_json = serde_json::to_string(&req).unwrap();
|
||||||
|
|
||||||
|
let _ = stream.write_all(req_json.as_bytes());
|
||||||
|
let _ = stream.shutdown(std::net::Shutdown::Write);
|
||||||
|
|
||||||
|
let mut response_buffer = String::new();
|
||||||
|
if stream.read_to_string(&mut response_buffer).is_ok() {
|
||||||
|
if let Ok(IpcResponse::History(items)) = serde_json::from_str(&response_buffer) {
|
||||||
|
return Some(items);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_clipboard(content: String) {
|
||||||
|
if let Some(base_dir) = directories::ProjectDirs::from("com", "zefad", "rklipd") {
|
||||||
|
let socket_path = base_dir.data_dir().join("rklip.sock");
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket_path) {
|
||||||
|
let req = IpcRequest::SetClipboard { content };
|
||||||
|
if let Ok(req_json) = serde_json::to_string(&req) {
|
||||||
|
let _ = stream.write_all(req_json.as_bytes());
|
||||||
|
let _ = stream.shutdown(std::net::Shutdown::Write);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn delete_entry(content: String) {
|
||||||
|
if let Some(base_dir) = directories::ProjectDirs::from("com", "zefad", "rklipd") {
|
||||||
|
let socket_path = base_dir.data_dir().join("rklip.sock");
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket_path) {
|
||||||
|
let req = IpcRequest::DeleteEntry { content };
|
||||||
|
if let Ok(req_json) = serde_json::to_string(&req) {
|
||||||
|
let _ = stream.write_all(req_json.as_bytes());
|
||||||
|
let _ = stream.shutdown(std::net::Shutdown::Write);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
186
src/main.rs
186
src/main.rs
@ -1,24 +1,176 @@
|
|||||||
use arboard::Clipboard;
|
mod app;
|
||||||
|
mod ipc;
|
||||||
|
mod models;
|
||||||
|
mod ui;
|
||||||
|
|
||||||
fn main() {
|
use app::{App, Mode};
|
||||||
let Ok(mut clipboard) = Clipboard::new() else {
|
use crossterm::{
|
||||||
println!("Clipboard init error");
|
event::{self, Event, KeyCode},
|
||||||
return;
|
execute,
|
||||||
|
terminal::{EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode},
|
||||||
};
|
};
|
||||||
|
use ratatui::{Terminal, backend::CrosstermBackend};
|
||||||
|
use std::io;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
// let Ok(test) = clipboard.get_text() else {
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
// println!("Clipboard empty");
|
enable_raw_mode()?;
|
||||||
// return;
|
let mut stdout = io::stdout();
|
||||||
// };
|
execute!(stdout, EnterAlternateScreen)?;
|
||||||
|
let backend = CrosstermBackend::new(stdout);
|
||||||
|
let mut terminal = Terminal::new(backend)?;
|
||||||
|
|
||||||
let test = clipboard.get_text().unwrap_or_else(|_| "".to_string());
|
let mut app = App::new();
|
||||||
println!("clipboard content : {}", test);
|
let res = run_app(&mut terminal, &mut app);
|
||||||
|
|
||||||
// let _ = clipboard.clear().expect("");
|
disable_raw_mode()?;
|
||||||
|
execute!(terminal.backend_mut(), LeaveAlternateScreen)?;
|
||||||
|
terminal.show_cursor()?;
|
||||||
|
|
||||||
// clipboard.set_text("test").unwrap();
|
if let Err(err) = res {
|
||||||
|
println!("{:?}", err);
|
||||||
// for (key, value) in std::env::vars() {
|
}
|
||||||
// println!("{key}: {value}");
|
Ok(())
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
fn run_app(terminal: &mut Terminal<CrosstermBackend<io::Stdout>>, app: &mut App) -> io::Result<()> {
|
||||||
|
let mut last_key_was_d = false;
|
||||||
|
let mut last_key_was_g = false;
|
||||||
|
|
||||||
|
loop {
|
||||||
|
terminal.draw(|f| ui::render(f, app))?;
|
||||||
|
|
||||||
|
if event::poll(Duration::from_millis(500))? {
|
||||||
|
if let Event::Key(key) = event::read()? {
|
||||||
|
match app.mode {
|
||||||
|
Mode::Normal => match key.code {
|
||||||
|
KeyCode::Enter => {
|
||||||
|
if let Some(selected) = app.get_selected_item() {
|
||||||
|
crate::ipc::set_clipboard(selected.clone());
|
||||||
|
app.should_quit = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
KeyCode::Char('j') => {
|
||||||
|
app.next();
|
||||||
|
last_key_was_d = false;
|
||||||
|
}
|
||||||
|
KeyCode::Char('k') => {
|
||||||
|
app.previous();
|
||||||
|
last_key_was_d = false;
|
||||||
|
}
|
||||||
|
KeyCode::Char('d') => {
|
||||||
|
if last_key_was_d {
|
||||||
|
app.mode = Mode::ConfirmDelete;
|
||||||
|
last_key_was_d = false;
|
||||||
|
} else {
|
||||||
|
last_key_was_d = true;
|
||||||
|
}
|
||||||
|
last_key_was_g = false;
|
||||||
|
}
|
||||||
|
KeyCode::Char('u') => {
|
||||||
|
app.undo_delete();
|
||||||
|
last_key_was_d = false;
|
||||||
|
}
|
||||||
|
KeyCode::Char('g') => {
|
||||||
|
if last_key_was_g {
|
||||||
|
if !app.filtered_items.is_empty() {
|
||||||
|
app.list_state.select(Some(0));
|
||||||
|
}
|
||||||
|
last_key_was_g = false;
|
||||||
|
} else {
|
||||||
|
last_key_was_g = true;
|
||||||
|
}
|
||||||
|
last_key_was_d = false;
|
||||||
|
}
|
||||||
|
KeyCode::Char('G') => {
|
||||||
|
if !app.filtered_items.is_empty() {
|
||||||
|
app.list_state.select(Some(app.filtered_items.len() - 1));
|
||||||
|
}
|
||||||
|
last_key_was_d = false;
|
||||||
|
}
|
||||||
|
KeyCode::Char(':') => {
|
||||||
|
app.mode = Mode::Command;
|
||||||
|
app.input_buffer.clear();
|
||||||
|
last_key_was_d = false;
|
||||||
|
}
|
||||||
|
KeyCode::Char('/') => {
|
||||||
|
app.mode = Mode::Search;
|
||||||
|
app.input_buffer.clear();
|
||||||
|
app.update_search();
|
||||||
|
last_key_was_d = false;
|
||||||
|
}
|
||||||
|
KeyCode::Char('q') => {
|
||||||
|
app.should_quit = true;
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
last_key_was_d = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
Mode::Command => match key.code {
|
||||||
|
KeyCode::Esc => {
|
||||||
|
app.mode = Mode::Normal;
|
||||||
|
app.input_buffer.clear();
|
||||||
|
app.update_search();
|
||||||
|
}
|
||||||
|
KeyCode::Char(c) => app.input_buffer.push(c),
|
||||||
|
KeyCode::Backspace => {
|
||||||
|
app.input_buffer.pop();
|
||||||
|
}
|
||||||
|
KeyCode::Enter => {
|
||||||
|
if app.input_buffer == "q" {
|
||||||
|
app.should_quit = true;
|
||||||
|
}
|
||||||
|
app.mode = Mode::Normal;
|
||||||
|
app.input_buffer.clear();
|
||||||
|
app.update_search();
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
},
|
||||||
|
|
||||||
|
Mode::Search => match key.code {
|
||||||
|
KeyCode::Esc => {
|
||||||
|
app.mode = Mode::Normal;
|
||||||
|
app.input_buffer.clear();
|
||||||
|
app.update_search();
|
||||||
|
}
|
||||||
|
KeyCode::Enter => {
|
||||||
|
if let Some(selected) = app.get_selected_item() {
|
||||||
|
crate::ipc::set_clipboard(selected.clone());
|
||||||
|
app.should_quit = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
KeyCode::Char(c) => {
|
||||||
|
app.input_buffer.push(c);
|
||||||
|
app.update_search();
|
||||||
|
}
|
||||||
|
KeyCode::Backspace => {
|
||||||
|
app.input_buffer.pop();
|
||||||
|
app.update_search();
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
},
|
||||||
|
Mode::ConfirmDelete => match key.code {
|
||||||
|
KeyCode::Char('y') | KeyCode::Char('Y') | KeyCode::Enter => {
|
||||||
|
if let Some(selected) = app.get_selected_item() {
|
||||||
|
crate::ipc::delete_entry(selected.clone());
|
||||||
|
app.delete_selected();
|
||||||
|
}
|
||||||
|
app.mode = Mode::Normal;
|
||||||
|
}
|
||||||
|
KeyCode::Char('n') | KeyCode::Char('N') | KeyCode::Esc => {
|
||||||
|
app.mode = Mode::Normal;
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
app.sync_with_daemon();
|
||||||
|
}
|
||||||
|
|
||||||
|
if app.should_quit {
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
36
src/models.rs
Normal file
36
src/models.rs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
use std::path::PathBuf;
|
||||||
|
use std::time::SystemTime;
|
||||||
|
use std::{fs, io};
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct ClipboardEntry {
|
||||||
|
pub content: ClipboardData,
|
||||||
|
pub timestamp: SystemTime,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub enum ClipboardData {
|
||||||
|
Text(String),
|
||||||
|
Image(Image),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct Image {
|
||||||
|
pub raw_pixels: Option<Vec<u8>>,
|
||||||
|
pub width: u32,
|
||||||
|
pub height: u32,
|
||||||
|
pub id: Uuid,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Image {
|
||||||
|
pub fn file_path(&self, base_dir: &str) -> PathBuf {
|
||||||
|
std::path::Path::new(base_dir)
|
||||||
|
.join("images")
|
||||||
|
.join(format!("{}.jpg", self.id))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn load_bytes(&self, dir_path: &str) -> io::Result<Vec<u8>> {
|
||||||
|
fs::read(self.file_path(dir_path))
|
||||||
|
}
|
||||||
|
}
|
||||||
241
src/target/rust-analyzer/flycheck0/stderr
Normal file
241
src/target/rust-analyzer/flycheck0/stderr
Normal file
@ -0,0 +1,241 @@
|
|||||||
|
Updating crates.io index
|
||||||
|
Locking 16 packages to latest Rust 1.92.0 compatible versions
|
||||||
|
Adding fallible-iterator v0.3.0
|
||||||
|
Adding fallible-streaming-iterator v0.1.9
|
||||||
|
Adding foldhash v0.2.0
|
||||||
|
Adding hashlink v0.11.0
|
||||||
|
Adding js-sys v0.3.91
|
||||||
|
Adding libsqlite3-sys v0.36.0
|
||||||
|
Adding pkg-config v0.3.32
|
||||||
|
Adding rsqlite-vfs v0.1.0
|
||||||
|
Adding rusqlite v0.38.0
|
||||||
|
Adding sqlite-wasm-rs v0.5.2
|
||||||
|
Adding uuid v1.22.0
|
||||||
|
Adding vcpkg v0.2.15
|
||||||
|
Updating wasm-bindgen v0.2.108 -> v0.2.114
|
||||||
|
Updating wasm-bindgen-macro v0.2.108 -> v0.2.114
|
||||||
|
Updating wasm-bindgen-macro-support v0.2.108 -> v0.2.114
|
||||||
|
Updating wasm-bindgen-shared v0.2.108 -> v0.2.114
|
||||||
|
warning: rklip v0.1.0 (/home/zefad/Documents/Code/Rust/rklip) ignoring invalid dependency `rklipd` which is missing a lib target
|
||||||
|
1.038457734s INFO prepare_target{force=false package_id=rklip v0.1.0 (/home/zefad/Documents/Code/Rust/rklip) target="rklip"}: cargo::core::compiler::fingerprint: fingerprint error for rklip v0.1.0 (/home/zefad/Documents/Code/Rust/rklip)/Check { test: false }/TargetInner { name: "rklip", doc: true, ..: with_path("/home/zefad/Documents/Code/Rust/rklip/src/main.rs", Edition2024) }
|
||||||
|
1.038475304s INFO prepare_target{force=false package_id=rklip v0.1.0 (/home/zefad/Documents/Code/Rust/rklip) target="rklip"}: cargo::core::compiler::fingerprint: err: failed to read `/home/zefad/Documents/Code/Rust/rklip/target/debug/.fingerprint/rklip-07d4fd1c9485c752/bin-rklip`
|
||||||
|
|
||||||
|
Caused by:
|
||||||
|
No such file or directory (os error 2)
|
||||||
|
|
||||||
|
Stack backtrace:
|
||||||
|
0: cargo_util::paths::read_bytes
|
||||||
|
1: cargo_util::paths::read
|
||||||
|
2: cargo::core::compiler::fingerprint::_compare_old_fingerprint
|
||||||
|
3: cargo::core::compiler::fingerprint::prepare_target
|
||||||
|
4: cargo::core::compiler::compile
|
||||||
|
5: <cargo::core::compiler::build_runner::BuildRunner>::compile
|
||||||
|
6: cargo::ops::cargo_compile::compile_ws
|
||||||
|
7: cargo::ops::cargo_compile::compile_with_exec
|
||||||
|
8: cargo::ops::cargo_compile::compile
|
||||||
|
9: cargo::commands::check::exec
|
||||||
|
10: <cargo::cli::Exec>::exec
|
||||||
|
11: cargo::main
|
||||||
|
12: std::sys::backtrace::__rust_begin_short_backtrace::<fn(), ()>
|
||||||
|
13: std::rt::lang_start::<()>::{closure#0}
|
||||||
|
14: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/core/src/ops/function.rs:287:21
|
||||||
|
15: std::panicking::catch_unwind::do_call
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
|
||||||
|
16: std::panicking::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
|
||||||
|
17: std::panic::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
|
||||||
|
18: std::rt::lang_start_internal::{{closure}}
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:175:24
|
||||||
|
19: std::panicking::catch_unwind::do_call
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
|
||||||
|
20: std::panicking::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
|
||||||
|
21: std::panic::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
|
||||||
|
22: std::rt::lang_start_internal
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:171:5
|
||||||
|
23: main
|
||||||
|
24: <unknown>
|
||||||
|
25: __libc_start_main
|
||||||
|
26: <unknown>
|
||||||
|
1.043374140s INFO prepare_target{force=false package_id=arboard v3.6.1 target="arboard"}: cargo::core::compiler::fingerprint: fingerprint error for arboard v3.6.1/Check { test: false }/TargetInner { ..: lib_target("arboard", ["lib"], "/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/arboard-3.6.1/src/lib.rs", Edition2021) }
|
||||||
|
1.043385493s INFO prepare_target{force=false package_id=arboard v3.6.1 target="arboard"}: cargo::core::compiler::fingerprint: err: failed to read `/home/zefad/Documents/Code/Rust/rklip/target/debug/.fingerprint/arboard-7ace66d9f3fc0fb8/lib-arboard`
|
||||||
|
|
||||||
|
Caused by:
|
||||||
|
No such file or directory (os error 2)
|
||||||
|
|
||||||
|
Stack backtrace:
|
||||||
|
0: cargo_util::paths::read_bytes
|
||||||
|
1: cargo_util::paths::read
|
||||||
|
2: cargo::core::compiler::fingerprint::_compare_old_fingerprint
|
||||||
|
3: cargo::core::compiler::fingerprint::prepare_target
|
||||||
|
4: cargo::core::compiler::compile
|
||||||
|
5: cargo::core::compiler::compile
|
||||||
|
6: <cargo::core::compiler::build_runner::BuildRunner>::compile
|
||||||
|
7: cargo::ops::cargo_compile::compile_ws
|
||||||
|
8: cargo::ops::cargo_compile::compile_with_exec
|
||||||
|
9: cargo::ops::cargo_compile::compile
|
||||||
|
10: cargo::commands::check::exec
|
||||||
|
11: <cargo::cli::Exec>::exec
|
||||||
|
12: cargo::main
|
||||||
|
13: std::sys::backtrace::__rust_begin_short_backtrace::<fn(), ()>
|
||||||
|
14: std::rt::lang_start::<()>::{closure#0}
|
||||||
|
15: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/core/src/ops/function.rs:287:21
|
||||||
|
16: std::panicking::catch_unwind::do_call
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
|
||||||
|
17: std::panicking::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
|
||||||
|
18: std::panic::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
|
||||||
|
19: std::rt::lang_start_internal::{{closure}}
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:175:24
|
||||||
|
20: std::panicking::catch_unwind::do_call
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
|
||||||
|
21: std::panicking::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
|
||||||
|
22: std::panic::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
|
||||||
|
23: std::rt::lang_start_internal
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:171:5
|
||||||
|
24: main
|
||||||
|
25: <unknown>
|
||||||
|
26: __libc_start_main
|
||||||
|
27: <unknown>
|
||||||
|
1.046241787s INFO prepare_target{force=false package_id=x11rb v0.13.2 target="x11rb"}: cargo::core::compiler::fingerprint: fingerprint error for x11rb v0.13.2/Check { test: false }/TargetInner { ..: lib_target("x11rb", ["lib"], "/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/x11rb-0.13.2/src/lib.rs", Edition2021) }
|
||||||
|
1.046251265s INFO prepare_target{force=false package_id=x11rb v0.13.2 target="x11rb"}: cargo::core::compiler::fingerprint: err: failed to read `/home/zefad/Documents/Code/Rust/rklip/target/debug/.fingerprint/x11rb-d7250961ceb78527/lib-x11rb`
|
||||||
|
|
||||||
|
Caused by:
|
||||||
|
No such file or directory (os error 2)
|
||||||
|
|
||||||
|
Stack backtrace:
|
||||||
|
0: cargo_util::paths::read_bytes
|
||||||
|
1: cargo_util::paths::read
|
||||||
|
2: cargo::core::compiler::fingerprint::_compare_old_fingerprint
|
||||||
|
3: cargo::core::compiler::fingerprint::prepare_target
|
||||||
|
4: cargo::core::compiler::compile
|
||||||
|
5: cargo::core::compiler::compile
|
||||||
|
6: cargo::core::compiler::compile
|
||||||
|
7: <cargo::core::compiler::build_runner::BuildRunner>::compile
|
||||||
|
8: cargo::ops::cargo_compile::compile_ws
|
||||||
|
9: cargo::ops::cargo_compile::compile_with_exec
|
||||||
|
10: cargo::ops::cargo_compile::compile
|
||||||
|
11: cargo::commands::check::exec
|
||||||
|
12: <cargo::cli::Exec>::exec
|
||||||
|
13: cargo::main
|
||||||
|
14: std::sys::backtrace::__rust_begin_short_backtrace::<fn(), ()>
|
||||||
|
15: std::rt::lang_start::<()>::{closure#0}
|
||||||
|
16: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/core/src/ops/function.rs:287:21
|
||||||
|
17: std::panicking::catch_unwind::do_call
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
|
||||||
|
18: std::panicking::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
|
||||||
|
19: std::panic::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
|
||||||
|
20: std::rt::lang_start_internal::{{closure}}
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:175:24
|
||||||
|
21: std::panicking::catch_unwind::do_call
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
|
||||||
|
22: std::panicking::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
|
||||||
|
23: std::panic::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
|
||||||
|
24: std::rt::lang_start_internal
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:171:5
|
||||||
|
25: main
|
||||||
|
26: <unknown>
|
||||||
|
27: __libc_start_main
|
||||||
|
28: <unknown>
|
||||||
|
1.046568941s INFO prepare_target{force=false package_id=x11rb-protocol v0.13.2 target="x11rb_protocol"}: cargo::core::compiler::fingerprint: fingerprint error for x11rb-protocol v0.13.2/Check { test: false }/TargetInner { ..: lib_target("x11rb_protocol", ["lib"], "/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/x11rb-protocol-0.13.2/src/lib.rs", Edition2021) }
|
||||||
|
1.046575593s INFO prepare_target{force=false package_id=x11rb-protocol v0.13.2 target="x11rb_protocol"}: cargo::core::compiler::fingerprint: err: failed to read `/home/zefad/Documents/Code/Rust/rklip/target/debug/.fingerprint/x11rb-protocol-22f581df66f49a57/lib-x11rb_protocol`
|
||||||
|
|
||||||
|
Caused by:
|
||||||
|
No such file or directory (os error 2)
|
||||||
|
|
||||||
|
Stack backtrace:
|
||||||
|
0: cargo_util::paths::read_bytes
|
||||||
|
1: cargo_util::paths::read
|
||||||
|
2: cargo::core::compiler::fingerprint::_compare_old_fingerprint
|
||||||
|
3: cargo::core::compiler::fingerprint::prepare_target
|
||||||
|
4: cargo::core::compiler::compile
|
||||||
|
5: cargo::core::compiler::compile
|
||||||
|
6: cargo::core::compiler::compile
|
||||||
|
7: cargo::core::compiler::compile
|
||||||
|
8: <cargo::core::compiler::build_runner::BuildRunner>::compile
|
||||||
|
9: cargo::ops::cargo_compile::compile_ws
|
||||||
|
10: cargo::ops::cargo_compile::compile_with_exec
|
||||||
|
11: cargo::ops::cargo_compile::compile
|
||||||
|
12: cargo::commands::check::exec
|
||||||
|
13: <cargo::cli::Exec>::exec
|
||||||
|
14: cargo::main
|
||||||
|
15: std::sys::backtrace::__rust_begin_short_backtrace::<fn(), ()>
|
||||||
|
16: std::rt::lang_start::<()>::{closure#0}
|
||||||
|
17: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/core/src/ops/function.rs:287:21
|
||||||
|
18: std::panicking::catch_unwind::do_call
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
|
||||||
|
19: std::panicking::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
|
||||||
|
20: std::panic::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
|
||||||
|
21: std::rt::lang_start_internal::{{closure}}
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:175:24
|
||||||
|
22: std::panicking::catch_unwind::do_call
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
|
||||||
|
23: std::panicking::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
|
||||||
|
24: std::panic::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
|
||||||
|
25: std::rt::lang_start_internal
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:171:5
|
||||||
|
26: main
|
||||||
|
27: <unknown>
|
||||||
|
28: __libc_start_main
|
||||||
|
29: <unknown>
|
||||||
|
1.046717135s INFO prepare_target{force=false package_id=rklip v0.1.0 (/home/zefad/Documents/Code/Rust/rklip) target="rklip"}: cargo::core::compiler::fingerprint: fingerprint error for rklip v0.1.0 (/home/zefad/Documents/Code/Rust/rklip)/Check { test: true }/TargetInner { name: "rklip", doc: true, ..: with_path("/home/zefad/Documents/Code/Rust/rklip/src/main.rs", Edition2024) }
|
||||||
|
1.046723009s INFO prepare_target{force=false package_id=rklip v0.1.0 (/home/zefad/Documents/Code/Rust/rklip) target="rklip"}: cargo::core::compiler::fingerprint: err: failed to read `/home/zefad/Documents/Code/Rust/rklip/target/debug/.fingerprint/rklip-ae964ff7a6bec145/test-bin-rklip`
|
||||||
|
|
||||||
|
Caused by:
|
||||||
|
No such file or directory (os error 2)
|
||||||
|
|
||||||
|
Stack backtrace:
|
||||||
|
0: cargo_util::paths::read_bytes
|
||||||
|
1: cargo_util::paths::read
|
||||||
|
2: cargo::core::compiler::fingerprint::_compare_old_fingerprint
|
||||||
|
3: cargo::core::compiler::fingerprint::prepare_target
|
||||||
|
4: cargo::core::compiler::compile
|
||||||
|
5: <cargo::core::compiler::build_runner::BuildRunner>::compile
|
||||||
|
6: cargo::ops::cargo_compile::compile_ws
|
||||||
|
7: cargo::ops::cargo_compile::compile_with_exec
|
||||||
|
8: cargo::ops::cargo_compile::compile
|
||||||
|
9: cargo::commands::check::exec
|
||||||
|
10: <cargo::cli::Exec>::exec
|
||||||
|
11: cargo::main
|
||||||
|
12: std::sys::backtrace::__rust_begin_short_backtrace::<fn(), ()>
|
||||||
|
13: std::rt::lang_start::<()>::{closure#0}
|
||||||
|
14: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/core/src/ops/function.rs:287:21
|
||||||
|
15: std::panicking::catch_unwind::do_call
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
|
||||||
|
16: std::panicking::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
|
||||||
|
17: std::panic::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
|
||||||
|
18: std::rt::lang_start_internal::{{closure}}
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:175:24
|
||||||
|
19: std::panicking::catch_unwind::do_call
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
|
||||||
|
20: std::panicking::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
|
||||||
|
21: std::panic::catch_unwind
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
|
||||||
|
22: std::rt::lang_start_internal
|
||||||
|
at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:171:5
|
||||||
|
23: main
|
||||||
|
24: <unknown>
|
||||||
|
25: __libc_start_main
|
||||||
|
26: <unknown>
|
||||||
|
Checking x11rb-protocol v0.13.2
|
||||||
126
src/target/rust-analyzer/flycheck0/stdout
Normal file
126
src/target/rust-analyzer/flycheck0/stdout
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/proc-macro2-1.0.106/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/proc-macro2-1.0.106/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/proc-macro2-94cad8ea6a6e7259/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106","linked_libs":[],"linked_paths":[],"cfgs":["wrap_proc_macro","proc_macro_span_location","proc_macro_span_file"],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/proc-macro2-189e8840540e2699/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quote-1.0.45/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quote-1.0.45/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/quote-7f25ee22a5499f38/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.24","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.24/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"unicode_ident","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.24/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libunicode_ident-61533c72d8f4e5f7.rlib","/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libunicode_ident-61533c72d8f4e5f7.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/proc-macro2-1.0.106/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"proc_macro2","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/proc-macro2-1.0.106/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libproc_macro2-00cf4115453f001d.rlib","/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libproc_macro2-00cf4115453f001d.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/quote-e44ca39061eb9357/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#autocfg@1.5.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/autocfg-1.5.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"autocfg","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/autocfg-1.5.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libautocfg-38d501c17e68b38c.rlib","/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libautocfg-38d501c17e68b38c.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cfg-if-1.0.4/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"cfg_if","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cfg-if-1.0.4/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libcfg_if-e720413b8edafa0a.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.21","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crossbeam-utils-0.8.21/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crossbeam-utils-0.8.21/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/crossbeam-utils-3facd263110404aa/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rayon-core@1.13.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-core-1.13.0/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-core-1.13.0/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/rayon-core-1bc1ef21b7aae4c0/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#simd-adler32@0.3.8","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/simd-adler32-0.3.8/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"simd_adler32","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/simd-adler32-0.3.8/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["const-generics","default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libsimd_adler32-4959f318fd01020d.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#libc@0.2.182","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libc-0.2.182/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libc-0.2.182/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/libc-8ca02912241efd47/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quote-1.0.45/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"quote","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quote-1.0.45/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libquote-d8a1cc7f7ad6cf38.rlib","/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libquote-d8a1cc7f7ad6cf38.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-traits-0.2.19/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-traits-0.2.19/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","i128","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/num-traits-d33e8f76298fe0c5/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.21","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/crossbeam-utils-5593ca2e94a79bb0/out"}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#rayon-core@1.13.0","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/rayon-core-c8581eef8cc27647/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#either@1.15.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/either-1.15.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"either","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/either-1.15.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std","use_std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libeither-d5303fd443e6a93b.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#memchr@2.8.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/memchr-2.8.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"memchr","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/memchr-2.8.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libmemchr-6abce47e4deee6c4.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#anyhow@1.0.101","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.101/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.101/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/anyhow-cb58e527b1a0d161/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#libc@0.2.182","linked_libs":[],"linked_paths":[],"cfgs":["freebsd12"],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/libc-6ff60029f4d68dcc/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/syn-2.0.117/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"syn","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/syn-2.0.117/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["clone-impls","default","derive","extra-traits","full","parsing","printing","proc-macro"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libsyn-9c5eefb1491f644f.rlib","/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libsyn-9c5eefb1491f644f.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19","linked_libs":[],"linked_paths":[],"cfgs":["has_total_cmp"],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/num-traits-a87aa9d62b9c616b/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.21","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crossbeam-utils-0.8.21/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crossbeam_utils","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crossbeam-utils-0.8.21/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libcrossbeam_utils-30ff13b172e89a74.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#anyhow@1.0.101","linked_libs":[],"linked_paths":[],"cfgs":["std_backtrace"],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/anyhow-11e19e6de96d8cd5/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#stable_deref_trait@1.2.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/stable_deref_trait-1.2.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"stable_deref_trait","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/stable_deref_trait-1.2.1/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libstable_deref_trait-c1b563a78da1ff57.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#arrayvec@0.7.6","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/arrayvec-0.7.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"arrayvec","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/arrayvec-0.7.6/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libarrayvec-6c21595d89b6025f.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror@2.0.18","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/thiserror-2.0.18/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/thiserror-2.0.18/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/thiserror-a345b3ae36f46eea/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zerocopy@0.8.40","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerocopy-0.8.40/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerocopy-0.8.40/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["derive","simd","zerocopy-derive"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/zerocopy-5bfeaf2b807d02aa/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-traits-0.2.19/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_traits","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-traits-0.2.19/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","i128","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libnum_traits-09c751addfdfe33b.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-epoch@0.9.18","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crossbeam-epoch-0.9.18/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crossbeam_epoch","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crossbeam-epoch-0.9.18/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libcrossbeam_epoch-898edee4616dca8c.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#equator-macro@0.4.2","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/equator-macro-0.4.2/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"equator_macro","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/equator-macro-0.4.2/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libequator_macro-ce34652d644ade57.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crc32fast@1.5.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crc32fast-1.5.0/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crc32fast-1.5.0/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/crc32fast-a1aeaaf666d10f76/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#adler2@2.0.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/adler2-2.0.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"adler2","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/adler2-2.0.1/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libadler2-8ddbfa9477eb984f.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zerocopy-derive@0.8.40","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerocopy-derive-0.8.40/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"zerocopy_derive","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerocopy-derive-0.8.40/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libzerocopy_derive-5894c5eea629596d.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#as-slice@0.2.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/as-slice-0.2.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"as_slice","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/as-slice-0.2.1/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libas_slice-1069b17130cc449f.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror-impl@2.0.18","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/thiserror-impl-2.0.18/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"thiserror_impl","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/thiserror-impl-2.0.18/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libthiserror_impl-ddbff05c8c6afe5d.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-deque@0.8.6","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crossbeam-deque-0.8.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crossbeam_deque","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crossbeam-deque-0.8.6/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libcrossbeam_deque-39548485313d4b56.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#equator@0.4.2","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/equator-0.4.2/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"equator","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/equator-0.4.2/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libequator-51650a9e80c59ae5.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-integer@0.1.46","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-integer-0.1.46/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_integer","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-integer-0.1.46/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["i128","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libnum_integer-2f709f34659e5cfd.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#miniz_oxide@0.8.9","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/miniz_oxide-0.8.9/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"miniz_oxide","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/miniz_oxide-0.8.9/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","simd","simd-adler32","with-alloc"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libminiz_oxide-8ad7235a9edc0a11.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#crc32fast@1.5.0","linked_libs":[],"linked_paths":[],"cfgs":["stable_arm_crc32_intrinsics"],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/crc32fast-b09c59eae4a5ad74/out"}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#zerocopy@0.8.40","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/zerocopy-b68dff16f8d09d31/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#anyhow@1.0.101","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.101/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"anyhow","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.101/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libanyhow-5db4dce135aba3fe.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror@2.0.18","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/thiserror-f120952bacb12ece/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rayon-core@1.13.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-core-1.13.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rayon_core","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-core-1.13.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/librayon_core-683451861a2493f2.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-bigint@0.4.6","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-0.4.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_bigint","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-0.4.6/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libnum_bigint-221718d152836be1.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#aligned-vec@0.6.4","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/aligned-vec-0.6.4/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"aligned_vec","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/aligned-vec-0.6.4/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libaligned_vec-8463edaf5f8c52aa.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#libc@0.2.182","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libc-0.2.182/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"libc","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libc-0.2.182/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/liblibc-82529cab63a4719e.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bitflags@2.11.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bitflags-2.11.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bitflags","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bitflags-2.11.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libbitflags-218d0fd2bf1b120c.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#paste@1.0.15","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/paste-1.0.15/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/paste-1.0.15/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/paste-c090709b5b0c5de5/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#av-scenechange@0.14.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/av-scenechange-0.14.1/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/av-scenechange-0.14.1/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/av-scenechange-b0718666adf1fefd/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#built@0.8.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/built-0.8.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"built","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/built-0.8.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libbuilt-3504150f55669f03.rlib","/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libbuilt-3504150f55669f03.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#v_frame@0.3.9","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/v_frame-0.3.9/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"v_frame","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/v_frame-0.3.9/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libv_frame-1156faa230269145.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-rational@0.4.2","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-rational-0.4.2/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_rational","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-rational-0.4.2/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","num-bigint","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libnum_rational-8dc5800ee90aed29.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rayon@1.11.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-1.11.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rayon","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-1.11.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/librayon-e9a86bef7e7f0816.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#log@0.4.29","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/log-0.4.29/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"log","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/log-0.4.29/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/liblog-f1ce6776ce589c15.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#av-scenechange@0.14.1","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[["PROFILE","debug"],["CARGO_CFG_TARGET_FEATURE","fxsr,sse,sse2"],["CARGO_ENCODED_RUSTFLAGS",""]],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/av-scenechange-d80936c8f13e0512/out"}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#paste@1.0.15","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/paste-7a04688c692878f0/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rav1e@0.8.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rav1e-0.8.1/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rav1e-0.8.1/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["threading"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/rav1e-83365e3fb08a807f/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zerocopy@0.8.40","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerocopy-0.8.40/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zerocopy","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerocopy-0.8.40/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["derive","simd","zerocopy-derive"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libzerocopy-deed186ddce2b9ba.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crc32fast@1.5.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crc32fast-1.5.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crc32fast","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crc32fast-1.5.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libcrc32fast-69ea6609f925bfa8.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror@2.0.18","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/thiserror-2.0.18/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"thiserror","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/thiserror-2.0.18/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libthiserror-d6760243bf830594.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#aligned@0.4.3","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/aligned-0.4.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"aligned","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/aligned-0.4.3/src/lib.rs","edition":"2024","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libaligned-57c432200ef7aa3e.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#arg_enum_proc_macro@0.3.4","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/arg_enum_proc_macro-0.3.4/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"arg_enum_proc_macro","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/arg_enum_proc_macro-0.3.4/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libarg_enum_proc_macro-20f69d5a87e1bd5b.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#profiling-procmacros@1.0.17","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/profiling-procmacros-1.0.17/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"profiling_procmacros","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/profiling-procmacros-1.0.17/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libprofiling_procmacros-15972ea06dd62341.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#core2@0.4.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/core2-0.4.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"core2","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/core2-0.4.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libcore2-58ba9b4b0cfd9718.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#nom@8.0.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/nom-8.0.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"nom","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/nom-8.0.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libnom-eb14b95ddda5263e.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#pastey@0.1.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/pastey-0.1.1/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"pastey","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/pastey-0.1.1/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libpastey-076ae5a4ca7f87b1.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#y4m@0.8.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/y4m-0.8.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"y4m","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/y4m-0.8.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/liby4m-894507e38c6e6f85.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustix@1.1.4","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rustix-1.1.4/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rustix-1.1.4/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","event","fs","net","std","system"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/rustix-e0b5ea39b95a2339/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#smallvec@1.15.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"smallvec","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.1/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libsmallvec-4036188a1e309e0f.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#quick-error@2.0.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quick-error-2.0.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"quick_error","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quick-error-2.0.1/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libquick_error-16937569b7bf55f9.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#profiling@1.0.17","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/profiling-1.0.17/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"profiling","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/profiling-1.0.17/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","procmacros","profiling-procmacros"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libprofiling-ba6aad9ed6763dad.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#flate2@1.1.9","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/flate2-1.1.9/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"flate2","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/flate2-1.1.9/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["any_impl","default","miniz_oxide","rust_backend"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libflate2-3db1f10dc39293c0.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bitstream-io@4.9.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bitstream-io-4.9.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bitstream_io","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bitstream-io-4.9.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libbitstream_io-e19054d9edfa0c3f.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#av1-grain@0.2.5","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/av1-grain-0.2.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"av1_grain","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/av1-grain-0.2.5/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["create","default","diff","estimate","nom","num-rational","parse","v_frame"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libav1_grain-fba80771774657b6.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustix@1.1.4","linked_libs":[],"linked_paths":[],"cfgs":["static_assertions","lower_upper_exp_for_non_zero","rustc_diagnostics","linux_raw_dep","linux_raw","linux_like","linux_kernel"],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/rustix-204c43a58d13de92/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#av-scenechange@0.14.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/av-scenechange-0.14.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"av_scenechange","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/av-scenechange-0.14.1/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libav_scenechange-f3333e00b652f67d.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#half@2.7.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/half-2.7.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"half","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/half-2.7.1/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libhalf-fdae697aaf91859e.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#maybe-rayon@0.1.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/maybe-rayon-0.1.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"maybe_rayon","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/maybe-rayon-0.1.1/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["rayon","threads"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libmaybe_rayon-ca32aa8e7701a603.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#paste@1.0.15","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/paste-1.0.15/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"paste","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/paste-1.0.15/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libpaste-577a69ce6fdefcf7.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#rav1e@0.8.1","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[["PROFILE","debug"],["CARGO_CFG_TARGET_FEATURE","fxsr,sse,sse2"],["CARGO_ENCODED_RUSTFLAGS",""]],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/rav1e-dcbc355ff43b645c/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-derive@0.4.2","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-derive-0.4.2/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"num_derive","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-derive-0.4.2/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libnum_derive-7c25d2e70035aa41.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#fax_derive@0.2.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/fax_derive-0.2.0/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"fax_derive","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/fax_derive-0.2.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libfax_derive-4e5bdade57e6eaf6.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#simd_helpers@0.1.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/simd_helpers-0.1.0/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"simd_helpers","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/simd_helpers-0.1.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libsimd_helpers-8850d3c4bf61a7b0.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#itertools@0.14.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/itertools-0.14.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"itertools","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/itertools-0.14.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","use_alloc","use_std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libitertools-f8fabf0fac410047.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#linux-raw-sys@0.12.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/linux-raw-sys-0.12.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"linux_raw_sys","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/linux-raw-sys-0.12.1/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["auxvec","elf","errno","general","if_ether","ioctl","net","netlink","no_std","system","xdp"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/liblinux_raw_sys-de78d14e078030e0.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#weezl@0.1.12","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/weezl-0.1.12/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"weezl","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/weezl-0.1.12/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libweezl-a4353494f8a0a7cf.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#parking_lot_core@0.9.12","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/parking_lot_core-0.9.12/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/parking_lot_core-0.9.12/build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/build/parking_lot_core-a1f54925c42d264a/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#new_debug_unreachable@1.0.6","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/new_debug_unreachable-1.0.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"debug_unreachable","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/new_debug_unreachable-1.0.6/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libdebug_unreachable-51d43fcbdae7043b.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#noop_proc_macro@0.3.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/noop_proc_macro-0.3.0/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"noop_proc_macro","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/noop_proc_macro-0.3.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libnoop_proc_macro-ce03a6fe81b5df14.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zune-core@0.4.12","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zune-core-0.4.12/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zune_core","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zune-core-0.4.12/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libzune_core-757da2fe39e7dcf1.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#imgref@1.12.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/imgref-1.12.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"imgref","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/imgref-1.12.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","deprecated"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libimgref-6276481e74629e43.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustix@1.1.4","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rustix-1.1.4/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rustix","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rustix-1.1.4/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","event","fs","net","std","system"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/librustix-49c45b9740736b85.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zune-jpeg@0.4.21","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zune-jpeg-0.4.21/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zune_jpeg","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zune-jpeg-0.4.21/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","neon","std","x86"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libzune_jpeg-3c4400efc9a96049.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rav1e@0.8.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rav1e-0.8.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rav1e","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rav1e-0.8.1/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["threading"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/librav1e-1a52c783ad0f68b9.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#parking_lot_core@0.9.12","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/zefad/Documents/Code/Rust/rklip/target/debug/build/parking_lot_core-ffcaa5490a92af7a/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#fax@0.2.6","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/fax-0.2.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"fax","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/fax-0.2.6/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libfax-4c6e7b31ea0d1eb2.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#avif-serialize@0.8.8","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/avif-serialize-0.8.8/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"avif_serialize","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/avif-serialize-0.8.8/src/lib.rs","edition":"2024","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libavif_serialize-ca2373192a027c75.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zune-inflate@0.2.54","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zune-inflate-0.2.54/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zune_inflate","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zune-inflate-0.2.54/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["simd-adler32","zlib"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libzune_inflate-94a975eb7785c702.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#loop9@0.1.5","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/loop9-0.1.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"loop9","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/loop9-0.1.5/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libloop9-cf58aa244acff4fb.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#fdeflate@0.3.7","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/fdeflate-0.3.7/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"fdeflate","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/fdeflate-0.3.7/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libfdeflate-4724e495799331e7.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#color_quant@1.1.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/color_quant-1.1.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"color_quant","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/color_quant-1.1.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libcolor_quant-a7170cf0bea17c8e.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#scopeguard@1.2.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/scopeguard-1.2.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"scopeguard","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/scopeguard-1.2.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libscopeguard-881bf68c2f011ad5.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bytemuck@1.25.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytemuck-1.25.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bytemuck","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytemuck-1.25.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["extern_crate_alloc"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libbytemuck-749e2a0e58f951f2.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#lebe@0.5.3","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/lebe-0.5.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"lebe","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/lebe-0.5.3/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/liblebe-09f462e0dae69152.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#byteorder-lite@0.1.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/byteorder-lite-0.1.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"byteorder_lite","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/byteorder-lite-0.1.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libbyteorder_lite-b23754f5d3aa0269.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bit_field@0.10.3","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bit_field-0.10.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bit_field","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bit_field-0.10.3/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libbit_field-3f37887804c70baf.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rgb@0.8.53","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rgb-0.8.53/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rgb","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rgb-0.8.53/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/librgb-82283d2f5e74b225.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zune-core@0.5.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zune-core-0.5.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zune_core","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zune-core-0.5.1/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libzune_core-21c04c6d223e5db8.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#pxfm@0.1.28","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/pxfm-0.1.28/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"pxfm","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/pxfm-0.1.28/src/lib.rs","edition":"2024","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libpxfm-0bc2e9bbc61b1421.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#lock_api@0.4.14","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/lock_api-0.4.14/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"lock_api","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/lock_api-0.4.14/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["atomic_usize","default"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/liblock_api-6f7c20f2ce02eb24.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#image-webp@0.2.4","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/image-webp-0.2.4/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"image_webp","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/image-webp-0.2.4/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libimage_webp-e6266960e6d130f7.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#exr@1.74.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/exr-1.74.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"exr","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/exr-1.74.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["rayon"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libexr-90bc44ffe544e72c.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#gif@0.14.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/gif-0.14.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"gif","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/gif-0.14.1/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["color_quant","default","raii_no_panic","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libgif-3882322f61f4d93a.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#png@0.18.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/png-0.18.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"png","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/png-0.18.1/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libpng-cdb7288755c57a42.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#ravif@0.12.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ravif-0.12.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"ravif","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ravif-0.12.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["threading"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libravif-c0c9f18240d9b9cc.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zune-jpeg@0.5.12","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zune-jpeg-0.5.12/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zune_jpeg","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zune-jpeg-0.5.12/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","neon","std","x86"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libzune_jpeg-75dd85a6d3e06012.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#moxcms@0.7.11","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/moxcms-0.7.11/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"moxcms","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/moxcms-0.7.11/src/lib.rs","edition":"2024","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["avx","default","neon","sse"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libmoxcms-f06522a8790573ab.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#qoi@0.4.1","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/qoi-0.4.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"qoi","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/qoi-0.4.1/src/lib.rs","edition":"2021","doc":true,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libqoi-74be0481997fbc87.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#parking_lot_core@0.9.12","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/parking_lot_core-0.9.12/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"parking_lot_core","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/parking_lot_core-0.9.12/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libparking_lot_core-3bb925a6fab39d8d.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#tiff@0.10.3","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tiff-0.10.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"tiff","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tiff-0.10.3/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","deflate","fax","jpeg","lzw"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libtiff-27787da440b3ba24.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#gethostname@1.1.0","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/gethostname-1.1.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"gethostname","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/gethostname-1.1.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libgethostname-c98cca82181ff837.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#image@0.25.9","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/image-0.25.9/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"image","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/image-0.25.9/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["avif","bmp","dds","default","default-formats","exr","ff","gif","hdr","ico","jpeg","png","pnm","qoi","rayon","tga","tiff","webp"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libimage-7407a10e28322477.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#parking_lot@0.12.5","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/parking_lot-0.12.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"parking_lot","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/parking_lot-0.12.5/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libparking_lot-00df4fec9a246298.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#percent-encoding@2.3.2","manifest_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/percent-encoding-2.3.2/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"percent_encoding","src_path":"/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/percent-encoding-2.3.2/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/zefad/Documents/Code/Rust/rklip/target/debug/deps/libpercent_encoding-2effb2ec806b20a0.rmeta"],"executable":null,"fresh":true}
|
||||||
167
src/ui.rs
Normal file
167
src/ui.rs
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
use crate::app::{App, Mode};
|
||||||
|
use ratatui::{
|
||||||
|
Frame,
|
||||||
|
layout::{Alignment, Constraint, Direction, Layout},
|
||||||
|
style::{Color, Modifier, Style},
|
||||||
|
text::{Line, Span},
|
||||||
|
widgets::{Block, BorderType, Borders, List, ListItem, Padding, Paragraph},
|
||||||
|
};
|
||||||
|
use ratatui_image::StatefulImage;
|
||||||
|
|
||||||
|
pub fn render(f: &mut Frame, app: &mut App) {
|
||||||
|
let main_chunks = Layout::default()
|
||||||
|
.direction(Direction::Vertical)
|
||||||
|
.constraints([Constraint::Min(0), Constraint::Length(3)])
|
||||||
|
.split(f.area());
|
||||||
|
|
||||||
|
let content_chunks = Layout::default()
|
||||||
|
.direction(Direction::Horizontal)
|
||||||
|
.constraints([Constraint::Length(45), Constraint::Min(0)])
|
||||||
|
.split(main_chunks[0]);
|
||||||
|
|
||||||
|
let items: Vec<ListItem> = app
|
||||||
|
.filtered_items
|
||||||
|
.iter()
|
||||||
|
.map(|i| {
|
||||||
|
if i.ends_with(".jpg") || i.ends_with(".png") {
|
||||||
|
ListItem::new(Line::from(Span::styled(
|
||||||
|
format!("🖼️ {}", i),
|
||||||
|
Style::default()
|
||||||
|
.fg(Color::Magenta)
|
||||||
|
.add_modifier(Modifier::BOLD),
|
||||||
|
)))
|
||||||
|
} else {
|
||||||
|
ListItem::new(Line::from(format!(" {}", i)))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let list = List::new(items)
|
||||||
|
.block(
|
||||||
|
Block::default()
|
||||||
|
.borders(Borders::ALL)
|
||||||
|
.border_type(BorderType::Rounded)
|
||||||
|
.border_style(Style::default().fg(Color::DarkGray))
|
||||||
|
.title(Span::styled(
|
||||||
|
" History ",
|
||||||
|
Style::default()
|
||||||
|
.fg(Color::White)
|
||||||
|
.add_modifier(Modifier::BOLD),
|
||||||
|
))
|
||||||
|
.title_alignment(Alignment::Center),
|
||||||
|
)
|
||||||
|
.highlight_style(
|
||||||
|
Style::default()
|
||||||
|
.bg(Color::Rgb(40, 44, 52))
|
||||||
|
.fg(Color::White)
|
||||||
|
.add_modifier(Modifier::BOLD),
|
||||||
|
)
|
||||||
|
.highlight_symbol(">> ");
|
||||||
|
|
||||||
|
f.render_stateful_widget(list, content_chunks[0], &mut app.list_state);
|
||||||
|
|
||||||
|
let right_panel_block = Block::default()
|
||||||
|
.borders(Borders::ALL)
|
||||||
|
.border_type(BorderType::Rounded)
|
||||||
|
.border_style(Style::default().fg(Color::DarkGray))
|
||||||
|
.title(Span::styled(
|
||||||
|
" Previsualisation ",
|
||||||
|
Style::default()
|
||||||
|
.fg(Color::White)
|
||||||
|
.add_modifier(Modifier::BOLD),
|
||||||
|
))
|
||||||
|
.title_alignment(Alignment::Center)
|
||||||
|
.padding(Padding::uniform(1));
|
||||||
|
|
||||||
|
let inner_right_area = right_panel_block.inner(content_chunks[1]);
|
||||||
|
f.render_widget(right_panel_block, content_chunks[1]);
|
||||||
|
|
||||||
|
if let Some(state) = &mut app.current_image {
|
||||||
|
let image_widget = StatefulImage::default();
|
||||||
|
f.render_stateful_widget(image_widget, inner_right_area, state);
|
||||||
|
} else {
|
||||||
|
let preview_text = app.get_selected_item().cloned().unwrap_or_default();
|
||||||
|
let preview_paragraph =
|
||||||
|
Paragraph::new(preview_text).wrap(ratatui::widgets::Wrap { trim: true });
|
||||||
|
f.render_widget(preview_paragraph, inner_right_area);
|
||||||
|
}
|
||||||
|
|
||||||
|
let current_color = match app.mode {
|
||||||
|
Mode::Normal => Color::Green,
|
||||||
|
Mode::ConfirmDelete => Color::Red,
|
||||||
|
Mode::Command => Color::Yellow,
|
||||||
|
Mode::Search => Color::Cyan,
|
||||||
|
};
|
||||||
|
|
||||||
|
let bottom_block = Block::default()
|
||||||
|
.borders(Borders::ALL)
|
||||||
|
.border_type(BorderType::Rounded)
|
||||||
|
.border_style(Style::default().fg(current_color));
|
||||||
|
|
||||||
|
let inner_bottom_area = bottom_block.inner(main_chunks[1]);
|
||||||
|
f.render_widget(bottom_block, main_chunks[1]);
|
||||||
|
|
||||||
|
let bottom_chunks = Layout::default()
|
||||||
|
.direction(Direction::Horizontal)
|
||||||
|
.constraints([Constraint::Min(0), Constraint::Length(15)])
|
||||||
|
.split(inner_bottom_area);
|
||||||
|
|
||||||
|
let mode_text = match app.mode {
|
||||||
|
Mode::Normal => Line::from(vec![Span::styled(
|
||||||
|
" NORMAL ",
|
||||||
|
Style::default()
|
||||||
|
.bg(Color::Green)
|
||||||
|
.fg(Color::Black)
|
||||||
|
.add_modifier(Modifier::BOLD),
|
||||||
|
)]),
|
||||||
|
Mode::ConfirmDelete => Line::from(vec![Span::styled(
|
||||||
|
" Delete ? (y/n) ",
|
||||||
|
Style::default()
|
||||||
|
.bg(Color::Red)
|
||||||
|
.fg(Color::White)
|
||||||
|
.add_modifier(Modifier::BOLD),
|
||||||
|
)]),
|
||||||
|
Mode::Command => Line::from(vec![
|
||||||
|
Span::styled(
|
||||||
|
" COMMAND ",
|
||||||
|
Style::default()
|
||||||
|
.bg(Color::Yellow)
|
||||||
|
.fg(Color::Black)
|
||||||
|
.add_modifier(Modifier::BOLD),
|
||||||
|
),
|
||||||
|
Span::raw(format!(" :{}", app.input_buffer)),
|
||||||
|
]),
|
||||||
|
Mode::Search => Line::from(vec![
|
||||||
|
Span::styled(
|
||||||
|
" SEARCH ",
|
||||||
|
Style::default()
|
||||||
|
.bg(Color::Cyan)
|
||||||
|
.fg(Color::Black)
|
||||||
|
.add_modifier(Modifier::BOLD),
|
||||||
|
),
|
||||||
|
Span::raw(format!(" /{}", app.input_buffer)),
|
||||||
|
]),
|
||||||
|
};
|
||||||
|
|
||||||
|
f.render_widget(
|
||||||
|
Paragraph::new(mode_text).block(Block::default().padding(Padding::horizontal(1))),
|
||||||
|
bottom_chunks[0],
|
||||||
|
);
|
||||||
|
|
||||||
|
let total = app.filtered_items.len();
|
||||||
|
let current = if total == 0 {
|
||||||
|
0
|
||||||
|
} else {
|
||||||
|
app.list_state.selected().unwrap_or(0) + 1
|
||||||
|
};
|
||||||
|
|
||||||
|
let stats_text = Line::from(vec![Span::styled(
|
||||||
|
format!("{}/{} ", current, total),
|
||||||
|
Style::default()
|
||||||
|
.fg(Color::DarkGray)
|
||||||
|
.add_modifier(Modifier::BOLD),
|
||||||
|
)])
|
||||||
|
.alignment(Alignment::Right);
|
||||||
|
|
||||||
|
f.render_widget(Paragraph::new(stats_text), bottom_chunks[1]);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user