353 lines
10 KiB
Lua
353 lines
10 KiB
Lua
-- Change this to switch themes
|
|
local THEME = "rose_pine"
|
|
|
|
local theme_colors = {
|
|
rose_pine = {
|
|
primary = "#c4a7e7", -- iris/mauve (purple-like color from rose-pine palette)
|
|
secondary = "#6e6a86", -- muted/subtle (comparable to comment/gray colors)
|
|
yanked = "#9ccfd8", -- foam (cyan-like accent color)
|
|
cut = "#eb6f92", -- love (red-like accent color)
|
|
},
|
|
carbonfox = {
|
|
primary = "#78a9ff",
|
|
secondary = "#525252",
|
|
yanked = "#3ddbd9",
|
|
cut = "#ff7eb6",
|
|
},
|
|
kanagawa = {
|
|
primary = "#7e9cd8",
|
|
secondary = "#54546d",
|
|
yanked = "#7aa89f",
|
|
cut = "#e82424",
|
|
},
|
|
sonokai = {
|
|
primary = "#76cce0",
|
|
secondary = "#7f8490",
|
|
yanked = "#fc5d7c",
|
|
cut = "#f85e84",
|
|
},
|
|
catppuccin = {
|
|
primary = "#89b4fa",
|
|
secondary = "#6c7086",
|
|
yanked = "#94e2d5",
|
|
cut = "#f38ba8",
|
|
},
|
|
dracula = {
|
|
primary = "#bd93f9", -- purple
|
|
secondary = "#6272a4", -- comment
|
|
yanked = "#8be9fd", -- cyan
|
|
cut = "#ff5555", -- red
|
|
},
|
|
everforest = {
|
|
primary = "#7fbbb3", -- aqua
|
|
secondary = "#859289", -- gray
|
|
yanked = "#a7c080", -- green
|
|
cut = "#e67e80", -- red
|
|
},
|
|
gruvbox = {
|
|
primary = "#7daea3", -- aqua
|
|
secondary = "#7c6f64", -- gray
|
|
yanked = "#a9b665", -- green
|
|
cut = "#ea6962", -- red
|
|
},
|
|
nightfox = {
|
|
primary = "#719cd6", -- blue
|
|
secondary = "#738091", -- comment
|
|
yanked = "#63cdcf", -- cyan
|
|
cut = "#c94f6d", -- red
|
|
},
|
|
onedark = {
|
|
primary = "#61afef", -- blue
|
|
secondary = "#5c6370", -- gray
|
|
yanked = "#56b6c2", -- cyan
|
|
cut = "#e06c75", -- red
|
|
},
|
|
}
|
|
|
|
local c = theme_colors[THEME]
|
|
|
|
require("yaziline"):setup({
|
|
color = c.primary,
|
|
secondary_color = c.secondary,
|
|
default_files_color = "darkgray",
|
|
selected_files_color = "white",
|
|
yanked_files_color = c.yanked,
|
|
cut_files_color = c.cut,
|
|
separator_style = "angly", -- "angly" | "curvy" | "liney" | "empty"
|
|
separator_open = "",
|
|
separator_close = "",
|
|
separator_open_thin = "",
|
|
separator_close_thin = "",
|
|
separator_head = "",
|
|
separator_tail = "",
|
|
|
|
select_symbol = "",
|
|
yank_symbol = "",
|
|
|
|
filename_max_length = 24, -- truncate when filename > 24
|
|
filename_truncate_length = 6, -- leave 6 chars on both sides
|
|
filename_truncate_separator = "...",
|
|
})
|
|
|
|
require("recycle-bin"):setup({
|
|
trash_dir = "~/.local/share/Trash/",
|
|
})
|
|
|
|
-- require("omp"):setup({ config = "/home/liph/.config/yazi/omp/omp.toml" })
|
|
|
|
require("mime-ext"):setup({
|
|
-- with_files = {
|
|
-- tex = "text/makefile",
|
|
-- },
|
|
|
|
with_exts = {
|
|
tex = "text/makefile",
|
|
},
|
|
})
|
|
|
|
require("full-border"):setup({
|
|
type = ui.Border.ROUNDED,
|
|
})
|
|
|
|
-- git-yazi plugin
|
|
-- th.git = th.git or {}
|
|
-- th.git.modified = ui.Style():fg("blue")
|
|
-- th.git.deleted = ui.Style():fg("red"):bold()
|
|
require("git"):setup()
|
|
-- whoosh plugin
|
|
-- You can configure your bookmarks using simplified syntax
|
|
-- local bookmarks = {
|
|
-- { tag = "Documents", path = "~/Documents", key = "D" },
|
|
-- }
|
|
|
|
-- You can also configure bookmarks with key arrays
|
|
-- local bookmarks = {
|
|
-- { tag = "Desktop", path = "~/Desktop", key = { "d", "D" } },
|
|
-- { tag = "Documents", path = "~/Documents", key = { "d", "d" } },
|
|
-- { tag = "Downloads", path = "~/Downloads", key = "o" },
|
|
-- { tag = "Downloads", path = "~/Downloads", key = "o" },
|
|
-- { tag = "Downloads", path = "~/Downloads", key = "o" },
|
|
-- { tag = "Downloads", path = "~/Downloads", key = "o" },
|
|
-- { tag = "Downloads", path = "~/Downloads", key = "o" },
|
|
-- }
|
|
require("whoosh"):setup({
|
|
-- Configuration bookmarks (cannot be deleted through plugin)
|
|
bookmarks = bookmarks,
|
|
|
|
-- Notification settings
|
|
jump_notify = false,
|
|
|
|
-- Key generation for auto-assigning bookmark keys
|
|
keys = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
|
|
|
-- Configure the built-in menu action hotkeys
|
|
-- false - hide menu item
|
|
special_keys = {
|
|
create_temp = "<Enter>", -- Create a temporary bookmark from the menu
|
|
fuzzy_search = "<Space>", -- Launch fuzzy search (fzf)
|
|
history = "<Tab>", -- Open directory history
|
|
previous_dir = "<Backspace>", -- Jump back to the previous directory
|
|
},
|
|
|
|
-- File path for storing user bookmarks
|
|
bookmarks_path = (
|
|
ya.target_family() == "windows" and os.getenv("APPDATA") .. "\\yazi\\config\\plugins\\whoosh.yazi\\bookmarks"
|
|
) or (os.getenv("HOME") .. "/.config/yazi/plugins/whoosh.yazi/bookmarks"),
|
|
|
|
-- Replace home directory with "~"
|
|
home_alias_enabled = true, -- Toggle home aliasing in displays
|
|
|
|
-- Path truncation in navigation menu
|
|
path_truncate_enabled = false, -- Enable/disable path truncation
|
|
path_max_depth = 3, -- Maximum path depth before truncation
|
|
|
|
-- Path truncation in fuzzy search (fzf)
|
|
fzf_path_truncate_enabled = false, -- Enable/disable path truncation in fzf
|
|
fzf_path_max_depth = 5, -- Maximum path depth before truncation in fzf
|
|
|
|
-- Long folder name truncation
|
|
path_truncate_long_names_enabled = false, -- Enable in navigation menu
|
|
fzf_path_truncate_long_names_enabled = false, -- Enable in fzf
|
|
path_max_folder_name_length = 20, -- Max length in navigation menu
|
|
fzf_path_max_folder_name_length = 20, -- Max length in fzf
|
|
|
|
-- History directory settings
|
|
history_size = 10, -- Number of directories in history (default 10)
|
|
history_fzf_path_truncate_enabled = false, -- Enable/disable path truncation by depth for history
|
|
history_fzf_path_max_depth = 5, -- Maximum path depth before truncation for history (default 5)
|
|
history_fzf_path_truncate_long_names_enabled = false, -- Enable/disable long folder name truncation for history
|
|
history_fzf_path_max_folder_name_length = 30, -- Maximum length for folder names in history (default 30)
|
|
})
|
|
|
|
-- projetc plugin
|
|
require("projects"):setup({
|
|
event = {
|
|
save = {
|
|
enable = true,
|
|
name = "project-saved",
|
|
},
|
|
load = {
|
|
enable = true,
|
|
name = "project-loaded",
|
|
},
|
|
delete = {
|
|
enable = true,
|
|
name = "project-deleted",
|
|
},
|
|
delete_all = {
|
|
enable = true,
|
|
name = "project-deleted-all",
|
|
},
|
|
merge = {
|
|
enable = true,
|
|
name = "project-merged",
|
|
},
|
|
},
|
|
save = {
|
|
method = "yazi", -- yazi | lua
|
|
yazi_load_event = "@projects-load", -- event name when loading projects in `yazi` method
|
|
lua_save_path = "", -- path of saved file in `lua` method, comment out or assign explicitly
|
|
-- default value:
|
|
-- windows: "%APPDATA%/yazi/state/projects.json"
|
|
-- unix: "~/.local/state/yazi/projects.json"
|
|
},
|
|
last = {
|
|
update_after_save = true,
|
|
update_after_load = true,
|
|
update_before_quit = false,
|
|
load_after_start = false,
|
|
},
|
|
merge = {
|
|
event = "projects-merge",
|
|
quit_after_merge = false,
|
|
},
|
|
notify = {
|
|
enable = true,
|
|
title = "Projects",
|
|
timeout = 3,
|
|
level = "info",
|
|
},
|
|
})
|
|
|
|
-- yafg plugin
|
|
require("yafg"):setup({
|
|
editor = "nvim", -- Editor command (default: "hx")
|
|
args = { "--noplugin" }, -- Additional editor arguments (default: {})
|
|
file_arg_format = "+{row} {file}", -- File argument format (default: "{file}:{row}:{col}")
|
|
})
|
|
|
|
require("simple-tag"):setup({
|
|
-- UI display mode (icon, text, hidden)
|
|
ui_mode = "icon", -- (Optional)
|
|
|
|
-- Disable tag key hints (popup in bottom right corner)
|
|
hints_disabled = false, -- (Optional)
|
|
|
|
-- linemode order: adjusts icon/text position. For example, if you want icon to be on the most left of linemode then set linemode_order larger than 1000.
|
|
-- More info: https://github.com/sxyazi/yazi/blob/077faacc9a84bb5a06c5a8185a71405b0cb3dc8a/yazi-plugin/preset/components/linemode.lua#L4-L5
|
|
linemode_order = 500, -- (Optional)
|
|
|
|
-- You can backup/restore this folder within the same OS (Linux, windows, or MacOS).
|
|
-- But you can't restore backed up folder in the different OS because they use difference absolute path.
|
|
-- save_path = -- full path to save tags folder (Optional)
|
|
-- - Linux/MacOS: os.getenv("HOME") .. "/.config/yazi/tags"
|
|
-- - Windows: os.getenv("APPDATA") .. "\\yazi\\config\\tags"
|
|
|
|
-- Set tag colors
|
|
colors = { -- (Optional)
|
|
-- Set this same value with `theme.toml` > [mgr] > hovered > reversed
|
|
-- Default theme use "reversed = true".
|
|
-- More info: https://github.com/sxyazi/yazi/blob/077faacc9a84bb5a06c5a8185a71405b0cb3dc8a/yazi-config/preset/theme-dark.toml#L25
|
|
reversed = true, -- (Optional)
|
|
|
|
-- More colors: https://yazi-rs.github.io/docs/configuration/theme#types.color
|
|
-- format: [tag key] = "color"
|
|
["*"] = "#bf68d9", -- (Optional)
|
|
["$"] = "green",
|
|
["!"] = "#cc9057",
|
|
["1"] = "cyan",
|
|
["p"] = "red",
|
|
},
|
|
|
|
-- Set tag icons. Only show when ui_mode = "icon".
|
|
-- Any text or nerdfont icons should work as long as you use nerdfont to render yazi.
|
|
-- Default icon from mactag.yazi: ●; Some generic icons: , ,
|
|
-- More icon from nerd fonts: https://www.nerdfonts.com/cheat-sheet
|
|
icons = { -- (Optional)
|
|
-- default icon
|
|
default = "",
|
|
|
|
-- format: [tag key] = "tag icon"
|
|
["*"] = "*",
|
|
["$"] = "",
|
|
["!"] = "",
|
|
["p"] = "",
|
|
},
|
|
})
|
|
-- require("omp"):setup({
|
|
-- config = "/home/liph/.config/ohmyposh/yazi-zen.json",
|
|
-- })
|
|
|
|
-- default config
|
|
require("fchar"):setup({
|
|
-- if true: f -> file, File, FILE
|
|
insensitive = true,
|
|
-- if true: f -> file, .file, @file, #file, ...file
|
|
skip_symbols = true,
|
|
-- if {"yazi-"}: f -> file, yazi-file
|
|
skip_prefix = {},
|
|
-- start: f -> file
|
|
-- word: f -> file, also-file
|
|
-- all: f -> file, also-file, alsofile, elf
|
|
search_location = "start",
|
|
aliases = {},
|
|
})
|
|
|
|
-- aliases for German
|
|
require("fchar"):setup({
|
|
aliases = {
|
|
a = "ä",
|
|
o = "ö",
|
|
u = "ü",
|
|
s = "ß",
|
|
},
|
|
})
|
|
|
|
-- you may want to turn off the search regex from
|
|
-- showing up in the header by doing this
|
|
function Header:flags()
|
|
local cwd = self._current.cwd
|
|
local filter = self._current.files.filter
|
|
|
|
local t = {}
|
|
if cwd.is_search then
|
|
t[#t + 1] = string.format("search: %s", cwd.domain)
|
|
end
|
|
if filter then
|
|
t[#t + 1] = string.format("filter: %s", filter)
|
|
end
|
|
return #t == 0 and "" or " (" .. table.concat(t, ", ") .. ")"
|
|
end
|
|
|
|
require("dupes"):setup({
|
|
-- Global settings
|
|
save_op = false, -- Save results to file by default
|
|
-- auto_confirm = true, -- Skip confirmation for apply (use with caution!)
|
|
|
|
profiles = {
|
|
-- Interactive mode: recursively scan and display duplicates
|
|
interactive = {
|
|
args = { "-r" },
|
|
},
|
|
-- Apply mode: recursively scan and DELETE duplicates
|
|
apply = {
|
|
args = { "-r", "-N", "-d" },
|
|
save_op = true, -- Save results before deletion
|
|
},
|
|
-- Custom profile example (uncomment to use)
|
|
-- custom = {
|
|
-- args = { "-r", "-s", }, -- Your custom jdupes flags
|
|
-- },
|
|
},
|
|
})
|