diff --git a/.config/wezterm/modules/mappings.lua b/.config/wezterm/modules/mappings.lua index 7d27acf..28c9864 100644 --- a/.config/wezterm/modules/mappings.lua +++ b/.config/wezterm/modules/mappings.lua @@ -55,11 +55,47 @@ return { action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }), }, - -- session manager - { key = "s", mods = "LEADER", action = act({ EmitEvent = "save_session" }) }, - { key = "l", mods = "LEADER", action = act({ EmitEvent = "load_session" }) }, - { key = "r", mods = "LEADER", action = act({ EmitEvent = "restore_session" }) }, + -- Rename current workspace + { + key = "$", + mods = "LEADER|SHIFT", + action = act.PromptInputLine({ + description = "Enter new workspace name", + action = wezterm.action_callback(function(window, pane, line) + if line then + wezterm.mux.rename_workspace(wezterm.mux.get_active_workspace(), line) + end + end), + }), + }, + + -- Prompt for a name to use for a new workspace and switch to it. + { + key = "w", + mods = "LEADER|SHIFT", + action = act.PromptInputLine({ + description = wezterm.format({ + { Attribute = { Intensity = "Bold" } }, + { Foreground = { AnsiColor = "Fuchsia" } }, + { Text = "Enter name for new workspace" }, + }), + action = wezterm.action_callback(function(window, pane, line) + -- line will be `nil` if they hit escape without entering anything + -- An empty string if they just hit enter + -- Or the actual line of text they wrote + if line then + window:perform_action( + act.SwitchToWorkspace({ + name = line, + }), + pane + ) + end + end), + }), + }, }, + key_tables = { resize_pane = { { key = "LeftArrow", action = act.AdjustPaneSize({ "Left", 5 }) }, diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua index 30fe161..b73e7a5 100644 --- a/.config/wezterm/wezterm.lua +++ b/.config/wezterm/wezterm.lua @@ -1,27 +1,8 @@ local wezterm = require("wezterm") local mappings = require("modules.mappings") -local session_manager = require("wezterm-session-manager/session-manager") +local hyperlinks = require("modules.hyperlinks") --- Show which key table is active in the status area -wezterm.on("update-right-status", function(window, pane) - local name = window:active_key_table() - if name then - name = "TABLE: " .. name - end - window:set_right_status(name or "") -end) - -wezterm.on("save_session", function(window) - session_manager.save_state(window) -end) -wezterm.on("load_session", function(window) - session_manager.load_state(window) -end) -wezterm.on("restore_session", function(window) - session_manager.restore_state(window) -end) - -return { +local config = { default_cursor_style = "BlinkingBlock", color_scheme = "Catppuccin Mocha", colors = { @@ -31,7 +12,7 @@ return { }, -- font font = wezterm.font("JetBrains Mono", { weight = "Medium" }), - font_size = 10, + font_size = 12, line_height = 1.0, window_background_opacity = 0.8, -- tab bar @@ -46,8 +27,9 @@ return { bottom = 7, }, window_decorations = "RESIZE", + window_close_confirmation = "NeverPrompt", inactive_pane_hsb = { - brightness = 0.7, + brightness = 0.5, }, send_composed_key_when_left_alt_is_pressed = false, send_composed_key_when_right_alt_is_pressed = true, @@ -55,4 +37,18 @@ return { leader = mappings.leader, keys = mappings.keys, key_tables = mappings.key_tables, + hyperlink_rules = hyperlinks, } + +-- sessions.apply_to_config(config) -- optional, this adds default keybindings + +-- Show which key table is active in the status area +wezterm.on("update-right-status", function(window, pane) + local name = window:active_key_table() + if name then + name = "TABLE: " .. name + end + window:set_right_status(name or "") +end) + +return config diff --git a/.config/yazi/flavors/flexoki-dark.yazi/LICENSE b/.config/yazi/flavors/flexoki-dark.yazi/LICENSE new file mode 100644 index 0000000..69f9d59 --- /dev/null +++ b/.config/yazi/flavors/flexoki-dark.yazi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Steph Ango + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.config/yazi/flavors/flexoki-dark.yazi/LICENSE-tmtheme b/.config/yazi/flavors/flexoki-dark.yazi/LICENSE-tmtheme new file mode 100644 index 0000000..69f9d59 --- /dev/null +++ b/.config/yazi/flavors/flexoki-dark.yazi/LICENSE-tmtheme @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Steph Ango + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.config/yazi/flavors/flexoki-dark.yazi/README.md b/.config/yazi/flavors/flexoki-dark.yazi/README.md new file mode 100644 index 0000000..2423791 --- /dev/null +++ b/.config/yazi/flavors/flexoki-dark.yazi/README.md @@ -0,0 +1,36 @@ +
+ Yazi logo +
+ +

+ Flexoki Dark Flavor for Yazi +

+ +## 👀 Preview + + + +## 🎨 Installation + +```sh +ya pack -a gosxrgxx/flexoki-dark +``` + +## ⚙️ Usage + +To set it as your dark flavor, change the content of your `theme.toml` to: + +```toml +[flavor] +dark = "flexoki-dark" +``` + +Make sure your `theme.toml` doesn't contain anything other than `[flavor]`, unless you want to override certain styles of this flavor. + +See the [Yazi flavor documentation](https://yazi-rs.github.io/docs/flavors/overview) for more details. + +## 📜 License + +The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed. + +Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details. diff --git a/.config/yazi/flavors/flexoki-dark.yazi/flavor.toml b/.config/yazi/flavors/flexoki-dark.yazi/flavor.toml new file mode 100644 index 0000000..c084fef --- /dev/null +++ b/.config/yazi/flavors/flexoki-dark.yazi/flavor.toml @@ -0,0 +1,166 @@ +# Сolor palette: https://stephango.com/flexoki +# --- +# black "#100F0F" bg +# base-950 "#1C1B1A" bg-2 +# base-900 "#282726" ui +# base-850 "#343331" ui-2 +# base-800 "#403E3C" ui-3 +# base-700 "#575653" tx-3 +# base-500 "#878580" tx-2 +# base-200 "#CECDC3" tx +# red-400 "#D14D41" re +# orange-400 "#DA702C" or +# yellow-400 "#D0A215" ye +# yellow-600 "#AD8301" ye-2 +# green-400 "#879A39" gr +# cyan-400 "#3AA99F" cy +# cyan-600 "#24837B" cy-2 +# cyan-700 "#1C6C66" cy-700 +# cyan-900 "#122F2C" cy-900 +# blue-400 "#4385BE" bl +# purple-400 "#8B7EC8" pu +# magenta-400 "#CE5D97" ma + +[manager] +cwd = { fg = "#CECDC3", bold = true } # tx + +# Hovered +hovered = { bg = "#1C1B1A" } # bg-2 +preview_hovered = { underline = true } + +# Find +find_keyword = { fg = "#AD8301", reversed = true } # ye-2 +find_position = { fg = "#575653", bold = true, italic = true } # tx-3 + +# Marker +marker_copied = { fg = "#879A39", bg = "#879A39" } # gr, gr +marker_cut = { fg = "#D14D41", bg = "#D14D41" } # re, re +marker_marked = { fg = "#1C6C66", bg = "#1C6C66" } # cy-700, cy-700 +marker_selected = { fg = "#3AA99F", bg = "#3AA99F" } # cy, cy + +# Tab +tab_active = { fg = "#CECDC3", bg = "#403E3C", bold = true } # tx, ui-3 +tab_inactive = { fg = "#878580", bg = "#282726" } # tx-2, ui +tab_width = 1 + +# Count +count_copied = { fg = "#879A39", bold = true, reversed = true } # gr +count_cut = { fg = "#D14D41", bold = true, reversed = true } # re +count_selected = { fg = "#3AA99F", bold = true, reversed = true } # cy + +# Border +border_symbol = "│" +border_style = { fg = "#282726" } # ui + +[mode] +# Normal mode +normal_main = { fg = "#CECDC3", bg = "#403E3C", bold = true } # tx, ui-3 +normal_alt = { fg = "#878580", bg = "#282726" } # tx-2, ui + +# Select mode +select_main = { fg = "#100F0F", bg = "#3AA99F", bold = true } # bg, cy +select_alt = { fg = "#3AA99F", bg = "#122F2C" } # cy, cy-900 + +# Unset mode +unset_main = { fg = "#100F0F", bg = "#3AA99F", bold = true } # bg, cy +unset_alt = { fg = "#3AA99F", bg = "#122F2C" } # cy, cy-900 + +[status] +overall = { fg = "#CECDC3" } # tx + +# Permissions +perm_type = { fg = "#4385BE" } # bl +perm_read = { fg = "#D0A215" } # ye +perm_write = { fg = "#D14D41" } # re +perm_exec = { fg = "#879A39" } # gr +perm_sep = { fg = "#878580" } # tx-2 + +# Progress +progress_label = { fg = "#100F0F" } # bg +progress_normal = { fg = "#3AA99F", bg = "#1C6C66" } # cy, cy-700 +progress_error = { bg = "#D14D41" } # re + +[which] +cols = 3 +mask = { bg = "#1C1B1A" } # bg-2 +cand = { fg = "#D0A215", bold = true } # ye +rest = { fg = "#D0A215", italic = true } # ye +desc = { fg = "#575653" } # tx-3 +separator = " " +separator_style = { } + +[confirm] +border = { fg = "#403E3C" } # ui-3 +title = { fg = "#575653", bold = true } # tx-3 +content = { fg = "#CECDC3", bold = true } # tx +list = { fg = "#CECDC3" } # tx +btn_yes = { fg = "#CECDC3", bg = "#403E3C", bold = true } # tx, ui-3 +btn_no = { fg = "#878580", bg = "#282726" } # tx-2, ui + +[spot] +border = { fg = "#403E3C" } # ui-3 +title = { fg = "#575653", bold = true } # tx-3 +tbl_col = { fg = "#878580" } # tx-2 +tbl_cell = { bg = "#1C1B1A" } # bg-2 + +[notify] +# Notification title +title_info = { fg = "#4385BE" } # bl +title_warn = { fg = "#DA702C" } # or +title_error = { fg = "#D14D41" } # re + +[pick] +border = { fg = "#403E3C", bold = true } # ui-3 +active = { fg = "#CECDC3" } # tx +inactive = { fg = "#878580" } # tx-2 + +[input] +border = { fg = "#403E3C" } # ui-3 +title = { fg = "#575653", bold = true } # tx-3 +value = { fg = "#CECDC3" } # tx +selected = { bg = "#1C1B1A" } # bg-2 + +[cmp] +border = { fg = "#403E3C", bold = true } # ui-3 +active = { fg = "#878580", bg = "#1C1B1A" } # tx-2, bg-2 +inactive = { fg = "#878580" } # tx-2 + +[tasks] +border = { fg = "#403E3C" } # ui-3 +title = { fg = "#575653", bold = true } # tx-3 +hovered = { bg = "#1C1B1A" } # bg-2 + +[help] +on = { fg = "#4385BE" } # bl +run = { fg = "#3AA99F" } # cy +desc = { fg = "#575653", italic = true } # tx-3 +hovered = { bg = "#1C1B1A" } # bg-2 +footer = { fg = "#CECDC3", bg = "#282726", bold = true } # tx, ui + +[filetype] +rules = [ + # Images + { mime = "image/*", fg = "#8B7EC8" }, # pu + + # Media + { mime = "video/*", fg = "#D0A215" }, # ye + { mime = "audio/*", fg = "#D0A215" }, # ye + + # Broken symbolic link + { name = "*", is = "orphan", fg = "#575653", crossed = true }, # tx-3 + { name = "*/", is = "orphan", fg = "#575653", crossed = true }, # tx-3 + + # Symbolic links + { name = "*", is = "link", fg = "#3AA99F" }, # cy + { name = "*/", is = "link", fg = "#3AA99F" }, # cy + + # Executable + { name = "*", is = "exec", fg = "#879A39" }, # gr + + # Empty files + { mime = "inode/empty", fg = "#575653" }, # tx-3 + + # Fallback + { name = "*", fg = "#878580" }, # tx-2 + { name = "*/", fg = "#CECDC3" } # tx +] diff --git a/.config/yazi/flavors/flexoki-dark.yazi/preview.png b/.config/yazi/flavors/flexoki-dark.yazi/preview.png new file mode 100644 index 0000000..176662c Binary files /dev/null and b/.config/yazi/flavors/flexoki-dark.yazi/preview.png differ diff --git a/.config/yazi/flavors/flexoki-dark.yazi/tmtheme.xml b/.config/yazi/flavors/flexoki-dark.yazi/tmtheme.xml new file mode 100644 index 0000000..0349568 --- /dev/null +++ b/.config/yazi/flavors/flexoki-dark.yazi/tmtheme.xml @@ -0,0 +1,1149 @@ + + + + + + name + Flexoki Dark + originalAuthor + kepano + colorSpaceName + sRGB + settings + + + settings + + background + #100F0F + foreground + #CECDC3 + lineHighlight + #1C1B1A + gutter + #100F0F + gutterForeground + #575653 + gutterForegroundHighlight + #878580 + minimapBorder + #343331 + caret + #FFFCF0 + blockCaret + #FFFCF0 + invisibles + #575653 + misspelling + #D14D41 + highlight + #575653 + findHighlight + #1C1B1A + findHighlightForeground + #FFFCF0 + accent + #4385BE + foldMarker + #D0A215 + guide + #282726 + activeGuide + #575653 + stackGuide + #282726 + selection + #1C1B1A + selectionBorder + #343331 + inactiveSelection + #100F0F + inactiveSelectionBorder + #343331 + bracketsOptions + underline + bracketsForeground + #879A39 + bracketContentsOptions + stippled_underline + bracketContentsForeground + #879A39 + tagsOptions + stippled_underline + tagsForeground + #879A39 + shadow + #100F0F + shadowWidth + 4 + lineDiffAdded + #879A39 + lineDiffModified + #D0A215 + + + + name + Comment + scope + comment, meta.documentation + settings + + foreground + #575653 + + + + name + String + scope + string + settings + + foreground + #3AA99F + + + + name + Regexp + scope + string.regexp + settings + + foreground + #3AA99F + + + + name + Escape \ char + scope + constant.character.escape + settings + + foreground + #D14D41 + + + + name + Number + scope + constant.numeric + settings + + foreground + #8B7EC8 + + + + name + Number Units + scope + constant.numeric.suffix + settings + + foreground + #879A39 + + + + name + Variable + scope + variable + settings + + foreground + #4385BE + + + + name + Variable Function + scope + variable.function + settings + + foreground + #DA702C + + + + name + Variable Language + scope + variable.language + settings + + foreground + #CE5D97 + + + + name + Keyword + scope + keyword + settings + + foreground + #879A39 + + + + name + Import + scope + meta.import keyword, keyword.control.import, keyword.control.import.from, keyword.other.import, keyword.control.at-rule.include, keyword.control.at-rule.import + settings + + foreground + #D14D41 + + + + name + Assignment, Comparision Operators + scope + keyword.operator.comparison, keyword.operator.assignment + settings + + foreground + #878580 + + + + name + Arithmetical Operators + scope + keyword.operator.arithmetic + settings + + foreground + #D14D41 + + + + name + Storage + scope + storage + settings + + foreground + #879A39 + + + + name + Storage modifier + scope + storage.modifier + settings + + foreground + #CECDC3 + + + + name + Class + scope + keyword.control.class, entity.name, entity.name.class, entity.name.type.class + settings + + foreground + #DA702C + + + + name + Inherited Class + scope + entity.other.inherited-class + settings + + foreground + #4385BE + + + + name + Attribute + scope + entity.other.attribute-name + settings + + foreground + #DA702C + + + + name + Library class + scope + support, support.type, support.class + settings + + foreground + #879A39 + + + + name + Function name + scope + entity.name.function + settings + + foreground + #DA702C + + + + name + Variable start + scope + punctuation.definition.variable + settings + + foreground + #879A39 + + + + name + Built-in constant + scope + constant, constant.language, meta.preprocessor + settings + + foreground + #D0A215 + + + + scope + entity.name.section + settings + + foreground + #DA702C + + + + name + Support.construct + scope + support.function.construct, keyword.other.new + settings + + foreground + #D14D41 + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #DA702C + + + + name + Tag name + scope + entity.name.tag + settings + + foreground + #4385BE + + + + name + Tag start/end + scope + punctuation.definition.tag.html, punctuation.definition.tag.begin, punctuation.definition.tag.end + settings + + foreground + #878580 + + + + name + Library function + scope + support.function + settings + + foreground + #879A39 + + + + name + Continuation + scope + punctuation.separator.continuation + settings + + foreground + #D14D41 + + + + name + Storage Type + scope + storage.type + settings + + foreground + #4385BE + + + + name + Exception + scope + support.type.exception + settings + + foreground + #DA702C + + + + name + Special + scope + keyword.other.special-method + settings + + foreground + #DA702C + + + + name + Invalid + scope + invalid + settings + + background + #D14D41 + foreground + #D14D41 + + + + name + Quoted String + scope + string.quoted.double, string.quoted.single + settings + + foreground + #3AA99F + + + + name + Quotes + scope + punctuation.definition.string + settings + + foreground + #878580 + + + + name + [] + scope + meta.brace.square, punctuation.section.brackets + settings + + foreground + #4385BE + + + + name + (),{} + scope + meta.block, meta.brace.round, meta.brace.curly, punctuation.section, punctuation.section.block, punctuation.definition.parameters, punctuation.section.group + settings + + foreground + #878580 + + + + name + , + scope + punctuation.separator, punctuation.terminator, punctuation.accessor + settings + + foreground + #878580 + + + + name + CSS: Standard color value + scope + support.constant.color, invalid.deprecated.color.w3c-non-standard-color-name.scss + settings + + foreground + #D0A215 + + + + name + CSS: Selector > [] and non-spec tags + scope + meta.selector.css + settings + + foreground + #878580 + + + + name + CSS: Tag + scope + entity.name.tag.css, entity.name.tag.scss, source.less keyword.control.html.elements, source.sass keyword.control.untitled + settings + + foreground + #DA702C + + + + name + CSS .class + scope + entity.other.attribute-name.class + settings + + foreground + #DA702C + + + + name + CSS: #id + scope + entity.other.attribute-name.id + settings + + foreground + #DA702C + + + + name + CSS :pseudo + scope + entity.other.attribute-name.pseudo-element, entity.other.attribute-name.tag.pseudo-element, entity.other.attribute-name.pseudo-class, entity.other.attribute-name.tag.pseudo-class + settings + + foreground + #4385BE + + + + name + CSS: @-rule + scope + keyword.control.at-rule + settings + + foreground + #DA702C + + + + name + Haskell: Variable + scope + source.haskell variable + settings + + foreground + #DA702C + + + + name + HTML: = + scope + text.html.basic meta.tag.other.html, text.html.basic meta.tag.any.html, text.html.basic meta.tag.block.any, text.html.basic meta.tag.inline.any, text.html.basic meta.tag.structure.any.html, text.html.basic source.js.embedded.html, punctuation.separator.key-value.html + settings + + foreground + #878580 + + + + name + HTML: something= + scope + text.html.basic entity.other.attribute-name.html, meta.tag.xml entity.other.attribute-name + settings + + foreground + #DA702C + + + + name + Ruby: Special Method + scope + keyword.other.special-method.ruby + settings + + foreground + #879A39 + + + + name + Ruby: Constant Other + scope + variable.other.constant.ruby + settings + + foreground + #D0A215 + + + + name + Ruby: :symbol + scope + constant.other.symbol.ruby + settings + + foreground + #3AA99F + + + + name + Ruby: Special Method + scope + keyword.other.special-method.ruby + settings + + foreground + #DA702C + + + + name + PHP: Array() + scope + meta.array support.function.construct.php + settings + + foreground + #D0A215 + + + + name + C: Preprocessor + scope + entity.name.function.preprocessor.c, meta.preprocessor.c.include, meta.preprocessor.macro.c + settings + + foreground + #DA702C + + + + name + C: include + scope + meta.preprocessor.c.include string.quoted.other.lt-gt.include.c, meta.preprocessor.c.include punctuation.definition.string.begin.c, meta.preprocessor.c.include punctuation.definition.string.end.c + settings + + foreground + #3AA99F + + + + name + Other: Removal + scope + other.package.exclude, other.remove + settings + + foreground + #D14D41 + + + + name + Other: Add + scope + other.add + settings + + foreground + #3AA99F + + + + name + Tex: {} + scope + punctuation.section.group.tex , punctuation.definition.arguments.begin.latex, punctuation.definition.arguments.end.latex, punctuation.definition.arguments.latex + settings + + foreground + #D14D41 + + + + name + Tex: {text} + scope + meta.group.braces.tex + settings + + foreground + #D0A215 + + + + name + Tex: Other Math + scope + string.other.math.tex + settings + + foreground + #D0A215 + + + + name + Tex: {var} + scope + variable.parameter.function.latex + settings + + foreground + #DA702C + + + + name + Tex: Math \\ + scope + punctuation.definition.constant.math.tex + settings + + foreground + #D14D41 + + + + name + Tex: Constant Math + scope + text.tex.latex constant.other.math.tex, constant.other.general.math.tex, constant.other.general.math.tex, constant.character.math.tex + settings + + foreground + #3AA99F + + + + name + Tex: Other Math String + scope + string.other.math.tex + settings + + foreground + #D0A215 + + + + name + Tex: $ + scope + punctuation.definition.string.begin.tex, punctuation.definition.string.end.tex + settings + + foreground + #D14D41 + + + + name + Tex: \label + scope + keyword.control.label.latex, text.tex.latex constant.other.general.math.tex + settings + + foreground + #3AA99F + + + + name + Tex: \label { } + scope + variable.parameter.definition.label.latex + settings + + foreground + #D14D41 + + + + name + Tex: Function + scope + support.function.be.latex + settings + + foreground + #879A39 + + + + name + Tex: Support Function Section + scope + support.function.section.latex + settings + + foreground + #DA702C + + + + name + Tex: Support Function + scope + support.function.general.tex + settings + + foreground + #3AA99F + + + + name + Tex: Reference Label + scope + keyword.control.ref.latex + settings + + foreground + #3AA99F + + + + name + Python: storage + scope + storage.type.class.python, storage.type.function.python, storage.modifier.global.python + settings + + foreground + #879A39 + + + + name + Python: Support.exception + scope + support.type.exception.python + settings + + foreground + #D0A215 + + + + name + Shell: meta scope in loop + scope + meta.scope.for-in-loop.shell, variable.other.loop.shell + settings + + foreground + #CECDC3 + + + + name + Shell: Meta Block + scope + meta.scope.case-block.shell, meta.scope.case-body.shell + settings + + foreground + #CECDC3 + + + + name + Shell: [] + scope + punctuation.definition.logical-expression.shell + settings + + foreground + #D14D41 + + + + name + Storage + scope + storage.modifier.c++ + settings + + foreground + #879A39 + + + + name + Perl: functions + scope + support.function.perl + settings + + foreground + #4385BE + + + + name + diff: header + scope + meta.diff, meta.diff.header + settings + + foreground + #575653 + + + + name + diff: range + scope + meta.diff.range + settings + + foreground + #4385BE + + + + name + diff: deleted + scope + markup.deleted + settings + + foreground + #D14D41 + + + + name + diff: changed + scope + markup.changed + settings + + foreground + #D0A215 + + + + name + diff: inserted + scope + markup.inserted + settings + + foreground + #879A39 + + + + name + Warning + scope + markup.warning + settings + + foreground + #D0A215 + + + + name + Error + scope + markup.error + settings + + foreground + #D14D41 + + + + scope + markup.heading, punctuation.definition.heading.markdown + settings + + foreground + #575653 + fontStyle + bold + + + + name + Markdown quote + scope + markup.quote + settings + + foreground + #879A39 + + + + name + Markdown em + scope + markup.italic + settings + + fontStyle + italic + + + + scope + markup.bold + settings + + fontStyle + bold + + + + scope + markup.underline.link.markdown, meta.link.reference constant.other.reference.link.markdown + settings + + foreground + #3AA99F + + + + scope + constant.other.reference.link.markdown + settings + + foreground + #8B7EC8 + + + + scope + meta.paragraph.markdown meta.dummy.line-break + settings + + background + #575653 + + + + name + SublimeBracketHighlighter + scope + brackethighlighter.all + settings + + foreground + #575653 + + + + name + Find In Files: File Name + scope + entity.name.filename.find-in-files + settings + + foreground + #3AA99F + + + + name + Find In Files: Line numbers + scope + constant.numeric.line-number.find-in-files + settings + + foreground + #575653 + + + + name + JavaScript Variables + scope + variable.other.readwrite.js, variable.other.object.js, variable.other.constant.js + settings + + foreground + #CECDC3 + + + + name + Go Variables + scope + variable.other.go, variable.other.member.go, variable.other.member.declaration.go, variable.other.constant.declaration.go + settings + + foreground + #CECDC3 + + + + + diff --git a/.config/yazi/flavors/sunset.yazi/LICENSE b/.config/yazi/flavors/sunset.yazi/LICENSE new file mode 100644 index 0000000..ad83d45 --- /dev/null +++ b/.config/yazi/flavors/sunset.yazi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Mykola Yavir + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.config/yazi/flavors/sunset.yazi/LICENSE-tmtheme b/.config/yazi/flavors/sunset.yazi/LICENSE-tmtheme new file mode 100644 index 0000000..ad83d45 --- /dev/null +++ b/.config/yazi/flavors/sunset.yazi/LICENSE-tmtheme @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Mykola Yavir + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.config/yazi/flavors/sunset.yazi/README.md b/.config/yazi/flavors/sunset.yazi/README.md new file mode 100644 index 0000000..1ce8dc2 --- /dev/null +++ b/.config/yazi/flavors/sunset.yazi/README.md @@ -0,0 +1,34 @@ +
+ Yazi logo +
+ +

+ Sunset Flavor for Yazi +

+ +## 👀 Preview + + + +## 🎨 Installation + + +```bash +ya pack -a PinThePenguine/sunset +``` + +## ⚙️ Usage + +Add the these lines to your `theme.toml` configuration file to use it: + + +```toml +[flavor] +use = "sunset" +``` + +## 📜 License + +The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed. + +Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details. diff --git a/.config/yazi/flavors/sunset.yazi/flavor.toml b/.config/yazi/flavors/sunset.yazi/flavor.toml new file mode 100644 index 0000000..53a9c73 --- /dev/null +++ b/.config/yazi/flavors/sunset.yazi/flavor.toml @@ -0,0 +1,159 @@ +# : Manager {{{ + +[manager] +cwd = { fg = "#EBDBB2" } + +# Tab +tab_active = { fg = "#12202B", bg = "#E9C46A", bold = true} +tab_inactive = { fg = "#EBDBB2", bg = "#504945"} +tab_width = 1 + +# Find +find_keyword = { fg = "#2A9D8F", bold = true, italic = true, underline = true } +find_position = { fg = "#2A9D8F", bold = true, italic = true } + +# Marker +marker_copied = { fg = "#83A598", bg = "#83A598" } +marker_cut = { fg = "#264653", bg = "#264653" } +marker_marked = { fg = "#2A9D8F", bg = "#2A9D8F" } +marker_selected = { fg = "#E76551", bg = "#e76551" } + +# Count +count_copied = { fg = "#12202B", bg = "#83A598" } +count_cut = { fg = "#EBDBB2", bg = "#264653" } +count_selected = { fg = "#12202B", bg = "#E76551" } + +# Border +border_symbol = " " + +# : }}} + + +# : Status {{{ + +[status] +separator_open = "🭁" +separator_close = "🭠" +separator_style = { bg = "#12202B", fg = "#F4A261" } + +# Mode +mode_normal = { bg = "#F4A261", fg ="#08070C", bold = true } +mode_select = { bg = "#2A9D8F", fg ="#08070C", bold = true } +mode_unset = { bg = "#E76551", fg ="#08070C" ,bold = true } + +# Progress +progress_label = { bold = true } +progress_normal = { fg = "#E9C46A", bg = "#08070C" } +progress_error = { fg = "#E76551", bg = "#08070C" } + +# Permissions +permissions_t = { fg = "#E9C48A" } +permissions_w = { fg = "#E76551" } +permissions_x = { fg = "#2A9D8F" } +permissions_r = { fg = "#264653" } +permissions_s = { fg = "#EBDBB2" } + +# : }}} + + +# : Select {{{ + +[select] +border = { fg = "#E9C46A" } +active = { fg = "#E76551", bold = true } +inactive = {} + +# : }}} + + +# : Input {{{ + +[input] +border = { fg = "#E9C46A" } +value = { fg = "#EBDBB2"} + +# : }}} + + +# : Completion {{{ + +[completion] +border = { fg = "#E9C46A", bg = "#12202B" } + +# : }}} + + +# : Tasks {{{ + +[tasks] +border = { fg = "#E9C46A" } +title = {} +hovered = { fg = "#264653", underline = true } + +# : }}} + + +# : Which {{{ + +[which] +cols = 3 +mask = { bg = "#08070C" } +cand = { fg = "#E9C46A" } +rest = { fg = "#12202B" } +desc = { fg = "#EBDBB2" } +separator = " ▶ " +separator_style = { fg = "#EBDBB2" } + +# : }}} + + +# : Help {{{ + +[help] +on = { fg = "#E9C46A" } +run = { fg = "#83A598" } +footer = { fg = "#08070C", bg = "#EBDBB2" } + +# : }}} + + +# : Notify {{{ + +[notify] +title_info = { fg = "#83A598" } +title_warn = { fg = "#E9c46a" } +title_error = { fg = "#E76551" } + +# : }}} + + +# : File-specific styles {{{ + +[filetype] + +rules = [ + # Images + { mime = "image/*", fg = "#F4A261" }, + + # Media + { mime = "{audio,video}/*", fg = "#264653" }, + + # Archives + { mime = "application/{,g}zip", fg = "#E76551" }, + { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#E76551" }, + + # Documents + { mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#83A588" }, + + + # Special files + { name = "*", is = "orphan", bg = "#504945" }, + { name = "*", is = "exec" , fg = "#2a9d8F" }, + + # Dummy files + { name = "*", is = "dummy", bg = "#504945" }, + { name = "*/", is = "dummy", bg = "#504950" }, + + # Fallback + { name = "*/", fg = "#e9c461" } +] diff --git a/.config/yazi/flavors/sunset.yazi/preview.png b/.config/yazi/flavors/sunset.yazi/preview.png new file mode 100644 index 0000000..66b83ef Binary files /dev/null and b/.config/yazi/flavors/sunset.yazi/preview.png differ diff --git a/.config/yazi/flavors/sunset.yazi/tmtheme.xml b/.config/yazi/flavors/sunset.yazi/tmtheme.xml new file mode 100644 index 0000000..7f9d02b --- /dev/null +++ b/.config/yazi/flavors/sunset.yazi/tmtheme.xml @@ -0,0 +1,448 @@ + + + + + name + Sunset + settings + + + settings + + background + #12202B + caret + #572B9F + foreground + #E9C46A + invisibles + #504945 + lineHighlight + #264653 + selection + #264653 + findHighlight + #264653 + selectionBorder + #222218 + gutterForeground + #504945 + + + + name + Comment + scope + comment + settings + + foreground + #727169 + + + + name + String + scope + string + settings + + foreground + #83A598 + + + + name + Number + scope + constant.numeric + settings + + foreground + #2A9D8F + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #2A9D8F + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #2A9D8F + + + + name + Variable + scope + variable + settings + + fontStyle + #F4A261 + + + + name + Ruby's @variable + scope + variable.other.readwrite.instance + settings + + fontStyle + + foreground + #F4A261 + + + + name + String interpolation + scope + constant.character.escaped, constant.character.escape, string source, string source.ruby + settings + + fontStyle + + foreground + #491B4F + + + + name + Keyword + scope + keyword + settings + + foreground + #E76551 + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #2A9D8F + + + + name + Storage type + scope + storage.type + settings + + foreground + #2A9D8F + + + + name + Class name + scope + entity.name.class + settings + + foreground + #264653 + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + foreground + #E76551 + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + foreground + #75649D + + + + name + Function argument + scope + variable.parameter + settings + + foreground + #007966 + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + + foreground + #F4A261 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #E76551 + + + + name + Library function + scope + support.function + settings + + fontStyle + + foreground + #264653 + + + + name + Library constant + scope + support.constant + settings + + fontStyle + + foreground + #7FB4CA + + + + name + Library class/type + scope + support.type, support.class + settings + + foreground + #7AA89F + + + + name + Library variable + scope + support.other.variable + settings + + foreground + #EDCFB9 + + + + name + Invalid + scope + invalid + settings + + fontStyle + + foreground + #EDCFB9 + + + + name + Invalid deprecated + scope + invalid.deprecated + settings + + foreground + #717C7C + + + + name + JSON String + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #5F3A63 + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + foreground + #E87E44 + + + + name + diff.deleted + scope + markup.deleted + settings + + background + #E87E44 + + + + name + diff.inserted + scope + markup.inserted + settings + + background + #504945 + + + + name + diff.changed + scope + markup.changed + settings + + background + #504830 + + + + scope + constant.numeric.line-number.find-in-files - match + settings + + foreground + #50546D + + + + scope + entity.name.filename + settings + + foreground + #019879 + + + + scope + message.error + settings + + foreground + #F01501 + + + + name + JSON Punctuation + scope + punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json + settings + + foreground + #264653 + + + + name + JSON Structure + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #4A1B42 + + + + name + JSON String + scope + meta.structure.dictionary.value.json string.quoted.double.json + settings + + foreground + #ffffff + + + + name + Escape Characters + scope + constant.character.escape + settings + + foreground + #E76551 + + + + name + Regular Expressions + scope + string.regexp + settings + + foreground + #DE51AD + + + + uuid + 260540bf-9550-48ff-9b7c-dbf17b5ecd02 + colorSpaceName + sRGB + semanticClass + theme.dark.sunset + + diff --git a/.config/yazi/flavors/tokyo-night.yazi/LICENSE b/.config/yazi/flavors/tokyo-night.yazi/LICENSE new file mode 100644 index 0000000..9a5124e --- /dev/null +++ b/.config/yazi/flavors/tokyo-night.yazi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 - sxyazi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.config/yazi/flavors/tokyo-night.yazi/LICENSE-tmtheme b/.config/yazi/flavors/tokyo-night.yazi/LICENSE-tmtheme new file mode 100644 index 0000000..44b4479 --- /dev/null +++ b/.config/yazi/flavors/tokyo-night.yazi/LICENSE-tmtheme @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Himanshu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.config/yazi/flavors/tokyo-night.yazi/README.md b/.config/yazi/flavors/tokyo-night.yazi/README.md new file mode 100644 index 0000000..64421ec --- /dev/null +++ b/.config/yazi/flavors/tokyo-night.yazi/README.md @@ -0,0 +1,47 @@ +
+ Yazi logo +
+ +

+ Tokyo Night Flavor for Yazi +

+ +## 👀 Preview + + + +## 🎨 Installation + +### Using package manager + +```bash +ya pack -a BennyOe/tokyo-night +``` + +### Manual install + +```bash +# Linux/macOS +git clone https://github.com/BennyOe/tokyo-night.yazi.git ~/.config/yazi/flavors/tokyo-night.yazi + +# Windows +git clone https://github.com/BennyOe/tokyo-night.yazi.git %AppData%\yazi\config\flavors\tokyo-night.yazi +``` + +## ⚙️ Usage + +Add the these lines to your `theme.toml` configuration file to use it: + + +```toml +[flavor] +use = "tokyo-night" +# For Yazi 0.4 and above +dark = "tokyo-night" +``` + +## 📜 License + +The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed. + +Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details. diff --git a/.config/yazi/flavors/tokyo-night.yazi/flavor.toml b/.config/yazi/flavors/tokyo-night.yazi/flavor.toml new file mode 100644 index 0000000..b5860de --- /dev/null +++ b/.config/yazi/flavors/tokyo-night.yazi/flavor.toml @@ -0,0 +1,185 @@ +# vim:fileencoding=utf-8:foldmethod=marker + +# : Manager {{{ + +[manager] +cwd = { fg = "#7aa2f7" } # Blue + +# Hovered +hovered = { reversed = true } +preview_hovered = { underline = true } + +# Find +find_keyword = { fg = "#f7768e", bold = true, italic = true, underline = true } # Red +find_position = { fg = "#bb9af7", bg = "reset", bold = true, italic = true } # Magenta + +# Marker +marker_copied = { fg = "#9ece6a", bg = "#9ece6a" } # Green +marker_cut = { fg = "#e0af68", bg = "#f7768e" } # Red +marker_marked = { fg = "#7aa2f7", bg = "#7dcfff" } # Cyan +marker_selected = { fg = "#e0af68", bg = "#e0af68" } # Yellow + +# Tab +tab_active = { bg = "#282C34", fg = "#7aa2f7" } # Darkened background, Blue text +tab_inactive = {} +tab_width = 1 + +# Count +count_copied = { fg = "#414868", bg = "#9ece6a" } # Darkened black on Green +count_cut = { fg = "#414868", bg = "#e0af68" } # Darkened black on Yellow +count_selected = { fg = "#414868", bg = "#7aa2f7" } # Darkened black on Blue + +# Border +border_symbol = "│" +border_style = { fg = "#414868" } # Darkened black + +# : }}} + + +# : Mode {{{ + +[mode] + +normal_main = { fg = "#414868", bg = "#7aa2f7", bold = true } # Darkened black on Blue +normal_alt = { fg = "#7aa2f7", bg = "#414868" } # Blue on Darkened black + +# Select mode +select_main = { fg = "#414868", bg = "#9ece6a", bold = true } # Darkened black on Green +select_alt = { fg = "#7aa2f7", bg = "#414868" } # Blue on Darkened black + +# Unset mode +unset_main = { fg = "#414868", bg = "#bb9af7", bold = true } # Darkened black on Magenta +unset_alt = { fg = "#7aa2f7", bg = "#414868" } # Blue on Darkened black + +# : }}} + + +# : Status bar {{{ + +[status] +sep_left = { open = "", close = "" } +sep_right = { open = "", close = "" } +separator_style = { fg = "#414868", bg = "#414868" } # Blue on Darkened black + + +# Progress +progress_label = { fg = "#a9b1d6", bold = true } # White +progress_normal = { fg = "#7aa2f7", bg = "#414868" } # Blue on Darkened black +progress_error = { fg = "#f7768e", bg = "#414868" } # Red on Darkened black + +# Permissions +perm_sep = { fg = "#7aa2f7" } # Blue +perm_type = { fg = "#9ece6a" } # Green +perm_read = { fg = "#e0af68" } # Yellow +perm_write = { fg = "#f7768e" } # Red +perm_exec = { fg = "#bb9af7" } # Magenta + + +# : }}} + +# : Pick {{{ + +[pick] +border = { fg = "#7aa2f7" } # Blue +active = { fg = "#bb9af7", bold = true } # Magenta +inactive = {} + +# : }}} + + +# : Input {{{ + +[input] +border = { fg = "#7aa2f7" } # Blue +title = {} +value = {} +selected = { reversed = true } + +# : }}} + + +# : Completion {{{ + +[cmp] +border = { fg = "#7aa2f7" } # Blue + +# : }}} + + +# : Tasks {{{ + +[tasks] +border = { fg = "#7aa2f7" } # Blue +title = {} +hovered = { fg = "#bb9af7", underline = true } # Magenta + +# : }}} + + +# : Which {{{ + +[which] +mask = { bg = "#414868" } # Darkened black +cand = { fg = "#9ece6a" } # Green +rest = { fg = "#a9b1d6" } # White +desc = { fg = "#bb9af7" } # Magenta +separator = "  " +separator_style = { fg = "#626880" } # Darkened gray + +# : }}} + + +# : Help {{{ + +[help] +on = { fg = "#9ece6a" } # Green +run = { fg = "#bb9af7" } # Magenta +hovered = { reversed = true, bold = true } +footer = { fg = "#a9b1d6", bg = "#c6d0f5" } # White on Light gray + +# : }}} + + +# : Notify {{{ + +[notify] +title_info = { fg = "#9ece6a" } # Green +title_warn = { fg = "#f7768e" } # Red +title_error = { fg = "#e0af68" } # Yellow + +# : }}} + + +# : File-specific styles {{{ + +[filetype] + +rules = [ + # Images + { mime = "image/*", fg = "#e0af68" }, # Yellow + + # Media + { mime = "video/*", fg = "#f7768e" }, # Red + { mime = "audio/*", fg = "#f7768e" }, # Red + + # Archives + { mime = "application/zip", fg = "#bb9af7" }, # Magenta + { mime = "application/x-tar", fg = "#bb9af7" }, # Magenta + { mime = "application/x-bzip*", fg = "#bb9af7" }, # Magenta + { mime = "application/x-bzip2", fg = "#bb9af7" }, # Magenta + { mime = "application/x-7z-compressed", fg = "#bb9af7" }, # Magenta + { mime = "application/x-rar", fg = "#bb9af7" }, # Magenta + { mime = "application/x-xz", fg = "#bb9af7" }, # Magenta + + # Documents + { mime = "application/doc", fg = "#9ece6a" }, # Green + { mime = "application/pdf", fg = "#9ece6a" }, # Green + { mime = "application/rtf", fg = "#9ece6a" }, # Green + { mime = "application/vnd.*", fg = "#9ece6a" }, # Green + + # Fallback + { name = "*", fg = "#c6d0f5" }, # Light gray + { name = "*/", fg = "#7aa2f7" } # Blue +] + +# : }}} diff --git a/.config/yazi/flavors/tokyo-night.yazi/preview.png b/.config/yazi/flavors/tokyo-night.yazi/preview.png new file mode 100644 index 0000000..75f2f4a Binary files /dev/null and b/.config/yazi/flavors/tokyo-night.yazi/preview.png differ diff --git a/.config/yazi/flavors/tokyo-night.yazi/tmtheme.xml b/.config/yazi/flavors/tokyo-night.yazi/tmtheme.xml new file mode 100644 index 0000000..21d2163 --- /dev/null +++ b/.config/yazi/flavors/tokyo-night.yazi/tmtheme.xml @@ -0,0 +1,1329 @@ + + + + + author + Kristi Russell (http://github.com/enkia) + colorSpaceName + sRGB + name + Enki-Tokyo-Night + semanticClass + enki.theme.tokyo + settings + + + settings + + activeGuide + #363b54 + background + #1d1f29 + caret + #DBC08A + findHighlight + #ffa300 + findHighlightForeground + #000000 + foreground + #AFBAD4ff + guide + #4f4f5e40 + gutterForeground + #3b415caa + inactiveSelection + #282833 + invisibles + #4f4f5e + lineHighlight + #00000030 + phantomCss + <![CDATA[ html { position: relative; } ]]> + popupCss + <![CDATA[ html { color: #B376B3; background-color: #2b2d3a; padding: 10px; } a { color: #6189BB; line-height: 1.2; text-decoration: none; } .error, .deleted { color: #50B4DC; } .success, .inserted { color: #9DBA72; } .warning, .modified { color: #ffa300; } ]]> + selection + #9D599D40 + selectionBorder + #9D599D + shadow + #00000010 + stackGuide + #4f4f5e60 + tagsOptions + underline + + + + name + Italics - Comments, Storage, Keyword Flow, Vue attributes, Decorators + scope + comment, meta.var.expr storage.type, keyword.control.flow, meta.directive.vue punctuation.separator.key-value.html, meta.directive.vue entity.other.attribute-name.html, tag.decorator.js entity.name.tag.js, tag.decorator.js punctuation.definition.tag.js, storage.modifier + settings + + fontStyle + italic + + + + name + Comment + scope + comment, comment.block.documentation, punctuation.definition.comment + settings + + foreground + #444b6a + + + + name + Comment Doc + scope + comment.block.documentation variable, comment.block.documentation storage, comment.block.documentation punctuation, comment.block.documentation keyword, comment.block.documentation support, comment.block.documentation markup, comment.block.documentation markup.inline.raw.string.markdown, keyword.other.phpdoc.php + settings + + foreground + #7982a9 + + + + name + Number, Boolean, Undefined, Null + scope + variable.other.constant, punctuation.definition.constant, constant.language, constant.numeric, support.constant + settings + + foreground + #ff9e64 + + + + name + String, Symbols, Markup Heading + scope + string, constant.other.symbol, constant.other.key, markup.heading, meta.attribute-selector + settings + + fontStyle + + foreground + #9ece6a + + + + name + Colors + scope + constant.other.color, constant.other.color.rgb-value.hex punctuation.definition.constant + settings + + foreground + #9aa5ce + + + + name + Invalid + scope + invalid, invalid.illegal + settings + + foreground + #ff5370 + + + + name + Invalid deprecated + scope + invalid.deprecated + settings + + foreground + #bb9af7 + + + + name + Storage Type + scope + storage.type + settings + + foreground + #bb9af7 + + + + name + Storage - modifier, var, const, let + scope + meta.var.expr storage.type, storage.modifier + settings + + foreground + #9d7cd8 + + + + name + Interpolation + scope + punctuation.definition.template-expression, punctuation.section.embedded + settings + + foreground + #7dcfff + + + + name + Spread + scope + keyword.operator.spread, keyword.operator.rest + settings + + fontStyle + bold + foreground + #f7768e + + + + name + Operator, Misc + scope + keyword.operator, keyword.control.as, keyword.other, keyword.operator.bitwise.shift, punctuation, punctuation.definition.constant.markdown, punctuation.definition.string, punctuation.support.type.property-name, text.html.vue-html meta.tag, punctuation.definition.keyword, punctuation.terminator.rule, punctuation.definition.entity, punctuation.definition.tag, punctuation.separator.inheritance.php, punctuation.definition.tag.html, keyword.other.template, keyword.other.substitution, entity.name.operator, text.html.vue meta.tag.block.any.html, text.html.vue meta.tag.inline.any.html, text.html.vue meta.tag.other.html, text.html.twig meta.tag.inline.any.html, text.html.twig meta.tag.block.any.html, text.html.twig meta.tag.structure.any.html, text.html.twig meta.tag.any.html + settings + + foreground + #89ddff + + + + name + Import, Export, From, Default + scope + keyword.control.import, keyword.control.export, keyword.control.from, keyword.control.default, meta.import keyword.other + settings + + foreground + #7dcfff + + + + name + Keyword + scope + keyword, keyword.control, keyword.other.important + settings + + foreground + #bb9af7 + + + + name + Keyword SQL + scope + keyword.other.DML + settings + + foreground + #7dcfff + + + + name + Keyword Operator Logical, Arrow, Ternary, Comparison + scope + keyword.operator.logical, storage.type.function, keyword.operator.bitwise, keyword.operator.ternary, keyword.operator.comparison, keyword.operator.relational, keyword.operator.or.regexp + settings + + foreground + #bb9af7 + + + + name + Tag + scope + entity.name.tag, entity.name.tag support.class.component, meta.tag + settings + + foreground + #f7768e + + + + name + Tag Punctuation + scope + punctuation.definition.tag, punctuation.definition.tag.html, punctuation.definition.tag.begin.html, punctuation.definition.tag.end.html + settings + + foreground + #ba3c97 + + + + name + Blade + scope + keyword.blade, entity.name.function.blade + settings + + foreground + #7aa2f7 + + + + name + PHP - Embedded Tag + scope + punctuation.section.embedded.begin.php, punctuation.section.embedded.end.php + settings + + foreground + #0db9d7 + + + + name + Smarty - Twig tag - Blade + scope + punctuation.definition.variable.smarty, punctuation.section.embedded.begin.smarty, punctuation.section.embedded.end.smarty, meta.tag.template.value.twig, punctuation.section.tag.twig, meta.tag.expression.twig, punctuation.definition.tag.expression.twig, punctuation.definition.tag.output.twig, variable.parameter.smarty + settings + + foreground + #7DCFFF + + + + name + Smarty - Twig variable - function + scope + variable.other.property.twig, support.function.twig, meta.function-call.twig, keyword.control.twig, keyword.control.smarty, keyword.operator.other.twig, keyword.operator.comparison.twig, support.function.functions.twig, support.function.functions.twig, keyword.operator.assignment.twig, support.function.filters.twig, support.function.built-in.smarty, keyword.operator.smarty, text.blade text.html.blade custom.compiler.blade.php punctuation.section.embedded.php entity.name.tag.block.any.html, text.blade text.html.blade custom.compiler.blade.php punctuation.section.embedded.php constant.other.inline-data.html, text.blade text.html.blade custom.compiler.blade.php support.function constant.other.inline-data.html + settings + + foreground + #0db9d7 + + + + name + Globals - PHP Constants etc + scope + constant.other.php, variable.other.global.safer, variable.other.global.safer punctuation.definition.variable, variable.other.global, variable.other.global punctuation.definition.variable, constant.other + settings + + foreground + #e0af68 + + + + name + Variables + scope + variable, support.variable, string constant.other.placeholder + settings + + foreground + #c0caf5 + + + + name + Object Variable + scope + variable.other.object, support.module.node + settings + + foreground + #c0caf5 + + + + name + Object Key + scope + meta.object-literal.key, meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js, string.alias.graphql, string.unquoted.graphql, string.unquoted.alias.graphql, meta.field.declaration.ts variable.object.property + settings + + foreground + #73daca + + + + name + Object Property + scope + variable.other.property, support.variable.property, support.variable.property.dom, meta.function-call variable.other.object.property, variable.language.prototype, meta.property.object, variable.other.member + settings + + foreground + #7dcfff + + + + name + Object Property + scope + variable.other.object.property + settings + + foreground + #c0caf5 + + + + name + Object Literal Member lvl 3 (Vue Prop Validation) + scope + meta.objectliteral meta.object.member meta.objectliteral meta.object.member meta.objectliteral meta.object.member meta.object-literal.key + settings + + foreground + #41a6b5 + + + + name + C-related Block Level Variables + scope + source.cpp meta.block variable.other + settings + + foreground + #f7768e + + + + name + Other Variable + scope + support.other.variable + settings + + foreground + #f7768e + + + + name + Methods + scope + meta.class-method.js entity.name.function.js, entity.name.method.js, variable.function.constructor, keyword.other.special-method, storage.type.cs + settings + + foreground + #7aa2f7 + + + + name + Function Definition + scope + entity.name.function, meta.function-call, meta.function-call entity.name.function, variable.function, meta.definition.method entity.name.function, meta.object-literal entity.name.function + settings + + foreground + #7aa2f7 + + + + name + Function Argument + scope + variable.parameter.function.language.special, variable.parameter, meta.function.parameters punctuation.definition.variable, meta.function.parameter variable + settings + + foreground + #e0af68 + + + + name + Constant, Tag Attribute + scope + keyword.other.type.php, storage.type.php, constant.character, constant.escape, keyword.other.unit + settings + + foreground + #bb9af7 + + + + name + Variable Definition + scope + meta.definition.variable variable.other.constant, meta.definition.variable variable.other.readwrite, variable.other.declaration + settings + + foreground + #bb9af7 + + + + name + Inherited Class + scope + entity.other.inherited-class + settings + + fontStyle + + foreground + #bb9af7 + + + + name + Class, Support, DOM, etc + scope + support.class, support.type, variable.other.readwrite.alias, support.orther.namespace.use.php, meta.use.php, support.other.namespace.php, support.type.sys-types, support.variable.dom, support.constant.math, support.type.object.module, support.constant.json, entity.name.namespace, meta.import.qualifier, entity.name.class + settings + + foreground + #0db9d7 + + + + name + Class Name + scope + entity.name + settings + + foreground + #c0caf5 + + + + name + Support Function + scope + support.function + settings + + foreground + #0db9d7 + + + + name + CSS Class and Support + scope + source.css support.type.property-name, source.sass support.type.property-name, source.scss support.type.property-name, source.less support.type.property-name, source.stylus support.type.property-name, source.postcss support.type.property-name, support.type.property-name.css, support.type.vendored.property-name, support.type.map.key + settings + + foreground + #7aa2f7 + + + + name + CSS Font + scope + support.constant.font-name, meta.definition.variable + settings + + foreground + #9ece6a + + + + name + CSS Class + scope + entity.other.attribute-name.class, meta.at-rule.mixin.scss entity.name.function.scss + settings + + foreground + #9ece6a + + + + name + CSS ID + scope + entity.other.attribute-name.id + settings + + foreground + #fc7b7b + + + + name + CSS Tag + scope + entity.name.tag.css, entity.name.tag.reference, entity.name.tag.scss + settings + + foreground + #0db9d7 + + + + name + CSS Tag Reference + scope + entity.name.tag.reference + settings + + foreground + #e0af68 + + + + name + CSS Property Separator + scope + meta.property-list punctuation.separator.key-value + settings + + foreground + #9abdf5 + + + + name + CSS Punctuation + scope + meta.property-list, punctuation.definition.entity.css + settings + + foreground + #e0af68 + + + + name + SCSS @ + scope + meta.at-rule.mixin keyword.control.at-rule.mixin, meta.at-rule.include entity.name.function.scss, meta.at-rule.include keyword.control.at-rule.include + settings + + foreground + #bb9af7 + + + + name + SCSS Mixins, Extends, Include Keyword + scope + keyword.control.at-rule.include punctuation.definition.keyword, keyword.control.at-rule.mixin punctuation.definition.keyword, meta.at-rule.include keyword.control.at-rule.include, keyword.control.at-rule.extend punctuation.definition.keyword, meta.at-rule.extend keyword.control.at-rule.extend, entity.other.attribute-name.placeholder.css punctuation.definition.entity.css, meta.at-rule.media keyword.control.at-rule.media, meta.at-rule.mixin keyword.control.at-rule.mixin, meta.at-rule.function keyword.control.at-rule.function, keyword.control punctuation.definition.keyword, meta.at-rule.import.scss entity.other.attribute-name.placeholder.scss punctuation.definition.entity.scss, meta.at-rule.import.scss keyword.control.at-rule.import.scss + settings + + foreground + #9d7cd8 + + + + name + SCSS Include Mixin Argument + scope + meta.property-list meta.at-rule.include + settings + + foreground + #c0caf5 + + + + name + CSS value + scope + support.constant.property-value + settings + + foreground + #ff9e64 + + + + name + Sub-methods + scope + entity.name.module.js, variable.import.parameter.js, variable.other.class.js + settings + + foreground + #c0caf5 + + + + name + Language methods + scope + variable.language + settings + + foreground + #f7768e + + + + name + Variable punctuation + scope + variable.other punctuation.definition.variable + settings + + foreground + #c0caf5 + + + + name + Keyword this with Punctuation, ES7 Bind Operator + scope + source.js constant.other.object.key.js string.unquoted.label.js, variable.language.this punctuation.definition.variable, keyword.other.this + settings + + foreground + #f7768e + + + + name + HTML Attributes + scope + entity.other.attribute-name, text.html.basic entity.other.attribute-name.html, text.html.basic entity.other.attribute-name, text.blade entity.other.attribute-name.class, text.html.smarty entity.other.attribute-name.class + settings + + foreground + #bb9af7 + + + + name + Vue Template attributes + scope + meta.directive.vue punctuation.separator.key-value.html, meta.directive.vue entity.other.attribute-name.html + settings + + foreground + #bb9af7 + + + + name + Vue Template attribute separator + scope + meta.directive.vue punctuation.separator.key-value.html + settings + + foreground + #89ddff + + + + name + CSS IDs + scope + source.sass keyword.control + settings + + foreground + #7aa2f7 + + + + name + CSS psuedo selectors + scope + entity.other.attribute-name.pseudo-class, entity.other.attribute-name.pseudo-element, entity.other.attribute-name.placeholder, meta.property-list meta.property-value + settings + + foreground + #bb9af7 + + + + name + Inserted + scope + markup.inserted + settings + + foreground + #449dab + + + + name + Deleted + scope + markup.deleted + settings + + foreground + #914c54 + + + + name + Changed + scope + markup.changed + settings + + foreground + #6183bb + + + + name + Regular Expressions + scope + string.regexp + settings + + foreground + #b4f9f8 + + + + name + Regular Expressions - Punctuation + scope + punctuation.definition.group + settings + + foreground + #f7768e + + + + name + Regular Expressions - Character Class + scope + constant.other.character-class.regexp + settings + + foreground + #bb9af7 + + + + name + Regular Expressions - Character Class Set + scope + constant.other.character-class.set.regexp, punctuation.definition.character-class.regexp + settings + + foreground + #e0af68 + + + + name + Regular Expressions - Quantifier + scope + keyword.operator.quantifier.regexp + settings + + foreground + #89ddff + + + + name + Regular Expressions - Backslash + scope + constant.character.escape.backslash + settings + + foreground + #c0caf5 + + + + name + Escape Characters + scope + constant.character.escape + settings + + foreground + #89ddff + + + + name + Decorators + scope + tag.decorator.js entity.name.tag.js, tag.decorator.js punctuation.definition.tag.js + settings + + foreground + #7aa2f7 + + + + name + CSS Units + scope + keyword.other.unit + settings + + foreground + #f7768e + + + + name + JSON Key - Level 0 + scope + source.json meta.mapping.key.json string.quoted.double.json, source.json meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #7aa2f7 + + + + name + JSON Key - Level 1 + scope + source.json meta.mapping.value.json meta.sequence.json meta.mapping.key.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #0db9d7 + + + + name + JSON Key - Level 2 + scope + source.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.mapping.key.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #7dcfff + + + + name + JSON Key - Level 3 + scope + source.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.key.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #bb9af7 + + + + name + JSON Key - Level 4 + scope + source.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.key.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #e0af68 + + + + name + JSON Key - Level 5 + scope + source.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.key.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #0db9d7 + + + + name + JSON Key - Level 6 + scope + source.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.key.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #73daca + + + + name + JSON Key - Level 7 + scope + source.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.key.json string.quoted.double.json + settings + + foreground + #f7768e + + + + name + JSON Key - Level 8 + scope + source.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json meta.sequence.json meta.mapping.key.json string.quoted.double.json punctuation.definition.string.end.json + settings + + foreground + #9ece6a + + + + name + JSON Key - value + scope + source.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json, source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.array.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json + settings + + foreground + #9ece6a + + + + name + Plain Punctuation + scope + punctuation.definition.list_item.markdown + settings + + foreground + #9abdf5 + + + + name + Block Punctuation + scope + meta.block, meta.brace, punctuation.definition.block, punctuation.definition.use, punctuation.definition.group.shell, punctuation.definition.class, punctuation.definition.begin.bracket, punctuation.definition.end.bracket, punctuation.definition.parameters, punctuation.definition.arguments, punctuation.definition.dictionary, punctuation.definition.array, punctuation.section + settings + + foreground + #9abdf5 + + + + name + Markdown - Plain + scope + meta.jsx.children, meta.embedded.block + settings + + foreground + #c0caf5 + + + + name + HTML text + scope + text.html + settings + + foreground + #9aa5ce + + + + name + Markdown - Markup Raw Inline + scope + text.html.markdown markup.inline.raw.markdown + settings + + foreground + #bb9af7 + + + + name + Markdown - Markup Raw Inline Punctuation + scope + text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown + settings + + foreground + #4E5579 + + + + name + Markdown - Heading 1 + scope + heading.1.markdown entity.name, heading.1.markdown punctuation.definition.heading.markdown + settings + + fontStyle + bold + foreground + #89ddff + + + + name + Markdown - Heading 2 + scope + heading.2.markdown entity.name, heading.2.markdown punctuation.definition.heading.markdown + settings + + fontStyle + bold + foreground + #61bdf2 + + + + name + Markdown - Heading 3 + scope + heading.3.markdown entity.name, heading.3.markdown punctuation.definition.heading.markdown + settings + + fontStyle + bold + foreground + #7aa2f7 + + + + name + Markdown - Heading 4 + scope + heading.4.markdown entity.name, heading.4.markdown punctuation.definition.heading.markdown + settings + + fontStyle + bold + foreground + #6d91de + + + + name + Markdown - Heading 5 + scope + heading.5.markdown entity.name, heading.5.markdown punctuation.definition.heading.markdown + settings + + fontStyle + bold + foreground + #9aa5ce + + + + name + Markdown - Heading 6 + scope + heading.6.markdown entity.name, heading.6.markdown punctuation.definition.heading.markdown + settings + + fontStyle + bold + foreground + #747ca1 + + + + name + Markup - Italic + scope + markup.italic, markup.italic punctuation + settings + + fontStyle + italic + foreground + #c0caf5 + + + + name + Markup - Bold + scope + markup.bold, markup.bold punctuation + settings + + fontStyle + bold + foreground + #c0caf5 + + + + name + Markup - Bold-Italic + scope + markup.bold markup.italic, markup.bold markup.italic punctuation + settings + + fontStyle + bold italic + foreground + #c0caf5 + + + + name + Markup - Underline + scope + markup.underline, markup.underline punctuation + settings + + fontStyle + underline + + + + name + Markdown - Blockquote + scope + markup.quote punctuation.definition.blockquote.markdown + settings + + foreground + #4e5579 + + + + name + Markup - Quote + scope + markup.quote + settings + + fontStyle + italic + + + + name + Markdown - Link + scope + string.other.link, markup.underline.link, constant.other.reference.link.markdown, string.other.link.description.title.markdown + settings + + foreground + #73daca + + + + name + Markdown - Fenced Code Block + scope + markup.fenced_code.block.markdown, markup.inline.raw.string.markdown, variable.language.fenced.markdown + settings + + foreground + #89ddff + + + + name + Markdown - Separator + scope + meta.separator + settings + + fontStyle + bold + foreground + #444b6a + + + + name + Markup - Table + scope + markup.table + settings + + foreground + #c0cefc + + + + name + Token - Info + scope + token.info-token + settings + + foreground + #0db9d7 + + + + name + Token - Warn + scope + token.warn-token + settings + + foreground + #ffdb69 + + + + name + Token - Error + scope + token.error-token + settings + + foreground + #db4b4b + + + + name + Token - Debug + scope + token.debug-token + settings + + foreground + #b267e6 + + + + name + Apache Tag + scope + entity.tag.apacheconf + settings + + foreground + #f7768e + + + + name + Preprocessor + scope + meta.preprocessor + settings + + foreground + #73daca + + + + name + ENV value + scope + source.env + settings + + foreground + #7aa2f7 + + + + uuid + 06f855e3-9fb7-4fb1-b790-aef06065f34e + + diff --git a/.config/yazi/init.lua b/.config/yazi/init.lua new file mode 100644 index 0000000..4965767 --- /dev/null +++ b/.config/yazi/init.lua @@ -0,0 +1,17 @@ +-- ~/.config/yazi/init.lua +require("bookmarks"):setup({ + last_directory = { enable = false, persist = false, mode = "dir" }, + persist = "none", + desc_format = "full", + file_pick_mode = "hover", + custom_desc_input = false, + notify = { + enable = false, + timeout = 1, + message = { + new = "New bookmark '' -> ''", + delete = "Deleted bookmark in ''", + delete_all = "Deleted all bookmarks", + }, + }, +}) diff --git a/.config/yazi/keymap.toml b/.config/yazi/keymap.toml new file mode 100644 index 0000000..f3fdfba --- /dev/null +++ b/.config/yazi/keymap.toml @@ -0,0 +1,19 @@ +[[manager.prepend_keymap]] +on = [ "m" ] +run = "plugin bookmarks save" +desc = "Save current position as a bookmark" + +[[manager.prepend_keymap]] +on = [ "'" ] +run = "plugin bookmarks jump" +desc = "Jump to a bookmark" + +[[manager.prepend_keymap]] +on = [ "b", "d" ] +run = "plugin bookmarks delete" +desc = "Delete a bookmark" + +[[manager.prepend_keymap]] +on = [ "b", "D" ] +run = "plugin bookmarks delete_all" +desc = "Delete all bookmarks" diff --git a/.config/yazi/package.toml b/.config/yazi/package.toml new file mode 100644 index 0000000..39902f7 --- /dev/null +++ b/.config/yazi/package.toml @@ -0,0 +1,19 @@ +[[plugin.deps]] +use = "dedukun/bookmarks" +rev = "95b2c58" +hash = "17a094653b7d0db4ac68ed531d2e1412" + +[[flavor.deps]] +use = "BennyOe/tokyo-night" +rev = "695dac6" +hash = "a8f426ea0d9cb843b081d62ab01364c8" + +[[flavor.deps]] +use = "gosxrgxx/flexoki-dark" +rev = "3e8cfba" +hash = "56a96293138f09da7fae25ee405a4393" + +[[flavor.deps]] +use = "PinThePenguine/sunset" +rev = "181acd4" +hash = "cc4c39af7098f02c42fec223fc1fc967" diff --git a/.config/yazi/plugins/bookmarks.yazi/LICENSE b/.config/yazi/plugins/bookmarks.yazi/LICENSE new file mode 100644 index 0000000..f8ead01 --- /dev/null +++ b/.config/yazi/plugins/bookmarks.yazi/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2024 dedukun + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/.config/yazi/plugins/bookmarks.yazi/README.md b/.config/yazi/plugins/bookmarks.yazi/README.md new file mode 100644 index 0000000..8b436ef --- /dev/null +++ b/.config/yazi/plugins/bookmarks.yazi/README.md @@ -0,0 +1,146 @@ +# bookmarks.yazi + +A [Yazi](https://github.com/sxyazi/yazi) plugin that adds the basic functionality of [vi-like marks](https://neovim.io/doc/user/motion.html#mark-motions). + +https://github.com/dedukun/bookmarks.yazi/assets/25795432/9a9fe345-dd06-442e-99f1-8475ab22fad5 + +## Requirements + +- [Yazi](https://github.com/sxyazi/yazi) v25.2.7+ + +## Features + +- Create/delete bookmarks +- Custom Notifications +- `''` to go back to the previous folder +- Bookmarks persistence + +## Installation + +```sh +ya pack -a dedukun/bookmarks +``` + +## Import/Export bookmarks + +This plugin uses [Yazi's DDS](https://yazi-rs.github.io/docs/dds/) for bookmark persistence, as such, +the bookmarks are saved in DDS's state file (`~/.local/state/yazi/.dds` on Linux and `C:\Users\USERNAME\AppData\Roaming\yazi\state\.dds` on Windows) + +**_NOTE:_** This system may be used by other plugins that you have installed, so this file might have more data than just the bookmarks. + +## Configuration + +Add this to your `keymap.toml`: + +```toml +[[manager.prepend_keymap]] +on = [ "m" ] +run = "plugin bookmarks save" +desc = "Save current position as a bookmark" + +[[manager.prepend_keymap]] +on = [ "'" ] +run = "plugin bookmarks jump" +desc = "Jump to a bookmark" + +[[manager.prepend_keymap]] +on = [ "b", "d" ] +run = "plugin bookmarks delete" +desc = "Delete a bookmark" + +[[manager.prepend_keymap]] +on = [ "b", "D" ] +run = "plugin bookmarks delete_all" +desc = "Delete all bookmarks" +``` + +--- + +Additionally there are configurations that can be done using the plugin's `setup` function in Yazi's `init.lua`, i.e. `~/.config/yazi/init.lua`. +The following are the default configurations: + +```lua +-- ~/.config/yazi/init.lua +require("bookmarks"):setup({ + last_directory = { enable = false, persist = false, mode="dir" }, + persist = "none", + desc_format = "full", + file_pick_mode = "hover", + custom_desc_input = false, + notify = { + enable = false, + timeout = 1, + message = { + new = "New bookmark '' -> ''", + delete = "Deleted bookmark in ''", + delete_all = "Deleted all bookmarks", + }, + }, +}) +``` + +### `last_directory` + +When enabled, a new bookmark is automatically created in `'` which allows the user to jump back to +the last directory. + +There's also the option to enable persistence to this automatic bookmark. + +Finally, there's a `mode` option with the following options: + +| Value | Description | +| ------ | ------------------------------------------------------------ | +| `jump` | It saves the position before the last used mark | +| `mark` | It saves the last created mark | +| `dir` | Default, it saves the last visited directory (old behaviour) | + +### `persist` + +When enabled the bookmarks will persist, i.e. if you close and reopen Yazi they will still be +present. + +There are three possible values for this option: + +| Value | Description | +| ------ | -------------------------------------------------------------------------------------------------------------------- | +| `none` | The default value, i.e., no persistance | +| `all` | All the bookmarks are saved in persistent memory | +| `vim` | This mode emulates the vim global marks, i.e., only the bookmarks in upper case (A-Z) are saved to persistent memory | + +### `desc_format` + +The format for the bookmark description. + +There are two possible values for this option: + +| Value | Description | +| -------- | ----------------------------------------------------------------------------------------------- | +| `full` | The default, it shows the full path of the bookmark, i.e., the parent folder + the hovered file | +| `parent` | Only shows the parent folder of the bookmark | + +### `file_pick_mode` + +The mode for choosing which directory to bookmark. + +There are two possible values for this option: + +| Value | Description | +| -------- | ------------------------------------------------------------------- | +| `hover` | The default, it uses the path of the hovered file for new bookmarks | +| `parent` | Uses the path of the parent folder for new bookmarks | + +### `notify` + +When enabled, notifications will be shown when the user creates a new bookmark and deletes one or +all saved bookmarks. + +By default the notification has a 1 second timeout that can be changed with `notify.timeout`. + +Furthermore, you can customize the notification messages with `notify.message`. +For the `new` and `delete` messages, the `` and `` keywords can be used, which will be replaced by the respective new/deleted bookmark's associated key and folder. + +### `custom_desc_input` + +When enabled, user can change description for new bookmark before it is saved. + +By default the custom description input is filled with path. diff --git a/.config/yazi/plugins/bookmarks.yazi/main.lua b/.config/yazi/plugins/bookmarks.yazi/main.lua new file mode 100644 index 0000000..1b193b6 --- /dev/null +++ b/.config/yazi/plugins/bookmarks.yazi/main.lua @@ -0,0 +1,383 @@ +--- @since 25.2.7 +-- stylua: ignore +local SUPPORTED_KEYS = { + { on = "0"}, { on = "1"}, { on = "2"}, { on = "3"}, { on = "4"}, + { on = "5"}, { on = "6"}, { on = "7"}, { on = "8"}, { on = "9"}, + { on = "A"}, { on = "B"}, { on = "C"}, { on = "D"}, { on = "E"}, + { on = "F"}, { on = "G"}, { on = "H"}, { on = "I"}, { on = "J"}, + { on = "K"}, { on = "L"}, { on = "M"}, { on = "N"}, { on = "O"}, + { on = "P"}, { on = "Q"}, { on = "R"}, { on = "S"}, { on = "T"}, + { on = "U"}, { on = "V"}, { on = "W"}, { on = "X"}, { on = "Y"}, { on = "Z"}, + { on = "a"}, { on = "b"}, { on = "c"}, { on = "d"}, { on = "e"}, + { on = "f"}, { on = "g"}, { on = "h"}, { on = "i"}, { on = "j"}, + { on = "k"}, { on = "l"}, { on = "m"}, { on = "n"}, { on = "o"}, + { on = "p"}, { on = "q"}, { on = "r"}, { on = "s"}, { on = "t"}, + { on = "u"}, { on = "v"}, { on = "w"}, { on = "x"}, { on = "y"}, { on = "z"}, +} + +local _send_notification = ya.sync( + function(state, message) + ya.notify { + title = "Bookmarks", + content = message, + timeout = state.notify.timeout, + } + end +) + +local _get_real_index = ya.sync(function(state, idx) + for key, value in pairs(state.bookmarks) do + if value.on == SUPPORTED_KEYS[idx].on then + return key + end + end + return nil +end) + +local _get_bookmark_file = ya.sync(function(state) + local folder = cx.active.current + + if state.file_pick_mode == "parent" or not folder.hovered then + return { url = folder.cwd, is_parent = true } + end + return { url = folder.hovered.url, is_parent = false } +end) + +local _generate_description = ya.sync(function(state, file) + -- if this is true, we don't have information about the folder, so just return the folder url + if file.is_parent then + return tostring(file.url) + end + + if state.desc_format == "parent" then + return tostring(file.url:parent()) + end + -- full description + return tostring(file.url) +end) + +local _load_state = ya.sync(function(state) + ps.sub_remote("@bookmarks", function(body) + if not state.bookmarks and body then + state.bookmarks = {} + for _, value in pairs(body) do + table.insert(state.bookmarks, value) + end + end + end) +end) + +local _save_state = ya.sync(function(state, bookmarks) + if not bookmarks then + ps.pub_to(0, "@bookmarks", nil) + return + end + + local save_state = {} + if state.persist == "all" then + save_state = bookmarks + else -- VIM mode + local idx = 1 + for _, value in pairs(bookmarks) do + -- Only save bookmarks in upper case keys + if string.match(value.on, "%u") then + save_state[idx] = value + idx = idx + 1 + end + end + end + + ps.pub_to(0, "@bookmarks", save_state) +end) + +local _load_last = ya.sync(function(state) + ps.sub_remote("@bookmarks-last", function(body) + state.last_dir = body + + if state.last_mode ~= "dir" then + ps.unsub_remote("@bookmarks-last") + end + end) +end) + +local _save_last = ya.sync(function(state, persist, imediate) + local file = _get_bookmark_file() + + local curr = { + on = "'", + desc = _generate_description(file), + path = tostring(file.url), + is_parent = file.is_parent, + } + + if imediate then + state.curr_dir = nil + state.last_dir = curr + else + state.last_dir = state.curr_dir + state.curr_dir = curr + end + + if persist and state.last_dir then + ps.pub_to(0, "@bookmarks-last", state.last_dir) + end +end) + +local get_last_mode = ya.sync(function(state) return state.last_mode end) + +local save_last_dir = ya.sync(function(state) + ps.sub("cd", function() _save_last(state.last_persist, false) end) + + ps.sub("hover", function() + local file = _get_bookmark_file() + state.curr_dir.desc = _generate_description(file) + state.curr_dir.path = tostring(file.url) + end) +end) + +local save_last_jump = ya.sync(function(state) _save_last(state.last_persist, true) end) + +local save_last_mark = ya.sync(function(state) _save_last(state.last_persist, true) end) + +local _is_custom_desc_input_enabled = ya.sync(function(state) return state.custom_desc_input end) + +-- *********************************************** +-- **============= C O M M A N D S =============** +-- *********************************************** + +local save_bookmark = ya.sync(function(state, idx, custom_desc) + local file = _get_bookmark_file() + + state.bookmarks = state.bookmarks or {} + + local _idx = _get_real_index(idx) + if not _idx then + _idx = #state.bookmarks + 1 + end + + local bookmark_desc = tostring(file.url) + if custom_desc then + bookmark_desc = tostring(custom_desc) + end + + state.bookmarks[_idx] = { + on = SUPPORTED_KEYS[idx].on, + desc = bookmark_desc, + path = tostring(file.url), + is_parent = file.is_parent, + } + + -- Custom sorting function + table.sort(state.bookmarks, function(a, b) + local key_a, key_b = a.on, b.on + + -- Numbers first + if key_a:match("%d") and not key_b:match("%d") then + return true + elseif key_b:match("%d") and not key_a:match("%d") then + return false + end + + -- Uppercase before lowercase + if key_a:match("%u") and key_b:match("%l") then + return true + elseif key_b:match("%u") and key_a:match("%l") then + return false + end + + -- Regular alphabetical sorting + return key_a < key_b + end) + + if state.persist then + _save_state(state.bookmarks) + end + + if state.notify and state.notify.enable then + local message = state.notify.message.new + message, _ = message:gsub("", state.bookmarks[_idx].on) + message, _ = message:gsub("", state.bookmarks[_idx].desc) + _send_notification(message) + end + + if get_last_mode() == "mark" then + save_last_mark() + end +end) + +local all_bookmarks = ya.sync(function(state, append_last_dir) + local bookmarks = {} + + if state.bookmarks then + for _, value in pairs(state.bookmarks) do + table.insert(bookmarks, value) + end + end + + if append_last_dir and state.last_dir then + table.insert(bookmarks, state.last_dir) + end + + return bookmarks +end) + +local delete_bookmark = ya.sync(function(state, idx) + if state.notify and state.notify.enable then + local message = state.notify.message.delete + message, _ = message:gsub("", state.bookmarks[idx].on) + message, _ = message:gsub("", state.bookmarks[idx].desc) + _send_notification(message) + end + + table.remove(state.bookmarks, idx) + + if state.persist then + _save_state(state.bookmarks) + end +end) + +local delete_all_bookmarks = ya.sync(function(state) + state.bookmarks = nil + + if state.persist then + _save_state(nil) + end + + if state.notify and state.notify.enable then + _send_notification(state.notify.message.delete_all) + end +end) + +return { + entry = function(_, job) + local action = job.args[1] + if not action then + return + end + + if action == "save" then + local key = ya.which { cands = SUPPORTED_KEYS, silent = true } + if key then + if _is_custom_desc_input_enabled() then + local value, event = ya.input { + title = "Save with custom description:", + position = { "top-center", y = 3, w = 60 }, + value = tostring(_get_bookmark_file().url), + } + if event ~= 1 then + return + end + + save_bookmark(key, value) + return + end + save_bookmark(key) + end + return + end + + if action == "delete_all" then + return delete_all_bookmarks() + end + + local bookmarks = all_bookmarks(action == "jump") + local selected = #bookmarks > 0 and ya.which { cands = bookmarks } + if not selected then + return + end + + if action == "jump" then + if get_last_mode() == "jump" then + save_last_jump() + end + + if bookmarks[selected].is_parent then + ya.manager_emit("cd", { bookmarks[selected].path }) + else + ya.manager_emit("reveal", { bookmarks[selected].path }) + end + elseif action == "delete" then + delete_bookmark(selected) + end + end, + setup = function(state, args) + if not args then + return + end + + if type(args.last_directory) == "table" then + if args.last_directory.enable then + if args.last_directory.mode == "mark" then + state.last_persist = args.last_directory.persist + state.last_mode = "mark" + elseif args.last_directory.mode == "jump" then + state.last_persist = args.last_directory.persist + state.last_mode = "jump" + elseif args.last_directory.mode == "dir" then + state.last_persist = args.last_directory.persist + state.last_mode = "dir" + save_last_dir() + else + -- default + state.last_persist = args.last_directory.persist + state.last_mode = "dir" + save_last_dir() + end + + if args.last_directory.persist then + _load_last() + end + end + end + + if args.persist == "all" or args.persist == "vim" then + state.persist = args.persist + _load_state() + end + + if args.desc_format == "parent" then + state.desc_format = "parent" + else + state.desc_format = "full" + end + + if args.file_pick_mode == "parent" then + state.file_pick_mode = "parent" + else + state.file_pick_mode = "hover" + end + + if type(args.custom_desc_input) == "boolean" then + state.custom_desc_input = args.custom_desc_input + end + + state.notify = { + enable = false, + timeout = 1, + message = { + new = "New bookmark '' -> ''", + delete = "Deleted bookmark in ''", + delete_all = "Deleted all bookmarks", + }, + } + if type(args.notify) == "table" then + if type(args.notify.enable) == "boolean" then + state.notify.enable = args.notify.enable + end + if type(args.notify.timeout) == "number" then + state.notify.timeout = args.notify.timeout + end + if type(args.notify.message) == "table" then + if type(args.notify.message.new) == "string" then + state.notify.message.new = args.notify.message.new + end + if type(args.notify.message.delete) == "string" then + state.notify.message.delete = args.notify.message.delete + end + if type(args.notify.message.delete_all) == "string" then + state.notify.message.delete_all = args.notify.message.delete_all + end + end + end + end, +} diff --git a/.config/yazi/theme.toml b/.config/yazi/theme.toml new file mode 100644 index 0000000..524b1b1 --- /dev/null +++ b/.config/yazi/theme.toml @@ -0,0 +1,3 @@ +[flavor] +use = "sunset" +dark = "sunset" diff --git a/.config/yazi/yazi.toml b/.config/yazi/yazi.toml new file mode 100644 index 0000000..8400bce --- /dev/null +++ b/.config/yazi/yazi.toml @@ -0,0 +1,14 @@ +[manager] +ratio = [1, 4, 3] +sort_by = "natural" +sort_sensitive = false +sort_reverse = false +sort_dir_first = true +sort_translit = false +linemode = "size" +show_hidden = true +show_symlink = true +scrolloff = 5 +mouse_events = ["click", "scroll"] +# title_format = "Yazi: {cwd}" + diff --git a/.gitconfig b/.gitconfig index 44c73f6..5eaccdb 100644 --- a/.gitconfig +++ b/.gitconfig @@ -25,7 +25,7 @@ lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all ; lg = !"git lg2" - tree = "forest --pretty=format:\"%C(red)%h %C(magenta)(%ar) %C(blue)%an %C(reset)%s\" --style=15 --reverse" + amend = !git commit --amend --date=now --no-edit lg = log --graph --pretty=slim --abbrev-commit --date=relative ; lg date: sorted by date and with absolute dates lgd = log --graph --pretty=slim --abbrev-commit --date=local --date-order diff --git a/README.md b/README.md index 040caee..8669bb3 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # [![dotfiles](https://skillicons.dev/icons?i=apple,arch,plan9)](https://skillicons.dev) dotfiles +Do zarządzania konfiguracją używany jest [yadm]() +