refactoring

This commit is contained in:
Matt Nish-Lapidus 2025-03-21 16:50:54 -04:00
parent 74ae1150a3
commit 69400c1aa3
142 changed files with 11 additions and 70 deletions

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Kamal Chandra Upreti
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.

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2016 Ike Ku
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.

View file

@ -0,0 +1,32 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
<h3 align="center">
Ayu Dark Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
</h3>
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
```bash
ya pack -a kmlupreti/ayu-dark
```
## ⚙️ Usage
Add the these lines to your `theme.toml` configuration file to use it:
```toml
[flavor]
use = "ayu-dark"
```
## 📜 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.

View file

@ -0,0 +1,129 @@
[manager]
cwd = { fg = "#5c6773" }
# tab
tab_active = { fg = "#0a0e14", bg = "#c2a05c", bold = true }
tab_inactive = { fg = "#5c6773", bg = "#0a0e14" }
tab_width = 1
# find
find_keyword = { fg = "#1f6f88", bold = true, italic = true, underline = true }
find_position = { fg = "#1f6f88", bold = true, italic = true }
# marker
marker_copied = { fg = "#0a0e14", bg = "#7e9350" }
marker_cut = { fg = "#0a0e14", bg = "#a85361" }
marker_marked = { fg = "#0a0e14", bg = "#1f6f88" }
marker_selected = { fg = "#0a0e14", bg = "#c2a05c" }
# count
count_copied = { fg = "#0a0e14", bg = "#7e9350" }
count_cut = { fg = "#5c6773", bg = "#a85361" }
count_selected = { fg = "#0a0e14", bg = "#c2a05c" }
# border
border_symbol = " "
[mode]
normal_main = { fg = "#0a0e14", bg = "#c2a05c", bold = true }
normal_alt = { fg = "#1f6f88", bg = "#2d3640", bold = true }
select_main = { fg = "#0a0e14", bg = "#1f6f88", bold = true }
select_alt = { fg = "#0a0e14", bg = "#1f6f88", bold = true }
unset_main = { fg = "#0a0e14", bg = "#a85361", bold = true }
unset_alt = { fg = "#0a0e14", bg = "#a85361", bold = true }
[status]
separator_open = ""
separator_close = ""
separator_style = { bg = "#2d3640", fg = "#c2a05c" }
# Progress
progress_label = { fg = "#c2a05c", bold = true }
progress_normal = { fg = "#c2a05c", bg = "#0a0e14" }
progress_error = { fg = "#a85361", bg = "#0a0e14" }
# permissions
perm_type = { fg = "#c2c2c2" }
perm_write = { fg = "#a85361" }
perm_exec = { fg = "#7e9350" }
perm_read = { fg = "#1f6f88" }
perm_sep = { fg = "#5c6773" }
[select]
border = { fg = "#c2a05c" }
active = { fg = "#a85361", bold = true }
inactive = { fg = "#5c6773", bg = "#0a0e14" }
[input]
border = { fg = "#c2a05c" }
value = { fg = "#5c6773" }
[completion]
border = { fg = "#c2a05c", bg = "#0a0e14" }
[tasks]
border = { fg = "#c2a05c" }
title = { fg = "#5c6773" }
hovered = { fg = "#7e9350", underline = true }
[which]
cols = 3
mask = { bg = "#0a0e14" }
cand = { fg = "#c2a05c" }
rest = { fg = "#0a0e14" }
desc = { fg = "#5c6773" }
separator = " ⯈ "
separator_style = { fg = "#5c6773" }
[help]
on = { fg = "#c2a05c" }
run = { fg = "#7e9350" }
footer = { fg = "#0a0e14", bg = "#5c6773" }
[notify]
title_info = { fg = "#7e9350" }
title_warn = { fg = "#c2a05c" }
title_error = { fg = "#a85361" }
[filetype]
rules = [
# directories
{ name = "*/", fg = "#1f6f88" },
# executables
{ name = "*", is = "exec", fg = "#7e9350" },
# images
{ mime = "image/*", fg = "#c2a05c" },
# media
{ mime = "{audio,video}/*", fg = "#7e9350" },
# archives
{ mime = "application/{,g}zip", fg = "#a85361" },
{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#a85361" },
# documents
{ mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#1f6f88" },
# scripts and code
{ mime = "application/{x-shellscript,x-python,x-ruby,x-javascript}", fg = "#c2a05c" },
{ mime = "text/x-{c,c++}", fg = "#1f6f88" },
# config files
{ name = "*.json", fg = "#c2a05c" },
{ name = "*.yml", fg = "#1f6f88" },
{ name = "*.toml", fg = "#9464b6" },
# special files
{ name = "*", is = "orphan", bg = "#0a0e14" },
# dummy files
{ name = "*", is = "dummy", bg = "#0a0e14" },
# fallback
{ name = "*/", fg = "#1f6f88" },
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 yazi-rs
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.

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 Catppuccin
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.

View file

@ -0,0 +1,36 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
<h3 align="center">
Catppuccin Frappe Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
</h3>
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
```sh
ya pack -a yazi-rs/flavors:catppuccin-frappe
```
## ⚙️ Usage
Set the content of your `theme.toml` to enable it as your _dark_ flavor:
```toml
[flavor]
dark = "catppuccin-frappe"
```
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.

View file

@ -0,0 +1,173 @@
# vim:fileencoding=utf-8:foldmethod=marker
# : Manager {{{
[manager]
cwd = { fg = "#81c8be" }
# Hovered
hovered = { reversed = true }
preview_hovered = { underline = true }
# Find
find_keyword = { fg = "#e5c890", bold = true, italic = true, underline = true }
find_position = { fg = "#f4b8e4", bg = "reset", bold = true, italic = true }
# Marker
marker_copied = { fg = "#a6d189", bg = "#a6d189" }
marker_cut = { fg = "#e78284", bg = "#e78284" }
marker_marked = { fg = "#81c8be", bg = "#81c8be" }
marker_selected = { fg = "#e5c890", bg = "#e5c890" }
# Tab
tab_active = { reversed = true }
tab_inactive = {}
tab_width = 1
# Count
count_copied = { fg = "#303446", bg = "#a6d189" }
count_cut = { fg = "#303446", bg = "#e78284" }
count_selected = { fg = "#303446", bg = "#e5c890" }
# Border
border_symbol = "│"
border_style = { fg = "#838ba7" }
# : }}}
# : Mode {{{
[mode]
normal_main = { fg = "#303446", bg = "#8caaee", bold = true }
normal_alt = { fg = "#8caaee", bg = "#414559" }
# Select mode
select_main = { fg = "#303446", bg = "#81c8be", bold = true }
select_alt = { fg = "#81c8be", bg = "#414559" }
# Unset mode
unset_main = { fg = "#303446", bg = "#eebebe", bold = true }
unset_alt = { fg = "#eebebe", bg = "#414559" }
# : }}}
# : Status bar {{{
[status]
separator_open = ""
separator_close = ""
# Progress
progress_label = { fg = "#ffffff", bold = true }
progress_normal = { fg = "#8caaee", bg = "#51576d" }
progress_error = { fg = "#e78284", bg = "#51576d" }
# Permissions
perm_sep = { fg = "#838ba7" }
perm_type = { fg = "#8caaee" }
perm_read = { fg = "#e5c890" }
perm_write = { fg = "#e78284" }
perm_exec = { fg = "#a6d189" }
# : }}}
# : Pick {{{
[pick]
border = { fg = "#8caaee" }
active = { fg = "#f4b8e4", bold = true }
inactive = {}
# : }}}
# : Input {{{
[input]
border = { fg = "#8caaee" }
title = {}
value = {}
selected = { reversed = true }
# : }}}
# : Completion {{{
[completion]
border = { fg = "#8caaee" }
# : }}}
# : Tasks {{{
[tasks]
border = { fg = "#8caaee" }
title = {}
hovered = { fg = "#f4b8e4", underline = true }
# : }}}
# : Which {{{
[which]
mask = { bg = "#414559" }
cand = { fg = "#81c8be" }
rest = { fg = "#949cbb" }
desc = { fg = "#f4b8e4" }
separator = "  "
separator_style = { fg = "#626880" }
# : }}}
# : Help {{{
[help]
on = { fg = "#81c8be" }
run = { fg = "#f4b8e4" }
hovered = { reversed = true, bold = true }
footer = { fg = "#414559", bg = "#c6d0f5" }
# : }}}
# : Notify {{{
[notify]
title_info = { fg = "#a6d189" }
title_warn = { fg = "#e5c890" }
title_error = { fg = "#e78284" }
# : }}}
# : File-specific styles {{{
[filetype]
rules = [
# Images
{ mime = "image/*", fg = "#81c8be" },
# Media
{ mime = "{audio,video}/*", fg = "#e5c890" },
# Archives
{ mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "#f4b8e4" },
# Documents
{ mime = "application/{pdf,doc,rtf}", fg = "#a6d189" },
# Fallback
{ name = "*", fg = "#c6d0f5" },
{ name = "*/", fg = "#8caaee" }
]
# : }}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 yazi-rs
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.

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 Catppuccin
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.

View file

@ -0,0 +1,36 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
<h3 align="center">
Catppuccin Latte Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
</h3>
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
```sh
ya pack -a yazi-rs/flavors:catppuccin-latte
```
## ⚙️ Usage
Set the content of your `theme.toml` to enable it as your _light_ flavor:
```toml
[flavor]
light = "catppuccin-latte"
```
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.

View file

@ -0,0 +1,173 @@
# vim:fileencoding=utf-8:foldmethod=marker
# : Manager {{{
[manager]
cwd = { fg = "#179299" }
# Hovered
hovered = { reversed = true }
preview_hovered = { underline = true }
# Find
find_keyword = { fg = "#df8e1d", bold = true, italic = true, underline = true }
find_position = { fg = "#ea76cb", bg = "reset", bold = true, italic = true }
# Marker
marker_copied = { fg = "#40a02b", bg = "#40a02b" }
marker_cut = { fg = "#d20f39", bg = "#d20f39" }
marker_marked = { fg = "#179299", bg = "#179299" }
marker_selected = { fg = "#df8e1d", bg = "#df8e1d" }
# Tab
tab_active = { reversed = true }
tab_inactive = {}
tab_width = 1
# Count
count_copied = { fg = "#eff1f5", bg = "#40a02b" }
count_cut = { fg = "#eff1f5", bg = "#d20f39" }
count_selected = { fg = "#eff1f5", bg = "#df8e1d" }
# Border
border_symbol = "│"
border_style = { fg = "#8c8fa1" }
# : }}}
# : Mode {{{
[mode]
normal_main = { fg = "#eff1f5", bg = "#1e66f5", bold = true }
normal_alt = { fg = "#1e66f5", bg = "#ccd0da" }
# Select mode
select_main = { fg = "#eff1f5", bg = "#179299", bold = true }
select_alt = { fg = "#179299", bg = "#ccd0da" }
# Unset mode
unset_main = { fg = "#eff1f5", bg = "#dd7878", bold = true }
unset_alt = { fg = "#dd7878", bg = "#ccd0da" }
# : }}}
# : Status bar {{{
[status]
separator_open = ""
separator_close = ""
# Progress
progress_label = { fg = "#ffffff", bold = true }
progress_normal = { fg = "#1e66f5", bg = "#bcc0cc" }
progress_error = { fg = "#d20f39", bg = "#bcc0cc" }
# Permissions
perm_sep = { fg = "#8c8fa1" }
perm_type = { fg = "#1e66f5" }
perm_read = { fg = "#df8e1d" }
perm_write = { fg = "#d20f39" }
perm_exec = { fg = "#40a02b" }
# : }}}
# : Pick {{{
[pick]
border = { fg = "#1e66f5" }
active = { fg = "#ea76cb", bold = true }
inactive = {}
# : }}}
# : Input {{{
[input]
border = { fg = "#1e66f5" }
title = {}
value = {}
selected = { reversed = true }
# : }}}
# : Completion {{{
[completion]
border = { fg = "#1e66f5" }
# : }}}
# : Tasks {{{
[tasks]
border = { fg = "#1e66f5" }
title = {}
hovered = { fg = "#ea76cb", underline = true }
# : }}}
# : Which {{{
[which]
mask = { bg = "#ccd0da" }
cand = { fg = "#179299" }
rest = { fg = "#7c7f93" }
desc = { fg = "#ea76cb" }
separator = "  "
separator_style = { fg = "#acb0be" }
# : }}}
# : Help {{{
[help]
on = { fg = "#179299" }
run = { fg = "#ea76cb" }
hovered = { reversed = true, bold = true }
footer = { fg = "#ccd0da", bg = "#4c4f69" }
# : }}}
# : Notify {{{
[notify]
title_info = { fg = "#40a02b" }
title_warn = { fg = "#df8e1d" }
title_error = { fg = "#d20f39" }
# : }}}
# : File-specific styles {{{
[filetype]
rules = [
# Images
{ mime = "image/*", fg = "#179299" },
# Media
{ mime = "{audio,video}/*", fg = "#df8e1d" },
# Archives
{ mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "#ea76cb" },
# Documents
{ mime = "application/{pdf,doc,rtf}", fg = "#40a02b" },
# Fallback
{ name = "*", fg = "#4c4f69" },
{ name = "*/", fg = "#1e66f5" }
]
# : }}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 yazi-rs
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.

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 Catppuccin
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.

View file

@ -0,0 +1,36 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
<h3 align="center">
Catppuccin Macchiato Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
</h3>
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
```sh
ya pack -a yazi-rs/flavors:catppuccin-macchiato
```
## ⚙️ Usage
Set the content of your `theme.toml` to enable it as your _dark_ flavor:
```toml
[flavor]
dark = "catppuccin-macchiato"
```
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.

View file

@ -0,0 +1,173 @@
# vim:fileencoding=utf-8:foldmethod=marker
# : Manager {{{
[manager]
cwd = { fg = "#8bd5ca" }
# Hovered
hovered = { reversed = true }
preview_hovered = { underline = true }
# Find
find_keyword = { fg = "#eed49f", bold = true, italic = true, underline = true }
find_position = { fg = "#f5bde6", bg = "reset", bold = true, italic = true }
# Marker
marker_copied = { fg = "#a6da95", bg = "#a6da95" }
marker_cut = { fg = "#ed8796", bg = "#ed8796" }
marker_marked = { fg = "#8bd5ca", bg = "#8bd5ca" }
marker_selected = { fg = "#eed49f", bg = "#eed49f" }
# Tab
tab_active = { reversed = true }
tab_inactive = {}
tab_width = 1
# Count
count_copied = { fg = "#24273a", bg = "#a6da95" }
count_cut = { fg = "#24273a", bg = "#ed8796" }
count_selected = { fg = "#24273a", bg = "#eed49f" }
# Border
border_symbol = "│"
border_style = { fg = "#8087a2" }
# : }}}
# : Mode {{{
[mode]
normal_main = { fg = "#24273a", bg = "#8aadf4", bold = true }
normal_alt = { fg = "#8aadf4", bg = "#363a4f" }
# Select mode
select_main = { fg = "#24273a", bg = "#8bd5ca", bold = true }
select_alt = { fg = "#8bd5ca", bg = "#363a4f" }
# Unset mode
unset_main = { fg = "#24273a", bg = "#f0c6c6", bold = true }
unset_alt = { fg = "#f0c6c6", bg = "#363a4f" }
# : }}}
# : Status bar {{{
[status]
separator_open = ""
separator_close = ""
# Progress
progress_label = { fg = "#ffffff", bold = true }
progress_normal = { fg = "#8aadf4", bg = "#494d64" }
progress_error = { fg = "#ed8796", bg = "#494d64" }
# Permissions
perm_sep = { fg = "#8087a2" }
perm_type = { fg = "#8aadf4" }
perm_read = { fg = "#eed49f" }
perm_write = { fg = "#ed8796" }
perm_exec = { fg = "#a6da95" }
# : }}}
# : Pick {{{
[pick]
border = { fg = "#8aadf4" }
active = { fg = "#f5bde6", bold = true }
inactive = {}
# : }}}
# : Input {{{
[input]
border = { fg = "#8aadf4" }
title = {}
value = {}
selected = { reversed = true }
# : }}}
# : Completion {{{
[completion]
border = { fg = "#8aadf4" }
# : }}}
# : Tasks {{{
[tasks]
border = { fg = "#8aadf4" }
title = {}
hovered = { fg = "#f5bde6", underline = true }
# : }}}
# : Which {{{
[which]
mask = { bg = "#363a4f" }
cand = { fg = "#8bd5ca" }
rest = { fg = "#939ab7" }
desc = { fg = "#f5bde6" }
separator = "  "
separator_style = { fg = "#5b6078" }
# : }}}
# : Help {{{
[help]
on = { fg = "#8bd5ca" }
run = { fg = "#f5bde6" }
hovered = { reversed = true, bold = true }
footer = { fg = "#363a4f", bg = "#cad3f5" }
# : }}}
# : Notify {{{
[notify]
title_info = { fg = "#a6da95" }
title_warn = { fg = "#eed49f" }
title_error = { fg = "#ed8796" }
# : }}}
# : File-specific styles {{{
[filetype]
rules = [
# Images
{ mime = "image/*", fg = "#8bd5ca" },
# Media
{ mime = "{audio,video}/*", fg = "#eed49f" },
# Archives
{ mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "#f5bde6" },
# Documents
{ mime = "application/{pdf,doc,rtf}", fg = "#a6da95" },
# Fallback
{ name = "*", fg = "#cad3f5" },
{ name = "*/", fg = "#8aadf4" }
]
# : }}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 yazi-rs
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.

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 Catppuccin
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.

View file

@ -0,0 +1,36 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
<h3 align="center">
Catppuccin Mocha Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
</h3>
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
```sh
ya pack -a yazi-rs/flavors:catppuccin-mocha
```
## ⚙️ Usage
Set the content of your `theme.toml` to enable it as your _dark_ flavor:
```toml
[flavor]
dark = "catppuccin-mocha"
```
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.

View file

@ -0,0 +1,173 @@
# vim:fileencoding=utf-8:foldmethod=marker
# : Manager {{{
[manager]
cwd = { fg = "#94e2d5" }
# Hovered
hovered = { reversed = true }
preview_hovered = { underline = true }
# Find
find_keyword = { fg = "#f9e2af", bold = true, italic = true, underline = true }
find_position = { fg = "#f5c2e7", bg = "reset", bold = true, italic = true }
# Marker
marker_copied = { fg = "#a6e3a1", bg = "#a6e3a1" }
marker_cut = { fg = "#f38ba8", bg = "#f38ba8" }
marker_marked = { fg = "#94e2d5", bg = "#94e2d5" }
marker_selected = { fg = "#f9e2af", bg = "#f9e2af" }
# Tab
tab_active = { reversed = true }
tab_inactive = {}
tab_width = 1
# Count
count_copied = { fg = "#1e1e2e", bg = "#a6e3a1" }
count_cut = { fg = "#1e1e2e", bg = "#f38ba8" }
count_selected = { fg = "#1e1e2e", bg = "#f9e2af" }
# Border
border_symbol = "│"
border_style = { fg = "#7f849c" }
# : }}}
# : Mode {{{
[mode]
normal_main = { fg = "#1e1e2e", bg = "#89b4fa", bold = true }
normal_alt = { fg = "#89b4fa", bg = "#313244" }
# Select mode
select_main = { fg = "#1e1e2e", bg = "#94e2d5", bold = true }
select_alt = { fg = "#94e2d5", bg = "#313244" }
# Unset mode
unset_main = { fg = "#1e1e2e", bg = "#f2cdcd", bold = true }
unset_alt = { fg = "#f2cdcd", bg = "#313244" }
# : }}}
# : Status bar {{{
[status]
separator_open = ""
separator_close = ""
# Progress
progress_label = { fg = "#ffffff", bold = true }
progress_normal = { fg = "#89b4fa", bg = "#45475a" }
progress_error = { fg = "#f38ba8", bg = "#45475a" }
# Permissions
perm_sep = { fg = "#7f849c" }
perm_type = { fg = "#89b4fa" }
perm_read = { fg = "#f9e2af" }
perm_write = { fg = "#f38ba8" }
perm_exec = { fg = "#a6e3a1" }
# : }}}
# : Pick {{{
[pick]
border = { fg = "#89b4fa" }
active = { fg = "#f5c2e7", bold = true }
inactive = {}
# : }}}
# : Input {{{
[input]
border = { fg = "#89b4fa" }
title = {}
value = {}
selected = { reversed = true }
# : }}}
# : Completion {{{
[completion]
border = { fg = "#89b4fa" }
# : }}}
# : Tasks {{{
[tasks]
border = { fg = "#89b4fa" }
title = {}
hovered = { fg = "#f5c2e7", underline = true }
# : }}}
# : Which {{{
[which]
mask = { bg = "#313244" }
cand = { fg = "#94e2d5" }
rest = { fg = "#9399b2" }
desc = { fg = "#f5c2e7" }
separator = "  "
separator_style = { fg = "#585b70" }
# : }}}
# : Help {{{
[help]
on = { fg = "#94e2d5" }
run = { fg = "#f5c2e7" }
hovered = { reversed = true, bold = true }
footer = { fg = "#313244", bg = "#cdd6f4" }
# : }}}
# : Notify {{{
[notify]
title_info = { fg = "#a6e3a1" }
title_warn = { fg = "#f9e2af" }
title_error = { fg = "#f38ba8" }
# : }}}
# : File-specific styles {{{
[filetype]
rules = [
# Images
{ mime = "image/*", fg = "#94e2d5" },
# Media
{ mime = "{audio,video}/*", fg = "#f9e2af" },
# Archives
{ mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "#f5c2e7" },
# Documents
{ mime = "application/{pdf,doc,rtf}", fg = "#a6e3a1" },
# Fallback
{ name = "*", fg = "#cdd6f4" },
{ name = "*/", fg = "#89b4fa" }
]
# : }}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2013-present Dracula Theme
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.

View file

@ -0,0 +1,36 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
<h3 align="center">
Dracula Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
</h3>
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
```sh
ya pack -a yazi-rs/flavors:dracula
```
## ⚙️ Usage
Set the content of your `theme.toml` to enable it as your _dark_ flavor:
```toml
[flavor]
dark = "dracula"
```
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.

View file

@ -0,0 +1,173 @@
# vim:fileencoding=utf-8:foldmethod=marker
# : Manager {{{
[manager]
cwd = { fg = "#8be9fd" }
# Hovered
hovered = { reversed = true }
preview_hovered = { underline = true }
# Find
find_keyword = { fg = "#f1fa8c", bold = true, italic = true, underline = true }
find_position = { fg = "#ff79c6", bg = "reset", bold = true, italic = true }
# Marker
marker_copied = { fg = "#50fa7b", bg = "#50fa7b" }
marker_cut = { fg = "#ff5555", bg = "#ff5555" }
marker_marked = { fg = "#8be9fd", bg = "#8be9fd" }
marker_selected = { fg = "#f1fa8c", bg = "#f1fa8c" }
# Tab
tab_active = { reversed = true }
tab_inactive = {}
tab_width = 1
# Count
count_copied = { fg = "#282a36", bg = "#50fa7b" }
count_cut = { fg = "#282a36", bg = "#ff5555" }
count_selected = { fg = "#282a36", bg = "#f1fa8c" }
# Border
border_symbol = "│"
border_style = { fg = "#7282b5" }
# : }}}
# : Mode {{{
[mode]
normal_main = { fg = "#282a36", bg = "#bd93f9", bold = true }
normal_alt = { fg = "#bd93f9", bg = "#44475a" }
# Select mode
select_main = { fg = "#282a36", bg = "#8be9fd", bold = true }
select_alt = { fg = "#8be9fd", bg = "#44475a" }
# Unset mode
unset_main = { fg = "#282a36", bg = "#ffb86c", bold = true }
unset_alt = { fg = "#ffb86c", bg = "#44475a" }
# : }}}
# : Status bar {{{
[status]
separator_open = ""
separator_close = ""
# Progress
progress_label = { fg = "#ffffff", bold = true }
progress_normal = { fg = "#bd93f9", bg = "#63667d" }
progress_error = { fg = "#ff5555", bg = "#63667d" }
# Permissions
perm_sep = { fg = "#7282b5" }
perm_type = { fg = "#bd93f9" }
perm_read = { fg = "#f1fa8c" }
perm_write = { fg = "#ff5555" }
perm_exec = { fg = "#50fa7b" }
# : }}}
# : Pick {{{
[pick]
border = { fg = "#bd93f9" }
active = { fg = "#ff79c6", bold = true }
inactive = {}
# : }}}
# : Input {{{
[input]
border = { fg = "#bd93f9" }
title = {}
value = {}
selected = { reversed = true }
# : }}}
# : Completion {{{
[completion]
border = { fg = "#bd93f9" }
# : }}}
# : Tasks {{{
[tasks]
border = { fg = "#bd93f9" }
title = {}
hovered = { fg = "#ff79c6", underline = true }
# : }}}
# : Which {{{
[which]
mask = { bg = "#44475a" }
cand = { fg = "#8be9fd" }
rest = { fg = "#8998c9" }
desc = { fg = "#ff79c6" }
separator = "  "
separator_style = { fg = "#83869c" }
# : }}}
# : Help {{{
[help]
on = { fg = "#8be9fd" }
run = { fg = "#ff79c6" }
hovered = { reversed = true, bold = true }
footer = { fg = "#44475a", bg = "#f8f8f2" }
# : }}}
# : Notify {{{
[notify]
title_info = { fg = "#50fa7b" }
title_warn = { fg = "#f1fa8c" }
title_error = { fg = "#ff5555" }
# : }}}
# : File-specific styles {{{
[filetype]
rules = [
# Images
{ mime = "image/*", fg = "#8be9fd" },
# Media
{ mime = "{audio,video}/*", fg = "#f1fa8c" },
# Archives
{ mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "#ff79c6" },
# Documents
{ mime = "application/{pdf,doc,rtf}", fg = "#50fa7b" },
# Fallback
{ name = "*", fg = "#f8f8f2" },
{ name = "*/", fg = "#bd93f9" }
]
# : }}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 835 KiB

View file

@ -0,0 +1,940 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Dracula Theme v1.4.3
#
# https://github.com/dracula/sublime
#
# Copyright 2013-present, All rights reserved
#
# Code licensed under the MIT license
#
# @author Zeno Rocha <hi@zenorocha.com>
-->
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>Dracula</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#282a36</string>
<key>caret</key>
<string>#f8f8f0</string>
<key>block_caret</key>
<string>#999a9e</string>
<key>foreground</key>
<string>#f8f8f2</string>
<key>invisibles</key>
<string>#3B3A32</string>
<key>lineHighlight</key>
<string>#44475a</string>
<key>selection</key>
<string>#44475a</string>
<key>findHighlight</key>
<string>#effb7b</string>
<key>findHighlightForeground</key>
<string>#000000</string>
<key>selectionBorder</key>
<string>#222218</string>
<key>activeGuide</key>
<string>#9D550FB0</string>
<key>bracketsForeground</key>
<string>#F8F8F2A5</string>
<key>bracketsOptions</key>
<string>underline</string>
<key>bracketContentsForeground</key>
<string>#F8F8F2A5</string>
<key>bracketContentsOptions</key>
<string>underline</string>
<key>tagsOptions</key>
<string>stippled_underline</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#6272a4</string>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#f1fa8c</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Number</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#bd93f9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Built-in constant</string>
<key>scope</key>
<string>constant.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#bd93f9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>User-defined constant</string>
<key>scope</key>
<string>constant.character, constant.other</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#bd93f9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variable</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Ruby's @variable</string>
<key>scope</key>
<string>variable.other.readwrite.instance</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#ffb86c</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String interpolation</string>
<key>scope</key>
<string>constant.character.escaped, constant.character.escape, string source, string source.ruby</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#ff79c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Ruby Regexp</string>
<key>scope</key>
<string>source.ruby string.regexp.classic.ruby,source.ruby string.regexp.mod-r.ruby</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#ff5555</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff79c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#ff79c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage type</string>
<key>scope</key>
<string>storage.type</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#8be9fd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage Type Namespace</string>
<key>scope</key>
<string>storage.type.namespace</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#8be9fd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage Type Class</string>
<key>scope</key>
<string>storage.type.class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#ff79c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Class name</string>
<key>scope</key>
<string>entity.name.class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#8be9fd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Meta Path</string>
<key>scope</key>
<string>meta.path</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#66d9ef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inherited class</string>
<key>scope</key>
<string>entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic underline</string>
<key>foreground</key>
<string>#8be9fd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function name</string>
<key>scope</key>
<string>entity.name.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#50fa7b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function argument</string>
<key>scope</key>
<string>variable.parameter</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#ffb86c</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag name</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#ff79c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag attribute</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#50fa7b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library function</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#8be9fd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library constant</string>
<key>scope</key>
<string>support.constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#6be5fd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library class&#x2f;type</string>
<key>scope</key>
<string>support.type, support.class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#66d9ef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library variable</string>
<key>scope</key>
<string>support.other.variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support Other Namespace</string>
<key>scope</key>
<string>support.other.namespace</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#66d9ef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#ff79c6</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F8F8F0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#bd93f9</string>
<key>foreground</key>
<string>#F8F8F0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON String</string>
<key>scope</key>
<string>meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#CFCFC2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.header</string>
<key>scope</key>
<string>meta.diff, meta.diff.header</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#6272a4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff79c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#50fa7b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E6DB74</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>constant.numeric.line-number.find-in-files - match</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#bd93f9</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>entity.name.filename</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E6DB74</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>message.error</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F83333</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON Punctuation</string>
<key>scope</key>
<string>punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#EEEEEE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON Structure</string>
<key>scope</key>
<string>meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#8be9fd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON String</string>
<key>scope</key>
<string>meta.structure.dictionary.value.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#f1fa8c</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON: 6 deep</string>
<key>scope</key>
<string>meta meta meta meta meta meta meta.structure.dictionary.value string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#50fa7b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON: 5 deep</string>
<key>scope</key>
<string>meta meta meta meta meta meta.structure.dictionary.value string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ffb86c</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON: 4 deep</string>
<key>scope</key>
<string>meta meta meta meta meta.structure.dictionary.value string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff79c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON: 3 deep</string>
<key>scope</key>
<string>meta meta meta meta.structure.dictionary.value string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#bd93f9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON: 2 deep</string>
<key>scope</key>
<string>meta meta meta.structure.dictionary.value string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#50fa7b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON: 1 deep</string>
<key>scope</key>
<string>meta meta.structure.dictionary.value string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ffb86c</string>
</dict>
</dict>
<!-- Markdown Tweaks -->
<dict>
<key>name</key>
<string>Markup: strike</string>
<key>scope</key>
<string>markup.strike</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#FFB86C</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: bold</string>
<key>scope</key>
<string>markup.bold</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#FFB86C</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: italic</string>
<key>scope</key>
<string>markup.italic</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#FFB86C</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: heading</string>
<key>scope</key>
<string>markup.heading</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#8BE9FD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: List Items Punctuation</string>
<key>scope</key>
<string>punctuation.definition.list_item.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF79C6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Blockquote</string>
<key>scope</key>
<string>markup.quote</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#6272A4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Blockquote Punctuation</string>
<key>scope</key>
<string>punctuation.definition.blockquote.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>background</key>
<string>#6272A4</string>
<key>foreground</key>
<string>#6272A4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Separator</string>
<key>scope</key>
<string>meta.separator</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#6272A4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: raw inline</string>
<key>scope</key>
<string>text.html.markdown markup.raw.inline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#50FA7B</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: underline</string>
<key>scope</key>
<string>markup.underline</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#BD93F9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Raw block</string>
<key>scope</key>
<string>markup.raw.block</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#CFCFC2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Raw Block fenced source</string>
<key>scope</key>
<string>markup.raw.block.fenced.markdown source</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F8F8F2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Fenced Bode Block</string>
<key>scope</key>
<string>punctuation.definition.fenced.markdown, variable.language.fenced.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#6272A4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Fenced Language</string>
<key>scope</key>
<string>variable.language.fenced.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#6272A4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation Accessor</string>
<key>scope</key>
<string>punctuation.accessor</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF79C6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Meta Function Return Type</string>
<key>scope</key>
<string>meta.function.return-type</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF79C6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation Section Block Begin</string>
<key>scope</key>
<string>punctuation.section.block.begin</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ffffff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation Section Block End</string>
<key>scope</key>
<string>punctuation.section.block.end</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ffffff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation Section Embedded Begin</string>
<key>scope</key>
<string>punctuation.section.embedded.begin</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff79c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation Section Embedded End</string>
<key>scope</key>
<string>punctuation.section.embedded.end</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff79c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation Separator Namespace</string>
<key>scope</key>
<string>punctuation.separator.namespace</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff79c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variable Function</string>
<key>scope</key>
<string>variable.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#50fa7b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variable Other</string>
<key>scope</key>
<string>variable.other</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ffffff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variable Language</string>
<key>scope</key>
<string>variable.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#bd93f9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Entity Name Module Ruby</string>
<key>scope</key>
<string>entity.name.module.ruby</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#8be9fd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Entity Name Constant Ruby</string>
<key>scope</key>
<string>entity.name.constant.ruby</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#bd93f9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support Function Builtin Ruby</string>
<key>scope</key>
<string>support.function.builtin.ruby</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ffffff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage Type Namespace CS</string>
<key>scope</key>
<string>storage.type.namespace.cs</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff79c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Entity Name Namespace CS</string>
<key>scope</key>
<string>entity.name.namespace.cs</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#8be9fd</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>83091B89-765E-4F0D-9275-0EC6CB084126</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>semanticClass</key>
<string>theme.dracula</string>
<key>author</key>
<string>Zeno Rocha</string>
</dict>
</plist>

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Dmitry Nefedov
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.

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Dmitry Nefedov
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.

View file

@ -0,0 +1,32 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
<h3 align="center">
Kanagawa Dragon Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
</h3>
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
```bash
ya pack -a marcosvnmelo/kanagawa-dragon
```
## ⚙️ Usage
Add these lines to your `theme.toml` configuration file to use it:
```toml
[flavor]
use = "kanagawa-dragon"
```
## 📜 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.

View file

@ -0,0 +1,100 @@
# general
[manager]
marker_copied = { fg = "#87a987", bg = "#87a987" } # green
marker_cut = { fg = "#e46876", bg = "#e46876" } # red
marker_marked = { fg = "#a292a3", bg = "#a292a3" } # magenta
marker_selected = { fg = "#b6927b", bg = "#b6927b" } # cyan
cwd = { fg = "#e6c384" } # yellow
hovered = { reversed = true }
preview_hovered = { reversed = true }
tab_active = { reversed = true }
tab_inactive = {}
tab_width = 1
# default bg
count_copied = { fg = "#1f1f28", bg = "#87a987" } # green
count_cut = { fg = "#1f1f28", bg = "#e46876" } # red
count_selected = { fg = "#1f1f28", bg = "#e6c384" } # yellow
border_symbol = "│"
border_style = { fg = "#c5c9c5"} # white
# status-line
[status]
separator_open = ""
separator_close = ""
separator_style = { fg = "reset", bg = "#363646" } # light bg
# default bg
mode_normal = { fg = "#1f1f28", bg = "#8ba4b0", bold = true } # blue
mode_select = { fg = "#1f1f28", bg = "#a292a3", bold = true } # magenta
mode_unset = { fg = "#1f1f28", bg = "#e6c384", bold = true } # yellow
# blue - light bg
progress_label = { fg = "#8ba4b0", bg = "#363646", bold = true }
# light bg - default bg
progress_normal = { fg = "#363646", bg = "#1f1f28" }
progress_error = { fg = "#363646", bg = "#1f1f28" }
permissions_t = { fg = "#87a987" } # green
permissions_r = { fg = "#e6c384" } # yellow
permissions_w = { fg = "#E46876" } # red
permissions_x = { fg = "#7aa89f" } # cyan
permissions_s = { fg = "#938aa9" } # magenta
[select]
border = { fg = "#7fb4ca" } # blue
active = { fg = "#938aa9", bold = true } # magenta
inactive = {}
[input]
border = { fg = "#7fb4ca" } # blue
title = {}
value = {}
selected = { reversed = true }
[completion]
border = { fg = "#7fb4ca" } # blue
active = { reversed = true }
inactive = {}
[tasks]
border = { fg = "#7fb4ca" } # blue
title = {}
hovered = { fg = "#938aa9" } # magenta
[which]
cols = 2
separator = " - "
separator_style = { fg = "#727169" } # darkgrey
mask = { bg = "#16161d" } # dark bg
rest = { fg = "#727169" } # darkgrey
cand = { fg = "#8ba4b0" }
desc = { fg = "#565666" }
[help]
on = { fg = "#7aa89f" } # cyan
run = { fg = "#938aa9" } # magenta
desc = {}
hovered = { reversed = true, bold = true }
footer = { fg = "#090618", bg = "#c5c9c5" } # white
[notify]
title_info = { fg = "#87a987" } # green
title_warn = { fg = "#e6c384" } # yellow
title_error = { fg = "#E46876" } # red
# files
[filetype]
rules = [
{ mime = "image/*", fg = "#e6c384" },
{ mime = "{audio,video}/*", fg = "#a292a3" },
{ mime = "application/{,g}zip", fg = "#e46876" },
{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#e46876" },
{ mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#6a9589" },
{ name = "*", is = "orphan", fg = "#e46876" },
{ name = "*", is = "exec", fg = "#a292a3" },
{ name = "*/", fg = "#8ba4b0"}
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

@ -0,0 +1,448 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>Kanagawa Dragon</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#1F1F28</string>
<key>caret</key>
<string>#C8C093</string>
<key>foreground</key>
<string>#c5c9c5</string>
<key>invisibles</key>
<string>#54546D</string>
<key>lineHighlight</key>
<string>#2D4F67</string>
<key>selection</key>
<string>#2D4F67</string>
<key>findHighlight</key>
<string>#2D4F67</string>
<key>selectionBorder</key>
<string>#222218</string>
<key>gutterForeground</key>
<string>#54546D</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#a6a69c</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#87a987</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Number</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D27E99</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Built-in constant</string>
<key>scope</key>
<string>constant.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#b6927b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>User-defined constant</string>
<key>scope</key>
<string>constant.character, constant.other</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E6C384</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variable</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>#E6C384</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Ruby's @variable</string>
<key>scope</key>
<string>variable.other.readwrite.instance</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#E6C384</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String interpolation</string>
<key>scope</key>
<string>constant.character.escaped, constant.character.escape, string source, string source.ruby</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#c4b28a</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E46876</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#a292a3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage type</string>
<key>scope</key>
<string>storage.type</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#a292a3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Class name</string>
<key>scope</key>
<string>entity.name.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#7AA89F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inherited class</string>
<key>scope</key>
<string>entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#7AA89F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function name</string>
<key>scope</key>
<string>entity.name.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#8ba4b0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function argument</string>
<key>scope</key>
<string>variable.parameter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#b8b4d0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag name</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#7FB4CA</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag attribute</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#E6C384</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library function</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#7FB4CA</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library constant</string>
<key>scope</key>
<string>support.constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#7FB4CA</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library class/type</string>
<key>scope</key>
<string>support.type, support.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#7AA89F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library variable</string>
<key>scope</key>
<string>support.other.variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#b6927b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#b98d7b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#717C7C</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON String</string>
<key>scope</key>
<string>meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#a292a3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.header</string>
<key>scope</key>
<string>meta.diff, meta.diff.header</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#8ba4b0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#43242B</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#2B3328</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#49443C</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>constant.numeric.line-number.find-in-files - match</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#54546D</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>entity.name.filename</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C8C093</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>message.error</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E46876</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON Punctuation</string>
<key>scope</key>
<string>punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#9CABCA</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON Structure</string>
<key>scope</key>
<string>meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#a292a3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON String</string>
<key>scope</key>
<string>meta.structure.dictionary.value.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ffffff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Escape Characters</string>
<key>scope</key>
<string>constant.character.escape</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#b98d7b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Regular Expressions</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E6C384</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>592FC036-6BB7-4676-A2F5-2894D48C8E33</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>semanticClass</key>
<string>theme.dark.kanagawa-dragon</string>
</dict>
</plist>

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Dmitry Nefedov
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.

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Dmitry Nefedov
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.

View file

@ -0,0 +1,32 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
<h3 align="center">
Kanagawa Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
</h3>
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
```bash
ya pack -a dangooddd/kanagawa
```
## ⚙️ Usage
Add these lines to your `theme.toml` configuration file to use it:
```toml
[flavor]
dark = "kanagawa"
```
## 📜 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.

View file

@ -0,0 +1,136 @@
## Color palette
## Check https://github.com/rebelot/kanagawa.nvim for more details
# sumiInk0 "#16161d"
# sumiInk3 "#1f1f28" bg
# sumiInk4 "#2a2a37"
# sumiInk6 "#54546d"
# fujiWhite "#dcd7ba" fg
# fujiGray "#727169"
# peachRed "#ff5d62"
# autumnRed "#c34043"
# crystalBlue "#7e9cd8"
# waveRed "#e46876"
# carpYellow "#e6c384"
# springGreen "#98bb6c"
# autumnGreen "#76946a"
# oniViolet "#957fb8"
# waveAqua1 "#6a9589"
# surimiOrange "#ffa066"
# waveAqua2 "#7aa89f"
[manager]
marker_copied = { fg = "#98bb6c", bg = "#98bb6c" }
marker_cut = { fg = "#e46876", bg = "#e46876" }
marker_marked = { fg = "#957fb8", bg = "#957fb8" }
marker_selected = { fg = "#ffa066", bg = "#ffa066" }
cwd = { fg = "#e6c384" }
hovered = { reversed = true }
preview_hovered = { reversed = true }
find_keyword = { fg = "#ffa066", bg = "#1f1f28" }
find_position = {}
tab_active = { reversed = true }
tab_inactive = {}
tab_width = 1
count_copied = { fg = "#1f1f28", bg = "#98bb6c" }
count_cut = { fg = "#1f1f28", bg = "#e46876" }
count_selected = { fg = "#1f1f28", bg = "#e6c384" }
border_symbol = "│"
border_style = { fg = "#dcd7ba" }
[mode]
normal_main = { fg = "#1f1f28", bg = "#7e9cd8" }
normal_alt = { fg = "#7e9cd8", bg = "#2a2a37" }
select_main = { fg = "#1f1f28", bg = "#957fb8" }
select_alt = { fg = "#957fb8", bg = "#2a2a37" }
unset_main = { fg = "#1f1f28", bg = "#e6c384" }
unset_alt = { fg = "#e6c384", bg = "#2a2a37" }
[status]
separator_open = ""
separator_close = ""
separator_style = { fg = "reset", bg = "#2a2a37" }
progress_label = { fg = "#7e9cd8", bg = "#2a2a37", bold = true }
progress_normal = { fg = "#2a2a37", bg = "#1f1f28" }
progress_error = { fg = "#2a2a37", bg = "#1f1f28" }
perm_type = { fg = "#98bb6c" }
perm_read = { fg = "#e6c384" }
perm_write = { fg = "#ff5d62" }
perm_exec = { fg = "#7aa89f" }
perm_sep = { fg = "#957fb8" }
[pick]
border = { fg = "#7fb4ca" }
active = { fg = "#957fb8", bold = true }
inactive = {}
[input]
border = { fg = "#7fb4ca" }
title = {}
value = {}
selected = { reversed = true }
[completion]
border = { fg = "#7fb4ca" }
active = { reversed = true }
inactive = {}
[tasks]
border = { fg = "#7fb4ca" }
title = {}
hovered = { fg = "#957fb8" }
[which]
cols = 2
separator = " - "
separator_style = { fg = "#727169" }
mask = { bg = "#16161d" }
rest = { fg = "#727169" }
cand = { fg = "#7e9cd8" }
desc = { fg = "#54546d" }
[help]
on = { fg = "#7aa89f" }
run = { fg = "#957fb8" }
desc = {}
hovered = { reversed = true, bold = true }
footer = { fg = "#1f1f28", bg = "#dcd7ba" }
[notify]
title_info = { fg = "#98bb6c" }
title_warn = { fg = "#e6c384" }
title_error = { fg = "#ff5d62" }
[filetype]
rules = [
# images
{ mime = "image/*", fg = "#e6c384" },
# media
{ mime = "{audio,video}/*", fg = "#957fb8" },
# archives
{ mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "#e46876" },
# documents
{ mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#6a9589" },
# broken links
{ name = "*", is = "orphan", fg = "#c34043" },
# executables
{ name = "*", is = "exec", fg = "#76946a" },
# fallback
{ name = "*", fg = "#dcd7ba" },
{ name = "*/", fg = "#7e9cd8" },
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

View file

@ -0,0 +1,448 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>Kanagawa</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#1F1F28</string>
<key>caret</key>
<string>#C8C093</string>
<key>foreground</key>
<string>#DCD7BA</string>
<key>invisibles</key>
<string>#54546D</string>
<key>lineHighlight</key>
<string>#2D4F67</string>
<key>selection</key>
<string>#2D4F67</string>
<key>findHighlight</key>
<string>#2D4F67</string>
<key>selectionBorder</key>
<string>#222218</string>
<key>gutterForeground</key>
<string>#54546D</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#727169</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98BB6C</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Number</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D27E99</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Built-in constant</string>
<key>scope</key>
<string>constant.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFA066</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>User-defined constant</string>
<key>scope</key>
<string>constant.character, constant.other</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E6C384</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variable</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>#E6C384</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Ruby's @variable</string>
<key>scope</key>
<string>variable.other.readwrite.instance</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#E6C384</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String interpolation</string>
<key>scope</key>
<string>constant.character.escaped, constant.character.escape, string source, string source.ruby</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#C0A36E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E46876</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#957FB8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage type</string>
<key>scope</key>
<string>storage.type</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#957FB8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Class name</string>
<key>scope</key>
<string>entity.name.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#7AA89F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inherited class</string>
<key>scope</key>
<string>entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#7AA89F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function name</string>
<key>scope</key>
<string>entity.name.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#7E9CD8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function argument</string>
<key>scope</key>
<string>variable.parameter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#b8b4d0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag name</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#7FB4CA</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag attribute</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#E6C384</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library function</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#7FB4CA</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library constant</string>
<key>scope</key>
<string>support.constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#7FB4CA</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library class/type</string>
<key>scope</key>
<string>support.type, support.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#7AA89F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library variable</string>
<key>scope</key>
<string>support.other.variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFA066</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string/>
<key>foreground</key>
<string>#FF5D62</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#717C7C</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON String</string>
<key>scope</key>
<string>meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#957FB8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.header</string>
<key>scope</key>
<string>meta.diff, meta.diff.header</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#7E9CD8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#43242B</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#2B3328</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#49443C</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>constant.numeric.line-number.find-in-files - match</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#54546D</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>entity.name.filename</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C8C093</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>message.error</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E82424</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON Punctuation</string>
<key>scope</key>
<string>punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#9CABCA</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON Structure</string>
<key>scope</key>
<string>meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#957FB8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON String</string>
<key>scope</key>
<string>meta.structure.dictionary.value.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ffffff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Escape Characters</string>
<key>scope</key>
<string>constant.character.escape</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF5D62</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Regular Expressions</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E6C384</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>592FC036-6BB7-4676-A2F5-2894D48C8E33</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>semanticClass</key>
<string>theme.dark.kanagawa</string>
</dict>
</plist>

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Lukas Manera
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.

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Lukas Manera
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.

View file

@ -0,0 +1,40 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
<h3 align="center">
Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
</h3>
## Monokai Vibrant
I like Monokai. I like Monokai with vibrant colors and minimal styling even more. Borders are only slightly visible. Kept a lot of things plain white to counteract the colorfulness.
## Theme
Monokai Vibrant Theme based on jonotansberg "tweaked Monokai Dark Soda" .tmTheme. https://github.com/jonatansberg/Monokai-Dark-Soda.tmTheme
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
<!-- Please replace "username/example" with your repository name. -->
```bash
ya pack -a sanjinso/monokai-vibrant
```
## ⚙️ Usage
Add the these lines to your `theme.toml` configuration file to use it:
```toml
[flavor]
use = "monokai-vibrant"
```
## 📜 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.

View file

@ -0,0 +1,95 @@
#E373CE
#FFD945
#FF9700
#81F900
#FF3F4F
#19D1E5
#528bff
[manager]
cwd = { fg = "white" }
hovered = { reversed = true }
preview_hovered = { reversed = true }
tab_active = { reversed = true }
tab_inactive = {}
tab_width = 1
# default bg
count_copied = { fg = "#1f1f28", bg = "#81F900" }
count_cut = { fg = "#1f1f28", bg = "#FF3F4F" }
count_selected = { fg = "#1f1f28", bg = "#FFD945" }
# Find
find_keyword = { bg = "white", fg = "#FF3F4F", bold = true, italic = false, underline = false }
# Border
border_symbol = "│"
border_style = { bg = "#292B30", fg = "#333341" }
[which]
cols = 2
separator = " | "
separator_style = { fg = "#292B30" }
mask = { bg = "#16161d" } # dark bg
rest = { fg = "#727169" } # darkgrey
cand = { fg = "white" }
desc = { fg = "#565666" }
[status]
separator_open = ""
separator_close = ""
separator_style = { fg = "reset", bg = "#363646" }
# default bg
mode_normal = { fg = "#1f1f28", bg = "white", bold = true }
mode_select = { fg = "#1f1f28", bg = "#FF3F4F", bold = true }
mode_unset = { fg = "#1f1f28", bg = "#FFD945", bold = true }
progress_label = { fg = "#19D1E5", bg = "#363646", bold = true }
progress_normal = { fg = "#363646", bg = "#1f1f28" }
progress_error = { fg = "#363646", bg = "#1f1f28" }
permissions_t = { fg = "#81F900" }
permissions_r = { fg = "#FFD945" }
permissions_w = { fg = "#FF3F4F" }
permissions_x = { fg = "#FF9700" }
permissions_s = { fg = "#19D1E5" }
[input]
border = { fg = "#7fb4ca" } # blue
title = {}
value = {}
selected = { reversed = true }
[completion]
border = { fg = "#7fb4ca" } # blue
active = { reversed = true }
inactive = {}
[tasks]
border = { fg = "#7fb4ca" } # blue
title = {}
hovered = { fg = "#938aa9" } # magenta
[help]
on = { fg = "#7aa89f" } # cyan
run = { fg = "#938aa9" } # magenta
desc = {}
hovered = { reversed = true, bold = true }
footer = { fg = "#090618", bg = "#dcd7ba" } # white
# files
[filetype]
rules = [
{ mime = "image/*", fg = "#FFD945" },
{ mime = "{audio,video}/*", fg = "#81F900" },
{ mime = "application/{,g}zip", fg = "#FF3F4F" },
{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#FF3F4F" },
{ mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#0D96DE" },
{ name = "*", is = "orphan", fg = "#FF3F4F" },
{ name = "*", is = "exec", fg = "#81F900" },
{ name = "*/", fg = "#19D1E5"}
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

View file

@ -0,0 +1,675 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>Monokai Dark</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#242424</string>
<key>caret</key>
<string>#F8F8F0</string>
<key>foreground</key>
<string>#F8F8F2</string>
<key>invisibles</key>
<string>#3B3A32</string>
<key>lineHighlight</key>
<string>#3D3D3D55</string>
<key>selection</key>
<string>#403d3d</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#5C6370</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFD945</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Number</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E373CE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Built-in constant</string>
<key>scope</key>
<string>constant.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E373CE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>User-defined constant</string>
<key>scope</key>
<string>constant.character, constant.other</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E373CE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variable</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF3F4F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#FF3F4F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage type</string>
<key>scope</key>
<string>storage.type</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#19D1E5</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Class name</string>
<key>scope</key>
<string>entity.name.class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#81F900</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inherited class</string>
<key>scope</key>
<string>entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic underline</string>
<key>foreground</key>
<string>#81F900</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function name</string>
<key>scope</key>
<string>entity.name.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#81F900</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function argument</string>
<key>scope</key>
<string>variable.parameter</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#FF9700</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag name</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#FF3F4F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag attribute</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#81F900</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library function</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#19D1E5</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library constant</string>
<key>scope</key>
<string>support.constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#19D1E5</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library class/type</string>
<key>scope</key>
<string>support.type, support.class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#19D1E5</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library variable</string>
<key>scope</key>
<string>support.other.variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>PHP Namespaces</string>
<key>scope</key>
<string>support.other.namespace, entity.name.type.namespace</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E373CE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>PHP Namespace Alias</string>
<key>scope</key>
<string>support.other.namespace.use-as.php</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#19D1E5</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>PHP Namespace Keyword</string>
<key>scope</key>
<string>variable.language.namespace.php</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D66990</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>PHP Namespace Separator</string>
<key>scope</key>
<string>punctuation.separator.inheritance.php</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF3F4F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS Functions / Property Values</string>
<key>scope</key>
<string>support.function.misc.css, support.constant.property-value.css, support.constant.font-name.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFD945</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Tagbraces</string>
<key>scope</key>
<string>meta.tag.template.value.twig, meta.tag.template.block.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#CD5AC5</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Keywords</string>
<key>scope</key>
<string>keyword.control.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E05D8C</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Objects</string>
<key>scope</key>
<string>variable.other.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E5A5E0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Object Properties</string>
<key>scope</key>
<string>variable.other.property.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFE1FC</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Language Constants</string>
<key>scope</key>
<string>constant.language.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFD945</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Numerical Constants</string>
<key>scope</key>
<string>constant.numeric.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFD0FB</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Filters</string>
<key>scope</key>
<string>support.function.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#90E7F7</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig User-Defined Filters</string>
<key>scope</key>
<string>meta.function-call.other.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF9700</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Macros</string>
<key>scope</key>
<string>meta.function-call.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF9700</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#FF3F4F</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F8F8F0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#E373CE</string>
<key>foreground</key>
<string>#F8F8F0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Embedded Source</string>
<key>scope</key>
<string>text source</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#3D3D3D55</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff: header</string>
<key>scope</key>
<string>meta.diff, meta.diff.header</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#E0EDDD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff: deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#D3201F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff: changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#BF3904</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff: inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#81F900</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff: range</string>
<key>scope</key>
<string>meta.diff, meta.diff.range</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#3bc0f0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Headings</string>
<key>scope</key>
<string>markup.heading.markdown, markup.heading.1.markdown, markup.heading.2.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#81F900</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Bold</string>
<key>scope</key>
<string>markup.bold.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#F8F8F2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Italic</string>
<key>scope</key>
<string>markup.italic.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#F8F8F2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Punctuation for Bold, Italic, and Inline Block</string>
<key>scope</key>
<string>punctuation.definition.bold.markdown, punctuation.definition.italic.markdown, punctuation.definition.raw.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D3201F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Bulleted List</string>
<key>scope</key>
<string>markup.list.unnumbered.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E373CE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Numbered List</string>
<key>scope</key>
<string>markup.list.numbered.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E373CE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Block and Inline Block</string>
<key>scope</key>
<string>markup.raw.block.markdown, markup.raw.inline.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFD945</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Quote Block and Punctuation</string>
<key>scope</key>
<string>markup.quote.markdown, punctuation.definition.blockquote.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#00A0E4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Seperator</string>
<key>scope</key>
<string>meta.separator.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E373CE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Link and Reference URL</string>
<key>scope</key>
<string>meta.image.inline.markdown, markup.underline.link.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#5C6370</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Link Title, Image Description</string>
<key>scope</key>
<string>string.other.link.title.markdown, string.other.link.description.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#81F900</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Angle Brakets on Link and Image</string>
<key>scope</key>
<string>punctuation.definition.link.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#5C6370</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Parens on Link and Image </string>
<key>scope</key>
<string>punctuation.definition.metadata.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#5C6370</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Square Brakets on Link, Image, and Reference</string>
<key>scope</key>
<string>punctuation.definition.string.begin.markdown, punctuation.definition.string.end.markdown, punctuation.definition.constant.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#5C6370</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>255F0694-0C8C-93E3-114A-EBBCF44F5573</string>
</dict>
</plist>

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Tomasz Kapias
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.

View file

@ -0,0 +1,22 @@
MIT License
Copyright (c) 2018-2021 bat-developers (https://github.com/sharkdp/bat) and
Copyright (c) 2021 fly16-bat authors
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.

View file

@ -0,0 +1,32 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
## moonfly flavor for [Yazi](https://github.com/sxyazi/yazi)
moonfly.yazi is based on [moonfly](https://github.com/bluz71/vim-moonfly-colors)'s colors and [fly16](https://github.com/bluz71/fly16-bat) .tmTheme template. It is usable standalone or with associated terminal themes found in moonfly's [extras section](https://github.com/bluz71/vim-moonfly-colors#extras).
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
```bash
ya pack -a tkapias/moonfly.yazi
```
## ⚙️ Usage
Add the these lines to your `theme.toml` configuration file to use it:
```toml
[flavor]
use = "moonfly"
```
## 📜 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.

View file

@ -0,0 +1,781 @@
# vim:fileencoding=utf-8:foldmethod=marker
# : Manager {{{
[manager]
cwd = { fg = "#36c692" }
# Hovered
hovered = { reversed = true }
preview_hovered = { underline = true }
# Find
find_keyword = { fg = "#e3c78a", bold = true, italic = true, underline = true }
find_position = { fg = "#ff5189", bg = "reset", bold = true, italic = true }
# Marker
marker_copied = { fg = "#36c692", bg = "#36c692" }
marker_cut = { fg = "#ff5189", bg = "#ff5189" }
marker_marked = { fg = "#74b2ff", bg = "#74b2ff" }
marker_selected = { fg = "#c6c684", bg = "#c6c684" }
# Tab
tab_active = { reversed = true }
tab_inactive = {}
tab_width = 1
# Count
count_copied = { fg = "#323437", bg = "#36c692" }
count_cut = { fg = "#323437", bg = "#ff5189" }
count_selected = { fg = "#323437", bg = "#c6c684" }
# Border
border_symbol = "│"
border_style = { fg = "#323437" }
# : Status {{{
[status]
separator_open = ""
separator_close = ""
separator_style = { fg = "#323437", bg = "#323437" }
# Mode
mode_normal = { fg = "#080808", bg = "#80a0ff", bold = true }
mode_select = { fg = "#080808", bg = "#e3c78a", bold = true }
mode_unset = { fg = "#080808", bg = "#ff5454", bold = true }
# Progress
progress_label = { fg = "#bdbdbd", bold = true }
progress_normal = { fg = "#74b2ff", bg = "#323437" }
progress_error = { fg = "#ff5189", bg = "#323437" }
# Permissions
permissions_t = { fg = "#8cc85f" }
permissions_r = { fg = "#e3c78a" }
permissions_w = { fg = "#ff5454" }
permissions_x = { fg = "#79dac8" }
permissions_s = { fg = "#c6c6c6" }
# : }}}
# : Pick {{{
[pick]
border = { fg = "#323437" }
active = { fg = "#80a0ff", bold = true }
inactive = {}
# : }}}
# : Input {{{
[input]
border = { fg = "#80a0ff" }
title = {}
value = {}
selected = { reversed = true }
# : }}}
# : Confirm {{{
[confirm]
border = { fg = "#80a0ff" }
title = { fg = "#cf87e8" }
content = {}
list = {}
btn_yes = { reversed = true }
btn_no = {}
btn_labels = [ " [Y]es ", " (N)o " ]
# : }}}
# : Completion {{{
[completion]
border = { fg = "#80a0ff" }
active = { reversed = true }
inactive = {}
# Icons
icon_file = ""
icon_folder = ""
icon_command = ""
# : }}}
# : Tasks {{{
[tasks]
border = { fg = "#80a0ff" }
title = {}
hovered = { fg = "#cf87e8", underline = true }
# : }}}
# : Which {{{
[which]
cols = 3
mask = { bg = "#323437" }
cand = { fg = "#79dac8" }
rest = { fg = "#d6deeb" }
desc = { fg = "#cf87e8" }
separator = "  "
separator_style = { fg = "#949494" }
# : }}}
# : Help {{{
[help]
on = { fg = "#79dac8" }
run = { fg = "#cf87e8" }
desc = {}
hovered = { reversed = true, bold = true }
footer = { fg = "#323437", bg = "#c6c6c6" }
# : }}}
# : Notify {{{
[notify]
title_info = { fg = "#8cc85f" }
title_warn = { fg = "#e3c78a" }
title_error = { fg = "#ff5454" }
# Icons
icon_info = ""
icon_warn = ""
icon_error = ""
# : }}}
# : File-specific styles {{{
[filetype]
rules = [
# Images
{ mime = "image/*", fg = "#c6c684" },
# Media
{ mime = "{audio,video}/*", fg = "#ae81ff" },
# Archives
{ mime = "application/{,g}zip", fg = "#ff5189" },
{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#ff5189" },
# Documents
{ mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#36c692" },
# Empty files
{ mime = "inode/x-empty", fg = "#ff5454" },
# Special files
{ name = "*", is = "orphan", bg = "#ff5189" },
{ name = "*", is = "exec" , fg = "#36c692" },
# Dummy files
{ name = "*", is = "dummy", bg = "#ff5189" },
{ name = "*/", is = "dummy", bg = "#ff5189" },
# Fallback
{ name = "*", fg = "#e4e4e4" },
{ name = "*/", fg = "#80a0ff" }
]
[icon]
globs = []
dirs = [
{ name = ".config", text = "" },
{ name = ".git", text = "" },
{ name = "Desktop", text = "" },
{ name = "Development", text = "" },
{ name = "Documents", text = "" },
{ name = "Downloads", text = "" },
{ name = "Library", text = "" },
{ name = "Movies", text = "" },
{ name = "Music", text = "" },
{ name = "Pictures", text = "" },
{ name = "Public", text = "" },
{ name = "Videos", text = "" },
]
files = [
{ name = ".babelrc", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = ".bash_profile", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = ".bashrc", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = ".dockerignore", text = "󰡨", fg_dark = "#458ee6", fg_light = "#2e5f99" },
{ name = ".ds_store", text = "", fg_dark = "#41535b", fg_light = "#41535b" },
{ name = ".editorconfig", text = "", fg_dark = "#fff2f2", fg_light = "#333030" },
{ name = ".env", text = "", fg_dark = "#faf743", fg_light = "#32310d" },
{ name = ".eslintignore", text = "", fg_dark = "#4b32c3", fg_light = "#4b32c3" },
{ name = ".eslintrc", text = "", fg_dark = "#4b32c3", fg_light = "#4b32c3" },
{ name = ".gitattributes", text = "", fg_dark = "#f54d27", fg_light = "#b83a1d" },
{ name = ".gitconfig", text = "", fg_dark = "#f54d27", fg_light = "#b83a1d" },
{ name = ".gitignore", text = "", fg_dark = "#f54d27", fg_light = "#b83a1d" },
{ name = ".gitlab-ci.yml", text = "", fg_dark = "#e24329", fg_light = "#aa321f" },
{ name = ".gitmodules", text = "", fg_dark = "#f54d27", fg_light = "#b83a1d" },
{ name = ".gtkrc-2.0", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = ".gvimrc", text = "", fg_dark = "#019833", fg_light = "#017226" },
{ name = ".luaurc", text = "", fg_dark = "#00a2ff", fg_light = "#007abf" },
{ name = ".mailmap", text = "󰊢", fg_dark = "#41535b", fg_light = "#41535b" },
{ name = ".npmignore", text = "", fg_dark = "#e8274b", fg_light = "#ae1d38" },
{ name = ".npmrc", text = "", fg_dark = "#e8274b", fg_light = "#ae1d38" },
{ name = ".prettierrc", text = "", fg_dark = "#4285f4", fg_light = "#3264b7" },
{ name = ".settings.json", text = "", fg_dark = "#854cc7", fg_light = "#643995" },
{ name = ".SRCINFO", text = "󰣇", fg_dark = "#0f94d2", fg_light = "#0b6f9e" },
{ name = ".vimrc", text = "", fg_dark = "#019833", fg_light = "#017226" },
{ name = ".Xauthority", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
{ name = ".xinitrc", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
{ name = ".Xresources", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
{ name = ".xsession", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
{ name = ".zprofile", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = ".zshenv", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = ".zshrc", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = "_gvimrc", text = "", fg_dark = "#019833", fg_light = "#017226" },
{ name = "_vimrc", text = "", fg_dark = "#019833", fg_light = "#017226" },
{ name = "avif", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "brewfile", text = "", fg_dark = "#701516", fg_light = "#701516" },
{ name = "bspwmrc", text = "", fg_dark = "#2f2f2f", fg_light = "#2f2f2f" },
{ name = "build", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = "build.gradle", text = "", fg_dark = "#005f87", fg_light = "#005f87" },
{ name = "build.zig.zon", text = "", fg_dark = "#f69a1b", fg_light = "#7b4d0e" },
{ name = "cantorrc", text = "", fg_dark = "#1c99f3", fg_light = "#1573b6" },
{ name = "checkhealth", text = "󰓙", fg_dark = "#75b4fb", fg_light = "#3a5a7e" },
{ name = "cmakelists.txt", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "commit_editmsg", text = "", fg_dark = "#f54d27", fg_light = "#b83a1d" },
{ name = "compose.yaml", text = "󰡨", fg_dark = "#458ee6", fg_light = "#2e5f99" },
{ name = "compose.yml", text = "󰡨", fg_dark = "#458ee6", fg_light = "#2e5f99" },
{ name = "config", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "containerfile", text = "󰡨", fg_dark = "#458ee6", fg_light = "#2e5f99" },
{ name = "copying", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "copying.lesser", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "docker-compose.yaml", text = "󰡨", fg_dark = "#458ee6", fg_light = "#2e5f99" },
{ name = "docker-compose.yml", text = "󰡨", fg_dark = "#458ee6", fg_light = "#2e5f99" },
{ name = "dockerfile", text = "󰡨", fg_dark = "#458ee6", fg_light = "#2e5f99" },
{ name = "ext_typoscript_setup.txt", text = "", fg_dark = "#ff8700", fg_light = "#aa5a00" },
{ name = "favicon.ico", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "fp-info-cache", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "fp-lib-table", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "FreeCAD.conf", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
{ name = "gemfile$", text = "", fg_dark = "#701516", fg_light = "#701516" },
{ name = "gnumakefile", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "gradle-wrapper.properties", text = "", fg_dark = "#005f87", fg_light = "#005f87" },
{ name = "gradle.properties", text = "", fg_dark = "#005f87", fg_light = "#005f87" },
{ name = "gradlew", text = "", fg_dark = "#005f87", fg_light = "#005f87" },
{ name = "groovy", text = "", fg_dark = "#4a687c", fg_light = "#384e5d" },
{ name = "gruntfile.babel.js", text = "", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "gruntfile.coffee", text = "", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "gruntfile.js", text = "", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "gruntfile.ts", text = "", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "gtkrc", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "gulpfile.babel.js", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
{ name = "gulpfile.coffee", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
{ name = "gulpfile.js", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
{ name = "gulpfile.ts", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
{ name = "hyprland.conf", text = "", fg_dark = "#00aaae", fg_light = "#008082" },
{ name = "i3blocks.conf", text = "", fg_dark = "#e8ebee", fg_light = "#2e2f30" },
{ name = "i3status.conf", text = "", fg_dark = "#e8ebee", fg_light = "#2e2f30" },
{ name = "kalgebrarc", text = "", fg_dark = "#1c99f3", fg_light = "#1573b6" },
{ name = "kdeglobals", text = "", fg_dark = "#1c99f3", fg_light = "#1573b6" },
{ name = "kdenlive-layoutsrc", text = "", fg_dark = "#83b8f2", fg_light = "#425c79" },
{ name = "kdenliverc", text = "", fg_dark = "#83b8f2", fg_light = "#425c79" },
{ name = "kritadisplayrc", text = "", fg_dark = "#f245fb", fg_light = "#a12ea7" },
{ name = "kritarc", text = "", fg_dark = "#f245fb", fg_light = "#a12ea7" },
{ name = "license", text = "", fg_dark = "#d0bf41", fg_light = "#686020" },
{ name = "lxde-rc.xml", text = "", fg_dark = "#909090", fg_light = "#606060" },
{ name = "lxqt.conf", text = "", fg_dark = "#0192d3", fg_light = "#016e9e" },
{ name = "makefile", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "mix.lock", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "mpv.conf", text = "", fg_dark = "#3b1342", fg_light = "#3b1342" },
{ name = "node_modules", text = "", fg_dark = "#e8274b", fg_light = "#ae1d38" },
{ name = "package-lock.json", text = "", fg_dark = "#7a0d21", fg_light = "#7a0d21" },
{ name = "package.json", text = "", fg_dark = "#e8274b", fg_light = "#ae1d38" },
{ name = "PKGBUILD", text = "", fg_dark = "#0f94d2", fg_light = "#0b6f9e" },
{ name = "platformio.ini", text = "", fg_dark = "#f6822b", fg_light = "#a4571d" },
{ name = "pom.xml", text = "", fg_dark = "#7a0d21", fg_light = "#7a0d21" },
{ name = "procfile", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "PrusaSlicer.ini", text = "", fg_dark = "#ec6b23", fg_light = "#9d4717" },
{ name = "PrusaSlicerGcodeViewer.ini", text = "", fg_dark = "#ec6b23", fg_light = "#9d4717" },
{ name = "py.typed", text = "", fg_dark = "#ffbc03", fg_light = "#805e02" },
{ name = "QtProject.conf", text = "", fg_dark = "#40cd52", fg_light = "#2b8937" },
{ name = "R", text = "󰟔", fg_dark = "#2266ba", fg_light = "#1a4c8c" },
{ name = "r", text = "󰟔", fg_dark = "#2266ba", fg_light = "#1a4c8c" },
{ name = "rakefile", text = "", fg_dark = "#701516", fg_light = "#701516" },
{ name = "rmd", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "settings.gradle", text = "", fg_dark = "#005f87", fg_light = "#005f87" },
{ name = "svelte.config.js", text = "", fg_dark = "#ff3e00", fg_light = "#bf2e00" },
{ name = "sxhkdrc", text = "", fg_dark = "#2f2f2f", fg_light = "#2f2f2f" },
{ name = "sym-lib-table", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "tailwind.config.js", text = "󱏿", fg_dark = "#20c2e3", fg_light = "#158197" },
{ name = "tailwind.config.mjs", text = "󱏿", fg_dark = "#20c2e3", fg_light = "#158197" },
{ name = "tailwind.config.ts", text = "󱏿", fg_dark = "#20c2e3", fg_light = "#158197" },
{ name = "tmux.conf", text = "", fg_dark = "#14ba19", fg_light = "#0f8c13" },
{ name = "tmux.conf.local", text = "", fg_dark = "#14ba19", fg_light = "#0f8c13" },
{ name = "tsconfig.json", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "unlicense", text = "", fg_dark = "#d0bf41", fg_light = "#686020" },
{ name = "vagrantfile$", text = "", fg_dark = "#1563ff", fg_light = "#104abf" },
{ name = "vlcrc", text = "󰕼", fg_dark = "#ee7a00", fg_light = "#9f5100" },
{ name = "webpack", text = "󰜫", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "weston.ini", text = "", fg_dark = "#ffbb01", fg_light = "#805e00" },
{ name = "workspace", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = "xmobarrc", text = "", fg_dark = "#fd4d5d", fg_light = "#a9333e" },
{ name = "xmobarrc.hs", text = "", fg_dark = "#fd4d5d", fg_light = "#a9333e" },
{ name = "xmonad.hs", text = "", fg_dark = "#fd4d5d", fg_light = "#a9333e" },
{ name = "xorg.conf", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
{ name = "xsettingsd.conf", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
]
exts = [
{ name = "3gp", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
{ name = "3mf", text = "󰆧", fg_dark = "#888888", fg_light = "#5b5b5b" },
{ name = "7z", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
{ name = "a", text = "", fg_dark = "#dcddd6", fg_light = "#494a47" },
{ name = "aac", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
{ name = "ai", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "aif", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
{ name = "aiff", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
{ name = "android", text = "", fg_dark = "#34a853", fg_light = "#277e3e" },
{ name = "ape", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
{ name = "apk", text = "", fg_dark = "#34a853", fg_light = "#277e3e" },
{ name = "app", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
{ name = "applescript", text = "", fg_dark = "#6d8085", fg_light = "#526064" },
{ name = "asc", text = "󰦝", fg_dark = "#576d7f", fg_light = "#41525f" },
{ name = "ass", text = "󰨖", fg_dark = "#ffb713", fg_light = "#805c0a" },
{ name = "astro", text = "", fg_dark = "#e23f67", fg_light = "#aa2f4d" },
{ name = "awk", text = "", fg_dark = "#4d5a5e", fg_light = "#3a4446" },
{ name = "azcli", text = "", fg_dark = "#0078d4", fg_light = "#005a9f" },
{ name = "bak", text = "󰁯", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "bash", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = "bat", text = "", fg_dark = "#c1f12e", fg_light = "#40500f" },
{ name = "bazel", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = "bib", text = "󱉟", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "bicep", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "bicepparam", text = "", fg_dark = "#9f74b3", fg_light = "#6a4d77" },
{ name = "bin", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
{ name = "blade.php", text = "", fg_dark = "#f05340", fg_light = "#a0372b" },
{ name = "blend", text = "󰂫", fg_dark = "#ea7600", fg_light = "#9c4f00" },
{ name = "blp", text = "󰺾", fg_dark = "#5796e2", fg_light = "#3a6497" },
{ name = "bmp", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "brep", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "bz", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
{ name = "bz2", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
{ name = "bz3", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
{ name = "bzl", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = "c", text = "", fg_dark = "#599eff", fg_light = "#3b69aa" },
{ name = "c++", text = "", fg_dark = "#f34b7d", fg_light = "#a23253" },
{ name = "cache", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "cast", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
{ name = "cbl", text = "⚙", fg_dark = "#005ca5", fg_light = "#005ca5" },
{ name = "cc", text = "", fg_dark = "#f34b7d", fg_light = "#a23253" },
{ name = "ccm", text = "", fg_dark = "#f34b7d", fg_light = "#a23253" },
{ name = "cfg", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "cjs", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "clj", text = "", fg_dark = "#8dc149", fg_light = "#466024" },
{ name = "cljc", text = "", fg_dark = "#8dc149", fg_light = "#466024" },
{ name = "cljd", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "cljs", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "cmake", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "cob", text = "⚙", fg_dark = "#005ca5", fg_light = "#005ca5" },
{ name = "cobol", text = "⚙", fg_dark = "#005ca5", fg_light = "#005ca5" },
{ name = "coffee", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "conf", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "config.ru", text = "", fg_dark = "#701516", fg_light = "#701516" },
{ name = "cp", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "cpp", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "cppm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "cpy", text = "⚙", fg_dark = "#005ca5", fg_light = "#005ca5" },
{ name = "cr", text = "", fg_dark = "#c8c8c8", fg_light = "#434343" },
{ name = "crdownload", text = "", fg_dark = "#44cda8", fg_light = "#226654" },
{ name = "cs", text = "󰌛", fg_dark = "#596706", fg_light = "#434d04" },
{ name = "csh", text = "", fg_dark = "#4d5a5e", fg_light = "#3a4446" },
{ name = "cshtml", text = "󱦗", fg_dark = "#512bd4", fg_light = "#512bd4" },
{ name = "cson", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "csproj", text = "󰪮", fg_dark = "#512bd4", fg_light = "#512bd4" },
{ name = "css", text = "", fg_dark = "#42a5f5", fg_light = "#2c6ea3" },
{ name = "csv", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = "cts", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "cu", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = "cue", text = "󰲹", fg_dark = "#ed95ae", fg_light = "#764a57" },
{ name = "cuh", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "cxx", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "cxxm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "d", text = "", fg_dark = "#427819", fg_light = "#325a13" },
{ name = "d.ts", text = "", fg_dark = "#d59855", fg_light = "#6a4c2a" },
{ name = "dart", text = "", fg_dark = "#03589c", fg_light = "#03589c" },
{ name = "db", text = "", fg_dark = "#dad8d8", fg_light = "#494848" },
{ name = "dconf", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "desktop", text = "", fg_dark = "#563d7c", fg_light = "#563d7c" },
{ name = "diff", text = "", fg_dark = "#41535b", fg_light = "#41535b" },
{ name = "dll", text = "", fg_dark = "#4d2c0b", fg_light = "#4d2c0b" },
{ name = "doc", text = "󰈬", fg_dark = "#185abd", fg_light = "#185abd" },
{ name = "Dockerfile", text = "󰡨", fg_dark = "#458ee6", fg_light = "#2e5f99" },
{ name = "docx", text = "󰈬", fg_dark = "#185abd", fg_light = "#185abd" },
{ name = "dot", text = "󱁉", fg_dark = "#30638e", fg_light = "#244a6a" },
{ name = "download", text = "", fg_dark = "#44cda8", fg_light = "#226654" },
{ name = "drl", text = "", fg_dark = "#ffafaf", fg_light = "#553a3a" },
{ name = "dropbox", text = "", fg_dark = "#0061fe", fg_light = "#0049be" },
{ name = "dump", text = "", fg_dark = "#dad8d8", fg_light = "#494848" },
{ name = "dwg", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "dxf", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "ebook", text = "", fg_dark = "#eab16d", fg_light = "#755836" },
{ name = "edn", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "eex", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "ejs", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "el", text = "", fg_dark = "#8172be", fg_light = "#61568e" },
{ name = "elc", text = "", fg_dark = "#8172be", fg_light = "#61568e" },
{ name = "elf", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
{ name = "elm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "eln", text = "", fg_dark = "#8172be", fg_light = "#61568e" },
{ name = "env", text = "", fg_dark = "#faf743", fg_light = "#32310d" },
{ name = "eot", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
{ name = "epp", text = "", fg_dark = "#ffa61a", fg_light = "#80530d" },
{ name = "epub", text = "", fg_dark = "#eab16d", fg_light = "#755836" },
{ name = "erb", text = "", fg_dark = "#701516", fg_light = "#701516" },
{ name = "erl", text = "", fg_dark = "#b83998", fg_light = "#8a2b72" },
{ name = "ex", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "exe", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
{ name = "exs", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "f#", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "f3d", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "f90", text = "󱈚", fg_dark = "#734f96", fg_light = "#563b70" },
{ name = "fbx", text = "󰆧", fg_dark = "#888888", fg_light = "#5b5b5b" },
{ name = "fcbak", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
{ name = "fcmacro", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
{ name = "fcmat", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
{ name = "fcparam", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
{ name = "fcscript", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
{ name = "fcstd", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
{ name = "fcstd1", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
{ name = "fctb", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
{ name = "fctl", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
{ name = "fdmdownload", text = "", fg_dark = "#44cda8", fg_light = "#226654" },
{ name = "fish", text = "", fg_dark = "#4d5a5e", fg_light = "#3a4446" },
{ name = "flac", text = "", fg_dark = "#0075aa", fg_light = "#005880" },
{ name = "flc", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
{ name = "flf", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
{ name = "fnl", text = "", fg_dark = "#fff3d7", fg_light = "#33312b" },
{ name = "fs", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "fsi", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "fsscript", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "fsx", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "gcode", text = "󰐫", fg_dark = "#1471ad", fg_light = "#0f5582" },
{ name = "gd", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "gemspec", text = "", fg_dark = "#701516", fg_light = "#701516" },
{ name = "gif", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "git", text = "", fg_dark = "#f14c28", fg_light = "#b5391e" },
{ name = "glb", text = "", fg_dark = "#ffb13b", fg_light = "#80581e" },
{ name = "gnumakefile", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "go", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "godot", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "gql", text = "", fg_dark = "#e535ab", fg_light = "#ac2880" },
{ name = "graphql", text = "", fg_dark = "#e535ab", fg_light = "#ac2880" },
{ name = "gresource", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "gv", text = "󱁉", fg_dark = "#30638e", fg_light = "#244a6a" },
{ name = "gz", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
{ name = "h", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "haml", text = "", fg_dark = "#eaeae1", fg_light = "#2f2f2d" },
{ name = "hbs", text = "", fg_dark = "#f0772b", fg_light = "#a04f1d" },
{ name = "heex", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "hex", text = "", fg_dark = "#2e63ff", fg_light = "#224abf" },
{ name = "hh", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "hpp", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "hrl", text = "", fg_dark = "#b83998", fg_light = "#8a2b72" },
{ name = "hs", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "htm", text = "", fg_dark = "#e34c26", fg_light = "#aa391c" },
{ name = "html", text = "", fg_dark = "#e44d26", fg_light = "#ab3a1c" },
{ name = "huff", text = "󰡘", fg_dark = "#4242c7", fg_light = "#4242c7" },
{ name = "hurl", text = "", fg_dark = "#ff0288", fg_light = "#bf0266" },
{ name = "hx", text = "", fg_dark = "#ea8220", fg_light = "#9c5715" },
{ name = "hxx", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "ical", text = "", fg_dark = "#2b2e83", fg_light = "#2b2e83" },
{ name = "icalendar", text = "", fg_dark = "#2b2e83", fg_light = "#2b2e83" },
{ name = "ico", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "ics", text = "", fg_dark = "#2b2e83", fg_light = "#2b2e83" },
{ name = "ifb", text = "", fg_dark = "#2b2e83", fg_light = "#2b2e83" },
{ name = "ifc", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "ige", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "iges", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "igs", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "image", text = "", fg_dark = "#d0bec8", fg_light = "#453f43" },
{ name = "img", text = "", fg_dark = "#d0bec8", fg_light = "#453f43" },
{ name = "import", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
{ name = "info", text = "", fg_dark = "#ffffcd", fg_light = "#333329" },
{ name = "ini", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "ino", text = "", fg_dark = "#56b6c2", fg_light = "#397981" },
{ name = "ipynb", text = "", fg_dark = "#51a0cf", fg_light = "#366b8a" },
{ name = "iso", text = "", fg_dark = "#d0bec8", fg_light = "#453f43" },
{ name = "ixx", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "java", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
{ name = "jl", text = "", fg_dark = "#a270ba", fg_light = "#6c4b7c" },
{ name = "jpeg", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "jpg", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "js", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "json", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "json5", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "jsonc", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "jsx", text = "", fg_dark = "#20c2e3", fg_light = "#158197" },
{ name = "jwmrc", text = "", fg_dark = "#0078cd", fg_light = "#005a9a" },
{ name = "jxl", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "kbx", text = "󰯄", fg_dark = "#737672", fg_light = "#565856" },
{ name = "kdb", text = "", fg_dark = "#529b34", fg_light = "#3e7427" },
{ name = "kdbx", text = "", fg_dark = "#529b34", fg_light = "#3e7427" },
{ name = "kdenlive", text = "", fg_dark = "#83b8f2", fg_light = "#425c79" },
{ name = "kdenlivetitle", text = "", fg_dark = "#83b8f2", fg_light = "#425c79" },
{ name = "kicad_dru", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "kicad_mod", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "kicad_pcb", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "kicad_prl", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "kicad_pro", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "kicad_sch", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "kicad_sym", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "kicad_wks", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
{ name = "ko", text = "", fg_dark = "#dcddd6", fg_light = "#494a47" },
{ name = "kpp", text = "", fg_dark = "#f245fb", fg_light = "#a12ea7" },
{ name = "kra", text = "", fg_dark = "#f245fb", fg_light = "#a12ea7" },
{ name = "krz", text = "", fg_dark = "#f245fb", fg_light = "#a12ea7" },
{ name = "ksh", text = "", fg_dark = "#4d5a5e", fg_light = "#3a4446" },
{ name = "kt", text = "", fg_dark = "#7f52ff", fg_light = "#5f3ebf" },
{ name = "kts", text = "", fg_dark = "#7f52ff", fg_light = "#5f3ebf" },
{ name = "lck", text = "", fg_dark = "#bbbbbb", fg_light = "#5e5e5e" },
{ name = "leex", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "less", text = "", fg_dark = "#563d7c", fg_light = "#563d7c" },
{ name = "lff", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
{ name = "lhs", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "lib", text = "", fg_dark = "#4d2c0b", fg_light = "#4d2c0b" },
{ name = "license", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "liquid", text = "", fg_dark = "#95bf47", fg_light = "#4a6024" },
{ name = "lock", text = "", fg_dark = "#bbbbbb", fg_light = "#5e5e5e" },
{ name = "log", text = "󰌱", fg_dark = "#dddddd", fg_light = "#4a4a4a" },
{ name = "lrc", text = "󰨖", fg_dark = "#ffb713", fg_light = "#805c0a" },
{ name = "lua", text = "", fg_dark = "#51a0cf", fg_light = "#366b8a" },
{ name = "luac", text = "", fg_dark = "#51a0cf", fg_light = "#366b8a" },
{ name = "luau", text = "", fg_dark = "#00a2ff", fg_light = "#007abf" },
{ name = "m", text = "", fg_dark = "#599eff", fg_light = "#3b69aa" },
{ name = "m3u", text = "󰲹", fg_dark = "#ed95ae", fg_light = "#764a57" },
{ name = "m3u8", text = "󰲹", fg_dark = "#ed95ae", fg_light = "#764a57" },
{ name = "m4a", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
{ name = "m4v", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
{ name = "magnet", text = "", fg_dark = "#a51b16", fg_light = "#a51b16" },
{ name = "makefile", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "markdown", text = "", fg_dark = "#dddddd", fg_light = "#4a4a4a" },
{ name = "material", text = "󰔉", fg_dark = "#b83998", fg_light = "#8a2b72" },
{ name = "md", text = "", fg_dark = "#dddddd", fg_light = "#4a4a4a" },
{ name = "md5", text = "󰕥", fg_dark = "#8c86af", fg_light = "#5d5975" },
{ name = "mdx", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "mint", text = "󰌪", fg_dark = "#87c095", fg_light = "#44604a" },
{ name = "mjs", text = "", fg_dark = "#f1e05a", fg_light = "#504b1e" },
{ name = "mk", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "mkv", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
{ name = "ml", text = "", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "mli", text = "", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "mm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "mo", text = "∞", fg_dark = "#9772fb", fg_light = "#654ca7" },
{ name = "mobi", text = "", fg_dark = "#eab16d", fg_light = "#755836" },
{ name = "mov", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
{ name = "mp3", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
{ name = "mp4", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
{ name = "mpp", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "msf", text = "", fg_dark = "#137be1", fg_light = "#0e5ca9" },
{ name = "mts", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "mustache", text = "", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "nfo", text = "", fg_dark = "#ffffcd", fg_light = "#333329" },
{ name = "nim", text = "", fg_dark = "#f3d400", fg_light = "#514700" },
{ name = "nix", text = "", fg_dark = "#7ebae4", fg_light = "#3f5d72" },
{ name = "nswag", text = "", fg_dark = "#85ea2d", fg_light = "#427516" },
{ name = "nu", text = ">", fg_dark = "#3aa675", fg_light = "#276f4e" },
{ name = "o", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
{ name = "obj", text = "󰆧", fg_dark = "#888888", fg_light = "#5b5b5b" },
{ name = "ogg", text = "", fg_dark = "#0075aa", fg_light = "#005880" },
{ name = "opus", text = "", fg_dark = "#0075aa", fg_light = "#005880" },
{ name = "org", text = "", fg_dark = "#77aa99", fg_light = "#4f7166" },
{ name = "otf", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
{ name = "out", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
{ name = "part", text = "", fg_dark = "#44cda8", fg_light = "#226654" },
{ name = "patch", text = "", fg_dark = "#41535b", fg_light = "#41535b" },
{ name = "pck", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "pcm", text = "", fg_dark = "#0075aa", fg_light = "#005880" },
{ name = "pdf", text = "", fg_dark = "#b30b00", fg_light = "#b30b00" },
{ name = "php", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "pl", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "pls", text = "󰲹", fg_dark = "#ed95ae", fg_light = "#764a57" },
{ name = "ply", text = "󰆧", fg_dark = "#888888", fg_light = "#5b5b5b" },
{ name = "pm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "png", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "po", text = "", fg_dark = "#2596be", fg_light = "#1c708e" },
{ name = "pot", text = "", fg_dark = "#2596be", fg_light = "#1c708e" },
{ name = "pp", text = "", fg_dark = "#ffa61a", fg_light = "#80530d" },
{ name = "ppt", text = "󰈧", fg_dark = "#cb4a32", fg_light = "#983826" },
{ name = "prisma", text = "", fg_dark = "#5a67d8", fg_light = "#444da2" },
{ name = "pro", text = "", fg_dark = "#e4b854", fg_light = "#725c2a" },
{ name = "ps1", text = "󰨊", fg_dark = "#4273ca", fg_light = "#325698" },
{ name = "psb", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "psd", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "psd1", text = "󰨊", fg_dark = "#6975c4", fg_light = "#4f5893" },
{ name = "psm1", text = "󰨊", fg_dark = "#6975c4", fg_light = "#4f5893" },
{ name = "pub", text = "󰷖", fg_dark = "#e3c58e", fg_light = "#4c422f" },
{ name = "pxd", text = "", fg_dark = "#5aa7e4", fg_light = "#3c6f98" },
{ name = "pxi", text = "", fg_dark = "#5aa7e4", fg_light = "#3c6f98" },
{ name = "py", text = "", fg_dark = "#ffbc03", fg_light = "#805e02" },
{ name = "pyc", text = "", fg_dark = "#ffe291", fg_light = "#332d1d" },
{ name = "pyd", text = "", fg_dark = "#ffe291", fg_light = "#332d1d" },
{ name = "pyi", text = "", fg_dark = "#ffbc03", fg_light = "#805e02" },
{ name = "pyo", text = "", fg_dark = "#ffe291", fg_light = "#332d1d" },
{ name = "pyx", text = "", fg_dark = "#5aa7e4", fg_light = "#3c6f98" },
{ name = "qm", text = "", fg_dark = "#2596be", fg_light = "#1c708e" },
{ name = "qml", text = "", fg_dark = "#40cd52", fg_light = "#2b8937" },
{ name = "qrc", text = "", fg_dark = "#40cd52", fg_light = "#2b8937" },
{ name = "qss", text = "", fg_dark = "#40cd52", fg_light = "#2b8937" },
{ name = "query", text = "", fg_dark = "#90a850", fg_light = "#607035" },
{ name = "r", text = "󰟔", fg_dark = "#2266ba", fg_light = "#1a4c8c" },
{ name = "rake", text = "", fg_dark = "#701516", fg_light = "#701516" },
{ name = "rar", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
{ name = "razor", text = "󱦘", fg_dark = "#512bd4", fg_light = "#512bd4" },
{ name = "rb", text = "", fg_dark = "#701516", fg_light = "#701516" },
{ name = "res", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
{ name = "resi", text = "", fg_dark = "#f55385", fg_light = "#a33759" },
{ name = "rlib", text = "", fg_dark = "#dea584", fg_light = "#6f5242" },
{ name = "rmd", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "rproj", text = "󰗆", fg_dark = "#358a5b", fg_light = "#286844" },
{ name = "rs", text = "", fg_dark = "#dea584", fg_light = "#6f5242" },
{ name = "rss", text = "", fg_dark = "#fb9d3b", fg_light = "#7e4e1e" },
{ name = "sass", text = "", fg_dark = "#f55385", fg_light = "#a33759" },
{ name = "sbt", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
{ name = "sc", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
{ name = "scad", text = "", fg_dark = "#f9d72c", fg_light = "#53480f" },
{ name = "scala", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
{ name = "scm", text = "󰘧", fg_dark = "#eeeeee", fg_light = "#303030" },
{ name = "scss", text = "", fg_dark = "#f55385", fg_light = "#a33759" },
{ name = "sh", text = "", fg_dark = "#4d5a5e", fg_light = "#3a4446" },
{ name = "sha1", text = "󰕥", fg_dark = "#8c86af", fg_light = "#5d5975" },
{ name = "sha224", text = "󰕥", fg_dark = "#8c86af", fg_light = "#5d5975" },
{ name = "sha256", text = "󰕥", fg_dark = "#8c86af", fg_light = "#5d5975" },
{ name = "sha384", text = "󰕥", fg_dark = "#8c86af", fg_light = "#5d5975" },
{ name = "sha512", text = "󰕥", fg_dark = "#8c86af", fg_light = "#5d5975" },
{ name = "sig", text = "λ", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "signature", text = "λ", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "skp", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "sldasm", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "sldprt", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "slim", text = "", fg_dark = "#e34c26", fg_light = "#aa391c" },
{ name = "sln", text = "", fg_dark = "#854cc7", fg_light = "#643995" },
{ name = "slvs", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "sml", text = "λ", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "so", text = "", fg_dark = "#dcddd6", fg_light = "#494a47" },
{ name = "sol", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "spec.js", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "spec.jsx", text = "", fg_dark = "#20c2e3", fg_light = "#158197" },
{ name = "spec.ts", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "spec.tsx", text = "", fg_dark = "#1354bf", fg_light = "#1354bf" },
{ name = "sql", text = "", fg_dark = "#dad8d8", fg_light = "#494848" },
{ name = "sqlite", text = "", fg_dark = "#dad8d8", fg_light = "#494848" },
{ name = "sqlite3", text = "", fg_dark = "#dad8d8", fg_light = "#494848" },
{ name = "srt", text = "󰨖", fg_dark = "#ffb713", fg_light = "#805c0a" },
{ name = "ssa", text = "󰨖", fg_dark = "#ffb713", fg_light = "#805c0a" },
{ name = "ste", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "step", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "stl", text = "󰆧", fg_dark = "#888888", fg_light = "#5b5b5b" },
{ name = "stp", text = "󰻫", fg_dark = "#839463", fg_light = "#576342" },
{ name = "strings", text = "", fg_dark = "#2596be", fg_light = "#1c708e" },
{ name = "styl", text = "", fg_dark = "#8dc149", fg_light = "#466024" },
{ name = "sub", text = "󰨖", fg_dark = "#ffb713", fg_light = "#805c0a" },
{ name = "sublime", text = "", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "suo", text = "", fg_dark = "#854cc7", fg_light = "#643995" },
{ name = "sv", text = "󰍛", fg_dark = "#019833", fg_light = "#017226" },
{ name = "svelte", text = "", fg_dark = "#ff3e00", fg_light = "#bf2e00" },
{ name = "svg", text = "󰜡", fg_dark = "#ffb13b", fg_light = "#80581e" },
{ name = "svh", text = "󰍛", fg_dark = "#019833", fg_light = "#017226" },
{ name = "swift", text = "", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "t", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "tbc", text = "󰛓", fg_dark = "#1e5cb3", fg_light = "#1e5cb3" },
{ name = "tcl", text = "󰛓", fg_dark = "#1e5cb3", fg_light = "#1e5cb3" },
{ name = "templ", text = "", fg_dark = "#dbbd30", fg_light = "#6e5e18" },
{ name = "terminal", text = "", fg_dark = "#31b53e", fg_light = "#217929" },
{ name = "test.js", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
{ name = "test.jsx", text = "", fg_dark = "#20c2e3", fg_light = "#158197" },
{ name = "test.ts", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "test.tsx", text = "", fg_dark = "#1354bf", fg_light = "#1354bf" },
{ name = "tex", text = "", fg_dark = "#3d6117", fg_light = "#3d6117" },
{ name = "tf", text = "", fg_dark = "#5f43e9", fg_light = "#4732af" },
{ name = "tfvars", text = "", fg_dark = "#5f43e9", fg_light = "#4732af" },
{ name = "tgz", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
{ name = "tmux", text = "", fg_dark = "#14ba19", fg_light = "#0f8c13" },
{ name = "toml", text = "", fg_dark = "#9c4221", fg_light = "#753219" },
{ name = "torrent", text = "", fg_dark = "#44cda8", fg_light = "#226654" },
{ name = "tres", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "ts", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "tscn", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "tsconfig", text = "", fg_dark = "#ff8700", fg_light = "#aa5a00" },
{ name = "tsx", text = "", fg_dark = "#1354bf", fg_light = "#1354bf" },
{ name = "ttf", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
{ name = "twig", text = "", fg_dark = "#8dc149", fg_light = "#466024" },
{ name = "txt", text = "󰈙", fg_dark = "#89e051", fg_light = "#447028" },
{ name = "txz", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
{ name = "typoscript", text = "", fg_dark = "#ff8700", fg_light = "#aa5a00" },
{ name = "ui", text = "", fg_dark = "#0c306e", fg_light = "#0c306e" },
{ name = "v", text = "󰍛", fg_dark = "#019833", fg_light = "#017226" },
{ name = "vala", text = "", fg_dark = "#7239b3", fg_light = "#562b86" },
{ name = "vh", text = "󰍛", fg_dark = "#019833", fg_light = "#017226" },
{ name = "vhd", text = "󰍛", fg_dark = "#019833", fg_light = "#017226" },
{ name = "vhdl", text = "󰍛", fg_dark = "#019833", fg_light = "#017226" },
{ name = "vim", text = "", fg_dark = "#019833", fg_light = "#017226" },
{ name = "vsh", text = "", fg_dark = "#5d87bf", fg_light = "#3e5a7f" },
{ name = "vsix", text = "", fg_dark = "#854cc7", fg_light = "#643995" },
{ name = "vue", text = "", fg_dark = "#8dc149", fg_light = "#466024" },
{ name = "wasm", text = "", fg_dark = "#5c4cdb", fg_light = "#4539a4" },
{ name = "wav", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
{ name = "webm", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
{ name = "webmanifest", text = "", fg_dark = "#f1e05a", fg_light = "#504b1e" },
{ name = "webp", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
{ name = "webpack", text = "󰜫", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "wma", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
{ name = "woff", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
{ name = "woff2", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
{ name = "wrl", text = "󰆧", fg_dark = "#888888", fg_light = "#5b5b5b" },
{ name = "wrz", text = "󰆧", fg_dark = "#888888", fg_light = "#5b5b5b" },
{ name = "x", text = "", fg_dark = "#599eff", fg_light = "#3b69aa" },
{ name = "xaml", text = "󰙳", fg_dark = "#512bd4", fg_light = "#512bd4" },
{ name = "xcf", text = "", fg_dark = "#635b46", fg_light = "#4a4434" },
{ name = "xcplayground", text = "", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "xcstrings", text = "", fg_dark = "#2596be", fg_light = "#1c708e" },
{ name = "xls", text = "󰈛", fg_dark = "#207245", fg_light = "#207245" },
{ name = "xlsx", text = "󰈛", fg_dark = "#207245", fg_light = "#207245" },
{ name = "xm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
{ name = "xml", text = "󰗀", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "xpi", text = "", fg_dark = "#ff1b01", fg_light = "#bf1401" },
{ name = "xul", text = "", fg_dark = "#e37933", fg_light = "#975122" },
{ name = "xz", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
{ name = "yaml", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "yml", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
{ name = "zig", text = "", fg_dark = "#f69a1b", fg_light = "#7b4d0e" },
{ name = "zip", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
{ name = "zsh", text = "", fg_dark = "#89e051", fg_light = "#447028" },
{ name = "zst", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
]
conds = [
# Special files
{ if = "orphan", text = "" },
{ if = "link" , text = "" },
{ if = "block" , text = "" },
{ if = "char" , text = "" },
{ if = "fifo" , text = "" },
{ if = "sock" , text = "" },
{ if = "sticky", text = "" },
{ if = "dummy", text = "" },
# Fallback
{ if = "dir", text = "󰉋" },
{ if = "exec", text = "" },
{ if = "!dir", text = "󰈔" },
]
# : }}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 KiB

View file

@ -0,0 +1,799 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!--
This theme uses moonfly's base16 terminal colors.
Colors:
#323437 - dark grey
#ff5454 - red
#8cc85f - green
#e3c78a - yellow
#80a0ff - blue
#cf87e8 - magenta (violet)
#79dac8 - cyan (turquoise)
#c6c6c6 - grey
#949494 - medium grey
#ff5189 - bright red (crimson)
#36c692 - bright green (emerald)
#c6c684 - bright yellow
#74b2ff - bright blue
#ae81ff - bright magenta (purple)
#85dc85 - bright cyan
#e4e4e4 - bright white
-->
<key>author</key>
<string>Template: bluz71</string>
<key>name</key>
<string>fly16</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#323437</string>
<key>caret</key>
<string>#c6c6c6</string>
<key>foreground</key>
<string>#c6c6c6</string>
<key>invisibles</key>
<string>#949494</string>
<key>lineHighlight</key>
<string>#323437</string>
<key>selection</key>
<string>#c6c684</string>
<key>gutter</key>
<string>#36c692</string>
<key>gutterForeground</key>
<string>#949494</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Text</string>
<key>scope</key>
<string>variable.parameter.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c6c6c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>comment, punctuation.definition.comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#949494</string>
<key>fontStyle</key>
<string>italic</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation</string>
<key>scope</key>
<string>punctuation.definition.string, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c6c6c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Delimiters</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c6c6c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Operators</string>
<key>scope</key>
<string>keyword.operator</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#cf87e8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keywords</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#cf87e8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variables</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c6c6c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Functions</string>
<key>scope</key>
<string>entity.name.function, meta.require, support.function.any-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#74b2ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Labels</string>
<key>scope</key>
<string>entity.name.label</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#85dc85</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>support.class, entity.name.class, entity.name.type.class, entity.name.type</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#36c692</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>meta.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c6c6c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Methods</string>
<key>scope</key>
<string>keyword.other.special-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#74b2ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#cf87e8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#74b2ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Strings</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c6c684</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Symbol</string>
<key>scope</key>
<string>constant.other.symbol</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ae81ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inherited Class</string>
<key>scope</key>
<string>entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#36c692</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Integers</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ae81ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Floats</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ae81ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Boolean</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e3c78a</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Constants</string>
<key>scope</key>
<string>constant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e3c78a</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tags</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#80a0ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attributes</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#79dac8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attribute IDs</string>
<key>scope</key>
<string>entity.other.attribute-name.id, punctuation.definition.entity</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#74b2ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Selector</string>
<key>scope</key>
<string>meta.selector</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#cf87e8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Values</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#79dac8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Headings</string>
<key>scope</key>
<string>markup.heading punctuation.definition.heading, entity.name.section</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#80a0ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Units</string>
<key>scope</key>
<string>keyword.other.unit</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e4e4e4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Bold</string>
<key>scope</key>
<string>markup.bold, punctuation.definition.bold</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#e3c78a</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Italic</string>
<key>scope</key>
<string>markup.italic, punctuation.definition.italic</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#cf87e8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Code</string>
<key>scope</key>
<string>markup.raw.inline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#8cc85f</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Text</string>
<key>scope</key>
<string>string.other.link, punctuation.definition.string.end.markdown, punctuation.definition.string.begin.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff5454</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Url</string>
<key>scope</key>
<string>meta.link</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#8cc85f</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Quotes</string>
<key>scope</key>
<string>markup.quote</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e4e4e4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Separator</string>
<key>scope</key>
<string>meta.separator</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#c6c684</string>
<key>foreground</key>
<string>#c6c6c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#8cc85f</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff5454</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#cf87e8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Colors</string>
<key>scope</key>
<string>constant.other.color</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#79dac8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Regular Expressions</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c6c684</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Escape Characters</string>
<key>scope</key>
<string>constant.character.escape</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff5189</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Embedded</string>
<key>scope</key>
<string>punctuation.section.embedded, variable.interpolation</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#cf87e8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Illegal</string>
<key>scope</key>
<string>invalid.illegal</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#ff5454</string>
<key>foreground</key>
<string>#e4e4e4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Broken</string>
<key>scope</key>
<string>invalid.broken</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#ff5189</string>
<key>foreground</key>
<string>#323437</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#85dc85</string>
<key>foreground</key>
<string>#e4e4e4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Unimplemented</string>
<key>scope</key>
<string>invalid.unimplemented</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#949494</string>
<key>foreground</key>
<string>#e4e4e4</string>
</dict>
</dict>
<!--
Additions
-->
<dict>
<key>name</key>
<string>Variable Function</string>
<key>scope</key>
<string>variable.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#74b2ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Entity Name Constant Ruby</string>
<key>scope</key>
<string>entity.name.constant.ruby</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ae81ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON Strings</string>
<key>scope</key>
<string>meta.mapping.key.json string.quoted.double.json, punctuation.separator.sequence.csv</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#74b2ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JavaScript unquoted label</string>
<key>scope</key>
<string>string.unquoted.label.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#79dac8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Ruby @variable</string>
<key>scope</key>
<string>variable.other.readwrite.instance</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#79dac8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Language Variable</string>
<key>scope</key>
<string>variable.language</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#85dc85</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup Link Text</string>
<key>scope</key>
<string>text.html.markdown markup.raw.inline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c6c684</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup Underline</string>
<key>scope</key>
<string>markup.underline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ae81ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>YAML Entity Name Tags</string>
<key>scope</key>
<string>entity.name.tag.yaml</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#74b2ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library class type</string>
<key>scope</key>
<string>support.type, support.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#36c692</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS Keyword Other Unit</string>
<key>scope</key>
<string>keyword.other.unit.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c6c684</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS Attribute Name</string>
<key>scope</key>
<string>entity.other.attribute-name.class.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#36c692</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS Punctuation</string>
<key>scope</key>
<string>punctuation.definition.entity.css, punctuation.separator.key-value.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#cf87e8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>YAML Plain</string>
<key>scope</key>
<string>string.unquoted.plain.out.yaml</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c6c6c6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Vim Function</string>
<key>scope</key>
<string>support.function.viml</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#cf87e8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Vim Type</string>
<key>scope</key>
<string>support.type.viml</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#80a0ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS Property</string>
<key>scope</key>
<string>support.type.property-name.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#79dac8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Shell Alias</string>
<key>scope</key>
<string>support.function.alias.shell</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#79dac8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Shell Brace</string>
<key>scope</key>
<string>support.function.double-brace.begin.shell, support.function.double-brace.end.shell</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c6c6c6</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>uuid</string>
</dict>
</plist>

View file

@ -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.

View file

@ -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.

View file

@ -0,0 +1,37 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
<h3 align="center">
Onedark Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
</h3>
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
```bash
# Linux/macOS
git clone https://github.com/BennyOe/onedark.yazi.git ~/.config/yazi/flavors/onedark.yazi
# Windows
git clone https://github.com/BennyOe/onedark.yazi.git %AppData%\yazi\config\flavors\onedark.yazi
```
## ⚙️ Usage
Add the these lines to your `theme.toml` configuration file to use it:
```toml
[flavor]
use = "onedark"
```
## 📜 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.

View file

@ -0,0 +1,151 @@
# : Manager {{{
[manager]
cwd = { fg = "#61AFEF" } # Blue
# Hovered
hovered = { bg = "#282C34" } # Darkened background
preview_hovered = { underline = true }
# Find
find_keyword = { fg = "#E06C75", italic = true, underline = true } # Red
find_position = { fg = "#E5C07B", italic = true } # Orange
# Marker
marker_copied = { fg = "#ABB2BF", bg = "#98C379" } # Light gray on Green
marker_cut = { fg = "#ABB2BF", bg = "#E06C75" } # Light gray on Red
marker_marked = { fg = "#ABB2BF", bg = "#56B6C2" } # Light gray on cyan
marker_selected = { fg = "#ABB2BF", bg = "#E5C07B" } # Light gray on Orange
# Tab
tab_active = { bg = "#282C34", fg = "#61AFEF" } # Darkened background, Blue text
tab_inactive = {}
tab_width = 1
# Count
count_copied = { fg = "#98C379", bg = "#282C34" } # Green on Darkened background
count_cut = { fg = "#E06C75", bg = "#282C34" } # Red on Darkened background
count_selected = { fg = "#98C379", bg = "#282C34" } # Green on Darkened background
# Border
border_symbol = "│"
border_style = { fg = "#282C34" } # Darkened background
# : }}}
# : Status {{{
[status]
separator_open = ""
separator_close = ""
separator_style = { fg = "#61AFEF", bg = "#282C34" } # Blue on Darkened background
# Mode
mode_normal = { fg = "#282C34", bg = "#61AFEF", bold = true } # Dark gray on Blue
mode_select = { fg = "#282C34", bg = "#61AFEF", bold = true } # Dark gray on Blue
mode_unset = { fg = "#282C34", bg = "#61AFEF", bold = true } # Dark gray on Blue
# Progress
progress_label = { fg = "#ABB2BF", bold = true } # Light gray
progress_normal = { fg = "#98C379", bg = "#282C34" } # Green on Darkened background
progress_error = { fg = "#E06C75", bg = "#282C34" } # Red on Darkened background
# Permissions
permissions_t = { fg = "#98C379" } # Green
permissions_r = { fg = "#E06C75" } # Red
permissions_w = { fg = "#E5C07B" } # Orange
permissions_x = { fg = "#98C379" } # Green
permissions_s = { fg = "#ABB2BF" } # Light gray
# : }}}
# : Select {{{
[select]
border = { fg = "#98C379" } # Green
active = { fg = "#E5C07B", bold = true } # Orange
inactive = {}
# : }}}
# : Input {{{
[input]
border = { fg = "#98C379" } # Green
title = {}
value = {}
selected = { reversed = true }
# : }}}
# : Completion {{{
[completion]
border = { fg = "#98C379" } # Green
# : }}}
# : Tasks {{{
[tasks]
border = { fg = "#98C379" } # Green
title = {}
hovered = { fg = "#E5C07B", underline = true } # Orange
# : }}}
# : Which {{{
[which]
mask = { bg = "#282C34" } # Darkened background
cand = { fg = "#98C379" } # Green
rest = { fg = "#ABB2BF" } # Light gray
desc = { fg = "#E5C07B" } # Orange
separator = "  "
separator_style = { fg = "#ABB2BF" } # Light gray
# : }}}
# : Help {{{
[help]
on = { fg = "#98C379" } # Green
run = { fg = "#E5C07B" } # Orange
hovered = { reversed = true, bold = true }
footer = { fg = "#ABB2BF", bg = "#000000" } # Light gray on Black
# : }}}
# : Notify {{{
[notify]
title_info = { fg = "#98C379" } # Green
title_warn = { fg = "#E06C75" } # Red
title_error = { fg = "#E5C07B" } # Orange
# : }}}
# : File-specific styles {{{
[filetype]
rules = [
# Images
{ mime = "image/*", fg = "#E5C07B" }, # Orange
# Media
{ mime = "video/*", fg = "#E06C75" }, # Red
{ mime = "audio/*", fg = "#E06C75" }, # Red
# Archives
{ mime = "application/zip", fg = "#C678DD" }, # Magenta
{ mime = "application/x-tar", fg = "#C678DD" }, # Magenta
{ mime = "application/x-bzip*", fg = "#C678DD" }, # Magenta
{ mime = "application/x-bzip2", fg = "#C678DD" }, # Magenta
{ mime = "application/x-7z-compressed", fg = "#C678DD" }, # Magenta
{ mime = "application/x-rar", fg = "#C678DD" }, # Magenta
{ mime = "application/x-xz", fg = "#C678DD" }, # Magenta
# Documents
{ mime = "application/doc", fg = "#98C379" }, # Green
{ mime = "application/pdf", fg = "#98C379" }, # Green
{ mime = "application/rtf", fg = "#98C379" }, # Green
{ mime = "application/vnd.*", fg = "#98C379" }, # Green
# Fallback
{ name = "*", fg = "#ABB2BF" }, # Blue
{ name = "*/", fg = "#61AFEF" } # Blue
]
# : }}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,010 KiB

View file

@ -0,0 +1,560 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>author</key>
<string>Template: Chris Kempson, Scheme: Lalit Magant (http://github.com/tilal6991)</string>
<key>name</key>
<string>Base16 OneDark</string>
<key>semanticClass</key>
<string>theme.base16.onedark</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>gutterSettings</key>
<dict>
<key>background</key>
<string>#353b45</string>
<key>divider</key>
<string>#353b45</string>
<key>foreground</key>
<string>#545862</string>
<key>selectionBackground</key>
<string>#3e4451</string>
<key>selectionForeground</key>
<string>#565c64</string>
</dict>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#282c34</string>
<key>caret</key>
<string>#abb2bf</string>
<key>foreground</key>
<string>#abb2bf</string>
<key>invisibles</key>
<string>#545862</string>
<key>lineHighlight</key>
<string>#54586255</string>
<key>selection</key>
<string>#3e4451</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Text</string>
<key>scope</key>
<string>variable.parameter.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#abb2bf</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>comment, punctuation.definition.comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#545862</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation</string>
<key>scope</key>
<string>punctuation.definition.string, punctuation.definition.variable, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#abb2bf</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Delimiters</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#abb2bf</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Operators</string>
<key>scope</key>
<string>keyword.operator</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#abb2bf</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keywords</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c678dd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variables</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Functions</string>
<key>scope</key>
<string>entity.name.function, meta.require, support.function.any-method, variable.function, variable.annotation, support.macro</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#61afef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Labels</string>
<key>scope</key>
<string>entity.name.label</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#be5046</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>support.class, entity.name.class, entity.name.type.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>meta.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c8ccd4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Methods</string>
<key>scope</key>
<string>keyword.other.special-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#61afef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c678dd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#56b6c2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Strings, Inherited Class</string>
<key>scope</key>
<string>string, constant.other.symbol, entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98c379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Integers</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#d19a66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Floats</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#d19a66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Boolean</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#d19a66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Constants</string>
<key>scope</key>
<string>constant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#d19a66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tags</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attributes</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#d19a66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attribute IDs</string>
<key>scope</key>
<string>entity.other.attribute-name.id, punctuation.definition.entity</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#61afef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Selector</string>
<key>scope</key>
<string>meta.selector</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c678dd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Values</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#d19a66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Headings</string>
<key>scope</key>
<string>markup.heading punctuation.definition.heading, entity.name.section</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#61afef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Units</string>
<key>scope</key>
<string>keyword.other.unit</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#d19a66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Bold</string>
<key>scope</key>
<string>markup.bold, punctuation.definition.bold</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Italic</string>
<key>scope</key>
<string>markup.italic, punctuation.definition.italic</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#c678dd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Code</string>
<key>scope</key>
<string>markup.raw.inline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98c379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Text</string>
<key>scope</key>
<string>string.other.link, punctuation.definition.string.end.markdown, punctuation.definition.string.begin.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Url</string>
<key>scope</key>
<string>meta.link</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#d19a66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Lists</string>
<key>scope</key>
<string>markup.list</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Quotes</string>
<key>scope</key>
<string>markup.quote</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#d19a66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Separator</string>
<key>scope</key>
<string>meta.separator</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#3e4451</string>
<key>foreground</key>
<string>#abb2bf</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98c379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c678dd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Colors</string>
<key>scope</key>
<string>constant.other.color</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#56b6c2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Regular Expressions</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#56b6c2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Escape Characters</string>
<key>scope</key>
<string>constant.character.escape</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#56b6c2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Embedded</string>
<key>scope</key>
<string>punctuation.section.embedded, variable.interpolation</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c678dd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Illegal</string>
<key>scope</key>
<string>invalid.illegal</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#e06c75</string>
<key>foreground</key>
<string>#c8ccd4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Broken</string>
<key>scope</key>
<string>invalid.broken</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#d19a66</string>
<key>foreground</key>
<string>#282c34</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#be5046</string>
<key>foreground</key>
<string>#c8ccd4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Unimplemented</string>
<key>scope</key>
<string>invalid.unimplemented</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#545862</string>
<key>foreground</key>
<string>#c8ccd4</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>uuid</string>
</dict>
</plist>

116
modules/home/yazi/init.lua Normal file
View file

@ -0,0 +1,116 @@
require("git"):setup()
require("yatline-symlink"):setup()
require("dir-rules"):setup()
require("starship"):setup {
config_file = "~/.config/starship.toml",
}
require("smart-enter"):setup {
open_multi = true,
}
require("fg"):setup({
default_action = "menu",
})
-- ~/.config/yazi/init.lua
THEME.git = THEME.git or {}
THEME.git.added_sign = "A"
THEME.git.ignored_sign = "I"
THEME.git.updated_sign = "U"
THEME.git.modified_sign = "M"
THEME.git.deleted_sign = "D"
require("yatline"):setup({
--theme = my_theme,
section_separator = { open = "", close = "" },
part_separator = { open = "", close = "" },
inverse_separator = { open = "", close = "" },
style_a = {
fg = "black",
bg_mode = {
normal = "white",
select = "brightyellow",
un_set = "brightred"
}
},
style_b = { bg = "#111111", fg = "brightwhite" },
style_c = { bg = "#111111", fg = "brightwhite" },
permissions_t_fg = "green",
permissions_r_fg = "yellow",
permissions_w_fg = "red",
permissions_x_fg = "cyan",
permissions_s_fg = "white",
tab_width = 20,
tab_use_inverse = false,
selected = { icon = "󰻭", fg = "yellow" },
copied = { icon = "", fg = "green" },
cut = { icon = "", fg = "red" },
total = { icon = "󰮍", fg = "yellow" },
succ = { icon = "", fg = "green" },
fail = { icon = "", fg = "red" },
found = { icon = "󰮕", fg = "blue" },
processed = { icon = "󰐍", fg = "green" },
show_background = true,
display_header_line = true,
display_status_line = true,
component_positions = { "header", "tab", "status" },
header_line = {
left = {
section_a = {
{type = "line", custom = false, name = "tabs", params = {"left"}},
},
section_b = {
},
section_c = {
}
},
right = {
section_a = {
},
section_b = {
},
section_c = {
}
}
},
status_line = {
left = {
section_a = {
{type = "string", custom = false, name = "tab_mode"},
},
section_b = {
{type = "string", custom = false, name = "hovered_size"},
},
section_c = {
{type = "string", custom = false, name = "hovered_path"},
{ type = "coloreds", custom = false, name = "symlink" },
{type = "coloreds", custom = false, name = "count"},
}
},
right = {
section_a = {
{type = "string", custom = false, name = "cursor_position"},
},
section_b = {
{type = "string", custom = false, name = "cursor_percentage"},
},
section_c = {
{type = "string", custom = false, name = "hovered_file_extension", params = {true}},
{type = "coloreds", custom = false, name = "permissions"},
{type = "string", custom = false, name = "hovered_ownership"}
}
}
}
})

View file

@ -0,0 +1,8 @@
--- @sync entry
return {
entry = function(_, job)
local current = cx.active.current
local new = (current.cursor + job.args[1]) % #current.files
ya.manager_emit("arrow", { new - current.cursor })
end,
}

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 yazi-rs
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.

View file

@ -0,0 +1,28 @@
# chmod.yazi
Execute `chmod` on the selected files to change their mode. This plugin is only available on Unix platforms since it relies on [`chmod(2)`](https://man7.org/linux/man-pages/man2/chmod.2.html).
https://github.com/yazi-rs/plugins/assets/17523360/7aa3abc2-d057-498c-8473-a6282c59c464
## Installation
```sh
ya pack -a yazi-rs/plugins:chmod
```
## Usage
Add this to your `~/.config/yazi/keymap.toml`:
```toml
[[manager.prepend_keymap]]
on = [ "c", "m" ]
run = "plugin chmod"
desc = "Chmod on selected files"
```
Make sure the <kbd>c</kbd> => <kbd>m</kbd> key is not used elsewhere.
## License
This plugin is MIT-licensed. For more information check the [LICENSE](LICENSE) file.

View file

@ -0,0 +1,39 @@
local selected_or_hovered = ya.sync(function()
local tab, paths = cx.active, {}
for _, u in pairs(tab.selected) do
paths[#paths + 1] = tostring(u)
end
if #paths == 0 and tab.current.hovered then
paths[1] = tostring(tab.current.hovered.url)
end
return paths
end)
return {
entry = function()
ya.manager_emit("escape", { visual = true })
local urls = selected_or_hovered()
if #urls == 0 then
return ya.notify { title = "Chmod", content = "No file selected", level = "warn", timeout = 5 }
end
local value, event = ya.input {
title = "Chmod:",
position = { "top-center", y = 3, w = 40 },
}
if event ~= 1 then
return
end
local status, err = Command("chmod"):arg(value):args(urls):spawn():wait()
if not status or not status.success then
ya.notify {
title = "Chmod",
content = string.format("Chmod on selected files failed, error: %s", status and status.code or err),
level = "error",
timeout = 5,
}
end
end,
}

View file

@ -0,0 +1,12 @@
local function setup()
ps.sub("cd", function()
local cwd = cx.active.current.cwd
if cwd:ends_with("Downloads") then
ya.manager_emit("sort", { "mtime", reverse = true, dir_first = false })
else
ya.manager_emit("sort", { "alphabetical", reverse = false })
end
end)
end
return { setup = setup }

View file

@ -0,0 +1,274 @@
local toggle_ui = ya.sync(function(self)
if self.children then
Modal:children_remove(self.children)
self.children = nil
else
self.children = Modal:children_add(self, 10)
end
ya.render()
end)
local init_ui_data = ya.sync(function(self,file_url)
self.opt = {"nvim", "jump"}
self.title = "fg"
self.title_color = "#82ab3a"
self.cursor = 0
self.file_url = file_url and file_url or ""
ya.render()
end)
local set_option = ya.sync(function(self,enable)
if enable then
self.active_opt = self.opt[self.cursor+1]
else
self.active_opt = nil
end
end)
local get_option = ya.sync(function(self)
return self.active_opt
end)
local get_default_action = ya.sync(function(self)
return self.default_action
end)
local update_cursor = ya.sync(function(self, cursor)
self.cursor = ya.clamp(0, self.cursor + cursor, 1)
ya.render()
end)
local M = {
keys = {
{ on = "q", run = "quit" },
{ on = "<Esc>", run = "quit" },
{ on = "<Enter>", run = "select" },
{ on = "k", run = "up" },
{ on = "j", run = "down" },
{ on = "<Up>", run = "up" },
{ on = "<Down>", run = "down" },
},
}
function M:new(area)
self:layout(area)
return self
end
function M:layout(area)
local chunks = ui.Layout()
:constraints({
ui.Constraint.Percentage(10),
ui.Constraint.Percentage(80),
ui.Constraint.Percentage(10),
})
:split(area)
local chunks = ui.Layout()
:direction(ui.Layout.HORIZONTAL)
:constraints({
ui.Constraint.Percentage(10),
ui.Constraint.Percentage(80),
ui.Constraint.Percentage(10),
})
:split(chunks[2])
self._area = chunks[2]
end
local function splitAndGetNth(inputstr, sep, index)
if sep == nil then
sep = "%s"
end
local count = 0
local start = 1
while true do
local sepStart, sepEnd = string.find(inputstr, sep, start)
if not sepStart then
break
end
count = count + 1
if count == index then
return string.sub(inputstr, start, sepStart - 1)
end
start = sepEnd + 1
end
if index == 1 then
return inputstr
end
return nil -- 如果没有足够的分割部分返回nil
end
local state = ya.sync(function() return tostring(cx.active.current.cwd) end)
local function fail(s, ...) ya.notify { title = "Fzf", content = string.format(s, ...), timeout = 5, level = "error" } end
function M:entry(job)
local args = job.args
local _permit = ya.hide()
local cwd = state()
local shell_value = ya.target_family() == "windows" and "nu" or os.getenv("SHELL"):match(".*/(.*)")
local cmd_args = ""
local preview_cmd = [===[line={2} && begin=$( if [[ $line -lt 7 ]]; then echo $((line-1)); else echo 6; fi ) && bat --highlight-line={2} --color=always --line-range $((line-begin)):$((line+10)) {1}]===]
if ya.target_family() == "windows" then
preview_cmd = [[bat --highlight-line={2} --color=always --line-range {2}: {1}]]
elseif shell_value == "fish" then
preview_cmd = [[set line {2} && set begin ( test $line -lt 7 && echo (math "$line-1") || echo 6 ) && bat --highlight-line={2} --color=always --line-range (math "$line-$begin"):(math "$line+10") {1}]]
elseif shell_value == "nu" then
preview_cmd = [[let line = ({2} | into int); let begin = if $line < 7 { $line - 1 } else { 6 }; bat --highlight-line={2} --color=always --line-range $'($line - $begin):($line + 10)' {1}]]
end
if ya.target_family() == "windows" and args[1] == "fzf" then
cmd_args = [[fzf --preview="bat --color=always {}"]]
elseif ya.target_family() == "windows" and args[1] == "rg" then
local rg_prefix = [[rg --colors "path:fg:blue" --colors "line:fg:red" --colors "column:fg:yellow" --column --line-number --no-heading --color=always --smart-case ]]
cmd_args = [[fzf --ansi --disabled --bind "start:reload:]]
.. rg_prefix
.. [[{q}" --bind "change:reload:]]
.. rg_prefix
.. [[{q}" --delimiter ":" --preview "]]
.. preview_cmd
.. [[" --preview-window "up,60%" --nth "3.."]]
elseif ya.target_family() == "windows" then
cmd_args = [[rg --color=always --line-number --no-heading --smart-case "" | fzf --ansi --preview="]] .. preview_cmd .. [[" --delimiter=":" --preview-window="up:60%" --nth="3.."]]
elseif args[1] == "fzf" then
cmd_args = [[fzf --preview="bat --color=always {}"]]
elseif args[1] == "rg" and shell_value == "fish" then
cmd_args = [[
RG_PREFIX="rg --colors 'path:fg:blue' --colors 'line:fg:red' --colors 'column:fg:yellow' --column --line-number --no-heading --color=always --smart-case " \
fzf --ansi --disabled \
--bind "start:reload:$RG_PREFIX {q}" \
--bind "change:reload:sleep 0.1; $RG_PREFIX {q} || true" \
--delimiter : \
--preview ']] .. preview_cmd .. [[' \
--preview-window 'up,60%' \
--nth '3..'
]]
elseif args[1] == "rg" and (shell_value == "bash" or shell_value == "zsh") then
cmd_args = [[
RG_PREFIX="rg --colors 'path:fg:blue' --colors 'line:fg:red' --colors 'column:fg:yellow' --column --line-number --no-heading --color=always --smart-case "
fzf --ansi --disabled \
--bind "start:reload:$RG_PREFIX {q}" \
--bind "change:reload:sleep 0.1; $RG_PREFIX {q} || true" \
--delimiter : \
--preview ']] .. preview_cmd .. [[' \
--preview-window 'up,60%' \
--nth '3..'
]]
elseif args[1] == "rg" and shell_value == "nu" then
local rg_prefix = "rg --colors 'path:fg:blue' --colors 'line:fg:red' --colors 'column:fg:yellow' --column --line-number --no-heading --color=always --smart-case "
cmd_args = [[fzf --ansi --disabled --bind "start:reload:]]
.. rg_prefix
.. [[{q}" --bind "change:reload:sleep 100ms; try { ]]
.. rg_prefix
.. [[{q} }" --delimiter : --preview ']]
.. preview_cmd
.. [[' --preview-window 'up,60%' --nth '3..']]
else
cmd_args = [[rg --color=always --line-number --no-heading --smart-case '' | fzf --ansi --preview=']] .. preview_cmd .. [[' --delimiter=':' --preview-window='up:60%' --nth='3..']]
end
local child, err =
Command(shell_value):args({"-c", cmd_args}):cwd(cwd):stdin(Command.INHERIT):stdout(Command.PIPED):stderr(Command.INHERIT):spawn()
if not child then
return fail("Spawn `rfzf` failed with error code %s. Do you have it installed?", err)
end
local output, err = child:wait_with_output()
if not output then
return fail("Cannot read `fzf` output, error code %s", err)
elseif not output.status.success and output.status.code ~= 130 then
return fail("`fzf` exited with error code %s", output.status.code)
end
if output.stdout == "" then
return
end
local target = output.stdout:gsub("\n$", "")
local file_url = splitAndGetNth(target,":",1)
local line_number = splitAndGetNth(target,":",2)
line_number = line_number and line_number or 1
init_ui_data(cwd.."/"..file_url)
local default_action = get_default_action()
if (default_action == "menu" or default_action == nil) and args[1] ~= "fzf" then
_permit:drop()
toggle_ui()
while true do
local cand = self.keys[ya.which { cands = self.keys, silent = true }]
if cand then
if cand.run == "quit" then
set_option(false)
toggle_ui()
break
elseif cand.run == "select" then
set_option(true)
toggle_ui()
break
elseif cand.run == "down" then
update_cursor(1)
elseif cand.run == "up" then
update_cursor(-1)
end
end
end
_permit = ya.hide()
end
if (default_action == "nvim" or get_option() == "nvim" ) and args[1] ~= "fzf" then
os.execute("nvim +"..line_number.." -n "..file_url)
elseif (default_action == "jump" or get_option() == "jump" or args[1] == "fzf") and file_url ~= "" then
ya.manager_emit(file_url:match("[/\\]$") and "cd" or "reveal", { file_url })
else
return
end
end
function M:reflow() return { self } end
function M:redraw()
local rows = {}
rows[1] = ui.Row { "open with nvim" }
rows[2] = ui.Row { "reach at yazi" }
return {
ui.Clear(self._area),
ui.Border(ui.Border.ALL)
:area(self._area)
:type(ui.Border.ROUNDED)
:style(ui.Style():fg("#82ab3a"))
:title(ui.Line(self.title):align(ui.Line.CENTER):fg(self.title_color)),
ui.Table(rows)
:area(self._area:pad(ui.Pad(1, 2, 1, 2)))
:header(ui.Row({ "Action for:"..self.file_url }):style(ui.Style():bold():fg("#e73c80")))
:row(self.cursor)
:row_style(ui.Style():fg("#82ab3a"):underline()),
}
end
function M.fail(s, ...)
ya.manager_emit("plugin", {"mount", args = "refresh" })
ya.notify { title = "fg", content = string.format(s, ...), timeout = 10, level = "error" }
end
function M:click() end
function M:scroll() end
function M:touch() end
function M:setup(config)
self.default_action = (config and config.default_action) and config.default_action or "menu"
end
return M

View file

@ -0,0 +1,19 @@
Copyright (c) 2024 boydaihungst
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.

View file

@ -0,0 +1,102 @@
# file-extra-metadata
<!--toc:start-->
- [file-extra-metadata](#file-extra-metadata)
- [Preview](#preview)
- [Before:](#before)
- [After:](#after)
- [Requirements](#requirements)
- [Installation](#installation)
- [For developer](#for-developer)
<!--toc:end-->
This is a Yazi plugin that replaces the default file previewer and spotter with extra information.
## Preview
### Before:
- Previewer
![Before preview](statics/2024-11-17-12-06-24.png)
- Spotter (yazi >= v0.4 after 21/11/2024)
![Before spot](statics/2024-11-21-04-19-01.png)
### After:
- Previewer
![After previewer](statics/2024-11-21-05-27-48.png)
- Spotter (yazi >= v0.4 after 21/11/2024)
![After spotter](statics/2024-11-21-05-29-50.png)
## Requirements
- [yazi >=0.4](https://github.com/sxyazi/yazi)
- Tested on Linux. For MacOS, Windows: some fields will shows empty values.
## Installation
Install the plugin:
```sh
ya pack -a boydaihungst/file-extra-metadata
```
Add spotter keybind, makes sure not conflict with other `<Tab>` keybind in
`manager` section:
```toml
[manager]
keymap = [
# ...
# Spotting
{ on = "<Tab>", run = "spot", desc = "Spot hovered file" },
]
```
Create `~/.config/yazi/yazi.toml` and add:
```toml
[plugin]
append_previewers = [
{ name = "*", run = "file-extra-metadata" },
]
# yazi v0.4 after 21/11/2024
# Setup keybind for spotter: https://github.com/sxyazi/yazi/pull/1802
append_spotters = [
{ name = "*", run = "file-extra-metadata" },
]
```
or
```toml
[plugin]
previewers = [
# ... the rest
# disable default file plugin { name = "*", run = "file" },
{ name = "*", run = "file-extra-metadata" },
]
# yazi v0.4 after 21/11/2024
# Setup keybind for spotter: https://github.com/sxyazi/yazi/pull/1802
spotters = [
# ... the rest
# Fallback
# { name = "*", run = "file" },
{ name = "*", run = "file-extra-metadata" },
]
```
## For developer
If you want to compile this with other spotter/previewer:
```lua
require("file-extra-metadata"):render_table(job, { show_plugins_section = true })
```

View file

@ -0,0 +1,489 @@
local M = {}
local function permission(file)
local h = file
if not h then
return ""
end
local perm = h.cha:perm()
if not perm then
return ""
end
local spans = ""
for i = 1, #perm do
local c = perm:sub(i, i)
spans = spans .. c
end
return spans
end
local function link_count(file)
local h = file
if h == nil or ya.target_family() ~= "unix" then
return ""
end
return h.cha.nlink
end
local function owner_group(file)
local h = file
if h == nil or ya.target_family() ~= "unix" then
return ""
end
return (ya.user_name(h.cha.uid) or tostring(h.cha.uid)) .. "/" .. (ya.group_name(h.cha.gid) or tostring(h.cha.gid))
end
local file_size_and_folder_childs = function(file)
local h = file
if not h or h.cha.is_link then
return ""
end
return h.cha.len and ya.readable_size(h.cha.len) or ""
end
--- get file timestamp
---@param file any
---@param type "mtime" | "atime" | "btime"
---@return any
local function fileTimestamp(file, type)
local h = file
if not h or h.cha.is_link then
return ""
end
local time = math.floor(h.cha[type] or 0)
if time == 0 then
return ""
else
return os.date("%Y-%m-%d %H:%M", time)
end
end
-- Function to split a string by spaces (considering multiple spaces as one delimiter)
local function split_by_whitespace(input)
local result = {}
for word in string.gmatch(input, "%S+") do
table.insert(result, word)
end
return result
end
local function get_filesystem_extra(file)
local result = {
filesystem = "",
device = "",
type = "",
used_space = "",
avail_space = "",
total_space = "",
used_space_percent = "",
avail_space_percent = "",
error = nil,
}
local h = file
local file_url = tostring(h.url)
if not h or ya.target_family() ~= "unix" then
return result
end
local output, _ = Command("tail")
:args({ "-n", "-1" })
:stdin(Command("df"):args({ "-P", "-T", "-h", file_url }):stdout(Command.PIPED):spawn():take_stdout())
:stdout(Command.PIPED)
:output()
if output then
-- Splitting the data
local parts = split_by_whitespace(output.stdout)
-- Display the result
for i, part in ipairs(parts) do
if i == 1 then
result.filesystem = part
elseif i == 2 then
result.device = part
elseif i == 3 then
result.total_space = part
elseif i == 4 then
result.used_space = part
elseif i == 5 then
result.avail_space = part
elseif i == 6 then
result.used_space_percent = part
result.avail_space_percent = 100 - tonumber((string.match(part, "%d+") or "0"))
elseif i == 7 then
result.type = part
end
end
else
result.error = "tail, df are installed?"
end
return result
end
local function attributes(file)
local h = file
local file_url = tostring(h.url)
if not h or ya.target_family() ~= "unix" then
return ""
end
local output, _ = Command("lsattr"):args({ "-d", file_url }):stdout(Command.PIPED):output()
if output then
-- Splitting the data
local parts = split_by_whitespace(output.stdout)
-- Display the result
for i, part in ipairs(parts) do
if i == 1 then
return part
end
end
return ""
else
return "lsattr is installed?"
end
end
---shorten string
---@param _s string string
---@param _t string tail
---@param _w number max characters
---@return string
local shorten = function(_s, _t, _w)
local s = _s or utf8.len(_s)
local t = _t or ""
local ellipsis = "" .. t
local w = _w < utf8.len(ellipsis) and utf8.len(ellipsis) or _w
local n_ellipsis = utf8.len(ellipsis) or 0
if utf8.len(s) > w then
return s:sub(1, (utf8.offset(s, w - n_ellipsis + 1) or 2) - 1) .. ellipsis
end
return s
end
local is_supported_table = type(ui.Table) ~= "nil" and type(ui.Row) ~= "nil"
local styles = {
header = ui.Style():fg("green"),
row_label = ui.Style():fg("reset"),
row_value = ui.Style():fg("blue"),
row_value_spot_hovered = ui.Style():fg("blue"):reverse(),
}
function M:render_table(job, opts)
local filesystem_extra = get_filesystem_extra(job.file)
local prefix = " "
local label_lines, value_lines, rows = {}, {}, {}
local label_max_length = 15
local file_name_extension = job.file.cha.is_dir and "" or ("." .. (job.file.url.ext(job.file.url) or ""))
local row = function(key, value)
local h = type(value) == "table" and #value or 1
rows[#rows + 1] = ui.Row({ ui.Line(key):style(styles.row_label), ui.Line(value):style(styles.row_value) })
:height(h)
end
local file_name = shorten(
job.file.name,
file_name_extension,
math.floor(job.area.w - label_max_length - utf8.len(file_name_extension))
)
local location =
shorten(tostring(job.file.url:parent()), "", math.floor(job.area.w - label_max_length - utf8.len(prefix)))
local filesystem_error = filesystem_extra.error
and shorten(filesystem_extra.error, "", math.floor(job.area.w - label_max_length - utf8.len(prefix)))
or nil
local filesystem =
shorten(filesystem_extra.filesystem, "", math.floor(job.area.w - label_max_length - utf8.len(prefix)))
if not is_supported_table then
table.insert(
label_lines,
ui.Line({
ui.Span("Metadata:"),
}):style(styles.header)
)
table.insert(
value_lines,
ui.Line({
ui.Span(""),
})
)
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("File:"),
}):style(styles.row_label)
)
table.insert(
value_lines,
ui.Line({
ui.Span(file_name),
}):style(styles.row_value)
)
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Mimetype: "),
}):style(styles.row_label)
)
table.insert(value_lines, ui.Line(ui.Span(job._mime or job.mime)):style(styles.row_value))
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Location: "),
}):style(styles.row_label)
)
table.insert(
value_lines,
ui.Line({
ui.Span(location),
}):style(styles.row_value)
)
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Mode: "),
}):style(styles.row_label)
)
table.insert(value_lines, ui.Line(permission(job.file)):style(styles.row_value))
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Attributes: "),
}):style(styles.row_label)
)
table.insert(value_lines, ui.Line(ui.Span(attributes(job.file))):style(styles.row_value))
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Links: "),
}):style(styles.row_label)
)
table.insert(
value_lines,
ui.Line({
ui.Span(tostring(link_count(job.file))),
}):style(styles.row_value)
)
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Owner: "),
}):style(styles.row_label)
)
table.insert(value_lines, ui.Line(ui.Span(owner_group(job.file))):style(styles.row_value))
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Size: "),
}):style(styles.row_label)
)
table.insert(value_lines, ui.Line(ui.Span(file_size_and_folder_childs(job.file))):style(styles.row_value))
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Created: "),
}):style(styles.row_label)
)
table.insert(value_lines, ui.Line(ui.Span(fileTimestamp(job.file, "btime"))):style(styles.row_value))
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Modified: "),
}):style(styles.row_label)
)
table.insert(value_lines, ui.Line(ui.Span(fileTimestamp(job.file, "mtime"))):style(styles.row_value))
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Accessed: "),
}):style(styles.row_label)
)
table.insert(value_lines, ui.Line(ui.Span(fileTimestamp(job.file, "atime"))):style(styles.row_value))
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Filesystem: "),
}):style(styles.row_label)
)
table.insert(value_lines, ui.Line(ui.Span(filesystem_error or filesystem)):style(styles.row_value))
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Device: "),
}):style(styles.row_label)
)
table.insert(value_lines, ui.Line(ui.Span(filesystem_error or filesystem_extra.device)):style(styles.row_value))
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Type: "),
}):style(styles.row_label)
)
table.insert(value_lines, ui.Line(ui.Span(filesystem_error or filesystem_extra.type)):style(styles.row_value))
table.insert(
label_lines,
ui.Line({
ui.Span(prefix),
ui.Span("Free space: "),
}):style(styles.row_label)
)
table.insert(
value_lines,
ui.Line(
ui.Span(
filesystem_extra.error
or (
filesystem_extra.avail_space
.. " / "
.. filesystem_extra.total_space
.. " ("
.. filesystem_extra.avail_space_percent
.. "%)"
)
)
):style(styles.row_value)
)
else
rows[#rows + 1] = ui.Row({ "Metadata", "" }):style(styles.header)
row(prefix .. "File:", file_name)
row(prefix .. "Mimetype:", job.mime)
row(prefix .. "Location:", location)
row(prefix .. "Mode:", permission(job.file))
row(prefix .. "Attributes:", attributes(job.file))
row(prefix .. "Links:", tostring(link_count(job.file)))
row(prefix .. "Owner:", owner_group(job.file))
row(prefix .. "Size:", file_size_and_folder_childs(job.file))
row(prefix .. "Created:", fileTimestamp(job.file, "btime"))
row(prefix .. "Modified:", fileTimestamp(job.file, "mtime"))
row(prefix .. "Accessed:", fileTimestamp(job.file, "atime"))
row(prefix .. "Filesystem:", filesystem_error or filesystem)
row(prefix .. "Device:", filesystem_error or filesystem_extra.device)
row(prefix .. "Type:", filesystem_error or filesystem_extra.type)
row(
prefix .. "Free space:",
filesystem_error
or (
(
filesystem_extra.avail_space
and filesystem_extra.total_space
and filesystem_extra.avail_space_percent
)
and (filesystem_extra.avail_space .. " / " .. filesystem_extra.total_space .. " (" .. filesystem_extra.avail_space_percent .. "%)")
or ""
)
)
if opts and opts.show_plugins_section and PLUGIN then
local spotter = PLUGIN.spotter(job.file.url, job.mime)
local previewer = PLUGIN.previewer(job.file.url, job.mime)
local fetchers = PLUGIN.fetchers(job.file, job.mime)
local preloaders = PLUGIN.preloaders(job.file.url, job.mime)
for i, v in ipairs(fetchers) do
fetchers[i] = v.cmd
end
for i, v in ipairs(preloaders) do
preloaders[i] = v.cmd
end
rows[#rows + 1] = ui.Row({ { "", "Plugins" }, "" }):height(2):style(styles.header)
row(prefix .. "Spotter:", spotter and spotter.cmd or "")
row(prefix .. "Previewer:", previewer and previewer.cmd or "")
row(prefix .. "Fetchers:", #fetchers ~= 0 and fetchers or "")
row(prefix .. "Preloaders:", #preloaders ~= 0 and preloaders or "")
end
end
if not is_supported_table then
local areas = ui.Layout()
:direction(ui.Layout.HORIZONTAL)
:constraints({ ui.Constraint.Length(label_max_length), ui.Constraint.Fill(1) })
:split(job.area)
local label_area = areas[1]
local value_area = areas[2]
return {
ui.Text(label_lines):area(label_area):align(ui.Text.LEFT):wrap(ui.Text.WRAP_NO),
ui.Text(value_lines):area(value_area):align(ui.Text.LEFT):wrap(ui.Text.WRAP_NO),
}
else
return {
ui.Table(rows):area(job.area):row(1):col(1):col_style(styles.row_value):widths({
ui.Constraint.Length(label_max_length),
ui.Constraint.Fill(1),
}),
}
end
end
function M:peek(job)
local start, cache = os.clock(), ya.file_cache(job)
if not cache or self:preload(job) ~= 1 then
return 1
end
ya.sleep(math.max(0, PREVIEW.image_delay / 1000 + start - os.clock()))
ya.preview_widgets(job, self:render_table(job))
end
function M:seek(job)
local h = cx.active.current.hovered
if h and h.url == job.file.url then
local step = math.floor(job.units * job.area.h / 10)
ya.manager_emit("peek", {
tostring(math.max(0, cx.active.preview.skip + step)),
only_if = tostring(job.file.url),
})
end
end
function M:preload(job)
local cache = ya.file_cache(job)
if not cache or fs.cha(cache) then
return 1
end
return 1
end
function M:spot(job)
job.area = ui.Pos({ "center", w = 80, h = 25 })
ya.spot_table(
job,
self:render_table(job, { show_plugins_section = true })[1]:cell_style(styles.row_value_spot_hovered)
)
end
return M

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 yazi-rs
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.

View file

@ -0,0 +1,78 @@
# git.yazi
> [!NOTE]
> Yazi v0.4.1 or later is required for this plugin to work.
Show the status of Git file changes as linemode in the file list.
https://github.com/user-attachments/assets/34976be9-a871-4ffe-9d5a-c4cdd0bf4576
## Installation
```sh
ya pack -a yazi-rs/plugins:git
```
## Setup
Add the following to your `~/.config/yazi/init.lua`:
```lua
require("git"):setup()
```
And register it as fetchers in your `~/.config/yazi/yazi.toml`:
```toml
[[plugin.prepend_fetchers]]
id = "git"
name = "*"
run = "git"
[[plugin.prepend_fetchers]]
id = "git"
name = "*/"
run = "git"
```
## Advanced
You can customize the [Style](https://yazi-rs.github.io/docs/plugins/layout#style) of the status sign with:
- `THEME.git.modified`
- `THEME.git.added`
- `THEME.git.untracked`
- `THEME.git.ignored`
- `THEME.git.deleted`
- `THEME.git.updated`
For example:
```lua
-- ~/.config/yazi/init.lua
THEME.git = THEME.git or {}
THEME.git.modified = ui.Style():fg("blue")
THEME.git.deleted = ui.Style():fg("red"):bold()
```
You can also customize the text of the status sign with:
- `THEME.git.modified_sign`
- `THEME.git.added_sign`
- `THEME.git.untracked_sign`
- `THEME.git.ignored_sign`
- `THEME.git.deleted_sign`
- `THEME.git.updated_sign`
For example:
```lua
-- ~/.config/yazi/init.lua
THEME.git = THEME.git or {}
THEME.git.modified_sign = "M"
THEME.git.deleted_sign = "D"
```
## License
This plugin is MIT-licensed. For more information check the [LICENSE](LICENSE) file.

View file

@ -0,0 +1,217 @@
local WIN = ya.target_family() == "windows"
local PATS = {
{ "[MT]", 6 }, -- Modified
{ "[AC]", 5 }, -- Added
{ "?$", 4 }, -- Untracked
{ "!$", 3 }, -- Ignored
{ "D", 2 }, -- Deleted
{ "U", 1 }, -- Updated
{ "[AD][AD]", 1 }, -- Updated
}
local function match(line)
local signs = line:sub(1, 2)
for _, p in ipairs(PATS) do
local path
if signs:find(p[1]) then
path = line:sub(4, 4) == '"' and line:sub(5, -2) or line:sub(4)
path = WIN and path:gsub("/", "\\") or path
end
if not path then
elseif path:find("[/\\]$") then
return p[2] == 3 and 30 or p[2], path:sub(1, -2)
else
return p[2], path
end
end
end
local function root(cwd)
local is_worktree = function(url)
local file, head = io.open(tostring(url)), nil
if file then
head = file:read(8)
file:close()
end
return head == "gitdir: "
end
repeat
local next = cwd:join(".git")
local cha = fs.cha(next)
if cha and (cha.is_dir or is_worktree(next)) then
return tostring(cwd)
end
cwd = cwd:parent()
until not cwd
end
local function bubble_up(changed)
local new, empty = {}, Url("")
for k, v in pairs(changed) do
if v ~= 3 and v ~= 30 then
local url = Url(k):parent()
while url and url ~= empty do
local s = tostring(url)
new[s] = (new[s] or 0) > v and new[s] or v
url = url:parent()
end
end
end
return new
end
local function propagate_down(ignored, cwd, repo)
local new, rel = {}, cwd:strip_prefix(repo)
for k, v in pairs(ignored) do
if v == 30 then
if rel:starts_with(k) then
new[tostring(repo:join(rel))] = 30
elseif cwd == repo:join(k):parent() then
new[k] = 3
end
end
end
return new
end
local add = ya.sync(function(st, cwd, repo, changed)
st.dirs[cwd] = repo
st.repos[repo] = st.repos[repo] or {}
for k, v in pairs(changed) do
if v == 0 then
st.repos[repo][k] = nil
elseif v == 30 then
st.dirs[k] = ""
else
st.repos[repo][k] = v
end
end
ya.render()
end)
local remove = ya.sync(function(st, cwd)
local dir = st.dirs[cwd]
if not dir then
return
end
ya.render()
st.dirs[cwd] = nil
if not st.repos[dir] then
return
end
for _, r in pairs(st.dirs) do
if r == dir then
return
end
end
st.repos[dir] = nil
end)
local function setup(st, opts)
st.dirs = {}
st.repos = {}
opts = opts or {}
opts.order = opts.order or 1500
-- Chosen by ChatGPT fairly, PRs are welcome to adjust them
local t = THEME.git or {}
local styles = {
[6] = t.modified and ui.Style(t.modified) or ui.Style():fg("#ffa500"),
[5] = t.added and ui.Style(t.added) or ui.Style():fg("#32cd32"),
[4] = t.untracked and ui.Style(t.untracked) or ui.Style():fg("#a9a9a9"),
[3] = t.ignored and ui.Style(t.ignored) or ui.Style():fg("#696969"),
[2] = t.deleted and ui.Style(t.deleted) or ui.Style():fg("#ff4500"),
[1] = t.updated and ui.Style(t.updated) or ui.Style():fg("#1e90ff"),
}
local signs = {
[6] = t.modified_sign and t.modified_sign or "",
[5] = t.added_sign and t.added_sign or "",
[4] = t.untracked_sign and t.untracked_sign or "",
[3] = t.ignored_sign and t.ignored_sign or "",
[2] = t.deleted_sign and t.deleted_sign or "",
[1] = t.updated_sign and t.updated_sign or "U",
}
Linemode:children_add(function(self)
local url = self._file.url
local dir = st.dirs[tostring(url:parent())]
local change
if dir then
change = dir == "" and 3 or st.repos[dir][tostring(url):sub(#dir + 2)]
end
if not change or signs[change] == "" then
return ""
elseif self._file:is_hovered() then
return ui.Line { " ", signs[change] }
else
return ui.Line { " ", ui.Span(signs[change]):style(styles[change]) }
end
end, opts.order)
end
local function fetch(_, job)
local cwd = job.files[1].url:parent()
local repo = root(cwd)
if not repo then
remove(tostring(cwd))
if not ya.__250127 then -- TODO: remove this
return 1
end
return true
end
local paths = {}
for _, f in ipairs(job.files) do
paths[#paths + 1] = tostring(f.url)
end
-- stylua: ignore
local output, err = Command("git")
:cwd(tostring(cwd))
:args({ "--no-optional-locks", "-c", "core.quotePath=", "status", "--porcelain", "-unormal", "--no-renames", "--ignored=matching" })
:args(paths)
:stdout(Command.PIPED)
:output()
if not output then
if not ya.__250127 then -- TODO: remove this
ya.err("Cannot spawn git command, error: " .. err)
return 0
end
return true, Err("Cannot spawn `git` command, error: %s", err)
end
local changed, ignored = {}, {}
for line in output.stdout:gmatch("[^\r\n]+") do
local sign, path = match(line)
if sign == 30 then
ignored[path] = sign
else
changed[path] = sign
end
end
if job.files[1].cha.is_dir then
ya.dict_merge(changed, bubble_up(changed))
ya.dict_merge(changed, propagate_down(ignored, cwd, Url(repo)))
else
ya.dict_merge(changed, propagate_down(ignored, cwd, Url(repo)))
end
for _, p in ipairs(paths) do
local s = p:sub(#repo + 2)
changed[s] = changed[s] or 0
end
add(tostring(cwd), repo, changed)
if not ya.__250127 then -- TODO: remove this
return 3
end
return false
end
return { setup = setup, fetch = fetch }

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Darius
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.

View file

@ -0,0 +1,29 @@
# lazygit.yazi
Plugin for [Yazi](https://github.com/sxyazi/yazi) to manage git repos with [lazygit](https://github.com/jesseduffield/lazygit)
## Dependencies
Make sure [lazygit](https://github.com/jesseduffield/lazygit) is installed and in your `PATH`.
## Installation
### Using `ya pack`
```
ya pack -a Lil-Dank/lazygit
```
### Manual
**Linux/macOS**
```
git clone https://github.com/Lil-Dank/lazygit.yazi.git ~/.config/yazi/plugins/lazygit.yazi
```
**Windows**
```
git clone https://github.com/Lil-Dank/lazygit.yazi.git %AppData%\yazi\config\plugins\lazygit.yazi
```
## Configuration
add this to your **keymap.toml** file
```toml
[[manager.prepend_keymap]]
on = [ "g", "i" ]
run = "plugin lazygit"
desc = "run lazygit"
```
you can customize the keybinding however you like. Please refer to the [keymap.toml](https://yazi-rs.github.io/docs/configuration/keymap) documentation

View file

@ -0,0 +1,31 @@
return {
entry = function()
local output = Command("git"):arg("status"):stderr(Command.PIPED):output()
if output.stderr ~= "" then
ya.notify({
title = "lazygit",
content = "Not in a git directory",
level = "warn",
timeout = 5,
})
else
permit = ya.hide()
local output, err_code = Command("lazygit"):stderr(Command.PIPED):output()
if err_code ~= nil then
ya.notify({
title = "Failed to run lazygit command",
content = "Status: " .. err_code,
level = "error",
timeout = 5,
})
elseif not output.status.success then
ya.notify({
title = "lazygit in" .. cwd .. "failed, exit code " .. output.status.code,
content = output.stderr,
level = "error",
timeout = 5,
})
end
end
end,
}

View file

@ -0,0 +1,19 @@
Copyright (c) 2024 Lauri Niskanen
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.

View file

@ -0,0 +1,26 @@
> [!NOTE]
> Please use **boydaihungst**'s fork for the latest version of this plugin:
> https://github.com/boydaihungst/mediainfo.yazi
# mediainfo.yazi
This is a Yazi plugin for previewing media files. The preview shows thumbnail
using `ffmpegthumbnailer` if available and media metadata using `mediainfo`.
## Installation
Install the plugin:
```
ya pack -a Ape/mediainfo
```
Create `~/.config/yazi/yazi.toml` and add:
```
[plugin]
prepend_previewers = [
{ mime = "{image,audio,video}/*", run = "mediainfo"},
{ mime = "application/x-subrip", run = "mediainfo"},
]
```

View file

@ -0,0 +1,111 @@
local skip_labels = {
["Complete name"] = true,
["CompleteName_Last"] = true,
["Unique ID"] = true,
["File size"] = true,
["Format/Info"] = true,
["Codec ID/Info"] = true,
["MD5 of the unencoded content"] = true,
}
local M = {}
function M:peek()
local image_height = 0
if self:preload() == 1 then
local cache = ya.file_cache(self)
if cache and fs.cha(cache).length > 0 then
image_height = ya.image_show(cache, self.area).h
end
end
local cmd = "mediainfo"
local output, code = Command(cmd)
:args({ tostring(self.file.url) })
:stdout(Command.PIPED)
:output()
local lines = {}
if output then
local i = 0
for str in output.stdout:gmatch("[^\n]*") do
local label, value = str:match("(.*[^ ]) +: (.*)")
local line
if label then
if not skip_labels[label] then
line = ui.Line({
ui.Span(label .. ": "):bold(),
ui.Span(value),
})
end
elseif str ~= "General" then
line = ui.Line({ ui.Span(str):underline() })
end
if line then
if i >= self.skip then
table.insert(lines, line)
end
local max_width = math.max(1, self.area.w - 3)
i = i + math.max(1, math.ceil(line:width() / max_width))
end
end
else
local error = string.format("Spawn `%s` command returns %s", cmd, code)
table.insert(lines, ui.Line(error))
end
ya.preview_widgets(self, {
ui.Paragraph(
ui.Rect({
x = self.area.x,
y = self.area.y + image_height,
w = self.area.w,
h = self.area.h - image_height,
}),
lines
):wrap(ui.Paragraph.WRAP),
})
end
function M:seek(units)
local h = cx.active.current.hovered
if h and h.url == self.file.url then
local step = math.floor(units * self.area.h / 10)
ya.manager_emit("peek", {
math.max(0, cx.active.preview.skip + step),
only_if = self.file.url,
})
end
end
function M:preload()
local cache = ya.file_cache(self)
if not cache or fs.cha(cache) then
return 1
end
local cmd = "ffmpegthumbnailer"
local child, code = Command(cmd):args({
"-q", "6",
"-c", "jpeg",
"-i", tostring(self.file.url),
"-o", tostring(cache),
"-t", "5",
"-s", tostring(PREVIEW.max_width),
}):spawn()
if not child then
ya.err(string.format("spawn `%s` command returns %s", cmd, code))
return 0
end
local status = child:wait()
return status and status.success and 1 or 2
end
return M

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 yazi-rs
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.

View file

@ -0,0 +1,56 @@
# mime-ext.yazi
A mime-type provider based on a file extension database, replacing the [builtin `file(1)`](https://github.com/sxyazi/yazi/blob/main/yazi-plugin/preset/plugins/mime.lua) to speed up mime-type retrieval at the expense of accuracy.
See https://yazi-rs.github.io/docs/tips#make-yazi-even-faster for more information.
## Installation
```sh
ya pack -a yazi-rs/plugins:mime-ext
```
## Usage
Add this to your `~/.config/yazi/yazi.toml`:
```toml
[[plugin.prepend_fetchers]]
id = "mime"
name = "*"
run = "mime-ext"
prio = "high"
```
## Advanced
You can also customize it in your `~/.config/yazi/init.lua` with:
```lua
require("mime-ext"):setup {
-- Expand the existing filename database (lowercase), for example:
with_files = {
makefile = "text/makefile",
-- ...
},
-- Expand the existing extension database (lowercase), for example:
with_exts = {
mk = "text/makefile",
-- ...
},
-- If the mime-type is not in both filename and extension databases,
-- then fallback to Yazi's preset `mime` plugin, which uses `file(1)`
fallback_file1 = false,
}
```
## TODO
- Add more file types (PRs welcome!).
- Compress mime-type tables.
## License
This plugin is MIT-licensed. For more information check the [LICENSE](LICENSE) file.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 yazi-rs
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.

View file

@ -0,0 +1,51 @@
# mount.yazi
> [!NOTE]
> The plugin is currently very experimental, and the newest Yazi nightly is required for it to work.
A mount manager for Yazi, providing disk mount, unmount, and eject functionality.
Supported platforms:
- Linux with [`udisksctl`](https://github.com/storaged-project/udisks) and [`lsblk`](https://github.com/util-linux/util-linux)
- macOS with `diskutil`
https://github.com/user-attachments/assets/c6f780ab-458b-420f-85cf-2fc45fcfe3a2
## Installation
```sh
ya pack -a yazi-rs/plugins:mount
```
## Usage
Add this to your `~/.config/yazi/keymap.toml`:
```toml
[[manager.prepend_keymap]]
on = "M"
run = "plugin mount"
```
Available keybindings:
| Key binding | Alternate key | Action |
| ------------ | ------------- | --------------------- |
| <kbd>q</kbd> | - | Quit the plugin |
| <kbd>k</kbd> | <kbd></kbd> | Move up |
| <kbd>j</kbd> | <kbd></kbd> | Move down |
| <kbd>l</kbd> | <kbd></kbd> | Enter the mount point |
| <kbd>m</kbd> | - | Mount the partition |
| <kbd>u</kbd> | - | Unmount the partition |
| <kbd>e</kbd> | - | Eject the disk |
## TODO
- Custom keybindings
- Windows support (I don't have an Windows machine for testing, PRs welcome!)
- Support mount, unmount, and eject the entire disk
## License
This plugin is MIT-licensed. For more information check the [LICENSE](LICENSE) file.

View file

@ -0,0 +1,266 @@
local toggle_ui = ya.sync(function(self)
if self.children then
Modal:children_remove(self.children)
self.children = nil
else
self.children = Modal:children_add(self, 10)
end
ya.render()
end)
local subscribe = ya.sync(function(self)
ps.unsub("mount")
ps.sub("mount", function() ya.manager_emit("plugin", { self._id, args = "refresh" }) end)
end)
local update_partitions = ya.sync(function(self, partitions)
self.partitions = partitions
self.cursor = math.max(0, math.min(self.cursor or 0, #self.partitions - 1))
ya.render()
end)
local active_partition = ya.sync(function(self) return self.partitions[self.cursor + 1] end)
local update_cursor = ya.sync(function(self, cursor)
if #self.partitions == 0 then
self.cursor = 0
else
self.cursor = ya.clamp(0, self.cursor + cursor, #self.partitions - 1)
end
ya.render()
end)
local M = {
keys = {
{ on = "q", run = "quit" },
{ on = "k", run = "up" },
{ on = "j", run = "down" },
{ on = "l", run = { "enter", "quit" } },
{ on = "<Up>", run = "up" },
{ on = "<Down>", run = "down" },
{ on = "<Right>", run = { "enter", "quit" } },
{ on = "m", run = "mount" },
{ on = "u", run = "unmount" },
{ on = "e", run = "eject" },
},
}
function M:new(area)
self:layout(area)
return self
end
function M:layout(area)
local chunks = ui.Layout()
:constraints({
ui.Constraint.Percentage(10),
ui.Constraint.Percentage(80),
ui.Constraint.Percentage(10),
})
:split(area)
local chunks = ui.Layout()
:direction(ui.Layout.HORIZONTAL)
:constraints({
ui.Constraint.Percentage(10),
ui.Constraint.Percentage(80),
ui.Constraint.Percentage(10),
})
:split(chunks[2])
self._area = chunks[2]
end
function M:entry(job)
if job.args[1] == "refresh" then
return update_partitions(self.obtain())
end
toggle_ui()
update_partitions(self.obtain())
subscribe()
local tx1, rx1 = ya.chan("mpsc")
local tx2, rx2 = ya.chan("mpsc")
function producer()
while true do
local cand = self.keys[ya.which { cands = self.keys, silent = true }] or { run = {} }
for _, r in ipairs(type(cand.run) == "table" and cand.run or { cand.run }) do
tx1:send(r)
if r == "quit" then
toggle_ui()
return
end
end
end
end
function consumer1()
repeat
local run = rx1:recv()
if run == "quit" then
tx2:send(run)
break
elseif run == "up" then
update_cursor(-1)
elseif run == "down" then
update_cursor(1)
elseif run == "enter" then
local active = active_partition()
if active and active.dist then
ya.manager_emit("cd", { active.dist })
end
else
tx2:send(run)
end
until not run
end
function consumer2()
repeat
local run = rx2:recv()
if run == "quit" then
break
elseif run == "mount" then
self.operate("mount")
elseif run == "unmount" then
self.operate("unmount")
elseif run == "eject" then
self.operate("eject")
end
until not run
end
ya.join(producer, consumer1, consumer2)
end
function M:reflow() return { self } end
function M:redraw()
local rows = {}
for _, p in ipairs(self.partitions or {}) do
if p.sub == "" then
rows[#rows + 1] = ui.Row { p.main }
else
rows[#rows + 1] = ui.Row { p.sub, p.label or "", p.dist or "", p.fstype or "" }
end
end
return {
ui.Clear(self._area),
ui.Border(ui.Border.ALL)
:area(self._area)
:type(ui.Border.ROUNDED)
:style(ui.Style():fg("blue"))
:title(ui.Line("Mount"):align(ui.Line.CENTER)),
ui.Table(rows)
:area(self._area:pad(ui.Pad(1, 2, 1, 2)))
:header(ui.Row({ "Src", "Label", "Dist", "FSType" }):style(ui.Style():bold()))
:row(self.cursor)
:row_style(ui.Style():fg("blue"):underline())
:widths {
ui.Constraint.Length(20),
ui.Constraint.Length(20),
ui.Constraint.Percentage(70),
ui.Constraint.Length(10),
},
}
end
function M.obtain()
local tbl = {}
local last
for _, p in ipairs(fs.partitions()) do
local main, sub
if ya.target_os() == "macos" then
main, sub = p.src:match("^(/dev/disk%d+)(.+)$")
elseif p.src:find("/dev/nvme", 1, true) == 1 then -- /dev/nvme0n1p1
main, sub = p.src:match("^(/dev/nvme%d+n%d+)(p%d+)$")
elseif p.src:find("/dev/sd", 1, true) == 1 then -- /dev/sda1
main, sub = p.src:match("^(/dev/sd[a-z])(%d+)$")
end
if sub then
if last ~= main then
last, tbl[#tbl + 1] = main, { src = main, main = main, sub = "" }
end
p.main, p.sub, tbl[#tbl + 1] = main, " " .. sub, p
end
end
table.sort(M.fillin(tbl), function(a, b)
if a.main == b.main then
return a.sub < b.sub
else
return a.main > b.main
end
end)
return tbl
end
function M.fillin(tbl)
if ya.target_os() ~= "linux" then
return tbl
end
local sources, indices = {}, {}
for i, p in ipairs(tbl) do
if p.sub ~= "" and not p.fstype then
sources[#sources + 1], indices[p.src] = p.src, i
end
end
if #sources == 0 then
return tbl
end
local output, err = Command("lsblk"):args({ "-p", "-o", "name,fstype", "-J" }):args(sources):output()
if err then
ya.dbg("Failed to fetch filesystem types for unmounted partitions: " .. err)
return tbl
end
local t = ya.json_decode(output and output.stdout or "")
for _, p in ipairs(t and t.blockdevices or {}) do
tbl[indices[p.name]].fstype = p.fstype
end
return tbl
end
function M.operate(type)
local active = active_partition()
if not active then
return
elseif active.sub == "" then
return -- TODO: mount/unmount main disk
end
local output, err
if ya.target_os() == "macos" then
output, err = Command("diskutil"):args({ type, active.src }):output()
end
if ya.target_os() == "linux" then
if type == "eject" then
Command("udisksctl"):args({ "unmount", "-b", active.src }):status()
output, err = Command("udisksctl"):args({ "power-off", "-b", active.src }):output()
else
output, err = Command("udisksctl"):args({ type, "-b", active.src }):output()
end
end
if not output then
M.fail("Failed to %s `%s`: %s", type, active.src, err)
elseif not output.status.success then
M.fail("Failed to %s `%s`: %s", type, active.src, output.stderr)
end
end
function M.fail(s, ...) ya.notify { title = "Mount", content = string.format(s, ...), timeout = 10, level = "error" } end
function M:click() end
function M:scroll() end
function M:touch() end
return M

View file

@ -0,0 +1,20 @@
return {
entry = function(_, job)
local block = job.args[1] and job.args[1] == "block"
local value, event = ya.input({
title = block and "Open with (block):" or "Open with:",
position = { "hovered", y = 1, w = 50 },
})
if event == 1 then
local s = ya.target_family() == "windows" and " %*" or ' "$@"'
ya.manager_emit("shell", {
value .. s,
block = block,
orphan = true,
confirm = true,
})
end
end,
}

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 ndtoan96
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.

View file

@ -0,0 +1,83 @@
# ouch.yazi
[ouch](https://github.com/ouch-org/ouch) plugin for [Yazi](https://github.com/sxyazi/yazi).
![ouch.yazi](https://github.com/ndtoan96/ouch.yazi/assets/33489972/946397ec-b37b-4bf4-93f1-c676fc8e59f2)
## Features
- Archive preview
- Compression
## Installation
If you use Yazi from latest main branch
```bash
# Linux/macOS
git clone https://github.com/ndtoan96/ouch.yazi.git ~/.config/yazi/plugins/ouch.yazi
# Windows with cmd
git clone https://github.com/ndtoan96/ouch.yazi.git %AppData%\yazi\config\plugins\ouch.yazi
# Windows with powershell
git clone https://github.com/ndtoan96/ouch.yazi.git "$($env:APPDATA)\yazi\config\plugins\ouch.yazi"
```
If you use Yazi < 0.4.3
```bash
# Linux/macOS
git clone --branch v0.4.0 --single-branch https://github.com/ndtoan96/ouch.yazi.git ~/.config/yazi/plugins/ouch.yazi
# Windows with cmd
git clone --branch v0.4.0 --single-branch https://github.com/ndtoan96/ouch.yazi.git %AppData%\yazi\config\plugins\ouch.yazi
# Windows with powershell
git clone --branch v0.4.0 --single-branch https://github.com/ndtoan96/ouch.yazi.git "$($env:APPDATA)\yazi\config\plugins\ouch.yazi"
```
Make sure you have [ouch](https://github.com/ouch-org/ouch) installed and in your `PATH`.
## Usage
### Preview
For archive preview, add this to your `yazi.toml`:
```toml
[plugin]
prepend_previewers = [
# Archive previewer
{ mime = "application/*zip", run = "ouch" },
{ mime = "application/x-tar", run = "ouch" },
{ mime = "application/x-bzip2", run = "ouch" },
{ mime = "application/x-7z-compressed", run = "ouch" },
{ mime = "application/x-rar", run = "ouch" },
{ mime = "application/x-xz", run = "ouch" },
]
```
Now go to an archive on Yazi, you should see the archive's content in the preview pane. You can use `J` and `K` to roll up and down the preview.
If you want to change the icon or the style of text, you can modify the `peek` function in `init.lua` file (all of them are stored in the `lines` variable).
### Compression
For compession, add this to your `keymap.toml`:
```toml
[[manager.prepend_keymap]]
on = ["C"]
run = "plugin ouch --args=zip"
desc = "Compress with ouch"
```
The `--args=zip` part tells the plugin that default format is `zip`. You can change that to whatever format you want.
### Decompression
This plugin does not provide a decompression feature because it already is supported by Yazi.
To decompress with `ouch`, configure the opener in `yazi.toml`.
```toml
[opener]
extract = [
{ run = 'ouch d -y "%*"', desc = "Extract here with ouch", for = "windows" },
{ run = 'ouch d -y "$@"', desc = "Extract here with ouch", for = "unix" },
]
```

View file

@ -0,0 +1,145 @@
local M = {}
function M:peek(job)
local child = Command("ouch")
:args({ "l", "-t", "-y", tostring(job.file.url) })
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:spawn()
local limit = job.area.h
local file_name = string.match(tostring(job.file.url), ".*[/\\](.*)")
local lines = string.format("📁 \x1b[2m%s\x1b[0m\n", file_name)
local num_lines = 1
local num_skip = 0
repeat
local line, event = child:read_line()
if event == 1 then
ya.err(tostring(event))
elseif event ~= 0 then
break
end
if line:find('Archive', 1, true) ~= 1 and line:find('[INFO]', 1, true) ~= 1 then
if num_skip >= job.skip then
lines = lines .. line
num_lines = num_lines + 1
else
num_skip = num_skip + 1
end
end
until num_lines >= limit
child:start_kill()
if job.skip > 0 and num_lines < limit then
ya.manager_emit(
"peek",
{ tostring(math.max(0, job.skip - (limit - num_lines))), only_if = tostring(job.file.url), upper_bound = "" }
)
else
ya.preview_widgets(job, { ui.Text(lines):area(job.area) })
end
end
function M:seek(job)
local h = cx.active.current.hovered
if h and h.url == job.file.url then
local step = math.floor(job.units * job.area.h / 10)
ya.manager_emit("peek", {
math.max(0, cx.active.preview.skip + step),
only_if = tostring(job.file.url),
})
end
end
-- Check if file exists
local function file_exists(name)
local f = io.open(name, "r")
if f ~= nil then
io.close(f)
return true
else
return false
end
end
-- Get the files that need to be compressed and infer a default archive name
local get_compression_target = ya.sync(function()
local tab = cx.active
local default_name
local paths = {}
if #tab.selected == 0 then
if tab.current.hovered then
local name = tab.current.hovered.name
default_name = name
table.insert(paths, name)
else
return
end
else
default_name = tab.current.cwd:name()
for _, url in pairs(tab.selected) do
table.insert(paths, tostring(url))
end
-- The compression targets are aquired, now unselect them
ya.manager_emit("escape", {})
end
return paths, default_name
end)
local function invoke_compress_command(paths, name)
local cmd_output, err_code = Command("ouch")
:args({ "c", "-y" })
:args(paths)
:arg(name)
:stderr(Command.PIPED)
:output()
if err_code ~= nil then
ya.notify({
title = "Failed to run ouch command",
content = "Status: " .. err_code,
timeout = 5.0,
level = "error",
})
elseif not cmd_output.status.success then
ya.notify({
title = "Compression failed: status code " .. cmd_output.status.code,
content = cmd_output.stderr,
timeout = 5.0,
level = "error",
})
end
end
function M:entry(job)
local default_fmt = job.args[1]
ya.manager_emit("escape", { visual = true })
-- Get the files that need to be compressed and infer a default archive name
local paths, default_name = get_compression_target()
-- Get archive name from user
local output_name, name_event = ya.input({
title = "Create archive:",
value = default_name .. "." .. default_fmt,
position = { "top-center", y = 3, w = 40 },
})
if name_event ~= 1 then
return
end
-- Get confirmation if file exists
if file_exists(output_name) then
local confirm, confirm_event = ya.input({
title = "Overwrite " .. output_name .. "? (y/N)",
position = { "top-center", y = 3, w = 40 },
})
if not (confirm_event == 1 and confirm:lower() == "y") then
return
end
end
invoke_compress_command(paths, output_name)
end
return M

View file

@ -0,0 +1,280 @@
--- @since 25.2.7
local M = {}
local shell = os.getenv("SHELL") or ""
local PackageName = "Restore"
local function success(s, ...)
ya.notify({ title = PackageName, content = string.format(s, ...), timeout = 5, level = "info" })
end
local function fail(s, ...)
ya.notify({ title = PackageName, content = string.format(s, ...), timeout = 5, level = "error" })
end
---@enum STATE
local STATE = {
POSITION = "position",
SHOW_CONFIRM = "show_confirm",
THEME = "theme",
}
local set_state = ya.sync(function(state, key, value)
if state then
state[key] = value
else
state = {}
state[key] = value
end
end)
local get_state = ya.sync(function(state, key)
if state then
return state[key]
else
return nil
end
end)
---@enum File_Type
local File_Type = {
File = "file",
Dir = "dir_all",
None_Exist = "unknown",
}
---@alias TRASHED_ITEM {trash_index: number, trashed_date_time: string, trashed_path: string, type: File_Type} Item in trash list
function get_basename(filepath)
return filepath:match("^.+/(.+)$") or filepath
end
local get_cwd = ya.sync(function()
return tostring(cx.active.current.cwd)
end)
local function path_quote(path)
local result = "'" .. string.gsub(path, "'", "'\\''") .. "'"
return result
end
local function get_file_type(path)
local cha, _ = fs.cha(Url(path))
if cha then
return cha.is_dir and File_Type.Dir or File_Type.File
else
return File_Type.None_Exist
end
end
local function get_trash_volume()
local cwd = get_cwd()
local trash_volumes_stream, cmr_err =
Command("trash-list"):args({ "--volumes" }):stdout(Command.PIPED):stderr(Command.PIPED):output()
local matched_vol_path = nil
if trash_volumes_stream then
local matched_vol_length = 0
for vol in trash_volumes_stream.stdout:gmatch("[^\r\n]+") do
local vol_length = utf8.len(vol) or 0
if cwd:sub(1, vol_length) == vol and vol_length > matched_vol_length then
matched_vol_path = vol
matched_vol_length = vol_length
end
end
if not matched_vol_path then
fail("Can't get trash directory")
end
else
fail("Failed to start `trash-list` with error: `%s`. Do you have `trash-cli` installed?", cmr_err)
end
return matched_vol_path
end
---get list of latest files/folders trashed
---@param curr_working_volume currently working volume
---@return TRASHED_ITEM[]|nil
local function get_latest_trashed_items(curr_working_volume)
---@type TRASHED_ITEM[]
local restorable_items = {}
local fake_enter = Command("printf"):stderr(Command.PIPED):stdout(Command.PIPED):spawn():take_stdout()
local trash_list_stream, err_cmd = Command(shell)
:args({ "-c", "trash-restore " .. path_quote(curr_working_volume) })
:stdin(fake_enter)
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:output()
if trash_list_stream then
---@type TRASHED_ITEM[]
local trash_list = {}
for line in trash_list_stream.stdout:gmatch("[^\r\n]+") do
-- remove leading spaces
line = line:match("^%s*(.+)$")
local trash_index, item_date, item_path = line:match("^(%d+) (%S+ %S+) (.+)$")
if item_date and item_path and trash_index ~= nil then
table.insert(trash_list, {
trash_index = tonumber(trash_index),
trashed_date_time = item_date,
trashed_path = item_path,
type = File_Type.None_Exist,
})
end
end
if #trash_list == 0 then
success("Nothing left to restore")
return
end
local last_item_datetime = trash_list[#trash_list].trashed_date_time
for _, trash_item in ipairs(trash_list) do
if trash_item then
if trash_item.trashed_date_time == last_item_datetime then
trash_item.type = get_file_type(trash_item.trashed_path)
table.insert(restorable_items, trash_item)
end
end
end
else
fail("Failed to start `trash-restore` with error: `%s`. Do you have `trash-cli` installed?", err_cmd)
return
end
return restorable_items
-- return newest_trashed_items
end
---@param trash_list TRASHED_ITEM[]
local function filter_none_exised_paths(trash_list)
---@type TRASHED_ITEM[]
local existed_trash_items = {}
for _, v in ipairs(trash_list) do
if v.type ~= File_Type.None_Exist then
table.insert(existed_trash_items, v)
end
end
return existed_trash_items
end
local function restore_files(curr_working_volume, start_index, end_index)
if type(start_index) ~= "number" or type(end_index) ~= "number" or start_index < 0 or end_index < 0 then
fail("Failed to restore file(s): out of range")
return
end
ya.manager_emit("shell", {
"echo " .. ya.quote(start_index .. "-" .. end_index) .. " | trash-restore --overwrite " .. path_quote(
curr_working_volume
),
confirm = true,
})
local file_to_restore_count = end_index - start_index + 1
success("Restored " .. tostring(file_to_restore_count) .. " file" .. (file_to_restore_count > 1 and "s" or ""))
end
function M:setup(opts)
if opts and opts.position and type(opts.position) == "table" then
set_state(STATE.POSITION, opts.position)
else
set_state(STATE.POSITION, { "center", w = 70, h = 40 })
end
if opts and opts.show_confirm then
set_state(STATE.SHOW_CONFIRM, opts.show_confirm)
else
set_state(STATE.SHOW_CONFIRM, false)
end
if opts and opts.theme and type(opts.theme) == "table" then
set_state(STATE.THEME, opts.theme)
else
set_state(STATE.THEME, {})
end
end
---@param trash_list TRASHED_ITEM[]
local function get_components(trash_list)
local theme = get_state(STATE.THEME) or {}
theme.list_item = theme.list_item or {
odd = "blue",
even = "blue",
}
local trashed_items_components = {}
for idx, item in pairs(trash_list) do
local fg_color = theme.list_item.odd or "blue"
if idx % 2 == 0 then
fg_color = theme.list_item.even or "blue"
end
table.insert(
trashed_items_components,
ui.Line({
ui.Span(" "),
ui.Span(item.trashed_path):fg(fg_color),
}):align(ui.Line.LEFT)
)
end
return trashed_items_components
end
function M:entry()
local curr_working_volume = get_trash_volume()
if not curr_working_volume then
return
end
local trashed_items = get_latest_trashed_items(curr_working_volume)
if trashed_items == nil then
return
end
local collided_items = filter_none_exised_paths(trashed_items)
local overwrite_confirmed = true
local show_confirm = get_state(STATE.SHOW_CONFIRM)
local pos = get_state(STATE.POSITION)
pos = pos or { "center", w = 70, h = 40 }
local theme = get_state(STATE.THEME) or {}
theme.title = theme.title or "blue"
theme.header = theme.header or "green"
theme.header_warning = theme.header_warning or "yellow"
if ya.confirm and show_confirm then
local continue_restore = ya.confirm({
title = ui.Line("Restore files/folders"):fg(theme.title):bold(),
content = ui.Text({
ui.Line(""),
ui.Line("The following files and folders are going to be restored:"):fg(theme.header),
ui.Line(""),
table.unpack(get_components(trashed_items)),
})
:align(ui.Text.LEFT)
:wrap(ui.Text.WRAP),
--TODO: still wating for API :/
-- list = ui.List({
-- table.unpack(get_components(trashed_items)),
-- }),
pos = pos,
})
-- stopping
if not continue_restore then
return
end
end
-- show Confirm dialog with list of collided items
if #collided_items > 0 then
overwrite_confirmed = ya.confirm({
title = ui.Line("Restore files/folders"):fg(theme.title):bold(),
content = ui.Text({
ui.Line(""),
ui.Line("The following files and folders are existed, overwrite?"):fg(theme.header_warning),
ui.Line(""),
table.unpack(get_components(collided_items)),
})
:align(ui.Text.LEFT)
:wrap(ui.Text.WRAP),
pos = pos,
})
end
if overwrite_confirmed then
restore_files(curr_working_volume, trashed_items[1].trash_index, trashed_items[#trashed_items].trash_index)
end
end
return M

View file

@ -0,0 +1,53 @@
local M = {}
function M:peek(job)
local child = Command("rich")
:args({
"-j",
"--left",
"--line-numbers",
"--force-terminal",
"--panel=rounded",
"--guides",
"--max-width",
tostring(job.area.w),
tostring(job.file.url),
})
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:spawn()
if not child then
return require("code"):peek(job)
end
local limit = job.area.h
local i, lines = 0, ""
repeat
local next, event = child:read_line()
if event == 1 then
return require("code"):peek(job)
elseif event ~= 0 then
break
end
i = i + 1
if i > job.skip then
lines = lines .. next
end
until i >= job.skip + limit
child:start_kill()
if job.skip > 0 and i < job.skip + limit then
ya.manager_emit("peek", { math.max(0, i - limit), only_if = job.file.url, upper_bound = true })
else
lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size))
ya.preview_widgets(job, { ui.Text.parse(lines):area(job.area) })
end
end
function M:seek(job)
require("code"):seek(job)
end
return M

View file

@ -0,0 +1,11 @@
--- @since 25.2.7
--- @sync entry
local function setup(self, opts) self.open_multi = opts.open_multi end
local function entry(self)
local h = cx.active.current.hovered
ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = not self.open_multi })
end
return { entry = entry, setup = setup }

View file

@ -0,0 +1,13 @@
--- @sync entry
return {
entry = function()
local h = cx.active.current.hovered
if h and h.cha.is_dir then
ya.manager_emit("enter", {})
ya.manager_emit("paste", {})
ya.manager_emit("leave", {})
else
ya.manager_emit("paste", {})
end
end,
}

View file

@ -0,0 +1,7 @@
--- @sync entry
return {
entry = function()
local h = cx.active.current.hovered
ya.manager_emit("tab_create", h and h.cha.is_dir and { h.url } or { current = true })
end,
}

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Rolv Apneseth
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.

Some files were not shown because too many files have changed in this diff Show more