refactor: implement component-based architecture for enhanced maintainability
- Reorganize directory structure into core/, features/, and themes/ - Colocate application Nix logic, configs, scripts, and theme overrides - Implement 'Inversion of Control' for theming: apps now pull theme-specific layouts - Update flake.nix and shared library paths to match the new structure - Document the new Feature-Centric architecture in README.md
This commit is contained in:
122
features/desktop/waybar/themes/summer-night/config.jsonc
Normal file
122
features/desktop/waybar/themes/summer-night/config.jsonc
Normal file
@@ -0,0 +1,122 @@
|
||||
{
|
||||
"margin-top": 0,
|
||||
"margin-left": 120,
|
||||
"margin-bottom": 0,
|
||||
"margin-right": 120,
|
||||
"height": 61,
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"spacing": 15,
|
||||
"modules-left": ["custom/launcher", "clock", "clock#date"],
|
||||
"modules-center": ["hyprland/workspaces"],
|
||||
"modules-right": ["idle_inhibitor", "pulseaudio", "custom/battery", "backlight", "tray", "custom/powermenu"],
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"all-outputs": true,
|
||||
"on-click": "activate",
|
||||
"on-scroll-up": "hyprctl dispatch workspace r+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace r-1",
|
||||
"persistent_workspaces": {
|
||||
"1": [],
|
||||
"2": [],
|
||||
"3": [],
|
||||
"4": [],
|
||||
"5": [],
|
||||
"6": [],
|
||||
"7": [],
|
||||
"8": [],
|
||||
"9": [],
|
||||
"10": []
|
||||
}
|
||||
},
|
||||
|
||||
"tray": {
|
||||
"icon-size": 20,
|
||||
"spacing": 5
|
||||
},
|
||||
|
||||
"custom/launcher": {
|
||||
"interval": "once",
|
||||
"format": "",
|
||||
"on-click": "pkill rofi || rofi -show drun",
|
||||
"tooltip-format": "Application Launcher"
|
||||
},
|
||||
|
||||
"backlight": {
|
||||
"max-length": "4",
|
||||
"format": "{icon} {percent}%",
|
||||
"tooltip-format": "{percent}%",
|
||||
"format-icons": ["","","","", "", "", ""],
|
||||
"on-click": "",
|
||||
"on-scroll-up": "brightnessctl set 10%-",
|
||||
"on-scroll-down": "brightnessctl set +10%"
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"interval": 30,
|
||||
"format": " {}%",
|
||||
"format-alt":" {used:0.1f}G",
|
||||
"max-length": 10
|
||||
},
|
||||
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": " ",
|
||||
"deactivated": " "
|
||||
}
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"scroll-step": 5,
|
||||
"format": "{icon} {volume}%",
|
||||
"format-bluetooth": "{icon} {volume}%",
|
||||
"format-bluetooth-muted": " {icon}",
|
||||
"format-muted": " muted",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click": "mute-vol",
|
||||
"on-click-middle": "audio-menu",
|
||||
"on-click-right": "pavucontrol",
|
||||
"tooltip-format": "{icon} {desc} | {volume}%"
|
||||
},
|
||||
|
||||
"network": {
|
||||
"format-wifi": " {signalStrength}%",
|
||||
"format-ethernet": " {signalStrength}%",
|
||||
"format-disconnected": "",
|
||||
"on-click": ""
|
||||
},
|
||||
|
||||
"custom/battery": {
|
||||
"interval": 30,
|
||||
"format": "{}",
|
||||
"exec": "waybar-battery-status",
|
||||
"on-click": "power-menu"
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"format": " {:%H:%M}",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"clock#date": {
|
||||
"format": " {:%A, %B %d, %Y}",
|
||||
"on-click": "kitty calcurse",
|
||||
"tooltip-format": "Open calendar"
|
||||
},
|
||||
|
||||
"custom/powermenu": {
|
||||
"format": "",
|
||||
"on-click": "wlogout",
|
||||
"tooltip": false
|
||||
}
|
||||
}
|
||||
122
features/desktop/waybar/themes/summer-night/style.css
Normal file
122
features/desktop/waybar/themes/summer-night/style.css
Normal file
@@ -0,0 +1,122 @@
|
||||
@define-color bg_dim #232a2e;
|
||||
@define-color bg0 #2d353b;
|
||||
@define-color bg1 #343f44;
|
||||
@define-color bg2 #3d484d;
|
||||
@define-color bg3 #475258;
|
||||
@define-color bg4 #4f585e;
|
||||
@define-color bg5 #56635f;
|
||||
@define-color bg_visual #543a48;
|
||||
@define-color bg_red #514045;
|
||||
@define-color bg_green #425047;
|
||||
@define-color bg_blue #3a515d;
|
||||
@define-color bg_yellow #4d4c43;
|
||||
@define-color fg #d3c6aa;
|
||||
@define-color red #e67e80;
|
||||
@define-color orange #e69875;
|
||||
@define-color yellow #dbbc7f;
|
||||
@define-color green #a7c080;
|
||||
@define-color aqua #83c092;
|
||||
@define-color blue #7fbbb3;
|
||||
@define-color purple #d699b6;
|
||||
@define-color grey0 #7a8478;
|
||||
@define-color grey1 #859289;
|
||||
@define-color grey2 #9da9a0;
|
||||
/* margin: top right bottom left */
|
||||
/* Spacing outside the element */
|
||||
|
||||
/* padding: top right bottom left */
|
||||
/* Spacing inside the element */
|
||||
|
||||
* {
|
||||
font-family: JetBrainsMono Nerd Font, FontAwesome;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: @fg;
|
||||
color: @bg0;
|
||||
transition-property: background-color;
|
||||
transition-duration: 0.5s;
|
||||
border-radius: 0px 0px 15px 15px;
|
||||
transition-duration: .5s;
|
||||
|
||||
border-bottom-width: 5px;
|
||||
border-bottom-color: #7d6a40;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
|
||||
#backlight,
|
||||
#tray,
|
||||
#custom-launcher,
|
||||
#clock,
|
||||
#clock-date,
|
||||
#workspaces,
|
||||
#pulseaudio,
|
||||
#idle_inhibitor,
|
||||
#custom-battery,
|
||||
#custom-powermenu {
|
||||
background-color: @bg0;
|
||||
color: @fg;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
margin-top: 7px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 10px;
|
||||
border-bottom-width: 5px;
|
||||
border-bottom-color: #161a1d;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
|
||||
#tray > .active {
|
||||
color: @fg;
|
||||
}
|
||||
|
||||
#tray > .needs-attention {
|
||||
color: @green;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background-color: @blue;
|
||||
color: @bg0;
|
||||
border-radius: 10px;
|
||||
margin-bottom: -5px;
|
||||
border-bottom-width: 5px;
|
||||
border-bottom-color: #366660;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
|
||||
#custom-launcher {
|
||||
background-color: @green;
|
||||
color: @bg0;
|
||||
border-bottom-color: #556a35;
|
||||
|
||||
margin-left: 15px;
|
||||
padding-left: 20px;
|
||||
padding-right: 21px;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
#custom-powermenu {
|
||||
background-color: @red;
|
||||
color: @bg0;
|
||||
border-bottom-color: #951c1f;
|
||||
|
||||
margin-right: 15px;
|
||||
padding-left: 20px;
|
||||
padding-right: 23px;
|
||||
}
|
||||
|
||||
#custom-battery.preservation {
|
||||
color: @green;
|
||||
}
|
||||
|
||||
#idle_inhibitor {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
font-size: 20px;
|
||||
}
|
||||
Reference in New Issue
Block a user