diff --git a/systems/modules/home/wm/hyprland.nix b/systems/modules/home/wm/hyprland.nix index 8e9fdc5..eacf26e 100644 --- a/systems/modules/home/wm/hyprland.nix +++ b/systems/modules/home/wm/hyprland.nix @@ -6,8 +6,8 @@ let cfg = config.home.hyprland; + toggleRecorder = import ./scripts/toggle-recorder.nix { inherit pkgs; }; in - { options.home.hyprland.monitors = lib.mkOption { type = lib.types.listOf (lib.types.submodule { @@ -37,8 +37,8 @@ in hyprlock playerctl speedcrunch + toggleRecorder ]; - wayland.windowManager.hyprland = { enable = true; configType = "lua"; @@ -131,6 +131,7 @@ in (bind "${mod} + B" (dsp.exec_cmd "bzmenu --launcher rofi") { }) (bind "${mod} + F" (dsp.window.fullscreen) { }) (bind "${mod} + Z" (dsp.exec_cmd "hyprshot -m region") { }) + (bind "${mod} + SHIFT + Z" (dsp.exec_cmd "toggle-recorder") { }) (bind "${mod} + M" (dsp.exit) { }) (bind "${mod} + SPACE" (dsp.exec_cmd "firefox") { }) (bind "${mod} + RETURN" (dsp.exec_cmd "kitty") { }) diff --git a/systems/modules/home/wm/scripts/toggle-recorder.nix b/systems/modules/home/wm/scripts/toggle-recorder.nix new file mode 100644 index 0000000..d763282 --- /dev/null +++ b/systems/modules/home/wm/scripts/toggle-recorder.nix @@ -0,0 +1,22 @@ +{ pkgs }: + +pkgs.writeShellApplication { + name = "toggle-recorder"; + + runtimeInputs = with pkgs; [ + wf-recorder + slurp + procps + coreutils + ]; + + text = '' + if pgrep -x wf-recorder >/dev/null; then + pkill -INT wf-recorder + else + wf-recorder \ + -g "$(slurp)" \ + -f "$HOME/Videos/recording-$(date +%F-%H%M%S).mp4" + fi + ''; +} diff --git a/systems/modules/home/wm/waybar.nix b/systems/modules/home/wm/waybar.nix index d944442..0275256 100644 --- a/systems/modules/home/wm/waybar.nix +++ b/systems/modules/home/wm/waybar.nix @@ -21,12 +21,23 @@ ]; modules-right = [ + "custom/recording" "pulseaudio" "cpu" "tray" "clock" ]; + "custom/recording" = { + exec = '' + if pgrep -x wf-recorder >/dev/null; then + echo "🔴 REC" + fi + ''; + interval = 1; + tooltip = false; + }; + pulseaudio = { format = "{icon} {volume}%"; format-muted = "󰝟 muted";