diff options
Diffstat (limited to '')
-rw-r--r-- | hm/soispha/conf/xdg/default.nix | 52 | ||||
-rwxr-xr-x | hm/soispha/conf/xdg/url_handler | 18 |
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 |