From 4ebbfbebf46dc5cd84ed5c51162c08fd2ecf0542 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 4 Apr 2022 18:19:51 +0200 Subject: l: add themes.nix --- lass/2configs/themes.nix | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 lass/2configs/themes.nix (limited to 'lass/2configs/themes.nix') diff --git a/lass/2configs/themes.nix b/lass/2configs/themes.nix new file mode 100644 index 000000000..dd98b2ef2 --- /dev/null +++ b/lass/2configs/themes.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: let + + switch-theme = pkgs.writers.writeDashBin "switch-theme" '' + if test -e "/etc/themes/$1"; then + ${pkgs.rsync}/bin/rsync --chown=lass:users -a --delete "/etc/themes/$1/" /var/theme/config/ + echo "$1" > /var/theme/current_theme + chown lass:users /var/theme/current_theme + ${pkgs.procps}/bin/pkill -HUP xsettingsd + + else + echo "theme $1 not found" + fi + ''; + +in { + systemd.services.xsettingsd = { + wantedBy = [ "multi-user.target" ]; + environment.DISPLAY = ":0"; + serviceConfig = { + ExecStart = "${pkgs.xsettingsd}/bin/xsettingsd -c /var/theme/config/xsettings.conf"; + User = "lass"; + }; + }; + systemd.tmpfiles.rules = [ + "d /var/theme/ 755 lass users" + ]; + environment.systemPackages = [ + switch-theme + ]; + environment.etc = { + "themes/light/xsettings.conf".text = '' + Net/ThemeName "Adwaita" + ''; + "themes/dark/xsettings.conf".text = '' + Net/ThemeName "Adwaita-dark" + ''; + }; + system.activationScripts.theme.text = '' + if test -e /var/theme/current_theme; then + ${switch-theme}/bin/switch-theme "$(cat /var/theme/current_theme)" || + ${switch-theme}/bin/switch-theme dark + else + ${switch-theme}/bin/switch-theme dark + fi + ''; +} -- cgit v1.2.3 From 92d5eacd6d9e530c4d1ea0dec2652417b0fde78a Mon Sep 17 00:00:00 2001 From: lassulus Date: Fri, 15 Apr 2022 18:42:28 +0200 Subject: l themes: fix startup --- lass/2configs/themes.nix | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'lass/2configs/themes.nix') diff --git a/lass/2configs/themes.nix b/lass/2configs/themes.nix index dd98b2ef2..118619c1d 100644 --- a/lass/2configs/themes.nix +++ b/lass/2configs/themes.nix @@ -1,12 +1,18 @@ { config, lib, pkgs, ... }: let switch-theme = pkgs.writers.writeDashBin "switch-theme" '' - if test -e "/etc/themes/$1"; then + set -efux + if [ "$1" = toggle ]; then + if [ "$(${pkgs.coreutils}/bin/cat /var/theme/current_theme)" = dark ]; then + ${placeholder "out"}/bin/switch-theme light + else + ${placeholder "out"}/bin/switch-theme dark + fi + elif test -e "/etc/themes/$1"; then ${pkgs.rsync}/bin/rsync --chown=lass:users -a --delete "/etc/themes/$1/" /var/theme/config/ echo "$1" > /var/theme/current_theme - chown lass:users /var/theme/current_theme + ${pkgs.coreutils}/bin/chown lass:users /var/theme/current_theme ${pkgs.procps}/bin/pkill -HUP xsettingsd - else echo "theme $1 not found" fi @@ -15,6 +21,7 @@ in { systemd.services.xsettingsd = { wantedBy = [ "multi-user.target" ]; + after = [ "display-manager.service" ]; environment.DISPLAY = ":0"; serviceConfig = { ExecStart = "${pkgs.xsettingsd}/bin/xsettingsd -c /var/theme/config/xsettings.conf"; -- cgit v1.2.3