diff --git a/home/sckova/terminal/default.nix b/home/sckova/terminal/default.nix index a230d8d..e737128 100644 --- a/home/sckova/terminal/default.nix +++ b/home/sckova/terminal/default.nix @@ -1,7 +1,6 @@ { config, pkgs, - lib, ... }: { @@ -10,6 +9,7 @@ ./fish.nix ./kitty.nix ./neovim.nix + ./ytfp.nix ]; home.packages = with pkgs; [ @@ -20,7 +20,6 @@ wget ripgrep ncdu - fzf wl-clipboard rclone waypipe @@ -78,5 +77,30 @@ enableFishIntegration = true; }; lazysql.enable = true; + fzf = { + enable = true; + enableFishIntegration = true; + defaultOptions = [ + "--height 40%" + "--border" + ]; + colors = with config.scheme.withHashtag; { + bg = base00; + "bg+" = base01; + border = base03; + fg = base05; + "fg+" = base05; + header = base08; + hl = base08; + "hl+" = base08; + info = config.scheme.withHashtag.${config.colors.accent}; + label = base05; + marker = base07; + pointer = base06; + prompt = config.scheme.withHashtag.${config.colors.accent}; + "selected-bg" = base02; + spinner = base06; + }; + }; }; } diff --git a/home/sckova/terminal/ytfp.nix b/home/sckova/terminal/ytfp.nix new file mode 100644 index 0000000..07f211a --- /dev/null +++ b/home/sckova/terminal/ytfp.nix @@ -0,0 +1,50 @@ +# full credit to u/SupermarketAntique32 on reddit: +# https://www.reddit.com/r/commandline/comments/1sd26he/youtube_search_and_play_in_20_lines_of_bash/ +{ + pkgs, + ... +}: +{ + home.packages = with pkgs; [ + (writeShellApplication { + name = "ytfp"; + runtimeInputs = [ + bash + curl + fzf + yt-dlp + chafa + mpv + ]; + text = '' + #!/usr/bin/env bash + # + # `ytfp`: Search YouTube video using `fzf` and play it in `mpv` + # Require `fzf`, `yt-dlp`, `chafa`, `mpv` + # + + SEARCH_VID() { + yt-dlp "https://www.youtube.com/results?search_query=$1" \ + --flat-playlist --playlist-items 1:20 --print \ + $'%(thumbnails.0.url)s\t%(title)s\t%(channel)s\t%(view_count)s\t%(url)s' \ + | grep --extended-regexp --invert-match 'playlist|channel' + } + RENDER_VID_INFO() { + curl --silent "$1" | chafa --size=x14 --clear + echo "Title : $2" + echo "Channel : $3" + echo "Views : $4" + } + export -f SEARCH_VID RENDER_VID_INFO + + fzf --preview-window down --layout reverse --disabled --with-shell 'bash -c' \ + --bind 'start:reload:SEARCH_VID fzf' \ + --bind 'change:reload:sleep 0.3; SEARCH_VID {q} || true' \ + --bind 'load:first' \ + --delimiter '\t' --with-nth 2 \ + --preview 'RENDER_VID_INFO {1} {2} {3} {4}' \ + --bind 'enter:execute-silent(mpv {5})' + ''; + }) + ]; +}