From 805501fb3f0cb06816871fdcad5f53445f48ac95 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Fri, 20 Mar 2026 02:19:30 +0530 Subject: Added screen capture with ffmpeg --- modules/desktop/i3/keybindings.nix | 18 ++++++++++++++++++ modules/tools/default.nix | 1 + modules/tools/ffmpeg/default.nix | 18 ++++++++++++++++++ users/arpit.nix | 1 + 4 files changed, 38 insertions(+) create mode 100644 modules/tools/ffmpeg/default.nix diff --git a/modules/desktop/i3/keybindings.nix b/modules/desktop/i3/keybindings.nix index 9d6e668..5b16a05 100644 --- a/modules/desktop/i3/keybindings.nix +++ b/modules/desktop/i3/keybindings.nix @@ -84,4 +84,22 @@ in lib.mkIf config.tools.maim.enable "exec \"${lib.getExe pkgs.maim} -s | xclip -selection clipboard -t image/png\""; "${mod}+Shift+p" = lib.mkIf config.tools.maim.enable "exec \"mkdir -p ~/Pictures/Screenshots && ${lib.getExe pkgs.maim} -s ~/Pictures/Screenshots/screenshot-$(date +%Y%m%d-%H%M%S).png\""; + + # --- Screen Recordings --- + "${mod}+Mod1+r" = lib.mkIf config.tools.ffmpeg.enable ( + let + pidFile = "/tmp/ffmpeg-screenrecord.pid"; + outDir = "~/Videos/Recordings"; + in + "exec \"" + + "if [ -f ${pidFile} ]; then " + + "kill $(cat ${pidFile}) && rm ${pidFile}; " + + "else " + + "mkdir -p ${outDir} && " + + "${lib.getExe pkgs.ffmpeg-full} -f x11grab -i $DISPLAY " + + "-framerate 30 -c:v libx264 -preset ultrafast -crf 23 " + + "${outDir}/recording-$(date +%Y%m%d-%H%M%S).mp4 " + + "& echo $! > ${pidFile}; " + + "fi\"" + ); } diff --git a/modules/tools/default.nix b/modules/tools/default.nix index f4af918..4708803 100644 --- a/modules/tools/default.nix +++ b/modules/tools/default.nix @@ -11,6 +11,7 @@ ./devenv ./fastfetch ./feh + ./ffmpeg ./fzf ./git ./htop diff --git a/modules/tools/ffmpeg/default.nix b/modules/tools/ffmpeg/default.nix new file mode 100644 index 0000000..1add1d3 --- /dev/null +++ b/modules/tools/ffmpeg/default.nix @@ -0,0 +1,18 @@ +{ + config, + pkgs, + lib, + ... +}: + +{ + options.tools.ffmpeg = { + enable = lib.mkEnableOption "Enables ffmpeg."; + }; + + config = lib.mkIf config.tools.ffmpeg.enable { + home.packages = with pkgs; [ + ffmpeg-full + ]; + }; +} diff --git a/users/arpit.nix b/users/arpit.nix index 78def6d..fd5b57e 100644 --- a/users/arpit.nix +++ b/users/arpit.nix @@ -20,6 +20,7 @@ tools.devenv.enable = true; tools.fastfetch.enable = true; tools.feh.enable = true; + tools.ffmpeg.enable = true; tools.fzf.enable = true; tools.git.enable = true; tools.git.username = "Arpit Chakladar"; -- cgit v1.2.3