use palette.nu # Generate an aerc styleset from Nugu's semantic palette. # aerc stylesets use flat object.attribute = value entries plus a [viewer] # section for the built-in colorize filter. export def theme [mode: string] { let nugu = (palette nugu $mode) let p = $nugu.palette let main = [ "*.default=true" "*.normal=true" $"default.fg=($p.content.normal)" $"default.bg=($p.content.backdrop)" $"error.fg=($p.error)" "error.bold=true" $"warning.fg=($p.warning)" "warning.bold=true" $"success.fg=($p.content.focus)" "success.bold=true" $"title.fg=($p.ui.important_global)" $"title.bg=($p.ui.backdrop)" "title.bold=true" $"header.fg=($p.content.important_local)" "header.bold=true" $"border.fg=($p.ui.minor)" $"border.bg=($p.ui.backdrop)" $"tab.fg=($p.ui.minor)" $"tab.bg=($p.ui.backdrop)" $"tab.selected.fg=($p.content.normal)" $"tab.selected.bg=($p.ui.focus)" "tab.selected.bold=true" $"statusline_default.fg=($p.ui.normal)" $"statusline_default.bg=($p.ui.backdrop)" $"statusline_error.fg=($p.error)" "statusline_error.bold=true" $"statusline_success.fg=($p.content.focus)" "statusline_success.bold=true" $"msglist_default.fg=($p.content.normal)" $"msglist_default.bg=($p.content.backdrop)" $"msglist_read.fg=($p.content.minor)" $"msglist_unread.fg=($p.content.normal)" "msglist_unread.bold=true" $"msglist_answered.fg=($p.info)" $"msglist_forwarded.fg=($p.content.focus)" $"msglist_flagged.fg=($p.content.important_local)" "msglist_flagged.bold=true" $"msglist_deleted.fg=($p.content.unfocus)" "msglist_deleted.dim=true" $"msglist_result.fg=($p.content.accent)" "msglist_result.bold=true" $"msglist_marked.fg=($p.ui.backdrop)" $"msglist_marked.bg=($p.ui.important_local)" $"msglist_thread_folded.fg=($p.content.important_global)" "msglist_thread_folded.bold=true" $"msglist_thread_context.fg=($p.content.unfocus)" $"msglist_thread_orphan.fg=($p.warning)" $"msglist_pill.fg=($p.ui.backdrop)" $"msglist_pill.bg=($p.ui.accent)" $"msglist_*.selected.fg=($p.ui.backdrop)" $"msglist_*.selected.bg=($p.ui.focus)" "msglist_*.selected.bold=true" $"dirlist_default.fg=($p.ui.normal)" $"dirlist_default.bg=($p.ui.backdrop)" $"dirlist_unread.fg=($p.ui.important_global)" "dirlist_unread.bold=true" $"dirlist_recent.fg=($p.ui.accent)" $"dirlist_*.selected.fg=($p.ui.backdrop)" $"dirlist_*.selected.bg=($p.ui.focus)" "dirlist_*.selected.bold=true" $"completion_default.fg=($p.ui.normal)" $"completion_default.bg=($p.ui.backdrop)" $"completion_default.selected.fg=($p.ui.backdrop)" $"completion_default.selected.bg=($p.ui.focus)" $"completion_description.fg=($p.ui.minor)" "completion_description.dim=true" $"completion_gutter.bg=($p.ui.backdrop)" $"completion_pill.fg=($p.ui.backdrop)" $"completion_pill.bg=($p.ui.accent)" $"part_switcher.fg=($p.ui.normal)" $"part_switcher.bg=($p.ui.backdrop)" $"part_filename.fg=($p.content.important_local)" $"part_mimetype.fg=($p.info)" $"part_*.selected.fg=($p.ui.backdrop)" $"part_*.selected.bg=($p.ui.focus)" $"selector_default.fg=($p.ui.normal)" $"selector_default.bg=($p.ui.backdrop)" $"selector_chooser.fg=($p.ui.accent)" "selector_chooser.bold=true" $"selector_focused.fg=($p.ui.backdrop)" $"selector_focused.bg=($p.ui.focus)" "selector_focused.bold=true" $"stack.fg=($p.ui.normal)" $"stack.bg=($p.ui.backdrop)" $"spinner.fg=($p.ui.accent)" ] let viewer = [ "" "[viewer]" "*.default=true" "*.normal=true" $"url.fg=($p.content.accent)" "url.underline=true" $"header.fg=($p.content.important_local)" "header.bold=true" $"signature.fg=($p.content.minor)" "signature.dim=true" $"diff_meta.fg=($p.content.important_global)" "diff_meta.bold=true" $"diff_chunk.fg=($p.info)" $"diff_chunk_func.fg=($p.info)" "diff_chunk_func.bold=true" $"diff_add.fg=($p.content.focus)" $"diff_del.fg=($p.error)" $"quote_1.fg=($p.content.minor)" $"quote_2.fg=($p.content.unfocus)" $"quote_3.fg=($p.content.important_global)" "quote_3.dim=true" $"quote_4.fg=($p.content.important_local)" "quote_4.dim=true" $"quote_x.fg=($p.content.accent)" "quote_x.dim=true" ] ($main ++ $viewer) | str join (char newline) }