aboutsummaryrefslogtreecommitdiff
path: root/modules/hosts/desktop/labwc/sfwbar.nix
blob: 7021374b35c801f2a648cec9c3959cd249a2221c (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
132
133
134
135
136
137
138
139
140
141
142
{
  config,
  username,
  pkgs,
  lib,
  ...
}:

let
  inherit (lib) mkEnableOption mkIf;
  cfg = config.nx.desktop.sfwbar;
in
{
  options.nx.desktop.sfwbar.enable = mkEnableOption "Enable sfwbar" // {
    default = config.nx.desktop.labwc.enable;
  };

  config = mkIf cfg.enable {
    home-manager.users.${username} = {
      home.packages = with pkgs; [
        sfwbar
        gtk-layer-shell
      ];

      # CONFIGURATION
      xdg.configFile."sfwbar/sfwbar.config".text = ''
                # Term setup
                Set Term = "foot"
                Set ThicknessHint = "20px"

                # Actions
                TriggerAction "SIGRTMIN+1", SwitcherEvent "forward"
                TriggerAction "SIGRTMIN+2", SwitcherEvent "back"

                # Initialization
                Function("SfwbarInit") {
                  SetLayer "top"
                  SetMirror "*"
                  SetExclusiveZone "auto"
                }

                # Placer (Window positioning)
                placer {
                  xorigin = 5
                  yorigin = 5
                  xstep = 5
                  ystep = 5
                  children = true
                }

                # Task Switcher
                switcher {
                  interval = 700
                  icons = true
                  labels = false
                  cols = 5
                }

                # Load Standard Library Winops
                include("${pkgs.sfwbar}/share/sfwbar/winops.widget")

                # Main Layout
                layout {
                  
                  # Start Menu
                  include("${pkgs.sfwbar}/share/sfwbar/startmenu.widget")
                  
                  # Show Desktop
                  include("${pkgs.sfwbar}/share/sfwbar/showdesktop.widget")

                  # Taskbar
                  taskbar {
                    rows = 1
                    icons = true
                    labels = false
                    sort = false
                    action[3] = Menu "winops"
                    action[Drag] = Focus
                  }

                  # Spacer 
                  label {
                    value = ""
                    style = "spacer"
                  }

                  # Pager
                  pager {
                    rows = 1
                    pins = "1","2","3","4"
                    preview = true
                    action[Drag] = WorkspaceActivate
                  }

                  # System Monitors
                  #include("${pkgs.sfwbar}/share/sfwbar/cpu.widget")
                  #include("${pkgs.sfwbar}/share/sfwbar/memory.widget")

                  # Tray
                  tray {
                    rows = 1
                  }

                  # --- MODULES ---
                  #include("${pkgs.sfwbar}/share/sfwbar/upower.widget")
                  #include("${pkgs.sfwbar}/share/sfwbar/battery-svg.widget")
                  
                  #include("${pkgs.sfwbar}/share/sfwbar/idle.widget")
                  #include("${pkgs.sfwbar}/share/sfwbar/backlight.widget")
                  include("${pkgs.sfwbar}/share/sfwbar/volume.widget")
                  #include("${pkgs.sfwbar}/share/sfwbar/network-module.widget")
                  #include("${pkgs.sfwbar}/share/sfwbar/sway-lang.widget")

                  # Clock
                  grid {
                    style = "clock_grid"
                    label {
                      value = Time("%H:%M")
                      tooltip = Time("%H:%M\n%x")
                    }
                  }
                }
        				#CSS

                #spacer {
                  -GtkWidget-hexpand: true;
                }

                button#taskbar_item {
                  padding: 5px;
                  border-radius: 0px;
                  border-width: 0px;
                  -GtkWidget-hexpand: false;
                }

                button#taskbar_item:hover {
                  background-color: rgba(255, 255, 255, 0.1);
                }
      '';
    };
  };
}