aboutsummaryrefslogtreecommitdiff
path: root/scripts/theme-selector/generate.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/theme-selector/generate.py')
-rw-r--r--scripts/theme-selector/generate.py158
1 files changed, 136 insertions, 22 deletions
diff --git a/scripts/theme-selector/generate.py b/scripts/theme-selector/generate.py
index 696592fa..d6832084 100644
--- a/scripts/theme-selector/generate.py
+++ b/scripts/theme-selector/generate.py
@@ -38,28 +38,142 @@ UIMAP={"cursor":{"fg":None,"bg":"#a9b2bb"},"region":{"fg":None,"bg":"#264364"},
"show-paren-mismatch":{"fg":"#0d0b0a","bg":"#cb6b4d"},"link":{"fg":"#67809c","bg":None},
"error":{"fg":"#cb6b4d","bg":None},"warning":{"fg":"#e8bd30","bg":None},
"success":{"fg":"#5d9b86","bg":None},"vertical-border":{"fg":"#2f343a","bg":None}}
-# Tier-3 package faces. Phase 1 ships the schema + an org starter; Phase 2 fills
-# the complete org/magit/elfeed sets. Defaults reference palette names.
-APPS={"org-mode":{"label":"org-mode","preview":"org","faces":[
- ["org-document-title","document title",{"fg":"gold","bold":True,"height":1.5}],
- ["org-level-1","heading 1",{"fg":"blue","bold":True,"height":1.3}],
- ["org-level-2","heading 2",{"fg":"gold","height":1.2}],
- ["org-level-3","heading 3",{"fg":"regal","height":1.15}],
- ["org-todo","TODO keyword",{"fg":"terracotta","bold":True}],
- ["org-done","DONE keyword",{"fg":"sage","bold":True}],
- ["org-link","link",{"fg":"blue"}],
- ["org-code","inline code",{"fg":"terracotta","inherit":"fixed-pitch"}],
- ["org-verbatim","verbatim",{"fg":"steel","inherit":"fixed-pitch"}],
- ["org-block","src block body",{"fg":"white","bg":"bg-dim","inherit":"fixed-pitch"}],
- ["org-block-begin-line","block delim",{"fg":"pewter","bg":"bg-dim","inherit":"fixed-pitch"}],
- ["org-table","table",{"fg":"steel","inherit":"fixed-pitch"}],
- ["org-date","timestamp",{"fg":"steel","inherit":"fixed-pitch"}],
- ["org-tag","tag",{"fg":"tan"}],
- ["org-special-keyword","keyword/drawer",{"fg":"pewter"}],
- ["org-meta-line","#+meta line",{"fg":"pewter","inherit":"fixed-pitch"}],
- ["org-checkbox","checkbox",{"fg":"gold","inherit":"fixed-pitch"}],
- ["org-headline-done","done headline",{"fg":"pewter"}]
-]}}
+# Tier-3 package faces (Phase 2): complete own-defface sets for org/magit/elfeed,
+# built from face-name lists + a curated seed-color map. Prominent faces are
+# seeded; the long tail seeds to the default foreground for the user to tune.
+ORG_FACES=("org-document-title org-document-info org-document-info-keyword "
+ "org-level-1 org-level-2 org-level-3 org-level-4 org-level-5 org-level-6 org-level-7 org-level-8 "
+ "org-headline-todo org-headline-done org-todo org-done org-priority org-tag org-tag-group "
+ "org-special-keyword org-drawer org-property-value org-checkbox org-checkbox-statistics-todo "
+ "org-checkbox-statistics-done org-warning org-link org-footnote org-date org-sexp-date "
+ "org-date-selected org-target org-macro org-cite org-cite-key org-block org-block-begin-line "
+ "org-block-end-line org-code org-verbatim org-inline-src-block org-quote org-verse "
+ "org-latex-and-related org-table org-table-header org-table-row org-formula org-column "
+ "org-column-title org-list-dt org-meta-line org-ellipsis org-hide org-indent org-archived "
+ "org-default org-dispatcher-highlight org-agenda-structure org-agenda-structure-secondary "
+ "org-agenda-structure-filter org-agenda-date org-agenda-date-today org-agenda-date-weekend "
+ "org-agenda-date-weekend-today org-agenda-current-time org-agenda-done org-agenda-dimmed-todo-face "
+ "org-agenda-calendar-event org-agenda-calendar-sexp org-agenda-calendar-daterange org-agenda-diary "
+ "org-agenda-clocking org-agenda-column-dateline org-agenda-restriction-lock org-agenda-filter-category "
+ "org-agenda-filter-effort org-agenda-filter-regexp org-agenda-filter-tags org-scheduled "
+ "org-scheduled-today org-scheduled-previously org-upcoming-deadline org-upcoming-distant-deadline "
+ "org-imminent-deadline org-time-grid org-clock-overlay org-mode-line-clock org-mode-line-clock-overrun").split()
+MAGIT_FACES=("magit-section-heading magit-section-secondary-heading magit-section-heading-selection "
+ "magit-section-highlight magit-section-child-count magit-diff-added magit-diff-added-highlight "
+ "magit-diff-removed magit-diff-removed-highlight magit-diff-context magit-diff-context-highlight "
+ "magit-diff-file-heading magit-diff-file-heading-highlight magit-diff-file-heading-selection "
+ "magit-diff-hunk-heading magit-diff-hunk-heading-highlight magit-diff-hunk-heading-selection "
+ "magit-diff-hunk-region magit-diff-lines-heading magit-diff-lines-boundary magit-diff-base "
+ "magit-diff-base-highlight magit-diff-our magit-diff-our-highlight magit-diff-their "
+ "magit-diff-their-highlight magit-diff-conflict-heading magit-diff-conflict-heading-highlight "
+ "magit-diff-revision-summary magit-diff-revision-summary-highlight magit-diff-whitespace-warning "
+ "magit-diffstat-added magit-diffstat-removed magit-branch-current magit-branch-local "
+ "magit-branch-remote magit-branch-remote-head magit-branch-upstream magit-branch-warning "
+ "magit-head magit-tag magit-hash magit-filename magit-dimmed magit-keyword magit-keyword-squash "
+ "magit-refname magit-refname-stash magit-refname-wip magit-refname-pullreq magit-log-author "
+ "magit-log-date magit-log-graph magit-header-line magit-header-line-key magit-header-line-log-select "
+ "magit-process-ok magit-process-ng magit-mode-line-process magit-mode-line-process-error "
+ "magit-bisect-good magit-bisect-bad magit-bisect-skip magit-blame-heading magit-blame-highlight "
+ "magit-blame-hash magit-blame-name magit-blame-date magit-blame-summary magit-blame-dimmed "
+ "magit-blame-margin magit-cherry-equivalent magit-cherry-unmatched magit-signature-good "
+ "magit-signature-bad magit-signature-untrusted magit-signature-expired magit-signature-expired-key "
+ "magit-signature-revoked magit-signature-error magit-reflog-commit magit-reflog-amend "
+ "magit-reflog-merge magit-reflog-checkout magit-reflog-reset magit-reflog-rebase "
+ "magit-reflog-cherry-pick magit-reflog-remote magit-reflog-other magit-sequence-pick "
+ "magit-sequence-stop magit-sequence-part magit-sequence-head magit-sequence-drop magit-sequence-done "
+ "magit-sequence-onto magit-sequence-exec magit-left-margin").split()
+ELFEED_FACES=("elfeed-search-date-face elfeed-search-title-face elfeed-search-unread-title-face "
+ "elfeed-search-feed-face elfeed-search-tag-face elfeed-search-unread-count-face "
+ "elfeed-search-filter-face elfeed-search-last-update-face elfeed-log-date-face "
+ "elfeed-log-error-level-face elfeed-log-warn-level-face elfeed-log-info-level-face "
+ "elfeed-log-debug-level-face").split()
+ORG_SEED={
+ "org-document-title":{"fg":"gold","bold":True,"height":1.5},"org-document-info":{"fg":"steel"},
+ "org-document-info-keyword":{"fg":"pewter","inherit":"fixed-pitch"},
+ "org-level-1":{"fg":"blue","bold":True,"height":1.3},"org-level-2":{"fg":"gold","height":1.2},
+ "org-level-3":{"fg":"regal","height":1.15},"org-level-4":{"fg":"emerald","height":1.1},
+ "org-level-5":{"fg":"terracotta"},"org-level-6":{"fg":"tan"},"org-level-7":{"fg":"sage"},"org-level-8":{"fg":"steel"},
+ "org-headline-done":{"fg":"pewter"},"org-todo":{"fg":"terracotta","bold":True},"org-done":{"fg":"sage","bold":True},
+ "org-priority":{"fg":"gold","bold":True},"org-tag":{"fg":"tan"},"org-tag-group":{"fg":"tan"},
+ "org-special-keyword":{"fg":"pewter"},"org-drawer":{"fg":"pewter"},"org-property-value":{"fg":"steel"},
+ "org-checkbox":{"fg":"gold","inherit":"fixed-pitch"},"org-checkbox-statistics-todo":{"fg":"terracotta"},
+ "org-checkbox-statistics-done":{"fg":"sage"},"org-warning":{"fg":"terracotta","bold":True},
+ "org-link":{"fg":"blue"},"org-footnote":{"fg":"blue"},"org-date":{"fg":"steel","inherit":"fixed-pitch"},
+ "org-sexp-date":{"fg":"steel"},"org-date-selected":{"fg":"ground","bg":"gold"},"org-target":{"fg":"regal"},
+ "org-macro":{"fg":"regal"},"org-cite":{"fg":"blue"},"org-cite-key":{"fg":"blue"},
+ "org-block":{"fg":"white","bg":"bg-dim","inherit":"fixed-pitch"},
+ "org-block-begin-line":{"fg":"pewter","bg":"bg-dim","inherit":"fixed-pitch"},
+ "org-block-end-line":{"fg":"pewter","bg":"bg-dim","inherit":"fixed-pitch"},
+ "org-code":{"fg":"terracotta","inherit":"fixed-pitch"},"org-verbatim":{"fg":"steel","inherit":"fixed-pitch"},
+ "org-inline-src-block":{"fg":"terracotta","inherit":"fixed-pitch"},"org-quote":{"fg":"silver","italic":True},
+ "org-verse":{"fg":"silver","italic":True},"org-latex-and-related":{"fg":"gold"},
+ "org-table":{"fg":"steel","inherit":"fixed-pitch"},"org-table-header":{"fg":"white","bold":True,"bg":"gunmetal"},
+ "org-formula":{"fg":"terracotta"},"org-column":{"bg":"gunmetal"},"org-column-title":{"fg":"white","bold":True,"bg":"gunmetal"},
+ "org-list-dt":{"fg":"gold","bold":True},"org-meta-line":{"fg":"pewter","inherit":"fixed-pitch"},
+ "org-ellipsis":{"fg":"pewter"},"org-hide":{"fg":"ground"},"org-indent":{"fg":"ground"},
+ "org-archived":{"fg":"pewter"},"org-dispatcher-highlight":{"fg":"gold","bold":True,"bg":"navy"},
+ "org-agenda-structure":{"fg":"blue","bold":True,"height":1.1},"org-agenda-structure-secondary":{"fg":"blue"},
+ "org-agenda-structure-filter":{"fg":"terracotta","bold":True},"org-agenda-date":{"fg":"steel","height":1.05},
+ "org-agenda-date-today":{"fg":"gold","bold":True,"height":1.05},"org-agenda-date-weekend":{"fg":"steel","bold":True},
+ "org-agenda-date-weekend-today":{"fg":"gold","bold":True},"org-agenda-current-time":{"fg":"gold"},
+ "org-agenda-done":{"fg":"sage"},"org-agenda-dimmed-todo-face":{"fg":"pewter"},
+ "org-agenda-calendar-event":{"fg":"white"},"org-agenda-calendar-sexp":{"fg":"steel"},
+ "org-agenda-calendar-daterange":{"fg":"steel"},"org-agenda-diary":{"fg":"sage"},
+ "org-agenda-clocking":{"bg":"navy"},"org-agenda-column-dateline":{"bg":"gunmetal"},
+ "org-agenda-restriction-lock":{"bg":"terracotta"},"org-agenda-filter-category":{"fg":"gold","bold":True},
+ "org-agenda-filter-effort":{"fg":"gold","bold":True},"org-agenda-filter-regexp":{"fg":"gold","bold":True},
+ "org-agenda-filter-tags":{"fg":"gold","bold":True},"org-scheduled":{"fg":"sage"},
+ "org-scheduled-today":{"fg":"sage","bold":True},"org-scheduled-previously":{"fg":"terracotta"},
+ "org-upcoming-deadline":{"fg":"gold"},"org-upcoming-distant-deadline":{"fg":"tan"},
+ "org-imminent-deadline":{"fg":"terracotta","bold":True},"org-time-grid":{"fg":"tan"},
+ "org-clock-overlay":{"bg":"navy"},"org-mode-line-clock":{"fg":"steel"},"org-mode-line-clock-overrun":{"fg":"terracotta","bold":True}}
+MAGIT_SEED={
+ "magit-section-heading":{"fg":"gold","bold":True},"magit-section-secondary-heading":{"fg":"tan","bold":True},
+ "magit-section-heading-selection":{"fg":"gold","bg":"navy"},"magit-section-highlight":{"bg":"bg-dim"},
+ "magit-section-child-count":{"fg":"pewter"},"magit-diff-added":{"fg":"sage"},
+ "magit-diff-added-highlight":{"fg":"sage","bg":"bg-dim"},"magit-diff-removed":{"fg":"terracotta"},
+ "magit-diff-removed-highlight":{"fg":"terracotta","bg":"bg-dim"},"magit-diff-context":{"fg":"pewter"},
+ "magit-diff-context-highlight":{"fg":"silver","bg":"bg-dim"},"magit-diff-file-heading":{"fg":"white","bold":True},
+ "magit-diff-file-heading-highlight":{"fg":"white","bold":True,"bg":"bg-dim"},
+ "magit-diff-hunk-heading":{"fg":"steel","bg":"gunmetal"},"magit-diff-hunk-heading-highlight":{"fg":"white","bg":"gunmetal"},
+ "magit-diffstat-added":{"fg":"sage"},"magit-diffstat-removed":{"fg":"terracotta"},
+ "magit-branch-current":{"fg":"blue","bold":True},"magit-branch-local":{"fg":"blue"},
+ "magit-branch-remote":{"fg":"sage"},"magit-branch-remote-head":{"fg":"sage","bold":True},
+ "magit-head":{"fg":"blue","bold":True},"magit-tag":{"fg":"gold"},"magit-hash":{"fg":"pewter"},
+ "magit-filename":{"fg":"steel"},"magit-dimmed":{"fg":"pewter"},"magit-keyword":{"fg":"regal"},
+ "magit-keyword-squash":{"fg":"terracotta"},"magit-refname":{"fg":"pewter"},"magit-log-author":{"fg":"tan"},
+ "magit-log-date":{"fg":"steel"},"magit-log-graph":{"fg":"pewter"},
+ "magit-header-line":{"fg":"white","bold":True,"bg":"gunmetal"},"magit-process-ok":{"fg":"sage","bold":True},
+ "magit-process-ng":{"fg":"terracotta","bold":True},"magit-mode-line-process":{"fg":"sage"},
+ "magit-mode-line-process-error":{"fg":"terracotta"},"magit-bisect-good":{"fg":"sage"},
+ "magit-bisect-bad":{"fg":"terracotta"},"magit-bisect-skip":{"fg":"gold"},
+ "magit-blame-heading":{"fg":"steel","bg":"gunmetal"},"magit-blame-hash":{"fg":"pewter"},
+ "magit-blame-name":{"fg":"tan"},"magit-blame-date":{"fg":"steel"},"magit-cherry-equivalent":{"fg":"regal"},
+ "magit-cherry-unmatched":{"fg":"sage"},"magit-signature-good":{"fg":"sage"},
+ "magit-signature-bad":{"fg":"terracotta","bold":True},"magit-signature-untrusted":{"fg":"gold"},
+ "magit-signature-expired":{"fg":"tan"},"magit-diff-whitespace-warning":{"bg":"terracotta"},
+ "magit-reflog-commit":{"fg":"sage"},"magit-reflog-amend":{"fg":"regal"},"magit-reflog-merge":{"fg":"sage"},
+ "magit-reflog-checkout":{"fg":"blue"},"magit-reflog-reset":{"fg":"terracotta"},"magit-reflog-rebase":{"fg":"regal"},
+ "magit-reflog-cherry-pick":{"fg":"sage"},"magit-reflog-remote":{"fg":"steel"},"magit-reflog-other":{"fg":"steel"},
+ "magit-sequence-pick":{"fg":"white"},"magit-sequence-stop":{"fg":"terracotta"},"magit-sequence-done":{"fg":"pewter"},
+ "magit-sequence-head":{"fg":"blue"}}
+ELFEED_SEED={
+ "elfeed-search-date-face":{"fg":"steel"},"elfeed-search-title-face":{"fg":"silver"},
+ "elfeed-search-unread-title-face":{"fg":"white","bold":True},"elfeed-search-feed-face":{"fg":"sage"},
+ "elfeed-search-tag-face":{"fg":"tan"},"elfeed-search-unread-count-face":{"fg":"gold"},
+ "elfeed-search-filter-face":{"fg":"blue","bold":True},"elfeed-search-last-update-face":{"fg":"pewter"},
+ "elfeed-log-date-face":{"fg":"steel"},"elfeed-log-error-level-face":{"fg":"terracotta","bold":True},
+ "elfeed-log-warn-level-face":{"fg":"gold"},"elfeed-log-info-level-face":{"fg":"sage"},
+ "elfeed-log-debug-level-face":{"fg":"pewter"}}
+def _faces(names,prefix,seed):
+ out=[]
+ for f in names:
+ lbl=(f[len(prefix):] if f.startswith(prefix) else f).replace("-face","").replace("-"," ")
+ out.append([f,lbl,seed.get(f,{})])
+ return out
+APPS={"org-mode":{"label":"org-mode","preview":"org","faces":_faces(ORG_FACES,"org-",ORG_SEED)},
+ "magit":{"label":"magit","preview":"magit","faces":_faces(MAGIT_FACES,"magit-",MAGIT_SEED)},
+ "elfeed":{"label":"elfeed","preview":"elfeed","faces":_faces(ELFEED_FACES,"elfeed-",ELFEED_SEED)}}
HTML = """<!doctype html><meta charset=utf-8><title>theme-selector</title>
<style>
body{background:#0d0b0a;color:#cdced1;font:15px/1.55 monospace;margin:20px}