{"id":49025072,"url":"https://github.com/micdzu/aalto.nvim","last_synced_at":"2026-04-20T22:00:52.174Z","repository":{"id":350240699,"uuid":"1196175721","full_name":"micdzu/aalto.nvim","owner":"micdzu","description":"A minimal Neovim colorscheme where structure is visible and color stays quiet.","archived":false,"fork":false,"pushed_at":"2026-04-09T20:57:53.000Z","size":332,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-09T21:29:59.087Z","etag":null,"topics":["colorscheme","dark-theme","editor-theme","light-theme","lua","neovim","theme","treesitter"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/micdzu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-30T12:52:45.000Z","updated_at":"2026-04-09T20:57:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/micdzu/aalto.nvim","commit_stats":null,"previous_names":["micdzu/nami.nvim","micdzu/aalto.nvim"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/micdzu/aalto.nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micdzu%2Faalto.nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micdzu%2Faalto.nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micdzu%2Faalto.nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micdzu%2Faalto.nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/micdzu","download_url":"https://codeload.github.com/micdzu/aalto.nvim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micdzu%2Faalto.nvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32067626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T21:26:33.338Z","status":"ssl_error","status_checked_at":"2026-04-20T21:26:22.081Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["colorscheme","dark-theme","editor-theme","light-theme","lua","neovim","theme","treesitter"],"created_at":"2026-04-19T06:00:43.156Z","updated_at":"2026-04-20T22:00:52.162Z","avatar_url":"https://github.com/micdzu.png","language":"Lua","funding_links":[],"categories":["Colorscheme"],"sub_categories":["Markdown and LaTeX","Assembly"],"readme":"# Aalto.nvim\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://micdzu.github.io/aalto.nvim/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/🎨_Visit_the_Showroom-Live_Demo-6B7FD4?style=for-the-badge\u0026labelColor=18122E\" alt=\"Aalto Showroom\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003e Color that means something. Everything else fades away.\n\n![Aalto screenshot](assets/preview.png)\n\nMost colorschemes are hex tables with opinions. Aalto is a perceptual color\nengine that happens to produce a colorscheme.\n\nThe difference in practice: when you change a color in Aalto, you change a _hue\nidentity_. Contrast, saturation, and the visual hierarchy between roles are\nrecomputed automatically in [OKLCH](https://oklch.com) space — a perceptually\nuniform color model where equal numeric steps look equal to the eye. You get a\ncoherent result without manually tweaking six related values.\n\n---\n\n## The idea\n\nAalto maps all of code down to four semantic roles and colors those. Everything\nelse — keywords, operators, punctuation, variables — renders in neutral\nforeground.\n\n| Role         | Meaning   | Examples                           |\n| ------------ | --------- | ---------------------------------- |\n| `definition` | Structure | functions, types, classes, modules |\n| `constant`   | Values    | numbers, booleans, enum members    |\n| `string`     | Data      | string literals                    |\n| `comment`    | Context   | comments, documentation            |\n\nThe hierarchy `definition \u003e constant \u003e string \u003e comment` is enforced\nperceptually, not just numerically — each role is placed at a deliberate\ndistance from the background in OKLCH lightness, so the prominence ordering\nholds across both dark and light variants regardless of hue.\n\nThe result is an editor that quietly shows you the shape of your code. The best\ncolorscheme is the one you stop noticing.\n\nRead the full reasoning in [docs/philosophy.md](docs/philosophy.md).\n\n---\n\n## Features\n\n- **Semantic-first** — four roles, consistent across every language\n- **OKLCH color engine** — perceptually uniform; adjustments look right\n- **Automatic contrast hierarchy** — definition \u003e constant \u003e string \u003e comment\n- **Dual palettes** — independent dark and light variants, hand-tuned\n- **Deep plugin coverage** — Telescope, nvim-cmp, Neo-tree, Gitsigns, Which-key,\n  Trouble, Notify, and more\n- **Extension API** — add highlight mappings for your own plugins without\n  modifying core files\n- **Runtime commands** — switch variants, preview, reload without restarting\n- **Built-in statusline** — minimal, semantic, opt-in\n- **Health check** — `:checkhealth aalto` reports contrast, gamut, and\n  light/dark balance\n\n---\n\n## Requirements\n\n- Neovim 0.9+\n- 24-bit color terminal or GUI\n\n---\n\n## Installation\n\n**lazy.nvim**\n\n```lua\n{\n  \"micdzu/aalto.nvim\",\n  priority = 1000,\n  config = function()\n    require(\"aalto\").setup({})\n    vim.cmd(\"colorscheme aalto\")\n  end,\n}\n```\n\n**packer.nvim**\n\n```lua\nuse {\n  \"micdzu/aalto.nvim\",\n  config = function()\n    require(\"aalto\").setup({})\n    vim.cmd(\"colorscheme aalto\")\n  end,\n}\n```\n\n**vim-plug**\n\n```vim\nPlug 'micdzu/aalto.nvim'\n```\n\n```lua\nrequire(\"aalto\").setup({})\nvim.cmd(\"colorscheme aalto\")\n```\n\n---\n\n## Quick start\n\n```lua\n-- Dark variant, all defaults\nrequire(\"aalto\").setup({})\nvim.cmd(\"colorscheme aalto\")\n```\n\n```lua\n-- Light variant\nrequire(\"aalto\").setup({ variant = \"light\" })\nvim.cmd(\"colorscheme aalto\")\n```\n\n---\n\n## Configuration\n\n```lua\nrequire(\"aalto\").setup({\n  -- \"dark\" or \"light\"\n  variant = \"dark\",\n\n  -- Override raw palette hues. Contrast and hierarchy are re-applied on top.\n  palette = {\n    definition = \"#7C8CFA\",\n    string     = \"#8FC77C\",\n    constant   = \"#B87EDC\",\n    comment    = \"#746FA3\",\n  },\n\n  -- Override semantic role colors directly, bypassing palette mapping.\n  semantic = {\n    definition = \"#82AAFF\",\n  },\n\n  -- Bold/italic for comments and keywords only.\n  styles = {\n    comments = { italic = true },\n    keywords = {},             -- e.g. { bold = true }\n  },\n\n  -- Transparent backgrounds.\n  transparent       = false,  -- main windows\n  float_transparent = false,  -- floating windows\n\n  -- Set terminal_color_0 … terminal_color_15.\n  terminal_colors = true,\n\n  -- Applied last, wins over everything.\n  overrides = {\n    -- [\"@keyword\"] = { italic = true },\n  },\n\n  -- Enable built-in statusline.\n  statusline = false,\n\n  -- Print resolved palette after setup.\n  debug = false,\n})\n```\n\nFull customization reference: [docs/customization.md](docs/customization.md)\n\n---\n\n## Commands\n\n| Command                       | Description                                   |\n| ----------------------------- | --------------------------------------------- |\n| `:AaltoVariant [dark\\|light]` | Switch variant, or toggle if no argument      |\n| `:AaltoStatus`                | Show current configuration                    |\n| `:AaltoReload`                | Re-apply highlights with the last used config |\n| `:AaltoPreview dark\\|light`   | Preview a variant temporarily without saving  |\n\n---\n\n## Lualine\n\n```lua\nrequire(\"lualine\").setup({\n  options = {\n    theme = require(\"aalto\").lualine_theme(),\n  },\n})\n```\n\nPass `{ lualine_style = \"full\" }` for a filled mode indicator instead of the\ndefault minimal one.\n\n---\n\n## Custom plugin highlights\n\n```lua\nrequire(\"aalto\").register_plugin_specs({\n  {\n    definition = { \"MyPluginTitle\", \"MyPluginHeader\" },\n    fg_dark    = { \"MyPluginBorder\", \"MyPluginSeparator\" },\n    error      = { \"MyPluginErrorSign\" },\n    string     = { \"MyPluginAddedLine\" },\n  },\n})\n```\n\nAvailable roles: `definition`, `constant`, `string`, `comment`, `fg`, `fg_dark`,\n`error`, `warn`, `info`, `hint`, `bg`, `bg_light`, `selection`,\n`inv_definition`, `inv_constant`, `inv_string`.\n\nFull reference: [docs/plugins.md](docs/plugins.md)\n\n---\n\n## Health check\n\n```vim\n:checkhealth aalto\n```\n\nReports contrast ratios, gamut warnings, and a light/dark comparison table.\n\n---\n\n## Architecture\n\n```\nbase → variants → semantic → link() → groups → highlights\n```\n\n- **base** — raw hues (dark/light palettes)\n- **variants** — UI surfaces derived from background in OKLCH\n- **semantic** — lightness positioning, chroma shaping, hierarchy enforcement\n- **link()** — role-to-highlight-spec translation\n- **groups** — Neovim highlight group definitions\n\nFull internals: [docs/design.md](docs/design.md)\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicdzu%2Faalto.nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicdzu%2Faalto.nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicdzu%2Faalto.nvim/lists"}