{ pkgs, config, ... }: let browser = [ "floorp.desktop" ]; # XDG MIME types associations = { "application/x-extension-htm" = browser; "application/x-extension-html" = browser; "application/x-extension-shtml" = browser; "application/x-extension-xht" = browser; "application/x-extension-xhtml" = browser; "application/xhtml+xml" = browser; "text/html" = browser; "x-scheme-handler/about" = browser; "x-scheme-handler/chrome" = [ "chromium-browser.desktop" ]; "x-scheme-handler/ftp" = browser; "x-scheme-handler/http" = browser; "x-scheme-handler/https" = browser; "x-scheme-handler/unknown" = browser; "audio/*" = [ "mpv.desktop" ]; "video/*" = [ "mpv.dekstop" ]; "image/*" = [ "kitty-icat.desktop" ]; #"application/json" = browser; "application/pdf" = [ "kitty-tdf.desktop" ]; "x-scheme-handler/discord" = [ "discordcanary.desktop" ]; "x-scheme-handler/spotify" = [ "spotify.desktop" ]; "x-scheme-handler/tg" = [ "telegramdesktop.desktop" ]; "text/csv" = [ "kitty-tabiew.desktop" ]; "application/csv" = [ "kitty-tabiew.desktop" ]; "text/tab-separated-values" = [ "kitty-tabiew.desktop" ]; "application/tsv" = [ "kitty-tabiew.desktop" ]; "application/json" = [ "kitty-tabiew.desktop" ]; "application/x-ndjson" = [ "kitty-tabiew.desktop" ]; "application/vnd.apache.arrow.file" = [ "kitty-tabiew.desktop" ]; "application/parquet" = [ "kitty-tabiew.desktop" ]; "application/x-parquet" = [ "kitty-tabiew.desktop" ]; "application/vnd.sqlite3" = [ "kitty-tabiew.desktop" ]; "application/x-sqlite3" = [ "kitty-tabiew.desktop" ]; "application/fwf" = [ "kitty-tabiew.desktop" ]; "text/fwf" = [ "kitty-tabiew.desktop" ]; }; in { xdg = { enable = true; cacheHome = config.home.homeDirectory + "/.local/cache"; mimeApps = { enable = true; defaultApplications = associations; }; desktopEntries = { kitty-icat = { name = "Kitty Icat"; exec = "kitty +kitten icat %F"; terminal = true; type = "Application"; mimeType = [ "image/*" ]; categories = [ "Viewer" "Graphics" ]; }; kitty-tdf = { name = "TDF PDF Viewer"; exec = "kitty -e tdf %F"; terminal = false; # Set to false since we're explicitly calling kitty type = "Application"; mimeType = [ "application/pdf" ]; categories = [ "Viewer" "Office" ]; }; kitty-tabiew = { name = "Tabiew CSV Viewer"; exec = "kitty -e tw %F --theme catppuccin"; terminal = false; type = "Application"; mimeType = [ "text/csv" "application/csv" "text/tab-separated-values" "application/tsv" "application/json" "application/x-ndjson" "application/vnd.apache.arrow.file" "application/parquet" "application/x-parquet" "application/vnd.sqlite3" "application/x-sqlite3" "application/fwf" "text/fwf" ]; categories = [ "Utility" "Viewer" "Database" "Development" ]; }; }; userDirs = { enable = true; createDirectories = true; extraConfig = { XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; }; }; portal = { enable = true; xdgOpenUsePortal = true; config = { common.default = [ "gtk" ]; hyprland.default = [ "gtk" "hyprland" ]; }; extraPortals = [ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-hyprland ]; }; }; }