initial commit
This commit is contained in:
commit
90cff4f16a
59 changed files with 6855 additions and 0 deletions
219
Hyprsuck/waybar.nix
Normal file
219
Hyprsuck/waybar.nix
Normal file
|
|
@ -0,0 +1,219 @@
|
|||
# Waybar - Dynamic config based on connected monitors
|
||||
# Docked (DP-3): external gets workspaces+clock, internal gets workspaces
|
||||
# Undocked: internal gets workspaces+clock
|
||||
{ pkgs-unstable, pkgs, ... }:
|
||||
|
||||
let
|
||||
workspaceIcons = {
|
||||
"terminal" = "";
|
||||
"code" = "";
|
||||
"browser" = "";
|
||||
"files" = "";
|
||||
"video" = "";
|
||||
"kicad_prim" = "";
|
||||
"kicad_sec" = "";
|
||||
"freecad" = "";
|
||||
};
|
||||
|
||||
sharedStyle = ''
|
||||
* {
|
||||
font-family: "JetBrainsMono Nerd Font Mono", monospace;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-center,
|
||||
.modules-right {
|
||||
background: alpha(@theme_bg_color, 0.8);
|
||||
border-radius: 8px;
|
||||
padding: 2px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
window#waybar.right .modules-center {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
window#waybar.left .modules-center {
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.modules-center #workspaces button,
|
||||
.modules-left #workspaces button,
|
||||
.modules-right #workspaces button {
|
||||
padding: 1px 2px;
|
||||
min-width: 14px;
|
||||
min-height: 12px;
|
||||
background: transparent;
|
||||
border: none;
|
||||
border-bottom: none;
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.modules-center #workspaces button label,
|
||||
.modules-left #workspaces button label,
|
||||
.modules-right #workspaces button label {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.modules-center #workspaces button.active,
|
||||
.modules-left #workspaces button.active,
|
||||
.modules-right #workspaces button.active {
|
||||
color: @base0D;
|
||||
border-bottom: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.modules-center #workspaces button.active label,
|
||||
.modules-left #workspaces button.active label,
|
||||
.modules-right #workspaces button.active label {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
padding: 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
'';
|
||||
|
||||
# JSON config for docked mode (DP-3 primary)
|
||||
dockedConfig = builtins.toJSON [
|
||||
# DP-3: workspaces on right
|
||||
{
|
||||
name = "dp3-workspaces";
|
||||
output = "DP-3";
|
||||
layer = "top";
|
||||
exclusive = false;
|
||||
passthrough = true;
|
||||
position = "right";
|
||||
margin-right = 0;
|
||||
modules-center = [ "hyprland/workspaces" ];
|
||||
"hyprland/workspaces" = {
|
||||
format = "{icon}";
|
||||
format-icons = workspaceIcons;
|
||||
show-special = false;
|
||||
persistent-workspaces = { };
|
||||
};
|
||||
}
|
||||
|
||||
# DP-3: clock on left
|
||||
{
|
||||
name = "dp3-clock";
|
||||
output = "DP-3";
|
||||
layer = "top";
|
||||
exclusive = false;
|
||||
passthrough = true;
|
||||
position = "left";
|
||||
margin-left = 0;
|
||||
modules-center = [ "clock" ];
|
||||
clock = {
|
||||
format = "{:%H\n%M}";
|
||||
tooltip-format = "{:%A, %B %d, %Y}";
|
||||
};
|
||||
}
|
||||
|
||||
# eDP-1: workspaces on left (secondary)
|
||||
{
|
||||
name = "edp1-workspaces";
|
||||
output = "eDP-1";
|
||||
layer = "top";
|
||||
exclusive = false;
|
||||
passthrough = true;
|
||||
position = "left";
|
||||
margin-left = 0;
|
||||
modules-center = [ "hyprland/workspaces" ];
|
||||
"hyprland/workspaces" = {
|
||||
format = "{icon}";
|
||||
format-icons = workspaceIcons;
|
||||
show-special = false;
|
||||
persistent-workspaces = { };
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
# JSON config for undocked mode (eDP-1 only)
|
||||
undockedConfig = builtins.toJSON [
|
||||
# eDP-1: workspaces on right
|
||||
{
|
||||
name = "edp1-workspaces";
|
||||
output = "eDP-1";
|
||||
layer = "top";
|
||||
exclusive = false;
|
||||
passthrough = true;
|
||||
position = "right";
|
||||
margin-right = 0;
|
||||
modules-center = [ "hyprland/workspaces" ];
|
||||
"hyprland/workspaces" = {
|
||||
format = "{icon}";
|
||||
format-icons = workspaceIcons;
|
||||
show-special = false;
|
||||
persistent-workspaces = { };
|
||||
};
|
||||
}
|
||||
|
||||
# eDP-1: clock on left
|
||||
{
|
||||
name = "edp1-clock";
|
||||
output = "eDP-1";
|
||||
layer = "top";
|
||||
exclusive = false;
|
||||
passthrough = true;
|
||||
position = "left";
|
||||
margin-left = 0;
|
||||
modules-center = [ "clock" ];
|
||||
clock = {
|
||||
format = "{:%H\n%M}";
|
||||
tooltip-format = "{:%A, %B %d, %Y}";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
# Simple startup script - check for DP-3 and load appropriate config
|
||||
startupScript = ''
|
||||
sleep 1
|
||||
CONFIG_DIR="$HOME/.config/waybar"
|
||||
|
||||
if hyprctl monitors -j | grep -q '"name": "DP-3"'; then
|
||||
waybar -c "$CONFIG_DIR/config-docked.jsonc" &
|
||||
else
|
||||
waybar -c "$CONFIG_DIR/config-undocked.jsonc" &
|
||||
fi
|
||||
'';
|
||||
|
||||
in
|
||||
{
|
||||
# Waybar - disable systemd, we manage startup ourselves
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
package = pkgs-unstable.waybar;
|
||||
systemd.enable = false;
|
||||
style = sharedStyle;
|
||||
};
|
||||
|
||||
# Write config files (style via programs.waybar.style to avoid conflict)
|
||||
home.file.".config/waybar/config-docked.jsonc".text = dockedConfig;
|
||||
home.file.".config/waybar/config-undocked.jsonc".text = undockedConfig;
|
||||
|
||||
# Waybar startup script
|
||||
home.packages = [
|
||||
(pkgs.writeShellScriptBin "waybar-start" startupScript)
|
||||
];
|
||||
|
||||
# Start waybar
|
||||
wayland.windowManager.hyprland.settings.exec-once = [
|
||||
"waybar-start"
|
||||
];
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue