mirror of
https://github.com/Noratrieb/clippyboard.git
synced 2026-03-14 14:36:09 +01:00
parent
75b6f3eef2
commit
91134a0854
1 changed files with 17 additions and 6 deletions
|
|
@ -11,6 +11,7 @@ use eyre::bail;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
use std::convert::Infallible;
|
use std::convert::Infallible;
|
||||||
|
use std::fmt::Display;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::ErrorKind;
|
use std::io::ErrorKind;
|
||||||
use std::io::{BufReader, BufWriter, PipeWriter, Read, Write};
|
use std::io::{BufReader, BufWriter, PipeWriter, Read, Write};
|
||||||
|
|
@ -39,8 +40,9 @@ use wayland_protocols::ext::data_control::v1::client::ext_data_control_offer_v1:
|
||||||
use wayland_protocols::ext::data_control::v1::client::ext_data_control_source_v1;
|
use wayland_protocols::ext::data_control::v1::client::ext_data_control_source_v1;
|
||||||
use wayland_protocols::ext::data_control::v1::client::ext_data_control_source_v1::ExtDataControlSourceV1;
|
use wayland_protocols::ext::data_control::v1::client::ext_data_control_source_v1::ExtDataControlSourceV1;
|
||||||
|
|
||||||
const MAX_ENTRY_SIZE: u64 = 50_000_000;
|
const MEGABYTE: usize = 1024 * 1024;
|
||||||
const MAX_HISTORY_BYTE_SIZE: usize = 100_000_000;
|
const MAX_ENTRY_SIZE: usize = 50 * MEGABYTE;
|
||||||
|
const MAX_HISTORY_BYTE_SIZE: usize = 100 * MEGABYTE;
|
||||||
|
|
||||||
const MIME_TYPES: &[&str] = &["text/plain", "image/png", "image/jpg"];
|
const MIME_TYPES: &[&str] = &["text/plain", "image/png", "image/jpg"];
|
||||||
|
|
||||||
|
|
@ -398,7 +400,7 @@ fn read_fd_into_history(
|
||||||
mime: String,
|
mime: String,
|
||||||
data_reader: impl Read,
|
data_reader: impl Read,
|
||||||
) -> Result<(), eyre::Error> {
|
) -> Result<(), eyre::Error> {
|
||||||
let mut data_reader = BufReader::new(data_reader).take(MAX_ENTRY_SIZE);
|
let mut data_reader = BufReader::new(data_reader).take(MAX_ENTRY_SIZE as u64);
|
||||||
let mut data = Vec::new();
|
let mut data = Vec::new();
|
||||||
data_reader
|
data_reader
|
||||||
.read_to_end(&mut data)
|
.read_to_end(&mut data)
|
||||||
|
|
@ -428,22 +430,31 @@ fn read_fd_into_history(
|
||||||
running_total += item.data.len() + std::mem::size_of::<HistoryItem>();
|
running_total += item.data.len() + std::mem::size_of::<HistoryItem>();
|
||||||
if running_total > crate::MAX_HISTORY_BYTE_SIZE {
|
if running_total > crate::MAX_HISTORY_BYTE_SIZE {
|
||||||
cutoff = Some(idx);
|
cutoff = Some(idx);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let Some(cutoff) = cutoff {
|
if let Some(cutoff) = cutoff {
|
||||||
info!(
|
info!(
|
||||||
"Dropping old {} items because limit of {} bytes was reached for the history",
|
"Dropping old {} items beca{} bytes was reached for the history",
|
||||||
cutoff + 1,
|
cutoff + 1,
|
||||||
crate::MAX_HISTORY_BYTE_SIZE
|
format_history_size(crate::MAX_HISTORY_BYTE_SIZE)
|
||||||
);
|
);
|
||||||
items.splice(0..=cutoff, []);
|
items.splice(0..=cutoff, []);
|
||||||
}
|
}
|
||||||
info!(
|
info!(
|
||||||
"Successfully stored clipboard value of mime type {mime} (new history size {running_total})"
|
"Successfully stored clipboard value of mime type {mime} (new history size {})",
|
||||||
|
format_history_size(running_total)
|
||||||
);
|
);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn format_history_size(size: usize) -> impl Display {
|
||||||
|
if size < MEGABYTE {
|
||||||
|
return format!("{size}B");
|
||||||
|
}
|
||||||
|
format!("{}MB", size / MEGABYTE)
|
||||||
|
}
|
||||||
|
|
||||||
fn main() -> eyre::Result<()> {
|
fn main() -> eyre::Result<()> {
|
||||||
let socket_path = clippyboard_shared::socket_path()?;
|
let socket_path = clippyboard_shared::socket_path()?;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue