feat: add spicetify, owlry, and sherlock templates

This commit is contained in:
2025-12-31 06:10:46 +01:00
parent 1198ae8afd
commit b8fffddd1b
7 changed files with 333 additions and 0 deletions

174
templates/owlry/apex.css.j2 Normal file
View File

@@ -0,0 +1,174 @@
{% set scheme_slug = scheme|lower|replace(' ', '-') %}
{% macro rgb(hex) -%}
{%- set value = hex|replace('#', '') -%}
{{ value[0:2]|int(base=16) }}, {{ value[2:4]|int(base=16) }}, {{ value[4:6]|int(base=16) }}
{%- endmacro %}
/*
* Owlry - {{ scheme }} Theme
* "State over Decoration."
*
* A high-contrast theme built for focus and clinical clarity.
* Color exists to signal STATE, not to decorate space.
*
* Author: S0wlz (Owlibou)
*
* Usage: Set theme = "{{ scheme_slug }}" in config.toml
*/
:root {
/* Core surfaces */
--owlry-bg: {{ palette.background }};
--owlry-bg-secondary: {{ ui.panel }};
--owlry-border: {{ ui.border }};
--owlry-text: {{ palette.foreground }};
--owlry-text-secondary: {{ ui.dim }};
/* The Predator - primary accent */
--owlry-accent: {{ palette.cursor }};
--owlry-accent-bright: {{ ansi.bright.red }};
/* Provider badges - mapped to Apex semantics */
--owlry-badge-app: {{ palette.info }}; /* Cyan: apps are informational */
--owlry-badge-bookmark: {{ palette.warning }}; /* Yellow: bookmarks need attention */
--owlry-badge-calc: {{ ansi.bright.yellow }}; /* Bright Yellow: calculator results */
--owlry-badge-clip: {{ palette.special }}; /* Purple: clipboard is special */
--owlry-badge-cmd: {{ palette.special }}; /* Purple: commands are elevated */
--owlry-badge-dmenu: {{ palette.success }}; /* Green: dmenu is success/pipe */
--owlry-badge-emoji: {{ ansi.bright.magenta }}; /* Bright Purple: emoji is special */
--owlry-badge-file: {{ ansi.bright.cyan }}; /* Bright Cyan: file search is active info */
--owlry-badge-script: {{ ansi.bright.green }}; /* Bright Green: scripts execute successfully */
--owlry-badge-ssh: {{ palette.info }}; /* Cyan: SSH is technical/info */
--owlry-badge-sys: {{ palette.cursor }}; /* Red: system actions are critical */
--owlry-badge-uuctl: {{ palette.warning }}; /* Yellow: uuctl requires attention */
--owlry-badge-web: {{ palette.info }}; /* Cyan: web is informational */
/* Widget badges */
--owlry-badge-media: {{ ansi.bright.magenta }}; /* Bright Purple: media is special */
--owlry-badge-weather: {{ ansi.bright.cyan }}; /* Bright Cyan: weather is active info */
--owlry-badge-pomo: {{ ansi.bright.red }}; /* Alert Red: pomodoro demands attention */
}
.owlry-main {
background-color: rgba({{ rgb(palette.background) }}, 0.98);
border: 1px solid rgba({{ rgb(ui.border) }}, 0.8);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.8),
0 0 0 1px rgba({{ rgb(palette.cursor) }}, 0.1);
}
.owlry-search {
background-color: rgba({{ rgb(ui.panel) }}, 0.9);
border: 2px solid rgba({{ rgb(ui.border) }}, 0.8);
color: var(--owlry-text);
caret-color: var(--owlry-accent);
}
.owlry-search:focus {
border-color: var(--owlry-accent);
box-shadow: 0 0 0 2px rgba({{ rgb(palette.cursor) }}, 0.3);
}
.owlry-result-row:hover {
background-color: rgba({{ rgb(ui.panel) }}, 0.8);
}
.owlry-result-row:selected {
background-color: rgba({{ rgb(palette.cursor) }}, 0.15);
border-left: 3px solid var(--owlry-accent);
}
.owlry-result-row:selected .owlry-result-name {
color: var(--owlry-accent-bright);
}
.owlry-result-row:selected .owlry-result-icon {
color: var(--owlry-accent);
}
/* Provider badges - styled per Apex semantics */
.owlry-badge-app {
background-color: rgba({{ rgb(palette.info) }}, 0.15);
color: var(--owlry-badge-app);
}
.owlry-badge-bookmark {
background-color: rgba({{ rgb(palette.warning) }}, 0.15);
color: var(--owlry-badge-bookmark);
}
.owlry-badge-calc {
background-color: rgba({{ rgb(ansi.bright.yellow) }}, 0.15);
color: var(--owlry-badge-calc);
}
.owlry-badge-clip {
background-color: rgba({{ rgb(palette.special) }}, 0.15);
color: var(--owlry-badge-clip);
}
.owlry-badge-cmd {
background-color: rgba({{ rgb(palette.special) }}, 0.15);
color: var(--owlry-badge-cmd);
}
.owlry-badge-dmenu {
background-color: rgba({{ rgb(palette.success) }}, 0.15);
color: var(--owlry-badge-dmenu);
}
.owlry-badge-emoji {
background-color: rgba({{ rgb(ansi.bright.magenta) }}, 0.15);
color: var(--owlry-badge-emoji);
}
.owlry-badge-file {
background-color: rgba({{ rgb(ansi.bright.cyan) }}, 0.15);
color: var(--owlry-badge-file);
}
.owlry-badge-script {
background-color: rgba({{ rgb(ansi.bright.green) }}, 0.15);
color: var(--owlry-badge-script);
}
.owlry-badge-ssh {
background-color: rgba({{ rgb(palette.info) }}, 0.15);
color: var(--owlry-badge-ssh);
}
.owlry-badge-sys {
background-color: rgba({{ rgb(palette.cursor) }}, 0.15);
color: var(--owlry-badge-sys);
}
.owlry-badge-uuctl {
background-color: rgba({{ rgb(palette.warning) }}, 0.15);
color: var(--owlry-badge-uuctl);
}
.owlry-badge-web {
background-color: rgba({{ rgb(palette.info) }}, 0.15);
color: var(--owlry-badge-web);
}
/* Widget badges */
.owlry-badge-media {
background-color: rgba({{ rgb(ansi.bright.magenta) }}, 0.15);
color: var(--owlry-badge-media);
}
.owlry-badge-weather {
background-color: rgba({{ rgb(ansi.bright.cyan) }}, 0.15);
color: var(--owlry-badge-weather);
}
.owlry-badge-pomo {
background-color: rgba({{ rgb(ansi.bright.red) }}, 0.15);
color: var(--owlry-badge-pomo);
}
/* Filter button - default uses The Predator */
.owlry-filter-button:checked {
background-color: rgba({{ rgb(palette.cursor) }}, 0.2);
color: var(--owlry-accent);
border-color: rgba({{ rgb(palette.cursor) }}, 0.5);
}

View File

@@ -0,0 +1,4 @@
author: S0wlz (Owlibou)
description: Owlry theme
version: 1.0.0
strategy: individual

View File

@@ -0,0 +1,129 @@
{% macro rgb(hex) -%}
{%- set value = hex|replace('#', '') -%}
{{ value[0:2]|int(base=16) }}, {{ value[2:4]|int(base=16) }}, {{ value[4:6]|int(base=16) }}
{%- endmacro %}
/* {{ scheme }} - Sherlock Theme (Parser Compliant) */
/* 1. PALETTE DEFINITIONS */
@define-color apex_base {{ palette.background }};
@define-color apex_surface {{ ui.panel }};
@define-color apex_overlay {{ ui.border }};
@define-color apex_muted {{ ui.stealth }};
@define-color apex_text {{ palette.foreground }};
@define-color apex_love {{ palette.cursor }};
@define-color apex_foam {{ palette.info }};
@define-color apex_gold {{ palette.warning }};
/* 2. WINDOW & INPUT */
window {
background-color: @apex_base;
color: @apex_text;
border: 2px solid @apex_love;
border-radius: 10px;
padding: 6px;
}
entry {
background-color: @apex_surface;
color: @apex_text;
caret-color: @apex_love;
border: 1px solid @apex_overlay;
border-radius: 7px;
padding: 6px 9px;
margin-bottom: 6px;
}
entry:focus {
border-color: @apex_love;
box-shadow: 0 0 10px rgba({{ rgb(palette.cursor) }}, 0.2);
}
entry selection {
background-color: @apex_foam;
color: {{ palette.selection_fg }};
}
/* 3. LIST & SELECTION */
listview {
background-color: transparent;
}
/* The actual row selection - Informational */
listview > row:selected {
background-color: @apex_foam;
color: {{ palette.selection_fg }};
border-radius: 7px;
border: none;
outline: none;
}
/* 4. TILES (The Items) */
.tile, .launcher-tile, .launcher-item, .item {
background-color: @apex_surface;
color: @apex_text;
border-radius: 7px;
padding: 4px 10px;
margin-bottom: 4px;
}
/* When the ROW is selected, make the TILE transparent so info shows through */
listview > row:selected .tile,
listview > row:selected .launcher-tile,
listview > row:selected .item {
background-color: transparent;
color: {{ palette.selection_fg }};
}
/* Force TEXT on selection */
listview > row:selected label,
listview > row:selected .title,
listview > row:selected .description,
listview > row:selected .subtitle {
color: {{ palette.selection_fg }};
}
/* Force ICONS on selection */
listview > row:selected image,
listview > row:selected .icon {
color: {{ palette.selection_fg }};
}
/* 5. WIDGETS (Weather Fix without !important) */
.widget, .weather-widget, .music-widget {
background-color: @apex_surface;
border: 1px solid @apex_overlay;
color: @apex_text;
border-radius: 7px;
}
/* Specific overrides for weather internals */
.weather-widget box {
background-color: transparent;
}
.weather-widget label {
color: @apex_text;
}
/* Temperature info */
.weather-widget .temperature {
color: @apex_foam;
font-weight: 800;
}
.weather-widget .condition {
color: @apex_muted;
}
/* 6. SCROLLBARS */
scrollbar slider {
background-color: @apex_overlay;
min-width: 6px;
border-radius: 10px;
}
scrollbar slider:hover { background-color: @apex_love; }
progressbar progress {
background-color: @apex_love;
border-radius: 4px;
}

