summaryrefslogtreecommitdiff
path: root/home-modules/desktop/wayland/waybar.nix
blob: 5f3c532fe26f8259792f474aeec8f56fc0c0740e (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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
{pkgs, hostconfig, lib, config,...}: {
  options.homeprogs.waybar.enable = lib.mkEnableOption "Enable waybar";

  config = lib.mkIf config.homeprogs.waybar.enable {
    programs.waybar = { 
      enable = true; 
      settings = [{
        layer = "top";
        position = "top";
        height = 30; 
        spacing = 6; 
        modules-left = [
          "hyprland/workspaces" 
          "hyprland/window"
        ]; 

        modules-center = [
          "clock"
          "hyprland/language"
          "tray"
          "battery"
        ];

        modules-right = [
          "idle_inhibitor"
          "wireplumber"
          "network"
          "cpu"
          "memory"
          "disk"
          "temperature"
          "backlight"
        ];
        wireplumber = {
            scroll-step = 1; #%, can be a float
            format = "{volume}% ";
            format-muted = "Muted";
            on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
            on-click-right =  "pavucontrol";  
        };

        network = {
            # interface = "wlp2*"; # (Optional) To force the use of this interface
            format-wifi = "({signalStrength}%) ";
            format-ethernet = "{ifname} ";
            tooltip-format = "{ifname} via {gwaddr} ";
            format-linked = "{ifname} (No IP) ";
            format-disconnected = "Disconnected ⚠";
            format-alt= "{essid}: {ipaddr}/{cidr}";
        };

       "hyprland/workspaces" = {
           all-outputs = false;
           active-only = false;
           format = "{name}";
           format-icons = {
               urgent = "";
               focused = "";
               default = "";
           };
       };
      
      "hyprland/window" = {
        max-length = 200;
        separate-outputs = true;
      };


      keyboard-state = {
          numlock = false;
          format = "{name} {icon}";
          format-icons = {
              locked = "";
              unlocked = "";
          };
      };
      idle_inhibitor = {
          format = "{icon}";
          format-icons = {
              activated = "";
              deactivated = "";
          };
      };
      tray = {
          icon-size = 21;
          spacing = 10;
      };
      clock = {
          timezone = "Europe/Amsterdam";
          tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
          format-alt = "{:%Y-%m-%d}";
      };
      cpu = {
          format = "{usage}% ";
          tooltip = false;
      };
      memory = {
          format = "{}% ";
      };
      temperature = {
          thermal-zone = 1;
          # hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input";
          critical-threshold = 80;
          # format-critical = "{temperatureC}°C {icon}";
          format = "{temperatureC}°C {icon}";
          format-icons = ["" "" ""];
      };
      "backlight" = {
          # device = "acpi_video1";
          format = "{percent}{icon}";
          format-icons = ["" "" "" "" "" "" "" "" ""];
      };
        battery = {
            states = {
                # good = 95;
                warning = 30;
                critical = 15;
            };
            format = "{capacity}% {icon}";
            format-charging = "{capacity}% ";
            format-plugged = "{capacity}% ";
            format-alt = "{time} {icon}";
            # format-good = ""; // An empty format will hide the module
            # format-full = "";
            format-icons = ["" "" "" "" ""];
        };
      }]; 
      style = ./waybar.css;
    }; 
  };
}