diff --git a/CLAUDE.md b/CLAUDE.md index 65f67aa..7f78924 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -12,7 +12,7 @@ Regenerates all theme files from `src/*.yaml` via Jinja2 templates into `dist/`. ## Architecture -Apex is a **theme factory** — a build system that generates native theme configs for 14+ applications from a single semantic color specification. +Apex is a **theme factory** — a build system that generates native theme configs for 18 applications from a single semantic color specification. **Data flow:** 1. `src/neon.yaml` and `src/aeon.yaml` define the canonical color palette and semantic roles @@ -46,3 +46,8 @@ Before modifying `src/*.yaml`, consult `GEMINI.md` to verify that any new or cha ## Validation After changes, run `uv run build.py` and inspect relevant files in `dist/`. For Neovim-specific validation, `scripts/nvim-audit.sh` is available. + +## Scripts + +- `scripts/release.sh` — Per-app versioning and Gitea release automation. Usage: `bash scripts/release.sh `. Discovers changed apps via git diff, updates `meta.yaml` version fields, builds, and publishes tarballs. Supports `--dry-run`. +- `scripts/nvim-audit.sh` — Validates the built Neovim theme by running headless Neovim. Requires `dist/nvim/colors/apex-neon.lua` to exist first. diff --git a/dist/nvim/colors/apex-aeon.lua b/dist/nvim/colors/apex-aeon.lua index f45ecbc..13d335d 100644 --- a/dist/nvim/colors/apex-aeon.lua +++ b/dist/nvim/colors/apex-aeon.lua @@ -238,6 +238,353 @@ function M.load() CmpItemKindMethod = { fg = p.azure }, CmpItemKindKeyword = { fg = p.sacred }, CmpItemKindVariable = { fg = p.text }, + + -- PLUGINS: BLINK.CMP (Completion) ---------------------------------------- + BlinkCmpMenu = { fg = p.text, bg = p.panel }, + BlinkCmpMenuBorder = { fg = p.border, bg = p.panel }, + BlinkCmpMenuSelection = { fg = p.ink, bg = p.razor, bold = true }, + BlinkCmpScrollBarThumb = { bg = p.stealth }, + BlinkCmpScrollBarGutter = { bg = p.panel }, + BlinkCmpLabel = { fg = p.text }, + BlinkCmpLabelDeprecated = { fg = p.dim, strikethrough = true }, + BlinkCmpLabelMatch = { fg = p.tech, bold = true }, + BlinkCmpKindText = { fg = p.text }, + BlinkCmpKindMethod = { fg = p.azure }, + BlinkCmpKindFunction = { fg = p.azure }, + BlinkCmpKindConstructor = { fg = p.amber }, + BlinkCmpKindField = { fg = p.text }, + BlinkCmpKindVariable = { fg = p.text }, + BlinkCmpKindClass = { fg = p.amber }, + BlinkCmpKindInterface = { fg = p.amber }, + BlinkCmpKindModule = { fg = p.amber }, + BlinkCmpKindProperty = { fg = p.text }, + BlinkCmpKindUnit = { fg = p.tech }, + BlinkCmpKindValue = { fg = p.tech }, + BlinkCmpKindEnum = { fg = p.amber }, + BlinkCmpKindKeyword = { fg = p.sacred }, + BlinkCmpKindSnippet = { fg = p.toxic }, + BlinkCmpKindColor = { fg = p.tech }, + BlinkCmpKindFile = { fg = p.text }, + BlinkCmpKindReference = { fg = p.tech }, + BlinkCmpKindFolder = { fg = p.text }, + BlinkCmpKindEnumMember = { fg = p.tech }, + BlinkCmpKindConstant = { fg = p.tech }, + BlinkCmpKindStruct = { fg = p.amber }, + BlinkCmpKindEvent = { fg = p.amber }, + BlinkCmpKindOperator = { fg = p.text }, + BlinkCmpKindTypeParameter = { fg = p.amber }, + BlinkCmpGhostText = { fg = p.stealth, italic = true }, + BlinkCmpDoc = { fg = p.text, bg = p.panel }, + BlinkCmpDocBorder = { fg = p.border, bg = p.panel }, + BlinkCmpDocSeparator = { fg = p.border, bg = p.panel }, + BlinkCmpDocCursorLine = { bg = p.border }, + BlinkCmpSignatureHelp = { fg = p.text, bg = p.panel }, + BlinkCmpSignatureHelpBorder = { fg = p.border, bg = p.panel }, + BlinkCmpSignatureHelpActiveParameter = { fg = p.ink, bg = p.tech, bold = true }, + BlinkCmpSource = { fg = p.dim }, + + -- PLUGINS: BUFFERLINE ----------------------------------------------------- + BufferLineBackground = { fg = p.dim, bg = p.panel }, + BufferLineFill = { bg = p.panel }, + BufferLineBuffer = { fg = p.dim, bg = p.panel }, + BufferLineBufferSelected = { fg = p.text, bg = p.void, bold = true }, + BufferLineBufferVisible = { fg = p.dim, bg = p.panel }, + BufferLineTab = { fg = p.dim, bg = p.panel }, + BufferLineTabSelected = { fg = p.text, bg = p.void, bold = true }, + BufferLineTabClose = { fg = p.razor, bg = p.panel }, + BufferLineModified = { fg = p.tech, bg = p.panel }, + BufferLineModifiedSelected = { fg = p.tech, bg = p.void }, + BufferLineModifiedVisible = { fg = p.tech, bg = p.panel }, + BufferLineSeparator = { fg = p.border, bg = p.panel }, + BufferLineSeparatorSelected = { fg = p.border, bg = p.void }, + BufferLineSeparatorVisible = { fg = p.border, bg = p.panel }, + BufferLineIndicatorSelected = { fg = p.razor, bg = p.void }, + BufferLineCloseButton = { fg = p.dim, bg = p.panel }, + BufferLineCloseButtonSelected = { fg = p.razor, bg = p.void }, + BufferLineCloseButtonVisible = { fg = p.dim, bg = p.panel }, + BufferLineDiagnostic = { fg = p.dim, bg = p.panel }, + BufferLineDiagnosticSelected = { fg = p.dim, bg = p.void }, + BufferLineError = { fg = p.alert, bg = p.panel }, + BufferLineErrorSelected = { fg = p.alert, bg = p.void, bold = true }, + BufferLineWarning = { fg = p.amber, bg = p.panel }, + BufferLineWarningSelected = { fg = p.amber, bg = p.void, bold = true }, + BufferLineInfo = { fg = p.tech, bg = p.panel }, + BufferLineInfoSelected = { fg = p.tech, bg = p.void, bold = true }, + BufferLineHint = { fg = p.dim, bg = p.panel }, + BufferLineHintSelected = { fg = p.dim, bg = p.void, bold = true }, + BufferLinePick = { fg = p.razor, bg = p.panel, bold = true }, + BufferLinePickSelected = { fg = p.razor, bg = p.void, bold = true }, + BufferLinePickVisible = { fg = p.razor, bg = p.panel, bold = true }, + + -- PLUGINS: WHICH-KEY ------------------------------------------------------ + WhichKey = { fg = p.razor, bold = true }, + WhichKeySeparator = { fg = p.stealth }, + WhichKeyGroup = { fg = p.tech }, + WhichKeyDesc = { fg = p.text }, + WhichKeyFloat = { bg = p.panel }, + WhichKeyBorder = { fg = p.border, bg = p.panel }, + WhichKeyTitle = { fg = p.ink, bg = p.razor, bold = true }, + WhichKeyNormal = { fg = p.text, bg = p.panel }, + WhichKeyValue = { fg = p.dim }, + WhichKeyIcon = { fg = p.azure }, + WhichKeyIconAzure = { fg = p.azure }, + WhichKeyIconGreen = { fg = p.toxic }, + WhichKeyIconYellow = { fg = p.amber }, + WhichKeyIconRed = { fg = p.razor }, + WhichKeyIconPurple = { fg = p.sacred }, + WhichKeyIconCyan = { fg = p.tech }, + + -- PLUGINS: TROUBLE -------------------------------------------------------- + TroubleNormal = { fg = p.text, bg = p.void }, + TroubleNormalNC = { fg = p.dim, bg = p.void }, + TroubleText = { fg = p.text }, + TroubleCount = { fg = p.ink, bg = p.razor, bold = true }, + TroubleError = { fg = p.alert }, + TroubleWarning = { fg = p.amber }, + TroubleHint = { fg = p.dim }, + TroubleInfo = { fg = p.tech }, + TroubleSource = { fg = p.dim }, + TroubleCode = { fg = p.stealth }, + TroubleLocation = { fg = p.dim }, + TroubleFile = { fg = p.tech, bold = true }, + TroubleIndent = { fg = p.border }, + TroublePos = { fg = p.dim }, + TroubleSignError = { fg = p.alert }, + TroubleSignWarning = { fg = p.amber }, + TroubleSignHint = { fg = p.dim }, + TroubleSignInfo = { fg = p.tech }, + TroublePreview = { fg = p.ink, bg = p.razor }, + TroubleFocusText = { fg = p.text, bold = true }, + + -- PLUGINS: INDENT-BLANKLINE ----------------------------------------------- + IblIndent = { fg = p.border }, + IblScope = { fg = p.stealth }, + IblWhitespace = { fg = p.border }, + + -- PLUGINS: NEOGIT --------------------------------------------------------- + NeogitBranch = { fg = p.razor, bold = true }, + NeogitRemote = { fg = p.tech }, + NeogitHunkHeader = { fg = p.text, bg = p.panel, bold = true }, + NeogitHunkHeaderHighlight = { fg = p.ink, bg = p.tech, bold = true }, + NeogitDiffAdd = { fg = p.toxic, bg = p.void }, + NeogitDiffDelete = { fg = p.razor, bg = p.void }, + NeogitDiffContext = { fg = p.dim, bg = p.void }, + NeogitDiffAddHighlight = { fg = p.toxic, bg = p.panel }, + NeogitDiffDeleteHighlight = { fg = p.razor, bg = p.panel }, + NeogitDiffContextHighlight = { fg = p.text, bg = p.panel }, + NeogitCommitViewHeader = { fg = p.ink, bg = p.razor, bold = true }, + NeogitFilePath = { fg = p.tech, underline = true }, + NeogitDiffHeader = { fg = p.amber, bold = true }, + NeogitDiffHeaderHighlight = { fg = p.ink, bg = p.amber, bold = true }, + NeogitObjectId = { fg = p.dim }, + NeogitStashes = { fg = p.sacred }, + NeogitRebaseDone = { fg = p.toxic }, + NeogitFold = { fg = p.stealth }, + + -- PLUGINS: AERIAL (Symbols Outline) -------------------------------------- + AerialLine = { fg = p.ink, bg = p.razor }, + AerialLineNC = { fg = p.dim, bg = p.panel }, + AerialNormal = { fg = p.text, bg = p.void }, + AerialGuide = { fg = p.border }, + AerialClass = { fg = p.amber }, + AerialClassIcon = { fg = p.amber }, + AerialFunction = { fg = p.azure }, + AerialFunctionIcon = { fg = p.azure }, + AerialMethod = { fg = p.azure }, + AerialMethodIcon = { fg = p.azure }, + AerialConstructor = { fg = p.amber }, + AerialField = { fg = p.text }, + AerialVariable = { fg = p.text }, + AerialEnum = { fg = p.amber }, + AerialEnumIcon = { fg = p.amber }, + AerialInterface = { fg = p.amber }, + AerialModule = { fg = p.amber }, + AerialNamespace = { fg = p.amber }, + AerialPackage = { fg = p.amber }, + AerialProperty = { fg = p.text }, + AerialStruct = { fg = p.amber }, + AerialType = { fg = p.amber }, + AerialTypeParameter = { fg = p.amber }, + AerialConstant = { fg = p.tech }, + AerialString = { fg = p.toxic }, + AerialNumber = { fg = p.tech }, + AerialBoolean = { fg = p.tech }, + AerialKey = { fg = p.sacred }, + AerialKeyword = { fg = p.sacred }, + AerialOperator = { fg = p.text }, + AerialNull = { fg = p.dim }, + AerialArray = { fg = p.tech }, + AerialObject = { fg = p.amber }, + AerialEvent = { fg = p.amber }, + + -- PLUGINS: DAP-UI --------------------------------------------------------- + DapUIScope = { fg = p.tech, bold = true }, + DapUIType = { fg = p.amber }, + DapUIDecoration = { fg = p.border }, + DapUIThread = { fg = p.toxic }, + DapUIStoppedThread = { fg = p.razor, bold = true }, + DapUICurrentFrameName = { fg = p.razor, bold = true }, + DapUISource = { fg = p.dim }, + DapUILineNumber = { fg = p.stealth }, + DapUIFloatBorder = { fg = p.border, bg = p.panel }, + DapUIFloatNormal = { fg = p.text, bg = p.panel }, + DapUIWatchesEmpty = { fg = p.dim }, + DapUIWatchesValue = { fg = p.toxic }, + DapUIWatchesError = { fg = p.alert }, + DapUIBreakpointsPath = { fg = p.tech }, + DapUIBreakpointsInfo = { fg = p.dim }, + DapUIBreakpointsCurrentLine = { fg = p.razor, bold = true }, + DapUIBreakpointsDisabledLine = { fg = p.stealth }, + DapUIEndofBuffer = { fg = p.void }, + DapUIModifiedValue = { fg = p.amber, bold = true }, + DapUIStop = { fg = p.razor }, + DapUIStepOver = { fg = p.tech }, + DapUIStepInto = { fg = p.tech }, + DapUIStepBack = { fg = p.tech }, + DapUIStepOut = { fg = p.tech }, + DapUIRestart = { fg = p.toxic }, + DapUIUnavailable = { fg = p.stealth }, + DapUIPlayPause = { fg = p.toxic }, + + -- PLUGINS: DAP VIRTUAL TEXT ----------------------------------------------- + NvimDapVirtualText = { fg = p.dim, italic = true }, + NvimDapVirtualTextChanged = { fg = p.amber, italic = true }, + NvimDapVirtualTextError = { fg = p.alert, italic = true }, + NvimDapVirtualTextInfo = { fg = p.tech, italic = true }, + + -- PLUGINS: NVIM-NOTIFY ---------------------------------------------------- + NotifyERRORBorder = { fg = p.razor }, + NotifyWARNBorder = { fg = p.amber }, + NotifyINFOBorder = { fg = p.tech }, + NotifyDEBUGBorder = { fg = p.stealth }, + NotifyTRACEBorder = { fg = p.sacred }, + NotifyERRORIcon = { fg = p.razor }, + NotifyWARNIcon = { fg = p.amber }, + NotifyINFOIcon = { fg = p.tech }, + NotifyDEBUGIcon = { fg = p.stealth }, + NotifyTRACEIcon = { fg = p.sacred }, + NotifyERRORTitle = { fg = p.razor, bold = true }, + NotifyWARNTitle = { fg = p.amber, bold = true }, + NotifyINFOTitle = { fg = p.tech, bold = true }, + NotifyDEBUGTitle = { fg = p.stealth, bold = true }, + NotifyTRACETitle = { fg = p.sacred, bold = true }, + NotifyERRORBody = { fg = p.text, bg = p.panel }, + NotifyWARNBody = { fg = p.text, bg = p.panel }, + NotifyINFOBody = { fg = p.text, bg = p.panel }, + NotifyDEBUGBody = { fg = p.dim, bg = p.panel }, + NotifyTRACEBody = { fg = p.dim, bg = p.panel }, + + -- PLUGINS: SATELLITE (Scrollbar) ----------------------------------------- + SatelliteBar = { bg = p.panel }, + SatelliteCursor = { fg = p.razor }, + SatellitePosition = { fg = p.dim }, + SatelliteError = { fg = p.alert }, + SatelliteWarning = { fg = p.amber }, + SatelliteHint = { fg = p.dim }, + SatelliteInfo = { fg = p.tech }, + SatelliteSearch = { fg = p.tech }, + SatelliteGit = { fg = p.toxic }, + SatelliteMark = { fg = p.amber }, + + -- PLUGINS: OIL.NVIM (File Explorer) -------------------------------------- + OilDir = { fg = p.tech, bold = true }, + OilDirIcon = { fg = p.tech }, + OilLink = { fg = p.sacred, italic = true }, + OilLinkTarget = { fg = p.sacred }, + OilCopy = { fg = p.amber, bold = true }, + OilMove = { fg = p.amber }, + OilChange = { fg = p.tech }, + OilCreate = { fg = p.toxic, bold = true }, + OilDelete = { fg = p.razor, bold = true }, + OilPermissionNone = { fg = p.stealth }, + OilPermissionRead = { fg = p.tech }, + OilPermissionWrite = { fg = p.amber }, + OilPermissionExecute = { fg = p.toxic }, + OilTypeDir = { fg = p.tech }, + OilTypeFile = { fg = p.text }, + OilTypeLink = { fg = p.sacred }, + OilTypeSpecial = { fg = p.razor }, + OilSize = { fg = p.dim }, + OilMtime = { fg = p.stealth }, + + -- PLUGINS: NEOTEST -------------------------------------------------------- + NeotestPassed = { fg = p.toxic }, + NeotestFailed = { fg = p.razor }, + NeotestRunning = { fg = p.amber }, + NeotestSkipped = { fg = p.dim }, + NeotestUnknown = { fg = p.stealth }, + NeotestTest = { fg = p.text }, + NeotestFile = { fg = p.tech }, + NeotestDir = { fg = p.tech, bold = true }, + NeotestNamespace = { fg = p.amber }, + NeotestMarked = { fg = p.razor, bold = true }, + NeotestTarget = { fg = p.razor }, + NeotestAdapterName = { fg = p.sacred, bold = true }, + NeotestWinSelect = { fg = p.tech, bold = true }, + NeotestFocused = { bold = true }, + NeotestIndent = { fg = p.border }, + NeotestExpandMarker = { fg = p.dim }, + NeotestWatching = { fg = p.amber }, + + -- PLUGINS: GRUG-FAR (Search & Replace) ----------------------------------- + GrugFarResultsHeader = { fg = p.ink, bg = p.razor, bold = true }, + GrugFarResultsMatch = { fg = p.void, bg = p.tech, bold = true }, + GrugFarResultsMatchAdded = { fg = p.toxic }, + GrugFarResultsMatchRemoved = { fg = p.razor }, + GrugFarResultsLineNo = { fg = p.dim }, + GrugFarResultsPath = { fg = p.tech, underline = true }, + GrugFarResultsStats = { fg = p.dim }, + GrugFarInputLabel = { fg = p.amber, bold = true }, + GrugFarInputPlaceholder = { fg = p.stealth }, + GrugFarHelpHeader = { fg = p.dim, bold = true }, + GrugFarHelpWinHeader = { fg = p.ink, bg = p.panel, bold = true }, + + -- PLUGINS: TWINNY (AI Ghost Text) ---------------------------------------- + TwinnyAccept = { fg = p.stealth, italic = true }, + TwinnyHint = { fg = p.stealth, italic = true }, + + -- PLUGINS: GITSIGNS (extended) ------------------------------------------- + GitSignsCurrentLineBlame = { fg = p.stealth, italic = true }, + GitSignsAddNr = { fg = p.toxic }, + GitSignsChangeNr = { fg = p.tech }, + GitSignsDeleteNr = { fg = p.razor }, + GitSignsAddLn = { fg = p.toxic, bg = p.panel }, + GitSignsChangeLn = { fg = p.tech, bg = p.panel }, + GitSignsDeleteLn = { fg = p.razor, bg = p.panel }, + GitSignsAddPreview = { fg = p.toxic, bg = p.panel }, + GitSignsDeletePreview = { fg = p.razor, bg = p.panel }, + GitSignsAddInline = { fg = p.void, bg = p.toxic }, + GitSignsDeleteInline = { fg = p.void, bg = p.razor }, + GitSignsChangeInline = { fg = p.void, bg = p.tech }, + GitSignsUntracked = { fg = p.dim }, + + -- PLUGINS: RENDER-MARKDOWN ------------------------------------------------ + RenderMarkdownH1 = { fg = p.razor, bold = true }, + RenderMarkdownH2 = { fg = p.amber, bold = true }, + RenderMarkdownH3 = { fg = p.tech, bold = true }, + RenderMarkdownH4 = { fg = p.toxic, bold = true }, + RenderMarkdownH5 = { fg = p.sacred, bold = true }, + RenderMarkdownH6 = { fg = p.azure, bold = true }, + RenderMarkdownH1Bg = { bg = p.panel }, + RenderMarkdownH2Bg = { bg = p.panel }, + RenderMarkdownH3Bg = { bg = p.panel }, + RenderMarkdownH4Bg = { bg = p.panel }, + RenderMarkdownH5Bg = { bg = p.panel }, + RenderMarkdownH6Bg = { bg = p.panel }, + RenderMarkdownCode = { bg = p.panel }, + RenderMarkdownCodeInline = { fg = p.toxic, bg = p.panel }, + RenderMarkdownBullet = { fg = p.razor }, + RenderMarkdownQuote = { fg = p.stealth, italic = true }, + RenderMarkdownDash = { fg = p.border }, + RenderMarkdownLink = { fg = p.tech, underline = true }, + RenderMarkdownSign = { bg = p.void }, + RenderMarkdownMath = { fg = p.tech }, + RenderMarkdownTableHead = { fg = p.ink, bg = p.razor, bold = true }, + RenderMarkdownTableRow = { fg = p.text }, + RenderMarkdownTableFill = { fg = p.border }, + RenderMarkdownTodo = { fg = p.void, bg = p.amber, bold = true }, + RenderMarkdownUnchecked = { fg = p.stealth }, + RenderMarkdownChecked = { fg = p.toxic }, } for group, highlight in pairs(groups) do @@ -376,6 +723,41 @@ function M.load() end end +-- PLUGINS: LUALINE -------------------------------------------------------- +-- Export lualine theme from palette for use in lualine config +M.lualine = { + normal = { + a = { fg = p.ink, bg = p.razor, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + insert = { + a = { fg = p.ink, bg = p.toxic, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + visual = { + a = { fg = p.ink, bg = p.tech, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + replace = { + a = { fg = p.ink, bg = p.amber, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + command = { + a = { fg = p.ink, bg = p.sacred, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + inactive = { + a = { fg = p.dim, bg = p.panel }, + b = { fg = p.dim, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, +} + M.load() return M \ No newline at end of file diff --git a/dist/nvim/colors/apex-neon.lua b/dist/nvim/colors/apex-neon.lua index f171fb5..866d45f 100644 --- a/dist/nvim/colors/apex-neon.lua +++ b/dist/nvim/colors/apex-neon.lua @@ -238,6 +238,353 @@ function M.load() CmpItemKindMethod = { fg = p.azure }, CmpItemKindKeyword = { fg = p.sacred }, CmpItemKindVariable = { fg = p.text }, + + -- PLUGINS: BLINK.CMP (Completion) ---------------------------------------- + BlinkCmpMenu = { fg = p.text, bg = p.panel }, + BlinkCmpMenuBorder = { fg = p.border, bg = p.panel }, + BlinkCmpMenuSelection = { fg = p.ink, bg = p.razor, bold = true }, + BlinkCmpScrollBarThumb = { bg = p.stealth }, + BlinkCmpScrollBarGutter = { bg = p.panel }, + BlinkCmpLabel = { fg = p.text }, + BlinkCmpLabelDeprecated = { fg = p.dim, strikethrough = true }, + BlinkCmpLabelMatch = { fg = p.tech, bold = true }, + BlinkCmpKindText = { fg = p.text }, + BlinkCmpKindMethod = { fg = p.azure }, + BlinkCmpKindFunction = { fg = p.azure }, + BlinkCmpKindConstructor = { fg = p.amber }, + BlinkCmpKindField = { fg = p.text }, + BlinkCmpKindVariable = { fg = p.text }, + BlinkCmpKindClass = { fg = p.amber }, + BlinkCmpKindInterface = { fg = p.amber }, + BlinkCmpKindModule = { fg = p.amber }, + BlinkCmpKindProperty = { fg = p.text }, + BlinkCmpKindUnit = { fg = p.tech }, + BlinkCmpKindValue = { fg = p.tech }, + BlinkCmpKindEnum = { fg = p.amber }, + BlinkCmpKindKeyword = { fg = p.sacred }, + BlinkCmpKindSnippet = { fg = p.toxic }, + BlinkCmpKindColor = { fg = p.tech }, + BlinkCmpKindFile = { fg = p.text }, + BlinkCmpKindReference = { fg = p.tech }, + BlinkCmpKindFolder = { fg = p.text }, + BlinkCmpKindEnumMember = { fg = p.tech }, + BlinkCmpKindConstant = { fg = p.tech }, + BlinkCmpKindStruct = { fg = p.amber }, + BlinkCmpKindEvent = { fg = p.amber }, + BlinkCmpKindOperator = { fg = p.text }, + BlinkCmpKindTypeParameter = { fg = p.amber }, + BlinkCmpGhostText = { fg = p.stealth, italic = true }, + BlinkCmpDoc = { fg = p.text, bg = p.panel }, + BlinkCmpDocBorder = { fg = p.border, bg = p.panel }, + BlinkCmpDocSeparator = { fg = p.border, bg = p.panel }, + BlinkCmpDocCursorLine = { bg = p.border }, + BlinkCmpSignatureHelp = { fg = p.text, bg = p.panel }, + BlinkCmpSignatureHelpBorder = { fg = p.border, bg = p.panel }, + BlinkCmpSignatureHelpActiveParameter = { fg = p.ink, bg = p.tech, bold = true }, + BlinkCmpSource = { fg = p.dim }, + + -- PLUGINS: BUFFERLINE ----------------------------------------------------- + BufferLineBackground = { fg = p.dim, bg = p.panel }, + BufferLineFill = { bg = p.panel }, + BufferLineBuffer = { fg = p.dim, bg = p.panel }, + BufferLineBufferSelected = { fg = p.text, bg = p.void, bold = true }, + BufferLineBufferVisible = { fg = p.dim, bg = p.panel }, + BufferLineTab = { fg = p.dim, bg = p.panel }, + BufferLineTabSelected = { fg = p.text, bg = p.void, bold = true }, + BufferLineTabClose = { fg = p.razor, bg = p.panel }, + BufferLineModified = { fg = p.tech, bg = p.panel }, + BufferLineModifiedSelected = { fg = p.tech, bg = p.void }, + BufferLineModifiedVisible = { fg = p.tech, bg = p.panel }, + BufferLineSeparator = { fg = p.border, bg = p.panel }, + BufferLineSeparatorSelected = { fg = p.border, bg = p.void }, + BufferLineSeparatorVisible = { fg = p.border, bg = p.panel }, + BufferLineIndicatorSelected = { fg = p.razor, bg = p.void }, + BufferLineCloseButton = { fg = p.dim, bg = p.panel }, + BufferLineCloseButtonSelected = { fg = p.razor, bg = p.void }, + BufferLineCloseButtonVisible = { fg = p.dim, bg = p.panel }, + BufferLineDiagnostic = { fg = p.dim, bg = p.panel }, + BufferLineDiagnosticSelected = { fg = p.dim, bg = p.void }, + BufferLineError = { fg = p.alert, bg = p.panel }, + BufferLineErrorSelected = { fg = p.alert, bg = p.void, bold = true }, + BufferLineWarning = { fg = p.amber, bg = p.panel }, + BufferLineWarningSelected = { fg = p.amber, bg = p.void, bold = true }, + BufferLineInfo = { fg = p.tech, bg = p.panel }, + BufferLineInfoSelected = { fg = p.tech, bg = p.void, bold = true }, + BufferLineHint = { fg = p.dim, bg = p.panel }, + BufferLineHintSelected = { fg = p.dim, bg = p.void, bold = true }, + BufferLinePick = { fg = p.razor, bg = p.panel, bold = true }, + BufferLinePickSelected = { fg = p.razor, bg = p.void, bold = true }, + BufferLinePickVisible = { fg = p.razor, bg = p.panel, bold = true }, + + -- PLUGINS: WHICH-KEY ------------------------------------------------------ + WhichKey = { fg = p.razor, bold = true }, + WhichKeySeparator = { fg = p.stealth }, + WhichKeyGroup = { fg = p.tech }, + WhichKeyDesc = { fg = p.text }, + WhichKeyFloat = { bg = p.panel }, + WhichKeyBorder = { fg = p.border, bg = p.panel }, + WhichKeyTitle = { fg = p.ink, bg = p.razor, bold = true }, + WhichKeyNormal = { fg = p.text, bg = p.panel }, + WhichKeyValue = { fg = p.dim }, + WhichKeyIcon = { fg = p.azure }, + WhichKeyIconAzure = { fg = p.azure }, + WhichKeyIconGreen = { fg = p.toxic }, + WhichKeyIconYellow = { fg = p.amber }, + WhichKeyIconRed = { fg = p.razor }, + WhichKeyIconPurple = { fg = p.sacred }, + WhichKeyIconCyan = { fg = p.tech }, + + -- PLUGINS: TROUBLE -------------------------------------------------------- + TroubleNormal = { fg = p.text, bg = p.void }, + TroubleNormalNC = { fg = p.dim, bg = p.void }, + TroubleText = { fg = p.text }, + TroubleCount = { fg = p.ink, bg = p.razor, bold = true }, + TroubleError = { fg = p.alert }, + TroubleWarning = { fg = p.amber }, + TroubleHint = { fg = p.dim }, + TroubleInfo = { fg = p.tech }, + TroubleSource = { fg = p.dim }, + TroubleCode = { fg = p.stealth }, + TroubleLocation = { fg = p.dim }, + TroubleFile = { fg = p.tech, bold = true }, + TroubleIndent = { fg = p.border }, + TroublePos = { fg = p.dim }, + TroubleSignError = { fg = p.alert }, + TroubleSignWarning = { fg = p.amber }, + TroubleSignHint = { fg = p.dim }, + TroubleSignInfo = { fg = p.tech }, + TroublePreview = { fg = p.ink, bg = p.razor }, + TroubleFocusText = { fg = p.text, bold = true }, + + -- PLUGINS: INDENT-BLANKLINE ----------------------------------------------- + IblIndent = { fg = p.border }, + IblScope = { fg = p.stealth }, + IblWhitespace = { fg = p.border }, + + -- PLUGINS: NEOGIT --------------------------------------------------------- + NeogitBranch = { fg = p.razor, bold = true }, + NeogitRemote = { fg = p.tech }, + NeogitHunkHeader = { fg = p.text, bg = p.panel, bold = true }, + NeogitHunkHeaderHighlight = { fg = p.ink, bg = p.tech, bold = true }, + NeogitDiffAdd = { fg = p.toxic, bg = p.void }, + NeogitDiffDelete = { fg = p.razor, bg = p.void }, + NeogitDiffContext = { fg = p.dim, bg = p.void }, + NeogitDiffAddHighlight = { fg = p.toxic, bg = p.panel }, + NeogitDiffDeleteHighlight = { fg = p.razor, bg = p.panel }, + NeogitDiffContextHighlight = { fg = p.text, bg = p.panel }, + NeogitCommitViewHeader = { fg = p.ink, bg = p.razor, bold = true }, + NeogitFilePath = { fg = p.tech, underline = true }, + NeogitDiffHeader = { fg = p.amber, bold = true }, + NeogitDiffHeaderHighlight = { fg = p.ink, bg = p.amber, bold = true }, + NeogitObjectId = { fg = p.dim }, + NeogitStashes = { fg = p.sacred }, + NeogitRebaseDone = { fg = p.toxic }, + NeogitFold = { fg = p.stealth }, + + -- PLUGINS: AERIAL (Symbols Outline) -------------------------------------- + AerialLine = { fg = p.ink, bg = p.razor }, + AerialLineNC = { fg = p.dim, bg = p.panel }, + AerialNormal = { fg = p.text, bg = p.void }, + AerialGuide = { fg = p.border }, + AerialClass = { fg = p.amber }, + AerialClassIcon = { fg = p.amber }, + AerialFunction = { fg = p.azure }, + AerialFunctionIcon = { fg = p.azure }, + AerialMethod = { fg = p.azure }, + AerialMethodIcon = { fg = p.azure }, + AerialConstructor = { fg = p.amber }, + AerialField = { fg = p.text }, + AerialVariable = { fg = p.text }, + AerialEnum = { fg = p.amber }, + AerialEnumIcon = { fg = p.amber }, + AerialInterface = { fg = p.amber }, + AerialModule = { fg = p.amber }, + AerialNamespace = { fg = p.amber }, + AerialPackage = { fg = p.amber }, + AerialProperty = { fg = p.text }, + AerialStruct = { fg = p.amber }, + AerialType = { fg = p.amber }, + AerialTypeParameter = { fg = p.amber }, + AerialConstant = { fg = p.tech }, + AerialString = { fg = p.toxic }, + AerialNumber = { fg = p.tech }, + AerialBoolean = { fg = p.tech }, + AerialKey = { fg = p.sacred }, + AerialKeyword = { fg = p.sacred }, + AerialOperator = { fg = p.text }, + AerialNull = { fg = p.dim }, + AerialArray = { fg = p.tech }, + AerialObject = { fg = p.amber }, + AerialEvent = { fg = p.amber }, + + -- PLUGINS: DAP-UI --------------------------------------------------------- + DapUIScope = { fg = p.tech, bold = true }, + DapUIType = { fg = p.amber }, + DapUIDecoration = { fg = p.border }, + DapUIThread = { fg = p.toxic }, + DapUIStoppedThread = { fg = p.razor, bold = true }, + DapUICurrentFrameName = { fg = p.razor, bold = true }, + DapUISource = { fg = p.dim }, + DapUILineNumber = { fg = p.stealth }, + DapUIFloatBorder = { fg = p.border, bg = p.panel }, + DapUIFloatNormal = { fg = p.text, bg = p.panel }, + DapUIWatchesEmpty = { fg = p.dim }, + DapUIWatchesValue = { fg = p.toxic }, + DapUIWatchesError = { fg = p.alert }, + DapUIBreakpointsPath = { fg = p.tech }, + DapUIBreakpointsInfo = { fg = p.dim }, + DapUIBreakpointsCurrentLine = { fg = p.razor, bold = true }, + DapUIBreakpointsDisabledLine = { fg = p.stealth }, + DapUIEndofBuffer = { fg = p.void }, + DapUIModifiedValue = { fg = p.amber, bold = true }, + DapUIStop = { fg = p.razor }, + DapUIStepOver = { fg = p.tech }, + DapUIStepInto = { fg = p.tech }, + DapUIStepBack = { fg = p.tech }, + DapUIStepOut = { fg = p.tech }, + DapUIRestart = { fg = p.toxic }, + DapUIUnavailable = { fg = p.stealth }, + DapUIPlayPause = { fg = p.toxic }, + + -- PLUGINS: DAP VIRTUAL TEXT ----------------------------------------------- + NvimDapVirtualText = { fg = p.dim, italic = true }, + NvimDapVirtualTextChanged = { fg = p.amber, italic = true }, + NvimDapVirtualTextError = { fg = p.alert, italic = true }, + NvimDapVirtualTextInfo = { fg = p.tech, italic = true }, + + -- PLUGINS: NVIM-NOTIFY ---------------------------------------------------- + NotifyERRORBorder = { fg = p.razor }, + NotifyWARNBorder = { fg = p.amber }, + NotifyINFOBorder = { fg = p.tech }, + NotifyDEBUGBorder = { fg = p.stealth }, + NotifyTRACEBorder = { fg = p.sacred }, + NotifyERRORIcon = { fg = p.razor }, + NotifyWARNIcon = { fg = p.amber }, + NotifyINFOIcon = { fg = p.tech }, + NotifyDEBUGIcon = { fg = p.stealth }, + NotifyTRACEIcon = { fg = p.sacred }, + NotifyERRORTitle = { fg = p.razor, bold = true }, + NotifyWARNTitle = { fg = p.amber, bold = true }, + NotifyINFOTitle = { fg = p.tech, bold = true }, + NotifyDEBUGTitle = { fg = p.stealth, bold = true }, + NotifyTRACETitle = { fg = p.sacred, bold = true }, + NotifyERRORBody = { fg = p.text, bg = p.panel }, + NotifyWARNBody = { fg = p.text, bg = p.panel }, + NotifyINFOBody = { fg = p.text, bg = p.panel }, + NotifyDEBUGBody = { fg = p.dim, bg = p.panel }, + NotifyTRACEBody = { fg = p.dim, bg = p.panel }, + + -- PLUGINS: SATELLITE (Scrollbar) ----------------------------------------- + SatelliteBar = { bg = p.panel }, + SatelliteCursor = { fg = p.razor }, + SatellitePosition = { fg = p.dim }, + SatelliteError = { fg = p.alert }, + SatelliteWarning = { fg = p.amber }, + SatelliteHint = { fg = p.dim }, + SatelliteInfo = { fg = p.tech }, + SatelliteSearch = { fg = p.tech }, + SatelliteGit = { fg = p.toxic }, + SatelliteMark = { fg = p.amber }, + + -- PLUGINS: OIL.NVIM (File Explorer) -------------------------------------- + OilDir = { fg = p.tech, bold = true }, + OilDirIcon = { fg = p.tech }, + OilLink = { fg = p.sacred, italic = true }, + OilLinkTarget = { fg = p.sacred }, + OilCopy = { fg = p.amber, bold = true }, + OilMove = { fg = p.amber }, + OilChange = { fg = p.tech }, + OilCreate = { fg = p.toxic, bold = true }, + OilDelete = { fg = p.razor, bold = true }, + OilPermissionNone = { fg = p.stealth }, + OilPermissionRead = { fg = p.tech }, + OilPermissionWrite = { fg = p.amber }, + OilPermissionExecute = { fg = p.toxic }, + OilTypeDir = { fg = p.tech }, + OilTypeFile = { fg = p.text }, + OilTypeLink = { fg = p.sacred }, + OilTypeSpecial = { fg = p.razor }, + OilSize = { fg = p.dim }, + OilMtime = { fg = p.stealth }, + + -- PLUGINS: NEOTEST -------------------------------------------------------- + NeotestPassed = { fg = p.toxic }, + NeotestFailed = { fg = p.razor }, + NeotestRunning = { fg = p.amber }, + NeotestSkipped = { fg = p.dim }, + NeotestUnknown = { fg = p.stealth }, + NeotestTest = { fg = p.text }, + NeotestFile = { fg = p.tech }, + NeotestDir = { fg = p.tech, bold = true }, + NeotestNamespace = { fg = p.amber }, + NeotestMarked = { fg = p.razor, bold = true }, + NeotestTarget = { fg = p.razor }, + NeotestAdapterName = { fg = p.sacred, bold = true }, + NeotestWinSelect = { fg = p.tech, bold = true }, + NeotestFocused = { bold = true }, + NeotestIndent = { fg = p.border }, + NeotestExpandMarker = { fg = p.dim }, + NeotestWatching = { fg = p.amber }, + + -- PLUGINS: GRUG-FAR (Search & Replace) ----------------------------------- + GrugFarResultsHeader = { fg = p.ink, bg = p.razor, bold = true }, + GrugFarResultsMatch = { fg = p.void, bg = p.tech, bold = true }, + GrugFarResultsMatchAdded = { fg = p.toxic }, + GrugFarResultsMatchRemoved = { fg = p.razor }, + GrugFarResultsLineNo = { fg = p.dim }, + GrugFarResultsPath = { fg = p.tech, underline = true }, + GrugFarResultsStats = { fg = p.dim }, + GrugFarInputLabel = { fg = p.amber, bold = true }, + GrugFarInputPlaceholder = { fg = p.stealth }, + GrugFarHelpHeader = { fg = p.dim, bold = true }, + GrugFarHelpWinHeader = { fg = p.ink, bg = p.panel, bold = true }, + + -- PLUGINS: TWINNY (AI Ghost Text) ---------------------------------------- + TwinnyAccept = { fg = p.stealth, italic = true }, + TwinnyHint = { fg = p.stealth, italic = true }, + + -- PLUGINS: GITSIGNS (extended) ------------------------------------------- + GitSignsCurrentLineBlame = { fg = p.stealth, italic = true }, + GitSignsAddNr = { fg = p.toxic }, + GitSignsChangeNr = { fg = p.tech }, + GitSignsDeleteNr = { fg = p.razor }, + GitSignsAddLn = { fg = p.toxic, bg = p.panel }, + GitSignsChangeLn = { fg = p.tech, bg = p.panel }, + GitSignsDeleteLn = { fg = p.razor, bg = p.panel }, + GitSignsAddPreview = { fg = p.toxic, bg = p.panel }, + GitSignsDeletePreview = { fg = p.razor, bg = p.panel }, + GitSignsAddInline = { fg = p.void, bg = p.toxic }, + GitSignsDeleteInline = { fg = p.void, bg = p.razor }, + GitSignsChangeInline = { fg = p.void, bg = p.tech }, + GitSignsUntracked = { fg = p.dim }, + + -- PLUGINS: RENDER-MARKDOWN ------------------------------------------------ + RenderMarkdownH1 = { fg = p.razor, bold = true }, + RenderMarkdownH2 = { fg = p.amber, bold = true }, + RenderMarkdownH3 = { fg = p.tech, bold = true }, + RenderMarkdownH4 = { fg = p.toxic, bold = true }, + RenderMarkdownH5 = { fg = p.sacred, bold = true }, + RenderMarkdownH6 = { fg = p.azure, bold = true }, + RenderMarkdownH1Bg = { bg = p.panel }, + RenderMarkdownH2Bg = { bg = p.panel }, + RenderMarkdownH3Bg = { bg = p.panel }, + RenderMarkdownH4Bg = { bg = p.panel }, + RenderMarkdownH5Bg = { bg = p.panel }, + RenderMarkdownH6Bg = { bg = p.panel }, + RenderMarkdownCode = { bg = p.panel }, + RenderMarkdownCodeInline = { fg = p.toxic, bg = p.panel }, + RenderMarkdownBullet = { fg = p.razor }, + RenderMarkdownQuote = { fg = p.stealth, italic = true }, + RenderMarkdownDash = { fg = p.border }, + RenderMarkdownLink = { fg = p.tech, underline = true }, + RenderMarkdownSign = { bg = p.void }, + RenderMarkdownMath = { fg = p.tech }, + RenderMarkdownTableHead = { fg = p.ink, bg = p.razor, bold = true }, + RenderMarkdownTableRow = { fg = p.text }, + RenderMarkdownTableFill = { fg = p.border }, + RenderMarkdownTodo = { fg = p.void, bg = p.amber, bold = true }, + RenderMarkdownUnchecked = { fg = p.stealth }, + RenderMarkdownChecked = { fg = p.toxic }, } for group, highlight in pairs(groups) do @@ -376,6 +723,41 @@ function M.load() end end +-- PLUGINS: LUALINE -------------------------------------------------------- +-- Export lualine theme from palette for use in lualine config +M.lualine = { + normal = { + a = { fg = p.ink, bg = p.razor, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + insert = { + a = { fg = p.ink, bg = p.toxic, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + visual = { + a = { fg = p.ink, bg = p.tech, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + replace = { + a = { fg = p.ink, bg = p.amber, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + command = { + a = { fg = p.ink, bg = p.sacred, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + inactive = { + a = { fg = p.dim, bg = p.panel }, + b = { fg = p.dim, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, +} + M.load() return M \ No newline at end of file diff --git a/dist/tmux/apex-aeon-theme.conf b/dist/tmux/apex-aeon-theme.conf new file mode 100644 index 0000000..3cf0c80 --- /dev/null +++ b/dist/tmux/apex-aeon-theme.conf @@ -0,0 +1,35 @@ +# Apex Aeon — tmux theme +# Generated by the Apex build system. Do not edit. + +# Status bar +set -g status-style "fg=#0a0a0a,bg=#e8e8e8" + +# Status left: session name in red +set -g status-left "#[fg=#0a0a0a,bg=#ff0044,bold] #S #[fg=#e8e8e8,bg=#e8e8e8]" +set -g status-left-length 30 + +# Status right: date/time in dim +set -g status-right "#[fg=#737373,bg=#e8e8e8] %H:%M %d-%b " +set -g status-right-length 30 + +# Window list +set -g window-status-format "#[fg=#737373,bg=#e8e8e8] #I:#W " +set -g window-status-current-format "#[fg=#0a0a0a,bg=#e8e8e8,bold] #I:#W #[fg=#ff0044]▏" + +# Pane borders +set -g pane-border-style "fg=#737373" +set -g pane-active-border-style "fg=#ff0044" + +# Messages +set -g message-style "fg=#007a88,bg=#e8e8e8" +set -g message-command-style "fg=#0a0a0a,bg=#ff0044" + +# Copy mode +set -g mode-style "fg=#0a0a0a,bg=#007a88,bold" + +# Clock +set -g clock-mode-colour "#007a88" + +# Misc +set -g status-position bottom +set -g status-justify left \ No newline at end of file diff --git a/dist/tmux/apex-aeon.conf b/dist/tmux/apex-aeon.conf new file mode 100644 index 0000000..3cf0c80 --- /dev/null +++ b/dist/tmux/apex-aeon.conf @@ -0,0 +1,35 @@ +# Apex Aeon — tmux theme +# Generated by the Apex build system. Do not edit. + +# Status bar +set -g status-style "fg=#0a0a0a,bg=#e8e8e8" + +# Status left: session name in red +set -g status-left "#[fg=#0a0a0a,bg=#ff0044,bold] #S #[fg=#e8e8e8,bg=#e8e8e8]" +set -g status-left-length 30 + +# Status right: date/time in dim +set -g status-right "#[fg=#737373,bg=#e8e8e8] %H:%M %d-%b " +set -g status-right-length 30 + +# Window list +set -g window-status-format "#[fg=#737373,bg=#e8e8e8] #I:#W " +set -g window-status-current-format "#[fg=#0a0a0a,bg=#e8e8e8,bold] #I:#W #[fg=#ff0044]▏" + +# Pane borders +set -g pane-border-style "fg=#737373" +set -g pane-active-border-style "fg=#ff0044" + +# Messages +set -g message-style "fg=#007a88,bg=#e8e8e8" +set -g message-command-style "fg=#0a0a0a,bg=#ff0044" + +# Copy mode +set -g mode-style "fg=#0a0a0a,bg=#007a88,bold" + +# Clock +set -g clock-mode-colour "#007a88" + +# Misc +set -g status-position bottom +set -g status-justify left \ No newline at end of file diff --git a/dist/tmux/apex-neon-theme.conf b/dist/tmux/apex-neon-theme.conf new file mode 100644 index 0000000..c5ce7db --- /dev/null +++ b/dist/tmux/apex-neon-theme.conf @@ -0,0 +1,35 @@ +# Apex Neon — tmux theme +# Generated by the Apex build system. Do not edit. + +# Status bar +set -g status-style "fg=#ededed,bg=#141414" + +# Status left: session name in red +set -g status-left "#[fg=#050505,bg=#ff0044,bold] #S #[fg=#141414,bg=#141414]" +set -g status-left-length 30 + +# Status right: date/time in dim +set -g status-right "#[fg=#737373,bg=#141414] %H:%M %d-%b " +set -g status-right-length 30 + +# Window list +set -g window-status-format "#[fg=#737373,bg=#141414] #I:#W " +set -g window-status-current-format "#[fg=#ededed,bg=#141414,bold] #I:#W #[fg=#ff0044]▏" + +# Pane borders +set -g pane-border-style "fg=#262626" +set -g pane-active-border-style "fg=#ff0044" + +# Messages +set -g message-style "fg=#00eaff,bg=#141414" +set -g message-command-style "fg=#050505,bg=#ff0044" + +# Copy mode +set -g mode-style "fg=#050505,bg=#00eaff,bold" + +# Clock +set -g clock-mode-colour "#00eaff" + +# Misc +set -g status-position bottom +set -g status-justify left \ No newline at end of file diff --git a/dist/tmux/apex-neon.conf b/dist/tmux/apex-neon.conf new file mode 100644 index 0000000..c5ce7db --- /dev/null +++ b/dist/tmux/apex-neon.conf @@ -0,0 +1,35 @@ +# Apex Neon — tmux theme +# Generated by the Apex build system. Do not edit. + +# Status bar +set -g status-style "fg=#ededed,bg=#141414" + +# Status left: session name in red +set -g status-left "#[fg=#050505,bg=#ff0044,bold] #S #[fg=#141414,bg=#141414]" +set -g status-left-length 30 + +# Status right: date/time in dim +set -g status-right "#[fg=#737373,bg=#141414] %H:%M %d-%b " +set -g status-right-length 30 + +# Window list +set -g window-status-format "#[fg=#737373,bg=#141414] #I:#W " +set -g window-status-current-format "#[fg=#ededed,bg=#141414,bold] #I:#W #[fg=#ff0044]▏" + +# Pane borders +set -g pane-border-style "fg=#262626" +set -g pane-active-border-style "fg=#ff0044" + +# Messages +set -g message-style "fg=#00eaff,bg=#141414" +set -g message-command-style "fg=#050505,bg=#ff0044" + +# Copy mode +set -g mode-style "fg=#050505,bg=#00eaff,bold" + +# Clock +set -g clock-mode-colour "#00eaff" + +# Misc +set -g status-position bottom +set -g status-justify left \ No newline at end of file diff --git a/templates/nvim/colors/apex.lua.j2 b/templates/nvim/colors/apex.lua.j2 index 5a52ea6..727b1ea 100644 --- a/templates/nvim/colors/apex.lua.j2 +++ b/templates/nvim/colors/apex.lua.j2 @@ -238,6 +238,353 @@ function M.load() CmpItemKindMethod = { fg = p.azure }, CmpItemKindKeyword = { fg = p.sacred }, CmpItemKindVariable = { fg = p.text }, + + -- PLUGINS: BLINK.CMP (Completion) ---------------------------------------- + BlinkCmpMenu = { fg = p.text, bg = p.panel }, + BlinkCmpMenuBorder = { fg = p.border, bg = p.panel }, + BlinkCmpMenuSelection = { fg = p.ink, bg = p.razor, bold = true }, + BlinkCmpScrollBarThumb = { bg = p.stealth }, + BlinkCmpScrollBarGutter = { bg = p.panel }, + BlinkCmpLabel = { fg = p.text }, + BlinkCmpLabelDeprecated = { fg = p.dim, strikethrough = true }, + BlinkCmpLabelMatch = { fg = p.tech, bold = true }, + BlinkCmpKindText = { fg = p.text }, + BlinkCmpKindMethod = { fg = p.azure }, + BlinkCmpKindFunction = { fg = p.azure }, + BlinkCmpKindConstructor = { fg = p.amber }, + BlinkCmpKindField = { fg = p.text }, + BlinkCmpKindVariable = { fg = p.text }, + BlinkCmpKindClass = { fg = p.amber }, + BlinkCmpKindInterface = { fg = p.amber }, + BlinkCmpKindModule = { fg = p.amber }, + BlinkCmpKindProperty = { fg = p.text }, + BlinkCmpKindUnit = { fg = p.tech }, + BlinkCmpKindValue = { fg = p.tech }, + BlinkCmpKindEnum = { fg = p.amber }, + BlinkCmpKindKeyword = { fg = p.sacred }, + BlinkCmpKindSnippet = { fg = p.toxic }, + BlinkCmpKindColor = { fg = p.tech }, + BlinkCmpKindFile = { fg = p.text }, + BlinkCmpKindReference = { fg = p.tech }, + BlinkCmpKindFolder = { fg = p.text }, + BlinkCmpKindEnumMember = { fg = p.tech }, + BlinkCmpKindConstant = { fg = p.tech }, + BlinkCmpKindStruct = { fg = p.amber }, + BlinkCmpKindEvent = { fg = p.amber }, + BlinkCmpKindOperator = { fg = p.text }, + BlinkCmpKindTypeParameter = { fg = p.amber }, + BlinkCmpGhostText = { fg = p.stealth, italic = true }, + BlinkCmpDoc = { fg = p.text, bg = p.panel }, + BlinkCmpDocBorder = { fg = p.border, bg = p.panel }, + BlinkCmpDocSeparator = { fg = p.border, bg = p.panel }, + BlinkCmpDocCursorLine = { bg = p.border }, + BlinkCmpSignatureHelp = { fg = p.text, bg = p.panel }, + BlinkCmpSignatureHelpBorder = { fg = p.border, bg = p.panel }, + BlinkCmpSignatureHelpActiveParameter = { fg = p.ink, bg = p.tech, bold = true }, + BlinkCmpSource = { fg = p.dim }, + + -- PLUGINS: BUFFERLINE ----------------------------------------------------- + BufferLineBackground = { fg = p.dim, bg = p.panel }, + BufferLineFill = { bg = p.panel }, + BufferLineBuffer = { fg = p.dim, bg = p.panel }, + BufferLineBufferSelected = { fg = p.text, bg = p.void, bold = true }, + BufferLineBufferVisible = { fg = p.dim, bg = p.panel }, + BufferLineTab = { fg = p.dim, bg = p.panel }, + BufferLineTabSelected = { fg = p.text, bg = p.void, bold = true }, + BufferLineTabClose = { fg = p.razor, bg = p.panel }, + BufferLineModified = { fg = p.tech, bg = p.panel }, + BufferLineModifiedSelected = { fg = p.tech, bg = p.void }, + BufferLineModifiedVisible = { fg = p.tech, bg = p.panel }, + BufferLineSeparator = { fg = p.border, bg = p.panel }, + BufferLineSeparatorSelected = { fg = p.border, bg = p.void }, + BufferLineSeparatorVisible = { fg = p.border, bg = p.panel }, + BufferLineIndicatorSelected = { fg = p.razor, bg = p.void }, + BufferLineCloseButton = { fg = p.dim, bg = p.panel }, + BufferLineCloseButtonSelected = { fg = p.razor, bg = p.void }, + BufferLineCloseButtonVisible = { fg = p.dim, bg = p.panel }, + BufferLineDiagnostic = { fg = p.dim, bg = p.panel }, + BufferLineDiagnosticSelected = { fg = p.dim, bg = p.void }, + BufferLineError = { fg = p.alert, bg = p.panel }, + BufferLineErrorSelected = { fg = p.alert, bg = p.void, bold = true }, + BufferLineWarning = { fg = p.amber, bg = p.panel }, + BufferLineWarningSelected = { fg = p.amber, bg = p.void, bold = true }, + BufferLineInfo = { fg = p.tech, bg = p.panel }, + BufferLineInfoSelected = { fg = p.tech, bg = p.void, bold = true }, + BufferLineHint = { fg = p.dim, bg = p.panel }, + BufferLineHintSelected = { fg = p.dim, bg = p.void, bold = true }, + BufferLinePick = { fg = p.razor, bg = p.panel, bold = true }, + BufferLinePickSelected = { fg = p.razor, bg = p.void, bold = true }, + BufferLinePickVisible = { fg = p.razor, bg = p.panel, bold = true }, + + -- PLUGINS: WHICH-KEY ------------------------------------------------------ + WhichKey = { fg = p.razor, bold = true }, + WhichKeySeparator = { fg = p.stealth }, + WhichKeyGroup = { fg = p.tech }, + WhichKeyDesc = { fg = p.text }, + WhichKeyFloat = { bg = p.panel }, + WhichKeyBorder = { fg = p.border, bg = p.panel }, + WhichKeyTitle = { fg = p.ink, bg = p.razor, bold = true }, + WhichKeyNormal = { fg = p.text, bg = p.panel }, + WhichKeyValue = { fg = p.dim }, + WhichKeyIcon = { fg = p.azure }, + WhichKeyIconAzure = { fg = p.azure }, + WhichKeyIconGreen = { fg = p.toxic }, + WhichKeyIconYellow = { fg = p.amber }, + WhichKeyIconRed = { fg = p.razor }, + WhichKeyIconPurple = { fg = p.sacred }, + WhichKeyIconCyan = { fg = p.tech }, + + -- PLUGINS: TROUBLE -------------------------------------------------------- + TroubleNormal = { fg = p.text, bg = p.void }, + TroubleNormalNC = { fg = p.dim, bg = p.void }, + TroubleText = { fg = p.text }, + TroubleCount = { fg = p.ink, bg = p.razor, bold = true }, + TroubleError = { fg = p.alert }, + TroubleWarning = { fg = p.amber }, + TroubleHint = { fg = p.dim }, + TroubleInfo = { fg = p.tech }, + TroubleSource = { fg = p.dim }, + TroubleCode = { fg = p.stealth }, + TroubleLocation = { fg = p.dim }, + TroubleFile = { fg = p.tech, bold = true }, + TroubleIndent = { fg = p.border }, + TroublePos = { fg = p.dim }, + TroubleSignError = { fg = p.alert }, + TroubleSignWarning = { fg = p.amber }, + TroubleSignHint = { fg = p.dim }, + TroubleSignInfo = { fg = p.tech }, + TroublePreview = { fg = p.ink, bg = p.razor }, + TroubleFocusText = { fg = p.text, bold = true }, + + -- PLUGINS: INDENT-BLANKLINE ----------------------------------------------- + IblIndent = { fg = p.border }, + IblScope = { fg = p.stealth }, + IblWhitespace = { fg = p.border }, + + -- PLUGINS: NEOGIT --------------------------------------------------------- + NeogitBranch = { fg = p.razor, bold = true }, + NeogitRemote = { fg = p.tech }, + NeogitHunkHeader = { fg = p.text, bg = p.panel, bold = true }, + NeogitHunkHeaderHighlight = { fg = p.ink, bg = p.tech, bold = true }, + NeogitDiffAdd = { fg = p.toxic, bg = p.void }, + NeogitDiffDelete = { fg = p.razor, bg = p.void }, + NeogitDiffContext = { fg = p.dim, bg = p.void }, + NeogitDiffAddHighlight = { fg = p.toxic, bg = p.panel }, + NeogitDiffDeleteHighlight = { fg = p.razor, bg = p.panel }, + NeogitDiffContextHighlight = { fg = p.text, bg = p.panel }, + NeogitCommitViewHeader = { fg = p.ink, bg = p.razor, bold = true }, + NeogitFilePath = { fg = p.tech, underline = true }, + NeogitDiffHeader = { fg = p.amber, bold = true }, + NeogitDiffHeaderHighlight = { fg = p.ink, bg = p.amber, bold = true }, + NeogitObjectId = { fg = p.dim }, + NeogitStashes = { fg = p.sacred }, + NeogitRebaseDone = { fg = p.toxic }, + NeogitFold = { fg = p.stealth }, + + -- PLUGINS: AERIAL (Symbols Outline) -------------------------------------- + AerialLine = { fg = p.ink, bg = p.razor }, + AerialLineNC = { fg = p.dim, bg = p.panel }, + AerialNormal = { fg = p.text, bg = p.void }, + AerialGuide = { fg = p.border }, + AerialClass = { fg = p.amber }, + AerialClassIcon = { fg = p.amber }, + AerialFunction = { fg = p.azure }, + AerialFunctionIcon = { fg = p.azure }, + AerialMethod = { fg = p.azure }, + AerialMethodIcon = { fg = p.azure }, + AerialConstructor = { fg = p.amber }, + AerialField = { fg = p.text }, + AerialVariable = { fg = p.text }, + AerialEnum = { fg = p.amber }, + AerialEnumIcon = { fg = p.amber }, + AerialInterface = { fg = p.amber }, + AerialModule = { fg = p.amber }, + AerialNamespace = { fg = p.amber }, + AerialPackage = { fg = p.amber }, + AerialProperty = { fg = p.text }, + AerialStruct = { fg = p.amber }, + AerialType = { fg = p.amber }, + AerialTypeParameter = { fg = p.amber }, + AerialConstant = { fg = p.tech }, + AerialString = { fg = p.toxic }, + AerialNumber = { fg = p.tech }, + AerialBoolean = { fg = p.tech }, + AerialKey = { fg = p.sacred }, + AerialKeyword = { fg = p.sacred }, + AerialOperator = { fg = p.text }, + AerialNull = { fg = p.dim }, + AerialArray = { fg = p.tech }, + AerialObject = { fg = p.amber }, + AerialEvent = { fg = p.amber }, + + -- PLUGINS: DAP-UI --------------------------------------------------------- + DapUIScope = { fg = p.tech, bold = true }, + DapUIType = { fg = p.amber }, + DapUIDecoration = { fg = p.border }, + DapUIThread = { fg = p.toxic }, + DapUIStoppedThread = { fg = p.razor, bold = true }, + DapUICurrentFrameName = { fg = p.razor, bold = true }, + DapUISource = { fg = p.dim }, + DapUILineNumber = { fg = p.stealth }, + DapUIFloatBorder = { fg = p.border, bg = p.panel }, + DapUIFloatNormal = { fg = p.text, bg = p.panel }, + DapUIWatchesEmpty = { fg = p.dim }, + DapUIWatchesValue = { fg = p.toxic }, + DapUIWatchesError = { fg = p.alert }, + DapUIBreakpointsPath = { fg = p.tech }, + DapUIBreakpointsInfo = { fg = p.dim }, + DapUIBreakpointsCurrentLine = { fg = p.razor, bold = true }, + DapUIBreakpointsDisabledLine = { fg = p.stealth }, + DapUIEndofBuffer = { fg = p.void }, + DapUIModifiedValue = { fg = p.amber, bold = true }, + DapUIStop = { fg = p.razor }, + DapUIStepOver = { fg = p.tech }, + DapUIStepInto = { fg = p.tech }, + DapUIStepBack = { fg = p.tech }, + DapUIStepOut = { fg = p.tech }, + DapUIRestart = { fg = p.toxic }, + DapUIUnavailable = { fg = p.stealth }, + DapUIPlayPause = { fg = p.toxic }, + + -- PLUGINS: DAP VIRTUAL TEXT ----------------------------------------------- + NvimDapVirtualText = { fg = p.dim, italic = true }, + NvimDapVirtualTextChanged = { fg = p.amber, italic = true }, + NvimDapVirtualTextError = { fg = p.alert, italic = true }, + NvimDapVirtualTextInfo = { fg = p.tech, italic = true }, + + -- PLUGINS: NVIM-NOTIFY ---------------------------------------------------- + NotifyERRORBorder = { fg = p.razor }, + NotifyWARNBorder = { fg = p.amber }, + NotifyINFOBorder = { fg = p.tech }, + NotifyDEBUGBorder = { fg = p.stealth }, + NotifyTRACEBorder = { fg = p.sacred }, + NotifyERRORIcon = { fg = p.razor }, + NotifyWARNIcon = { fg = p.amber }, + NotifyINFOIcon = { fg = p.tech }, + NotifyDEBUGIcon = { fg = p.stealth }, + NotifyTRACEIcon = { fg = p.sacred }, + NotifyERRORTitle = { fg = p.razor, bold = true }, + NotifyWARNTitle = { fg = p.amber, bold = true }, + NotifyINFOTitle = { fg = p.tech, bold = true }, + NotifyDEBUGTitle = { fg = p.stealth, bold = true }, + NotifyTRACETitle = { fg = p.sacred, bold = true }, + NotifyERRORBody = { fg = p.text, bg = p.panel }, + NotifyWARNBody = { fg = p.text, bg = p.panel }, + NotifyINFOBody = { fg = p.text, bg = p.panel }, + NotifyDEBUGBody = { fg = p.dim, bg = p.panel }, + NotifyTRACEBody = { fg = p.dim, bg = p.panel }, + + -- PLUGINS: SATELLITE (Scrollbar) ----------------------------------------- + SatelliteBar = { bg = p.panel }, + SatelliteCursor = { fg = p.razor }, + SatellitePosition = { fg = p.dim }, + SatelliteError = { fg = p.alert }, + SatelliteWarning = { fg = p.amber }, + SatelliteHint = { fg = p.dim }, + SatelliteInfo = { fg = p.tech }, + SatelliteSearch = { fg = p.tech }, + SatelliteGit = { fg = p.toxic }, + SatelliteMark = { fg = p.amber }, + + -- PLUGINS: OIL.NVIM (File Explorer) -------------------------------------- + OilDir = { fg = p.tech, bold = true }, + OilDirIcon = { fg = p.tech }, + OilLink = { fg = p.sacred, italic = true }, + OilLinkTarget = { fg = p.sacred }, + OilCopy = { fg = p.amber, bold = true }, + OilMove = { fg = p.amber }, + OilChange = { fg = p.tech }, + OilCreate = { fg = p.toxic, bold = true }, + OilDelete = { fg = p.razor, bold = true }, + OilPermissionNone = { fg = p.stealth }, + OilPermissionRead = { fg = p.tech }, + OilPermissionWrite = { fg = p.amber }, + OilPermissionExecute = { fg = p.toxic }, + OilTypeDir = { fg = p.tech }, + OilTypeFile = { fg = p.text }, + OilTypeLink = { fg = p.sacred }, + OilTypeSpecial = { fg = p.razor }, + OilSize = { fg = p.dim }, + OilMtime = { fg = p.stealth }, + + -- PLUGINS: NEOTEST -------------------------------------------------------- + NeotestPassed = { fg = p.toxic }, + NeotestFailed = { fg = p.razor }, + NeotestRunning = { fg = p.amber }, + NeotestSkipped = { fg = p.dim }, + NeotestUnknown = { fg = p.stealth }, + NeotestTest = { fg = p.text }, + NeotestFile = { fg = p.tech }, + NeotestDir = { fg = p.tech, bold = true }, + NeotestNamespace = { fg = p.amber }, + NeotestMarked = { fg = p.razor, bold = true }, + NeotestTarget = { fg = p.razor }, + NeotestAdapterName = { fg = p.sacred, bold = true }, + NeotestWinSelect = { fg = p.tech, bold = true }, + NeotestFocused = { bold = true }, + NeotestIndent = { fg = p.border }, + NeotestExpandMarker = { fg = p.dim }, + NeotestWatching = { fg = p.amber }, + + -- PLUGINS: GRUG-FAR (Search & Replace) ----------------------------------- + GrugFarResultsHeader = { fg = p.ink, bg = p.razor, bold = true }, + GrugFarResultsMatch = { fg = p.void, bg = p.tech, bold = true }, + GrugFarResultsMatchAdded = { fg = p.toxic }, + GrugFarResultsMatchRemoved = { fg = p.razor }, + GrugFarResultsLineNo = { fg = p.dim }, + GrugFarResultsPath = { fg = p.tech, underline = true }, + GrugFarResultsStats = { fg = p.dim }, + GrugFarInputLabel = { fg = p.amber, bold = true }, + GrugFarInputPlaceholder = { fg = p.stealth }, + GrugFarHelpHeader = { fg = p.dim, bold = true }, + GrugFarHelpWinHeader = { fg = p.ink, bg = p.panel, bold = true }, + + -- PLUGINS: TWINNY (AI Ghost Text) ---------------------------------------- + TwinnyAccept = { fg = p.stealth, italic = true }, + TwinnyHint = { fg = p.stealth, italic = true }, + + -- PLUGINS: GITSIGNS (extended) ------------------------------------------- + GitSignsCurrentLineBlame = { fg = p.stealth, italic = true }, + GitSignsAddNr = { fg = p.toxic }, + GitSignsChangeNr = { fg = p.tech }, + GitSignsDeleteNr = { fg = p.razor }, + GitSignsAddLn = { fg = p.toxic, bg = p.panel }, + GitSignsChangeLn = { fg = p.tech, bg = p.panel }, + GitSignsDeleteLn = { fg = p.razor, bg = p.panel }, + GitSignsAddPreview = { fg = p.toxic, bg = p.panel }, + GitSignsDeletePreview = { fg = p.razor, bg = p.panel }, + GitSignsAddInline = { fg = p.void, bg = p.toxic }, + GitSignsDeleteInline = { fg = p.void, bg = p.razor }, + GitSignsChangeInline = { fg = p.void, bg = p.tech }, + GitSignsUntracked = { fg = p.dim }, + + -- PLUGINS: RENDER-MARKDOWN ------------------------------------------------ + RenderMarkdownH1 = { fg = p.razor, bold = true }, + RenderMarkdownH2 = { fg = p.amber, bold = true }, + RenderMarkdownH3 = { fg = p.tech, bold = true }, + RenderMarkdownH4 = { fg = p.toxic, bold = true }, + RenderMarkdownH5 = { fg = p.sacred, bold = true }, + RenderMarkdownH6 = { fg = p.azure, bold = true }, + RenderMarkdownH1Bg = { bg = p.panel }, + RenderMarkdownH2Bg = { bg = p.panel }, + RenderMarkdownH3Bg = { bg = p.panel }, + RenderMarkdownH4Bg = { bg = p.panel }, + RenderMarkdownH5Bg = { bg = p.panel }, + RenderMarkdownH6Bg = { bg = p.panel }, + RenderMarkdownCode = { bg = p.panel }, + RenderMarkdownCodeInline = { fg = p.toxic, bg = p.panel }, + RenderMarkdownBullet = { fg = p.razor }, + RenderMarkdownQuote = { fg = p.stealth, italic = true }, + RenderMarkdownDash = { fg = p.border }, + RenderMarkdownLink = { fg = p.tech, underline = true }, + RenderMarkdownSign = { bg = p.void }, + RenderMarkdownMath = { fg = p.tech }, + RenderMarkdownTableHead = { fg = p.ink, bg = p.razor, bold = true }, + RenderMarkdownTableRow = { fg = p.text }, + RenderMarkdownTableFill = { fg = p.border }, + RenderMarkdownTodo = { fg = p.void, bg = p.amber, bold = true }, + RenderMarkdownUnchecked = { fg = p.stealth }, + RenderMarkdownChecked = { fg = p.toxic }, } for group, highlight in pairs(groups) do @@ -376,6 +723,41 @@ function M.load() end end +-- PLUGINS: LUALINE -------------------------------------------------------- +-- Export lualine theme from palette for use in lualine config +M.lualine = { + normal = { + a = { fg = p.ink, bg = p.razor, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + insert = { + a = { fg = p.ink, bg = p.toxic, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + visual = { + a = { fg = p.ink, bg = p.tech, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + replace = { + a = { fg = p.ink, bg = p.amber, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + command = { + a = { fg = p.ink, bg = p.sacred, gui = "bold" }, + b = { fg = p.text, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, + inactive = { + a = { fg = p.dim, bg = p.panel }, + b = { fg = p.dim, bg = p.panel }, + c = { fg = p.dim, bg = p.void }, + }, +} + M.load() return M diff --git a/templates/tmux/apex.conf.j2 b/templates/tmux/apex.conf.j2 new file mode 100644 index 0000000..5e5c047 --- /dev/null +++ b/templates/tmux/apex.conf.j2 @@ -0,0 +1,35 @@ +# {{ scheme }} — tmux theme +# Generated by the Apex build system. Do not edit. + +# Status bar +set -g status-style "fg={{ palette.foreground }},bg={{ ui.panel }}" + +# Status left: session name in red +set -g status-left "#[fg={{ palette.selection_fg }},bg={{ palette.cursor }},bold] #S #[fg={{ ui.panel }},bg={{ ui.panel }}]" +set -g status-left-length 30 + +# Status right: date/time in dim +set -g status-right "#[fg={{ ui.dim }},bg={{ ui.panel }}] %H:%M %d-%b " +set -g status-right-length 30 + +# Window list +set -g window-status-format "#[fg={{ ui.dim }},bg={{ ui.panel }}] #I:#W " +set -g window-status-current-format "#[fg={{ palette.foreground }},bg={{ ui.panel }},bold] #I:#W #[fg={{ palette.cursor }}]▏" + +# Pane borders +set -g pane-border-style "fg={{ ui.border }}" +set -g pane-active-border-style "fg={{ palette.cursor }}" + +# Messages +set -g message-style "fg={{ palette.info }},bg={{ ui.panel }}" +set -g message-command-style "fg={{ palette.selection_fg }},bg={{ palette.cursor }}" + +# Copy mode +set -g mode-style "fg={{ palette.selection_fg }},bg={{ palette.info }},bold" + +# Clock +set -g clock-mode-colour "{{ palette.info }}" + +# Misc +set -g status-position bottom +set -g status-justify left diff --git a/templates/tmux/meta.yaml b/templates/tmux/meta.yaml new file mode 100644 index 0000000..94f3e2b --- /dev/null +++ b/templates/tmux/meta.yaml @@ -0,0 +1,2 @@ +app: tmux +strategy: individual