aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Harrison <adamdharrison@gmail.com>2023-10-10 16:38:47 -0400
committerAdam Harrison <adamdharrison@gmail.com>2023-10-10 16:38:47 -0400
commit40b51358400dfbc875d031b5a6cd92d09f1f51d4 (patch)
treebdf75ff0da2a187bc07dd017411021975e1bfd52
parent826b819b731849779dfeb0144d2372785a318832 (diff)
parent3c9753416961ce86094eb4bf812d1f352cf7ff7b (diff)
downloadlite-xl-colors-40b51358400dfbc875d031b5a6cd92d09f1f51d4.tar.gz
lite-xl-colors-40b51358400dfbc875d031b5a6cd92d09f1f51d4.zip
Merge remote-tracking branch 'upstream/master' into flexoki
-rw-r--r--.github/workflows/workflow.yml31
-rw-r--r--README.md96
-rw-r--r--colors/monokai-sublime.lua28
-rw-r--r--colors/monokai.lua42
-rwxr-xr-xmake_preview_image.lua51
-rw-r--r--manifest.json424
-rw-r--r--previews/ayu-dark.svg30
-rw-r--r--previews/ayu-light.svg28
-rw-r--r--previews/ayu-mirage.svg30
-rw-r--r--previews/github-dark-dimmed.svg22
-rw-r--r--previews/monokai-sublime.svg18
-rw-r--r--previews/monokai.svg26
-rwxr-xr-xscripts/make_preview_image.lua50
13 files changed, 735 insertions, 141 deletions
diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml
new file mode 100644
index 0000000..6022eae
--- /dev/null
+++ b/.github/workflows/workflow.yml
@@ -0,0 +1,31 @@
+name: Update README
+
+on:
+ push:
+ branches: [master]
+
+jobs:
+ reorganize:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Generate table with `lpm`
+ run: |
+ wget https://github.com/lite-xl/lite-xl-plugin-manager/releases/download/latest/lpm.x86_64-linux -O lpm && chmod +x lpm
+ # Unstub all stubs so we can make proper previews.
+ ./lpm --userdir . init . && ./lpm --userdir . color install "*" && ./lpm purge --userdir .
+ ./lpm exec scripts/make_preview_image.lua colors/*
+ # Remove everything after the --- so we can regenerate it.
+ perl -pi -e 'exit(0) if $_ =~ m/^\-\-\-/' README.md
+ echo "---" >> README.md
+ echo -e "\n## Dark\n" >> README.md
+ ./lpm list --repository . --type color --tag "dark" --table 'url,{string.format("![%s_preview](previews/%s.svg)", addon.id,addon.id)}' --type color --header Theme,Preview >> README.md
+ echo -e "\n## Light\n" >> README.md
+ ./lpm list --repository . --type color --tag "light" --table 'url,{string.format("![%s_preview](previews/%s.svg)", addon.id,addon.id)}' --type color --header Theme,Preview >> README.md
+ if ! git diff --exit-code -s README.md; then
+ git config --global user.name "Github Actions" && git config --global user.email "<>"
+ git add README.md previews
+ git commit -m '[CI] Updated README.md.'
+ git push
+ fi
+
diff --git a/README.md b/README.md
index 3946c88..8252818 100644
--- a/README.md
+++ b/README.md
@@ -16,56 +16,62 @@ Then, add a call to `core.reload_module` to your user module (the gear in the bo
core.reload_module("colors.github_dark")
```
-*Note: if you make a pull request, the relevant table should be updated and kept
-in alphabetical order. The [`make_preview_image.lua`](make_preview_image.lua)
-script should be used to create a preview image for your theme which should be
-embedded in the table.*
+*Note: if you make a pull request, please update the manifest.json.
+The below table will be automatically updated as part of CI; please
+do not bother modifying it.*
+
+
+<!-- DO NOT EDIT THIS FILE MANUALLY -->
+<!-- This file is autogenerated from manifest.json, so edit that. -->
+<!-- DO NOT EDIT THIS FILE MANUALLY -->
---
## Dark
-| Theme | Preview |
-| ------------------------------------------------------------- | ---------------------------------------------------------------- |
-| [`betelgeuse`](colors/betelgeuse.lua?raw=1) | ![betelgeuse_preview](previews/betelgeuse.svg) |
-| [`cold_lime`](colors/cold_lime.lua?raw=1) | ![cold_lime_preview](previews/cold_lime.svg) |
-| [`c0mfy`](colors/c0mfy.lua?raw=1) | ![c0mfy_preview](previews/c0mfy.svg) |
-| [`dracula`](colors/dracula.lua?raw=1) | ![dracula_preview](previews/dracula.svg) |
-| [`duorand`](colors/duorand.lua?raw=1) | ![duorand_preview](previews/duorand.svg) |
-| [`duotone`](colors/duotone.lua?raw=1) | ![duotone_preview](previews/duotone.svg) |
-| [`everforest`](colors/everforest.lua?raw=1) | ![everforest_preview](previews/everforest.svg) |
-| [`flexoki_dark`](colors/flexoki_dark.lua?raw=1) | ![flexoki_dark_preview](previews/flexoki_dark.svg) |
-| [`github_dark`](colors/github_dark.lua?raw=1) | ![github_dark_preview](previews/github_dark.svg) |
-| [`github-dark-dimmed`](colors/github-dark-dimmed.lua?raw=1) | ![duotone_preview](previews/github-dark-dimmed.svg) |
-| [`gruvbox_dark`](colors/gruvbox_dark.lua?raw=1) | ![gruvbox_dark_preview](previews/gruvbox_dark.svg) |
-| [`jb-fleet`](colors/jb-fleet.lua?raw=1) | ![jb-fleet_preview](previews/jb-fleet.svg) |
-| [`jellybeans`](colors/jellybeans.lua?raw=1) | ![jellybeans_preview](previews/jellybeans.svg) |
-| [`liqube`](colors/liqube.lua?raw=1) | ![liqube_preview](previews/liqube.svg) |
-| [`mariana`](colors/mariana.lua?raw=1) | ![mariana_preview](previews/mariana.svg) |
-| [`monodark`](colors/monodark.lua?raw=1) | ![monodark_preview](previews/monodark.svg) |
-| [`monokai`](colors/monokai.lua?raw=1) | ![monokai_preview](previews/monokai.svg) |
-| [`monokai-pro-classic`](colors/monokai-pro-classic.lua?raw=1) | ![monokai-pro-classic_preview](previews/monokai-pro-classic.svg) |
-| [`nord`](colors/nord.lua?raw=1) | ![nord_preview](previews/nord.svg) |
-| [`onedark`](colors/onedark.lua?raw=1) | ![onedark_preview](previews/onedark.svg) |
-| [`only_dark`](colors/only_dark.lua?raw=1) | ![only_dark_preview](previews/only_dark.svg) |
-| [`plasma`](colors/plasma.lua?raw=1) | ![plasma_preview](previews/plasma.svg) |
-| [`rose-pine-moon`](colors/rose-pine-moon.lua?raw=1) | ![rose_pine_review](previews/rose-pine-moon.svg) |
-| [`rose-pine`](colors/rose-pine.lua?raw=1) | ![rose_pine_review](previews/rose-pine.svg) |
-| [`solarized_dark`](colors/solarized_dark.lua?raw=1) | ![solarized_dark_preview](previews/solarized_dark.svg) |
-| [`synthwave`](colors/synthwave.lua?raw=1) | ![synthwave_preview](previews/synthwave.svg) |
-| [`tokyo-night`](colors/tokyo-night.lua?raw=1) | ![tokyo-night_preview](previews/tokyo-night.svg) |
-| [`vscode-dark`](colors/vscode-dark.lua?raw=1) | ![vscode-dark_preview](previews/vscode-dark.svg) |
-| [`winter`](colors/winter.lua?raw=1) | ![winter_preview](previews/winter.svg) |
-| [`zenburn`](colors/zenburn.lua?raw=1) | ![zenburn_preview](previews/zenburn.svg) |
+| Theme | Preview |
+| ------------------------------------------------------------------- | ---------------------------------------------------------------- |
+| [`abyss`](colors/abyss.lua?raw=1) | ![abyss_preview](previews/abyss.svg) |
+| [`ayu-dark`](https://github.com/juliardi/lite-xl-ayu-theme.git)\* | ![ayu-dark_preview](previews/ayu-dark.svg) |
+| [`ayu-mirage`](https://github.com/juliardi/lite-xl-ayu-theme.git)\* | ![ayu-mirage_preview](previews/ayu-mirage.svg) |
+| [`betelgeuse`](colors/betelgeuse.lua?raw=1) | ![betelgeuse_preview](previews/betelgeuse.svg) |
+| [`c0mfy`](colors/c0mfy.lua?raw=1) | ![c0mfy_preview](previews/c0mfy.svg) |
+| [`cold_lime`](colors/cold_lime.lua?raw=1) | ![cold_lime_preview](previews/cold_lime.svg) |
+| [`dracula`](colors/dracula.lua?raw=1) | ![dracula_preview](previews/dracula.svg) |
+| [`duorand`](colors/duorand.lua?raw=1) | ![duorand_preview](previews/duorand.svg) |
+| [`duotone`](colors/duotone.lua?raw=1) | ![duotone_preview](previews/duotone.svg) |
+| [`everforest`](colors/everforest.lua?raw=1) | ![everforest_preview](previews/everforest.svg) |
+| [`github-dark-dimmed`](colors/github-dark-dimmed.lua?raw=1) | ![github-dark-dimmed_preview](previews/github-dark-dimmed.svg) |
+| [`github_dark`](colors/github_dark.lua?raw=1) | ![github_dark_preview](previews/github_dark.svg) |
+| [`gruvbox_dark`](colors/gruvbox_dark.lua?raw=1) | ![gruvbox_dark_preview](previews/gruvbox_dark.svg) |
+| [`jb-fleet`](colors/jb-fleet.lua?raw=1) | ![jb-fleet_preview](previews/jb-fleet.svg) |
+| [`jellybeans`](colors/jellybeans.lua?raw=1) | ![jellybeans_preview](previews/jellybeans.svg) |
+| [`liqube`](colors/liqube.lua?raw=1) | ![liqube_preview](previews/liqube.svg) |
+| [`mariana`](colors/mariana.lua?raw=1) | ![mariana_preview](previews/mariana.svg) |
+| [`monodark`](colors/monodark.lua?raw=1) | ![monodark_preview](previews/monodark.svg) |
+| [`monokai`](colors/monokai.lua?raw=1) | ![monokai_preview](previews/monokai.svg) |
+| [`monokai-pro-classic`](colors/monokai-pro-classic.lua?raw=1) | ![monokai-pro-classic_preview](previews/monokai-pro-classic.svg) |
+| [`monokai-sublime`](colors/monokai-sublime.lua?raw=1) | ![monokai-sublime_preview](previews/monokai-sublime.svg) |
+| [`nord`](colors/nord.lua?raw=1) | ![nord_preview](previews/nord.svg) |
+| [`onedark`](colors/onedark.lua?raw=1) | ![onedark_preview](previews/onedark.svg) |
+| [`only_dark`](colors/only_dark.lua?raw=1) | ![only_dark_preview](previews/only_dark.svg) |
+| [`plasma`](colors/plasma.lua?raw=1) | ![plasma_preview](previews/plasma.svg) |
+| [`rose-pine`](colors/rose-pine.lua?raw=1) | ![rose-pine_preview](previews/rose-pine.svg) |
+| [`rose-pine-moon`](colors/rose-pine-moon.lua?raw=1) | ![rose-pine-moon_preview](previews/rose-pine-moon.svg) |
+| [`synthwave`](colors/synthwave.lua?raw=1) | ![synthwave_preview](previews/synthwave.svg) |
+| [`tokyo-night`](colors/tokyo-night.lua?raw=1) | ![tokyo-night_preview](previews/tokyo-night.svg) |
+| [`vscode-dark`](colors/vscode-dark.lua?raw=1) | ![vscode-dark_preview](previews/vscode-dark.svg) |
+| [`winter`](colors/winter.lua?raw=1) | ![winter_preview](previews/winter.svg) |
+| [`zenburn`](colors/zenburn.lua?raw=1) | ![zenburn_preview](previews/zenburn.svg) |
## Light
-| Theme | Preview |
-| ----------------------------------------------------- | -------------------------------------------------------- |
-| [`flexoki_light`](colors/flexoki_light.lua?raw=1) | ![flexoki_light_preview](previews/flexoki_light.svg) |
-| [`github`](colors/github.lua?raw=1) | ![github_preview](previews/github.svg) |
-| [`gruvbox_light`](colors/gruvbox_light.lua?raw=1) | ![gruvbox_light_preview](previews/gruvbox_light.svg) |
-| [`moe`](colors/moe.lua?raw=1) | ![moe_preview](previews/moe.svg) |
-| [`rose-pine-dawn`](colors/rose-pine-dawn.lua?raw=1) | ![rose_pine_review](previews/rose-pine-dawn.svg) |
-| [`solarized_light`](colors/solarized_light.lua?raw=1) | ![solarized_light_preview](previews/solarized_light.svg) |
-| [`solarobj`](colors/solarobj.lua?raw=1) | ![solarobj_preview](previews/solarobj.svg) |
+| Theme | Preview |
+| ------------------------------------------------------------------ | -------------------------------------------------------- |
+| [`ayu-light`](https://github.com/juliardi/lite-xl-ayu-theme.git)\* | ![ayu-light_preview](previews/ayu-light.svg) |
+| [`github`](colors/github.lua?raw=1) | ![github_preview](previews/github.svg) |
+| [`gruvbox_light`](colors/gruvbox_light.lua?raw=1) | ![gruvbox_light_preview](previews/gruvbox_light.svg) |
+| [`moe`](colors/moe.lua?raw=1) | ![moe_preview](previews/moe.svg) |
+| [`rose-pine-dawn`](colors/rose-pine-dawn.lua?raw=1) | ![rose-pine-dawn_preview](previews/rose-pine-dawn.svg) |
+| [`solarized_light`](colors/solarized_light.lua?raw=1) | ![solarized_light_preview](previews/solarized_light.svg) |
+| [`solarobj`](colors/solarobj.lua?raw=1) | ![solarobj_preview](previews/solarobj.svg) |
diff --git a/colors/monokai-sublime.lua b/colors/monokai-sublime.lua
new file mode 100644
index 0000000..254416a
--- /dev/null
+++ b/colors/monokai-sublime.lua
@@ -0,0 +1,28 @@
+local style = require "core.style"
+local common = require "core.common"
+
+style.background = { common.color "#282923" }
+style.background2 = { common.color "#181915" }
+style.background3 = { common.color "#181915" }
+style.text = { common.color "#9EA191" }
+style.caret = { common.color "#FDFDFC" }
+style.accent = { common.color "#F8F8F2" }
+style.dim = { common.color "#5E6052" }
+style.divider = { common.color "#1B1C17" }
+style.selection = { common.color "#4C4B41" }
+style.line_number = { common.color "#90918B" }
+style.line_number2 = { common.color "#D2D0C6" }
+style.line_highlight = { common.color "#282923" }
+style.scrollbar = { common.color "#53534F" }
+style.scrollbar2 = { common.color "#53534F" }
+
+style.syntax["normal"] = { common.color "#F8F8F2" }
+style.syntax["symbol"] = { common.color "#F8F8F2" }
+style.syntax["comment"] = { common.color "#74705D" }
+style.syntax["keyword"] = { common.color "#F92472" }
+style.syntax["keyword2"] = { common.color "#F92472" }
+style.syntax["number"] = { common.color "#AC80FF" }
+style.syntax["literal"] = { common.color "#E7DB74" }
+style.syntax["string"] = { common.color "#E7DB74" }
+style.syntax["operator"] = { common.color "#F92472" }
+style.syntax["function"] = { common.color "#67D8EF" }
diff --git a/colors/monokai.lua b/colors/monokai.lua
index bbd8d47..9e45f90 100644
--- a/colors/monokai.lua
+++ b/colors/monokai.lua
@@ -1,28 +1,28 @@
local style = require "core.style"
local common = require "core.common"
-style.background = { common.color "#282923" }
+style.background = { common.color "#272822" }
style.background2 = { common.color "#181915" }
style.background3 = { common.color "#181915" }
-style.text = { common.color "#9ea191" }
-style.caret = { common.color "#f8f8f2" }
-style.accent = { common.color "#f8f8f2" }
-style.dim = { common.color "#5e6052" }
-style.divider = { common.color "#1b1c17" }
-style.selection = { common.color "#3a3a32" }
-style.line_number = { common.color "#90918b" }
-style.line_number2 = { common.color "#d2d0c6" }
-style.line_highlight = { common.color "#282923" }
-style.scrollbar = { common.color "#63635f" }
-style.scrollbar2 = { common.color "#3d3d38" }
+style.text = { common.color "#9EA191" }
+style.caret = { common.color "#F8F8F0" }
+style.accent = { common.color "#F8F8F2" }
+style.dim = { common.color "#5E6052" }
+style.divider = { common.color "#181915" }
+style.selection = { common.color "#49483E" }
+style.line_number = { common.color "#90918B" }
+style.line_number2 = { common.color "#D2D0C6" }
+style.line_highlight = { common.color "#49483E" }
+style.scrollbar = { common.color "#53534F" }
+style.scrollbar2 = { common.color "#53534F" }
-style.syntax["normal"] = { common.color "#f8f8f2" }
-style.syntax["symbol"] = { common.color "#f8f8f2" }
+style.syntax["normal"] = { common.color "#F8F8F2" }
+style.syntax["symbol"] = { common.color "#F8F8F2" }
style.syntax["comment"] = { common.color "#75715E" }
-style.syntax["keyword"] = { common.color "#f92472" }
-style.syntax["keyword2"] = { common.color "#f92472" }
-style.syntax["number"] = { common.color "#ac80ff" }
-style.syntax["literal"] = { common.color "#e7db74" }
-style.syntax["string"] = { common.color "#e7db74" }
-style.syntax["operator"] = { common.color "#f92472" }
-style.syntax["function"] = { common.color "#5cd5ef" }
+style.syntax["keyword"] = { common.color "#F92672" }
+style.syntax["keyword2"] = { common.color "#F92672" }
+style.syntax["number"] = { common.color "#AE81FF" }
+style.syntax["literal"] = { common.color "#E6DB74" }
+style.syntax["string"] = { common.color "#E6DB74" }
+style.syntax["operator"] = { common.color "#F92472" }
+style.syntax["function"] = { common.color "#A6E22E" }
diff --git a/make_preview_image.lua b/make_preview_image.lua
deleted file mode 100755
index 6bcaac8..0000000
--- a/make_preview_image.lua
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/lua
-
-local filename = ...
-local name = filename:match("([^\\/]+)%..*$")
-
-
--- get colors
-local text = io.open(filename):read("*a")
-local colors = {}
-for r, g, b in text:gmatch("#(%x%x)(%x%x)(%x%x)") do
- r = tonumber(r, 16)
- g = tonumber(g, 16)
- b = tonumber(b, 16)
- table.insert(colors, { r, g, b })
-end
-
-table.sort(colors, function(a, b)
- return a[1] + a[2] + a[3] < b[1] + b[2] + b[3]
-end)
-
-local function eq(a, b)
- return a[1] == b[1] and a[2] == b[2] and a[3] == b[3]
-end
-
-local prev = {}
-for i = #colors, 1, -1 do
- if eq(colors[i], prev) then
- table.remove(colors, i)
- else
- prev = colors[i]
- end
-end
-
-
---generate svg file
-local w = 200
-local h = 16
-local fp = io.open("previews/" .. name .. ".svg", "wb")
-
-fp:write('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'..w..'" height="'..h..'" shape-rendering="crispEdges"> \n')
-
-for i = 1, #colors do
- local width = w/#colors
- local r, g, b = table.unpack(colors[i])
- local rect = '<rect x="'..(i-1)*width..'" width="'..width..'" height="'..h..'" fill="rgb('..r..', '..g..', '..b..')"></rect> \n'
- fp:write(rect)
-end
-
-fp:write('</svg>')
-fp:close()
-
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..049745d
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,424 @@
+{
+ "addons" : [
+ {
+ "id" : "abyss",
+ "mod_version" : "3.0.0",
+ "name" : "abyss",
+ "path" : "colors/abyss.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id": "ayu-dark",
+ "remote": "https://github.com/juliardi/lite-xl-ayu-theme.git:33a514527d4870480554771c273e667eb6418873",
+ "type": "color",
+ "tags": [
+ "dark"
+ ]
+ },
+ {
+ "id": "ayu-light",
+ "remote": "https://github.com/juliardi/lite-xl-ayu-theme.git:33a514527d4870480554771c273e667eb6418873",
+ "type": "color",
+ "tags": [
+ "light"
+ ]
+ },
+ {
+ "id": "ayu-mirage",
+ "remote": "https://github.com/juliardi/lite-xl-ayu-theme.git:33a514527d4870480554771c273e667eb6418873",
+ "type": "color",
+ "tags": [
+ "dark"
+ ]
+ },
+ {
+ "id" : "betelgeuse",
+ "mod_version" : "3.0.0",
+ "name" : "betelgeuse",
+ "path" : "colors/betelgeuse.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "c0mfy",
+ "mod_version" : "3.0.0",
+ "name" : "c0mfy",
+ "path" : "colors/c0mfy.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "cold_lime",
+ "mod_version" : "3.0.0",
+ "name" : "cold_lime",
+ "path" : "colors/cold_lime.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "dracula",
+ "mod_version" : "3.0.0",
+ "name" : "dracula",
+ "path" : "colors/dracula.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "duorand",
+ "mod_version" : "3.0.0",
+ "name" : "duorand",
+ "path" : "colors/duorand.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "duotone",
+ "mod_version" : "3.0.0",
+ "name" : "duotone",
+ "path" : "colors/duotone.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "everforest",
+ "mod_version" : "3.0.0",
+ "name" : "everforest",
+ "path" : "colors/everforest.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "github",
+ "mod_version" : "3.0.0",
+ "name" : "github",
+ "path" : "colors/github.lua",
+ "tags" : [
+ "light"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "github-dark-dimmed",
+ "mod_version" : "3.0.0",
+ "name" : "github-dark-dimmed",
+ "path" : "colors/github-dark-dimmed.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "github_dark",
+ "mod_version" : "3.0.0",
+ "name" : "github_dark",
+ "path" : "colors/github_dark.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "gruvbox_dark",
+ "mod_version" : "3.0.0",
+ "name" : "gruvbox_dark",
+ "path" : "colors/gruvbox_dark.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "gruvbox_light",
+ "mod_version" : "3.0.0",
+ "name" : "gruvbox_light",
+ "path" : "colors/gruvbox_light.lua",
+ "tags" : [
+ "light"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "jb-fleet",
+ "mod_version" : "3.0.0",
+ "name" : "jb-fleet",
+ "path" : "colors/jb-fleet.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "jellybeans",
+ "mod_version" : "3.0.0",
+ "name" : "jellybeans",
+ "path" : "colors/jellybeans.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "liqube",
+ "mod_version" : "3.0.0",
+ "name" : "liqube",
+ "path" : "colors/liqube.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "mariana",
+ "mod_version" : "3.0.0",
+ "name" : "mariana",
+ "path" : "colors/mariana.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "moe",
+ "mod_version" : "3.0.0",
+ "name" : "moe",
+ "path" : "colors/moe.lua",
+ "tags" : [
+ "light"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "monodark",
+ "mod_version" : "3.0.0",
+ "name" : "monodark",
+ "path" : "colors/monodark.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "monokai",
+ "mod_version" : "3.0.0",
+ "name" : "monokai",
+ "path" : "colors/monokai.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "monokai-sublime",
+ "mod_version" : "3.0.0",
+ "name" : "monokai-sublime",
+ "path" : "colors/monokai-sublime.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "monokai-pro-classic",
+ "mod_version" : "3.0.0",
+ "name" : "monokai-pro-classic",
+ "path" : "colors/monokai-pro-classic.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "nord",
+ "mod_version" : "3.0.0",
+ "name" : "nord",
+ "path" : "colors/nord.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "onedark",
+ "mod_version" : "3.0.0",
+ "name" : "onedark",
+ "path" : "colors/onedark.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "only_dark",
+ "mod_version" : "3.0.0",
+ "name" : "only_dark",
+ "path" : "colors/only_dark.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "plasma",
+ "mod_version" : "3.0.0",
+ "name" : "plasma",
+ "path" : "colors/plasma.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "rose-pine",
+ "mod_version" : "3.0.0",
+ "name" : "rose-pine",
+ "path" : "colors/rose-pine.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "rose-pine-dawn",
+ "mod_version" : "3.0.0",
+ "name" : "rose-pine-dawn",
+ "path" : "colors/rose-pine-dawn.lua",
+ "tags" : [
+ "light"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "rose-pine-moon",
+ "mod_version" : "3.0.0",
+ "name" : "rose-pine-moon",
+ "path" : "colors/rose-pine-moon.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "solarized_light",
+ "mod_version" : "3.0.0",
+ "name" : "solarized_light",
+ "path" : "colors/solarized_light.lua",
+ "tags" : [
+ "light"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "solarobj",
+ "mod_version" : "3.0.0",
+ "name" : "solarobj",
+ "path" : "colors/solarobj.lua",
+ "tags" : [
+ "light"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "synthwave",
+ "mod_version" : "3.0.0",
+ "name" : "synthwave",
+ "path" : "colors/synthwave.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "tokyo-night",
+ "mod_version" : "3.0.0",
+ "name" : "tokyo-night",
+ "path" : "colors/tokyo-night.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "vscode-dark",
+ "mod_version" : "3.0.0",
+ "name" : "vscode-dark",
+ "path" : "colors/vscode-dark.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "winter",
+ "mod_version" : "3.0.0",
+ "name" : "winter",
+ "path" : "colors/winter.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ },
+ {
+ "id" : "zenburn",
+ "mod_version" : "3.0.0",
+ "name" : "zenburn",
+ "path" : "colors/zenburn.lua",
+ "tags" : [
+ "dark"
+ ],
+ "type" : "color",
+ "version" : "0.1"
+ }
+ ]
+}
diff --git a/previews/ayu-dark.svg b/previews/ayu-dark.svg
new file mode 100644
index 0000000..b7b3895
--- /dev/null
+++ b/previews/ayu-dark.svg
@@ -0,0 +1,30 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="16" shape-rendering="crispEdges">
+<rect x="0.0" width="7.1428571428571" height="16" fill="rgb(16, 20, 28)"></rect>
+<rect x="7.1428571428571" width="7.1428571428571" height="16" fill="rgb(24, 28, 37)"></rect>
+<rect x="14.285714285714" width="7.1428571428571" height="16" fill="rgb(28, 33, 40)"></rect>
+<rect x="21.428571428571" width="7.1428571428571" height="16" fill="rgb(34, 38, 46)"></rect>
+<rect x="28.571428571429" width="7.1428571428571" height="16" fill="rgb(37, 41, 47)"></rect>
+<rect x="35.714285714286" width="7.1428571428571" height="16" fill="rgb(53, 57, 63)"></rect>
+<rect x="42.857142857143" width="7.1428571428571" height="16" fill="rgb(187, 0, 0)"></rect>
+<rect x="50.0" width="7.1428571428571" height="16" fill="rgb(72, 72, 79)"></rect>
+<rect x="57.142857142857" width="7.1428571428571" height="16" fill="rgb(82, 82, 89)"></rect>
+<rect x="64.285714285714" width="7.1428571428571" height="16" fill="rgb(92, 99, 112)"></rect>
+<rect x="71.428571428571" width="7.1428571428571" height="16" fill="rgb(28, 124, 156)"></rect>
+<rect x="78.571428571429" width="7.1428571428571" height="16" fill="rgb(131, 131, 143)"></rect>
+<rect x="85.714285714286" width="7.1428571428571" height="16" fill="rgb(114, 184, 134)"></rect>
+<rect x="92.857142857143" width="7.1428571428571" height="16" fill="rgb(255, 102, 102)"></rect>
+<rect x="100.0" width="7.1428571428571" height="16" fill="rgb(255, 143, 64)"></rect>
+<rect x="107.14285714286" width="7.1428571428571" height="16" fill="rgb(170, 217, 76)"></rect>
+<rect x="114.28571428571" width="7.1428571428571" height="16" fill="rgb(240, 113, 113)"></rect>
+<rect x="121.42857142857" width="7.1428571428571" height="16" fill="rgb(57, 186, 230)"></rect>
+<rect x="128.57142857143" width="7.1428571428571" height="16" fill="rgb(230, 180, 80)"></rect>
+<rect x="135.71428571429" width="7.1428571428571" height="16" fill="rgb(242, 150, 104)"></rect>
+<rect x="142.85714285714" width="7.1428571428571" height="16" fill="rgb(255, 169, 77)"></rect>
+<rect x="150.0" width="7.1428571428571" height="16" fill="rgb(255, 180, 84)"></rect>
+<rect x="157.14285714286" width="7.1428571428571" height="16" fill="rgb(172, 182, 191)"></rect>
+<rect x="164.28571428571" width="7.1428571428571" height="16" fill="rgb(191, 189, 182)"></rect>
+<rect x="171.42857142857" width="7.1428571428571" height="16" fill="rgb(147, 221, 250)"></rect>
+<rect x="178.57142857143" width="7.1428571428571" height="16" fill="rgb(204, 202, 223)"></rect>
+<rect x="185.71428571429" width="7.1428571428571" height="16" fill="rgb(225, 225, 230)"></rect>
+<rect x="192.85714285714" width="7.1428571428571" height="16" fill="rgb(255, 255, 255)"></rect>
+</svg> \ No newline at end of file
diff --git a/previews/ayu-light.svg b/previews/ayu-light.svg
new file mode 100644
index 0000000..eab30f0
--- /dev/null
+++ b/previews/ayu-light.svg
@@ -0,0 +1,28 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="16" shape-rendering="crispEdges">
+<rect x="0.0" width="7.6923076923077" height="16" fill="rgb(92, 97, 102)"></rect>
+<rect x="7.6923076923077" width="7.6923076923077" height="16" fill="rgb(28, 124, 156)"></rect>
+<rect x="15.384615384615" width="7.6923076923077" height="16" fill="rgb(134, 179, 0)"></rect>
+<rect x="23.076923076923" width="7.6923076923077" height="16" fill="rgb(3, 109, 214)"></rect>
+<rect x="30.769230769231" width="7.6923076923077" height="16" fill="rgb(119, 119, 119)"></rect>
+<rect x="38.461538461538" width="7.6923076923077" height="16" fill="rgb(120, 123, 128)"></rect>
+<rect x="46.153846153846" width="7.6923076923077" height="16" fill="rgb(124, 129, 134)"></rect>
+<rect x="53.846153846154" width="7.6923076923077" height="16" fill="rgb(114, 184, 134)"></rect>
+<rect x="61.538461538462" width="7.6923076923077" height="16" fill="rgb(138, 145, 153)"></rect>
+<rect x="69.230769230769" width="7.6923076923077" height="16" fill="rgb(250, 141, 62)"></rect>
+<rect x="76.923076923077" width="7.6923076923077" height="16" fill="rgb(255, 102, 102)"></rect>
+<rect x="84.615384615385" width="7.6923076923077" height="16" fill="rgb(240, 113, 113)"></rect>
+<rect x="92.307692307692" width="7.6923076923077" height="16" fill="rgb(255, 170, 51)"></rect>
+<rect x="100.0" width="7.6923076923077" height="16" fill="rgb(85, 180, 212)"></rect>
+<rect x="107.69230769231" width="7.6923076923077" height="16" fill="rgb(237, 147, 102)"></rect>
+<rect x="115.38461538462" width="7.6923076923077" height="16" fill="rgb(242, 174, 73)"></rect>
+<rect x="123.07692307692" width="7.6923076923077" height="16" fill="rgb(255, 119, 119)"></rect>
+<rect x="130.76923076923" width="7.6923076923077" height="16" fill="rgb(255, 169, 77)"></rect>
+<rect x="138.46153846154" width="7.6923076923077" height="16" fill="rgb(188, 188, 188)"></rect>
+<rect x="146.15384615385" width="7.6923076923077" height="16" fill="rgb(188, 193, 198)"></rect>
+<rect x="153.84615384615" width="7.6923076923077" height="16" fill="rgb(204, 204, 204)"></rect>
+<rect x="161.53846153846" width="7.6923076923077" height="16" fill="rgb(147, 221, 250)"></rect>
+<rect x="169.23076923077" width="7.6923076923077" height="16" fill="rgb(220, 220, 220)"></rect>
+<rect x="176.92307692308" width="7.6923076923077" height="16" fill="rgb(236, 236, 236)"></rect>
+<rect x="184.61538461538" width="7.6923076923077" height="16" fill="rgb(252, 252, 252)"></rect>
+<rect x="192.30769230769" width="7.6923076923077" height="16" fill="rgb(255, 255, 255)"></rect>
+</svg> \ No newline at end of file
diff --git a/previews/ayu-mirage.svg b/previews/ayu-mirage.svg
new file mode 100644
index 0000000..def7694
--- /dev/null
+++ b/previews/ayu-mirage.svg
@@ -0,0 +1,30 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="16" shape-rendering="crispEdges">
+<rect x="0.0" width="7.1428571428571" height="16" fill="rgb(33, 38, 51)"></rect>
+<rect x="7.1428571428571" width="7.1428571428571" height="16" fill="rgb(36, 41, 54)"></rect>
+<rect x="14.285714285714" width="7.1428571428571" height="16" fill="rgb(49, 54, 67)"></rect>
+<rect x="21.428571428571" width="7.1428571428571" height="16" fill="rgb(52, 52, 68)"></rect>
+<rect x="28.571428571429" width="7.1428571428571" height="16" fill="rgb(72, 72, 79)"></rect>
+<rect x="35.714285714286" width="7.1428571428571" height="16" fill="rgb(68, 73, 86)"></rect>
+<rect x="42.857142857143" width="7.1428571428571" height="16" fill="rgb(82, 82, 89)"></rect>
+<rect x="50.0" width="7.1428571428571" height="16" fill="rgb(221, 0, 51)"></rect>
+<rect x="57.142857142857" width="7.1428571428571" height="16" fill="rgb(84, 89, 118)"></rect>
+<rect x="64.285714285714" width="7.1428571428571" height="16" fill="rgb(92, 99, 112)"></rect>
+<rect x="71.428571428571" width="7.1428571428571" height="16" fill="rgb(28, 124, 156)"></rect>
+<rect x="78.571428571429" width="7.1428571428571" height="16" fill="rgb(131, 131, 143)"></rect>
+<rect x="85.714285714286" width="7.1428571428571" height="16" fill="rgb(114, 184, 134)"></rect>
+<rect x="92.857142857143" width="7.1428571428571" height="16" fill="rgb(255, 102, 102)"></rect>
+<rect x="100.0" width="7.1428571428571" height="16" fill="rgb(240, 113, 113)"></rect>
+<rect x="107.14285714286" width="7.1428571428571" height="16" fill="rgb(255, 169, 77)"></rect>
+<rect x="114.28571428571" width="7.1428571428571" height="16" fill="rgb(242, 158, 116)"></rect>
+<rect x="121.42857142857" width="7.1428571428571" height="16" fill="rgb(92, 207, 230)"></rect>
+<rect x="128.57142857143" width="7.1428571428571" height="16" fill="rgb(255, 173, 102)"></rect>
+<rect x="135.71428571429" width="7.1428571428571" height="16" fill="rgb(255, 204, 102)"></rect>
+<rect x="142.85714285714" width="7.1428571428571" height="16" fill="rgb(255, 209, 115)"></rect>
+<rect x="150.0" width="7.1428571428571" height="16" fill="rgb(188, 186, 207)"></rect>
+<rect x="157.14285714286" width="7.1428571428571" height="16" fill="rgb(213, 255, 128)"></rect>
+<rect x="164.28571428571" width="7.1428571428571" height="16" fill="rgb(204, 202, 194)"></rect>
+<rect x="171.42857142857" width="7.1428571428571" height="16" fill="rgb(147, 221, 250)"></rect>
+<rect x="178.57142857143" width="7.1428571428571" height="16" fill="rgb(184, 207, 230)"></rect>
+<rect x="185.71428571429" width="7.1428571428571" height="16" fill="rgb(225, 225, 230)"></rect>
+<rect x="192.85714285714" width="7.1428571428571" height="16" fill="rgb(255, 255, 255)"></rect>
+</svg> \ No newline at end of file
diff --git a/previews/github-dark-dimmed.svg b/previews/github-dark-dimmed.svg
index b68bb2c..8a689c0 100644
--- a/previews/github-dark-dimmed.svg
+++ b/previews/github-dark-dimmed.svg
@@ -1,12 +1,12 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="16" shape-rendering="crispEdges">
-<rect x="0.0" width="20.0" height="16" fill="rgb(34, 39, 46)"></rect>
-<rect x="20.0" width="20.0" height="16" fill="rgb(45, 51, 59)"></rect>
-<rect x="40.0" width="20.0" height="16" fill="rgb(68, 76, 86)"></rect>
-<rect x="60.0" width="20.0" height="16" fill="rgb(46, 76, 119)"></rect>
-<rect x="80.0" width="20.0" height="16" fill="rgb(118, 131, 144)"></rect>
-<rect x="100.0" width="20.0" height="16" fill="rgb(244, 112, 103)"></rect>
-<rect x="120.0" width="20.0" height="16" fill="rgb(108, 182, 255)"></rect>
-<rect x="140.0" width="20.0" height="16" fill="rgb(173, 186, 199)"></rect>
-<rect x="160.0" width="20.0" height="16" fill="rgb(150, 208, 255)"></rect>
-<rect x="180.0" width="20.0" height="16" fill="rgb(220, 189, 251)"></rect>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="16" shape-rendering="crispEdges">
+<rect x="0.0" width="20.0" height="16" fill="rgb(34, 39, 46)"></rect>
+<rect x="20.0" width="20.0" height="16" fill="rgb(45, 51, 59)"></rect>
+<rect x="40.0" width="20.0" height="16" fill="rgb(68, 76, 86)"></rect>
+<rect x="60.0" width="20.0" height="16" fill="rgb(46, 76, 119)"></rect>
+<rect x="80.0" width="20.0" height="16" fill="rgb(118, 131, 144)"></rect>
+<rect x="100.0" width="20.0" height="16" fill="rgb(244, 112, 103)"></rect>
+<rect x="120.0" width="20.0" height="16" fill="rgb(108, 182, 255)"></rect>
+<rect x="140.0" width="20.0" height="16" fill="rgb(173, 186, 199)"></rect>
+<rect x="160.0" width="20.0" height="16" fill="rgb(150, 208, 255)"></rect>
+<rect x="180.0" width="20.0" height="16" fill="rgb(220, 189, 251)"></rect>
</svg> \ No newline at end of file
diff --git a/previews/monokai-sublime.svg b/previews/monokai-sublime.svg
new file mode 100644
index 0000000..ea25ed2
--- /dev/null
+++ b/previews/monokai-sublime.svg
@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="16" shape-rendering="crispEdges">
+<rect x="0.0" width="12.5" height="16" fill="rgb(24, 25, 21)"></rect>
+<rect x="12.5" width="12.5" height="16" fill="rgb(27, 28, 23)"></rect>
+<rect x="25.0" width="12.5" height="16" fill="rgb(40, 41, 35)"></rect>
+<rect x="37.5" width="12.5" height="16" fill="rgb(76, 75, 65)"></rect>
+<rect x="50.0" width="12.5" height="16" fill="rgb(83, 83, 79)"></rect>
+<rect x="62.5" width="12.5" height="16" fill="rgb(94, 96, 82)"></rect>
+<rect x="75.0" width="12.5" height="16" fill="rgb(116, 112, 93)"></rect>
+<rect x="87.5" width="12.5" height="16" fill="rgb(249, 36, 114)"></rect>
+<rect x="100.0" width="12.5" height="16" fill="rgb(144, 145, 139)"></rect>
+<rect x="112.5" width="12.5" height="16" fill="rgb(158, 161, 145)"></rect>
+<rect x="125.0" width="12.5" height="16" fill="rgb(172, 128, 255)"></rect>
+<rect x="137.5" width="12.5" height="16" fill="rgb(103, 216, 239)"></rect>
+<rect x="150.0" width="12.5" height="16" fill="rgb(231, 219, 116)"></rect>
+<rect x="162.5" width="12.5" height="16" fill="rgb(210, 208, 198)"></rect>
+<rect x="175.0" width="12.5" height="16" fill="rgb(248, 248, 242)"></rect>
+<rect x="187.5" width="12.5" height="16" fill="rgb(253, 253, 252)"></rect>
+</svg> \ No newline at end of file
diff --git a/previews/monokai.svg b/previews/monokai.svg
index 5b44f9f..e1d4e34 100644
--- a/previews/monokai.svg
+++ b/previews/monokai.svg
@@ -1,18 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="16" shape-rendering="crispEdges">
<rect x="0.0" width="12.5" height="16" fill="rgb(24, 25, 21)"></rect>
-<rect x="12.5" width="12.5" height="16" fill="rgb(27, 28, 23)"></rect>
-<rect x="25.0" width="12.5" height="16" fill="rgb(40, 41, 35)"></rect>
-<rect x="37.5" width="12.5" height="16" fill="rgb(58, 58, 50)"></rect>
-<rect x="50.0" width="12.5" height="16" fill="rgb(61, 61, 56)"></rect>
-<rect x="62.5" width="12.5" height="16" fill="rgb(94, 96, 82)"></rect>
-<rect x="75.0" width="12.5" height="16" fill="rgb(99, 99, 95)"></rect>
-<rect x="87.5" width="12.5" height="16" fill="rgb(117, 113, 94)"></rect>
-<rect x="100.0" width="12.5" height="16" fill="rgb(249, 36, 114)"></rect>
-<rect x="112.5" width="12.5" height="16" fill="rgb(144, 145, 139)"></rect>
+<rect x="12.5" width="12.5" height="16" fill="rgb(39, 40, 34)"></rect>
+<rect x="25.0" width="12.5" height="16" fill="rgb(73, 72, 62)"></rect>
+<rect x="37.5" width="12.5" height="16" fill="rgb(83, 83, 79)"></rect>
+<rect x="50.0" width="12.5" height="16" fill="rgb(94, 96, 82)"></rect>
+<rect x="62.5" width="12.5" height="16" fill="rgb(117, 113, 94)"></rect>
+<rect x="75.0" width="12.5" height="16" fill="rgb(249, 36, 114)"></rect>
+<rect x="87.5" width="12.5" height="16" fill="rgb(249, 38, 114)"></rect>
+<rect x="100.0" width="12.5" height="16" fill="rgb(144, 145, 139)"></rect>
+<rect x="112.5" width="12.5" height="16" fill="rgb(166, 226, 46)"></rect>
<rect x="125.0" width="12.5" height="16" fill="rgb(158, 161, 145)"></rect>
-<rect x="137.5" width="12.5" height="16" fill="rgb(92, 213, 239)"></rect>
-<rect x="150.0" width="12.5" height="16" fill="rgb(172, 128, 255)"></rect>
-<rect x="162.5" width="12.5" height="16" fill="rgb(231, 219, 116)"></rect>
-<rect x="175.0" width="12.5" height="16" fill="rgb(210, 208, 198)"></rect>
+<rect x="137.5" width="12.5" height="16" fill="rgb(174, 129, 255)"></rect>
+<rect x="150.0" width="12.5" height="16" fill="rgb(230, 219, 116)"></rect>
+<rect x="162.5" width="12.5" height="16" fill="rgb(210, 208, 198)"></rect>
+<rect x="175.0" width="12.5" height="16" fill="rgb(248, 248, 240)"></rect>
<rect x="187.5" width="12.5" height="16" fill="rgb(248, 248, 242)"></rect>
</svg> \ No newline at end of file
diff --git a/scripts/make_preview_image.lua b/scripts/make_preview_image.lua
new file mode 100755
index 0000000..d1d48be
--- /dev/null
+++ b/scripts/make_preview_image.lua
@@ -0,0 +1,50 @@
+#!/usr/bin/lua
+
+for i, filename in ipairs({ ... }) do
+ local name = filename:match("([^\\/]+)%..*$")
+
+ -- get colors
+ local text = io.open(filename):read("*a")
+ local colors = {}
+ for r, g, b in text:gmatch("#(%x%x)(%x%x)(%x%x)") do
+ r = tonumber(r, 16)
+ g = tonumber(g, 16)
+ b = tonumber(b, 16)
+ table.insert(colors, { r, g, b })
+ end
+
+ table.sort(colors, function(a, b)
+ return a[1] + a[2] + a[3] < b[1] + b[2] + b[3]
+ end)
+
+ local function eq(a, b)
+ return a[1] == b[1] and a[2] == b[2] and a[3] == b[3]
+ end
+
+ local prev = {}
+ for i = #colors, 1, -1 do
+ if eq(colors[i], prev) then
+ table.remove(colors, i)
+ else
+ prev = colors[i]
+ end
+ end
+
+
+ --generate svg file
+ local w = 200
+ local h = 16
+ local fp = io.open("previews/" .. name .. ".svg", "wb")
+
+ fp:write('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'..w..'" height="'..h..'" shape-rendering="crispEdges"> \n')
+
+ for i = 1, #colors do
+ local width = w/#colors
+ local r, g, b = table.unpack(colors[i])
+ local rect = '<rect x="'..(i-1)*width..'" width="'..width..'" height="'..h..'" fill="rgb('..r..', '..g..', '..b..')"></rect> \n'
+ fp:write(rect)
+ end
+
+ fp:write('</svg>')
+ fp:close()
+end