diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6869319..5ee0c9a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,11 +41,11 @@ jobs: export HOME="$tmp_home" ./bin/boo theme list >/dev/null - for theme_file in themes/*.theme; do + while IFS= read -r theme_file; do theme="${theme_file##*/}" theme="${theme%.theme}" ./bin/boo theme "$theme" >/dev/null - done + done < <(find themes -type f -name '*.theme' | sort) - name: Install smoke test run: | @@ -56,13 +56,12 @@ jobs: "$HOME/.local/bin/boo" theme list >/dev/null count=0 - for theme_file in "$HOME/.config/boo/themes/"*.theme; do - [[ -e "$theme_file" ]] || continue + while IFS= read -r theme_file; do theme="${theme_file##*/}" theme="${theme%.theme}" "$HOME/.local/bin/boo" theme "$theme" >/dev/null count=$((count + 1)) - done + done < <(find "$HOME/.config/boo/themes" -type f -name '*.theme' | sort) if [[ "$count" -eq 0 ]]; then echo "No installed themes found under $HOME/.config/boo/themes" >&2 @@ -77,8 +76,7 @@ jobs: bash scripts/install.sh >/dev/null count=0 - for theme_file in "$HOME/.config/boo/themes/"*.theme; do - [[ -e "$theme_file" ]] || continue + while IFS= read -r theme_file; do theme="${theme_file##*/}" theme="${theme%.theme}" @@ -89,7 +87,7 @@ jobs: exit 1 } count=$((count + 1)) - done + done < <(find "$HOME/.config/boo/themes" -type f -name '*.theme' | sort) if [[ "$count" -eq 0 ]]; then echo "No installed themes found under $HOME/.config/boo/themes" >&2 diff --git a/README.md b/README.md index 2efc8f6..db2395f 100644 --- a/README.md +++ b/README.md @@ -117,9 +117,16 @@ boo theme select ``` - Shows all themes in a searchable list +- Ordered as: built-in dark, built-in light, community dark, community light - Live terminal-style preview panel on the right - Press `Enter` to apply, `Esc` to cancel +Community themes are supported too: + +- Built-in community themes are auto-discovered from `themes/community/` +- Installer copies them to `~/.config/boo/themes/community/` +- You can add your own by dropping `*.theme` files into `~/.config/boo/themes/community/` + ### Create your own theme ```bash @@ -197,6 +204,14 @@ Expected result: - `moss`: damp forest floor, muted earthy green - `rust`: oxidized metal, brutalist copper +Community themes: + +- `aurora`: cool dark teal with cyan accents +- `dracula`: classic neon purple/green theme +- `tokyonight`: electric blue storm palette +- `gruvbox`: warm retro dark palette +- `nord`: cool arctic blue-gray palette + ## Advanced Notes - `boo reload`: safe guidance only (no key injection, no window/session changes) diff --git a/bin/boo b/bin/boo index bd5f8e3..ce80021 100755 --- a/bin/boo +++ b/bin/boo @@ -9,6 +9,7 @@ SPLASH_FILE="${HOME}/.config/boo/splash.zsh" CUSTOM_SPLASH_FILE="${HOME}/.config/boo/custom-splash.txt" BUILTIN_ART_DIR="${HOME}/.config/boo/art" THEMES_DIR="${HOME}/.config/boo/themes" +COMMUNITY_THEMES_DIR="${HOME}/.config/boo/themes/community" DEFAULT_SPLASH="apple" CONFIG_DIR="${HOME}/.config/boo" SHELL_SNIPPET_FILE="${HOME}/.config/boo/boo.zsh" @@ -35,6 +36,7 @@ UNAME_S="$(uname -s)" UNSAFE_RELOAD_REASON="" BOO_BIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" FALLBACK_THEMES_DIR="$(cd "${BOO_BIN_DIR}/.." >/dev/null 2>&1 && pwd)/themes" +FALLBACK_COMMUNITY_THEMES_DIR="${FALLBACK_THEMES_DIR}/community" ghostty_targets=() _LOADED_THEME="" @@ -136,12 +138,24 @@ theme_file_for_name() { return 0 fi + file="${COMMUNITY_THEMES_DIR}/${theme}.theme" + if [[ -f "$file" ]]; then + printf '%s\n' "$file" + return 0 + fi + file="${FALLBACK_THEMES_DIR}/${theme}.theme" if [[ -f "$file" ]]; then printf '%s\n' "$file" return 0 fi + file="${FALLBACK_COMMUNITY_THEMES_DIR}/${theme}.theme" + if [[ -f "$file" ]]; then + printf '%s\n' "$file" + return 0 + fi + return 1 } @@ -149,7 +163,7 @@ list_theme_names() { local dir file name { - for dir in "$THEMES_DIR" "$FALLBACK_THEMES_DIR"; do + for dir in "$THEMES_DIR" "$COMMUNITY_THEMES_DIR" "$FALLBACK_THEMES_DIR" "$FALLBACK_COMMUNITY_THEMES_DIR"; do [[ -d "$dir" ]] || continue for file in "$dir"/*.theme; do [[ -e "$file" ]] || continue @@ -163,6 +177,18 @@ list_theme_names() { } | awk '!seen[$0]++' | sort } +theme_file_is_community() { + local file="$1" + case "$file" in + "${COMMUNITY_THEMES_DIR}/"*|"${FALLBACK_COMMUNITY_THEMES_DIR}/"*) + return 0 + ;; + *) + return 1 + ;; + esac +} + list_valid_theme_names() { local name while IFS= read -r name; do @@ -370,7 +396,7 @@ write_splash_name() { } list_splash_names() { - printf '%s\n' apple boo saturn eclipse halo monolith minimal + printf '%s\n' apple boo saturn eclipse halo monolith crescent minimal } print_splash_preview() { @@ -634,6 +660,15 @@ doctor_apply_fixes() { if [[ -d "$FALLBACK_THEMES_DIR" ]] && ! compgen -G "${THEMES_DIR}/*.theme" > /dev/null; then cp "$FALLBACK_THEMES_DIR"/*.theme "$THEMES_DIR/" 2>/dev/null || true fi + mkdir -p "$COMMUNITY_THEMES_DIR" + if [[ -d "$FALLBACK_COMMUNITY_THEMES_DIR" ]]; then + for file in "$FALLBACK_COMMUNITY_THEMES_DIR"/*.theme; do + [[ -e "$file" ]] || continue + if [[ ! -f "$COMMUNITY_THEMES_DIR/${file##*/}" ]]; then + cp "$file" "$COMMUNITY_THEMES_DIR/" + fi + done + fi if [[ ! -f "$THEME_ENV_FILE" ]]; then cat > "$THEME_ENV_FILE" <<'EOF' @@ -699,9 +734,9 @@ doctor_run_checks() { fi if list_theme_names | grep -q .; then - doctor_line ok "Theme files discovered" "$THEMES_DIR" + doctor_line ok "Theme files discovered" "$THEMES_DIR (+ $COMMUNITY_THEMES_DIR)" else - doctor_line fail "No theme files found" "Run installer or add files to $THEMES_DIR." + doctor_line fail "No theme files found" "Run installer or add files to $THEMES_DIR or $COMMUNITY_THEMES_DIR." fi active_theme="$(read_theme_file)" @@ -895,9 +930,12 @@ theme_palette_strip_main() { theme_selector_rows() { local active_theme="${1:-}" - local name accent_rgb mode marker colored_name description row - local -a dark_rows=() - local -a light_rows=() + local name accent_rgb mode colored_name row file source meta active_bg_rgb + local is_community=0 + local -a builtin_dark_rows=() + local -a builtin_light_rows=() + local -a community_dark_rows=() + local -a community_light_rows=() while IFS= read -r name; do [[ -n "$name" ]] || continue @@ -907,30 +945,50 @@ theme_selector_rows() { accent_rgb="$(hex_to_rgb "$_T_accent" 2>/dev/null || printf '204;68;255')" mode="$(theme_mode_for_bg "$_T_bg")" - marker=" " - [[ "$name" == "$active_theme" ]] && marker="*" colored_name="$(printf '\033[38;2;%sm%s\033[0m' "$accent_rgb" "$name")" - description="${_T_description:-no description}" - description="${description//$'\t'/ }" + file="$(theme_file_for_name "$name" 2>/dev/null || true)" + is_community=0 + source="builtin" + if [[ -n "$file" ]] && theme_file_is_community "$file"; then + is_community=1 + source="community" + fi + if [[ "$name" == "$active_theme" ]]; then + active_bg_rgb="$(hex_to_rgb "$_T_selection_bg" 2>/dev/null || printf '85;85;85')" + colored_name="$(printf '\033[1;38;2;%sm\033[48;2;%sm %s \033[0m' "$accent_rgb" "$active_bg_rgb" "$name")" + fi - row="$(printf '%s\t%s\t%s\t%s\t%s' "$name" "$marker" "$mode" "$colored_name" "$description")" - if [[ "$mode" == "light" ]]; then - light_rows+=("$row") + meta="$(printf '\033[2m%s · %s\033[0m' "$source" "$mode")" + row="$(printf '%s\t%s %s' "$name" "$colored_name" "$meta")" + if (( is_community )); then + if [[ "$mode" == "light" ]]; then + community_light_rows+=("$row") + else + community_dark_rows+=("$row") + fi else - dark_rows+=("$row") + if [[ "$mode" == "light" ]]; then + builtin_light_rows+=("$row") + else + builtin_dark_rows+=("$row") + fi fi done < <(list_theme_names) - if (( ${#dark_rows[@]} > 0 )); then - printf '__section__\t \t \t\033[1mDARK THEMES\033[0m\t\n' - printf '%s\n' "${dark_rows[@]}" + if (( ${#builtin_dark_rows[@]} > 0 )); then + printf '%s\n' "${builtin_dark_rows[@]}" fi - if (( ${#light_rows[@]} > 0 )); then - if (( ${#dark_rows[@]} > 0 )); then - printf '__section__\t \t \t\033[2m────────────────\033[0m\t\n' - fi - printf '__section__\t \t \t\033[1mLIGHT THEMES\033[0m\t\n' - printf '%s\n' "${light_rows[@]}" + if (( ${#builtin_light_rows[@]} > 0 )); then + printf '%s\n' "${builtin_light_rows[@]}" + fi + if (( (${#builtin_dark_rows[@]} + ${#builtin_light_rows[@]}) > 0 && (${#community_dark_rows[@]} + ${#community_light_rows[@]}) > 0 )); then + printf '__gap__\t \n' + fi + if (( ${#community_dark_rows[@]} > 0 )); then + printf '%s\n' "${community_dark_rows[@]}" + fi + if (( ${#community_light_rows[@]} > 0 )); then + printf '%s\n' "${community_light_rows[@]}" fi } @@ -974,7 +1032,7 @@ print_theme_selector_preview() { printf 'No theme selected.\n' return 1 fi - if [[ "$theme" == "__section__" ]]; then + if [[ "$theme" == "__section__" || "$theme" == "__gap__" ]]; then printf '\n Select a theme row to preview it.\n\n' return 0 fi @@ -1011,7 +1069,7 @@ print_theme_selector_preview() { printf ' \033[38;5;244m%s\033[0m\n\n' "${_T_description:-no description}" printf ' \033[38;2;%sm╭%s╮\033[0m\n' "$border_rgb" "$border" - line="$(preview_fit_text "$inner" ' o o o boo terminal')" + line="$(preview_fit_text "$inner" ' boo')" printf ' \033[38;2;%sm│\033[48;2;%sm\033[38;2;%sm%s\033[0m\033[38;2;%sm│\033[0m\n' \ "$border_rgb" "$sel_bg_rgb" "$sel_fg_rgb" "$line" "$border_rgb" print_preview_terminal_row "$inner" "$bg_rgb" "$fg_rgb" " > boo theme $theme" "$border_rgb" @@ -1054,19 +1112,19 @@ cmd_theme_select() { printf '%s\n' "$rows" | \ fzf --ansi \ --delimiter=$'\t' \ - --with-nth=2,4 \ + --with-nth=2 \ --height=90% \ --layout=reverse \ --border \ --prompt="theme > " \ - --header=$'Enter: apply theme - Esc: cancel' \ + --header=$'Enter: apply - Esc: cancel' \ --preview="$preview_cmd" \ --preview-window="right:62%:nowrap" )" || return 0 chosen="${selected_line%%$'\t'*}" [[ -n "$chosen" ]] || continue - if [[ "$chosen" == "__section__" ]]; then + if [[ "$chosen" == "__section__" || "$chosen" == "__gap__" ]]; then continue fi break @@ -2235,9 +2293,21 @@ cmd_theme_create() { esac } -is_builtin_theme() { - local name="$1" file - file="$(theme_file_for_name "$name" 2>/dev/null)" || return 1 +theme_file_is_user_managed() { + local file="$1" + case "$file" in + "${THEMES_DIR}/"*|"${COMMUNITY_THEMES_DIR}/"*) + return 0 + ;; + *) + return 1 + ;; + esac +} + +theme_file_is_builtin() { + local file="$1" + [[ -f "$file" ]] || return 1 head -n1 "$file" | grep -q '^# builtin' } @@ -2248,11 +2318,13 @@ cmd_theme_delete() { _init_ui "$_t" if [[ -z "$name" ]]; then - local tname accent_rgb count=0 + local tname file accent_rgb count=0 printf "\n ${_cd}DELETABLE THEMES${_cr}\n\n" while IFS= read -r tname; do [[ -n "$tname" ]] || continue - is_builtin_theme "$tname" && continue + file="$(theme_file_for_name "$tname" 2>/dev/null)" || continue + theme_file_is_user_managed "$file" || continue + theme_file_is_builtin "$file" && continue if load_theme "$tname" 2>/dev/null; then accent_rgb="$(hex_to_rgb "$_T_accent" 2>/dev/null || printf '180;180;180')" printf " ${_cb}\033[38;2;%sm%-10s${_cr} ${_cv}%s${_cr}\n" "$accent_rgb" "$tname" "$_T_description" @@ -2266,19 +2338,19 @@ cmd_theme_delete() { return fi - if ! theme_file_for_name "$name" >/dev/null 2>&1; then + local file + if ! file="$(theme_file_for_name "$name" 2>/dev/null)"; then printf "\n ${_cv}theme '%s' not found${_cr}\n\n" "$name" >&2 exit 1 fi - if is_builtin_theme "$name"; then - printf "\n ${_cv}cannot delete built-in theme '%s'${_cr}\n\n" "$name" >&2 + if ! theme_file_is_user_managed "$file"; then + printf "\n ${_cv}theme '%s' not found in user themes${_cr}\n\n" "$name" >&2 exit 1 fi - local file="${THEMES_DIR}/${name}.theme" - if [[ ! -f "$file" ]]; then - printf "\n ${_cv}theme '%s' not found in user themes${_cr}\n\n" "$name" >&2 + if theme_file_is_builtin "$file"; then + printf "\n ${_cv}cannot delete built-in theme '%s'${_cr}\n\n" "$name" >&2 exit 1 fi @@ -2337,9 +2409,12 @@ cmd_theme() { return ;; list) - local _t name accent_rgb count mode palette row - local -a dark_rows=() - local -a light_rows=() + local _t name accent_rgb count mode palette row file + local is_community=0 + local -a builtin_dark_rows=() + local -a builtin_light_rows=() + local -a community_dark_rows=() + local -a community_light_rows=() local -a invalid_rows=() _t="$(read_theme_file)" _init_ui "$_t" @@ -2355,12 +2430,24 @@ cmd_theme() { accent_rgb="$(hex_to_rgb "$_T_accent" 2>/dev/null || printf '204;68;255')" palette="$(theme_palette_strip_main)" mode="$(theme_mode_for_bg "$_T_bg")" - if [[ "$mode" == "light" ]]; then - printf -v row " ${_cb}\033[38;2;%sm%-10s${_cr} %s" "$accent_rgb" "$name" "$palette" - light_rows+=("$row") + file="$(theme_file_for_name "$name" 2>/dev/null || true)" + is_community=0 + if [[ -n "$file" ]] && theme_file_is_community "$file"; then + is_community=1 + fi + printf -v row " ${_cb}\033[38;2;%sm%-10s${_cr} %s" "$accent_rgb" "$name" "$palette" + if (( is_community )); then + if [[ "$mode" == "light" ]]; then + community_light_rows+=("$row") + else + community_dark_rows+=("$row") + fi else - printf -v row " ${_cb}\033[38;2;%sm%-10s${_cr} %s" "$accent_rgb" "$name" "$palette" - dark_rows+=("$row") + if [[ "$mode" == "light" ]]; then + builtin_light_rows+=("$row") + else + builtin_dark_rows+=("$row") + fi fi done < <(list_theme_names) if (( count == 0 )); then @@ -2369,21 +2456,39 @@ cmd_theme() { fi local idx - if (( ${#dark_rows[@]} > 0 )); then - printf "\n ${_cl}DARK${_cr}\n\n" - for (( idx = 0; idx < ${#dark_rows[@]}; idx++ )); do - printf "%b\n" "${dark_rows[$idx]}" - if (( idx + 1 < ${#dark_rows[@]} )); then + if (( ${#builtin_dark_rows[@]} > 0 || ${#builtin_light_rows[@]} > 0 )); then + printf "\n ${_cl}BUILT-IN${_cr}\n\n" + for (( idx = 0; idx < ${#builtin_dark_rows[@]}; idx++ )); do + printf "%b\n" "${builtin_dark_rows[$idx]}" + if (( idx + 1 < ${#builtin_dark_rows[@]} )); then + printf "\n" + fi + done + if (( ${#builtin_dark_rows[@]} > 0 && ${#builtin_light_rows[@]} > 0 )); then + printf "\n" + fi + for (( idx = 0; idx < ${#builtin_light_rows[@]}; idx++ )); do + printf "%b\n" "${builtin_light_rows[$idx]}" + if (( idx + 1 < ${#builtin_light_rows[@]} )); then printf "\n" fi done fi - if (( ${#light_rows[@]} > 0 )); then - printf "\n ${_cl}LIGHT${_cr}\n\n" - for (( idx = 0; idx < ${#light_rows[@]}; idx++ )); do - printf "%b\n" "${light_rows[$idx]}" - if (( idx + 1 < ${#light_rows[@]} )); then + if (( ${#community_dark_rows[@]} > 0 || ${#community_light_rows[@]} > 0 )); then + printf "\n ${_cl}COMMUNITY${_cr}\n\n" + for (( idx = 0; idx < ${#community_dark_rows[@]}; idx++ )); do + printf "%b\n" "${community_dark_rows[$idx]}" + if (( idx + 1 < ${#community_dark_rows[@]} )); then + printf "\n" + fi + done + if (( ${#community_dark_rows[@]} > 0 && ${#community_light_rows[@]} > 0 )); then + printf "\n" + fi + for (( idx = 0; idx < ${#community_light_rows[@]}; idx++ )); do + printf "%b\n" "${community_light_rows[$idx]}" + if (( idx + 1 < ${#community_light_rows[@]} )); then printf "\n" fi done @@ -2711,7 +2816,7 @@ cmd_splash() { printf "\n ${_ca}✓${_cr} ${_cv}splash → %s (default)${_cr}\n\n" "$DEFAULT_SPLASH" print_shell_apply_hint ;; - apple|boo|saturn|eclipse|halo|monolith|minimal) + apple|boo|saturn|eclipse|halo|monolith|crescent|minimal) write_splash_name "$action" printf "\n ${_ca}✓${_cr} ${_cv}splash → %s${_cr}\n\n" "$action" print_shell_apply_hint diff --git a/scripts/install.sh b/scripts/install.sh index 7323b57..043711f 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -250,6 +250,12 @@ mkdir -p "$HOME/.config/boo/themes" cp "$REPO_DIR"/themes/*.theme "$HOME/.config/boo/themes/" log_ok "Installed themes: ~/.config/boo/themes/" +if [[ -d "$REPO_DIR/themes/community" ]]; then + mkdir -p "$HOME/.config/boo/themes/community" + cp "$REPO_DIR"/themes/community/*.theme "$HOME/.config/boo/themes/community/" 2>/dev/null || true + log_ok "Installed community themes: ~/.config/boo/themes/community/" +fi + log_section "Defaults" if [[ ! -f "$HOME/.config/boo/theme.zsh" ]]; then cat > "$HOME/.config/boo/theme.zsh" <<'THEMEBLOCK' diff --git a/themes/community/aurora.theme b/themes/community/aurora.theme new file mode 100644 index 0000000..4bf0551 --- /dev/null +++ b/themes/community/aurora.theme @@ -0,0 +1,32 @@ +# community +description=cool teal aurora - generated theme +accent=#3dd6c6 +bg=#040e0d +fg=#83e8dd +cursor=#3dd6c6 +cursor_text=#000000 +selection_bg=#0a2623 +selection_fg=#b2f4ed +omp_chip_cloud_bg=#0c2a27 +omp_go_fg=#64e0d3 +omp_az_fg=#3dd6c6 +omp_gcp_fg=#54dccd +omp_tf_fg=#73e4d8 +omp_sysinfo_fg=#5cded0 +omp_git_bg=#0f3531 +pal_0=#040e0d +pal_1=#0c2a27 +pal_2=#154a45 +pal_3=#1e6b63 +pal_4=#071b19 +pal_5=#3dd6c6 +pal_6=#25847a +pal_7=#7be6db +pal_8=#061715 +pal_9=#1b6059 +pal_10=#237c72 +pal_11=#2da094 +pal_12=#12403b +pal_13=#6ce2d5 +pal_14=#59ddcf +pal_15=#b2f4ed diff --git a/themes/community/dracula.theme b/themes/community/dracula.theme new file mode 100644 index 0000000..1edee47 --- /dev/null +++ b/themes/community/dracula.theme @@ -0,0 +1,32 @@ +# community +description=dracula classic - neon accents on deep violet +accent=#ff79c6 +bg=#282a36 +fg=#f8f8f2 +cursor=#f8f8f2 +cursor_text=#282a36 +selection_bg=#44475a +selection_fg=#f8f8f2 +omp_chip_cloud_bg=#313543 +omp_go_fg=#50fa7b +omp_az_fg=#ff79c6 +omp_gcp_fg=#bd93f9 +omp_tf_fg=#8be9fd +omp_sysinfo_fg=#f1fa8c +omp_git_bg=#3a3f51 +pal_0=#21222c +pal_1=#ff5555 +pal_2=#50fa7b +pal_3=#f1fa8c +pal_4=#bd93f9 +pal_5=#ff79c6 +pal_6=#8be9fd +pal_7=#f8f8f2 +pal_8=#6272a4 +pal_9=#ff6e6e +pal_10=#69ff94 +pal_11=#ffffa5 +pal_12=#d6acff +pal_13=#ff92df +pal_14=#a4ffff +pal_15=#ffffff diff --git a/themes/community/gruvbox.theme b/themes/community/gruvbox.theme new file mode 100644 index 0000000..4c622eb --- /dev/null +++ b/themes/community/gruvbox.theme @@ -0,0 +1,32 @@ +# community +description=gruvbox dark - warm retro contrast +accent=#fabd2f +bg=#282828 +fg=#ebdbb2 +cursor=#ebdbb2 +cursor_text=#282828 +selection_bg=#3c3836 +selection_fg=#ebdbb2 +omp_chip_cloud_bg=#32302f +omp_go_fg=#b8bb26 +omp_az_fg=#fabd2f +omp_gcp_fg=#83a598 +omp_tf_fg=#d3869b +omp_sysinfo_fg=#8ec07c +omp_git_bg=#3b372f +pal_0=#282828 +pal_1=#cc241d +pal_2=#98971a +pal_3=#d79921 +pal_4=#458588 +pal_5=#b16286 +pal_6=#689d6a +pal_7=#a89984 +pal_8=#928374 +pal_9=#fb4934 +pal_10=#b8bb26 +pal_11=#fabd2f +pal_12=#83a598 +pal_13=#d3869b +pal_14=#8ec07c +pal_15=#ebdbb2 diff --git a/themes/community/nord.theme b/themes/community/nord.theme new file mode 100644 index 0000000..b319a64 --- /dev/null +++ b/themes/community/nord.theme @@ -0,0 +1,32 @@ +# community +description=nord polar night - cool arctic contrast +accent=#88c0d0 +bg=#2e3440 +fg=#d8dee9 +cursor=#eceff4 +cursor_text=#2e3440 +selection_bg=#434c5e +selection_fg=#eceff4 +omp_chip_cloud_bg=#3b4252 +omp_go_fg=#a3be8c +omp_az_fg=#88c0d0 +omp_gcp_fg=#81a1c1 +omp_tf_fg=#b48ead +omp_sysinfo_fg=#ebcb8b +omp_git_bg=#4c566a +pal_0=#3b4252 +pal_1=#bf616a +pal_2=#a3be8c +pal_3=#ebcb8b +pal_4=#81a1c1 +pal_5=#b48ead +pal_6=#88c0d0 +pal_7=#e5e9f0 +pal_8=#4c566a +pal_9=#bf616a +pal_10=#a3be8c +pal_11=#ebcb8b +pal_12=#81a1c1 +pal_13=#b48ead +pal_14=#8fbcbb +pal_15=#eceff4 diff --git a/themes/community/tokyonight.theme b/themes/community/tokyonight.theme new file mode 100644 index 0000000..ea4a6f2 --- /dev/null +++ b/themes/community/tokyonight.theme @@ -0,0 +1,35 @@ +# community +description=tokyonight storm - electric blue on midnight navy +accent=#7aa2f7 +bg=#1f2335 +fg=#c0caf5 +cursor=#c0caf5 +cursor_text=#1f2335 +selection_bg=#33467c +selection_fg=#c0caf5 +ui_dim=#6a7196 +ui_label=#8c95be +ui_value=#c0caf5 +omp_chip_cloud_bg=#2a3050 +omp_go_fg=#9ece6a +omp_az_fg=#7aa2f7 +omp_gcp_fg=#bb9af7 +omp_tf_fg=#7dcfff +omp_sysinfo_fg=#e0af68 +omp_git_bg=#2f3a66 +pal_0=#1d202f +pal_1=#f7768e +pal_2=#9ece6a +pal_3=#e0af68 +pal_4=#7aa2f7 +pal_5=#bb9af7 +pal_6=#7dcfff +pal_7=#c0caf5 +pal_8=#565f89 +pal_9=#ff7a93 +pal_10=#b9f27c +pal_11=#ffcf8f +pal_12=#9ab8ff +pal_13=#d0b4ff +pal_14=#a4daff +pal_15=#e5e9ff