summaryrefslogtreecommitdiff
path: root/common/modules/dwm/scripts.nix
blob: 5b5268627b744ecdfc10a5ee6f8ba1f6575a762b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
homeManager:
{ pkgs, lib, ... }:
let
  sync_dms = pkgs.writeShellScriptBin "sync_dms" ''
    jq=${pkgs.jq}/bin/jq
    CONFIG_FILE=$HOME/.local/state/DankMaterialShell/session.json

    get_val() { $jq -r ".$1" "$CONFIG_FILE"; }
    set_val() {
      local tmp=$(mktemp)
      $jq --arg val "$2" ".$1 = \$val" "$CONFIG_FILE" > "$tmp" && mv "$tmp" "$CONFIG_FILE"
    }


    function sync_all {
      ISNIGHTMODE=$(get_val "nightModeEnabled")
      NIGHTMODETEMP=$(get_val "nightModeTemperature")
      WALL=$(get_val "wallpaperPath")
      ${pkgs.xwallpaper}/bin/xwallpaper --zoom "$WALL"

      if [[ "$ISNIGHTMODE" == "true" ]]; then
        echo "bitch $ISNIGHTMODE"
        ${pkgs.redshift}/bin/redshift -o "$NIGHTMODETEMP"
      else
        ${pkgs.redshift}/bin/redshift -x
      fi
    }

    function dmenu_settings {
      ISNIGHTMODE=$(get_val "nightModeEnabled")
      options="NightMode (Currently $ISNIGHTMODE)\nSync Now"

      choice=$(echo -e "$options" | dmenu -p "Settings:")

      case "$choice" in
        *"NightMode"*)
          if [[ "$ISNIGHTMODE" == "true" ]]; then
            set_val "nightModeEnabled" "false"
          else
            set_val "nightModeEnabled" "true"
          fi
          sync_all
          ;;
        "Sync Now")
          sync_all
          ;;
      esac
    }

    case "$1" in
      settings) dmenu_settings ;;
      *)        sync_all ;;
    esac
  '';
  logout_dmenu = pkgs.writeShellScriptBin "logout_dmenu" ''
    options="Lock\nLogout\nReboot\nShutdown"

    choice=$(echo -e "$options" | dmenu -p "System:")

    case "$choice" in
      Lock)     slock ;;
      Logout)   pkill dwm ;;
      Reboot)   reboot ;;
      Shutdown) poweroff ;;
      *)        exit 1 ;;
    esac
  '';
in
{
  config = lib.mkIf homeManager (
    lib.optionalAttrs homeManager {
      home.packages = with pkgs; [
        sync_dms
        logout_dmenu
      ];
    }
  );
}