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
{
lib,
pkgs,
config,
...
}:
{
options.zpha.programs.vibepanel.enable = lib.mkEnableOption "vibepanel";
config = lib.mkIf config.zpha.programs.vibepanel.enable {
users.users.zaphyra.maid = {
packages = [ pkgs.zpha.vibepanel ];
file.xdg_config = {
"vibepanel/config.toml".source = pkgs.writers.writeTOML "vibepanel.toml" {
advanced = {
compositor = "niri";
};
bar = {
position = "top";
size = 32;
border_radius = 0;
background_color = "rgb(30, 40, 30)";
background_opacity = 0.9;
};
osd = {
enabled = true;
position = "top";
};
theme = {
mode = "dark";
accent = "#4aa96c";
ripple = false;
blur = true;
icons = {
theme = "gtk";
weight = 400;
};
};
widgets = {
background_opacity = 1;
border_radius = 40;
left = [
{
group = [
"workspaces"
"taskbar"
];
}
];
center = [
"clock"
"notifications"
];
right = [
"media"
"tray"
{
group = [
"quick_settings"
"battery"
];
}
];
quick_settings.updates = false;
taskbar.show_workspace_separator = false;
clock = {
format = "%d. %b %H:%M";
on_click_right =
(lib.mkIf config.zpha.programs.gnome-calendar.enable (lib.getExe pkgs.gnome-calendar)).content;
};
};
};
"vibepanel/style.css".text = ''
:root {
}
.bar {
border-bottom: 2px solid rgba(59, 135, 86, 0.5);
}
.widget,
.widget-item {
background-color: unset;
}
.clock {
margin-right: -22px;
}
'';
};
systemd.services.vibepanel = {
wantedBy = [ "niri-session.target" ];
partOf = [ "niri-session.target" ];
after = [ "niri-session.target" ];
environment = lib.mkForce { };
serviceConfig = {
ExecStart = lib.getExe pkgs.zpha.vibepanel;
Restart = "on-failure";
};
};
};
zpha.programs.niri.settings.binds = {
"XF86AudioMute".spawn = [
"vibepanel"
"volume"
"toggle-mute"
];
"XF86AudioLowerVolume".spawn = [
"vibepanel"
"volume"
"dec"
"2"
];
"XF86AudioRaiseVolume".spawn = [
"vibepanel"
"volume"
"inc"
"2"
];
"XF86MonBrightnessDown".spawn = [
"vibepanel"
"brightness"
"dec"
"2"
];
"XF86MonBrightnessUp".spawn = [
"vibepanel"
"brightness"
"inc"
"2"
];
};
};
}