aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar@proton.me>2026-03-20 02:19:30 +0530
committerArpit Chakladar <arpitchakladar@proton.me>2026-03-20 02:19:30 +0530
commit805501fb3f0cb06816871fdcad5f53445f48ac95 (patch)
treea3eb37ad341437b6c8eb838aa3422e8d493842ab /modules
parent1bf29502faf018284ff603c4d31970415742bec1 (diff)
downloadhome-manager-config-805501fb3f0cb06816871fdcad5f53445f48ac95.tar.gz
home-manager-config-805501fb3f0cb06816871fdcad5f53445f48ac95.zip
Added screen capture with ffmpeg
Diffstat (limited to 'modules')
-rw-r--r--modules/desktop/i3/keybindings.nix18
-rw-r--r--modules/tools/default.nix1
-rw-r--r--modules/tools/ffmpeg/default.nix18
3 files changed, 37 insertions, 0 deletions
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
+ ];
+ };
+}