Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@
# Sources generated theme files from themes/dreamcoder/ (synced from tokens.json).
# No hardcoded colors — the .sh files are the single source of truth.

# The persisted live mode wins over an inherited value: a long-lived parent
# (e.g. a Herdr server started before the last mode switch) exports a stale one.
set -l mode_cache "$HOME/.cache/dreamcoder/cursor-cli.env"
if test -f "$mode_cache"
set -l persisted (string match -rg '^(?:export )?DREAMCODER_THEME_MODE="?(light|dark)"?$' <"$mode_cache")
test -n "$persisted"; and set -gx DREAMCODER_THEME_MODE $persisted[1]
end
set -q DREAMCODER_THEME_MODE; or set -gx DREAMCODER_THEME_MODE dark
set -q COLORTERM; or set -gx COLORTERM truecolor
set -gx FORCE_COLOR 3
Expand Down
2 changes: 1 addition & 1 deletion DreamcoderThemes/dreamcoder/ls-colors-dreamcoder-dark.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
set -euo pipefail
# Dreamcoder Dark — LS_COLORS / eza
export LS_COLORS='di=38;2;165;180;252:ex=38;2;212;181;253:ln=38;2;125;211;252:or=48;2;251;191;36;38;2;230;230;230:so=38;2;52;211;153:pi=38;2;251;191;36:bd=38;2;251;133;133:cd=38;2;251;133;133:su=48;2;0;0;0;38;2;212;181;253:sg=48;2;0;0;0;38;2;212;181;253:tw=38;2;165;180;252;48;2;11;11;11:ow=38;2;165;180;252;48;2;11;11;11:st=38;2;165;180;252;48;2;13;13;15:*.sh=38;2;212;181;253:*.bash=38;2;212;181;253:*.zsh=38;2;212;181;253:*.fish=38;2;212;181;253:*.py=38;2;212;181;253:*.rb=38;2;212;181;253:*.rs=38;2;212;181;253:*.go=38;2;212;181;253:*.ts=38;2;212;181;253:*.js=38;2;212;181;253:*.jpg=38;2;216;180;254:*.jpeg=38;2;216;180;254:*.png=38;2;216;180;254:*.gif=38;2;216;180;254:*.bmp=38;2;216;180;254:*.svg=38;2;216;180;254:*.webp=38;2;216;180;254:*.ico=38;2;216;180;254:*.mp3=38;2;216;180;254:*.wav=38;2;216;180;254:*.flac=38;2;216;180;254:*.ogg=38;2;216;180;254:*.m4a=38;2;216;180;254:*.mp4=38;2;216;180;254:*.mkv=38;2;216;180;254:*.webm=38;2;216;180;254:*.mov=38;2;216;180;254:*.pdf=38;2;199;199;199:*.doc=38;2;199;199;199:*.docx=38;2;199;199;199:*.odt=38;2;199;199;199:*.xls=38;2;199;199;199:*.xlsx=38;2;199;199;199:*.ppt=38;2;199;199;199:*.pptx=38;2;199;199;199:*.txt=38;2;199;199;199:*.cfg=38;2;199;199;199:*.conf=38;2;199;199;199:*.json=38;2;199;199;199:*.yaml=38;2;199;199;199:*.yml=38;2;199;199;199:*.toml=38;2;199;199;199:*.xml=38;2;199;199;199:*.css=38;2;199;199;199:*.html=38;2;199;199;199:*.c=38;2;199;199;199:*.h=38;2;199;199;199:*.cpp=38;2;199;199;199:*.hpp=38;2;199;199;199:*.swp=38;2;199;199;199:*.swo=38;2;199;199;199:*.bak=38;2;199;199;199:*.orig=38;2;199;199;199:*.md=#A5B4FC'
export LS_COLORS='di=38;2;165;180;252:ex=38;2;212;181;253:ln=38;2;125;211;252:or=48;2;251;191;36;38;2;0;0;0:so=38;2;52;211;153:pi=38;2;251;191;36:bd=38;2;251;133;133:cd=38;2;251;133;133:su=48;2;0;0;0;38;2;212;181;253:sg=48;2;0;0;0;38;2;212;181;253:tw=38;2;165;180;252;48;2;11;11;11:ow=38;2;165;180;252;48;2;11;11;11:st=38;2;165;180;252;48;2;11;11;11:*.sh=38;2;212;181;253:*.bash=38;2;212;181;253:*.zsh=38;2;212;181;253:*.fish=38;2;212;181;253:*.py=38;2;212;181;253:*.rb=38;2;212;181;253:*.rs=38;2;212;181;253:*.go=38;2;212;181;253:*.ts=38;2;212;181;253:*.js=38;2;212;181;253:*.jpg=38;2;216;180;254:*.jpeg=38;2;216;180;254:*.png=38;2;216;180;254:*.gif=38;2;216;180;254:*.bmp=38;2;216;180;254:*.svg=38;2;216;180;254:*.webp=38;2;216;180;254:*.ico=38;2;216;180;254:*.mp3=38;2;216;180;254:*.wav=38;2;216;180;254:*.flac=38;2;216;180;254:*.ogg=38;2;216;180;254:*.m4a=38;2;216;180;254:*.mp4=38;2;216;180;254:*.mkv=38;2;216;180;254:*.webm=38;2;216;180;254:*.mov=38;2;216;180;254:*.pdf=38;2;199;199;199:*.doc=38;2;199;199;199:*.docx=38;2;199;199;199:*.odt=38;2;199;199;199:*.xls=38;2;199;199;199:*.xlsx=38;2;199;199;199:*.ppt=38;2;199;199;199:*.pptx=38;2;199;199;199:*.txt=38;2;199;199;199:*.cfg=38;2;199;199;199:*.conf=38;2;199;199;199:*.json=38;2;199;199;199:*.yaml=38;2;199;199;199:*.yml=38;2;199;199;199:*.toml=38;2;199;199;199:*.xml=38;2;199;199;199:*.css=38;2;199;199;199:*.html=38;2;199;199;199:*.c=38;2;199;199;199:*.h=38;2;199;199;199:*.cpp=38;2;199;199;199:*.hpp=38;2;199;199;199:*.swp=38;2;199;199;199:*.swo=38;2;199;199;199:*.bak=38;2;199;199;199:*.orig=38;2;199;199;199:*.md=#A5B4FC'
export EZA_COLORS='di=38;2;165;180;252:ex=38;2;212;181;253:ln=38;2;125;211;252:so=38;2;52;211;153:pi=38;2;251;191;36:bd=38;2;251;133;133:cd=38;2;251;133;133:uw=38;2;251;191;36:ux=38;2;251;133;133:gwx=38;2;251;191;36:*.md=#A5B4FC'
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
set -euo pipefail
# Dreamcoder Light — LS_COLORS / eza
export LS_COLORS='di=38;2;130;79;22:ex=38;2;167;71;28:ln=38;2;13;74;104:or=48;2;101;67;0;38;2;23;18;13:so=38;2;49;91;49:pi=38;2;101;67;0:bd=38;2;132;47;36:cd=38;2;132;47;36:su=48;2;243;234;220;38;2;167;71;28:sg=48;2;243;234;220;38;2;167;71;28:tw=38;2;130;79;22;48;2;255;247;234:ow=38;2;130;79;22;48;2;255;247;234:st=38;2;130;79;22;48;2;222;203;177:*.tar=38;2;87;71;139:*.tgz=38;2;87;71;139:*.gz=38;2;87;71;139:*.bz2=38;2;87;71;139:*.xz=38;2;87;71;139:*.zst=38;2;87;71;139:*.zip=38;2;87;71;139:*.7z=38;2;87;71;139:*.rar=38;2;87;71;139:*.iso=38;2;87;71;139:*.dmg=38;2;87;71;139:*.jpg=38;2;125;62;100:*.jpeg=38;2;125;62;100:*.png=38;2;125;62;100:*.gif=38;2;125;62;100:*.bmp=38;2;125;62;100:*.svg=38;2;125;62;100:*.webp=38;2;125;62;100:*.ico=38;2;125;62;100:*.mp3=38;2;125;62;100:*.wav=38;2;125;62;100:*.flac=38;2;125;62;100:*.ogg=38;2;125;62;100:*.m4a=38;2;125;62;100:*.mp4=38;2;125;62;100:*.mkv=38;2;125;62;100:*.webm=38;2;125;62;100:*.mov=38;2;125;62;100:*.pdf=38;2;53;46;34:*.doc=38;2;53;46;34:*.docx=38;2;53;46;34:*.odt=38;2;53;46;34:*.xls=38;2;53;46;34:*.xlsx=38;2;53;46;34:*.ppt=38;2;53;46;34:*.pptx=38;2;53;46;34:*.txt=38;2;53;46;34:*.cfg=38;2;53;46;34:*.conf=38;2;53;46;34:*.json=38;2;53;46;34:*.yaml=38;2;53;46;34:*.yml=38;2;53;46;34:*.toml=38;2;53;46;34:*.xml=38;2;53;46;34:*.css=38;2;53;46;34:*.html=38;2;53;46;34:*.c=38;2;53;46;34:*.h=38;2;53;46;34:*.cpp=38;2;53;46;34:*.hpp=38;2;53;46;34:*.swp=38;2;53;46;34:*.swo=38;2;53;46;34:*.bak=38;2;53;46;34:*.orig=38;2;53;46;34:*.sh=38;2;167;71;28:*.bash=38;2;167;71;28:*.zsh=38;2;167;71;28:*.fish=38;2;167;71;28:*.py=38;2;167;71;28:*.rb=38;2;167;71;28:*.rs=38;2;167;71;28:*.go=38;2;167;71;28:*.ts=38;2;167;71;28:*.js=38;2;167;71;28:*.md=#824f16'
export LS_COLORS='di=38;2;130;79;22:ex=38;2;167;71;28:ln=38;2;13;74;104:or=48;2;101;67;0;38;2;243;234;220:so=38;2;49;91;49:pi=38;2;101;67;0:bd=38;2;132;47;36:cd=38;2;132;47;36:su=48;2;243;234;220;38;2;167;71;28:sg=48;2;243;234;220;38;2;167;71;28:tw=38;2;130;79;22;48;2;255;247;234:ow=38;2;130;79;22;48;2;255;247;234:st=38;2;130;79;22;48;2;255;247;234:*.tar=38;2;87;71;139:*.tgz=38;2;87;71;139:*.gz=38;2;87;71;139:*.bz2=38;2;87;71;139:*.xz=38;2;87;71;139:*.zst=38;2;87;71;139:*.zip=38;2;87;71;139:*.7z=38;2;87;71;139:*.rar=38;2;87;71;139:*.iso=38;2;87;71;139:*.dmg=38;2;87;71;139:*.jpg=38;2;125;62;100:*.jpeg=38;2;125;62;100:*.png=38;2;125;62;100:*.gif=38;2;125;62;100:*.bmp=38;2;125;62;100:*.svg=38;2;125;62;100:*.webp=38;2;125;62;100:*.ico=38;2;125;62;100:*.mp3=38;2;125;62;100:*.wav=38;2;125;62;100:*.flac=38;2;125;62;100:*.ogg=38;2;125;62;100:*.m4a=38;2;125;62;100:*.mp4=38;2;125;62;100:*.mkv=38;2;125;62;100:*.webm=38;2;125;62;100:*.mov=38;2;125;62;100:*.pdf=38;2;53;46;34:*.doc=38;2;53;46;34:*.docx=38;2;53;46;34:*.odt=38;2;53;46;34:*.xls=38;2;53;46;34:*.xlsx=38;2;53;46;34:*.ppt=38;2;53;46;34:*.pptx=38;2;53;46;34:*.txt=38;2;53;46;34:*.cfg=38;2;53;46;34:*.conf=38;2;53;46;34:*.json=38;2;53;46;34:*.yaml=38;2;53;46;34:*.yml=38;2;53;46;34:*.toml=38;2;53;46;34:*.xml=38;2;53;46;34:*.css=38;2;53;46;34:*.html=38;2;53;46;34:*.c=38;2;53;46;34:*.h=38;2;53;46;34:*.cpp=38;2;53;46;34:*.hpp=38;2;53;46;34:*.swp=38;2;53;46;34:*.swo=38;2;53;46;34:*.bak=38;2;53;46;34:*.orig=38;2;53;46;34:*.sh=38;2;167;71;28:*.bash=38;2;167;71;28:*.zsh=38;2;167;71;28:*.fish=38;2;167;71;28:*.py=38;2;167;71;28:*.rb=38;2;167;71;28:*.rs=38;2;167;71;28:*.go=38;2;167;71;28:*.ts=38;2;167;71;28:*.js=38;2;167;71;28:*.md=#824f16'
export EZA_COLORS='di=38;2;130;79;22:ex=38;2;167;71;28:ln=38;2;13;74;104:so=38;2;49;91;49:pi=38;2;101;67;0:bd=38;2;132;47;36:cd=38;2;132;47;36:uw=38;2;101;67;0:ux=38;2;132;47;36:gwx=38;2;101;67;0:*.md=#824f16'
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
set -euo pipefail
# Dreamcoder Dark Night — LS_COLORS / eza
export LS_COLORS='di=38;2;164;175;238:ex=38;2;180;140;233:ln=38;2;98;185;226:or=48;2;209;161;38;38;2;198;198;198:so=38;2;67;180;139:pi=38;2;209;161;38:bd=38;2;232;132;132:cd=38;2;232;132;132:su=48;2;0;0;0;38;2;180;140;233:sg=48;2;0;0;0;38;2;180;140;233:tw=38;2;164;175;238;48;2;9;9;9:ow=38;2;164;175;238;48;2;9;9;9:st=38;2;164;175;238;48;2;11;11;13:*.sh=38;2;180;140;233:*.bash=38;2;180;140;233:*.zsh=38;2;180;140;233:*.fish=38;2;180;140;233:*.py=38;2;180;140;233:*.rb=38;2;180;140;233:*.rs=38;2;180;140;233:*.go=38;2;180;140;233:*.ts=38;2;180;140;233:*.js=38;2;180;140;233:*.jpg=38;2;185;139;235:*.jpeg=38;2;185;139;235:*.png=38;2;185;139;235:*.gif=38;2;185;139;235:*.bmp=38;2;185;139;235:*.svg=38;2;185;139;235:*.webp=38;2;185;139;235:*.ico=38;2;185;139;235:*.mp3=38;2;185;139;235:*.wav=38;2;185;139;235:*.flac=38;2;185;139;235:*.ogg=38;2;185;139;235:*.m4a=38;2;185;139;235:*.mp4=38;2;185;139;235:*.mkv=38;2;185;139;235:*.webm=38;2;185;139;235:*.mov=38;2;185;139;235:*.pdf=38;2;171;171;171:*.doc=38;2;171;171;171:*.docx=38;2;171;171;171:*.odt=38;2;171;171;171:*.xls=38;2;171;171;171:*.xlsx=38;2;171;171;171:*.ppt=38;2;171;171;171:*.pptx=38;2;171;171;171:*.txt=38;2;171;171;171:*.cfg=38;2;171;171;171:*.conf=38;2;171;171;171:*.json=38;2;171;171;171:*.yaml=38;2;171;171;171:*.yml=38;2;171;171;171:*.toml=38;2;171;171;171:*.xml=38;2;171;171;171:*.css=38;2;171;171;171:*.html=38;2;171;171;171:*.c=38;2;171;171;171:*.h=38;2;171;171;171:*.cpp=38;2;171;171;171:*.hpp=38;2;171;171;171:*.swp=38;2;171;171;171:*.swo=38;2;171;171;171:*.bak=38;2;171;171;171:*.orig=38;2;171;171;171:*.md=#a4afee'
export LS_COLORS='di=38;2;164;175;238:ex=38;2;180;140;233:ln=38;2;98;185;226:or=48;2;209;161;38;38;2;0;0;0:so=38;2;67;180;139:pi=38;2;209;161;38:bd=38;2;232;132;132:cd=38;2;232;132;132:su=48;2;0;0;0;38;2;180;140;233:sg=48;2;0;0;0;38;2;180;140;233:tw=38;2;164;175;238;48;2;9;9;9:ow=38;2;164;175;238;48;2;9;9;9:st=38;2;164;175;238;48;2;9;9;9:*.sh=38;2;180;140;233:*.bash=38;2;180;140;233:*.zsh=38;2;180;140;233:*.fish=38;2;180;140;233:*.py=38;2;180;140;233:*.rb=38;2;180;140;233:*.rs=38;2;180;140;233:*.go=38;2;180;140;233:*.ts=38;2;180;140;233:*.js=38;2;180;140;233:*.jpg=38;2;185;139;235:*.jpeg=38;2;185;139;235:*.png=38;2;185;139;235:*.gif=38;2;185;139;235:*.bmp=38;2;185;139;235:*.svg=38;2;185;139;235:*.webp=38;2;185;139;235:*.ico=38;2;185;139;235:*.mp3=38;2;185;139;235:*.wav=38;2;185;139;235:*.flac=38;2;185;139;235:*.ogg=38;2;185;139;235:*.m4a=38;2;185;139;235:*.mp4=38;2;185;139;235:*.mkv=38;2;185;139;235:*.webm=38;2;185;139;235:*.mov=38;2;185;139;235:*.pdf=38;2;171;171;171:*.doc=38;2;171;171;171:*.docx=38;2;171;171;171:*.odt=38;2;171;171;171:*.xls=38;2;171;171;171:*.xlsx=38;2;171;171;171:*.ppt=38;2;171;171;171:*.pptx=38;2;171;171;171:*.txt=38;2;171;171;171:*.cfg=38;2;171;171;171:*.conf=38;2;171;171;171:*.json=38;2;171;171;171:*.yaml=38;2;171;171;171:*.yml=38;2;171;171;171:*.toml=38;2;171;171;171:*.xml=38;2;171;171;171:*.css=38;2;171;171;171:*.html=38;2;171;171;171:*.c=38;2;171;171;171:*.h=38;2;171;171;171:*.cpp=38;2;171;171;171:*.hpp=38;2;171;171;171:*.swp=38;2;171;171;171:*.swo=38;2;171;171;171:*.bak=38;2;171;171;171:*.orig=38;2;171;171;171:*.md=#a4afee'
export EZA_COLORS='di=38;2;164;175;238:ex=38;2;180;140;233:ln=38;2;98;185;226:so=38;2;67;180;139:pi=38;2;209;161;38:bd=38;2;232;132;132:cd=38;2;232;132;132:uw=38;2;209;161;38:ux=38;2;232;132;132:gwx=38;2;209;161;38:*.md=#a4afee'
2 changes: 1 addition & 1 deletion DreamcoderThemes/ls-colors-dreamcoder.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
set -euo pipefail
# Dreamcoder Dark — LS_COLORS / eza
export LS_COLORS='di=38;2;165;180;252:ex=38;2;212;181;253:ln=38;2;125;211;252:or=48;2;251;191;36;38;2;230;230;230:so=38;2;52;211;153:pi=38;2;251;191;36:bd=38;2;251;133;133:cd=38;2;251;133;133:su=48;2;0;0;0;38;2;212;181;253:sg=48;2;0;0;0;38;2;212;181;253:tw=38;2;165;180;252;48;2;11;11;11:ow=38;2;165;180;252;48;2;11;11;11:st=38;2;165;180;252;48;2;13;13;15:*.sh=38;2;212;181;253:*.bash=38;2;212;181;253:*.zsh=38;2;212;181;253:*.fish=38;2;212;181;253:*.py=38;2;212;181;253:*.rb=38;2;212;181;253:*.rs=38;2;212;181;253:*.go=38;2;212;181;253:*.ts=38;2;212;181;253:*.js=38;2;212;181;253:*.jpg=38;2;216;180;254:*.jpeg=38;2;216;180;254:*.png=38;2;216;180;254:*.gif=38;2;216;180;254:*.bmp=38;2;216;180;254:*.svg=38;2;216;180;254:*.webp=38;2;216;180;254:*.ico=38;2;216;180;254:*.mp3=38;2;216;180;254:*.wav=38;2;216;180;254:*.flac=38;2;216;180;254:*.ogg=38;2;216;180;254:*.m4a=38;2;216;180;254:*.mp4=38;2;216;180;254:*.mkv=38;2;216;180;254:*.webm=38;2;216;180;254:*.mov=38;2;216;180;254:*.pdf=38;2;199;199;199:*.doc=38;2;199;199;199:*.docx=38;2;199;199;199:*.odt=38;2;199;199;199:*.xls=38;2;199;199;199:*.xlsx=38;2;199;199;199:*.ppt=38;2;199;199;199:*.pptx=38;2;199;199;199:*.txt=38;2;199;199;199:*.cfg=38;2;199;199;199:*.conf=38;2;199;199;199:*.json=38;2;199;199;199:*.yaml=38;2;199;199;199:*.yml=38;2;199;199;199:*.toml=38;2;199;199;199:*.xml=38;2;199;199;199:*.css=38;2;199;199;199:*.html=38;2;199;199;199:*.c=38;2;199;199;199:*.h=38;2;199;199;199:*.cpp=38;2;199;199;199:*.hpp=38;2;199;199;199:*.swp=38;2;199;199;199:*.swo=38;2;199;199;199:*.bak=38;2;199;199;199:*.orig=38;2;199;199;199:*.md=#A5B4FC'
export LS_COLORS='di=38;2;165;180;252:ex=38;2;212;181;253:ln=38;2;125;211;252:or=48;2;251;191;36;38;2;0;0;0:so=38;2;52;211;153:pi=38;2;251;191;36:bd=38;2;251;133;133:cd=38;2;251;133;133:su=48;2;0;0;0;38;2;212;181;253:sg=48;2;0;0;0;38;2;212;181;253:tw=38;2;165;180;252;48;2;11;11;11:ow=38;2;165;180;252;48;2;11;11;11:st=38;2;165;180;252;48;2;11;11;11:*.sh=38;2;212;181;253:*.bash=38;2;212;181;253:*.zsh=38;2;212;181;253:*.fish=38;2;212;181;253:*.py=38;2;212;181;253:*.rb=38;2;212;181;253:*.rs=38;2;212;181;253:*.go=38;2;212;181;253:*.ts=38;2;212;181;253:*.js=38;2;212;181;253:*.jpg=38;2;216;180;254:*.jpeg=38;2;216;180;254:*.png=38;2;216;180;254:*.gif=38;2;216;180;254:*.bmp=38;2;216;180;254:*.svg=38;2;216;180;254:*.webp=38;2;216;180;254:*.ico=38;2;216;180;254:*.mp3=38;2;216;180;254:*.wav=38;2;216;180;254:*.flac=38;2;216;180;254:*.ogg=38;2;216;180;254:*.m4a=38;2;216;180;254:*.mp4=38;2;216;180;254:*.mkv=38;2;216;180;254:*.webm=38;2;216;180;254:*.mov=38;2;216;180;254:*.pdf=38;2;199;199;199:*.doc=38;2;199;199;199:*.docx=38;2;199;199;199:*.odt=38;2;199;199;199:*.xls=38;2;199;199;199:*.xlsx=38;2;199;199;199:*.ppt=38;2;199;199;199:*.pptx=38;2;199;199;199:*.txt=38;2;199;199;199:*.cfg=38;2;199;199;199:*.conf=38;2;199;199;199:*.json=38;2;199;199;199:*.yaml=38;2;199;199;199:*.yml=38;2;199;199;199:*.toml=38;2;199;199;199:*.xml=38;2;199;199;199:*.css=38;2;199;199;199:*.html=38;2;199;199;199:*.c=38;2;199;199;199:*.h=38;2;199;199;199:*.cpp=38;2;199;199;199:*.hpp=38;2;199;199;199:*.swp=38;2;199;199;199:*.swo=38;2;199;199;199:*.bak=38;2;199;199;199:*.orig=38;2;199;199;199:*.md=#A5B4FC'
export EZA_COLORS='di=38;2;165;180;252:ex=38;2;212;181;253:ln=38;2;125;211;252:so=38;2;52;211;153:pi=38;2;251;191;36:bd=38;2;251;133;133:cd=38;2;251;133;133:uw=38;2;251;191;36:ux=38;2;251;133;133:gwx=38;2;251;191;36:*.md=#A5B4FC'
25 changes: 23 additions & 2 deletions docs/configuration/ml4w.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,27 @@ one of those files silently disappears on the next upgrade. The rule:
wallpaper app calls with `$IMAGE_PATH`) between
`# >>> Dreamcoder wallpaper hook >>>` markers. Each run replaces the block, so
re-running it after an ML4W upgrade restores the hook without duplicates.
- **The GTK theme listener is hooked the same way.** ML4W 2.16 runs
`~/.config/ml4w/listeners/gtk-theme-switcher.sh`, which watches
`~/.config/gtk-3.0/settings.ini`. Dreamcoder's own light/dark switch writes
that file, so the listener then runs Matugen over the wallpaper and
overwrites Dreamcoder's colour files (`waybar/colors.css`, `hypr/colors.lua`,
`hypr/colors.conf`, rofi colours) before reloading Quickshell, Waybar, GTK and
swaync. `scripts/apply-ml4w-hooks.sh` inserts a block between
`# >>> Dreamcoder listener hook >>>` markers right after each Matugen call.
The block runs `scripts/dreamcoder sync` synchronously
(`DREAMCODER_THEME_MODE` taken from the branch's `matugen -m dark|light`, or
read from `settings.ini` when the call has no `-m`; `DREAMCODER_WRITE_REPO=0`;
streams to
`~/.cache/dreamcoder/ml4w-listener-sync.log`, 120 s timeout), so the reloads
that follow pick up Dreamcoder colours. The sync never writes `settings.ini`,
so the listener cannot loop. When the file changes, the running listener is
restarted with `~/.config/ml4w/listeners.sh --restart gtk-theme-switcher`
(it keeps the body it parsed at start). A listener without a Matugen call is
left untouched with a warning; a missing listener is skipped. Override the
paths with `ML4W_GTK_LISTENER` and `ML4W_LISTENERS_SCRIPT`. Known gap: with
the Night render profile persisted, `sync` only regenerates repository
artifacts, so the block does not restore live Night colours.
- **waypaper is optional.** ML4W 2.16 no longer installs it; its
`post_command` is hooked only when `~/.config/waypaper/config.ini` exists.
- **Colour files may be regular files.** ML4W 2.16 ships
Expand All @@ -144,7 +165,7 @@ After every ML4W upgrade:

