diff --git a/README.md b/README.md index b2044bf..3556338 100644 --- a/README.md +++ b/README.md @@ -27,25 +27,30 @@ Pick a window manager section below, then add the shared configs. ### Hyprland ```bash -ln -sf ~/scripts/hyprland/hyprland.conf ~/.config/hypr/hyprland.conf -ln -sf ~/scripts/waybar/waybar_hyprland_config.json ~/.config/waybar/config -ln -sf ~/scripts/waybar/waybar_style.css ~/.config/waybar/style.css -ln -sf ~/scripts/wofi/wofi_style.css ~/.config/wofi/style.css +ln -sf ~/scripts/hypr ~/.config/hypr +ln -sf ~/scripts/waybar ~/.config/waybar +ln -sf ~/scripts/wofi ~/.config/wofi ``` ### Sway ```bash -ln -sf ~/scripts/sway/swayconfig ~/.config/sway/config -ln -sf ~/scripts/waybar/waybar_sway_config.json ~/.config/waybar/config -ln -sf ~/scripts/waybar/waybar_style.css ~/.config/waybar/style.css -ln -sf ~/scripts/wofi/wofi_style.css ~/.config/wofi/style.css +ln -sf ~/scripts/sway ~/.config/sway +ln -sf ~/scripts/waybar ~/.config/waybar +ln -sf ~/scripts/wofi ~/.config/wofi +``` + +The default waybar config (`waybar/config`) is set up for Hyprland. For Sway, rename the sway config as the active one: + +```bash +mv ~/scripts/waybar/config ~/scripts/waybar/config.hypr.json +mv ~/scripts/waybar/waybar_sway_config.json ~/scripts/waybar/config ``` ### i3 ```bash -ln -sf ~/scripts/i3/i3config ~/.config/i3/config +ln -sf ~/scripts/i3 ~/.config/i3 ln -sf ~/scripts/i3/i3blocks.conf ~/.config/i3blocks/config ln -sf ~/scripts/i3/i3status.conf ~/.config/i3status/config ``` @@ -163,6 +168,35 @@ Prefix is Ctrl + f. | `Prefix + Ctrl + s` | Save session (resurrect) | | `Prefix + Ctrl + r` | Restore session (resurrect) | +## Colorscheme + +All colors are defined in a single file: `colors.conf`. A generator script produces format-specific fragments that each config sources or imports. + +To change the theme: + +```bash +# 1. Edit the palette +vim ~/scripts/colors.conf + +# 2. Regenerate fragments +~/scripts/sh/gen-colors + +# 3. Reload your WM / bar +hyprctl reload # Hyprland +swaymsg reload # Sway +killall waybar && waybar & # Waybar +``` + +Generated files (committed so configs work after a fresh clone): + +| File | Format | Used by | +| --- | --- | --- | +| `hypr/colors.conf` | `$color_name = rgb(HEXVAL)` | `hyprland.conf` (source) | +| `sway/colors.conf` | `set $color_name #HEXVAL` | `swayconfig` (include) | +| `i3/colors.conf` | `set $color_name #HEXVAL` | `i3config` (include) | +| `waybar/colors.css` | CSS custom properties | `waybar/style.css` (@import) | +| `wofi/colors.css` | CSS custom properties | `wofi/style.css` (@import) | + ## Scripts All in `sh/`, added to `$PATH` via the shell config above. @@ -172,3 +206,4 @@ All in `sh/`, added to `$PATH` via the shell config above. | `sharefile ` | Upload a file to 0x0.st | | `getfile ` | Download a file from 0x0.st | | `waybar-history` | Stream the last zsh history entry to waybar | +| `gen-colors` | Regenerate color fragments from `colors.conf` | diff --git a/colors.conf b/colors.conf new file mode 100644 index 0000000..96fe75e --- /dev/null +++ b/colors.conf @@ -0,0 +1,10 @@ +primary=#55ffbb +secondary=#62ff57 +tertiary=#ff579a +bg=#1b110e +bg_secondary=#000000 +alt_bg=#024942 +gray=#222222 +text_light=#F0F0F0 +text_dark=#1b110e +white=#FFFFFF diff --git a/hyprland/hyprland.conf b/hypr/hyprland.conf similarity index 96% rename from hyprland/hyprland.conf rename to hypr/hyprland.conf index d1ee808..5550563 100644 --- a/hyprland/hyprland.conf +++ b/hypr/hyprland.conf @@ -1,6 +1,8 @@ # Hyprland config - converted from i3 config by Adam French # https://wiki.hyprland.org/Configuring/ +source = ~/scripts/hypr/colors.conf + ################ ### MONITORS ### ################ @@ -58,8 +60,8 @@ general { gaps_out = 0 # outer gaps (i3: gaps outer 0) border_size = 1 - col.active_border = rgb(C792EA) - col.inactive_border = rgb(6272A4) + col.active_border = $color_primary + col.inactive_border = $color_gray resize_on_border = true allow_tearing = false @@ -342,12 +344,13 @@ windowrule { ############################## # Your theme palette for use in waybar / wofi CSS: -# Background: #1A1B2F -# Accent 1: #C792EA (purple) -# Accent 2: #FF79C6 (pink) -# Accent 3: #82AAFF (blue) -# Inactive: #6272A4 -# Surface: #2A2B3D +# Background: #1b110e +# BG Secondary: #000000 +# Primary: #55ffbb (green) +# Secondary: #62ff57 (lime) +# Tertiary: #ff579a (pink) +# Quaternary: #024942 (dark teal) +# Link: #222222 ##################################### diff --git a/i3/i3config b/i3/config similarity index 91% rename from i3/i3config rename to i3/config index 391e62a..968eb8a 100644 --- a/i3/i3config +++ b/i3/config @@ -1,5 +1,7 @@ # This is my personal personal i3 config file! - Adam French +include ~/scripts/i3/colors.conf + # WORKSPACE NAMES ----------------------------------- set $ws1 1:ツ set $ws2 2:ಠ‿ಠ @@ -72,7 +74,7 @@ bindsym $mod+Return exec kitty # kill focused window bindsym $mod+Shift+q kill # start program launcher -bindsym $mod+d exec --no-startup-id dmenu_run -nb '#1A1B2F' -sf '#FF79C6' -sb '#1A1B2F' -nf '#c792EA' +bindsym $mod+d exec --no-startup-id dmenu_run -nb '$color_bg' -sf '$color_tertiary' -sb '$color_bg' -nf '$color_primary' bindsym $mod+Ctrl+m exec pavucontrol @@ -339,14 +341,14 @@ bar { strip_workspace_numbers yes colors { - background #1A1B2F - statusline #C792EA - separator #FF79C6 - focused_workspace #C792EA #1A1B2F #FFFFFF - active_workspace #C792EA #2A2B3D #FFFFFF - inactive_workspace #6272A4 #2A2B3D #FFFFFF - binding_mode #FF79C6 #1A1B2F #FFFFFF - urgent_workspace #FF5370 #2A2B3D #FFFFFF + background $color_bg + statusline $color_primary + separator $color_tertiary + focused_workspace $color_primary $color_bg $color_white + active_workspace $color_primary $color_alt_bg $color_white + inactive_workspace $color_gray $color_alt_bg $color_white + binding_mode $color_tertiary $color_bg $color_white + urgent_workspace $color_tertiary $color_alt_bg $color_white } } @@ -354,14 +356,14 @@ bar { bindsym $mod+m bar mode toggle # Theme colors -# class border backgr. text indic. child_border -client.focused #82AAFF #C792EA #FFFFFF #C792EA -client.focused_inactive #C792EA #2A2B3D #F0F0F0 #FF79C6 -client.unfocused #6272A4 #2A2B3D #F0F0F0 #C792EA -client.urgent #FF5370 #2A2B3D #FFFFFF #FF79C6 -client.placeholder #1A1B2F #1A1B2F #FFFFFF #1A1B2F +# class border backgr. text indic. +client.focused $color_secondary $color_primary $color_text_dark $color_primary +client.focused_inactive $color_primary $color_alt_bg $color_text_light $color_tertiary +client.unfocused $color_gray $color_alt_bg $color_text_light $color_primary +client.urgent $color_tertiary $color_alt_bg $color_white $color_tertiary +client.placeholder $color_bg $color_bg $color_white $color_bg -client.background #1A1B2F +client.background $color_bg # Set inner/outer gaps gaps inner 10 diff --git a/sway/swayconfig b/sway/config similarity index 94% rename from sway/swayconfig rename to sway/config index 1dd82fc..5db85f9 100644 --- a/sway/swayconfig +++ b/sway/config @@ -1,3 +1,5 @@ +include ~/scripts/sway/colors.conf + output * scale 1.2 @@ -313,14 +315,14 @@ for_window [urgent=latest] focus exec_always waybar -c ~/scripts/waybar/waybar_sway_config.json -s ~/scripts/waybar/waybar_style.css # Theme colors -# class border backgr. text indic. child_border -client.focused #82AAFF #C792EA #FFFFFF #C792EA -client.focused_inactive #C792EA #2A2B3D #F0F0F0 #FF79C6 -client.unfocused #6272A4 #2A2B3D #F0F0F0 #C792EA -client.urgent #FF5370 #2A2B3D #FFFFFF #FF79C6 -client.placeholder #1A1B2F #1A1B2F #FFFFFF #1A1B2F +# class border backgr. text indic. +client.focused $color_secondary $color_primary $color_text_dark $color_primary +client.focused_inactive $color_primary $color_alt_bg $color_text_light $color_tertiary +client.unfocused $color_gray $color_alt_bg $color_text_light $color_primary +client.urgent $color_tertiary $color_alt_bg $color_white $color_tertiary +client.placeholder $color_bg $color_bg $color_white $color_bg -client.background #1A1B2F +client.background $color_bg # Set inner/outer gaps gaps inner 10 diff --git a/waybar/waybar_hyprland_config.json b/waybar/config similarity index 100% rename from waybar/waybar_hyprland_config.json rename to waybar/config diff --git a/waybar/waybar_style.css b/waybar/style.css similarity index 52% rename from waybar/waybar_style.css rename to waybar/style.css index 8ae9ca2..5bbc5e8 100644 --- a/waybar/waybar_style.css +++ b/waybar/style.css @@ -1,3 +1,5 @@ +@import "colors.css"; + * { font-family: "URWGothic-Book", monospace; font-size: 16px; @@ -9,39 +11,39 @@ } window#waybar { - background-color: #1A1B2F; - color: #C792EA; + background-color: var(--color-bg); + color: var(--color-primary); } /* Workspaces */ #workspaces button { padding: 0 8px; - background-color: #2A2B3D; - color: #FFFFFF; + background-color: var(--color-alt_bg); + color: var(--color-white); border-bottom: 2px solid transparent; } #workspaces button:hover { - background-color: #2A2B3D; - border-bottom: 2px solid #C792EA; + background-color: var(--color-alt_bg); + border-bottom: 2px solid var(--color-primary); box-shadow: none; } #workspaces button.focused, #workspaces button.active { - background-color: #1A1B2F; - color: #FFFFFF; - border-bottom: 2px solid #C792EA; + background-color: var(--color-bg); + color: var(--color-white); + border-bottom: 2px solid var(--color-primary); } #workspaces button.urgent { - background-color: #FF5370; - color: #FFFFFF; + background-color: var(--color-tertiary); + color: var(--color-white); } #mode { - background-color: #FF79C6; - color: #1A1B2F; + background-color: var(--color-tertiary); + color: var(--color-text_dark); padding: 0 8px; font-style: italic; } @@ -58,7 +60,7 @@ window#waybar { #battery, #clock { padding: 0 10px; - color: #C792EA; + color: var(--color-primary); } /* Pink separators between modules (matching i3bar separator color) */ @@ -71,52 +73,52 @@ window#waybar { #network, #battery, #clock { - border-left: 1px solid #FF79C6; + border-left: 1px solid var(--color-tertiary); } #battery.warning { - color: #FFB86C; + color: var(--color-secondary); } #battery.critical { - color: #FF5370; + color: var(--color-tertiary); } #custom-greetings { - color: #f5af19; + color: var(--color-secondary); } #clock { - color: #FF79C6; + color: var(--color-tertiary); } /* claudebar severity classes */ #custom-claudebar.low { - color: #50FA7B; + color: var(--color-primary); } #custom-claudebar.mid { - color: #F1FA8C; + color: var(--color-secondary); } #custom-claudebar.high { - color: #FFB86C; + color: var(--color-tertiary); } #custom-claudebar.critical { - color: #FF5370; + color: var(--color-tertiary); } #tray { padding: 0 8px; - border-left: 1px solid #FF79C6; + border-left: 1px solid var(--color-tertiary); } -#tray>.passive { +#tray > .passive { -gtk-icon-effect: dim; } -#tray>.needs-attention { +#tray > .needs-attention { -gtk-icon-effect: highlight; - background-color: #FF5370; + background-color: var(--color-tertiary); } diff --git a/wofi/style.css b/wofi/style.css new file mode 100644 index 0000000..4417903 --- /dev/null +++ b/wofi/style.css @@ -0,0 +1,50 @@ +@import url("colors.css"); + +window { + margin: 0px; + border: 1px solid var(--color-primary); + background-color: var(--color-bg); + border-radius: 8px; +} + +#input { + padding: 4px 8px; + margin: 6px; + color: var(--color-text_light); + background-color: var(--color-alt_bg); + border: 1px solid var(--color-primary); + border-radius: 4px; +} + +#inner-box { + background-color: var(--color-bg); +} + +#outer-box { + margin: 4px; + padding: 4px; + background-color: var(--color-bg); +} + +#scroll { + margin: 0px; + padding: 4px; +} + +#text { + margin: 2px 8px; + color: var(--color-primary); +} + +#entry { + border-radius: 4px; +} + +#entry:selected { + background-color: var(--color-alt_bg); + border: 1px solid var(--color-primary); +} + +#text:selected { + color: var(--color-tertiary); +} diff --git a/wofi/wofi_style.css b/wofi/wofi_style.css deleted file mode 100644 index bd85610..0000000 --- a/wofi/wofi_style.css +++ /dev/null @@ -1,48 +0,0 @@ -window { - margin: 0px; - border: 1px solid #82AAFF; - background-color: #1A1B2F; - border-radius: 8px; -} - -#input { - padding: 4px 8px; - margin: 6px; - color: #F0F0F0; - background-color: #2A2B3D; - border: 1px solid #C792EA; - border-radius: 4px; -} - -#inner-box { - background-color: #1A1B2F; -} - -#outer-box { - margin: 4px; - padding: 4px; - background-color: #1A1B2F; -} - -#scroll { - margin: 0px; - padding: 4px; -} - -#text { - margin: 2px 8px; - color: #C792EA; -} - -#entry { - border-radius: 4px; -} - -#entry:selected { - background-color: #2A2B3D; - border: 1px solid #C792EA; -} - -#text:selected { - color: #FF79C6; -}