From 9f48d6b9d94153f3d002fd1f3048695c150348a4 Mon Sep 17 00:00:00 2001 From: NullBite Date: Mon, 4 Mar 2024 21:09:08 -0500 Subject: [PATCH] wm: Enable XDG MIME and set some defaults --- home/common/wm.nix | 20 ++++++++++++++++++++ home/package-sets/multimedia.nix | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/home/common/wm.nix b/home/common/wm.nix index c626145..37d98c6 100644 --- a/home/common/wm.nix +++ b/home/common/wm.nix @@ -2,6 +2,7 @@ let cfg = config.nixfiles.common.wm; inherit (lib) mkDefault; + mkOverrideEach = pri: lib.mapAttrs (_:v: lib.mkOverride pri v); in { options.nixfiles.common.wm = { @@ -47,6 +48,25 @@ in package = pkgs.swaylock-effects; }; }; + + + # File associations + xdg.mimeApps = { + enable = true; + defaultApplications = let + defaultBrowser = [ "firefox.desktop" ]; + in mkOverrideEach 50 { + "x-scheme-handler/https" = defaultBrowser; + "x-scheme-handler/http" = defaultBrowser; + "text/html" = defaultBrowser; + "application/xhtml+xml" = defaultBrowser; + "application/pdf" = defaultBrowser; + }; + }; + + # this solves some inconsistent behavior with xdg-open + xdg.portal.xdgOpenUsePortal = true; + services = { udiskie = { enable = mkDefault true; diff --git a/home/package-sets/multimedia.nix b/home/package-sets/multimedia.nix index a1d9e5f..081b54f 100644 --- a/home/package-sets/multimedia.nix +++ b/home/package-sets/multimedia.nix @@ -3,6 +3,7 @@ let cfg = config.nixfiles.packageSets.multimedia; inherit (lib) optionals mkEnableOption mkIf; default = osConfig ? nixfiles && osConfig.nixfiles.packageSets.multimedia.enable; + mkOverrideEach = pri: lib.mapAttrs (_:v: lib.mkOverride pri v); in { options.nixfiles.packageSets.multimedia = { @@ -21,10 +22,29 @@ in krita inkscape obs-studio + nomacs + audacity ] ++ [ yt-dlp imagemagick ffmpeg ]; + + xdg.mimeApps.defaultApplications = lib.mkMerge [ + # project files + (mkOverrideEach 100 { + "image/x-xcf" = [ "gimp.desktop" ]; + "image/x-compressed-xcf" = [ "gimp.desktop" ]; + "image/x-krita" = [ "krita.desktop" ]; + "application/x-audacity-project" = [ "audacity.desktop" ]; + "application/x-audacity-project+sqlite3" = [ "audacity.desktop" ]; + "image/svg+xml" = [ "org.inkscape.Inkscape.desktop" ]; + "image/svg+xml-compressed" = [ "org.inkscape.Inkscape.desktop" ]; + }) + # general files + (with pkgs; mkOverrideEach 150 (config.lib.xdg.mimeAssociations [ nomacs mpv ])) + # rest of the files + (with pkgs; mkOverrideEach 200 (config.lib.xdg.mimeAssociations [ inkscape gimp audacity ])) + ]; }; }