feat: cool colorschemes and themes

This commit is contained in:
Ray Andrew 2025-11-30 01:33:41 -06:00
parent 0cf7e16710
commit c119257a02
Signed by: rayandrew
SSH key fingerprint: SHA256:XYrYrxF0Z3A72n8P/p6mqPRNQZT22F88XcLsG+kX4xw
14 changed files with 825 additions and 28 deletions

View file

@ -134,10 +134,22 @@ on-focus-changed = [
if.app-id = 'com.apple.ActivityMonitor'
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.openai.chat'
run = ['move-node-to-workspace 3']
[[on-window-detected]]
if.app-id = 'com.anthropic.claudefordesktop'
run = ['move-node-to-workspace 3']
[[on-window-detected]]
if.app-id = 'com.1password.1password'
run = ['move-node-to-workspace 5']
[[on-window-detected]]
if.app-id = 'com.apple.MobileSMS'
run = ['move-node-to-workspace 5']
[[on-window-detected]]
if.app-id = 'com.spotify.client'
run = ['move-node-to-workspace 7']
@ -153,3 +165,15 @@ on-focus-changed = [
[[on-window-detected]]
if.app-id = 'com.tinyspeck.slackmacgap'
run = ['move-node-to-workspace 9']
[[on-window-detected]]
if.app-id = 'org.mozilla.firefox'
run = ['move-node-to-workspace 10']
[[on-window-detected]]
if.app-id = 'com.apple.Safari'
run = ['move-node-to-workspace 10']
[[on-window-detected]]
if.app-id = 'org.zotero.zotero'
run = ['move-node-to-workspace 6']

View file

@ -8,12 +8,14 @@ gtk-adwaita = false
font-family = Consolas
font-size = 14
app-notifications = no-clipboard-copy
theme = nightfox
macos-option-as-alt = left
keybind = alt+left=unbind
keybind = alt+right=unbind
# theme = nightfox
theme = noctis-azureus
# theme = gruber-darker
# theme = xcodelighthc
# theme = zenburned

View file

@ -0,0 +1,59 @@
# Noctis
# Based on https://github.com/liviuschera/noctis
# Terminal Colors
# ---------------------------
# terminal.background
background = 03191b
# terminal.foreground
foreground = b2cacd
# Cursor
# ---------------------------
# terminalCursor.foreground
cursor-color = b2cacd
# Selection
# ---------------------------
# selection.background
selection-background = 107684
# terminal.foreground
selection-foreground = b2cacd
# ANSI Colors
# ---------------------------
# Regular Colors
# terminal.ansiBlack
palette = 0=#324a4d
# terminal.ansiRed
palette = 1=#e66533
# terminal.ansiGreen
palette = 2=#49e9a6
# terminal.ansiYellow
palette = 3=#e4b781
# terminal.ansiBlue
palette = 4=#49ace9
# terminal.ansiMagenta
palette = 5=#df769b
# terminal.ansiCyan
palette = 6=#49d6e9
# terminal.ansiWhite
palette = 7=#b2cacd
# Bright Colors
# terminal.ansiBrightBlack
palette = 8=#47686c
# terminal.ansiBrightRed
palette = 9=#e97749
# terminal.ansiBrightGreen
palette = 10=#60ebb1
# terminal.ansiBrightYellow
palette = 11=#e69533
# terminal.ansiBrightBlue
palette = 12=#60b6eb
# terminal.ansiBrightMagenta
palette = 13=#e798b3
# terminal.ansiBrightCyan
palette = 14=#60dbeb
# terminal.ansiBrightWhite
palette = 15=#c1d4d7

View file

@ -0,0 +1,59 @@
# Noctis Azureus
# Based on https://github.com/liviuschera/noctis
# Terminal Colors
# ---------------------------
# terminal.background
background = 051b29
# terminal.foreground
foreground = becfda
# Cursor
# ---------------------------
# terminalCursor.foreground
cursor-color = becfda
# Selection
# ---------------------------
# selection.background
selection-background = 1679b6
# terminal.foreground
selection-foreground = becfda
# ANSI Colors
# ---------------------------
# Regular Colors
# terminal.ansiBlack
palette = 0=#28353e
# terminal.ansiRed
palette = 1=#e66533
# terminal.ansiGreen
palette = 2=#49e9a6
# terminal.ansiYellow
palette = 3=#e4b781
# terminal.ansiBlue
palette = 4=#49ace9
# terminal.ansiMagenta
palette = 5=#df769b
# terminal.ansiCyan
palette = 6=#49d6e9
# terminal.ansiWhite
palette = 7=#aec3d0
# Bright Colors
# terminal.ansiBrightBlack
palette = 8=#475e6c
# terminal.ansiBrightRed
palette = 9=#e97749
# terminal.ansiBrightGreen
palette = 10=#60ebb1
# terminal.ansiBrightYellow
palette = 11=#e69533
# terminal.ansiBrightBlue
palette = 12=#60b6eb
# terminal.ansiBrightMagenta
palette = 13=#e798b3
# terminal.ansiBrightCyan
palette = 14=#60dbeb
# terminal.ansiBrightWhite
palette = 15=#becfda

View file

@ -0,0 +1,49 @@
-- Noctis palette (original)
-- Source: https://github.com/liviuschera/noctis
local palette = {
-- UI backgrounds
bg = '#052529',
bg_dark = '#041d20',
bg_darker = '#03191b',
bg_float = '#083d44',
bg_highlight = '#0a4a52',
bg_visual = '#169fb1',
-- Diff backgrounds
diff_add = '#16b67327',
diff_delete = '#e6653341',
diff_change = '#169fb133',
-- Foreground
fg = '#b2cacd',
fg_dark = '#a5b5b5',
fg_gutter = '#4e6b6e',
-- Syntax colors (from tokenColors)
comment = '#5b858b',
keyword = '#df769b',
tag = '#e66533',
variable = '#e4b781',
string = '#49e9a6',
string_escape = '#16b673',
number = '#7060eb',
func = '#16a3b6',
type = '#d67e5c',
constant = '#d5971a',
support = '#49d6e9',
misc = '#49ace9',
error = '#e34e1c',
warning = '#ffa857',
info = '#49ace9',
hint = '#16b673',
-- UI accents
border = '#083d44',
cursor = '#85efff',
search = '#49e9a6',
match = '#e4b781',
}
-- Fix diff backgrounds (remove alpha, blend with bg)
palette.diff_add = '#1a3328'
palette.diff_delete = '#3d2a2a'
palette.diff_change = '#153a5b'
require('raytheme').load(palette, 'noctis')

View file

@ -0,0 +1,44 @@
-- Noctis Azureus palette
-- Source: https://github.com/liviuschera/noctis
local palette = {
-- UI backgrounds
bg = '#07273b',
bg_dark = '#051b29',
bg_darker = '#062132',
bg_float = '#09334e',
bg_highlight = '#0c3f5f',
bg_visual = '#1679b6',
-- Diff backgrounds
diff_add = '#1a3328',
diff_delete = '#3d2a2a',
diff_change = '#153a5b',
-- Foreground
fg = '#becfda',
fg_dark = '#9fb6c6',
fg_gutter = '#4d6c80',
-- Syntax colors
comment = '#5988a6',
keyword = '#df769b',
tag = '#e66533',
variable = '#e4b781',
string = '#49e9a6',
string_escape = '#16b673',
number = '#7060eb',
func = '#16a3b6',
type = '#d67e5c',
constant = '#d5971a',
support = '#49d6e9',
misc = '#49ace9',
error = '#e34e1c',
warning = '#ffa857',
info = '#49ace9',
hint = '#16b673',
-- UI accents
border = '#09334e',
cursor = '#b3e2ff',
search = '#40bf6a',
match = '#e4b781',
}
require('raytheme').load(palette, 'noctis_azureus')

View file

@ -0,0 +1,44 @@
-- Noctis Azureus Ghostty palette
-- Based on https://github.com/EastSun5566/ghostty-noctis-themes
local palette = {
-- UI backgrounds (from ghostty theme)
bg = '#051b29',
bg_dark = '#041520',
bg_darker = '#030f18',
bg_float = '#07273b',
bg_highlight = '#0c3f5f',
bg_visual = '#1679b6',
-- Diff backgrounds
diff_add = '#1a3328',
diff_delete = '#3d2a2a',
diff_change = '#153a5b',
-- Foreground
fg = '#becfda',
fg_dark = '#aec3d0',
fg_gutter = '#475e6c',
-- Syntax colors (from terminal palette)
comment = '#475e6c', -- bright black
keyword = '#df769b', -- magenta
tag = '#e66533', -- red
variable = '#e4b781', -- yellow
string = '#49e9a6', -- green
string_escape = '#60ebb1', -- bright green
number = '#49ace9', -- blue
func = '#49d6e9', -- cyan
type = '#e97749', -- bright red
constant = '#e69533', -- bright yellow
support = '#60dbeb', -- bright cyan
misc = '#60b6eb', -- bright blue
error = '#e66533', -- red
warning = '#e4b781', -- yellow
info = '#49ace9', -- blue
hint = '#49e9a6', -- green
-- UI accents
border = '#28353e', -- black
cursor = '#becfda',
search = '#49e9a6',
match = '#e4b781',
}
require('raytheme').load(palette, 'noctis_azureus_ghostty')

View file

@ -0,0 +1,44 @@
-- Noctis Ghostty palette
-- Based on https://github.com/EastSun5566/ghostty-noctis-themes
local palette = {
-- UI backgrounds (from ghostty theme)
bg = '#03191b',
bg_dark = '#021314',
bg_darker = '#010e0f',
bg_float = '#0a2628',
bg_highlight = '#107684',
bg_visual = '#107684',
-- Diff backgrounds
diff_add = '#1a3328',
diff_delete = '#3d2a2a',
diff_change = '#153a5b',
-- Foreground
fg = '#b2cacd',
fg_dark = '#c1d4d7',
fg_gutter = '#47686c',
-- Syntax colors (from terminal palette)
comment = '#47686c', -- bright black
keyword = '#df769b', -- magenta
tag = '#e66533', -- red
variable = '#e4b781', -- yellow
string = '#49e9a6', -- green
string_escape = '#60ebb1', -- bright green
number = '#49ace9', -- blue
func = '#49d6e9', -- cyan
type = '#e97749', -- bright red
constant = '#e69533', -- bright yellow
support = '#60dbeb', -- bright cyan
misc = '#60b6eb', -- bright blue
error = '#e66533', -- red
warning = '#e4b781', -- yellow
info = '#49ace9', -- blue
hint = '#49e9a6', -- green
-- UI accents
border = '#324a4d', -- black
cursor = '#b2cacd',
search = '#49e9a6',
match = '#e4b781',
}
require('raytheme').load(palette, 'noctis_ghostty')

View file

@ -20,6 +20,7 @@ vim.opt.inccommand = 'split'
vim.opt.autoread = true
vim.opt.cursorline = true
vim.opt.scrolloff = 10
vim.opt.termguicolors = true
local path_package = vim.fn.stdpath 'data' .. '/site/'
local mini_path = path_package .. 'pack/deps/start/mini.nvim'
@ -37,7 +38,6 @@ add 'folke/snacks.nvim'
add 'stevearc/quicker.nvim'
add 'stevearc/oil.nvim'
add 'A7Lavinraj/fyler.nvim'
add 'EdenEast/nightfox.nvim'
add 'williamboman/mason.nvim'
add 'williamboman/mason-lspconfig.nvim'
add 'neovim/nvim-lspconfig'
@ -57,7 +57,14 @@ add 'aserowy/tmux.nvim'
add 'NMAC427/guess-indent.nvim'
add 'wakatime/vim-wakatime'
-- color themes
add 'EdenEast/nightfox.nvim'
now(function()
require('mini.statusline').setup {
use_icons = true,
}
require('mini.icons').setup {
extension = {
lua = { glyph = '󰢱', hl = 'MiniIconsAzure' },
@ -70,8 +77,14 @@ now(function()
directory = { glyph = '󰉋', hl = 'MiniIconsBlue' },
},
}
require('nightfox').setup {}
vim.cmd 'colorscheme nightfox'
-- require('nightfox').setup {}
-- vim.cmd.colorscheme 'nightfox'
require('raytheme').setup {
transparent = false,
italic_comments = true,
bold_keywords = false,
}
vim.cmd.colorscheme 'noctis_azureus_ghostty'
end)
later(function()
@ -382,7 +395,7 @@ later(function()
vim.keymap.set('n', 'gai', function() require('snacks').picker.lsp_incoming_calls() end, vim.tbl_extend('force', opts, { desc = 'C[a]lls Incoming' }))
vim.keymap.set('n', 'gao', function() require('snacks').picker.lsp_outgoing_calls() end, vim.tbl_extend('force', opts, { desc = 'C[a]lls Outgoing' }))
vim.keymap.set('n', 'K', vim.lsp.buf.hover, vim.tbl_extend('force', opts, { desc = 'Hover documentation (press K again to focus)' }))
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, vim.tbl_extend('force', opts, { desc = 'Signature help' }))
-- vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, vim.tbl_extend('force', opts, { desc = 'Signature help' }))
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, vim.tbl_extend('force', opts, { desc = 'Rename symbol' }))
vim.keymap.set({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, vim.tbl_extend('force', opts, { desc = 'Code action' }))
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, vim.tbl_extend('force', opts, { desc = 'Previous diagnostic' }))

View file

@ -0,0 +1,424 @@
-- raytheme.lua - Personal colorscheme framework
-- A theme engine that applies palettes defined in colors/
local M = {}
---@class RaythemePalette
---@field bg string
---@field bg_dark string
---@field bg_darker string
---@field bg_float string
---@field bg_highlight string
---@field bg_visual string
---@field diff_add string
---@field diff_delete string
---@field diff_change string
---@field fg string
---@field fg_dark string
---@field fg_gutter string
---@field comment string
---@field keyword string
---@field tag string
---@field variable string
---@field string string
---@field string_escape string
---@field number string
---@field func string
---@field type string
---@field constant string
---@field support string
---@field misc string
---@field error string
---@field warning string
---@field info string
---@field hint string
---@field border string
---@field cursor string
---@field search string
---@field match string
---@class RaythemeConfig
---@field transparent boolean
---@field italic_comments boolean
---@field bold_keywords boolean
---@field overrides? table<string, vim.api.keyset.highlight>
---@type RaythemeConfig
M.defaults = {
transparent = false,
italic_comments = true,
bold_keywords = false,
overrides = {},
}
---@type RaythemeConfig?
M.config = nil
---@type RaythemePalette?
M.palette = nil
local function hi(group, opts) vim.api.nvim_set_hl(0, group, opts) end
---@param c RaythemePalette
---@param opts RaythemeConfig
local function apply_highlights(c, opts)
local bg = opts.transparent and 'NONE' or c.bg
local bg_dark = opts.transparent and 'NONE' or c.bg_dark
local bg_darker = opts.transparent and 'NONE' or c.bg_darker
local comment_style = opts.italic_comments and { fg = c.comment, italic = true } or { fg = c.comment }
local keyword_style = opts.bold_keywords and { fg = c.keyword, bold = true } or { fg = c.keyword }
-- Editor UI
hi('Normal', { fg = c.fg, bg = bg })
hi('NormalFloat', { fg = c.fg, bg = c.bg_float })
hi('FloatBorder', { fg = c.border, bg = c.bg_float })
hi('Cursor', { fg = c.bg, bg = c.cursor })
hi('CursorLine', { bg = c.bg_float })
hi('CursorColumn', { bg = c.bg_float })
hi('ColorColumn', { bg = bg_dark })
hi('LineNr', { fg = c.fg_gutter })
hi('CursorLineNr', { fg = c.misc, bold = true })
hi('SignColumn', { fg = c.fg_gutter, bg = bg })
hi('VertSplit', { fg = c.border })
hi('WinSeparator', { fg = c.border })
hi('Folded', { fg = c.comment, bg = bg_dark })
hi('FoldColumn', { fg = c.fg_gutter })
hi('NonText', { fg = c.fg_gutter })
hi('SpecialKey', { fg = c.fg_gutter })
hi('Whitespace', { fg = c.fg_gutter })
hi('EndOfBuffer', { fg = c.bg })
hi('Directory', { fg = c.misc })
hi('Conceal', { fg = c.fg_gutter })
hi('MatchParen', { fg = c.match, bold = true })
-- Selection & Search
hi('Visual', { bg = c.bg_highlight })
hi('VisualNOS', { bg = c.bg_highlight })
hi('Search', { fg = c.bg, bg = c.search })
hi('IncSearch', { fg = c.bg, bg = c.match })
hi('CurSearch', { fg = c.bg, bg = c.match })
hi('Substitute', { fg = c.bg, bg = c.error })
-- Pmenu (completion menu)
hi('Pmenu', { fg = c.fg, bg = bg_dark })
hi('PmenuSel', { fg = c.fg, bg = c.bg_highlight })
hi('PmenuSbar', { bg = c.bg_float })
hi('PmenuThumb', { bg = c.fg_gutter })
-- Statusline & Tabline
hi('StatusLine', { fg = c.fg, bg = c.bg_float })
hi('StatusLineNC', { fg = c.fg_dark, bg = c.bg_float })
hi('TabLine', { fg = c.fg_dark, bg = bg_darker })
hi('TabLineFill', { bg = bg_darker })
hi('TabLineSel', { fg = c.fg, bg = bg })
hi('WinBar', { fg = c.fg, bg = bg_darker })
hi('WinBarNC', { fg = c.fg_dark, bg = bg_darker })
-- Messages
hi('ModeMsg', { fg = c.fg, bold = true })
hi('MsgArea', { fg = c.fg })
hi('MoreMsg', { fg = c.string })
hi('Question', { fg = c.string })
hi('WarningMsg', { fg = c.warning })
hi('ErrorMsg', { fg = c.error })
hi('Title', { fg = c.tag, bold = true })
-- Diff
hi('DiffAdd', { bg = c.diff_add })
hi('DiffChange', { bg = c.diff_change })
hi('DiffDelete', { bg = c.diff_delete })
hi('DiffText', { bg = c.bg_highlight })
hi('diffAdded', { fg = c.string })
hi('diffRemoved', { fg = c.error })
hi('diffChanged', { fg = c.misc })
hi('diffFile', { fg = c.tag })
hi('diffIndexLine', { fg = c.comment })
-- Spelling
hi('SpellBad', { undercurl = true, sp = c.error })
hi('SpellCap', { undercurl = true, sp = c.warning })
hi('SpellLocal', { undercurl = true, sp = c.info })
hi('SpellRare', { undercurl = true, sp = c.hint })
-- Diagnostics
hi('DiagnosticError', { fg = c.error })
hi('DiagnosticWarn', { fg = c.warning })
hi('DiagnosticInfo', { fg = c.info })
hi('DiagnosticHint', { fg = c.hint })
hi('DiagnosticOk', { fg = c.string })
hi('DiagnosticUnderlineError', { undercurl = true, sp = c.error })
hi('DiagnosticUnderlineWarn', { undercurl = true, sp = c.warning })
hi('DiagnosticUnderlineInfo', { undercurl = true, sp = c.info })
hi('DiagnosticUnderlineHint', { undercurl = true, sp = c.hint })
hi('DiagnosticUnderlineOk', { undercurl = true, sp = c.string })
hi('DiagnosticVirtualTextError', { fg = c.error, bg = c.diff_delete })
hi('DiagnosticVirtualTextWarn', { fg = c.warning, bg = c.diff_change })
hi('DiagnosticVirtualTextInfo', { fg = c.info, bg = c.bg_float })
hi('DiagnosticVirtualTextHint', { fg = c.hint, bg = c.bg_float })
-- Syntax highlighting
hi('Comment', comment_style)
hi('Constant', { fg = c.constant })
hi('String', { fg = c.string })
hi('Character', { fg = c.string })
hi('Number', { fg = c.number })
hi('Boolean', { fg = c.number })
hi('Float', { fg = c.number })
hi('Identifier', { fg = c.variable })
hi('Function', { fg = c.func })
hi('Statement', keyword_style)
hi('Conditional', keyword_style)
hi('Repeat', keyword_style)
hi('Label', keyword_style)
hi('Operator', { fg = c.tag })
hi('Keyword', keyword_style)
hi('Exception', keyword_style)
hi('PreProc', { fg = c.support })
hi('Include', keyword_style)
hi('Define', { fg = c.support })
hi('Macro', { fg = c.support })
hi('PreCondit', { fg = c.support })
hi('Type', { fg = c.type })
hi('StorageClass', keyword_style)
hi('Structure', { fg = c.type })
hi('Typedef', { fg = c.type })
hi('Special', { fg = c.misc })
hi('SpecialChar', { fg = c.string_escape })
hi('Tag', { fg = c.tag })
hi('Delimiter', { fg = c.fg })
hi('SpecialComment', { fg = c.comment, bold = true })
hi('Debug', { fg = c.warning })
hi('Underlined', { underline = true })
hi('Error', { fg = c.error })
hi('Todo', { fg = c.bg, bg = c.misc, bold = true })
-- Treesitter
hi('@variable', { fg = c.variable })
hi('@variable.builtin', { fg = c.tag })
hi('@variable.parameter', { fg = c.variable })
hi('@variable.member', { fg = c.variable })
hi('@constant', { fg = c.constant })
hi('@constant.builtin', { fg = c.constant })
hi('@module', { fg = c.support })
hi('@label', { fg = c.misc })
hi('@string', { fg = c.string })
hi('@string.escape', { fg = c.string_escape })
hi('@string.regexp', { fg = c.string_escape })
hi('@string.special', { fg = c.string_escape })
hi('@string.special.url', { fg = c.misc, underline = true })
hi('@character', { fg = c.string })
hi('@number', { fg = c.number })
hi('@boolean', { fg = c.number })
hi('@float', { fg = c.number })
hi('@function', { fg = c.func })
hi('@function.builtin', { fg = c.func })
hi('@function.call', { fg = c.func })
hi('@function.method', { fg = c.func })
hi('@function.method.call', { fg = c.func })
hi('@constructor', { fg = c.support })
hi('@keyword', keyword_style)
hi('@keyword.function', keyword_style)
hi('@keyword.operator', keyword_style)
hi('@keyword.import', keyword_style)
hi('@keyword.return', keyword_style)
hi('@keyword.conditional', keyword_style)
hi('@keyword.repeat', keyword_style)
hi('@keyword.exception', keyword_style)
hi('@keyword.modifier', keyword_style)
hi('@operator', { fg = c.tag })
hi('@punctuation', { fg = c.fg })
hi('@punctuation.bracket', { fg = c.fg })
hi('@punctuation.delimiter', { fg = c.fg })
hi('@punctuation.special', { fg = c.misc })
hi('@comment', comment_style)
hi('@comment.todo', { fg = c.bg, bg = c.misc, bold = true })
hi('@comment.note', { fg = c.bg, bg = c.info, bold = true })
hi('@comment.warning', { fg = c.bg, bg = c.warning, bold = true })
hi('@comment.error', { fg = c.bg, bg = c.error, bold = true })
hi('@type', { fg = c.type })
hi('@type.builtin', { fg = c.type })
hi('@type.definition', { fg = c.type })
hi('@attribute', { fg = c.type })
hi('@property', { fg = c.variable })
hi('@tag', { fg = c.tag })
hi('@tag.attribute', { fg = c.variable })
hi('@tag.delimiter', { fg = c.fg })
hi('@diff.plus', { fg = c.string })
hi('@diff.minus', { fg = c.error })
hi('@diff.delta', { fg = c.misc })
-- LSP semantic tokens
hi('@lsp.type.class', { fg = c.type })
hi('@lsp.type.decorator', { fg = c.func })
hi('@lsp.type.enum', { fg = c.type })
hi('@lsp.type.enumMember', { fg = c.constant })
hi('@lsp.type.function', { fg = c.func })
hi('@lsp.type.interface', { fg = c.type })
hi('@lsp.type.macro', { fg = c.support })
hi('@lsp.type.method', { fg = c.func })
hi('@lsp.type.namespace', { fg = c.support })
hi('@lsp.type.parameter', { fg = c.variable })
hi('@lsp.type.property', { fg = c.variable })
hi('@lsp.type.struct', { fg = c.type })
hi('@lsp.type.type', { fg = c.type })
hi('@lsp.type.typeParameter', { fg = c.type })
hi('@lsp.type.variable', { fg = c.variable })
hi('@lsp.mod.deprecated', { strikethrough = true })
hi('@lsp.mod.readonly', { italic = true })
-- LSP references
hi('LspReferenceText', { bg = c.bg_highlight })
hi('LspReferenceRead', { bg = c.bg_highlight })
hi('LspReferenceWrite', { bg = c.bg_highlight })
hi('LspSignatureActiveParameter', { fg = c.match, bold = true })
hi('LspCodeLens', { fg = c.comment })
hi('LspInlayHint', { fg = c.fg_gutter, bg = c.bg_dark, italic = true })
-- Git signs
hi('GitSignsAdd', { fg = c.string })
hi('GitSignsChange', { fg = c.misc })
hi('GitSignsDelete', { fg = c.error })
hi('GitSignsCurrentLineBlame', { fg = c.fg_gutter })
-- Neogit / Diffview
hi('NeogitDiffAdd', { fg = c.string, bg = c.diff_add })
hi('NeogitDiffDelete', { fg = c.error, bg = c.diff_delete })
hi('NeogitDiffContext', { bg = c.bg_dark })
hi('NeogitHunkHeader', { fg = c.misc, bg = c.bg_float })
hi('NeogitBranch', { fg = c.keyword })
hi('NeogitRemote', { fg = c.support })
hi('DiffviewFilePanelTitle', { fg = c.tag, bold = true })
hi('DiffviewFilePanelCounter', { fg = c.misc })
-- Which-key
hi('WhichKey', { fg = c.func })
hi('WhichKeyGroup', { fg = c.keyword })
hi('WhichKeyDesc', { fg = c.fg })
hi('WhichKeySeparator', { fg = c.comment })
hi('WhichKeyFloat', { bg = c.bg_float })
hi('WhichKeyBorder', { fg = c.border })
hi('WhichKeyValue', { fg = c.fg_dark })
-- Telescope / Snacks picker
hi('TelescopeBorder', { fg = c.border })
hi('TelescopePromptBorder', { fg = c.border })
hi('TelescopeResultsBorder', { fg = c.border })
hi('TelescopePreviewBorder', { fg = c.border })
hi('TelescopeMatching', { fg = c.match, bold = true })
hi('TelescopeSelection', { bg = c.bg_highlight })
hi('TelescopePromptPrefix', { fg = c.misc })
hi('TelescopeSelectionCaret', { fg = c.misc })
hi('TelescopeTitle', { fg = c.tag, bold = true })
-- Blink.cmp
hi('BlinkCmpMenu', { fg = c.fg, bg = bg_dark })
hi('BlinkCmpMenuBorder', { fg = c.border })
hi('BlinkCmpMenuSelection', { bg = c.bg_highlight })
hi('BlinkCmpLabel', { fg = c.fg })
hi('BlinkCmpLabelMatch', { fg = c.match, bold = true })
hi('BlinkCmpKind', { fg = c.support })
hi('BlinkCmpDoc', { fg = c.fg, bg = c.bg_float })
hi('BlinkCmpDocBorder', { fg = c.border })
-- Oil.nvim
hi('OilDir', { fg = c.misc })
hi('OilDirIcon', { fg = c.misc })
hi('OilFile', { fg = c.fg })
hi('OilCreate', { fg = c.string })
hi('OilDelete', { fg = c.error })
hi('OilMove', { fg = c.warning })
hi('OilCopy', { fg = c.info })
hi('OilChange', { fg = c.misc })
-- Grapple
hi('GrappleTitle', { fg = c.tag, bold = true })
hi('GrappleBorder', { fg = c.border })
hi('GrappleCurrent', { fg = c.misc, bold = true })
hi('GrappleFooter', { fg = c.comment })
-- Mini.statusline
hi('MiniStatuslineModeNormal', { fg = c.bg, bg = c.misc, bold = true })
hi('MiniStatuslineModeInsert', { fg = c.bg, bg = c.string, bold = true })
hi('MiniStatuslineModeVisual', { fg = c.bg, bg = c.keyword, bold = true })
hi('MiniStatuslineModeReplace', { fg = c.bg, bg = c.error, bold = true })
hi('MiniStatuslineModeCommand', { fg = c.bg, bg = c.warning, bold = true })
hi('MiniStatuslineModeOther', { fg = c.bg, bg = c.support, bold = true })
hi('MiniStatuslineDevinfo', { fg = c.fg, bg = c.bg_highlight })
hi('MiniStatuslineFilename', { fg = c.fg, bg = c.bg_float })
hi('MiniStatuslineFileinfo', { fg = c.fg, bg = c.bg_highlight })
hi('MiniStatuslineInactive', { fg = c.fg_dark, bg = c.bg_float })
-- Mini.icons
hi('MiniIconsAzure', { fg = c.info })
hi('MiniIconsBlue', { fg = c.misc })
hi('MiniIconsCyan', { fg = c.support })
hi('MiniIconsGreen', { fg = c.string })
hi('MiniIconsGrey', { fg = c.fg_dark })
hi('MiniIconsOrange', { fg = c.tag })
hi('MiniIconsPurple', { fg = c.number })
hi('MiniIconsRed', { fg = c.error })
hi('MiniIconsYellow', { fg = c.warning })
-- Find-file (custom)
hi('FindFilePrompt', { fg = c.tag, bold = true })
hi('FindFileSep', { fg = c.comment })
hi('FindFileMatch', { fg = c.fg, bg = c.bg_float })
hi('FindFileMatchSelected', { fg = c.fg, bg = c.bg_highlight })
hi('FindFileMatchChar', { fg = c.match, bold = true })
-- Markdown
hi('@markup.heading', { fg = c.tag, bold = true })
hi('@markup.heading.1', { fg = c.tag, bold = true })
hi('@markup.heading.2', { fg = c.keyword, bold = true })
hi('@markup.heading.3', { fg = c.func, bold = true })
hi('@markup.heading.4', { fg = c.type, bold = true })
hi('@markup.heading.5', { fg = c.constant, bold = true })
hi('@markup.heading.6', { fg = c.misc, bold = true })
hi('@markup.link', { fg = c.misc, underline = true })
hi('@markup.link.url', { fg = c.comment, underline = true })
hi('@markup.link.label', { fg = c.misc })
hi('@markup.raw', { fg = c.string })
hi('@markup.raw.block', { fg = c.string })
hi('@markup.list', { fg = c.tag })
hi('@markup.list.checked', { fg = c.string })
hi('@markup.list.unchecked', { fg = c.fg_gutter })
hi('@markup.italic', { italic = true })
hi('@markup.strong', { bold = true })
hi('@markup.strikethrough', { strikethrough = true })
hi('@markup.quote', { fg = c.comment, italic = true })
-- Apply user overrides
if opts.overrides then
for group, hl in pairs(opts.overrides) do
hi(group, hl)
end
end
end
---@param opts? RaythemeConfig
function M.setup(opts) M.config = vim.tbl_deep_extend('force', M.defaults, opts or {}) end
---@param palette RaythemePalette
---@param name string
function M.load(palette, name)
if not palette then
vim.notify('raytheme: palette is required', vim.log.levels.ERROR)
return
end
local config = M.config or M.defaults
if vim.g.colors_name then vim.cmd 'highlight clear' end
vim.opt.background = 'dark'
vim.g.colors_name = name or 'raytheme'
M.palette = palette
apply_highlights(palette, config)
end
--- Get current palette colors
---@return RaythemePalette?
function M.colors() return M.palette end
return M

View file

@ -10,6 +10,6 @@ sbar.bar {
margin = settings.dimens.padding.bar,
corner_radius = settings.dimens.graphics.background.corner_radius,
y_offset = settings.dimens.graphics.bar.offset,
-- blur_radius = settings.dimens.graphics.blur_radius,
blur_radius = settings.dimens.graphics.blur_radius,
border_width = 0,
}

View file

@ -21,11 +21,11 @@ local currentWorkspaceWatcher = sbar.add('item', {
-- https://www.nerdfonts.com/cheat-sheet
local spaceConfigs <const> = {
['1'] = { icon = '󱞁', name = 'Main' },
['2'] = { icon = '', name = '' },
['3'] = { icon = '', name = '' },
['2'] = { icon = '󰘦 ', name = 'Dev' },
['3'] = { icon = '󰧑', name = 'AI' },
['4'] = { icon = '', name = '' },
['5'] = { icon = '󰌾', name = 'Misc' },
['6'] = { icon = '', name = '' },
['6'] = { icon = '󱉟', name = 'Library' },
['7'] = { icon = '󰎆', name = 'Music' },
['8'] = { icon = '󰇮', name = 'Mail' },
['9'] = { icon = '󰭹', name = 'Chat' },

View file

@ -18,7 +18,7 @@ set -s escape-time 500
set -g history-limit 2000
set-option -g detach-on-destroy off
set-option -g status-position bottom # top
set-option -g status-position top
set-option -g default-terminal 'xterm-256color'
set-option -sa terminal-features ',xterm-kitty:RGB:extkeys'
@ -138,20 +138,6 @@ if -b 'command -v reattach-to-user-namespace > /dev/null 2>&1' 'bind y run -b "t
if -b 'command -v clip.exe > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | clip.exe"'
if -b '[ -c /dev/clipboard ]' 'bind y run -b "tmux save-buffer - > /dev/clipboard"'
# status line
set -g status "on"
set -g status-justify "left"
set -g status-left-length "100"
set -g status-right-length "100"
set -g status-left-style NONE
set -g status-right-style NONE
# set -g status-style bg=default
set -g status-right "#H"
# set -g status-interval 10 # redraw status line every 10 seconds
# https://github.com/christoomey/vim-tmux-navigator
# disable wrapping
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
@ -165,3 +151,45 @@ bind-key -T copy-mode-vi 'C-h' if-shell -F '#{pane_at_left}' {} { select-pane
bind-key -T copy-mode-vi 'C-j' if-shell -F '#{pane_at_bottom}' {} { select-pane -D }
bind-key -T copy-mode-vi 'C-k' if-shell -F '#{pane_at_top}' {} { select-pane -U }
bind-key -T copy-mode-vi 'C-l' if-shell -F '#{pane_at_right}' {} { select-pane -R }
################
#### THEMES ####
################
# status line
set -g status "on"
set -g status-justify "left"
set -g status-left-length "100"
set -g status-right-length "100"
set -g status-left-style NONE
set -g status-right-style NONE
# Colors (Noctis Azureus)
%hidden TMUX_BG="#051b29"
%hidden TMUX_FG="#becfda"
%hidden TMUX_ACCENT="#49ace9"
%hidden TMUX_INACTIVE="#475e6c"
set -g status-style "bg=default,fg=#{TMUX_FG}"
# Left side - TMUX label
set -g status-left "#[bg=#{TMUX_ACCENT},fg=#{TMUX_BG},bold] TMUX #[bg=default,fg=default] "
# Window format - "1 :: name"
set -g window-status-format "#[fg=#{TMUX_INACTIVE}] #I :: #W "
set -g window-status-current-format "#[fg=#{TMUX_ACCENT},bold] #I :: #W #[fg=#{TMUX_FG}]*"
# Window separator
set -g window-status-separator ""
# Right side
set -g status-right "#[fg=#{TMUX_FG}]#H "
# set -g status-interval 10 # redraw status line every 10 seconds
# Add padding below status bar (2-line status)
set -g status 2
set -g 'status-format[1]' ''

View file

@ -1,7 +1,14 @@
{
"$schema": "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json",
"runtime.version": "Lua 5.4",
"workspace.library": [
"~/.config/yazi/plugins/types.yazi/",
],
"runtime": {
"version": "LuaJIT"
},
"workspace": {
"library": [
"~/.config/yazi/plugins/types.yazi/"
]
},
"diagnostics": {
"disable": ["undefined-field"]
}
}