Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

One Oracle Developer

jkvetinajkvetina224 downloads

Obsidian Theme

Add to Obsidian
One Oracle Developer screenshot
  • Overview
  • Scorecard
  • Updates2

An Obsidian theme tuned for long-form technical writing, tight note taxonomies, and daily use by a developer who lives in the editor. Built on top of the excellent Baseline theme, with opinionated typography and a few quality-of-life fixes on top.

Now a human version from me:

I checked all themes in Obsidian, and 95% of them were total garbage. Baseline was almost perfect, but I had to make a few small tweaks here and there so it works better with lists, checklists, and tags. I also adjusted the headers and fonts. The biggest issue was the folders/files tree, which felt a bit dull. Install Baseline and this theme and compare them yourself.

More details (generated) below. Enjoy!


Preview

Screenshot

What's different from Baseline

  • Serif headings with a fixed scale. H1–H6 use Source Serif Pro at 3 / 2 / 1.75 / 1.5 / 1.25 / 1 rem, weight 500, line-height 1.35. Headings read like a book, not a UI component.
  • Hidden frontmatter. The properties block is hidden in both Live Preview and Reading view – notes open straight to content, properties stay editable via the command palette and right sidebar.
  • Em-dash list bullets. Unordered list items render with — instead of •, in both Live Preview and Reading view.
  • Readable strikethrough. Completed tasks, <del>, and <s> render in grey (#999), and struck bold text is forced back to weight 400 so it never competes with the strike line.
  • Accent tag pills, visible when struck. Tags render as solid accent-coloured pills with white text. Inside completed tasks they drop the pill but keep a grey foreground so #project stays legible.
  • Light-theme heading colors. H1 inherits the user's accent colour; H2–H3 render in #333, H4–H6 in #555. Dark theme keeps Baseline defaults.
  • Enhanced file explorer. Dotted indentation guides, accent-coloured guide + semibold folder titles for the branch containing the active file, and a right-edge arrow marker on the active file (no border, no dot).
  • Small chrome polish. Tighter tab bar with an accent underline on the active tab, accent-on-hover scrollbars, calendar month in accent.
  • Everything else from Baseline. Layout flavours, input styles, callouts, tables, colour schemes, Style Settings integration, light/dark support – untouched.

Install

Manual

  1. In your vault, create the folder .obsidian/themes/One Oracle Developer/.
  2. Download theme.css and manifest.json from this repo into that folder.
  3. In Obsidian: Settings → Appearance → Themes → One Oracle Developer.

Community themes

Once listed: Settings → Appearance → Manage → Browse → One Oracle Developer → Install and use.

Requirements

  • Obsidian 1.6.0 or newer.
  • Works in both light and dark modes.
  • Style Settings plugin recommended (inherited from Baseline) for colour and typography tweaks.

Fonts

Headings use Source Serif Pro, falling back to Georgia → Times New Roman → the system serif. Body text uses Open Sans, falling back to system-ui → -apple-system → Segoe UI → the system sans-serif. Both families are pulled in via a Google Fonts @import at the top of the override block, so no local install is required – but a local install will render slightly faster on first paint.

Swap either family by overriding the --ood-font-heading / --ood-font-body tokens in a snippet or in Style Settings' custom CSS. The heading scale, weight, and line-height stay pinned regardless of the family you pick.

Complete list of changes

Everything below lives in a clearly fenced override block appended to Baseline's CSS, so a future Baseline update is a clean diff-merge.

Foundation

  • Custom property tokens. --ood-accent-bg-weak, --ood-accent-bg-hover, --ood-accent-underline-width, --ood-font-heading, --ood-font-body – single source of truth for tuning.
  • Forced accent on light theme. Baseline's body:not(.accented-interface) rule would flatten --interactive-accent to black. Overridden with hsl(var(--accent-h) ...) !important, with a darkened hover variant via calc(var(--accent-l) * 0.9).
  • Google Fonts import. Source Serif Pro + Open Sans pulled via @import url(...) so the theme works without any local font install.
  • Softer blockquote background. --blockquote-background-color nudged to a warmer, lower-contrast tint.

Content area

  • First-H1 flush top. The leading H1 of a note drops its top margin and padding so the title sits tight against the tab bar.
  • Heading scale pinned. H1–H6 forced to 3 / 2 / 1.75 / 1.5 / 1.25 / 1 rem with !important so other plugins can't push them around.
  • Heading weight + line-height pinned. font-weight: 500, line-height: 1.35. Reads like a book, not a UI component.
  • Heading typography. font-family: var(--ood-font-heading) + letter-spacing: -0.05rem across H1–H6 in both Live Preview and Reading view.
  • Light-theme heading colour. H1 = var(--interactive-accent); H2–H3 = #333; H4–H6 = #555. Dark theme keeps Baseline defaults.
  • Body font. .markdown-preview-view, .markdown-source-view, and .cm-content all use var(--ood-font-body) (Open Sans) so Live Preview and Reading view match.

Lists, tasks, tags

  • Em-dash bullets. — replaces • on unordered list items. Reading view uses list-style-type + ::marker { color: #333 }; Live Preview hides .list-bullet and injects ::before { content: "—" }.
  • Bold is 700. strong, b, .cm-strong forced to font-weight: 700 !important so Open Sans bolds actually look bold.
  • Strikethrough #999. <del>, <s>, [data-task="x"], .HyperMD-task-line[data-task="x"], .task-list-item.is-checked, and li[data-task="x"] (plus their descendants) render in grey with matching text-decoration-color.
  • Struck bold de-escalates. Inside struck text, strong/b/.cm-strong is forced back to font-weight: 400 so the strike line wins over the boldness.
  • Accent tag pills. Tags render as solid accent-coloured pills with white text, font-family: var(--ood-font-body), font-size: 0.85rem, font-weight: 500, letter-spacing: normal, line-height: 1 – so tags inside H1–H6 don't inherit heading serif, size, or negative tracking.
  • Struck tags stay legible. Inside a completed task, tags drop the pill background and render as grey #999 text so #project remains readable without shouting.
  • Checked checkbox colour. On light theme, the checked checkbox glyph renders in #666 so it doesn't fight with the surrounding grey text.

Blockquotes

  • Italic-serif body. Quote prose uses var(--ood-font-heading) at 16px italic so quotes read as voice, not as a UI element. Padding is 20px left / 16px right on every line. Italic typography is scoped to prose only (blockquote > p in Reading view, non-HyperMD-list-line quote lines in Live Preview), so lists inside blockquotes still render as lists.
  • No left bar, soft grey fill. Reading view drops the ::before pseudo; Live Preview zeros .HyperMD-quote left/right borders and hides the stacked > markers via cm-formatting. Background is restored explicitly to var(--background-secondary).
  • Multi-paragraph spacing. Convention is blank > separators (> A / > / > B). Reading view: margin-block: 0.9em on <p> children with html body specificity to beat Baseline's .markdown-rendered p reset; first/last paragraphs drop their outer margin so the blockquote's own padding-block holds. Live Preview: zero padding-block on .cm-line.HyperMD-quote – the empty > line's own line-height is the inter-paragraph gap. Embedded HTML <p> chunks inside blockquotes also get zeroed inner margins (with first/last reverted) so HTML quotes match native ones.
  • Caret height fix. Zero-width space pseudo (content: "\200B") on every .cm-line.HyperMD-quote::before so the cursor on an empty > line keeps full height. Without this, CM6 has no inline content to derive caret height from once the > glyph is hidden.

Chrome

  • Hidden frontmatter. .metadata-container is hidden with display: none !important in both Live Preview and Reading view. Properties remain editable via command palette and right sidebar.
  • Tab bar polish. .workspace-tab-header gets position: relative + padding-block: 2px; the active tab grows a ::after pseudo underline in var(--interactive-accent) at var(--ood-accent-underline-width) (2px).
  • Scrollbar accent on hover/active. ::-webkit-scrollbar-thumb:hover and :active flip to var(--interactive-accent). Default thumb width unchanged.
  • Active-line highlight disabled. .cm-line.cm-active { background: transparent !important } – kept as a hook for future accent-tint experiments, currently off.

Tables

  • Bottom-aligned headers. Multi-line column labels sit flush with single-line ones above the data row. Reading view works directly because <th> is display: table-cell. Live Preview wraps each th in a block-level .table-cell-wrapper div – the wrapper is set to display: inline-block; vertical-align: bottom; width: 100% so the th's own vertical-align: bottom actually moves it; the th keeps display: table-cell to preserve column geometry.
  • Header editor blends. When editing a header cell, Obsidian hides the original wrapper and injects a second one with a live CM6 editor. Selectors are scoped with :not([style*="display: none"]) so the override doesn't un-hide the original (which would render as a duplicate above the editor). The editor's CM6 layers (.cm-s-obsidian, .cm-editor, .cm-scroller, .cm-content, .cm-line) are forced transparent so the editor blends with the header background instead of showing CM6's default dark-grey fill.
  • No grey flash on click. :hover, :active, :focus, :focus-within on <th> and .table-cell-wrapper, plus .cm-editor.cm-focused and .cm-active / .cm-activeLine are all forced transparent so clicking a header is visually inert.

File explorer

  • Accent collapse icon. The disclosure triangle picks up var(--interactive-accent).
  • Dotted indentation guides. .tree-item-children gets --nav-indentation-guide-width: 2px, --nav-indentation-guide-color: #999, and border-inline-start-style: dotted.
  • Ancestor-chain highlight. Via .nav-folder:has(.tree-item-self.is-active), every folder on the path to the active file gets its guide in var(--interactive-accent) and its folder title in font-weight: 500 + accent colour.
  • Tighter nav density. .nav-file-title, .nav-folder-title get padding-block: 3px and line-height: 1.6 so deep trees stop feeling loose.
  • Active file mark. No border, no background dot – instead a right-aligned SVG-shaped arrow injected via ::after so the active file reads as a cursor mark rather than a selected row.

Calendar plugin

  • Today bold. .calendar .today renders at font-weight: 700.
  • Month accent. .calendar .title .month picks up var(--interactive-accent) while .title .year stays inherited, so the month is the heavy visual anchor.

Companion snippets

Optional CSS snippets shipped in .obsidian/snippets/ that pair with the theme but stay opt-in. Toggle each one via Settings → Appearance → CSS snippets.

  • ood-left-sidebar-tabs – Files + Bookmarks left-aligned on a single row, Search rendered icon-only floating right. Overrides the theme's stacked column layout for .mod-top-left-space containers; the sidebar collapse toggle stays at the top.

Author

Jan Kvetina – Oracle APEX developer, blogger at oneoracledeveloper.com.

Credits

This theme is a fork of Baseline by aaaaalexis. All the structural work – the colour system, the Style Settings schema, the light/dark balance – comes from there. This fork only layers personal typography choices and a few rendering fixes on top. If you like the bones of this theme, go star Baseline.

License

MIT. Baseline is also MIT; this fork inherits the same terms.

84%
HealthExcellent
ReviewCaution
About
Optimize Obsidian for long-form technical writing and tight note taxonomies with book-like serif headings, opinionated typography, and subtle chrome polish for daily developer use. Hide frontmatter while keeping properties editable, render lists with em-dash bullets and readable strikethrough, show accent tag pills, and refine the file explorer with indentation guides and an active-file arrow.
Details
Current version
1.1.0
Last updated
4 weeks ago
Created
Last month
Updates
2 releases
Downloads
224
License
MIT
Report bugRequest featureReport theme
Author
jkvetinajkvetina
GitHubjkvetina
  1. Community
  2. Themes
  3. One Oracle Developer

Related themes

ITS Theme screenshot

ITS Theme

Minimal screenshot

Minimal

Border screenshot

Border

Things screenshot

Things

Wasp screenshot

Wasp

Cupertino screenshot

Cupertino

Prism screenshot

Prism

Baseline screenshot

Baseline

Reverie screenshot

Reverie

Willemstad screenshot

Willemstad