diff --git a/espanso/src/cli/worker/builtin/mod.rs b/espanso/src/cli/worker/builtin/mod.rs index 7723a3b..1189f1b 100644 --- a/espanso/src/cli/worker/builtin/mod.rs +++ b/espanso/src/cli/worker/builtin/mod.rs @@ -26,6 +26,7 @@ use espanso_engine::event::EventType; use super::context::Context; mod debug; +mod process; mod search; const MIN_BUILTIN_MATCH_ID: i32 = 1_000_000_000; @@ -54,6 +55,8 @@ pub fn get_builtin_matches(config: &dyn Config) -> Vec { let mut matches = vec![ debug::create_match_paste_active_config_info(), debug::create_match_paste_active_app_info(), + process::create_match_exit(), + process::create_match_restart(), ]; if config.search_trigger().is_some() || config.search_shortcut().is_some() { diff --git a/espanso/src/cli/worker/builtin/process.rs b/espanso/src/cli/worker/builtin/process.rs new file mode 100644 index 0000000..d17c7f5 --- /dev/null +++ b/espanso/src/cli/worker/builtin/process.rs @@ -0,0 +1,48 @@ +/* + * This file is part of espanso. + * + * Copyright (C) 2019-2021 Federico Terzi + * + * espanso is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * espanso is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with espanso. If not, see . + */ + +use espanso_engine::event::{EventType, ExitMode}; + +use crate::cli::worker::builtin::generate_next_builtin_id; + +use super::BuiltInMatch; + +pub fn create_match_exit() -> BuiltInMatch { + BuiltInMatch { + id: generate_next_builtin_id(), + label: "Exit espanso", + triggers: Vec::new(), + action: |_| { + EventType::ExitRequested(ExitMode::ExitAllProcesses) + }, + ..Default::default() + } +} + +pub fn create_match_restart() -> BuiltInMatch { + BuiltInMatch { + id: generate_next_builtin_id(), + label: "Restart espanso", + triggers: Vec::new(), + action: |_| { + EventType::ExitRequested(ExitMode::RestartWorker) + }, + ..Default::default() + } +} \ No newline at end of file