From af399094f5d24f157e35aaa657ed5ad5c44e5325 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Tue, 26 May 2026 18:26:12 +0300 Subject: feat: open pane links with ctrl-click refs #307 --- src/platform/fallback.rs | 8 ++++++++ src/platform/linux.rs | 10 ++++++++++ src/platform/macos.rs | 10 ++++++++++ 3 files changed, 28 insertions(+) (limited to 'src/platform') diff --git a/src/platform/fallback.rs b/src/platform/fallback.rs index a8f9d8ce..d7360f9b 100644 --- a/src/platform/fallback.rs +++ b/src/platform/fallback.rs @@ -40,6 +40,14 @@ pub fn write_clipboard(_bytes: &[u8]) -> bool { false } +/// Unsupported platform stub. +pub fn open_url(_url: &str) -> std::io::Result<()> { + Err(std::io::Error::new( + std::io::ErrorKind::Unsupported, + "opening URLs is not supported on this platform", + )) +} + /// Unsupported platform stub. pub fn read_clipboard_image() -> Option { None diff --git a/src/platform/linux.rs b/src/platform/linux.rs index 00f4b906..2ea26559 100644 --- a/src/platform/linux.rs +++ b/src/platform/linux.rs @@ -179,6 +179,16 @@ pub fn write_clipboard(bytes: &[u8]) -> bool { false } +pub fn open_url(url: &str) -> std::io::Result<()> { + Command::new("xdg-open") + .arg(url) + .stdin(Stdio::null()) + .stdout(Stdio::null()) + .stderr(Stdio::null()) + .spawn()?; + Ok(()) +} + pub fn read_clipboard_image() -> Option { for (mime, extension) in [ ("image/png", "png"), diff --git a/src/platform/macos.rs b/src/platform/macos.rs index 354a6b3c..3ff23251 100644 --- a/src/platform/macos.rs +++ b/src/platform/macos.rs @@ -228,6 +228,16 @@ pub fn write_clipboard(bytes: &[u8]) -> bool { ) } +pub fn open_url(url: &str) -> std::io::Result<()> { + Command::new("open") + .arg(url) + .stdin(Stdio::null()) + .stdout(Stdio::null()) + .stderr(Stdio::null()) + .spawn()?; + Ok(()) +} + pub fn read_clipboard_image() -> Option { let path = std::env::temp_dir().join(format!( "herdr-clipboard-image-{}-{}.png", -- cgit v1.2.3