diff --git a/Cargo.lock b/Cargo.lock index 3e8e290..1e0c077 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -182,17 +182,6 @@ dependencies = [ "libloading", ] -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener 2.5.3", - "futures-core", -] - [[package]] name = "async-channel" version = "2.3.1" @@ -219,18 +208,14 @@ dependencies = [ ] [[package]] -name = "async-global-executor" -version = "2.4.1" +name = "async-fs" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" dependencies = [ - "async-channel 2.3.1", - "async-executor", - "async-io", "async-lock", "blocking", "futures-lite", - "once_cell", ] [[package]] @@ -246,7 +231,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix", + "rustix 0.38.39", "slab", "tracing", "windows-sys 0.59.0", @@ -258,35 +243,56 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 5.3.1", + "event-listener", "event-listener-strategy", "pin-project-lite", ] [[package]] -name = "async-std" -version = "1.13.0" +name = "async-net" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" +checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" dependencies = [ - "async-channel 1.9.0", - "async-global-executor", + "async-io", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-process" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel", "async-io", "async-lock", - "crossbeam-utils", - "futures-channel", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 1.1.3", +] + +[[package]] +name = "async-signal" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", "futures-core", "futures-io", - "futures-lite", - "gloo-timers", - "kv-log-macro", - "log", - "memchr", - "once_cell", - "pin-project-lite", - "pin-utils", + "rustix 1.1.3", + "signal-hook-registry", "slab", - "wasm-bindgen-futures", + "windows-sys 0.61.2", ] [[package]] @@ -401,7 +407,7 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ - "async-channel 2.3.1", + "async-channel", "async-task", "futures-io", "futures-lite", @@ -471,7 +477,7 @@ dependencies = [ "bitflags 2.9.0", "log", "polling", - "rustix", + "rustix 0.38.39", "slab", "thiserror 1.0.69", ] @@ -483,7 +489,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ "calloop", - "rustix", + "rustix 0.38.39", "wayland-backend", "wayland-client", ] @@ -504,7 +510,7 @@ name = "centerpiece" version = "1.1.0" dependencies = [ "anyhow", - "async-std", + "async-channel", "async-trait", "battery", "chrono", @@ -512,6 +518,7 @@ dependencies = [ "dbus", "eframe", "freedesktop-desktop-entry", + "futures-lite", "log", "networkmanager", "nucleo-matcher", @@ -521,6 +528,7 @@ dependencies = [ "serde_yaml", "settings", "simple_logger", + "smol", "sqlite", "swayipc", "sysinfo", @@ -1044,12 +1052,6 @@ version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - [[package]] name = "event-listener" version = "5.3.1" @@ -1067,7 +1069,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.3.1", + "event-listener", "pin-project-lite", ] @@ -1152,15 +1154,6 @@ dependencies = [ "xdg", ] -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", -] - [[package]] name = "futures-core" version = "0.3.31" @@ -1257,18 +1250,6 @@ dependencies = [ "regex-syntax", ] -[[package]] -name = "gloo-timers" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - [[package]] name = "glow" version = "0.16.0" @@ -1673,15 +1654,6 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -1696,9 +1668,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.171" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libdbus-sys" @@ -1736,6 +1708,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + [[package]] name = "litemap" version = "0.8.0" @@ -2399,12 +2377,6 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - [[package]] name = "piper" version = "0.2.4" @@ -2445,7 +2417,7 @@ dependencies = [ "concurrent-queue", "hermit-abi 0.4.0", "pin-project-lite", - "rustix", + "rustix 0.38.39", "tracing", "windows-sys 0.59.0", ] @@ -2623,10 +2595,23 @@ dependencies = [ "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] +[[package]] +name = "rustix" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.11.0", + "windows-sys 0.59.0", +] + [[package]] name = "rustversion" version = "1.0.21" @@ -2743,6 +2728,16 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + [[package]] name = "simd-adler32" version = "0.3.7" @@ -2798,7 +2793,7 @@ dependencies = [ "libc", "log", "memmap2", - "rustix", + "rustix 0.38.39", "thiserror 1.0.69", "wayland-backend", "wayland-client", @@ -2821,6 +2816,23 @@ dependencies = [ "wayland-backend", ] +[[package]] +name = "smol" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" +dependencies = [ + "async-channel", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-net", + "async-process", + "blocking", + "futures-lite", +] + [[package]] name = "smol_str" version = "0.2.2" @@ -3443,7 +3455,7 @@ checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" dependencies = [ "cc", "downcast-rs", - "rustix", + "rustix 0.38.39", "scoped-tls", "smallvec", "wayland-sys", @@ -3456,7 +3468,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66249d3fc69f76fd74c82cc319300faa554e9d865dab1f7cd66cc20db10b280" dependencies = [ "bitflags 2.9.0", - "rustix", + "rustix 0.38.39", "wayland-backend", "wayland-scanner", ] @@ -3478,7 +3490,7 @@ version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b08bc3aafdb0035e7fe0fdf17ba0c09c268732707dca4ae098f60cb28c9e4c" dependencies = [ - "rustix", + "rustix 0.38.39", "wayland-client", "xcursor", ] @@ -3939,6 +3951,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -4156,7 +4177,7 @@ dependencies = [ "pin-project", "raw-window-handle", "redox_syscall 0.4.1", - "rustix", + "rustix 0.38.39", "smithay-client-toolkit", "smol_str", "tracing", @@ -4195,7 +4216,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" dependencies = [ "gethostname", - "rustix", + "rustix 0.38.39", "x11rb-protocol", ] diff --git a/client/Cargo.toml b/client/Cargo.toml index 79fa674..1d0a3e3 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -32,7 +32,9 @@ eframe = { version = "0.31.1", default-features = false, features = [ # plugins async-trait = "0.1.89" -async-std = "1.12.0" +smol = "2" +async-channel = "2" +futures-lite = "2" # reading index files serde_json = "1.0.139" diff --git a/client/src/main.rs b/client/src/main.rs index 11f85c9..968ee11 100644 --- a/client/src/main.rs +++ b/client/src/main.rs @@ -39,7 +39,7 @@ struct Centerpiece { query: String, active_entry_index: usize, plugins: Vec, - plugin_channels: Vec>, + plugin_channels: Vec>, } impl eframe::App for Centerpiece { diff --git a/client/src/model.rs b/client/src/model.rs index d82c5f5..83929cf 100644 --- a/client/src/model.rs +++ b/client/src/model.rs @@ -4,7 +4,7 @@ pub struct Plugin { pub priority: u32, pub title: String, pub entries: Vec, - pub app_channel_out: async_std::channel::Sender, + pub app_channel_out: async_channel::Sender, } #[derive(Debug, Clone, Ord, PartialOrd)] diff --git a/client/src/plugin/applications.rs b/client/src/plugin/applications.rs index 4baad39..ff1f23c 100644 --- a/client/src/plugin/applications.rs +++ b/client/src/plugin/applications.rs @@ -190,7 +190,7 @@ impl Plugin for ApplicationsPlugin { fn activate( &mut self, entry: crate::model::Entry, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { let command = entry.command.context(format!( "Failed to unpack command while activating entry with id '{}'.", diff --git a/client/src/plugin/brave/bookmarks.rs b/client/src/plugin/brave/bookmarks.rs index a48da7d..5d9e928 100644 --- a/client/src/plugin/brave/bookmarks.rs +++ b/client/src/plugin/brave/bookmarks.rs @@ -45,7 +45,7 @@ impl Plugin for BookmarksPlugin { fn activate( &mut self, entry: crate::model::Entry, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { std::process::Command::new("brave") .arg(&entry.id) diff --git a/client/src/plugin/brave/history.rs b/client/src/plugin/brave/history.rs index 54269b0..7adc66c 100644 --- a/client/src/plugin/brave/history.rs +++ b/client/src/plugin/brave/history.rs @@ -73,7 +73,7 @@ impl Plugin for HistoryPlugin { fn activate( &mut self, entry: crate::model::Entry, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { std::process::Command::new("brave") .arg(&entry.id) diff --git a/client/src/plugin/brave/progressive_web_apps.rs b/client/src/plugin/brave/progressive_web_apps.rs index 2130f6a..6d7a613 100644 --- a/client/src/plugin/brave/progressive_web_apps.rs +++ b/client/src/plugin/brave/progressive_web_apps.rs @@ -54,7 +54,7 @@ impl Plugin for ProgressiveWebAppsPlugin { fn activate( &mut self, entry: crate::model::Entry, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { std::process::Command::new("brave") .arg(format!("--app={}", entry.id)) diff --git a/client/src/plugin/firefox/bookmarks.rs b/client/src/plugin/firefox/bookmarks.rs index 3ddf8fa..1969641 100644 --- a/client/src/plugin/firefox/bookmarks.rs +++ b/client/src/plugin/firefox/bookmarks.rs @@ -78,7 +78,7 @@ impl Plugin for BookmarksPlugin { fn activate( &mut self, entry: crate::model::Entry, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { std::process::Command::new("firefox") .arg(&entry.id) diff --git a/client/src/plugin/firefox/history.rs b/client/src/plugin/firefox/history.rs index fddb7a4..079dcd9 100644 --- a/client/src/plugin/firefox/history.rs +++ b/client/src/plugin/firefox/history.rs @@ -76,7 +76,7 @@ impl Plugin for HistoryPlugin { fn activate( &mut self, entry: crate::model::Entry, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { std::process::Command::new("firefox") .arg(&entry.id) diff --git a/client/src/plugin/git_repositories.rs b/client/src/plugin/git_repositories.rs index f73b96e..6a123e7 100644 --- a/client/src/plugin/git_repositories.rs +++ b/client/src/plugin/git_repositories.rs @@ -68,7 +68,7 @@ impl Plugin for GitRepositoriesPlugin { fn activate( &mut self, entry: crate::model::Entry, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { for command in self.settings.plugin.git_repositories.commands.clone() { let parsed_command: Vec = command diff --git a/client/src/plugin/gitmoji.rs b/client/src/plugin/gitmoji.rs index 350c7c1..bfcddf4 100644 --- a/client/src/plugin/gitmoji.rs +++ b/client/src/plugin/gitmoji.rs @@ -356,7 +356,7 @@ impl Plugin for GitmojiPlugin { fn activate( &mut self, entry: crate::model::Entry, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { std::process::Command::new("wl-copy") .arg(&entry.id) diff --git a/client/src/plugin/sway_windows.rs b/client/src/plugin/sway_windows.rs index b60b41d..c84b4d1 100644 --- a/client/src/plugin/sway_windows.rs +++ b/client/src/plugin/sway_windows.rs @@ -98,7 +98,7 @@ impl Plugin for SwayWindowsPlugin { fn activate( &mut self, entry: crate::model::Entry, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { self.sway .run_command(format!("[con_id={}] focus", entry.id)) diff --git a/client/src/plugin/system.rs b/client/src/plugin/system.rs index a62de5e..9e75543 100644 --- a/client/src/plugin/system.rs +++ b/client/src/plugin/system.rs @@ -71,7 +71,7 @@ impl Plugin for SystemPlugin { fn activate( &mut self, entry: crate::model::Entry, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { let command = entry.command.context(format!( "Failed to unpack command while activating entry with id '{}'.", diff --git a/client/src/plugin/utils.rs b/client/src/plugin/utils.rs index 62746f4..1aeca44 100644 --- a/client/src/plugin/utils.rs +++ b/client/src/plugin/utils.rs @@ -1,5 +1,4 @@ use anyhow::Context; -use async_std::stream::StreamExt; use nucleo_matcher::{ Matcher, Utf32Str, pattern::{Atom, AtomKind, CaseMatching, Normalization}, @@ -7,20 +6,22 @@ use nucleo_matcher::{ use std::cmp::Reverse; pub fn spawn() --> async_std::channel::Receiver { - let (plugin_channel_out, app_channel_in) = async_std::channel::bounded(100); - - async_std::task::spawn(async { - let mut plugin = PluginType::new(); - - let main_loop_result = plugin.main(plugin_channel_out).await; - if let Err(error) = main_loop_result { - log::error!( - target: PluginType::id(), - "{:?}", error, - ); - panic!(); - } +-> async_channel::Receiver { + let (plugin_channel_out, app_channel_in) = async_channel::bounded(100); + + std::thread::spawn(move || { + smol::block_on(async { + let mut plugin = PluginType::new(); + + let main_loop_result = plugin.main(plugin_channel_out).await; + if let Err(error) = main_loop_result { + log::error!( + target: PluginType::id(), + "{:?}", error, + ); + panic!(); + } + }); }); return app_channel_in; @@ -101,7 +102,7 @@ pub trait Plugin { fn plugin( &self, - app_channel_out: &mut async_std::channel::Sender, + app_channel_out: &mut async_channel::Sender, ) -> crate::model::Plugin { crate::model::Plugin { id: String::from(Self::id()), @@ -114,11 +115,11 @@ pub trait Plugin { async fn main( &mut self, - mut plugin_channel_out: async_std::channel::Sender, + mut plugin_channel_out: async_channel::Sender, ) -> anyhow::Result<()> { self.update_entries()?; - let (mut app_channel_out, mut plugin_channel_in) = async_std::channel::bounded(100); + let (mut app_channel_out, mut plugin_channel_in) = async_channel::bounded(100); self.register_plugin(&mut plugin_channel_out, &mut app_channel_out)?; let mut last_query = String::from(""); @@ -134,8 +135,8 @@ pub trait Plugin { fn register_plugin( &mut self, - plugin_channel_out: &mut async_std::channel::Sender, - app_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, + app_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { plugin_channel_out .send_blocking(crate::Message::RegisterPlugin(self.plugin(app_channel_out))) @@ -146,18 +147,19 @@ pub trait Plugin { async fn update( &mut self, - plugin_channel_out: &mut async_std::channel::Sender, - plugin_channel_in: &mut async_std::channel::Receiver, + plugin_channel_out: &mut async_channel::Sender, + plugin_channel_in: &mut async_channel::Receiver, last_query: &mut String, ) -> anyhow::Result<()> { - let plugin_request_future = plugin_channel_in.next(); let plugin_request_option = match Self::update_timeout() { Some(update_timeout) => { - async_std::future::timeout(update_timeout, plugin_request_future) - .await - .unwrap_or(Some(crate::model::PluginRequest::Timeout)) + futures_lite::future::or(async { plugin_channel_in.recv().await.ok() }, async { + smol::Timer::after(update_timeout).await; + Some(crate::model::PluginRequest::Timeout) + }) + .await } - None => plugin_request_future.await, + None => plugin_channel_in.recv().await.ok(), }; if plugin_request_option.is_none() { return Ok(()); @@ -190,7 +192,7 @@ pub trait Plugin { fn search( &mut self, query: &str, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { let filtered_entries = fuzzy_match(query, self.entries()); @@ -210,7 +212,7 @@ pub trait Plugin { fn activate( &mut self, _entry: crate::model::Entry, - _plugin_channel_out: &mut async_std::channel::Sender, + _plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { Ok(()) } diff --git a/client/src/plugin/wifi.rs b/client/src/plugin/wifi.rs index fd786c5..75370bc 100644 --- a/client/src/plugin/wifi.rs +++ b/client/src/plugin/wifi.rs @@ -133,7 +133,7 @@ impl Plugin for WifiPlugin { fn activate( &mut self, entry: crate::model::Entry, - plugin_channel_out: &mut async_std::channel::Sender, + plugin_channel_out: &mut async_channel::Sender, ) -> anyhow::Result<()> { let command = entry.command.context(format!( "Failed to unpack command while activating entry with id '{}'.",