From f9f7db623dc8c3be81ed9e7fedabf911ae48b9a8 Mon Sep 17 00:00:00 2001 From: Federico Terzi Date: Sun, 1 Aug 2021 23:17:01 +0200 Subject: [PATCH] feat(core): add LibreOffice writer patch --- espanso/src/patch/mod.rs | 1 + .../patches/linux/libreoffice_writer_x11.rs | 41 +++++++++++++++++++ espanso/src/patch/patches/linux/mod.rs | 22 ++++++++++ espanso/src/patch/patches/linux/util.rs | 22 ++++++++++ espanso/src/patch/patches/mod.rs | 3 ++ 5 files changed, 89 insertions(+) create mode 100644 espanso/src/patch/patches/linux/libreoffice_writer_x11.rs create mode 100644 espanso/src/patch/patches/linux/mod.rs create mode 100644 espanso/src/patch/patches/linux/util.rs diff --git a/espanso/src/patch/mod.rs b/espanso/src/patch/mod.rs index c0a711f..916629d 100644 --- a/espanso/src/patch/mod.rs +++ b/espanso/src/patch/mod.rs @@ -39,6 +39,7 @@ fn get_builtin_patches() -> Vec { #[cfg(target_os = "linux")] return vec![ + patches::linux::libreoffice_writer_x11::patch(), // TODO: all the terminals registered in the legacy version + libre office // + firefox ]; diff --git a/espanso/src/patch/patches/linux/libreoffice_writer_x11.rs b/espanso/src/patch/patches/linux/libreoffice_writer_x11.rs new file mode 100644 index 0000000..4b20d76 --- /dev/null +++ b/espanso/src/patch/patches/linux/libreoffice_writer_x11.rs @@ -0,0 +1,41 @@ +/* + * 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 std::sync::Arc; + +use crate::patch::patches::{PatchedConfig, Patches}; +use crate::patch::PatchDefinition; + +pub fn patch() -> PatchDefinition { + PatchDefinition { + name: module_path!().split(':').last().unwrap_or("unknown"), + is_enabled: || cfg!(target_os = "linux") && !super::util::is_wayland(), + should_patch: |app| app.class.unwrap_or_default().contains("libreoffice-writer"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + key_delay: Some(Some(2)), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/mod.rs b/espanso/src/patch/patches/linux/mod.rs new file mode 100644 index 0000000..b9ef691 --- /dev/null +++ b/espanso/src/patch/patches/linux/mod.rs @@ -0,0 +1,22 @@ +/* + * 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 . + */ + +pub mod libreoffice_writer_x11; + +mod util; \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/util.rs b/espanso/src/patch/patches/linux/util.rs new file mode 100644 index 0000000..4c261cc --- /dev/null +++ b/espanso/src/patch/patches/linux/util.rs @@ -0,0 +1,22 @@ +/* + * 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 . + */ + +pub fn is_wayland() -> bool { + cfg!(feature = "wayland") +} \ No newline at end of file diff --git a/espanso/src/patch/patches/mod.rs b/espanso/src/patch/patches/mod.rs index 8b04932..be86a0e 100644 --- a/espanso/src/patch/patches/mod.rs +++ b/espanso/src/patch/patches/mod.rs @@ -22,6 +22,9 @@ use espanso_config::config::{Backend, ToggleKey}; #[cfg(target_os = "windows")] pub mod win; +#[cfg(target_os = "linux")] +pub mod linux; + #[macro_use] mod macros;