about summary refs log tree commit diff stats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--hm/soispha/conf/xdg/default.nix52
-rwxr-xr-xhm/soispha/conf/xdg/url_handler18
2 files changed, 70 insertions, 0 deletions
diff --git a/hm/soispha/conf/xdg/default.nix b/hm/soispha/conf/xdg/default.nix
new file mode 100644
index 00000000..d18377c0
--- /dev/null
+++ b/hm/soispha/conf/xdg/default.nix
@@ -0,0 +1,52 @@
+{
+  sysLib,
+  pkgs,
+  config,
+  ...
+}: let
+  url_handler = sysLib.writeShellScriptWithLibraryAndKeepPath {
+    name = "url_handler";
+    src = ./url_handler;
+    # Naming dependencies for this will be difficult, as it depend on overridden packages.
+    dependencies = with pkgs; [
+      rofi
+      libnotify
+    ];
+    replacementStrings = {
+      ALL_PROJECTS_PIPE = "${config.soispha.taskwarrior.projects.projects_pipe}";
+    };
+  };
+in {
+  xdg.mimeApps = {
+    enable = true;
+    desktopEntries = {
+      url_handler = {
+        name = "url_handler";
+        genericName = "Web Browser";
+        exec = "${url_handler}/bin/url_handler %u";
+        terminal = false;
+        categories = [
+          "Application"
+          "Network"
+          "WebBrowser"
+        ];
+        mimeType = [
+          "text/html"
+          "text/xml"
+          "x-scheme-handler/http"
+          "x-scheme-handler/https"
+          "x-scheme-handler/about"
+          "x-scheme-handler/unknown"
+        ];
+      };
+    };
+    defaultApplications = {
+      "text/html" = ["url_handler.desktop"];
+      "text/xml" = ["url_handler.desktop"];
+      "x-scheme-handler/http" = ["url_handler.desktop"];
+      "x-scheme-handler/https" = ["url_handler.desktop"];
+      "x-scheme-handler/about" = ["url_handler.desktop"];
+      "x-scheme-handler/unknown" = ["url_handler.desktop"];
+    };
+  };
+}
diff --git a/hm/soispha/conf/xdg/url_handler b/hm/soispha/conf/xdg/url_handler
new file mode 100755
index 00000000..10ce1d90
--- /dev/null
+++ b/hm/soispha/conf/xdg/url_handler
@@ -0,0 +1,18 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="1.10.0" . %SHELL_LIBRARY_PATH
+
+
+project="$(echo "%ALL_PROJECTS_PIPE|nvim" | rofi -sep "|" -dmenu)";
+
+if [ "$project" = "nvim" ]; then
+    "$TERMINAL" -e nvim "$1"
+elif [ "$project" ]; then
+    firefox -P "$project" "$1";
+else
+    notify-send "(URL HANDLER) No project selected" && exit 1
+fi
+
+
+# vim: ft=sh