From 3ab254aff4ea57c4c879a0410f1b3ceadca15b7a Mon Sep 17 00:00:00 2001
From: Gabriel Fontes <eu@misterio.me>
Date: Fri, 9 Jul 2021 00:24:21 -0300
Subject: [PATCH] qutebrowser: add onChange ipc reloading

---
 modules/programs/qutebrowser.nix | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/modules/programs/qutebrowser.nix b/modules/programs/qutebrowser.nix
index 8d4868fbb..2178997fe 100644
--- a/modules/programs/qutebrowser.nix
+++ b/modules/programs/qutebrowser.nix
@@ -306,7 +306,25 @@ in {
       };
 
     xdg.configFile."qutebrowser/config.py" =
-      mkIf pkgs.stdenv.hostPlatform.isLinux { text = qutebrowserConfig; };
+      mkIf pkgs.stdenv.hostPlatform.isLinux {
+        text = qutebrowserConfig;
+        onChange = ''
+          hash="$(echo -n $USER | md5sum | cut -d' ' -f1)"
+          socket="''${XDG_RUNTIME_DIR:-/run/user/$UID}/qutebrowser/ipc-$hash"
+          if [ -S $socket ]; then
+            echo "Reloading qutebrowser"
+            command=${
+              escapeShellArg (builtins.toJSON {
+                args = [ ":config-source" ];
+                target_arg = null;
+                protocol_version = 1;
+              })
+            }
+            $DRY_RUN_CMD echo $command | ${pkgs.socat}/bin/socat -lf /dev/null - UNIX-CONNECT:$socket
+          fi
+          unset hash socket command
+        '';
+      };
 
     xdg.configFile."qutebrowser/quickmarks" =
       mkIf (cfg.quickmarks != { } && pkgs.stdenv.hostPlatform.isLinux) {