44 lines
1.1 KiB
Bash
Executable file
44 lines
1.1 KiB
Bash
Executable file
# the inline fill/stroke/font-family attributes from the elements it targets.
|
|
#
|
|
# Requires: xmlstarlet
|
|
#
|
|
# Usage:
|
|
# ./svg_theme.sh input.svg # writes to stdout
|
|
# ./svg_theme.sh input.svg output.svg # writes to output.svg
|
|
|
|
STYLE_TEXT='
|
|
@media(prefers-color-scheme: dark){
|
|
:root {
|
|
--color: white;
|
|
}
|
|
}
|
|
@media(prefers-color-scheme: light){
|
|
:root {
|
|
--color: black;
|
|
}
|
|
}
|
|
ellipse, path {
|
|
fill: none;
|
|
stroke: var(--color);
|
|
}
|
|
polygon {
|
|
fill: var(--color);
|
|
stroke: var(--color);
|
|
}
|
|
text {
|
|
fill: var(--color);
|
|
font-family: sans-serif;
|
|
}
|
|
'
|
|
|
|
xmlstarlet ed -O \
|
|
-N s="http://www.w3.org/2000/svg" \
|
|
--insert "/s:svg/*[1]" --type elem --name style \
|
|
--update "/s:svg/style" --value "$STYLE_TEXT" \
|
|
--delete "(/s:svg//s:ellipse|/s:svg//s:path|/s:svg//s:polygon)/@fill" \
|
|
--delete "(/s:svg//s:ellipse|/s:svg//s:path|/s:svg//s:polygon)/@stroke" \
|
|
--delete "/s:svg//s:text/@fill" \
|
|
--delete "/s:svg//s:text/@stroke" \
|
|
--delete "/s:svg//s:text/@font-family" \
|
|
--delete "(/s:svg//s:polygon)[1]"\
|
|
"${1:--}" > "${2:-/dev/stdout}"
|