From 1f189f7c633bd67d3bed91143ad21fa5954c1a1d Mon Sep 17 00:00:00 2001 From: atagen Date: Fri, 17 Feb 2023 14:35:03 +1100 Subject: [PATCH] hyprland sys76 hooks --- .../hyprland-system76-scheduler-hook.sh | 13 +++++ ...yprland-system76-scheduler-integration.nix | 47 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100755 system/syspkgs/hyprland-system76-scheduler-hook.sh create mode 100644 system/syspkgs/hyprland-system76-scheduler-integration.nix diff --git a/system/syspkgs/hyprland-system76-scheduler-hook.sh b/system/syspkgs/hyprland-system76-scheduler-hook.sh new file mode 100755 index 0000000..b85564e --- /dev/null +++ b/system/syspkgs/hyprland-system76-scheduler-hook.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +socat - UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock | +while read line +do + if [[ "$line" == activewindow* ]]; then + pid="$(hyprctl activewindow | rg pid | cut -d' ' -f2)" + if [[ -n $pid ]]; then + dbus-send --system --dest=com.system76.Scheduler --type=method_call /com/system76/Scheduler com.system76.Scheduler.SetForegroundProcess uint32:$pid + fi + pid="" + fi +done \ No newline at end of file diff --git a/system/syspkgs/hyprland-system76-scheduler-integration.nix b/system/syspkgs/hyprland-system76-scheduler-integration.nix new file mode 100644 index 0000000..2da3324 --- /dev/null +++ b/system/syspkgs/hyprland-system76-scheduler-integration.nix @@ -0,0 +1,47 @@ + +{ lib, pkgs, stdenv, hyprland, ripgrep, socat, dbus, ... }: + +stdenv.mkDerivation rec { + pname = "hyprland-system76-scheduler-integration"; + version = "0.1.0"; + + nativeBuildInputs = [ + socat + dbus + hyprland + ripgrep + ]; + + dontUnpack = "true"; + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + + cat < $out/bin/hyprland-system76-scheduler-hook.sh +#!${pkgs.bash}/bin/bash +echo "opening socket.." +${pkgs.socat}/bin/socat -u UNIX-CLIENT:/tmp/hypr/\''$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock STDOUT | +while read line; do + if [[ "\''$line" == activewindow* ]]; then + echo "got \''$line." + pid="\''$(${pkgs.hyprland}/bin/hyprctl activewindow | ${pkgs.ripgrep}/bin/rg pid | ${pkgs.coreutils}/bin/cut -d' ' -f2)" + if [[ -n \''$pid ]]; then + echo "sending \''$pid!" + ${pkgs.dbus}/bin/dbus-send --system --dest=com.system76.Scheduler --type=method_call /com/system76/Scheduler com.system76.Scheduler.SetForegroundProcess uint32:\''$pid + fi + pid="" + fi + echo "continuing.." +done +echo "finished." +EOF + chmod +x $out/bin/hyprland-system76-scheduler-hook.sh + + runHook postInstall + ''; + + +}