diff --git a/hosts/chernobog/modules/recording.nix b/hosts/chernobog/modules/recording.nix new file mode 100644 index 0000000..c634a30 --- /dev/null +++ b/hosts/chernobog/modules/recording.nix @@ -0,0 +1,3 @@ +{pkgs, ...}: { + programs.gpu-screen-recorder.enable = true; +} diff --git a/users/mayer/default.nix b/users/mayer/default.nix index fdaa767..52ad560 100644 --- a/users/mayer/default.nix +++ b/users/mayer/default.nix @@ -112,6 +112,7 @@ in [ "settings" "niri" + "gsr" "foot" ] # cli stuff diff --git a/users/modules/gsr/default.nix b/users/modules/gsr/default.nix new file mode 100644 index 0000000..a54e5c1 --- /dev/null +++ b/users/modules/gsr/default.nix @@ -0,0 +1,19 @@ +{config, lib, pkgs, ...}: +let + shotDir = "${config.home.homeDirectory}/shots"; +in +{ + systemd.user.services.gsr-replay = { + Unit = { + Description = "gpu screen recorder replay"; + }; + Service = { + ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p ${shotDir}"; + ExecStart = "${pkgs.gpu-screen-recorder}/bin/gpu-screen-recorder -w screen -f 60 -a default_output -k av1 -c mp4 -bm cbr -q 40000 -r 45 -o ${shotDir}"; + Restart = "on-failure"; + RestartSec = 5; + KillSignal = "SIGKILL"; + SuccessExitStatus = "SIGKILL"; + }; + }; +} diff --git a/users/modules/gsr/save-replay.sh b/users/modules/gsr/save-replay.sh new file mode 100644 index 0000000..4056195 --- /dev/null +++ b/users/modules/gsr/save-replay.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +pkill -f -SIGUSR1 gpu-screen-recorder && sleep 0.5 && systemctl --user restart gsr-replay.service && notify-send -t 1500 -u low -- "gpu screen recorder" "replay saved" \ No newline at end of file diff --git a/users/modules/niri/config.kdl b/users/modules/niri/config.kdl index d4f0ad7..cc1a3e3 100644 --- a/users/modules/niri/config.kdl +++ b/users/modules/niri/config.kdl @@ -114,6 +114,7 @@ layout { } spawn-at-startup "swaybg" "-i" "%%wallpaper%%" +spawn-at-startup "systemctl" "--user" "start" "gsr-replay.service" hotkey-overlay { // skip-at-startup @@ -170,6 +171,7 @@ 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%%"; } 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 ebc4072..8804e49 100644 --- a/users/modules/niri/default.nix +++ b/users/modules/niri/default.nix @@ -22,6 +22,7 @@ in wallpaper = toString ../../mayer/wallpaper.png; clipboard-upload = toString ./uploader.nu; clipboard-select = toString ./clipboard.nu; + gsr-replay-save = toString ../gsr/save-replay.sh; }; in l.replaceStrings