about summary refs log tree commit diff stats
path: root/pkgs/by-name/ts/tskm/src/interface/open/handle.rs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/ts/tskm/src/interface/open/handle.rs')
-rw-r--r--pkgs/by-name/ts/tskm/src/interface/open/handle.rs22
1 files changed, 16 insertions, 6 deletions
diff --git a/pkgs/by-name/ts/tskm/src/interface/open/handle.rs b/pkgs/by-name/ts/tskm/src/interface/open/handle.rs
index ca54b422..3897a63b 100644
--- a/pkgs/by-name/ts/tskm/src/interface/open/handle.rs
+++ b/pkgs/by-name/ts/tskm/src/interface/open/handle.rs
@@ -8,6 +8,8 @@
 // You should have received a copy of the License along with this program.
 // If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
 
+use std::str::FromStr;
+
 use anyhow::{bail, Context, Result};
 use log::{error, info};
 use url::Url;
@@ -17,7 +19,15 @@ use crate::{browser::open_in_browser, cli::OpenCommand, rofi, state::State, task
 fn is_empty(project: &task::Project) -> Result<bool> {
     let tabs = get_tabs(project)?;
 
-    Ok(tabs.is_empty())
+    if tabs.is_empty() {
+        Ok(true)
+    } else if tabs.len() > 1 {
+        Ok(false)
+    } else {
+        let url = &tabs[0].1;
+
+        Ok(url == &Url::from_str("qute://start/").expect("Hardcoded"))
+    }
 }
 
 #[allow(clippy::too_many_lines)]
@@ -33,7 +43,7 @@ pub fn handle(command: OpenCommand, state: &mut State) -> Result<()> {
                         project.to_project_display(),
                         if is_empty { "is empty" } else { "is not empty" }
                     );
-                    open_in_browser(project, state, None).with_context(|| {
+                    open_in_browser(project, state, None::<Vec<Url>>).with_context(|| {
                         format!(
                             "Failed to open project ('{}') in qutebrowser",
                             project.to_project_display()
@@ -51,13 +61,13 @@ pub fn handle(command: OpenCommand, state: &mut State) -> Result<()> {
                 }
             }
         }
-        OpenCommand::Project { project, url } => {
+        OpenCommand::Project { project, urls } => {
             project.touch().context("Failed to touch project")?;
-            open_in_browser(&project, state, url).with_context(|| {
+            open_in_browser(&project, state, urls).with_context(|| {
                 format!("Failed to open project: {}", project.to_project_display())
             })?;
         }
-        OpenCommand::Select { url } => {
+        OpenCommand::Select { urls } => {
             let selected_project: task::Project = task::Project::from_project_string(
                 &rofi::select(
                     task::Project::all()
@@ -75,7 +85,7 @@ pub fn handle(command: OpenCommand, state: &mut State) -> Result<()> {
                 .touch()
                 .context("Failed to touch project")?;
 
-            open_in_browser(&selected_project, state, url).context("Failed to open project")?;
+            open_in_browser(&selected_project, state, urls).context("Failed to open project")?;
         }
         OpenCommand::ListTabs { projects, mode } => {
             let projects = {