From 001a0da746c695721490c7cf6f3153c6351603f3 Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Tue, 25 Jun 2024 18:01:36 -0600 Subject: Add alacritty extension script support. This allows an escape code to invoke user-defined extensions found in /home/rahm/.local/bin/alacritty-ext.sh. The terminal passes to this script the escape-code arguments. This allows things like opening links in the browser even through an ssh connection. --- alacritty_terminal/Cargo.toml | 8 +++++++- alacritty_terminal/src/term/mod.rs | 11 +++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'alacritty_terminal') diff --git a/alacritty_terminal/Cargo.toml b/alacritty_terminal/Cargo.toml index 79e7c05b..5ff89fbc 100644 --- a/alacritty_terminal/Cargo.toml +++ b/alacritty_terminal/Cargo.toml @@ -24,9 +24,15 @@ parking_lot = "0.12.0" polling = "3.0.0" regex-automata = "0.4.3" unicode-width = "0.1" -vte = { version = "0.13.0", default-features = false, features = ["ansi", "serde"] } serde = { version = "1", features = ["derive", "rc"], optional = true } +[dependencies.vte] +version = "0.13.0" +default-features = false +features = ["ansi","serde"] +git = 'ssh://git@git.josher.dev/~git/r-alacritty-vte.git' +branch = 'rahm' + [target.'cfg(unix)'.dependencies] rustix-openpty = "0.1.1" signal-hook = "0.3.10" diff --git a/alacritty_terminal/src/term/mod.rs b/alacritty_terminal/src/term/mod.rs index 4113ed9c..b0c1dab7 100644 --- a/alacritty_terminal/src/term/mod.rs +++ b/alacritty_terminal/src/term/mod.rs @@ -1,6 +1,7 @@ //! Exports the `Term` type which is a high-level API for the Grid. use std::ops::{Index, IndexMut, Range}; +use std::process::Command; use std::sync::Arc; use std::{cmp, mem, ptr, slice, str}; @@ -1715,6 +1716,16 @@ impl Handler for Term { )); } + #[inline] + fn extension_script(&mut self, args: &Vec) { + match Command::new("/home/rahm/.local/bin/alacritty-ext.sh").args(args).output() { + Ok(_) => {}, + Err(v) => { + println!("Failed to run alacritty command. {}", v); + }, + } + } + #[inline] fn clear_screen(&mut self, mode: ansi::ClearMode) { trace!("Clearing screen: {:?}", mode); -- cgit