{ config, lib, pkgs, ... }: with lib; let cfg = config.modules.software.system.mpv; in { options.modules.software.system.mpv = { enable = mkEnableOption "Enable mpv, a lightweight video player"; }; config = mkIf cfg.enable { hm.programs.mpv = { enable = true; config = { hwdec = "auto"; keep-open = "yes"; no-keepaspect-window = ""; # tiling doesn't play nice.. osc = "no"; border = "no"; }; scriptOpts = { visualizer = { mode = "noalbumart"; }; modernz = with config.scheme.withHashtag; { bottomhover = "no"; hover_effect = ""; # these are weird lookin seekbarfg_color = "${base0D}"; # blue is a sane default }; }; scripts = with pkgs.mpvScripts; [ mpris modernz thumbfast visualizer ]; }; # https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types/Common_types hm.xdg.mimeApps.defaultApplications = { "audio/3gpp" = [ "mpv.desktop" ]; # 3gp "audio/3gpp2" = [ "mpv.desktop" ]; # 3g2 "audio/aac" = [ "mpv.desktop" ]; # `midi`: unsupported "audio/mpeg" = [ "mpv.desktop" ]; # mp3 "audio/ogg" = [ "mpv.desktop" ]; "audio/wav" = [ "mpv.desktop" ]; "audio/webm" = [ "mpv.desktop" ]; # weba "video/3gpp" = [ "mpv.desktop" ]; # 3gp "video/3gpp2" = [ "mpv.desktop" ]; # 3g2 "video/x-msvideo" = [ "mpv.desktop" ]; # avi "video/x-matroska" = [ "mpv.desktop" ]; # mkv "video/quicktime" = [ "mpv.desktop" ]; # mov "video/mp4" = [ "mpv.desktop" ]; "video/mpeg" = [ "mpv.desktop" ]; "video/ogg" = [ "mpv.desktop" ]; # ogv # `ts`: not as commonly used as typescript "video/webm" = [ "mpv.desktop" ]; }; }; }