Compare commits
29 Commits
d125ba38b2
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 20f33f5694 | |||
| 989e0aef91 | |||
| 54ddc9851c | |||
| dcc863c451 | |||
| 9e56322705 | |||
| 5f691c2e2f | |||
| 62fb8cd330 | |||
| 86cff34cd5 | |||
| fb8c852a4d | |||
| e038981d7f | |||
| 05ced3b7ea | |||
| d46c35c49f | |||
| eb34efb652 | |||
| 27ede7fc64 | |||
| 55e33bf497 | |||
| 4d0a381f12 | |||
| ff3f8f94ef | |||
| ab2c25f8dc | |||
| f85007ebcd | |||
| 9052dc54f5 | |||
| bcee192e50 | |||
| 62ba923d5f | |||
| fd6c9ed42e | |||
| b1c07186c8 | |||
| 77d6fcaf84 | |||
| decc7eb548 | |||
| 62c2b8c158 | |||
| 0b9daf395d | |||
| 51f6b5bfab |
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,2 +1,6 @@
|
||||
/target
|
||||
/rklipd/src/target
|
||||
/rklipd/target
|
||||
/rklipd/*.json
|
||||
/rklipd/clipboard
|
||||
/rklipdtmp
|
||||
|
||||
2941
Cargo.lock
generated
2941
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"
|
||||
edition = "2024"
|
||||
|
||||
[target.'cfg(target_os = "linux")'.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"}
|
||||
serde = { version = "1.0.228", features = ["derive"] }
|
||||
serde_json = "1.0.149"
|
||||
uuid = "1.22.0"
|
||||
|
||||
1996
rklipd/Cargo.lock
generated
1996
rklipd/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -4,3 +4,16 @@ version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
arboard = "3.6.1"
|
||||
image = "0.25.9"
|
||||
clipboard-master = "4.0.0"
|
||||
uuid = {version = "1.22.0", features = ["v4", "serde"]}
|
||||
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]
|
||||
x11 = []
|
||||
wayland = []
|
||||
|
||||
53
rklipd/src/clipboard.rs
Normal file
53
rklipd/src/clipboard.rs
Normal file
@ -0,0 +1,53 @@
|
||||
use arboard::Clipboard;
|
||||
use std::error::Error;
|
||||
use std::time::SystemTime;
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::models::{ClipboardData, ClipboardEntry, Image};
|
||||
|
||||
// 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 {
|
||||
pub fn new(clipboard: &mut Clipboard) -> Result<ClipboardEntry, Box<dyn Error>> {
|
||||
let clipboard_data_opt: Option<ClipboardData> = match clipboard.get_text() {
|
||||
Ok(text) => Some(ClipboardData::Text(text)),
|
||||
Err(_) => match clipboard.get_image() {
|
||||
Ok(image) => {
|
||||
let id = Uuid::new_v4();
|
||||
Some(ClipboardData::Image(Image {
|
||||
raw_pixels: Some(image.bytes.into_owned()),
|
||||
width: image.width as u32,
|
||||
height: image.height as u32,
|
||||
id,
|
||||
}))
|
||||
}
|
||||
Err(_) => None,
|
||||
},
|
||||
};
|
||||
|
||||
let Some(clipboard_data) = clipboard_data_opt else {
|
||||
return Err("Clipboard empty".into());
|
||||
};
|
||||
|
||||
Ok(ClipboardEntry {
|
||||
content: clipboard_data,
|
||||
timestamp: SystemTime::now(),
|
||||
})
|
||||
}
|
||||
}
|
||||
121
rklipd/src/database.rs
Normal file
121
rklipd/src/database.rs
Normal file
@ -0,0 +1,121 @@
|
||||
use crate::models::{ClipboardData, ClipboardEntry, Image};
|
||||
use image::codecs::jpeg::JpegEncoder;
|
||||
use image::codecs::png::PngEncoder;
|
||||
use image::{ExtendedColorType, ImageEncoder};
|
||||
use rusqlite::Connection;
|
||||
use std::error::Error;
|
||||
use std::fs;
|
||||
use std::path::Path;
|
||||
use std::time::{Duration, UNIX_EPOCH};
|
||||
use uuid::Uuid;
|
||||
|
||||
pub struct Database {
|
||||
conn: Connection,
|
||||
dir_path: String,
|
||||
}
|
||||
|
||||
impl Database {
|
||||
pub fn init(dir_path: &str) -> Result<Self, Box<dyn Error>> {
|
||||
let base_path = Path::new(dir_path);
|
||||
let images_path = base_path.join("images");
|
||||
std::fs::create_dir_all(&images_path)?;
|
||||
|
||||
let db_path = base_path.join("clipboard.db");
|
||||
|
||||
let conn = Connection::open(&db_path)?;
|
||||
|
||||
conn.execute(
|
||||
"CREATE TABLE IF NOT EXISTS history (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
type TEXT NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
timestamp INTEGER NOT NULL
|
||||
)",
|
||||
[],
|
||||
)?;
|
||||
|
||||
Ok(Self {
|
||||
conn,
|
||||
dir_path: dir_path.to_string(),
|
||||
})
|
||||
}
|
||||
|
||||
pub fn append(&self, entry: ClipboardEntry) -> Result<(), Box<dyn Error>> {
|
||||
let timestamp_millis = entry.timestamp.duration_since(UNIX_EPOCH)?.as_millis() as i64;
|
||||
|
||||
let (entry_type, content) = match &entry.content {
|
||||
ClipboardData::Text(text) => ("text", text.clone()),
|
||||
ClipboardData::Image(img) => {
|
||||
if let Some(raw_pixels) = &img.raw_pixels {
|
||||
let img_path = img.file_path(&self.dir_path);
|
||||
|
||||
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())
|
||||
}
|
||||
};
|
||||
|
||||
self.conn.execute(
|
||||
"INSERT INTO history (type, content, timestamp) VALUES (?1, ?2, ?3)",
|
||||
(entry_type, content, timestamp_millis),
|
||||
)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn read_history(&self) -> Result<Vec<ClipboardEntry>, Box<dyn Error>> {
|
||||
let mut stmt = self
|
||||
.conn
|
||||
.prepare("SELECT type, content, timestamp FROM history ORDER BY timestamp ASC")?;
|
||||
|
||||
let rows = stmt.query_map([], |row| {
|
||||
let ty: String = row.get(0)?;
|
||||
let content: String = row.get(1)?;
|
||||
let timestamp: i64 = row.get(2)?;
|
||||
Ok((ty, content, timestamp))
|
||||
})?;
|
||||
|
||||
let mut entries = Vec::new();
|
||||
|
||||
for row in rows {
|
||||
let (ty, content, timestamp) = row?;
|
||||
|
||||
let timestamp = UNIX_EPOCH + Duration::from_millis(timestamp as u64);
|
||||
let data = if ty == "text" {
|
||||
ClipboardData::Text(content)
|
||||
} else {
|
||||
let id = Uuid::parse_str(&content)?;
|
||||
ClipboardData::Image(Image {
|
||||
id,
|
||||
raw_pixels: None,
|
||||
width: 0,
|
||||
height: 0,
|
||||
})
|
||||
};
|
||||
|
||||
entries.push(ClipboardEntry {
|
||||
content: data,
|
||||
timestamp,
|
||||
});
|
||||
}
|
||||
|
||||
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,30 +0,0 @@
|
||||
use std::time::SystemTime;
|
||||
|
||||
pub struct ClipboardEntry {
|
||||
pub content: ClipboardData,
|
||||
pub timestamp: SystemTime,
|
||||
}
|
||||
|
||||
pub enum ClipboardData {
|
||||
Text(String),
|
||||
Image(Vec<u8>), // png storage
|
||||
}
|
||||
|
||||
impl ClipboardData {
|
||||
fn is_text(&self) -> bool {
|
||||
match self {
|
||||
ClipboardData::Text(_) => true,
|
||||
ClipboardData::Image(_) => false,
|
||||
}
|
||||
}
|
||||
|
||||
fn is_image(&self) -> bool {
|
||||
!self.is_text()
|
||||
}
|
||||
}
|
||||
|
||||
impl ClipboardEntry {
|
||||
fn new() -> ClipboardData {
|
||||
unimplemented!()
|
||||
}
|
||||
}
|
||||
@ -1,3 +1,32 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
use crate::database::Database;
|
||||
use arboard::Clipboard;
|
||||
use directories::ProjectDirs;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
mod clipboard;
|
||||
mod database;
|
||||
mod ipc;
|
||||
mod models;
|
||||
mod monitor;
|
||||
mod ws;
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let clipboard = Clipboard::new()?;
|
||||
|
||||
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 = Arc::new(Mutex::new(Database::init(&dir_path_str)?));
|
||||
|
||||
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)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
36
rklipd/src/models.rs
Normal file
36
rklipd/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))
|
||||
}
|
||||
}
|
||||
25
rklipd/src/monitor.rs
Normal file
25
rklipd/src/monitor.rs
Normal file
@ -0,0 +1,25 @@
|
||||
use crate::database::Database;
|
||||
use arboard::Clipboard;
|
||||
use std::error::Error;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
#[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(())
|
||||
}
|
||||
|
||||
#[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())
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
0.007007011s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: stale: changed "/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs"
|
||||
0.007017906s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: (vs) "/home/zefad/Documents/Code/Rust/rklip/rklipd/target/debug/.fingerprint/rklipd-f4e8ac4b4add01be/dep-lib-rklipd"
|
||||
0.007020261s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: FileTime { seconds: 1772749468, nanos: 407758665 } < FileTime { seconds: 1772749469, nanos: 307772201 }
|
||||
0.007048268s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: fingerprint dirty for rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("rklipd", ["lib"], "/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs", Edition2024) }
|
||||
0.007057460s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleItem(ChangedFile { reference: "/home/zefad/Documents/Code/Rust/rklip/rklipd/target/debug/.fingerprint/rklipd-f4e8ac4b4add01be/dep-lib-rklipd", reference_mtime: FileTime { seconds: 1772749468, nanos: 407758665 }, stale: "/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs", stale_mtime: FileTime { seconds: 1772749469, nanos: 307772201 } }))
|
||||
0.007185539s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: stale: changed "/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs"
|
||||
0.007188300s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: (vs) "/home/zefad/Documents/Code/Rust/rklip/rklipd/target/debug/.fingerprint/rklipd-76b1f7e91bbf555b/dep-test-lib-rklipd"
|
||||
0.007190069s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: FileTime { seconds: 1772749468, nanos: 407758665 } < FileTime { seconds: 1772749469, nanos: 307772201 }
|
||||
0.007201335s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: fingerprint dirty for rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("rklipd", ["lib"], "/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs", Edition2024) }
|
||||
0.007206115s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleItem(ChangedFile { reference: "/home/zefad/Documents/Code/Rust/rklip/rklipd/target/debug/.fingerprint/rklipd-76b1f7e91bbf555b/dep-test-lib-rklipd", reference_mtime: FileTime { seconds: 1772749468, nanos: 407758665 }, stale: "/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs", stale_mtime: FileTime { seconds: 1772749469, nanos: 307772201 } }))
|
||||
0.007280086s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: fingerprint dirty for rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd)/Check { test: false }/TargetInner { name: "rklipd", doc: true, ..: with_path("/home/zefad/Documents/Code/Rust/rklip/rklipd/src/main.rs", Edition2024) }
|
||||
0.007284923s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "rklipd" })
|
||||
0.007357789s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: fingerprint dirty for rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd)/Check { test: true }/TargetInner { name: "rklipd", doc: true, ..: with_path("/home/zefad/Documents/Code/Rust/rklip/rklipd/src/main.rs", Edition2024) }
|
||||
0.007362148s INFO prepare_target{force=false package_id=rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd) target="rklipd"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "rklipd" })
|
||||
Checking rklipd v0.1.0 (/home/zefad/Documents/Code/Rust/rklip/rklipd)
|
||||
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.05s
|
||||
@ -1,11 +0,0 @@
|
||||
{"reason":"compiler-message","package_id":"path+file:///home/zefad/Documents/Code/Rust/rklip/rklipd#0.1.0","manifest_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rklipd","src_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs","edition":"2024","doc":true,"doctest":true,"test":true},"message":{"$message_type":"diagnostic","message":"methods `is_text` and `is_image` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/lib.rs","byte_start":203,"byte_end":221,"line_start":13,"line_end":13,"column_start":1,"column_end":19,"is_primary":false,"text":[{"text":"impl ClipboardData {","highlight_start":1,"highlight_end":19}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/lib.rs","byte_start":231,"byte_end":238,"line_start":14,"line_end":14,"column_start":8,"column_end":15,"is_primary":true,"text":[{"text":" fn is_text(&self) -> bool {","highlight_start":8,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/lib.rs","byte_start":391,"byte_end":399,"line_start":21,"line_end":21,"column_start":8,"column_end":16,"is_primary":true,"text":[{"text":" fn is_image(&self) -> bool {","highlight_start":8,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: methods `is_text` and `is_image` are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/lib.rs:14:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl ClipboardData {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m------------------\u001b[0m \u001b[1m\u001b[94mmethods in this implementation\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn is_text(&self) -> bool {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m21\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn is_image(&self) -> bool {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\n\n"}}
|
||||
{"reason":"compiler-message","package_id":"path+file:///home/zefad/Documents/Code/Rust/rklip/rklipd#0.1.0","manifest_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rklipd","src_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs","edition":"2024","doc":true,"doctest":true,"test":true},"message":{"$message_type":"diagnostic","message":"associated function `new` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/lib.rs","byte_start":450,"byte_end":469,"line_start":26,"line_end":26,"column_start":1,"column_end":20,"is_primary":false,"text":[{"text":"impl ClipboardEntry {","highlight_start":1,"highlight_end":20}],"label":"associated function in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/lib.rs","byte_start":479,"byte_end":482,"line_start":27,"line_end":27,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":" fn new() -> ClipboardData {","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: associated function `new` is never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/lib.rs:27:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m26\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl ClipboardEntry {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-------------------\u001b[0m \u001b[1m\u001b[94massociated function in this implementation\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn new() -> ClipboardData {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\n"}}
|
||||
{"reason":"compiler-message","package_id":"path+file:///home/zefad/Documents/Code/Rust/rklip/rklipd#0.1.0","manifest_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rklipd","src_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs","edition":"2024","doc":true,"doctest":true,"test":true},"message":{"$message_type":"diagnostic","message":"methods `is_text` and `is_image` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/lib.rs","byte_start":203,"byte_end":221,"line_start":13,"line_end":13,"column_start":1,"column_end":19,"is_primary":false,"text":[{"text":"impl ClipboardData {","highlight_start":1,"highlight_end":19}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/lib.rs","byte_start":231,"byte_end":238,"line_start":14,"line_end":14,"column_start":8,"column_end":15,"is_primary":true,"text":[{"text":" fn is_text(&self) -> bool {","highlight_start":8,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/lib.rs","byte_start":391,"byte_end":399,"line_start":21,"line_end":21,"column_start":8,"column_end":16,"is_primary":true,"text":[{"text":" fn is_image(&self) -> bool {","highlight_start":8,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: methods `is_text` and `is_image` are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/lib.rs:14:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl ClipboardData {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m------------------\u001b[0m \u001b[1m\u001b[94mmethods in this implementation\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn is_text(&self) -> bool {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m21\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn is_image(&self) -> bool {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\n\n"}}
|
||||
{"reason":"compiler-message","package_id":"path+file:///home/zefad/Documents/Code/Rust/rklip/rklipd#0.1.0","manifest_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rklipd","src_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs","edition":"2024","doc":true,"doctest":true,"test":true},"message":{"$message_type":"diagnostic","message":"methods called `new` usually return `Self`","code":{"code":"clippy::new_ret_no_self","explanation":null},"level":"warning","spans":[{"file_name":"src/lib.rs","byte_start":476,"byte_end":534,"line_start":27,"line_end":29,"column_start":5,"column_end":6,"is_primary":true,"text":[{"text":" fn new() -> ClipboardData {","highlight_start":5,"highlight_end":32},{"text":" unimplemented!()","highlight_start":1,"highlight_end":25},{"text":" }","highlight_start":1,"highlight_end":6}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#new_ret_no_self","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(clippy::new_ret_no_self)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: methods called `new` usually return `Self`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/lib.rs:27:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m/\u001b[0m fn new() -> ClipboardData {\n\u001b[1m\u001b[94m28\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m unimplemented!()\n\u001b[1m\u001b[94m29\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m }\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|_____^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#new_ret_no_self\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(clippy::new_ret_no_self)]` on by default\n\n"}}
|
||||
{"reason":"compiler-message","package_id":"path+file:///home/zefad/Documents/Code/Rust/rklip/rklipd#0.1.0","manifest_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rklipd","src_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs","edition":"2024","doc":true,"doctest":true,"test":true},"message":{"$message_type":"diagnostic","message":"associated function `new` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/lib.rs","byte_start":450,"byte_end":469,"line_start":26,"line_end":26,"column_start":1,"column_end":20,"is_primary":false,"text":[{"text":"impl ClipboardEntry {","highlight_start":1,"highlight_end":20}],"label":"associated function in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/lib.rs","byte_start":479,"byte_end":482,"line_start":27,"line_end":27,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":" fn new() -> ClipboardData {","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: associated function `new` is never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/lib.rs:27:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m26\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl ClipboardEntry {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-------------------\u001b[0m \u001b[1m\u001b[94massociated function in this implementation\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn new() -> ClipboardData {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\n"}}
|
||||
{"reason":"compiler-message","package_id":"path+file:///home/zefad/Documents/Code/Rust/rklip/rklipd#0.1.0","manifest_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rklipd","src_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs","edition":"2024","doc":true,"doctest":true,"test":true},"message":{"$message_type":"diagnostic","message":"methods called `new` usually return `Self`","code":{"code":"clippy::new_ret_no_self","explanation":null},"level":"warning","spans":[{"file_name":"src/lib.rs","byte_start":476,"byte_end":534,"line_start":27,"line_end":29,"column_start":5,"column_end":6,"is_primary":true,"text":[{"text":" fn new() -> ClipboardData {","highlight_start":5,"highlight_end":32},{"text":" unimplemented!()","highlight_start":1,"highlight_end":25},{"text":" }","highlight_start":1,"highlight_end":6}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#new_ret_no_self","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(clippy::new_ret_no_self)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: methods called `new` usually return `Self`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/lib.rs:27:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m/\u001b[0m fn new() -> ClipboardData {\n\u001b[1m\u001b[94m28\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m unimplemented!()\n\u001b[1m\u001b[94m29\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m }\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|_____^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#new_ret_no_self\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(clippy::new_ret_no_self)]` on by default\n\n"}}
|
||||
{"reason":"compiler-artifact","package_id":"path+file:///home/zefad/Documents/Code/Rust/rklip/rklipd#0.1.0","manifest_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rklipd","src_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/src/lib.rs","edition":"2024","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":true},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/rklipd/target/debug/deps/librklipd-76b1f7e91bbf555b.rmeta"],"executable":null,"fresh":false}
|
||||
{"reason":"compiler-artifact","package_id":"path+file:///home/zefad/Documents/Code/Rust/rklip/rklipd#0.1.0","manifest_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rklipd","src_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/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/rklipd/target/debug/deps/librklipd-f4e8ac4b4add01be.rmeta"],"executable":null,"fresh":false}
|
||||
{"reason":"compiler-artifact","package_id":"path+file:///home/zefad/Documents/Code/Rust/rklip/rklipd#0.1.0","manifest_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/Cargo.toml","target":{"kind":["bin"],"crate_types":["bin"],"name":"rklipd","src_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/src/main.rs","edition":"2024","doc":true,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":true},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/rklipd/target/debug/deps/librklipd-2a6d3df2caa9729d.rmeta"],"executable":null,"fresh":false}
|
||||
{"reason":"compiler-artifact","package_id":"path+file:///home/zefad/Documents/Code/Rust/rklip/rklipd#0.1.0","manifest_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/Cargo.toml","target":{"kind":["bin"],"crate_types":["bin"],"name":"rklipd","src_path":"/home/zefad/Documents/Code/Rust/rklip/rklipd/src/main.rs","edition":"2024","doc":true,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/zefad/Documents/Code/Rust/rklip/rklipd/target/debug/deps/librklipd-2d822a811f51945a.rmeta"],"executable":null,"fresh":false}
|
||||
{"reason":"build-finished","success":true}
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
188
src/main.rs
188
src/main.rs
@ -1,24 +1,176 @@
|
||||
use ::arboard::Clipboard;
|
||||
mod app;
|
||||
mod ipc;
|
||||
mod models;
|
||||
mod ui;
|
||||
|
||||
fn main() {
|
||||
let Ok(mut clipboard) = Clipboard::new() else {
|
||||
println!("Clipboard init error");
|
||||
return;
|
||||
};
|
||||
use app::{App, Mode};
|
||||
use crossterm::{
|
||||
event::{self, Event, KeyCode},
|
||||
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 {
|
||||
// println!("Clipboard empty");
|
||||
// return;
|
||||
// };
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
enable_raw_mode()?;
|
||||
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());
|
||||
println!("clipboard content : {}", test);
|
||||
let mut app = App::new();
|
||||
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();
|
||||
|
||||
// for (key, value) in std::env::vars() {
|
||||
// println!("{key}: {value}");
|
||||
// }
|
||||
if let Err(err) = res {
|
||||
println!("{:?}", err);
|
||||
}
|
||||
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