From b472ebcc0c57d88914bb8e478efcb0410a6bf6d0 Mon Sep 17 00:00:00 2001
From: Frantisek Bohacek <rutherther@proton.me>
Date: Sat, 18 Nov 2023 18:21:01 +0100
Subject: [PATCH] feat: specify more default applications

---
 hosts/home.nix | 54 +++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 45 insertions(+), 9 deletions(-)

diff --git a/hosts/home.nix b/hosts/home.nix
index 8969180..c670966 100644
--- a/hosts/home.nix
+++ b/hosts/home.nix
@@ -40,15 +40,50 @@
     };
     mimeApps = {
       enable = true;
-      defaultApplications = {
-        "application/pdf" = "zathura.desktop";
-        "text/html" = "firefox.desktop";
-        "x-scheme-handler/http" = "firefox.desktop";
-        "x-scheme-handler/https" = "firefox.desktop";
-        "x-scheme-handler/chrome" = "firefox.desktop";
-        "x-scheme-handler/about" = "firefox.desktop";
-        "x-scheme-handler/unknown" = "firefox.desktop";
-        "x-scheme-handler/file" = "nemo.desktop";
+      defaultApplications = let
+        imageViewer = "sxiv.desktop";
+        videoViewer = "mpv.desktop";
+        pdfViewer = "org.pwmt.zathura.desktop";
+        textEditor = "emacs-client.desktop";
+        webBrowser = "firefox.desktop";
+        fileBrowser = "nautilus.desktop";
+      in {
+        # see https://www.iana.org/assignments/media-types/media-types.xhtml
+
+        # Pdf
+        "application/pdf" = pdfViewer;
+
+        # Image
+        "image/png" = imageViewer;
+        "image/jpeg" = imageViewer;
+        "image/gif" = imageViewer;
+        "image/tiff" = imageViewer;
+        "image/webp" = imageViewer;
+
+        # Video
+        "application/mp4" = videoViewer;
+        "video/mpeg" = videoViewer;
+        "video/h264" = videoViewer;
+        "video/h265" = videoViewer;
+        "video/h266" = videoViewer;
+
+        # Text Editor
+        "application/x-shellscript" = textEditor;
+        "text/plain" = textEditor;
+        "text/x-python3" = textEditor;
+        "text/javascript" = textEditor;
+        "text/markdown" = textEditor;
+
+        # Web Browser
+        "text/html" = webBrowser;
+        "x-scheme-handler/http" = webBrowser;
+        "x-scheme-handler/https" = webBrowser;
+        "x-scheme-handler/chrome" = webBrowser;
+        "x-scheme-handler/about" = webBrowser;
+        "x-scheme-handler/unknown" = webBrowser;
+
+        # File Browser
+        "x-scheme-handler/file" = fileBrowser;
       };
     };
   };
@@ -67,6 +102,7 @@
       lazygit           # Git tool
 
       # Video/Audio
+      sxiv              # Image Viewer
       feh               # Image Viewer
       mpv               # Media Player
       pavucontrol       # Audio Control
-- 
2.48.1