From 9f42237e25f82264371e25a92483ff070fd0bda8 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Fri, 1 Apr 2022 09:40:31 +0200 Subject: [PATCH] Add screen recording "setup" Change i3 config to match current hardware setup. Add custom dmenu script to start and stop recording. Move internal dmenu scripts into local variables. --- home/files/i3 | 2 +- overlays/dmenu-custom-scripts/default.nix | 68 +++++++++++++------ .../start-videorecording.sh | 17 +++++ 3 files changed, 67 insertions(+), 20 deletions(-) create mode 100644 overlays/dmenu-custom-scripts/start-videorecording.sh diff --git a/home/files/i3 b/home/files/i3 index 5345889..099ec52 100644 --- a/home/files/i3 +++ b/home/files/i3 @@ -216,7 +216,7 @@ mode "$mode_setup" { bindsym v exec xrandr --auto --output DP2-1 --primary --scale 1x1 --mode 2560x1440 --output eDP1 --mode 1920x1080 --left-of DP2-1 && setxkbmap -option ctrl:nocaps && setxkbmap -option compose:ralt && setxkbmap -option numpad:mac # bindsym h exec xrandr --output eDP1 --off --output DP1 --scale 1x1 --mode 2560x1440 && setxkbmap -option ctrl:nocaps && setxkbmap -option compose:ralt && setxkbmap -option numpad:mac bindsym i exec xrandr --output DP1 --off --output DP2 --off --output eDP1 --scale 1x1 --mode 1920x1080 && xbacklight -set 10 - bindsym r exec xrandr --output DP1 --primary --mode 1920x1080 --output eDP1 --mode 1920x1080 --left-of DP1 && xbacklight -set 100; + bindsym r exec xrandr --output DP2-1 --primary --mode 1920x1080 --output eDP1 --mode 1920x1080 --left-of DP2-1 && xbacklight -set 100; # Mirror # xrandr --output eDP1 --rate 60 --mode 1920x1080 --fb 1920x1080 --output DP1 --mode 1920x1080 --same-as eDP1 diff --git a/overlays/dmenu-custom-scripts/default.nix b/overlays/dmenu-custom-scripts/default.nix index 15ef236..58088e2 100644 --- a/overlays/dmenu-custom-scripts/default.nix +++ b/overlays/dmenu-custom-scripts/default.nix @@ -1,4 +1,5 @@ -self: super: { +self: super: +let # Still has many references to Ubuntu system tools. # Will migrate step by step and update references. @@ -96,18 +97,41 @@ self: super: { text = builtins.readFile ./xdebug.sh; }; + dmenu-custom-scripts-start-videorecording = super.pkgs.writeShellApplication { + name = "dmenu-custom-scripts-start-videorecording"; + + runtimeInputs = [ + super.pkgs.dmenu + ]; + + text = builtins.readFile ./start-videorecording.sh; + }; + + dmenu-custom-scripts-stop-videorecording = super.pkgs.writeShellApplication { + name = "dmenu-custom-scripts-stop-videorecording"; + + text = '' + kill "$(cat /tmp/runningRecording.txt)" + rm /tmp/runningRecording.txt + notify-send "Stoped recording" + ''; + }; + +in { dmenu-custom-scripts = super.pkgs.writeShellApplication { name = "dmenu_selection"; # TODO: Find way to remove the nix prefixes from "files" text = '' scripts=() - scripts+=("${super.pkgs.dmenu-custom-scripts-calc.name}") - scripts+=("${super.pkgs.dmenu-custom-scripts-notifications.name}") - scripts+=("${super.pkgs.dmenu-custom-scripts-system.name}") - scripts+=("${super.pkgs.dmenu-custom-scripts-docs-php.name}") - scripts+=("${super.pkgs.dmenu-custom-scripts-php-version.name}") - scripts+=("${super.pkgs.dmenu-custom-scripts-xdebug.name}") + scripts+=("${dmenu-custom-scripts-calc.name}") + scripts+=("${dmenu-custom-scripts-notifications.name}") + scripts+=("${dmenu-custom-scripts-system.name}") + scripts+=("${dmenu-custom-scripts-php-version.name}") + scripts+=("${dmenu-custom-scripts-docs-php.name}") + scripts+=("${dmenu-custom-scripts-xdebug.name}") + scripts+=("${dmenu-custom-scripts-start-videorecording.name}") + scripts+=("${dmenu-custom-scripts-stop-videorecording.name}") OIFS="$IFS" IFS=$'\n' scriptsString="''${scripts[*]}" @@ -116,23 +140,29 @@ self: super: { action=$(echo -e "$scriptsString" | dmenu -i -l 20) case "$action" in - "${super.pkgs.dmenu-custom-scripts-calc.name}") - bash "${super.pkgs.dmenu-custom-scripts-calc}/bin/${super.pkgs.dmenu-custom-scripts-calc.name}" || exit 0 + "${dmenu-custom-scripts-calc.name}") + bash "${dmenu-custom-scripts-calc}/bin/${dmenu-custom-scripts-calc.name}" || exit 0 ;; - "${super.pkgs.dmenu-custom-scripts-notifications.name}") - bash "${super.pkgs.dmenu-custom-scripts-notifications}/bin/${super.pkgs.dmenu-custom-scripts-notifications.name}" || exit 0 + "${dmenu-custom-scripts-notifications.name}") + bash "${dmenu-custom-scripts-notifications}/bin/${dmenu-custom-scripts-notifications.name}" || exit 0 ;; - "${super.pkgs.dmenu-custom-scripts-system.name}") - bash "${super.pkgs.dmenu-custom-scripts-system}/bin/${super.pkgs.dmenu-custom-scripts-system.name}" || exit 0 + "${dmenu-custom-scripts-system.name}") + bash "${dmenu-custom-scripts-system}/bin/${dmenu-custom-scripts-system.name}" || exit 0 ;; - "${super.pkgs.dmenu-custom-scripts-docs-php.name}") - bash "${super.pkgs.dmenu-custom-scripts-docs-php}/bin/${super.pkgs.dmenu-custom-scripts-docs-php.name}" || exit 0 + "${dmenu-custom-scripts-docs-php.name}") + bash "${dmenu-custom-scripts-docs-php}/bin/${dmenu-custom-scripts-docs-php.name}" || exit 0 ;; - "${super.pkgs.dmenu-custom-scripts-php-version.name}") - bash "${super.pkgs.dmenu-custom-scripts-php-version}/bin/${super.pkgs.dmenu-custom-scripts-php-version.name}" || exit 0 + "${dmenu-custom-scripts-php-version.name}") + bash "${dmenu-custom-scripts-php-version}/bin/${dmenu-custom-scripts-php-version.name}" || exit 0 ;; - "${super.pkgs.dmenu-custom-scripts-xdebug.name}") - bash "${super.pkgs.dmenu-custom-scripts-xdebug}/bin/${super.pkgs.dmenu-custom-scripts-xdebug.name}" || exit 0 + "${dmenu-custom-scripts-xdebug.name}") + bash "${dmenu-custom-scripts-xdebug}/bin/${dmenu-custom-scripts-xdebug.name}" || exit 0 + ;; + "${dmenu-custom-scripts-start-videorecording.name}") + bash "${dmenu-custom-scripts-start-videorecording}/bin/${dmenu-custom-scripts-start-videorecording.name}" || exit 0 + ;; + "${dmenu-custom-scripts-stop-videorecording.name}") + bash "${dmenu-custom-scripts-stop-videorecording}/bin/${dmenu-custom-scripts-stop-videorecording.name}" || exit 0 ;; *) exit 0 diff --git a/overlays/dmenu-custom-scripts/start-videorecording.sh b/overlays/dmenu-custom-scripts/start-videorecording.sh new file mode 100644 index 0000000..4d492fb --- /dev/null +++ b/overlays/dmenu-custom-scripts/start-videorecording.sh @@ -0,0 +1,17 @@ +availableDevices=$(pacmd list-sources | grep 'name:' | grep 'input' | sed 's/^.*name: $//') +audioDevice=$(echo -e "$availableDevices" | dmenu -i -l 5 -p "Select Audio Input") + +if [ -z "$audioDevice" ]; then + exit 1; +fi + +recordingFile="/home/daniels/Videos/Recordings/output-$(date +'%F_%T').mkv" +ffmpeg -video_size 1920x1080 -framerate 60 -f x11grab -i :0+1920x1080 -f pulse -i "$audioDevice" "$recordingFile" & +sleep 1 +if [ -f "$recordingFile" ]; +then + recordingPid=$! + echo "$recordingPid" > /tmp/runningRecording.txt +else + notify-send -u critical "Could not start recording" "Check screen setup?" +fi