feat: cool colorschemes and themes
This commit is contained in:
parent
0cf7e16710
commit
c119257a02
14 changed files with 825 additions and 28 deletions
|
|
@ -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']
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
59
config/ghostty/themes/noctis
Normal file
59
config/ghostty/themes/noctis
Normal 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
|
||||
59
config/ghostty/themes/noctis-azureus
Normal file
59
config/ghostty/themes/noctis-azureus
Normal 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
|
||||
49
config/nvim/colors/noctis.lua
Normal file
49
config/nvim/colors/noctis.lua
Normal 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')
|
||||
44
config/nvim/colors/noctis_azureus.lua
Normal file
44
config/nvim/colors/noctis_azureus.lua
Normal 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')
|
||||
44
config/nvim/colors/noctis_azureus_ghostty.lua
Normal file
44
config/nvim/colors/noctis_azureus_ghostty.lua
Normal 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')
|
||||
44
config/nvim/colors/noctis_ghostty.lua
Normal file
44
config/nvim/colors/noctis_ghostty.lua
Normal 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')
|
||||
|
|
@ -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' }))
|
||||
|
|
|
|||
424
config/nvim/lua/raytheme.lua
Normal file
424
config/nvim/lua/raytheme.lua
Normal 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
|
||||
|
|
@ -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,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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' },
|
||||
|
|
|
|||
|
|
@ -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]' ''
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue