diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/desktop/i3/keybindings.nix | 18 | ||||
| -rw-r--r-- | modules/tools/default.nix | 1 | ||||
| -rw-r--r-- | modules/tools/ffmpeg/default.nix | 18 |
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 + ]; + }; +} |
