diff --git a/modules/wm/ags/modules/darkmode.js b/modules/wm/ags/modules/darkmode.js
index 7142641..94214e4 100644
--- a/modules/wm/ags/modules/darkmode.js
+++ b/modules/wm/ags/modules/darkmode.js
@@ -1,8 +1,20 @@
import Gio from "gi://Gio";
-import GLib from "gi://GLib?version=2.0";
-
import { SimpleToggleButton } from "../misc/menu.js";
+const interfaceXml = `
+
+
+
+
+
+
+
+
+
+
+`;
+const Darkman = Gio.DBusProxy.makeProxyWrapper(interfaceXml);
+
const theme = Variable(/** @type {"light" | "dark"} */ ("light"));
/** @param {Partial} props */
@@ -28,24 +40,18 @@ export const Toggle = ({ ...props } = {}) =>
});
function init() {
- const settings = new Gio.Settings({
- schema: "org.gnome.desktop.interface",
- });
- const initial = /** @type {"prefer-light" | "prefer-dark"}} */ (
- settings.get_value("color-scheme").get_string()[0]
+ const darkman = Darkman(
+ Gio.DBus.session,
+ "nl.whynothugo.darkman",
+ "/nl/whynothugo/darkman",
);
- theme.setValue(/** @type {any}} */ (initial.substring("prefer-".length)));
- theme.connect("changed", () => {
- settings.set_string("color-scheme", `prefer-${theme.value}`);
- settings.set_string(
- "gtk-theme",
- `adw-gtk3${theme.value === "dark" ? "-dark" : ""}`,
- );
- const conf = GLib.get_user_config_dir();
- Utils.execAsync(
- `/bin/sh -c 'ln -sf ${conf}/kitty/${theme.value}.conf ${conf}/kitty/theme.conf && pkill -USR1 kitty'`,
- ).catch(print);
+ theme.value = darkman.Mode;
+ theme.connect("changed", () => {
+ darkman.Mode = theme.value;
+ });
+ darkman.connectSignal("ModeChanged", (_proxy, _senderName, nTheme) => {
+ theme.value = nTheme[0];
});
}
init();
diff --git a/modules/wm/ags/types b/modules/wm/ags/types
index 61c5a24..523f726 120000
--- a/modules/wm/ags/types
+++ b/modules/wm/ags/types
@@ -1 +1 @@
-/nix/store/0wizyq5vnr0l5nyrvjnya732hxnk2cvw-ags-1.8.2/share/com.github.Aylur.ags/types
\ No newline at end of file
+/nix/store/bvbfvg7s1n35wv0afs7krkvppj6dx538-ags-1.8.2/share/com.github.Aylur.ags/types
\ No newline at end of file
diff --git a/modules/wm/home.nix b/modules/wm/home.nix
index b47e1e6..4e5b37c 100644
--- a/modules/wm/home.nix
+++ b/modules/wm/home.nix
@@ -17,6 +17,29 @@ in {
wallpaper
];
+ services.darkman = {
+ enable = true;
+ settings = {
+ usegeoclue = true;
+ };
+ lightModeScripts = {
+ color-scheme = "${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface color-scheme prefer-light";
+ gtk3 = "${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3";
+ kittycs = ''
+ ${pkgs.coreutils}/bin/ln -sf $XDG_CONFIG_HOME/kitty/light.conf $XDG_CONFIG_HOME/kitty/theme.conf
+ ${pkgs.procps}/bin/pkill -USR1 kitty
+ '';
+ };
+ darkModeScripts = {
+ color-scheme = "${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface color-scheme prefer-dark";
+ gtk3 = "${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-dark";
+ kittycs = ''
+ ${pkgs.coreutils}/bin/ln -sf $XDG_CONFIG_HOME/kitty/dark.conf $XDG_CONFIG_HOME/kitty/theme.conf
+ ${pkgs.procps}/bin/pkill -USR1 kitty
+ '';
+ };
+ };
+
programs.hyprlock = {
enable = true;
settings = {