diff --git a/users/modules/gsr/record-area.sh b/users/modules/gsr/record-area.sh new file mode 100644 index 0000000..2a01f59 --- /dev/null +++ b/users/modules/gsr/record-area.sh @@ -0,0 +1,12 @@ +#!/bin/sh -e + +TMPFILE="/tmp/gsr-clip" +SHOT_DIR="$HOME/shots" +mkdir -p "$SHOT_DIR" + +OUTFILE="$SHOT_DIR/$(date '+%Y-%m-%d_%H-%M-%S').mp4" +pkill -f -SIGINT gpu-screen-recorder && sleep 0.3 && mv -f $TMPFILE $OUTFILE && notify-send -t 1500 -u low -- "gpu screen recorder" "recording saved" && exit 0 + +AREA=$(slurp -d -f "%wx%h+%x+%y") || exit 0 +gpu-screen-recorder -w "$AREA" -f 60 -a default_output -k av1 -c mp4 -bm cbr -q 16000 -o "$TMPFILE" > /tmp/gsr-screen.log 2>&1 & +notify-send -t 1500 -u low -- "gpu screen recorder" "recording area" diff --git a/users/modules/gsr/record-screen.sh b/users/modules/gsr/record-screen.sh new file mode 100644 index 0000000..c9083e1 --- /dev/null +++ b/users/modules/gsr/record-screen.sh @@ -0,0 +1,12 @@ +#!/bin/sh -e +# +TMPFILE="/tmp/gsr-clip" +SHOT_DIR="$HOME/shots" +mkdir -p "$SHOT_DIR" + +OUTFILE="$SHOT_DIR/$(date '+%Y-%m-%d_%H-%M-%S').mp4" +pkill -f -SIGINT gpu-screen-recorder && sleep 0.3 && mv -f $TMPFILE $OUTFILE && notify-send -t 1500 -u low -- "gpu screen recorder" "recording saved" && exit 0 + +OUTPUT=$(niri msg --json focused-output | jq -r '.name') +gpu-screen-recorder -w "$OUTPUT" -f 60 -a default_output -k av1 -c mp4 -bm cbr -q 16000 -o "$TMPFILE" > /tmp/gsr-screen.log 2>&1 & +notify-send -t 1500 -u low -- "gpu screen recorder" "recording area" diff --git a/users/modules/niri/config.kdl b/users/modules/niri/config.kdl index cc1a3e3..5916d5b 100644 --- a/users/modules/niri/config.kdl +++ b/users/modules/niri/config.kdl @@ -114,7 +114,7 @@ layout { } spawn-at-startup "swaybg" "-i" "%%wallpaper%%" -spawn-at-startup "systemctl" "--user" "start" "gsr-replay.service" +// spawn-at-startup "systemctl" "--user" "start" "gsr-replay.service" hotkey-overlay { // skip-at-startup @@ -171,7 +171,9 @@ binds { Alt+S hotkey-overlay-title="screenshot screen" { screenshot-screen; } Alt+Shift+S hotkey-overlay-title="screenshot" { screenshot; } - Alt+Shift+R hotkey-overlay-title="save replay" { spawn-sh "sh %%gsr-replay-save%%"; } + // Alt+Shift+R hotkey-overlay-title="save replay" { spawn-sh "sh %%gsr-replay-save%%"; } + Alt+R hotkey-overlay-title="record screen" { spawn-sh "sh %%gsr-record-screen%%"; } + Alt+Shift+R hotkey-overlay-title="record area" { spawn-sh "sh %%gsr-record-area%%"; } XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; } XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } diff --git a/users/modules/niri/default.nix b/users/modules/niri/default.nix index 8804e49..7124b8f 100644 --- a/users/modules/niri/default.nix +++ b/users/modules/niri/default.nix @@ -15,7 +15,7 @@ in ../clipman ]; - home.packages = with pkgs; [file libnotify clipman niri xwayland-satellite brightnessctl swaybg]; + home.packages = with pkgs; [file libnotify clipman niri xwayland-satellite brightnessctl swaybg slurp jq]; xdg.configFile."niri/config.kdl".text = let replace = { @@ -23,6 +23,8 @@ in clipboard-upload = toString ./uploader.nu; clipboard-select = toString ./clipboard.nu; gsr-replay-save = toString ../gsr/save-replay.sh; + gsr-record-screen = toString ../gsr/record-screen.sh; + gsr-record-area = toString ../gsr/record-area.sh; }; in l.replaceStrings