{ 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" ]; }; 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" ]; }; }; 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 ]; }; }; }