about summary refs log tree commit diff stats
path: root/pkgs/by-name/ts/tskm/src/browser/mod.rs
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-07-20 18:41:16 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-07-20 18:41:16 +0200
commit24d7d3e14ff14d6e43670023bd0862e82f9408e7 (patch)
tree79d0da401fac0dbc451f8c0ac63e2306d4c4ac16 /pkgs/by-name/ts/tskm/src/browser/mod.rs
parentmodules/legacy/conf/iamb: Move to `by-name` and modernize (diff)
downloadnixos-config-24d7d3e14ff14d6e43670023bd0862e82f9408e7.zip
pkgs/tskm: Support raw paths in place of URLs
Otherwise, using `tskm` as an URL opener might fail (e.g., as `xdg-open
/some/path`, would still invoke it).
Diffstat (limited to 'pkgs/by-name/ts/tskm/src/browser/mod.rs')
-rw-r--r--pkgs/by-name/ts/tskm/src/browser/mod.rs16
1 files changed, 11 insertions, 5 deletions
diff --git a/pkgs/by-name/ts/tskm/src/browser/mod.rs b/pkgs/by-name/ts/tskm/src/browser/mod.rs
index d83bcbc4..2129982f 100644
--- a/pkgs/by-name/ts/tskm/src/browser/mod.rs
+++ b/pkgs/by-name/ts/tskm/src/browser/mod.rs
@@ -14,11 +14,14 @@ use url::Url;
 use crate::{state::State, task};
 
 #[allow(clippy::too_many_lines)]
-pub fn open_in_browser(
+pub fn open_in_browser<U>(
     selected_project: &task::Project,
     state: &mut State,
-    urls: Option<Vec<Url>>,
-) -> Result<()> {
+    urls: Option<Vec<U>>,
+) -> Result<()>
+where
+    U: Into<Url>,
+{
     let old_project: Option<task::Project> =
         task::Project::get_current().context("Failed to get currently active project")?;
     let old_task: Option<task::Task> =
@@ -129,7 +132,7 @@ pub fn open_in_browser(
 
         if let Some(mut stream) = socket {
             let real_url = if let Some(urls) = urls {
-                urls.into_iter().map(|url| url.to_string()).collect()
+                urls.into_iter().map(|url| url.into().to_string()).collect()
             } else {
                 // Always add a new tab, so that qutebrowser is marked as “urgent”.
                 vec!["qute://start".to_owned()]
@@ -153,7 +156,10 @@ pub fn open_in_browser(
             ExitStatus::default()
         } else {
             let args = if let Some(urls) = urls {
-                urls.iter().map(ToString::to_string).collect()
+                urls.into_iter()
+                    .map(Into::<Url>::into)
+                    .map(|u| u.to_string())
+                    .collect()
             } else {
                 vec![]
             };