```bash
./scripts/generate-custom-lua.sh # custom.lua (keybinds + colour loader)
./scripts/apply-ml4w-hooks.sh # re-hook the wallpaper runner
./scripts/apply-ml4w-hooks.sh # re-hook the wallpaper runner + GTK listener
./scripts/dreamcoder sync # rewrite colors.lua / colors.conf
./scripts/verify-ml4w-setup.sh
```
Expand Down Expand Up @@ -200,7 +221,7 @@ DreamcoderProfiles/dreamcoder/
└── asus-vivobook15.json # ASUS VivoBook 15 profile (all Fn keys)

tests/ml4w/
├── apply_ml4w_hooks.bats # wallpaper hook (ML4W 2.16 runner fixture)
├── apply_ml4w_hooks.bats # wallpaper + GTK listener hooks (ML4W 2.16 fixtures)
├── args.bats # script argument handling
├── generate_custom_lua.bats # generator, incl. the dreamcoder-colors loader
├── keybindings_variant.bats # dreamcoder.lua vs ML4W 2.16 and the profile
Expand Down
4 changes: 3 additions & 1 deletion lib/hyprland.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ restart_waybar() {
pkill waybar 2>/dev/null || true
sleep 0.3
local launch_script="${HOME}/.config/waybar/launch.sh"
[[ -f "${launch_script}" ]] && "${launch_script}" 2>/dev/null || true
# Detach every stream: the relaunched bar outlives us, and an inherited
# stdout pipe would block any caller capturing our output (theme apply).
[[ -f "${launch_script}" ]] && "${launch_script}" </dev/null >/dev/null 2>&1 || true
fi
}

Expand Down
Loading
Loading