81 lines
3.9 KiB
Nix
81 lines
3.9 KiB
Nix
{ pkgs, ... }@all: with all; {
|
|
programs.mpv = {
|
|
enable = true;
|
|
package = pkgs.mpv;
|
|
config = {
|
|
# osc = false; # Disables the on-screen controller (seekbar, volume, etc.)
|
|
# osd-bar = false; # Disables the on-screen display progress bar
|
|
demuxer-max-back-bytes = 4294967296; # Sets the maximum number of bytes to buffer for seeking backwards
|
|
demuxer-max-bytes = 4294967296; # Sets the maximum number of bytes to buffer for seeking forwards
|
|
interpolation = true; # Enables frame interpolation for smoother playback
|
|
video-sync = "display-resample"; # Synchronizes video playback to the display's refresh rate
|
|
sub-visibility = true; # Hides subtitles by default
|
|
sub-auto = "fuzzy"; # Automatically loads subtitles if their filename is similar to the video file
|
|
sub-font = rice.font.base.name;
|
|
# sub-blur = 10; # this blurs the whole thing, text aswell
|
|
sub-color = rice.color.accent.bright;
|
|
sub-back-color = "${rice.color.background}${rice.lib.float-to-drune 0.8}"; # does not seem to work
|
|
# sub-border-size = 0;
|
|
sub-border-style = "opaque-box";
|
|
background-color = "${rice.color.background}"; # transparency breaks blur on hyprland sometimes, so just rgb
|
|
alang = "en,eng,de,ger"; # Sets preferred audio languages in order
|
|
slang = "en,eng,de,ger"; # Sets preferred subtitle languages in order
|
|
vlang = "en,eng,de,ger"; # Sets preferred video languages in order
|
|
save-position-on-quit = true; # Saves the playback position when quitting
|
|
ignore-path-in-watch-later-config = true; # Ignores the path in the watch-later configuration
|
|
ytdl-format = "bestvideo[height<=?1080]+bestaudio/best"; # Sets the format for downloading YouTube videos
|
|
vo = pkgs.lib.mkIf hyper.nvidia.enable "gpu";
|
|
hwdec = if hyper.nvidia.enable then "no" else "no"; # bugged
|
|
};
|
|
scripts = with pkgs.mpvScripts; [
|
|
mpris # use media keys
|
|
thumbfast # thumbnails on timeline hover
|
|
# uosc # custom ui
|
|
sponsorblock
|
|
];
|
|
bindings = {
|
|
"O" = ''no-osd cycle-values glsl-shaders "~~/shaders/invert.glsl" ""; show-text "Invert Shader"'';
|
|
# "tab" = ''script-binding uosc/toggle-ui'';
|
|
# "space" = ''cycle pause; script-binding uosc/flash-pause-indicator'';
|
|
# "right" = ''seek 5'';
|
|
# "left" = ''seek -5'';
|
|
# "shift+right" = ''seek 30; script-binding uosc/flash-timeline'';
|
|
# "shift+left" = ''seek -30; script-binding uosc/flash-timeline'';
|
|
# "m" = ''no-osd cycle mute; script-binding uosc/flash-volume'';
|
|
# "up" = ''no-osd add volume 10; script-binding uosc/flash-volume'';
|
|
# "down" = ''no-osd add volume -10; script-binding uosc/flash-volume'';
|
|
# "[" = ''no-osd add speed -0.25; script-binding uosc/flash-speed'';
|
|
# "]" = ''no-osd add speed 0.25; script-binding uosc/flash-speed'';
|
|
# "\\" = ''no-osd set speed 1; script-binding uosc/flash-speed'';
|
|
# ">" = ''script-binding uosc/next; script-message-to uosc flash-elements top_bar,timeline'';
|
|
# "<" = ''script-binding uosc/prev; script-message-to uosc flash-elements top_bar,timeline>'';
|
|
};
|
|
scriptOpts = {
|
|
thumbfast = {
|
|
spawn_first = true;
|
|
network = true;
|
|
hwdec = true;
|
|
};
|
|
uosc = {
|
|
timeline_size = 25;
|
|
timeline_persistency = "paused,audio";
|
|
progress = "always";
|
|
progress_size = 4;
|
|
progress_line_width = 4;
|
|
controls = "subtitles,<has_many_audio>audio,<has_many_video>video,<has_many_edition>editions,<stream>stream-quality";
|
|
top_bar = "never";
|
|
refine = "text_width";
|
|
};
|
|
};
|
|
};
|
|
xdg.configFile."mpv/shaders/invert.glsl".text = /* glsl */ ''
|
|
//!HOOK LUMA
|
|
//!BIND HOOKED
|
|
vec4 hook()
|
|
{
|
|
float luma = LUMA_texOff(0).x;
|
|
return vec4(1.0 - luma);
|
|
}
|
|
'';
|
|
}
|