feat(desktop): improve mimeapps

This commit is contained in:
Felix Schröter 2023-02-01 20:32:09 +01:00
parent d20e8f5cd2
commit 9fe366f34c
Signed by: felschr
GPG key ID: 671E39E6744C807D

View file

@ -13,6 +13,7 @@ let
browser = [ "firefox.desktop" ]; browser = [ "firefox.desktop" ];
office = [ "libreoffice.desktop" ]; office = [ "libreoffice.desktop" ];
pdf = [ "firefox.desktop" ]; pdf = [ "firefox.desktop" ];
ebook = [ "com.github.johnfactotum.Foliate.desktop" ];
magnet = [ "transmission-gtk.desktop" ]; magnet = [ "transmission-gtk.desktop" ];
signal = [ "signal-desktop.desktop" ]; signal = [ "signal-desktop.desktop" ];
}; };
@ -69,16 +70,37 @@ let
"application/msword" "application/msword"
"application/vnd.ms-excel" "application/vnd.ms-excel"
"application/vnd.ms-powerpoint" "application/vnd.ms-powerpoint"
"application/rtf"
]; ];
pdf = [ "application/pdf" ]; pdf = [ "application/pdf" ];
ebook = [ "application/epub+zip" ];
magnet = [ "x-scheme-handler/magnet" ]; magnet = [ "x-scheme-handler/magnet" ];
signal = [ "signal-desktop.desktop" ]; signal = [ "signal-desktop.desktop" ];
}; };
associations = with lists;
listToAttrs (flatten (mapAttrsToList
(key: map (type: attrsets.nameValuePair type defaultApps."${key}"))
mimeMap));
noCalibre = let
mimeTypes = [
"application/pdf"
"application/vnd.oasis.opendocument.text"
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
"text/html"
"text/x-markdown"
];
desktopFiles = [
"calibre-ebook-edit.desktop"
"calibre-ebook-viewer.desktop"
"calibre-gui.desktop"
];
in lib.zipAttrs (map (d: lib.genAttrs mimeTypes (_: d)) desktopFiles);
in { in {
xdg.configFile."mimeapps.list".force = true; xdg.configFile."mimeapps.list".force = true;
xdg.mimeApps.enable = true; xdg.mimeApps.enable = true;
xdg.mimeApps.defaultApplications = with lists; xdg.mimeApps.associations.added = associations;
listToAttrs (flatten (mapAttrsToList (key: types: xdg.mimeApps.associations.removed = noCalibre;
map (type: attrsets.nameValuePair (type) (defaultApps."${key}")) types) xdg.mimeApps.defaultApplications = associations;
mimeMap));
} }