Small cleanup

This commit is contained in:
Javier Feliz 2025-09-05 20:12:26 -04:00
parent 25710a319f
commit 575b8b8ad5
3 changed files with 47 additions and 39 deletions

View File

@ -10,7 +10,7 @@ fn main() {
.build(); .build();
app.connect_activate(|app| { app.connect_activate(|app| {
let mut file_search_plugin = plugins::file_search::FileSearchPlugin::new(); let mut file_search_plugin = plugins::file_search::new();
match file_search_plugin.add_search_path("/home/javi/working-files/DJ Music/") { match file_search_plugin.add_search_path("/home/javi/working-files/DJ Music/") {
Err(e) => eprintln!("{}", e), Err(e) => eprintln!("{}", e),
@ -19,7 +19,7 @@ fn main() {
// Create the core launcher // Create the core launcher
let launcher = WaycastLauncher::new() let launcher = WaycastLauncher::new()
.add_plugin(Box::new(plugins::drun::DrunPlugin {})) .add_plugin(Box::new(plugins::drun::new()))
.add_plugin(Box::new(file_search_plugin)) .add_plugin(Box::new(file_search_plugin))
.init(); .init();

View File

@ -86,6 +86,10 @@ pub fn get_desktop_entries() -> Vec<DesktopEntry> {
entries entries
} }
pub fn new() -> DrunPlugin {
DrunPlugin {}
}
pub struct DrunPlugin {} pub struct DrunPlugin {}
impl LauncherPlugin for DrunPlugin { impl LauncherPlugin for DrunPlugin {

View File

@ -39,9 +39,7 @@ impl LauncherListItem for FileEntry {
println!("Executing: {}", self.path.display()); println!("Executing: {}", self.path.display());
// Use xdg-open directly since it works properly with music files // Use xdg-open directly since it works properly with music files
match Command::new("xdg-open") match Command::new("xdg-open").arg(&self.path).spawn() {
.arg(&self.path)
.spawn() {
Ok(_) => { Ok(_) => {
println!("Successfully launched with xdg-open"); println!("Successfully launched with xdg-open");
Ok(()) Ok(())
@ -58,9 +56,10 @@ impl LauncherListItem for FileEntry {
} }
Err(e2) => { Err(e2) => {
println!("GIO fallback also failed: {}", e2); println!("GIO fallback also failed: {}", e2);
Err(LaunchError::CouldNotLaunch( Err(LaunchError::CouldNotLaunch(format!(
format!("Both xdg-open and GIO failed: {} / {}", e, e2) "Both xdg-open and GIO failed: {} / {}",
)) e, e2
)))
} }
} }
} }
@ -112,15 +111,8 @@ pub fn default_search_list() -> Vec<PathBuf> {
Vec::new() Vec::new()
} }
pub struct FileSearchPlugin {
search_paths: Vec<PathBuf>,
skip_dirs: Vec<String>,
// Running list of files in memory
files: Arc<Mutex<Vec<FileEntry>>>,
}
impl FileSearchPlugin { pub fn new() -> FileSearchPlugin {
pub fn new() -> Self {
return FileSearchPlugin { return FileSearchPlugin {
search_paths: default_search_list(), search_paths: default_search_list(),
skip_dirs: vec![ skip_dirs: vec![
@ -132,7 +124,14 @@ impl FileSearchPlugin {
files: Arc::new(Mutex::new(Vec::new())), files: Arc::new(Mutex::new(Vec::new())),
}; };
} }
pub struct FileSearchPlugin {
search_paths: Vec<PathBuf>,
skip_dirs: Vec<String>,
// Running list of files in memory
files: Arc<Mutex<Vec<FileEntry>>>,
}
impl FileSearchPlugin {
pub fn add_search_path<P: AsRef<Path>>(&mut self, path: P) -> Result<(), String> { pub fn add_search_path<P: AsRef<Path>>(&mut self, path: P) -> Result<(), String> {
let p = path.as_ref(); let p = path.as_ref();
@ -148,6 +147,11 @@ impl FileSearchPlugin {
Ok(()) Ok(())
} }
pub fn add_skip_dir(&mut self, directory_name: String) -> Result<(), String> {
self.skip_dirs.push(directory_name);
Ok(())
}
async fn init_with_timeout(&self, timeout: Duration) { async fn init_with_timeout(&self, timeout: Duration) {
let files_clone = Arc::clone(&self.files); let files_clone = Arc::clone(&self.files);
let skip_dirs_clone = self.skip_dirs.clone(); let skip_dirs_clone = self.skip_dirs.clone();