diff --git a/home/roles/desktop/default.nix b/home/roles/desktop/default.nix index c92a0b2..7e25dcb 100644 --- a/home/roles/desktop/default.nix +++ b/home/roles/desktop/default.nix @@ -19,9 +19,11 @@ in kitty # Desktop utilities + feh # Image viewer and wallpaper setter for X11 solaar # Logitech management software waybar wofi + xdg-utils # XDG utilities for opening files/URLs with default applications # System utilities with GUI components (snapcast.override { pulseaudioSupport = true; }) @@ -37,6 +39,14 @@ in kdePackages.kaddressbook kdePackages.kontact + # KDE System components needed for proper integration + kdePackages.kded + kdePackages.systemsettings + kdePackages.kmenuedit + + # Desktop menu support + kdePackages.plasma-desktop # Contains applications.menu + # KDE Online Accounts support kdePackages.kaccounts-integration kdePackages.kaccounts-providers @@ -70,7 +80,79 @@ in enable = true; }; - xdg.enable = true; + # KDE environment variables for proper integration + home.sessionVariables = { + QT_QPA_PLATFORMTHEME = "kde"; + KDE_SESSION_VERSION = "6"; + }; + + xdg = { + enable = true; + + # Ensure desktop files are made available for discovery + desktopEntries = {}; # This creates the desktop files directory structure + + mimeApps = { + enable = true; + associations.added = { + # Ensure associations are properly registered + "text/html" = "firefox.desktop"; + "x-scheme-handler/http" = "firefox.desktop"; + "x-scheme-handler/https" = "firefox.desktop"; + }; + defaultApplications = { + # Web browsers + "text/html" = "firefox.desktop"; + "x-scheme-handler/http" = "firefox.desktop"; + "x-scheme-handler/https" = "firefox.desktop"; + "x-scheme-handler/about" = "firefox.desktop"; + "x-scheme-handler/unknown" = "firefox.desktop"; + + # Documents + "application/pdf" = "okular.desktop"; + "text/plain" = "kate.desktop"; + "text/x-tex" = "kate.desktop"; + "text/x-c" = "kate.desktop"; + "text/x-python" = "kate.desktop"; + "application/x-shellscript" = "kate.desktop"; + + # Images + "image/png" = "gwenview.desktop"; + "image/jpeg" = "gwenview.desktop"; + "image/jpg" = "gwenview.desktop"; + "image/gif" = "gwenview.desktop"; + "image/bmp" = "gwenview.desktop"; + "image/tiff" = "gwenview.desktop"; + "image/webp" = "gwenview.desktop"; + + # Archives + "application/zip" = "ark.desktop"; + "application/x-tar" = "ark.desktop"; + "application/x-compressed-tar" = "ark.desktop"; + "application/x-7z-compressed" = "ark.desktop"; + "application/x-rar" = "ark.desktop"; + + # Audio + "audio/mpeg" = "elisa.desktop"; + "audio/mp4" = "elisa.desktop"; + "audio/flac" = "elisa.desktop"; + "audio/ogg" = "elisa.desktop"; + "audio/wav" = "elisa.desktop"; + + # Email + "message/rfc822" = "kmail.desktop"; + "x-scheme-handler/mailto" = "kmail.desktop"; + + # Calendar + "text/calendar" = "korganizer.desktop"; + "application/x-vnd.akonadi.calendar.event" = "korganizer.desktop"; + }; + }; + }; + + # Fix for KDE applications.menu file issue on Plasma 6 + # KDE still looks for applications.menu but Plasma 6 renamed it to plasma-applications.menu + xdg.configFile."menus/applications.menu".source = "${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu"; # Note: modules must be imported at top-level home config };