启动时处理配色表
-
\procedure selectpalette(t,f) <<f>>: <$select tiddler=<<t>> index=<<f>> style.width="80%"> <optgroup label={{{ [<f>titlecase[]] }}}> <$list filter="[all[tiddlers+shadows]tag[$:/tags/Palette]color-scheme<f>sort[]]"> <option value=<<currentTiddler>>><$view field="name"/> -- <$view field="description"/></option> </$list> </optgroup> <optgroup label="No Color Scheme or Other Scheme"> <$list filter="[all[tiddlers+shadows]tag[$:/tags/Palette]!has[color-scheme]sort[]]"> <option value=<<currentTiddler>>><$view field="name"/> -- <$view field="description"/></option> </$list> </optgroup> </$select> \end \procedure setpalette() <$tiddler tiddler="apply-light-or-dark-mode"> <$let apply-mode={{{ [{$:/info/darkmode}match[yes]then{light-or-dark-mode-palette##dark}else{light-or-dark-mode-palette##light}] }}}> <$action-setfield $tiddler="$:/palette" $value=<<apply-mode>> $timestamp="no"/> </$let> </$tiddler> \end <$eventcatcher $change=<<setpalette>>> <<selectpalette "light-or-dark-mode-palette" "light">><br> <<selectpalette "light-or-dark-mode-palette" "dark">> </$eventcatcher> <<setpalette>> * [[$:/palette]] ** {{$:/palette}} * [[light-or-dark-mode-palette]] ** light-mode {{light-or-dark-mode-palette##light}} ** dark-mode {{light-or-dark-mode-palette##dark}}
新建一个条目,把上面内容放进去。然后就会有列表可以选择了。选择白天模式和黑暗模式,配置的条目在
light-or-dark-mode-palette
中,这会变成一个json的数据条目。条目名可以修改,但要把其它地方也修改掉,因而要么不改,要改就用批量替换修改。如果你想启动或者刷新wiki时根据系统判断来展示的话,可以增加一个
$:/tags/StartupAction/Browser
标签。通常使用TiddlyWiki搭建网站的人来说,这是比较好的。因为其它人访问你的网站时,系统可能是白天模式也可能是黑暗模式。这可以提供一个较好的阅读体验。以上,下面是吐槽。TiddlyWiki这一点还是不太行,像Obsidian,思源笔记,或者大多数的软件,都能支持直接获取系统的黑暗模式和白天模式,完全不用自己手动刷新。其实这个方案,我见到最早的是由sttoct提出的,他也提到了要自动化处理可能需要外部js,于是就此作罢。
更新,增加了没有color-scheme字段的筛选器表达式,同时也增加了排序,没有排序看起来太混乱了。
-
https://talk.tiddlywiki.org/t/unexpected-problem-with-tag-pills-on-program-startup/
另外,可参阅上面论坛的讨论,大胡子进一步优化了代码。可以从这些讨论过程中学到很多。