x11 wl separation
This commit is contained in:
@ -6,22 +6,6 @@ use uuid::Uuid;
|
||||
|
||||
use crate::models::{ClipboardData, ClipboardEntry, Image};
|
||||
|
||||
use clipboard_master::{CallbackResult, ClipboardHandler};
|
||||
use std::sync::mpsc::Sender;
|
||||
|
||||
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 trait ImageDataExt {
|
||||
fn to_png(&self) -> Result<Vec<u8>, Box<dyn Error>>;
|
||||
}
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
use arboard::Clipboard;
|
||||
|
||||
use crate::database::Database;
|
||||
use arboard::Clipboard;
|
||||
|
||||
mod clipboard;
|
||||
mod database;
|
||||
mod models;
|
||||
mod monitor;
|
||||
mod ws;
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let clipboard = Clipboard::new()?;
|
||||
@ -14,7 +14,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
||||
let db = Database::init(dir_path)?;
|
||||
|
||||
println!("{:#?}", db.read_history());
|
||||
// println!("{:#?}", db.read_history());
|
||||
|
||||
monitor::start(db, clipboard)?;
|
||||
|
||||
|
||||
@ -1,32 +1,24 @@
|
||||
use std::{error::Error, sync::mpsc::channel};
|
||||
|
||||
use arboard::Clipboard;
|
||||
use clipboard_master::Master;
|
||||
|
||||
use crate::clipboard::Handler;
|
||||
use crate::database::Database;
|
||||
use crate::models::ClipboardEntry;
|
||||
|
||||
pub fn start(db: 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 {
|
||||
print!("Clipboard changed!");
|
||||
if let Ok(entry) = ClipboardEntry::new(&mut clipboard) {
|
||||
if let Err(e) = db.append(entry) {
|
||||
eprintln!("SQLite writing error: {}", e);
|
||||
} else {
|
||||
println!("SQLite edited!");
|
||||
}
|
||||
}
|
||||
}
|
||||
use arboard::Clipboard;
|
||||
use std::error::Error;
|
||||
|
||||
#[cfg(feature = "x11")]
|
||||
use crate::ws;
|
||||
#[cfg(feature = "x11")]
|
||||
pub fn start(db: 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: Database, clipboard: Clipboard) -> Result<(), Box<dyn Error>> {
|
||||
ws::wayland::start(db, clipboard)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(not(any(feature = "x11", feature = "wayland")))]
|
||||
pub fn start(_db: Database, _clipboard: Clipboard) -> Result<(), Box<dyn Error>> {
|
||||
Err("No window system feature enabled".into())
|
||||
}
|
||||
|
||||
2
rklipd/src/ws.rs
Normal file
2
rklipd/src/ws.rs
Normal file
@ -0,0 +1,2 @@
|
||||
pub mod wayland;
|
||||
pub mod x11;
|
||||
7
rklipd/src/ws/wayland.rs
Normal file
7
rklipd/src/ws/wayland.rs
Normal file
@ -0,0 +1,7 @@
|
||||
use crate::database::Database;
|
||||
use arboard::Clipboard;
|
||||
use std::error::Error;
|
||||
|
||||
pub fn start(db: Database, mut clipboard: Clipboard) -> Result<(), Box<dyn Error>> {
|
||||
Ok(())
|
||||
}
|
||||
45
rklipd/src/ws/x11.rs
Normal file
45
rklipd/src/ws/x11.rs
Normal file
@ -0,0 +1,45 @@
|
||||
use arboard::Clipboard;
|
||||
use clipboard_master::{CallbackResult, ClipboardHandler, Master};
|
||||
use std::{
|
||||
error::Error,
|
||||
sync::mpsc::{Sender, channel},
|
||||
};
|
||||
|
||||
use crate::{database::Database, models::ClipboardEntry};
|
||||
|
||||
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: 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) {
|
||||
if let Err(e) = db.append(entry) {
|
||||
eprintln!("SQLite writing error: {}", e);
|
||||
} else {
|
||||
// println!("SQLite edited!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user