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'
|
if.app-id = 'com.apple.ActivityMonitor'
|
||||||
run = ['layout floating']
|
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]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'com.1password.1password'
|
if.app-id = 'com.1password.1password'
|
||||||
run = ['move-node-to-workspace 5']
|
run = ['move-node-to-workspace 5']
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'com.apple.MobileSMS'
|
||||||
|
run = ['move-node-to-workspace 5']
|
||||||
|
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'com.spotify.client'
|
if.app-id = 'com.spotify.client'
|
||||||
run = ['move-node-to-workspace 7']
|
run = ['move-node-to-workspace 7']
|
||||||
|
|
@ -153,3 +165,15 @@ on-focus-changed = [
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'com.tinyspeck.slackmacgap'
|
if.app-id = 'com.tinyspeck.slackmacgap'
|
||||||
run = ['move-node-to-workspace 9']
|
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-family = Consolas
|
||||||
font-size = 14
|
font-size = 14
|
||||||
app-notifications = no-clipboard-copy
|
app-notifications = no-clipboard-copy
|
||||||
theme = nightfox
|
|
||||||
|
|
||||||
macos-option-as-alt = left
|
macos-option-as-alt = left
|
||||||
|
|
||||||
keybind = alt+left=unbind
|
keybind = alt+left=unbind
|
||||||
keybind = alt+right=unbind
|
keybind = alt+right=unbind
|
||||||
|
# theme = nightfox
|
||||||
|
theme = noctis-azureus
|
||||||
|
|
||||||
# theme = gruber-darker
|
# theme = gruber-darker
|
||||||
# theme = xcodelighthc
|
# theme = xcodelighthc
|
||||||
# theme = zenburned
|
# 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.autoread = true
|
||||||
vim.opt.cursorline = true
|
vim.opt.cursorline = true
|
||||||
vim.opt.scrolloff = 10
|
vim.opt.scrolloff = 10
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
|
||||||
local path_package = vim.fn.stdpath 'data' .. '/site/'
|
local path_package = vim.fn.stdpath 'data' .. '/site/'
|
||||||
local mini_path = path_package .. 'pack/deps/start/mini.nvim'
|
local mini_path = path_package .. 'pack/deps/start/mini.nvim'
|
||||||
|
|
@ -37,7 +38,6 @@ add 'folke/snacks.nvim'
|
||||||
add 'stevearc/quicker.nvim'
|
add 'stevearc/quicker.nvim'
|
||||||
add 'stevearc/oil.nvim'
|
add 'stevearc/oil.nvim'
|
||||||
add 'A7Lavinraj/fyler.nvim'
|
add 'A7Lavinraj/fyler.nvim'
|
||||||
add 'EdenEast/nightfox.nvim'
|
|
||||||
add 'williamboman/mason.nvim'
|
add 'williamboman/mason.nvim'
|
||||||
add 'williamboman/mason-lspconfig.nvim'
|
add 'williamboman/mason-lspconfig.nvim'
|
||||||
add 'neovim/nvim-lspconfig'
|
add 'neovim/nvim-lspconfig'
|
||||||
|
|
@ -57,7 +57,14 @@ add 'aserowy/tmux.nvim'
|
||||||
add 'NMAC427/guess-indent.nvim'
|
add 'NMAC427/guess-indent.nvim'
|
||||||
add 'wakatime/vim-wakatime'
|
add 'wakatime/vim-wakatime'
|
||||||
|
|
||||||
|
-- color themes
|
||||||
|
add 'EdenEast/nightfox.nvim'
|
||||||
|
|
||||||
now(function()
|
now(function()
|
||||||
|
require('mini.statusline').setup {
|
||||||
|
use_icons = true,
|
||||||
|
}
|
||||||
|
|
||||||
require('mini.icons').setup {
|
require('mini.icons').setup {
|
||||||
extension = {
|
extension = {
|
||||||
lua = { glyph = '', hl = 'MiniIconsAzure' },
|
lua = { glyph = '', hl = 'MiniIconsAzure' },
|
||||||
|
|
@ -70,8 +77,14 @@ now(function()
|
||||||
directory = { glyph = '', hl = 'MiniIconsBlue' },
|
directory = { glyph = '', hl = 'MiniIconsBlue' },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
require('nightfox').setup {}
|
-- require('nightfox').setup {}
|
||||||
vim.cmd 'colorscheme nightfox'
|
-- vim.cmd.colorscheme 'nightfox'
|
||||||
|
require('raytheme').setup {
|
||||||
|
transparent = false,
|
||||||
|
italic_comments = true,
|
||||||
|
bold_keywords = false,
|
||||||
|
}
|
||||||
|
vim.cmd.colorscheme 'noctis_azureus_ghostty'
|
||||||
end)
|
end)
|
||||||
|
|
||||||
later(function()
|
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', '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', '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', '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', '<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', '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' }))
|
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,
|
margin = settings.dimens.padding.bar,
|
||||||
corner_radius = settings.dimens.graphics.background.corner_radius,
|
corner_radius = settings.dimens.graphics.background.corner_radius,
|
||||||
y_offset = settings.dimens.graphics.bar.offset,
|
y_offset = settings.dimens.graphics.bar.offset,
|
||||||
-- blur_radius = settings.dimens.graphics.blur_radius,
|
blur_radius = settings.dimens.graphics.blur_radius,
|
||||||
border_width = 0,
|
border_width = 0,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,11 +21,11 @@ local currentWorkspaceWatcher = sbar.add('item', {
|
||||||
-- https://www.nerdfonts.com/cheat-sheet
|
-- https://www.nerdfonts.com/cheat-sheet
|
||||||
local spaceConfigs <const> = {
|
local spaceConfigs <const> = {
|
||||||
['1'] = { icon = '', name = 'Main' },
|
['1'] = { icon = '', name = 'Main' },
|
||||||
['2'] = { icon = '', name = '' },
|
['2'] = { icon = ' ', name = 'Dev' },
|
||||||
['3'] = { icon = '', name = '' },
|
['3'] = { icon = '', name = 'AI' },
|
||||||
['4'] = { icon = '', name = '' },
|
['4'] = { icon = '', name = '' },
|
||||||
['5'] = { icon = '', name = 'Misc' },
|
['5'] = { icon = '', name = 'Misc' },
|
||||||
['6'] = { icon = '', name = '' },
|
['6'] = { icon = '', name = 'Library' },
|
||||||
['7'] = { icon = '', name = 'Music' },
|
['7'] = { icon = '', name = 'Music' },
|
||||||
['8'] = { icon = '', name = 'Mail' },
|
['8'] = { icon = '', name = 'Mail' },
|
||||||
['9'] = { icon = '', name = 'Chat' },
|
['9'] = { icon = '', name = 'Chat' },
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ set -s escape-time 500
|
||||||
set -g history-limit 2000
|
set -g history-limit 2000
|
||||||
|
|
||||||
set-option -g detach-on-destroy off
|
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 -g default-terminal 'xterm-256color'
|
||||||
set-option -sa terminal-features ',xterm-kitty:RGB:extkeys'
|
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 '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"'
|
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
|
# https://github.com/christoomey/vim-tmux-navigator
|
||||||
# disable wrapping
|
# disable wrapping
|
||||||
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
|
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-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-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 }
|
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",
|
"$schema": "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json",
|
||||||
"runtime.version": "Lua 5.4",
|
"runtime": {
|
||||||
"workspace.library": [
|
"version": "LuaJIT"
|
||||||
"~/.config/yazi/plugins/types.yazi/",
|
},
|
||||||
],
|
"workspace": {
|
||||||
|
"library": [
|
||||||
|
"~/.config/yazi/plugins/types.yazi/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"diagnostics": {
|
||||||
|
"disable": ["undefined-field"]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue