diff --git a/espanso/src/patch/mod.rs b/espanso/src/patch/mod.rs index 916629d..e7c4185 100644 --- a/espanso/src/patch/mod.rs +++ b/espanso/src/patch/mod.rs @@ -39,9 +39,20 @@ fn get_builtin_patches() -> Vec { #[cfg(target_os = "linux")] return vec![ + patches::linux::alacritty_terminal_x11::patch(), + patches::linux::emacs_x11::patch(), + patches::linux::generic_terminal_x11::patch(), + patches::linux::kitty_terminal_x11::patch(), + patches::linux::konsole_terminal_x11::patch(), patches::linux::libreoffice_writer_x11::patch(), - // TODO: all the terminals registered in the legacy version + libre office - // + firefox + patches::linux::simple_terminal_x11::patch(), + patches::linux::simple_terminal_2_x11::patch(), + patches::linux::terminator_terminal_x11::patch(), + patches::linux::termite_terminal_x11::patch(), + patches::linux::tilix_terminal_x11::patch(), + patches::linux::urxvt_terminal_x11::patch(), + patches::linux::xterm_terminal_x11::patch(), + patches::linux::yakuake_terminal_x11::patch(), ]; } diff --git a/espanso/src/patch/patches/linux/alacritty_terminal_x11.rs b/espanso/src/patch/patches/linux/alacritty_terminal_x11.rs new file mode 100644 index 0000000..175464f --- /dev/null +++ b/espanso/src/patch/patches/linux/alacritty_terminal_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("Alacritty"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("CTRL+SHIFT+V".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/emacs_x11.rs b/espanso/src/patch/patches/linux/emacs_x11.rs new file mode 100644 index 0000000..2a7fb72 --- /dev/null +++ b/espanso/src/patch/patches/linux/emacs_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("Emacs"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("SHIFT+INSERT".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/generic_terminal_x11.rs b/espanso/src/patch/patches/linux/generic_terminal_x11.rs new file mode 100644 index 0000000..4b0dd13 --- /dev/null +++ b/espanso/src/patch/patches/linux/generic_terminal_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("terminal"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("CTRL+SHIFT+V".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/kitty_terminal_x11.rs b/espanso/src/patch/patches/linux/kitty_terminal_x11.rs new file mode 100644 index 0000000..7a97e66 --- /dev/null +++ b/espanso/src/patch/patches/linux/kitty_terminal_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("kitty"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("CTRL+SHIFT+V".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/konsole_terminal_x11.rs b/espanso/src/patch/patches/linux/konsole_terminal_x11.rs new file mode 100644 index 0000000..502e6f2 --- /dev/null +++ b/espanso/src/patch/patches/linux/konsole_terminal_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("konsole"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("CTRL+SHIFT+V".to_string())), + ..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 index b9ef691..bfb9379 100644 --- a/espanso/src/patch/patches/linux/mod.rs +++ b/espanso/src/patch/patches/linux/mod.rs @@ -17,6 +17,19 @@ * along with espanso. If not, see . */ +pub mod alacritty_terminal_x11; +pub mod emacs_x11; +pub mod generic_terminal_x11; +pub mod kitty_terminal_x11; +pub mod konsole_terminal_x11; pub mod libreoffice_writer_x11; +pub mod simple_terminal_x11; +pub mod simple_terminal_2_x11; +pub mod terminator_terminal_x11; +pub mod termite_terminal_x11; +pub mod tilix_terminal_x11; +pub mod urxvt_terminal_x11; +pub mod xterm_terminal_x11; +pub mod yakuake_terminal_x11; mod util; \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/simple_terminal_2_x11.rs b/espanso/src/patch/patches/linux/simple_terminal_2_x11.rs new file mode 100644 index 0000000..8a27e23 --- /dev/null +++ b/espanso/src/patch/patches/linux/simple_terminal_2_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().to_lowercase().contains("st"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("CTRL+SHIFT+V".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/simple_terminal_x11.rs b/espanso/src/patch/patches/linux/simple_terminal_x11.rs new file mode 100644 index 0000000..c0d704f --- /dev/null +++ b/espanso/src/patch/patches/linux/simple_terminal_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("stterm"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("SHIFT+ALT+INSERT".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/terminator_terminal_x11.rs b/espanso/src/patch/patches/linux/terminator_terminal_x11.rs new file mode 100644 index 0000000..a8132f0 --- /dev/null +++ b/espanso/src/patch/patches/linux/terminator_terminal_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("Terminator"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("CTRL+SHIFT+V".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/termite_terminal_x11.rs b/espanso/src/patch/patches/linux/termite_terminal_x11.rs new file mode 100644 index 0000000..464796b --- /dev/null +++ b/espanso/src/patch/patches/linux/termite_terminal_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("Termite"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("CTRL+SHIFT+V".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/tilix_terminal_x11.rs b/espanso/src/patch/patches/linux/tilix_terminal_x11.rs new file mode 100644 index 0000000..0128f8b --- /dev/null +++ b/espanso/src/patch/patches/linux/tilix_terminal_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("Tilix"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("CTRL+SHIFT+V".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/urxvt_terminal_x11.rs b/espanso/src/patch/patches/linux/urxvt_terminal_x11.rs new file mode 100644 index 0000000..54813ec --- /dev/null +++ b/espanso/src/patch/patches/linux/urxvt_terminal_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("URxvt"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("CTRL+ALT+V".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/xterm_terminal_x11.rs b/espanso/src/patch/patches/linux/xterm_terminal_x11.rs new file mode 100644 index 0000000..833692f --- /dev/null +++ b/espanso/src/patch/patches/linux/xterm_terminal_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("XTerm"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("CTRL+SHIFT+V".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file diff --git a/espanso/src/patch/patches/linux/yakuake_terminal_x11.rs b/espanso/src/patch/patches/linux/yakuake_terminal_x11.rs new file mode 100644 index 0000000..d07ebe8 --- /dev/null +++ b/espanso/src/patch/patches/linux/yakuake_terminal_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("yakuake"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + paste_shortcut: Some(Some("CTRL+SHIFT+V".to_string())), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file