├── .prettierignore
├── .gitignore
├── src
├── index.ts
├── generator.test.ts
├── markdownTable.test.ts
├── markdownTable.ts
└── generator.ts
├── readme.md
├── package.json
├── .github
├── dependabot.yml
└── workflows
│ └── node.js.yml
├── tsconfig.json
├── license
├── bun.lock
└── lists
└── themes.md
/.prettierignore:
--------------------------------------------------------------------------------
1 | lists/
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Dependencies
2 | node_modules/
3 |
4 | # dotenv environment variables
5 | .env
6 |
7 | # Bun
8 | .bun
9 |
10 | # macOS
11 | .DS_Store
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import { runGeneration } from "./generator";
2 |
3 | runGeneration().catch((error) => {
4 | console.error(error);
5 | process.exitCode = 1;
6 | });
7 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # 📃 obsidian-community-list
2 |
3 | This repository fetches the [community themes and plugins catalog](https://github.com/obsidianmd/obsidian-releases) and turns it into Markdown tables.
4 |
5 | - [🎀 Themes](lists/themes.md)
6 | - [🔌 Plugins](lists/plugins.md)
7 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "obsidian-community-list",
3 | "scripts": {
4 | "start": "bun run src/index.ts",
5 | "format": "prettier --write .",
6 | "lint": "prettier --check .",
7 | "test": "bun test"
8 | },
9 | "devDependencies": {
10 | "@types/bun": "^1.3.5",
11 | "prettier": "^3.7.4",
12 | "typescript": "^5.9.3"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for all configuration options:
4 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5 |
6 | version: 2
7 | updates:
8 | - package-ecosystem: "bun"
9 | directory: "/" # Location of package manifests
10 | schedule:
11 | interval: "daily"
12 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "lib": ["ESNext"],
4 | "target": "ESNext",
5 | "module": "Preserve",
6 | "moduleDetection": "force",
7 | "jsx": "react-jsx",
8 | "allowJs": true,
9 | "moduleResolution": "bundler",
10 | "allowImportingTsExtensions": true,
11 | "verbatimModuleSyntax": true,
12 | "noEmit": true,
13 | "strict": true,
14 | "skipLibCheck": true,
15 | "noFallthroughCasesInSwitch": true,
16 | "noUncheckedIndexedAccess": true,
17 | "noImplicitOverride": true,
18 | "noUnusedLocals": false,
19 | "noUnusedParameters": false,
20 | "noPropertyAccessFromIndexSignature": false,
21 | "types": ["bun"],
22 | "resolveJsonModule": true
23 | },
24 | "include": ["src"]
25 | }
26 |
--------------------------------------------------------------------------------
/.github/workflows/node.js.yml:
--------------------------------------------------------------------------------
1 | # Runs the Bun toolchain on a schedule. Everything (install, lint, test, build)
2 | # executes via Bun, so no standalone Node runtime is required.
3 |
4 | name: Bun CI
5 |
6 | on:
7 | push:
8 | branches: [main]
9 | pull_request:
10 | branches: [main]
11 | schedule:
12 | - cron: "00 00 * * *"
13 |
14 | jobs:
15 | build:
16 | permissions:
17 | contents: write
18 | runs-on: ubuntu-latest
19 | steps:
20 | - uses: actions/checkout@v4
21 | - name: Setup Bun
22 | uses: oven-sh/setup-bun@v1
23 | with:
24 | bun-version: 1.3.4
25 | - run: bun install --no-save
26 | - run: bun run lint
27 | - run: bun test
28 | - run: bun run start
29 | - name: Commit generated output
30 | if: github.event_name == 'schedule'
31 | run: |-
32 | git diff
33 | git config --global user.email "actions@users.noreply.github.com"
34 | git config --global user.name "README-bot"
35 | git add -A
36 | git commit -m "🐱 readme.md" || exit 0
37 | git push
38 |
--------------------------------------------------------------------------------
/license:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 Jan Szymański
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/bun.lock:
--------------------------------------------------------------------------------
1 | {
2 | "lockfileVersion": 1,
3 | "configVersion": 0,
4 | "workspaces": {
5 | "": {
6 | "name": "obsidian-community-list",
7 | "devDependencies": {
8 | "@types/bun": "^1.3.5",
9 | "prettier": "^3.7.4",
10 | "typescript": "^5.9.3",
11 | },
12 | },
13 | },
14 | "packages": {
15 | "@types/bun": ["@types/bun@1.3.5", "", { "dependencies": { "bun-types": "1.3.5" } }, "sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w=="],
16 |
17 | "@types/node": ["@types/node@24.10.2", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA=="],
18 |
19 | "bun-types": ["bun-types@1.3.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw=="],
20 |
21 | "prettier": ["prettier@3.7.4", "", { "bin": "bin/prettier.cjs" }, "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA=="],
22 |
23 | "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
24 |
25 | "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/generator.test.ts:
--------------------------------------------------------------------------------
1 | import { describe, expect, test } from "bun:test";
2 | import {
3 | normalizePlugins,
4 | normalizeThemes,
5 | renderPluginTable,
6 | renderThemeTable,
7 | } from "./generator";
8 |
9 | describe("normalizePlugins", () => {
10 | test("drops invalid items and preserves descriptions", () => {
11 | const payload = [
12 | { name: "Sample", repo: "owner/repo", description: "desc" },
13 | { name: "Missing repo" },
14 | { repo: "owner/only" },
15 | ];
16 |
17 | const normalized = normalizePlugins(payload);
18 |
19 | expect(normalized).toEqual([
20 | { name: "Sample", repo: "owner/repo", description: "desc" },
21 | ]);
22 | });
23 | });
24 |
25 | describe("normalizeThemes", () => {
26 | test("requires name, repo and screenshot", () => {
27 | const payload = [
28 | { name: "Theme", repo: "owner/theme", screenshot: "shot.png" },
29 | { name: "Theme", repo: "owner/theme" },
30 | ];
31 |
32 | const normalized = normalizeThemes(payload);
33 |
34 | expect(normalized).toEqual([
35 | { name: "Theme", repo: "owner/theme", screenshot: "shot.png" },
36 | ]);
37 | });
38 | });
39 |
40 | describe("renderers", () => {
41 | test("renderPluginTable substitutes empty description", () => {
42 | const table = renderPluginTable([
43 | { name: "Plugin", repo: "owner/plugin", description: "" },
44 | ]);
45 |
46 | expect(table.includes("—")).toBe(true);
47 | });
48 |
49 | test("renderThemeTable embeds screenshot URLs", () => {
50 | const table = renderThemeTable([
51 | { name: "Theme", repo: "owner/theme", screenshot: "shot.png" },
52 | ]);
53 |
54 | expect(table).toContain("shot.png");
55 | });
56 | });
57 |
--------------------------------------------------------------------------------
/src/markdownTable.test.ts:
--------------------------------------------------------------------------------
1 | import { describe, expect, test } from "bun:test";
2 | import { createMarkdownTable, parseMarkdownTable } from "./markdownTable";
3 |
4 | describe("createMarkdownTable", () => {
5 | test("renders well-formed markdown with escaped characters", () => {
6 | const table = createMarkdownTable(
7 | ["📁 Name", "✨ Description"],
8 | [["alpha|beta", "line one\nline two"]],
9 | );
10 |
11 | expect(table).toBe(
12 | "| 📁 Name | ✨ Description |\n| --- | --- |\n| alpha\\|beta | line one
line two |",
13 | );
14 | });
15 |
16 | test("pads short rows to match header count", () => {
17 | const table = createMarkdownTable(["A", "B", "C"], [["x"]]);
18 |
19 | expect(table.endsWith("| x | | |")).toBe(true);
20 | });
21 | });
22 |
23 | describe("parseMarkdownTable", () => {
24 | test("handles rows that span multiple lines", () => {
25 | const markdown = [
26 | "| 📁 Name | ✨ Description |",
27 | "| --- | --- |",
28 | "| [Quick snippets and navigation](https://github.com/ieviev/obsidian-keyboard-shortcuts) | Keyboard navigation up/down for headings",
29 | "- Configurable default code block and callout",
30 | "- Copy code block via keyboard shortcut. |",
31 | ].join("\n");
32 |
33 | const parsed = parseMarkdownTable(markdown);
34 |
35 | expect(parsed.headers).toEqual(["📁 Name", "✨ Description"]);
36 | expect(parsed.rows).toHaveLength(1);
37 | expect(parsed.rows[0]?.[1]).toBe(
38 | "Keyboard navigation up/down for headings\n- Configurable default code block and callout\n- Copy code block via keyboard shortcut.",
39 | );
40 |
41 | const regenerated = createMarkdownTable(parsed.headers, parsed.rows);
42 |
43 | expect(regenerated).toContain("
- Configurable default code block");
44 | expect(regenerated.includes("\n- Configurable")).toBe(false);
45 | });
46 | });
47 |
--------------------------------------------------------------------------------
/src/markdownTable.ts:
--------------------------------------------------------------------------------
1 | function sanitizeCell(value: string): string {
2 | const cleaned = value
3 | .replace(/\\/g, "\\\\")
4 | .replace(/\|/g, "\\|")
5 | .replace(/\r?\n/g, "
")
6 | .trim();
7 |
8 | return cleaned.length > 0 ? cleaned : " ";
9 | }
10 |
11 | function normalizeRow(row: string[], columnCount: number): string[] {
12 | const normalized: string[] = [];
13 |
14 | for (let index = 0; index < columnCount; index += 1) {
15 | const cell = row[index] ?? "";
16 | normalized.push(sanitizeCell(cell));
17 | }
18 |
19 | return normalized;
20 | }
21 |
22 | export type ParsedMarkdownTable = {
23 | headers: string[];
24 | rows: string[][];
25 | };
26 |
27 | function splitRowIntoCells(row: string): string[] {
28 | const trimmed = row.trim();
29 |
30 | if (!trimmed.startsWith("|") || !trimmed.endsWith("|")) {
31 | throw new Error(`Invalid table row: ${row}`);
32 | }
33 |
34 | const content = trimmed.slice(1, -1);
35 | const cells: string[] = [];
36 | let buffer = "";
37 | let index = 0;
38 |
39 | while (index < content.length) {
40 | const char = content[index];
41 |
42 | if (char === "\\") {
43 | const nextChar = content[index + 1];
44 |
45 | if (nextChar === "|") {
46 | buffer += "|";
47 | index += 2;
48 | continue;
49 | }
50 |
51 | buffer += "\\";
52 | index += 1;
53 | continue;
54 | }
55 |
56 | if (char === "|") {
57 | cells.push(buffer.trim());
58 | buffer = "";
59 | index += 1;
60 | continue;
61 | }
62 |
63 | buffer += char;
64 | index += 1;
65 | }
66 |
67 | cells.push(buffer.trim());
68 |
69 | return cells;
70 | }
71 |
72 | function isDividerCell(value: string): boolean {
73 | return /^:?-{3,}:?$/.test(value.trim());
74 | }
75 |
76 | function collectTableRows(markdown: string): string[] {
77 | const lines = markdown.split(/\r?\n/);
78 | const rows: string[] = [];
79 | let buffer: string[] = [];
80 |
81 | const pushBuffer = (): void => {
82 | if (buffer.length > 0) {
83 | rows.push(buffer.join("\n"));
84 | buffer = [];
85 | }
86 | };
87 |
88 | for (const line of lines) {
89 | if (buffer.length === 0) {
90 | if (line.trim().length === 0) {
91 | continue;
92 | }
93 |
94 | if (!line.trimStart().startsWith("|")) {
95 | continue;
96 | }
97 | }
98 |
99 | buffer.push(line);
100 |
101 | if (line.trimEnd().endsWith("|")) {
102 | pushBuffer();
103 | }
104 | }
105 |
106 | pushBuffer();
107 |
108 | return rows;
109 | }
110 |
111 | export function createMarkdownTable(
112 | headers: string[],
113 | rows: string[][],
114 | ): string {
115 | if (headers.length === 0) {
116 | throw new Error("Cannot create a table without headers");
117 | }
118 |
119 | const columnCount = headers.length;
120 | const normalizedHeaders = headers.map(sanitizeCell);
121 | const normalizedRows = rows.map((row) => normalizeRow(row, columnCount));
122 | const headerLine = `| ${normalizedHeaders.join(" | ")} |`;
123 | const dividerLine = `| ${normalizedHeaders.map(() => "---").join(" | ")} |`;
124 | const rowLines = normalizedRows.map((row) => `| ${row.join(" | ")} |`);
125 |
126 | return [headerLine, dividerLine, ...rowLines].join("\n");
127 | }
128 |
129 | export function parseMarkdownTable(markdown: string): ParsedMarkdownTable {
130 | const rows = collectTableRows(markdown);
131 |
132 | if (rows.length < 2) {
133 | throw new Error("Markdown table must include headers and divider row");
134 | }
135 |
136 | const [headerRow, dividerRow, ...dataRows] = rows;
137 |
138 | if (!headerRow || !dividerRow) {
139 | throw new Error("Markdown table must include headers and divider row");
140 | }
141 |
142 | const headers = splitRowIntoCells(headerRow);
143 | const dividerCells = splitRowIntoCells(dividerRow);
144 |
145 | if (
146 | dividerCells.length !== headers.length ||
147 | !dividerCells.every(isDividerCell)
148 | ) {
149 | throw new Error("Invalid markdown table divider row");
150 | }
151 |
152 | const parsedRows = dataRows.map((row) => splitRowIntoCells(row));
153 |
154 | return { headers, rows: parsedRows };
155 | }
156 |
--------------------------------------------------------------------------------
/src/generator.ts:
--------------------------------------------------------------------------------
1 | import { mkdir, writeFile } from "node:fs/promises";
2 | import { join } from "node:path";
3 | import { createMarkdownTable } from "./markdownTable";
4 |
5 | const OUTPUT_DIRECTORY = "lists";
6 |
7 | const URLS = {
8 | github: "https://github.com",
9 | themes:
10 | "https://raw.githubusercontent.com/obsidianmd/obsidian-releases/refs/heads/master/community-css-themes.json",
11 | plugins:
12 | "https://raw.githubusercontent.com/obsidianmd/obsidian-releases/refs/heads/master/community-plugins.json",
13 | };
14 |
15 | export type PluginRecord = {
16 | name: string;
17 | repo: string;
18 | description: string;
19 | };
20 |
21 | export type ThemeRecord = {
22 | name: string;
23 | repo: string;
24 | screenshot: string;
25 | };
26 |
27 | export type Normalizer = (payload: unknown) => T[];
28 | export type TableRenderer = (records: T[]) => string;
29 |
30 | function isRecord(value: unknown): value is Record {
31 | return typeof value === "object" && value !== null;
32 | }
33 |
34 | function buildGithubUrl(repo: string): string {
35 | return encodeURI(`${URLS.github}/${repo}`);
36 | }
37 |
38 | function buildScreenshotUrl(theme: ThemeRecord): string {
39 | return encodeURI(
40 | `https://raw.githubusercontent.com/${theme.repo}/master/${theme.screenshot}`,
41 | );
42 | }
43 |
44 | function formatLink(label: string, href: string): string {
45 | return `[${label}](${href})`;
46 | }
47 |
48 | function formatImage(alt: string, href: string): string {
49 | return ``;
50 | }
51 |
52 | export function normalizePlugins(payload: unknown): PluginRecord[] {
53 | if (!Array.isArray(payload)) {
54 | return [];
55 | }
56 |
57 | return payload.reduce((acc, item) => {
58 | if (!isRecord(item)) {
59 | return acc;
60 | }
61 |
62 | const name = typeof item.name === "string" ? item.name : null;
63 | const repo = typeof item.repo === "string" ? item.repo : null;
64 | const description =
65 | typeof item.description === "string" ? item.description : "";
66 |
67 | if (name && repo) {
68 | acc.push({ name, repo, description });
69 | }
70 |
71 | return acc;
72 | }, []);
73 | }
74 |
75 | export function normalizeThemes(payload: unknown): ThemeRecord[] {
76 | if (!Array.isArray(payload)) {
77 | return [];
78 | }
79 |
80 | return payload.reduce((acc, item) => {
81 | if (!isRecord(item)) {
82 | return acc;
83 | }
84 |
85 | const name = typeof item.name === "string" ? item.name : null;
86 | const repo = typeof item.repo === "string" ? item.repo : null;
87 | const screenshot =
88 | typeof item.screenshot === "string" ? item.screenshot : null;
89 |
90 | if (name && repo && screenshot) {
91 | acc.push({ name, repo, screenshot });
92 | }
93 |
94 | return acc;
95 | }, []);
96 | }
97 |
98 | export function renderPluginTable(records: PluginRecord[]): string {
99 | const headers = ["📁 Name", "✨ Description"];
100 | const rows = records.map((plugin) => [
101 | formatLink(plugin.name, buildGithubUrl(plugin.repo)),
102 | plugin.description || "—",
103 | ]);
104 |
105 | return createMarkdownTable(headers, rows);
106 | }
107 |
108 | export function renderThemeTable(records: ThemeRecord[]): string {
109 | const headers = ["📁 Repository", "📷 Screenshot"];
110 | const rows = records.map((theme) => [
111 | formatLink(theme.repo, buildGithubUrl(theme.repo)),
112 | formatImage(theme.name, buildScreenshotUrl(theme)),
113 | ]);
114 |
115 | return createMarkdownTable(headers, rows);
116 | }
117 |
118 | async function fetchJson(url: string): Promise {
119 | const response = await fetch(url);
120 |
121 | if (!response.ok) {
122 | throw new Error(
123 | `Failed to fetch ${url}: ${response.status} ${response.statusText}`,
124 | );
125 | }
126 |
127 | return response.json();
128 | }
129 |
130 | async function writeMarkdownFile(
131 | filename: string,
132 | content: string,
133 | ): Promise {
134 | const filePath = join(OUTPUT_DIRECTORY, `${filename}.md`);
135 | await writeFile(filePath, `${content}\n`, "utf8");
136 | }
137 |
138 | async function generateList(options: {
139 | filename: string;
140 | url: string;
141 | normalize: Normalizer;
142 | render: TableRenderer;
143 | }): Promise {
144 | const raw = await fetchJson(options.url);
145 | const normalized = options.normalize(raw);
146 | const table = options.render(normalized);
147 | await writeMarkdownFile(options.filename, table);
148 | }
149 |
150 | async function ensureOutputDirectory(): Promise {
151 | await mkdir(OUTPUT_DIRECTORY, { recursive: true });
152 | }
153 |
154 | export async function runGeneration(): Promise {
155 | await ensureOutputDirectory();
156 |
157 | const generationResults = await Promise.allSettled([
158 | generateList({
159 | filename: "themes",
160 | url: URLS.themes,
161 | normalize: normalizeThemes,
162 | render: renderThemeTable,
163 | }),
164 | generateList({
165 | filename: "plugins",
166 | url: URLS.plugins,
167 | normalize: normalizePlugins,
168 | render: renderPluginTable,
169 | }),
170 | ]);
171 |
172 | const failures = generationResults.filter(
173 | (result): result is PromiseRejectedResult => result.status === "rejected",
174 | );
175 |
176 | if (failures.length > 0) {
177 | const reasons = failures.map((failure) => {
178 | if (failure.reason instanceof Error) {
179 | return failure.reason;
180 | }
181 |
182 | if (typeof failure.reason === "string") {
183 | return new Error(failure.reason);
184 | }
185 |
186 | return new Error("Unknown generation failure");
187 | });
188 |
189 | throw new AggregateError(
190 | reasons,
191 | "Failed to complete all list generations",
192 | );
193 | }
194 | }
195 |
--------------------------------------------------------------------------------
/lists/themes.md:
--------------------------------------------------------------------------------
1 | | 📁 Repository | 📷 Screenshot |
2 | | --- | --- |
3 | | [kognise/obsidian-atom](https://github.com/kognise/obsidian-atom) |  |
4 | | [cotemaxime/obsidian-amethyst](https://github.com/cotemaxime/obsidian-amethyst) |  |
5 | | [insanum/obsidian_gruvbox](https://github.com/insanum/obsidian_gruvbox) |  |
6 | | [insanum/obsidian_nord](https://github.com/insanum/obsidian_nord) |  |
7 | | [jarodise/Dracula-for-Obsidian.md](https://github.com/jarodise/Dracula-for-Obsidian.md) |  |
8 | | [dogwaddle/obsidian-gastown-theme.md](https://github.com/dogwaddle/obsidian-gastown-theme.md) |  |
9 | | [deathau/80s-Neon-for-Obsidian.md](https://github.com/deathau/80s-Neon-for-Obsidian.md) |  |
10 | | [deathau/Base2Tone-For-Obsidian.md](https://github.com/deathau/Base2Tone-For-Obsidian.md) |  |
11 | | [deathau/Notation-for-Obsidian](https://github.com/deathau/Notation-for-Obsidian) |  |
12 | | [harmtemolder/obsidian-solarized](https://github.com/harmtemolder/obsidian-solarized) |  |
13 | | [obsidian-ezs/obsidian-comfort-color-dark](https://github.com/obsidian-ezs/obsidian-comfort-color-dark) |  |
14 | | [obsidian-ezs/obsidian-ursa](https://github.com/obsidian-ezs/obsidian-ursa) |  |
15 | | [nickmilo/Cybertron](https://github.com/nickmilo/Cybertron) |  |
16 | | [kartik-karz/moonlight-obsidian](https://github.com/kartik-karz/moonlight-obsidian) |  |
17 | | [seanwcom/Red-Graphite-for-Obsidian](https://github.com/seanwcom/Red-Graphite-for-Obsidian) |  |
18 | | [kartik-karz/subtlegold-obsidian](https://github.com/kartik-karz/subtlegold-obsidian) |  |
19 | | [sainadh-d/obsidian-boom](https://github.com/sainadh-d/obsidian-boom) |  |
20 | | [pgalliford/Obsidian-theme-Incredible-Hulk](https://github.com/pgalliford/Obsidian-theme-Incredible-Hulk) |  |
21 | | [GuangluWu/obsidian-pisum](https://github.com/GuangluWu/obsidian-pisum) |  |
22 | | [elliotboyd/obsidian-traffic-lights](https://github.com/elliotboyd/obsidian-traffic-lights) |  |
23 | | [mediapathic/obsidian-arsmagna-theme](https://github.com/mediapathic/obsidian-arsmagna-theme) |  |
24 | | [cannibalox/Obsdn-dark-rmx](https://github.com/cannibalox/Obsdn-dark-rmx) |  |
25 | | [kepano/obsidian-minimal](https://github.com/kepano/obsidian-minimal) |  |
26 | | [rcvd/obsidian_ia](https://github.com/rcvd/obsidian_ia) |  |
27 | | [bcdavasconcelos/Obsidian-Charcoal](https://github.com/bcdavasconcelos/Obsidian-Charcoal) |  |
28 | | [bcdavasconcelos/Obsidian-Panic_Mode](https://github.com/bcdavasconcelos/Obsidian-Panic_Mode) |  |
29 | | [bcdavasconcelos/Obsidian-Graphite](https://github.com/bcdavasconcelos/Obsidian-Graphite) |  |
30 | | [bcdavasconcelos/Obsidian-Ayu](https://github.com/bcdavasconcelos/Obsidian-Ayu) |  |
31 | | [bcdavasconcelos/Obsidian-Ayu_Mirage](https://github.com/bcdavasconcelos/Obsidian-Ayu_Mirage) |  |
32 | | [bcdavasconcelos/Obsidian-GDCT](https://github.com/bcdavasconcelos/Obsidian-GDCT) |  |
33 | | [bcdavasconcelos/Obsidian-GDCT_Dark](https://github.com/bcdavasconcelos/Obsidian-GDCT_Dark) |  |
34 | | [dmytrodubinin/Obuntu-theme-for-Obsidian](https://github.com/dmytrodubinin/Obuntu-theme-for-Obsidian) |  |
35 | | [cannibalox/ono-sendai_obsdn](https://github.com/cannibalox/ono-sendai_obsdn) |  |
36 | | [PKM-er/Blue-Topaz_Obsidian-css](https://github.com/PKM-er/Blue-Topaz_Obsidian-css) |  |
37 | | [santiyounger/Reverie-Obsidian-Theme](https://github.com/santiyounger/Reverie-Obsidian-Theme) |  |
38 | | [ryjjin/Obsidian-Dark-Graphite-Pie-theme](https://github.com/ryjjin/Obsidian-Dark-Graphite-Pie-theme) |  |
39 | | [bennyxguo/Obsidian-Obsidianite](https://github.com/bennyxguo/Obsidian-Obsidianite) |  |
40 | | [ismailgunacar/gitsidian](https://github.com/ismailgunacar/gitsidian) |  |
41 | | [sparklau/comfort-smooth](https://github.com/sparklau/comfort-smooth) |  |
42 | | [dxcore35/Suddha-theme](https://github.com/dxcore35/Suddha-theme) |  |
43 | | [radekkozak/discordian](https://github.com/radekkozak/discordian) |  |
44 | | [chad-bennett/al-dente-obsidian-theme](https://github.com/chad-bennett/al-dente-obsidian-theme) |  |
45 | | [santiyounger/Wasp-Obsidian-Theme](https://github.com/santiyounger/Wasp-Obsidian-Theme) |  |
46 | | [lukauskas/obsidian-highlighter-theme](https://github.com/lukauskas/obsidian-highlighter-theme) |  |
47 | | [SlRvb/Obsidian--ITS-Theme](https://github.com/SlRvb/Obsidian--ITS-Theme) |  |
48 | | [hipstersmoothie/hipstersmoothie-obsidian-theme](https://github.com/hipstersmoothie/hipstersmoothie-obsidian-theme) |  |
49 | | [auroral-ui/aurora-obsidian-md](https://github.com/auroral-ui/aurora-obsidian-md) |  |
50 | | [izumin5210/obsidian-iceberg](https://github.com/izumin5210/obsidian-iceberg) |  |
51 | | [chetachiezikeuzor/Yin-and-Yang-Theme](https://github.com/chetachiezikeuzor/Yin-and-Yang-Theme) |  |
52 | | [shaggyfeng/obsidian-Golden-Topaz-theme](https://github.com/shaggyfeng/obsidian-Golden-Topaz-theme) |  |
53 | | [shaggyfeng/obsidian-Pink-topaz-theme](https://github.com/shaggyfeng/obsidian-Pink-topaz-theme) |  |
54 | | [sergey900553/obsidian_githublike_theme](https://github.com/sergey900553/obsidian_githublike_theme) |  |
55 | | [Wittionary/mammoth-obsidian-theme](https://github.com/Wittionary/mammoth-obsidian-theme) |  |
56 | | [luke-rmaki/rmaki-obsidian](https://github.com/luke-rmaki/rmaki-obsidian) |  |
57 | | [ThePharaohArt/Obsidian-CyberGlow](https://github.com/ThePharaohArt/Obsidian-CyberGlow) |  |
58 | | [johackim/obsidian-darkyan](https://github.com/johackim/obsidian-darkyan) |  |
59 | | [0xGlitchbyte/obsidian_everforest](https://github.com/0xGlitchbyte/obsidian_everforest) |  |
60 | | [vanadium23/obsidian-blackbird-theme](https://github.com/vanadium23/obsidian-blackbird-theme) |  |
61 | | [Chrismettal/Obsidian-Behave-dark](https://github.com/Chrismettal/Obsidian-Behave-dark) |  |
62 | | [SMUsamaShah/Obsidian-Win98-Edition](https://github.com/SMUsamaShah/Obsidian-Win98-Edition) |  |
63 | | [dogwaddle/lizardmen-zettelkasten](https://github.com/dogwaddle/lizardmen-zettelkasten) |  |
64 | | [chrisgrieser/shimmering-focus](https://github.com/chrisgrieser/shimmering-focus) |  |
65 | | [lazercaveman/obsidian-firefly-theme](https://github.com/lazercaveman/obsidian-firefly-theme) |  |
66 | | [zacharyc/purple-owl-theme](https://github.com/zacharyc/purple-owl-theme) |  |
67 | | [gracejoseph1236/obsidian-emerald](https://github.com/gracejoseph1236/obsidian-emerald) |  |
68 | | [tomzorz/Sodalite](https://github.com/tomzorz/Sodalite) |  |
69 | | [JoshKasap/Obsidian-Faded-Theme](https://github.com/JoshKasap/Obsidian-Faded-Theme) |  |
70 | | [jdanielmourao/obsidian-sanctum](https://github.com/jdanielmourao/obsidian-sanctum) |  |
71 | | [cassidoo/cardstock](https://github.com/cassidoo/cardstock) |  |
72 | | [Nilahn/pine_forest_berry](https://github.com/Nilahn/pine_forest_berry) |  |
73 | | [mimishahzad/rose-pine-moon-obsidian](https://github.com/mimishahzad/rose-pine-moon-obsidian) |  |
74 | | [gracejoseph1236/obsidian-ruby](https://github.com/gracejoseph1236/obsidian-ruby) |  |
75 | | [damiankorcz/Prism-Theme](https://github.com/damiankorcz/Prism-Theme) |  |
76 | | [gracejoseph1236/obsidian-carnelian](https://github.com/gracejoseph1236/obsidian-carnelian) |  |
77 | | [ebullient/obsidian-theme-ebullientworks](https://github.com/ebullient/obsidian-theme-ebullientworks) |  |
78 | | [AndreasStandar/Obsidian-Theme---Purple-Aurora](https://github.com/AndreasStandar/Obsidian-Theme---Purple-Aurora) |  |
79 | | [primary-theme/obsidian](https://github.com/primary-theme/obsidian) |  |
80 | | [zcysxy/Obsidian-Terminal-Theme](https://github.com/zcysxy/Obsidian-Terminal-Theme) |  |
81 | | [Emrie-Candera/Bubble-Space-Theme](https://github.com/Emrie-Candera/Bubble-Space-Theme) |  |
82 | | [colineckert/obsidian-things](https://github.com/colineckert/obsidian-things) |  |
83 | | [hungsu/typomagical-obsidian](https://github.com/hungsu/typomagical-obsidian) |  |
84 | | [curio-heart/obsidian-wyrd](https://github.com/curio-heart/obsidian-wyrd) |  |
85 | | [crashmoney/obsidian-typewriter](https://github.com/crashmoney/obsidian-typewriter) |  |
86 | | [Thiews/Obsidian-Harmonic](https://github.com/Thiews/Obsidian-Harmonic) |  |
87 | | [dracula/obsidian](https://github.com/dracula/obsidian) |  |
88 | | [bLaCkwEw/Dracula-Slim](https://github.com/bLaCkwEw/Dracula-Slim) |  |
89 | | [jaysan0/obsidian-sandstorm](https://github.com/jaysan0/obsidian-sandstorm) |  |
90 | | [nickmilo/LYT-Mode](https://github.com/nickmilo/LYT-Mode) |  |
91 | | [operator-axel/obsdian_theme--Carpe_Noctem](https://github.com/operator-axel/obsdian_theme--Carpe_Noctem) |  |
92 | | [catppuccin/obsidian](https://github.com/catppuccin/obsidian) |  |
93 | | [ChopTV/Obsidian-Theme-That-Shall-Not-Be-Named](https://github.com/ChopTV/Obsidian-Theme-That-Shall-Not-Be-Named) |  |
94 | | [tingmelvin/willemstad-x](https://github.com/tingmelvin/willemstad-x) |  |
95 | | [caro401/royal-velvet](https://github.com/caro401/royal-velvet) |  |
96 | | [xRyul/ObsidianMD_Dracula_x_LYT](https://github.com/xRyul/ObsidianMD_Dracula_x_LYT) |  |
97 | | [hydescarf/Obsidian-Theme-Mado-11](https://github.com/hydescarf/Obsidian-Theme-Mado-11) |  |
98 | | [Everblush/Obsidian](https://github.com/Everblush/Obsidian) |  |
99 | | [kkYrusobad/AbsoluteGruv](https://github.com/kkYrusobad/AbsoluteGruv) |  |
100 | | [aitaDev/Violet-Evening-for-Obsidian](https://github.com/aitaDev/Violet-Evening-for-Obsidian) |  |
101 | | [danyim/obsidian-zenburn](https://github.com/danyim/obsidian-zenburn) |  |
102 | | [roberts-code/obsidian-theme-modern-dark](https://github.com/roberts-code/obsidian-theme-modern-dark) |  |
103 | | [KyleKlus/solitude-obsidian-theme](https://github.com/KyleKlus/solitude-obsidian-theme) |  |
104 | | [mulfok/obsidian-viridian](https://github.com/mulfok/obsidian-viridian) |  |
105 | | [sspaeti/obsidian_kanagawa](https://github.com/sspaeti/obsidian_kanagawa) |  |
106 | | [Carbonateb/obsidian-encore-theme](https://github.com/Carbonateb/obsidian-encore-theme) |  |
107 | | [hydescarf/Obsidian-Theme-Mado-Miniflow](https://github.com/hydescarf/Obsidian-Theme-Mado-Miniflow) |  |
108 | | [ThisTheThe/MicroMike](https://github.com/ThisTheThe/MicroMike) |  |
109 | | [erykwalder/dayspring-theme](https://github.com/erykwalder/dayspring-theme) |  |
110 | | [zamsyt/obsidian-fusion](https://github.com/zamsyt/obsidian-fusion) |  |
111 | | [7368697661/Ultra-Lobster](https://github.com/7368697661/Ultra-Lobster) |  |
112 | | [krios2146/obsidian-theme-github](https://github.com/krios2146/obsidian-theme-github) |  |
113 | | [marcoluzi/obsidian-synthwave](https://github.com/marcoluzi/obsidian-synthwave) |  |
114 | | [ltctceplrm/oldsidian-purple](https://github.com/ltctceplrm/oldsidian-purple) |  |
115 | | [lucas-fern/obsidian-deeper-work-theme](https://github.com/lucas-fern/obsidian-deeper-work-theme) |  |
116 | | [ashwinjadhav818/obsidian-aura](https://github.com/ashwinjadhav818/obsidian-aura) |  |
117 | | [zamsyt/obsidian-ion](https://github.com/zamsyt/obsidian-ion) |  |
118 | | [efemkay/obsidian-listive-theme](https://github.com/efemkay/obsidian-listive-theme) |  |
119 | | [dragonwocky/obsidian-material-ocean](https://github.com/dragonwocky/obsidian-material-ocean) |  |
120 | | [Satchelmouth/Obsidian-Theme-WYConsole](https://github.com/Satchelmouth/Obsidian-Theme-WYConsole) |  |
121 | | [birneee/obsidian-adwaita-theme](https://github.com/birneee/obsidian-adwaita-theme) |  |
122 | | [AmadeusWM/Obsidian-Apatheia](https://github.com/AmadeusWM/Obsidian-Apatheia) |  |
123 | | [7368697661/Origami](https://github.com/7368697661/Origami) |  |
124 | | [Akifyss/obsidian-border](https://github.com/Akifyss/obsidian-border) |  |
125 | | [ZekunC/Obsidian-Typora-Vue-Theme](https://github.com/ZekunC/Obsidian-Typora-Vue-Theme) |  |
126 | | [zalenza/Abecedarium-theme](https://github.com/zalenza/Abecedarium-theme) |  |
127 | | [Bluemoondragon07/obsidian-light-and-bright-theme](https://github.com/Bluemoondragon07/obsidian-light-and-bright-theme) |  |
128 | | [Bluemoondragon07/Wikipedia-Theme](https://github.com/Bluemoondragon07/Wikipedia-Theme) |  |
129 | | [AllJavi/material_gruvbox_obsidian](https://github.com/AllJavi/material_gruvbox_obsidian) |  |
130 | | [hush-hush/obsidian_wombat](https://github.com/hush-hush/obsidian_wombat) |  |
131 | | [JamesLemony/obsidian_vibrant](https://github.com/JamesLemony/obsidian_vibrant) |  |
132 | | [faroukx/Obsidian-shiba-inu-theme](https://github.com/faroukx/Obsidian-shiba-inu-theme) |  |
133 | | [AnubisNekhet/AnuPpuccin](https://github.com/AnubisNekhet/AnuPpuccin) |  |
134 | | [tazpellegrini/abyssalobsidian](https://github.com/tazpellegrini/abyssalobsidian) |  |
135 | | [lnbgc/obsidian-jotter](https://github.com/lnbgc/obsidian-jotter) |  |
136 | | [PipeItToDevNull/PLN](https://github.com/PipeItToDevNull/PLN) |  |
137 | | [clbn/dracula-gemini](https://github.com/clbn/dracula-gemini) |  |
138 | | [ds-package/Dawn](https://github.com/ds-package/Dawn) |  |
139 | | [JorgEdmundo/cybertron-shifted](https://github.com/JorgEdmundo/cybertron-shifted) |  |
140 | | [NicolasGHS/Rezin-theme](https://github.com/NicolasGHS/Rezin-theme) |  |
141 | | [threethan/obsidian-material-flat-theme](https://github.com/threethan/obsidian-material-flat-theme) |  |
142 | | [frank0713/nightingale-obsidian](https://github.com/frank0713/nightingale-obsidian) |  |
143 | | [sergey900553/obsidian_dekurai_theme](https://github.com/sergey900553/obsidian_dekurai_theme) |  |
144 | | [callumhackett/obsidian_polka_theme](https://github.com/callumhackett/obsidian_polka_theme) |  |
145 | | [gbraad-obsidian/obsidian-tomorrow-night-bright-theme](https://github.com/gbraad-obsidian/obsidian-tomorrow-night-bright-theme) |  |
146 | | [mProjectsCode/obsidian-lemons-theme](https://github.com/mProjectsCode/obsidian-lemons-theme) |  |
147 | | [subframe7536/obsidian-theme-maple](https://github.com/subframe7536/obsidian-theme-maple) |  |
148 | | [diegoeis/obsidianotion](https://github.com/diegoeis/obsidianotion) |  |
149 | | [Victologo/elegance-theme](https://github.com/Victologo/elegance-theme) | .jpg) |
150 | | [tcmmichaelb139/obsidian-tokyonight](https://github.com/tcmmichaelb139/obsidian-tokyonight) |  |
151 | | [mrowa44/obsidian-ia-writer](https://github.com/mrowa44/obsidian-ia-writer) |  |
152 | | [Bluemoondragon07/obsidian-notation-2](https://github.com/Bluemoondragon07/obsidian-notation-2) |  |
153 | | [Jopp-gh/Obsidian-Dune84](https://github.com/Jopp-gh/Obsidian-Dune84) |  |
154 | | [Satchelmouth/Obsidian-Theme-Sanguine](https://github.com/Satchelmouth/Obsidian-Theme-Sanguine) |  |
155 | | [FireIsGood/obsidian-everforest-enchanted](https://github.com/FireIsGood/obsidian-everforest-enchanted) |  |
156 | | [KeithLerner/ObsidianMDsQdthOne](https://github.com/KeithLerner/ObsidianMDsQdthOne) |  |
157 | | [ScottKirvan/GitHubDHC](https://github.com/ScottKirvan/GitHubDHC) |  |
158 | | [lukasbach/obsidian-proper-dark](https://github.com/lukasbach/obsidian-proper-dark) |  |
159 | | [isax785/obsidian-sparkling-night](https://github.com/isax785/obsidian-sparkling-night) |  |
160 | | [Bluemoondragon07/Obsidian-Serenity](https://github.com/Bluemoondragon07/Obsidian-Serenity) |  |
161 | | [OlivierPS/Olivier-s-Theme](https://github.com/OlivierPS/Olivier-s-Theme) |  |
162 | | [G2Jose/synthwave-84-obsidian-theme](https://github.com/G2Jose/synthwave-84-obsidian-theme) |  |
163 | | [whereiswhere/iB-Writer](https://github.com/whereiswhere/iB-Writer) |  |
164 | | [oqipoDev/buena-vista-obsidian](https://github.com/oqipoDev/buena-vista-obsidian) |  |
165 | | [Thiews/obsidian-simplicity](https://github.com/Thiews/obsidian-simplicity) |  |
166 | | [drbap/magicuser-theme-for-obsidian](https://github.com/drbap/magicuser-theme-for-obsidian) |  |
167 | | [PrettyBoyCosmo/ProtocolBlue](https://github.com/PrettyBoyCosmo/ProtocolBlue) |  |
168 | | [GixoXYZ/YueObsidian](https://github.com/GixoXYZ/YueObsidian) |  |
169 | | [abrahambahez/Brutalism](https://github.com/abrahambahez/Brutalism) |  |
170 | | [arozx/obsidian_tokyo-night-storm](https://github.com/arozx/obsidian_tokyo-night-storm) |  |
171 | | [Nikolai2038/strict-obsidian-theme](https://github.com/Nikolai2038/strict-obsidian-theme) |  |
172 | | [sq1000000/NeuBorder](https://github.com/sq1000000/NeuBorder) |  |
173 | | [Bluemoondragon07/Obsidian-Bolt](https://github.com/Bluemoondragon07/Obsidian-Bolt) |  |
174 | | [Bluemoondragon07/Obsidian-Origin](https://github.com/Bluemoondragon07/Obsidian-Origin) |  |
175 | | [schrunchee/obsidian-covert-theme](https://github.com/schrunchee/obsidian-covert-theme) |  |
176 | | [saket61195/Dracula_obsidian_theme](https://github.com/saket61195/Dracula_obsidian_theme) |  |
177 | | [SalemElatar/salem-obsidian-theme](https://github.com/SalemElatar/salem-obsidian-theme) |  |
178 | | [zfmohammed/obsidian-feather](https://github.com/zfmohammed/obsidian-feather) |  |
179 | | [Ooopz/obsidianmd-theme-comfort-dark](https://github.com/Ooopz/obsidianmd-theme-comfort-dark) |  |
180 | | [diegoeis/simple-obsidian](https://github.com/diegoeis/simple-obsidian) |  |
181 | | [Carrie999/comfort](https://github.com/Carrie999/comfort) |  |
182 | | [davidjroos/obsidian-notswift](https://github.com/davidjroos/obsidian-notswift) |  |
183 | | [x0aa7i/obsidian-neo](https://github.com/x0aa7i/obsidian-neo) |  |
184 | | [SakuraIsayeki/vanilla-amoled-theme](https://github.com/SakuraIsayeki/vanilla-amoled-theme) |  |
185 | | [Fro-Q/Qlean](https://github.com/Fro-Q/Qlean) |  |
186 | | [possibly-not/obsidian-aura-theme](https://github.com/possibly-not/obsidian-aura-theme) |  |
187 | | [Warrobot10/Serika-for-obsidian](https://github.com/Warrobot10/Serika-for-obsidian) |  |
188 | | [1612elphi/autotape-theme](https://github.com/1612elphi/autotape-theme) |  |
189 | | [benf2004/Obsidian-LaTeX-Theme](https://github.com/benf2004/Obsidian-LaTeX-Theme) |  |
190 | | [dbarenholz/halcyon-obsidian](https://github.com/dbarenholz/halcyon-obsidian) |  |
191 | | [GuiMar10/monochroYou](https://github.com/GuiMar10/monochroYou) |  |
192 | | [kepano/flexoki-obsidian](https://github.com/kepano/flexoki-obsidian) |  |
193 | | [prradox/green-nightmare](https://github.com/prradox/green-nightmare) |  |
194 | | [GeorgeAzma/Transient](https://github.com/GeorgeAzma/Transient) |  |
195 | | [isaacfreeman/kakano-obsidian-theme](https://github.com/isaacfreeman/kakano-obsidian-theme) |  |
196 | | [tu2-atmanand/EvilRed-ObsidianTheme](https://github.com/tu2-atmanand/EvilRed-ObsidianTheme) |  |
197 | | [EddieTheEd/Prussian-Blue](https://github.com/EddieTheEd/Prussian-Blue) |  |
198 | | [nazarioricardo/zario-obsidian](https://github.com/nazarioricardo/zario-obsidian) |  |
199 | | [behrouze/obsidian-theme](https://github.com/behrouze/obsidian-theme) |  |
200 | | [nhrrs/heboric-obsidian](https://github.com/nhrrs/heboric-obsidian) |  |
201 | | [zaheralmajed/vicious-theme-obsidian](https://github.com/zaheralmajed/vicious-theme-obsidian) |  |
202 | | [MateusHenriquegringo/spring-theme-obsidian](https://github.com/MateusHenriquegringo/spring-theme-obsidian) |  |
203 | | [Bluemoondragon07/Obsidian-Celestial-Night-Theme](https://github.com/Bluemoondragon07/Obsidian-Celestial-Night-Theme) |  |
204 | | [sspaeti/obsidian_rose_pine](https://github.com/sspaeti/obsidian_rose_pine) |  |
205 | | [vhbelvadi/obsidian-carbon](https://github.com/vhbelvadi/obsidian-carbon) |  |
206 | | [RyzenFromFire/obsidian-phoenix](https://github.com/RyzenFromFire/obsidian-phoenix) |  |
207 | | [oqipoDev/garden-gnome-obsidian](https://github.com/oqipoDev/garden-gnome-obsidian) |  |
208 | | [bitSchleuder/obsidian-monokai-theme](https://github.com/bitSchleuder/obsidian-monokai-theme) |  |
209 | | [ethereontheme/obsidian](https://github.com/ethereontheme/obsidian) |  |
210 | | [deudz/obsidian-tomorrow-theme](https://github.com/deudz/obsidian-tomorrow-theme) |  |
211 | | [markmacode/obsidian-nightfox](https://github.com/markmacode/obsidian-nightfox) |  |
212 | | [mmartamg/novadust-obsidian](https://github.com/mmartamg/novadust-obsidian) |  |
213 | | [lychileng/Obsidian-Theme-Pure](https://github.com/lychileng/Obsidian-Theme-Pure) |  |
214 | | [rivea0/obsidian-prime](https://github.com/rivea0/obsidian-prime) |  |
215 | | [xRyul/obsidian-arcane-theme](https://github.com/xRyul/obsidian-arcane-theme) |  |
216 | | [RaveSplash/obsidian-misty-mauve](https://github.com/RaveSplash/obsidian-misty-mauve) |  |
217 | | [KStew1017/obsidian-sea-glass-theme](https://github.com/KStew1017/obsidian-sea-glass-theme) |  |
218 | | [DMeurer/improved-potato](https://github.com/DMeurer/improved-potato) |  |
219 | | [slavafyi/obsidian-neovim](https://github.com/slavafyi/obsidian-neovim) |  |
220 | | [isax785/obsidian-sparkling-day](https://github.com/isax785/obsidian-sparkling-day) |  |
221 | | [ZeChArtiahSaher/obsidian-mono-black](https://github.com/ZeChArtiahSaher/obsidian-mono-black) |  |
222 | | [tomkaygames/Tom-s-Theme](https://github.com/tomkaygames/Tom-s-Theme) |  |
223 | | [isax785/obsidian-soloing](https://github.com/isax785/obsidian-soloing) |  |
224 | | [contrapasso3/Reshi](https://github.com/contrapasso3/Reshi) |  |
225 | | [mProjectsCode/obsidian-focus-theme](https://github.com/mProjectsCode/obsidian-focus-theme) |  |
226 | | [natowb/obsidian-nordic](https://github.com/natowb/obsidian-nordic) |  |
227 | | [vladstudio/tiniri-obsidian](https://github.com/vladstudio/tiniri-obsidian) |  |
228 | | [Indyandie/kurokula-obsidian-theme](https://github.com/Indyandie/kurokula-obsidian-theme) |  |
229 | | [clearlysid/apex](https://github.com/clearlysid/apex) |  |
230 | | [yoGhastly/poimandres-obsidian](https://github.com/yoGhastly/poimandres-obsidian) |  |
231 | | [eldritch-theme/obsidian](https://github.com/eldritch-theme/obsidian) |  |
232 | | [AwesomeDog/obsidian-soothe](https://github.com/AwesomeDog/obsidian-soothe) |  |
233 | | [eliz-abeth/sandover](https://github.com/eliz-abeth/sandover) |  |
234 | | [Ch0live/dunite](https://github.com/Ch0live/dunite) |  |
235 | | [loveminimal/obsidian-theme-virgo](https://github.com/loveminimal/obsidian-theme-virgo) |  |
236 | | [jbisits/penumbra-obsidian-theme](https://github.com/jbisits/penumbra-obsidian-theme) |  |
237 | | [humandecoded/Trace-Labs-Obsidian-Theme](https://github.com/humandecoded/Trace-Labs-Obsidian-Theme) |  |
238 | | [phchang/W95](https://github.com/phchang/W95) |  |
239 | | [antoKeinanen/obsidian-sanctum-reborn](https://github.com/antoKeinanen/obsidian-sanctum-reborn) |  |
240 | | [SandmansDreams/Spectrum-Blue](https://github.com/SandmansDreams/Spectrum-Blue) |  |
241 | | [dpavaoman/cobalt-peacock-obmd](https://github.com/dpavaoman/cobalt-peacock-obmd) |  |
242 | | [lorens-osman-dev/Lorens-Obsidian-Theme](https://github.com/lorens-osman-dev/Lorens-Obsidian-Theme) |  |
243 | | [NoahBoos/obsidian-rift](https://github.com/NoahBoos/obsidian-rift) |  |
244 | | [BlossomTheme/Obsidian](https://github.com/BlossomTheme/Obsidian) |  |
245 | | [bhappen/obsidian-space](https://github.com/bhappen/obsidian-space) |  |
246 | | [grjsmith/Neon-Synthwave](https://github.com/grjsmith/Neon-Synthwave) |  |
247 | | [CyanVoxel/vauxhall-obsidian](https://github.com/CyanVoxel/vauxhall-obsidian) |  |
248 | | [xainapse/Allium](https://github.com/xainapse/Allium) |  |
249 | | [Elhary/obsidian-Pale](https://github.com/Elhary/obsidian-Pale) |  |
250 | | [anareaty/creme-brulee-obsidian-theme](https://github.com/anareaty/creme-brulee-obsidian-theme) |  |
251 | | [rodydavis/obsidian-dynamic-color](https://github.com/rodydavis/obsidian-dynamic-color) |  |
252 | | [scottgriv/Dark-Castle-Obsidian](https://github.com/scottgriv/Dark-Castle-Obsidian) |  |
253 | | [sr-campelo/retronotes](https://github.com/sr-campelo/retronotes) |  |
254 | | [BossElijah/bossidian](https://github.com/BossElijah/bossidian) |  |
255 | | [Quinta0/Aurora-Twilight](https://github.com/Quinta0/Aurora-Twilight) |  |
256 | | [Quinta0/Evergreen-Shadow](https://github.com/Quinta0/Evergreen-Shadow) |  |
257 | | [Quinta0/Velvet-Moon](https://github.com/Quinta0/Velvet-Moon) |  |
258 | | [Quinta0/Midnight-Fjord](https://github.com/Quinta0/Midnight-Fjord) |  |
259 | | [Quinta0/Mint-Breeze](https://github.com/Quinta0/Mint-Breeze) |  |
260 | | [Quinta0/Lavender-Mist](https://github.com/Quinta0/Lavender-Mist) |  |
261 | | [Quinta0/Northern-Sky](https://github.com/Quinta0/Northern-Sky) |  |
262 | | [GustavoSZ124/Obsidian-Theme-Seamless-View](https://github.com/GustavoSZ124/Obsidian-Theme-Seamless-View) |  |
263 | | [WinnerWind/gummy-revived](https://github.com/WinnerWind/gummy-revived) |  |
264 | | [solm0/Agate](https://github.com/solm0/Agate) |  |
265 | | [GnRlLeclerc/Vanilla-Theme-Palettes](https://github.com/GnRlLeclerc/Vanilla-Theme-Palettes) |  |
266 | | [chenbihao/obsidian-theme-dark-clarity](https://github.com/chenbihao/obsidian-theme-dark-clarity) |  |
267 | | [exloseur3d/nier-theme](https://github.com/exloseur3d/nier-theme) |  |
268 | | [miz-i/Obsidian-theme-DarkEmber](https://github.com/miz-i/Obsidian-theme-DarkEmber) |  |
269 | | [Lina674/Pxld-Obsidian-Theme](https://github.com/Lina674/Pxld-Obsidian-Theme) |  |
270 | | [Quinta0/chiaroscuroflow](https://github.com/Quinta0/chiaroscuroflow) |  |
271 | | [HasanTheSyrian/Muted-Blue-Obsidian](https://github.com/HasanTheSyrian/Muted-Blue-Obsidian) |  |
272 | | [carols12352/Oreo-theme](https://github.com/carols12352/Oreo-theme) |  |
273 | | [Spekulucius/obsidian-brainhack](https://github.com/Spekulucius/obsidian-brainhack) |  |
274 | | [buluw/nobb-obsidian](https://github.com/buluw/nobb-obsidian) |  |
275 | | [Sskki-exe/vanilla-amoled-theme-color](https://github.com/Sskki-exe/vanilla-amoled-theme-color) |  |
276 | | [ricedev10/Abate-theme](https://github.com/ricedev10/Abate-theme) |  |
277 | | [Elevict/Shade-Sanctuary](https://github.com/Elevict/Shade-Sanctuary) |  |
278 | | [Seniblue/Underwater](https://github.com/Seniblue/Underwater) |  |
279 | | [c-sooyoung/kiwi-mono-obsidian-theme](https://github.com/c-sooyoung/kiwi-mono-obsidian-theme) |  |
280 | | [danielkhmara/obsidian-lumines](https://github.com/danielkhmara/obsidian-lumines) |  |
281 | | [Erallie/colored-candy](https://github.com/Erallie/colored-candy) |  |
282 | | [Spekulucius/obsidian-adrenaline](https://github.com/Spekulucius/obsidian-adrenaline) |  |
283 | | [omsandippatil/OISTNB](https://github.com/omsandippatil/OISTNB) |  |
284 | | [b3h3m0th/black-obsidian-theme](https://github.com/b3h3m0th/black-obsidian-theme) |  |
285 | | [FaisalTamanoJr/Refined-Default](https://github.com/FaisalTamanoJr/Refined-Default) |  |
286 | | [tu2-atmanand/RoseRed-ObsidianTheme](https://github.com/tu2-atmanand/RoseRed-ObsidianTheme) |  |
287 | | [Elhary/Obsidian-Minimal-Edge](https://github.com/Elhary/Obsidian-Minimal-Edge) |  |
288 | | [darthdemono/AMOLED-Serenity](https://github.com/darthdemono/AMOLED-Serenity) |  |
289 | | [golam71/obsidian-hackthebox](https://github.com/golam71/obsidian-hackthebox) |  |
290 | | [Oczko24/Obsidian-transparent](https://github.com/Oczko24/Obsidian-transparent) |  |
291 | | [LeslyeCream/Lagom-Obsidian-Theme](https://github.com/LeslyeCream/Lagom-Obsidian-Theme) |  |
292 | | [LorenzoPegorari/SimplyColorful](https://github.com/LorenzoPegorari/SimplyColorful) |  |
293 | | [Sunhaloo/OneNice](https://github.com/Sunhaloo/OneNice) |  |
294 | | [ElsaTam/obsidian-fancy-a-story](https://github.com/ElsaTam/obsidian-fancy-a-story) |  |
295 | | [ofalvai/flexoki-warm](https://github.com/ofalvai/flexoki-warm) |  |
296 | | [xero/evangelion.obsidian](https://github.com/xero/evangelion.obsidian) |  |
297 | | [juanchiparra/obsidian-borealis](https://github.com/juanchiparra/obsidian-borealis) |  |
298 | | [DKLiberty/Red-Shadow](https://github.com/DKLiberty/Red-Shadow) |  |
299 | | [artorias305/obsidian-shadeflow](https://github.com/artorias305/obsidian-shadeflow) |  |
300 | | [afrangi/Obsidian-Theme-Orange](https://github.com/afrangi/Obsidian-Theme-Orange) |  |
301 | | [incantatem2/Obsidian-winter-spices](https://github.com/incantatem2/Obsidian-winter-spices) |  |
302 | | [pinei/obsidian-consolas-theme](https://github.com/pinei/obsidian-consolas-theme) |  |
303 | | [incantatem2/Obsidian-neutral-academia](https://github.com/incantatem2/Obsidian-neutral-academia) |  |
304 | | [harmtemolder/obsidian-ink](https://github.com/harmtemolder/obsidian-ink) |  |
305 | | [drkpxl/Frost](https://github.com/drkpxl/Frost) |  |
306 | | [lorens-osman-dev/Glass-Robo](https://github.com/lorens-osman-dev/Glass-Robo) |  |
307 | | [incantatem2/Obsidian-mulled-wine](https://github.com/incantatem2/Obsidian-mulled-wine) |  |
308 | | [abhimangs/obsidian-vortex](https://github.com/abhimangs/obsidian-vortex) |  |
309 | | [sspaeti/obsidian_kanagawa_paper](https://github.com/sspaeti/obsidian_kanagawa_paper) |  |
310 | | [IxBlazarxI/Obsidian-Theme-OverCast](https://github.com/IxBlazarxI/Obsidian-Theme-OverCast) |  |
311 | | [Daiki48/sakurajima.obsidian](https://github.com/Daiki48/sakurajima.obsidian) |  |
312 | | [aaaaalexis/obsidian-cupertino](https://github.com/aaaaalexis/obsidian-cupertino) |  |
313 | | [MalcolmMielle/Emerald-Echo](https://github.com/MalcolmMielle/Emerald-Echo) |  |
314 | | [benjaminezequiel/playground-theme](https://github.com/benjaminezequiel/playground-theme) |  |
315 | | [druxorey/minimal-dracula-for-obsidian](https://github.com/druxorey/minimal-dracula-for-obsidian) |  |
316 | | [technerium/obsidian-ukiyo](https://github.com/technerium/obsidian-ukiyo) |  |
317 | | [laughmaker/Zen](https://github.com/laughmaker/Zen) |  |
318 | | [Inc44/OLED.Black](https://github.com/Inc44/OLED.Black) |  |
319 | | [iwa/Sei](https://github.com/iwa/Sei) |  |
320 | | [babidisrc/obsidian-sunbather](https://github.com/babidisrc/obsidian-sunbather) |  |
321 | | [AfonsoMiranda02/MinimalRed-Obsidian-Theme](https://github.com/AfonsoMiranda02/MinimalRed-Obsidian-Theme) |  |
322 | | [rose-pine/obsidian](https://github.com/rose-pine/obsidian) |  |
323 | | [vran-dev/obsidian-composer](https://github.com/vran-dev/obsidian-composer) |  |
324 | | [double-tilde/old-world-obsidian](https://github.com/double-tilde/old-world-obsidian) |  |
325 | | [HarmfulBreeze/obsidian-material-3-theme](https://github.com/HarmfulBreeze/obsidian-material-3-theme) |  |
326 | | [GodlyMan-bit/Serif](https://github.com/GodlyMan-bit/Serif) |  |
327 | | [Halftroll0/Sad-Machine-Druid](https://github.com/Halftroll0/Sad-Machine-Druid) |  |
328 | | [bladeacer/flexcyon](https://github.com/bladeacer/flexcyon) |  |
329 | | [codeisconfusing/retro-windows-obsidian](https://github.com/codeisconfusing/retro-windows-obsidian) |  |
330 | | [outsidetext/lesswrong-obsidian](https://github.com/outsidetext/lesswrong-obsidian) |  |
331 | | [en3sis/vercel-obsidian](https://github.com/en3sis/vercel-obsidian) |  |
332 | | [incantatem2/Obsidian-aged-whisky](https://github.com/incantatem2/Obsidian-aged-whisky) |  |
333 | | [LostViking09/obsidian-fastppuccin](https://github.com/LostViking09/obsidian-fastppuccin) |  |
334 | | [Krishna-Sen-Programming-World/Minimal-Dark-Coder](https://github.com/Krishna-Sen-Programming-World/Minimal-Dark-Coder) |  |
335 | | [MrParalloid/obsidian-things](https://github.com/MrParalloid/obsidian-things) |  |
336 | | [LennZone/enhanced-file-explorer-tree](https://github.com/LennZone/enhanced-file-explorer-tree) |  |
337 | | [ninetyfive666/Planetary](https://github.com/ninetyfive666/Planetary) |  |
338 | | [LennZone/Neumorphism](https://github.com/LennZone/Neumorphism) |  |
339 | | [splendidissimemendax/Camena](https://github.com/splendidissimemendax/Camena) |  |
340 | | [MrParalloid/pomme-notes](https://github.com/MrParalloid/pomme-notes) |  |
341 | | [incantatem2/Obsidian-deep-submerge](https://github.com/incantatem2/Obsidian-deep-submerge) |  |
342 | | [manuelcoca/obsidian-mono-high-contrast-theme](https://github.com/manuelcoca/obsidian-mono-high-contrast-theme) |  |
343 | | [aidanastridge/Publisher](https://github.com/aidanastridge/Publisher) |  |
344 | | [ddspog/obsidian-ribbons-theme](https://github.com/ddspog/obsidian-ribbons-theme) |  |
345 | | [dubefab/obsidian-TerraFlow](https://github.com/dubefab/obsidian-TerraFlow) |  |
346 | | [ThePharaohArt/Obsidian-RetroOS98](https://github.com/ThePharaohArt/Obsidian-RetroOS98) |  |
347 | | [theaayushpatel/quillcode](https://github.com/theaayushpatel/quillcode) |  |
348 | | [mulder3062/Myst](https://github.com/mulder3062/Myst) |  |
349 | | [GodlyMan-bit/SoliDeoGloria](https://github.com/GodlyMan-bit/SoliDeoGloria) |  |
350 | | [pr0methevs/Hojicha](https://github.com/pr0methevs/Hojicha) |  |
351 | | [Spekulucius/obsidian-marathon](https://github.com/Spekulucius/obsidian-marathon) |  |
352 | | [kmranrg/obsidian-handwriting-theme](https://github.com/kmranrg/obsidian-handwriting-theme) |  |
353 | | [omarrashad/obsidian-vesper](https://github.com/omarrashad/obsidian-vesper) |  |
354 | | [SourTarte/Powered-By-Lancer](https://github.com/SourTarte/Powered-By-Lancer) |  |
355 | | [isax785/Terminal2K](https://github.com/isax785/Terminal2K) |  |
356 | | [mvahaste/meridian](https://github.com/mvahaste/meridian) |  |
357 | | [omkar-4/Modern-GenZ-Vibedose](https://github.com/omkar-4/Modern-GenZ-Vibedose) |  |
358 | | [CascadeThemes/Duality](https://github.com/CascadeThemes/Duality) |  |
359 | | [bellebasso/Minimalists-Paradise](https://github.com/bellebasso/Minimalists-Paradise) |  |
360 | | [incantatem2/Obsidian-dashboard](https://github.com/incantatem2/Obsidian-dashboard) |  |
361 | | [anotherlusitano/SpectrumPlus](https://github.com/anotherlusitano/SpectrumPlus) |  |
362 | | [JabariD/obsidian-radiance](https://github.com/JabariD/obsidian-radiance) |  |
363 | | [kyffa/Iridium](https://github.com/kyffa/Iridium) |  |
364 | | [cheycron/flat-cap-obsidian](https://github.com/cheycron/flat-cap-obsidian) |  |
365 | | [Vlad3Design/Mushin](https://github.com/Vlad3Design/Mushin) |  |
366 | | [cxj05h/obsidian-avatar](https://github.com/cxj05h/obsidian-avatar) |  |
367 | | [Riffaells/Robsi](https://github.com/Riffaells/Robsi) |  |
368 | | [regawaras/Coffee](https://github.com/regawaras/Coffee) |  |
369 | | [norderan/RedShift-obsidian-theme](https://github.com/norderan/RedShift-obsidian-theme) |  |
370 | | [gvorbeck/Nostromo](https://github.com/gvorbeck/Nostromo) |  |
371 | | [circkumflexx/obsidian-ravenloft-theme](https://github.com/circkumflexx/obsidian-ravenloft-theme) |  |
372 | | [danarnold/tokyonight-simple](https://github.com/danarnold/tokyonight-simple) |  |
373 | | [OmegaCentauri68/Omega-Theme-for-Obsidian](https://github.com/OmegaCentauri68/Omega-Theme-for-Obsidian) |  |
374 | | [aaaaalexis/obsidian-baseline](https://github.com/aaaaalexis/obsidian-baseline) |  |
375 | | [annagracedev/obsidian-azure](https://github.com/annagracedev/obsidian-azure) |  |
376 | | [konnta0/obsidian-noctis-theme](https://github.com/konnta0/obsidian-noctis-theme) |  |
377 | | [dubefab/Matrix](https://github.com/dubefab/Matrix) |  |
378 | | [Cloopy/Powered-by-Lancer---Retouched](https://github.com/Cloopy/Powered-by-Lancer---Retouched) |  |
379 | | [sspaeti/obsidian_osaka_jade](https://github.com/sspaeti/obsidian_osaka_jade) |  |
380 | | [vupdivup/obsidian-everforest-spruce](https://github.com/vupdivup/obsidian-everforest-spruce) |  |
381 | | [crishood/nota-limonada-light](https://github.com/crishood/nota-limonada-light) |  |
382 | | [Lucas-Haux/Nord](https://github.com/Lucas-Haux/Nord) |  |
383 | | [Gonzalo-D-Sales/obsidian-velocity](https://github.com/Gonzalo-D-Sales/obsidian-velocity) |  |
384 | | [RastGame/obsidian-Noctilux](https://github.com/RastGame/obsidian-Noctilux) |  |
385 | | [emarpiee/Retroma](https://github.com/emarpiee/Retroma) |  |
386 | | [seavalanche/vesnea-obsidian-theme](https://github.com/seavalanche/vesnea-obsidian-theme) |  |
387 | | [incantatem2/Obsidian-blood-rush](https://github.com/incantatem2/Obsidian-blood-rush) |  |
388 | | [DarioArzaba/Obsidian-Theme-Arzaba](https://github.com/DarioArzaba/Obsidian-Theme-Arzaba) |  |
389 | | [tyronejosee/tyrone-neon](https://github.com/tyronejosee/tyrone-neon) |  |
390 | | [bastiangx/poimandres.obsidian](https://github.com/bastiangx/poimandres.obsidian) |  |
391 | | [Bluemoondragon07/obsidian-future](https://github.com/Bluemoondragon07/obsidian-future) |  |
392 | | [IchiroFukuda/spy-terminal-theme](https://github.com/IchiroFukuda/spy-terminal-theme) |  |
393 | | [xscriptordev/obsidian](https://github.com/xscriptordev/obsidian) |  |
394 | | [account-not-relevant/museifu-basic-theme](https://github.com/account-not-relevant/museifu-basic-theme) |  |
395 | | [codejota/NightlyWolf_ObsidianTheme](https://github.com/codejota/NightlyWolf_ObsidianTheme) |  |
396 | | [incantatem2/Obsidian-antique-flowers](https://github.com/incantatem2/Obsidian-antique-flowers) |  |
397 | | [incantatem2/Obsidian-desserts](https://github.com/incantatem2/Obsidian-desserts) |  |
398 | | [HotAndCold245/Hidden-Grotto](https://github.com/HotAndCold245/Hidden-Grotto) |  |
399 | | [vinitkumar/oscura-obsidian](https://github.com/vinitkumar/oscura-obsidian) |  |
400 | | [david-troyer/obsidian-theme-minimalist-studio](https://github.com/david-troyer/obsidian-theme-minimalist-studio) |  |
401 | | [wulflo/obsidian-3Sumaq](https://github.com/wulflo/obsidian-3Sumaq) |  |
402 | | [modigaphemelo/Dedication-obsidian-theme](https://github.com/modigaphemelo/Dedication-obsidian-theme) |  |
403 | | [vinitkumar/monokai-ristretto-obsidian](https://github.com/vinitkumar/monokai-ristretto-obsidian) |  |
404 | | [Jawuj/Blur-Theme](https://github.com/Jawuj/Blur-Theme) |  |
405 | | [kraasch/true-black](https://github.com/kraasch/true-black) |  |
406 | | [konnta0/obsidian-noctis-viola-theme](https://github.com/konnta0/obsidian-noctis-viola-theme) |  |
407 | | [davidgolding/obsidian-auger](https://github.com/davidgolding/obsidian-auger) |  |
408 | | [COGQOD/hoverpopup-obsidian-theme](https://github.com/COGQOD/hoverpopup-obsidian-theme) |  |
409 | | [M-Torrus/obsidian-cosmical-theme](https://github.com/M-Torrus/obsidian-cosmical-theme) |  |
410 | | [modigaphemelo/Dedication-2-Obsidian-Theme](https://github.com/modigaphemelo/Dedication-2-Obsidian-Theme) |  |
411 | | [monoooki/obsidian-hydra-pressure-theme](https://github.com/monoooki/obsidian-hydra-pressure-theme) |  |
412 | | [monoooki/obsidian-neo-sploosh-theme](https://github.com/monoooki/obsidian-neo-sploosh-theme) |  |
413 | | [monoooki/obsidian-planetz-roller-theme](https://github.com/monoooki/obsidian-planetz-roller-theme) |  |
414 | | [AstroAir/obsidian-night-owl](https://github.com/AstroAir/obsidian-night-owl) |  |
415 | | [flowing-abyss/obsidian-base16-default-dark](https://github.com/flowing-abyss/obsidian-base16-default-dark) |  |
416 | | [volodinroman/obsidian-tech001-theme](https://github.com/volodinroman/obsidian-tech001-theme) |  |
417 |
--------------------------------------------------------------------------------