View File

@@ -0,0 +1,4 @@
author: S0wlz (Owlibou)
description: Sherlock launcher theme
version: 1.0.0
strategy: individual

View File

@@ -0,0 +1,17 @@
{% set scheme_slug = scheme|lower|replace(' ', '-') %}
[{{ scheme_slug }}]
text = {{ palette.foreground|replace('#', '') }}
subtext = {{ ui.stealth|replace('#', '') }}
main = {{ palette.background|replace('#', '') }}
sidebar = {{ palette.background|replace('#', '') }}
player = {{ palette.background|replace('#', '') }}
card = {{ ui.panel|replace('#', '') }}
shadow = 000000
selected-row = {{ palette.info|replace('#', '') }}
button = {{ palette.info|replace('#', '') }}
button-active = {{ palette.cursor|replace('#', '') }}
button-disabled = {{ ui.stealth|replace('#', '') }}
tab-active = {{ ui.border|replace('#', '') }}
notification = {{ palette.info|replace('#', '') }}
notification-error = {{ palette.cursor|replace('#', '') }}
misc = {{ palette.warning|replace('#', '') }}

View File

@@ -0,0 +1,4 @@
author: S0wlz (Owlibou)
description: Spicetify theme files
version: 1.0.0
strategy: individual

View File

@@ -0,0 +1 @@
/* {{ scheme }} - Spicetify overrides */