Refactor Hyprland configs, introduce Sithego for theming, and add supporting scripts

This commit is contained in:
2026-02-17 20:42:41 +01:00
parent c57ef06442
commit 8b153d54ac
60 changed files with 1896 additions and 76 deletions
@@ -0,0 +1,25 @@
* {
-GtkHTML-cursor-color: {{ .Theme.Colors.Semantic.Text.Value }};
-GtkIMHtml-cursor-color: {{ .Theme.Colors.Semantic.Text.Value }};
-GtkTextView-error-underline-color: {{ .Theme.Colors.Semantic.Warn.Value }};
-W3C-focus-color: {{ .Theme.Colors.Semantic.Accent.Value }};
outline-color: {{ .Theme.Colors.Semantic.Accent.Alpha .Theme.Colors.Semantic.Background 0.5 }};
background-clip: padding-box;
-gtk-secondary-caret-color: {{ .Theme.Colors.Semantic.Accent.Value }};
}
.background {
background-color: {{ .Theme.Colors.Semantic.Background.Value }};
color: {{ .Theme.Colors.Semantic.Text.Value }};
}
:disabled {
color: {{ .Theme.Colors.Semantic.Disabled.Value }};
}
window,
.window-frame {
background-color: {{ .Theme.Colors.Semantic.Background.Value }};
color: {{ .Theme.Colors.Semantic.Text.Value }};
border-radius: {{ .Theme.Spacing.RadiusLarge }};
}
@@ -0,0 +1,36 @@
button {
background-color: {{ .Theme.Colors.Semantic.SurfaceAlt.Value }};
color: {{ .Theme.Colors.Semantic.Text.Value }};
border: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
border-radius: {{ .Theme.Spacing.Radius }};
padding: {{ .Theme.Spacing.Padding }};
transition: all 0.2s ease;
}
button:hover {
background-color: {{ .Theme.Colors.Semantic.Border.Value }};
}
button:active,
button:checked {
background-color: {{ .Theme.Colors.Semantic.Accent.Value }};
color: {{ .Theme.Colors.Semantic.Background.Value }};
}
button:disabled {
background-color: {{ .Theme.Colors.Semantic.Background.Value }};
color: {{ .Theme.Colors.Semantic.Disabled.Value }};
border-color: {{ .Theme.Colors.Semantic.Disabled.Value }};
}
button.suggested-action {
background-color: {{ .Theme.Colors.Semantic.Accent.Value }};
color: {{ .Theme.Colors.Semantic.Background.Value }};
border-color: {{ .Theme.Colors.Semantic.Accent.Value }};
}
button.destructive-action {
background-color: {{ .Theme.Colors.Semantic.Warn.Value }};
color: {{ .Theme.Colors.Semantic.Background.Value }};
border-color: {{ .Theme.Colors.Semantic.Warn.Value }};
}
@@ -0,0 +1,49 @@
check, radio {
margin: 0 {{ .Theme.Spacing.Margin }};
min-height: 18px;
min-width: 18px;
border: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
border-radius: {{ .Theme.Spacing.Radius }};
background-color: {{ .Theme.Colors.Semantic.SurfaceAlt.Value }};
color: transparent;
-gtk-icon-source: none;
transition: all 0.2s ease;
}
radio {
border-radius: 50%;
}
check:checked {
background-color: {{ .Theme.Colors.Semantic.SurfaceAlt.Value }};
border-color: {{ .Theme.Colors.Semantic.Accent.Value }};
background-image:
linear-gradient(45deg, transparent 45%, {{ .Theme.Colors.Semantic.Accent.Value }} 45%, {{ .Theme.Colors.Semantic.Accent.Value }} 55%, transparent 55%),
linear-gradient(-45deg, transparent 45%, {{ .Theme.Colors.Semantic.Accent.Value }} 45%, {{ .Theme.Colors.Semantic.Accent.Value }} 55%, transparent 55%);
background-size: 70% 70%;
background-repeat: no-repeat;
background-position: center;
}
radio:checked {
background-color: {{ .Theme.Colors.Semantic.SurfaceAlt.Value }};
border-color: {{ .Theme.Colors.Semantic.Accent.Value }};
background-image: radial-gradient(circle, {{ .Theme.Colors.Semantic.Accent.Value }} 35%, transparent 40%);
}
check:indeterminate {
background-color: {{ .Theme.Colors.Semantic.SurfaceAlt.Value }};
border-color: {{ .Theme.Colors.Semantic.Accent.Value }};
background-image: linear-gradient(to right, {{ .Theme.Colors.Semantic.Accent.Value }}, {{ .Theme.Colors.Semantic.Accent.Value }});
background-size: 60% 2px;
background-repeat: no-repeat;
background-position: center;
}
check:disabled,
radio:disabled {
background-color: {{ .Theme.Colors.Semantic.Background.Value }};
border-color: {{ .Theme.Colors.Semantic.Disabled.Value }};
color: transparent;
background-image: none;
}
@@ -0,0 +1,19 @@
entry {
background-color: {{ .Theme.Colors.Semantic.Surface.Value }};
color: {{ .Theme.Colors.Semantic.Text.Value }};
border: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
border-radius: {{ .Theme.Spacing.Radius }};
padding: {{ .Theme.Spacing.PaddingSmall }};
caret-color: {{ .Theme.Colors.Semantic.Accent.Value }};
}
entry:focus {
border-color: {{ .Theme.Colors.Semantic.Accent.Value }};
box-shadow: inset 0 0 0 1px {{ .Theme.Colors.Semantic.Accent.Value }};
}
entry:disabled {
background-color: {{ .Theme.Colors.Semantic.Background.Value }};
color: {{ .Theme.Colors.Semantic.Disabled.Value }};
border-color: {{ .Theme.Colors.Semantic.Disabled.Value }};
}
@@ -0,0 +1,11 @@
headerbar {
background-color: {{ .Theme.Colors.Semantic.Surface.Value }};
color: {{ .Theme.Colors.Semantic.Text.Value }};
border-bottom: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
box-shadow: none;
padding: {{ .Theme.Spacing.PaddingSmall }};
}
headerbar .title {
font-weight: bold;
}
@@ -0,0 +1,53 @@
list,
menu {
background-color: {{ .Theme.Colors.Semantic.Surface.Value }};
color: {{ .Theme.Colors.Semantic.Text.Value }};
border: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
border-radius: {{ .Theme.Spacing.Radius }};
}
menubar {
background-color: {{ .Theme.Colors.Semantic.Surface.Value }};
color: {{ .Theme.Colors.Semantic.Text.Value }};
border-bottom: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
padding: {{ .Theme.Spacing.PaddingSmall }};
}
menubar > menuitem {
padding: {{ .Theme.Spacing.Padding }};
min-height: 24px;
transition: all 0.2s ease;
}
menuitem {
min-height: 24px;
padding: {{ .Theme.Spacing.Padding }};
}
menubar > menuitem:hover {
background-color: {{ .Theme.Colors.Semantic.Accent.Value }};
border-radius: {{ .Theme.Spacing.RadiusSmall }};
}
list row:selected,
treeview.view:selected,
.view:selected,
iconview.view:selected,
cell:selected,
*:selected {
background-color: {{ .Theme.Colors.Semantic.Accent.Alpha .Theme.Colors.Semantic.Background 0.3 }};
color: {{ .Theme.Colors.Semantic.Text.Value }};
border: 1px solid {{ .Theme.Colors.Semantic.Accent.Value }};
border-radius: {{ .Theme.Spacing.Radius }};
}
menuitem:hover {
background-color: {{ .Theme.Colors.Semantic.Accent.Value }};
color: {{ .Theme.Colors.Semantic.Background.Value }};
border-radius: {{ .Theme.Spacing.RadiusSmall }};
}
menuitem:disabled {
color: {{ .Theme.Colors.Semantic.Disabled.Value }};
background-color: transparent;
}
@@ -0,0 +1,32 @@
notebook {
background-color: {{ .Theme.Colors.Semantic.Background.Value }};
border: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
}
notebook header {
background-color: {{ .Theme.Colors.Semantic.Surface.Value }};
}
notebook tab {
padding: {{ .Theme.Spacing.PaddingLarge }};
border: 1px solid transparent;
border-radius: {{ .Theme.Spacing.Radius }} {{ .Theme.Spacing.Radius }} 0 0;
transition: all 0.2s ease;
}
notebook tab:hover {
background-color: {{ .Theme.Colors.Semantic.SurfaceAlt.Value }};
}
notebook tab:checked {
background-color: {{ .Theme.Colors.Semantic.Background.Value }};
border-color: {{ .Theme.Colors.Semantic.Border.Value }};
border-bottom-color: transparent;
border-bottom: 2px solid {{ .Theme.Colors.Semantic.Accent.Value }};
box-shadow: inset 0 -2px 0 {{ .Theme.Colors.Semantic.Accent.Value }};
}
notebook tab label {
font-weight: bold;
color: {{ .Theme.Colors.Semantic.Text.Value }};
}
@@ -0,0 +1,24 @@
scrollbar {
background-color: transparent;
}
scrollbar trough {
background-color: {{ .Theme.Colors.Semantic.SurfaceAlt.Value }};
border: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
}
scrollbar slider {
background-color: {{ .Theme.Colors.Semantic.Border.Value }};
border: 2px solid transparent;
border-radius: {{ .Theme.Spacing.RadiusLarge }};
min-width: 8px;
min-height: 8px;
}
scrollbar slider:hover {
background-color: {{ .Theme.Colors.Semantic.Accent.Value }};
}
scrollbar button {
display: none;
}
@@ -0,0 +1,77 @@
/* Selection */
selection,
row:selected,
iconview:selected,
treeview.view:selected,
.view:selected,
iconview.view:selected,
cell:selected,
*:selected {
background-color: {{ .Theme.Colors.Semantic.Accent.Alpha .Theme.Colors.Semantic.Background 0.3 }};
color: {{ .Theme.Colors.Semantic.Text.Value }};
border: 1px solid {{ .Theme.Colors.Semantic.Accent.Value }};
border-radius: {{ .Theme.Spacing.Radius }};
}
/* Sliders (Scales) */
scale trough {
background-color: {{ .Theme.Colors.Semantic.SurfaceAlt.Value }};
border: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
border-radius: {{ .Theme.Spacing.Radius }};
min-height: 4px;
}
scale highlight {
background-color: {{ .Theme.Colors.Semantic.Accent.Value }};
border-radius: {{ .Theme.Spacing.Radius }};
}
scale slider {
background-color: {{ .Theme.Colors.Semantic.Surface.Value }};
border: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
border-radius: 50%;
min-height: 16px;
min-width: 16px;
margin: -6px 0;
}
scale slider:hover {
background-color: {{ .Theme.Colors.Semantic.Accent.Value }};
border-color: {{ .Theme.Colors.Semantic.Accent.Value }};
}
/* Switches */
switch {
background-color: {{ .Theme.Colors.Semantic.SurfaceAlt.Value }};
border: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
border-radius: {{ .Theme.Spacing.Radius }};
color: transparent;
}
switch:checked {
background-color: {{ .Theme.Colors.Semantic.Accent.Value }};
border-color: {{ .Theme.Colors.Semantic.Accent.Value }};
}
switch slider {
background-color: {{ .Theme.Colors.Semantic.Text.Value }};
border: 1px solid {{ .Theme.Colors.Semantic.Border.Value }};
border-radius: 50%;
margin: {{ .Theme.Spacing.MarginSmall }};
min-width: 18px;
min-height: 18px;
}
scale:disabled trough,
scale:disabled highlight,
scale:disabled slider,
switch:disabled {
background-color: {{ .Theme.Colors.Semantic.Background.Value }};
border-color: {{ .Theme.Colors.Semantic.Disabled.Value }};
color: {{ .Theme.Colors.Semantic.Disabled.Value }};
}
switch:disabled slider {
background-color: {{ .Theme.Colors.Semantic.Disabled.Value }};
border-color: {{ .Theme.Colors.Semantic.Disabled.Value }};
}