Update 2024-12-10

This commit is contained in:
Kristofers Solo 2024-12-10 08:11:14 +02:00
parent d231e9de9c
commit 9e0be0285a
21 changed files with 1778 additions and 515 deletions

View File

@ -1,7 +1,7 @@
[helpers] [helpers]
[default] [default]
depends = [ ] depends = []
[default.files] [default.files]
LICENSE = "" LICENSE = ""
@ -13,38 +13,38 @@ LICENSE = ""
default_target_type = "symbolic" default_target_type = "symbolic"
[base] [base]
depends = [ "default", "zsh", "spotify", "terminal", "local", "misc" ] depends = ["default", "zsh", "spotify", "terminal", "local", "misc"]
[x11] [x11]
depends = [ "base", "awesome", "picom", "dunst" ] depends = ["base", "awesome", "picom", "dunst"]
[x11.files] [x11.files]
"config/zsh/.zprofile-x11" = "~/.config/zsh/.zprofile" "config/zsh/.zprofile-x11" = "~/.config/zsh/.zprofile"
"config/x11/" = "~/.config/x11/" "config/x11/" = "~/.config/x11/"
"config/x11/xresources" = {target = "~/.config/x11/xresources", type = "template"} "config/x11/xresources" = { target = "~/.config/x11/xresources", type = "template" }
[x11-laptop] [x11-laptop]
depends = [ "base", "awesome_laptop", "picom", "dunst" ] depends = ["base", "awesome_laptop", "picom", "dunst"]
[x11-laptop.files] [x11-laptop.files]
"config/zsh/.zprofile-x11" = "~/.config/zsh/.zprofile" "config/zsh/.zprofile-x11" = "~/.config/zsh/.zprofile"
"config/x11/" = "~/.config/x11/" "config/x11/" = "~/.config/x11/"
"config/x11/xresources" = {target = "~/.config/x11/xresources", type = "template"} "config/x11/xresources" = { target = "~/.config/x11/xresources", type = "template" }
[wayland] [wayland]
depends = [ "base", "hyprland", "dunst" ] depends = ["base", "hyprland", "dunst"]
[wayland.files] [wayland.files]
"config/zsh/.zprofile-wayland" = "~/.config/zsh/.zprofile" "config/zsh/.zprofile-wayland" = "~/.config/zsh/.zprofile"
"config/x11/xresources" = {target = "~/.config/x11/xresources", type = "template"} "config/x11/xresources" = { target = "~/.config/x11/xresources", type = "template" }
[shell.files] [shell.files]
"config/shell/" = "~/.config/shell/" "config/shell/" = "~/.config/shell/"
[zsh] [zsh]
depends = [ "shell" ] depends = ["shell"]
[zsh.files] [zsh.files]
"config/shell/env" = "~/.zshenv" "config/shell/env" = "~/.zshenv"
@ -55,10 +55,11 @@ depends = [ "shell" ]
"local/share/" = "~/.local/share/" "local/share/" = "~/.local/share/"
[misc] [misc]
depends = [ "torrent", "zathura" ] depends = ["torrent", "zathura"]
[misc.files] [misc.files]
"config/batrc" = "~/.config/bat/config" "config/batrc" = "~/.config/bat/config"
"config/tmThemes/" = "~/.config/silicon/themes/"
"config/btop/" = "~/.config/btop/" "config/btop/" = "~/.config/btop/"
"config/htoprc" = "~/.config/htop/htoprc" "config/htoprc" = "~/.config/htop/htoprc"
"config/fastfetch/" = "~/.config/fastfetch/" "config/fastfetch/" = "~/.config/fastfetch/"
@ -92,7 +93,7 @@ depends = [ "torrent", "zathura" ]
"config/dunst/" = "~/.config/dunst/" "config/dunst/" = "~/.config/dunst/"
[hyprland] [hyprland]
depends = [ "dunst", "misc", "local", "eww", "lock" ] depends = ["dunst", "misc", "local", "eww", "lock"]
[hyprland.files] [hyprland.files]
"config/hypr/" = "~/.config/hypr/" "config/hypr/" = "~/.config/hypr/"
@ -120,11 +121,11 @@ depends = [ "dunst", "misc", "local", "eww", "lock" ]
"config/spotify-tui.yml" = "~/.config/spotify-tui/config.yml" "config/spotify-tui.yml" = "~/.config/spotify-tui/config.yml"
[terminal] [terminal]
depends = [ "zsh", "tmux", "yazi" ] depends = ["zsh", "tmux", "yazi"]
[terminal.files] [terminal.files]
"config/alacritty/" = "~/.config/alacritty/" "config/alacritty/" = "~/.config/alacritty/"
"config/alacritty/alacritty.toml" = {target = "~/.config/alacritty/alacritty.toml", type = "template"} "config/alacritty/alacritty.toml" = { target = "~/.config/alacritty/alacritty.toml", type = "template" }
"config/starship.toml" = "~/.config/starship/starship.toml" "config/starship.toml" = "~/.config/starship/starship.toml"
[tmux.files] [tmux.files]

View File

@ -4,7 +4,7 @@
# Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes` # Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes`
# for a list of all available themes # for a list of all available themes
--theme="base16-256" --theme="Rosé Pine"
# Enable this to use italic text on the terminal. This is not supported on all # Enable this to use italic text on the terminal. This is not supported on all
# terminal emulators (like tmux, by default): # terminal emulators (like tmux, by default):

View File

@ -57,7 +57,7 @@ update_ms = 500
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", #* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. #* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu direct" proc_sorting = "memory"
#* Reverse sorting order, True or False. #* Reverse sorting order, True or False.
proc_reversed = False proc_reversed = False

View File

@ -46,7 +46,6 @@ alias \
night="redshift -PO 4500" \ night="redshift -PO 4500" \
py="python" \ py="python" \
sv="rsv" \ sv="rsv" \
typst-port="ss -tunlp | rg tinymist" \
v="$EDITOR" \ v="$EDITOR" \
weather="curl wttr.in/" \ weather="curl wttr.in/" \
wg-down="wg-quick down wg0" \ wg-down="wg-quick down wg0" \

View File

@ -0,0 +1,299 @@
<?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>Rosé Pine Dawn</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#faf4ed</string>
<key>caret</key>
<string>#cecacd</string>
<key>foreground</key>
<string>#575279</string>
<key>invisibles</key>
<string>#fffaf3</string>
<key>lineHighlight</key>
<string>#f4ede8</string>
<key>selection</key>
<string>#dfdad9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#797593</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ea9d34</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>#907aa9</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>#907aa9</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>#907aa9</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>
<key>foreground</key>
<string>#d7827e</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#b4637a</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>#b4637a</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>#56949f</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> bold</string>
<key>foreground</key>
<string>#286983</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 </string>
<key>foreground</key>
<string>#286983</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>#286983</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>#ea9d34</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>#b4637a</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>#286983</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>#56949f</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>#56949f</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>#56949f</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>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#b4637a</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#575279</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>#907aa9</string>
<key>foreground</key>
<string>#575279</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>dac29768-bcff-4df3-936c-88c7540d550d</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>semanticClass</key>
<string>theme.light.rosé_pine-dawn</string>
<key>author</key>
<string>oplik0</string>
<key>comment</key>
<string>soho vibes - modified from the sublime text theme by ThatOneCalculator</string>
</dict>
</plist>

View File

@ -0,0 +1,299 @@
<?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>Rosé Pine Moon</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#232136</string>
<key>caret</key>
<string>#56526e</string>
<key>foreground</key>
<string>#e0def4</string>
<key>invisibles</key>
<string>#2a273f</string>
<key>lineHighlight</key>
<string>#2a283e</string>
<key>selection</key>
<string>#6e6a86</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#908caa</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#f6c177</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>#c4a7e7</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>#c4a7e7</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>#c4a7e7</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>
<key>foreground</key>
<string>#ea9a97</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#eb6f92</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>#eb6f92</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>#9ccfd8</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> bold</string>
<key>foreground</key>
<string>#3e8fb0</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 </string>
<key>foreground</key>
<string>#3e8fb0</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>#3e8fb0</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>#f6c177</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>#eb6f92</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>#3e8fb0</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>#9ccfd8</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>#9ccfd8</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>#9ccfd8</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>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#eb6f92</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#e0def4</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>#c4a7e7</string>
<key>foreground</key>
<string>#e0def4</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>a65f621e-b84b-48fb-afec-e5c085e8debf</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>semanticClass</key>
<string>theme.dark.rosé_pine-moon</string>
<key>author</key>
<string>oplik0</string>
<key>comment</key>
<string>soho vibes - modified from the sublime text theme by ThatOneCalculator</string>
</dict>
</plist>

View File

@ -0,0 +1,299 @@
<?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>Rosé Pine</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#191724</string>
<key>caret</key>
<string>#524f67</string>
<key>foreground</key>
<string>#e0def4</string>
<key>invisibles</key>
<string>#1f1d2e</string>
<key>lineHighlight</key>
<string>#21202e</string>
<key>selection</key>
<string>#403d52</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#908caa</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#f6c177</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>#c4a7e7</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>#c4a7e7</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>#c4a7e7</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>
<key>foreground</key>
<string>#ebbcba</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#eb6f92</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>#eb6f92</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>#9ccfd8</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> bold</string>
<key>foreground</key>
<string>#31748f</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 </string>
<key>foreground</key>
<string>#31748f</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>#31748f</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>#f6c177</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>#eb6f92</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>#31748f</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>#9ccfd8</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>#9ccfd8</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>#9ccfd8</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>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#eb6f92</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#e0def4</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>#c4a7e7</string>
<key>foreground</key>
<string>#e0def4</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>c3af112c-80e3-45fe-8890-43ca225fda21</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>semanticClass</key>
<string>theme.dark.rosé_pine</string>
<key>author</key>
<string>oplik0</string>
<key>comment</key>
<string>soho vibes - modified from the sublime text theme by ThatOneCalculator</string>
</dict>
</plist>

View File

@ -8,6 +8,9 @@ set-option -g status-position top
set-option -sg escape-time 0 set-option -sg escape-time 0
set-option -g focus-events on set-option -g focus-events on
set -g allow-passthrough on
set -g visual-activity off
set -g mouse on set -g mouse on
# Disable setatus bar # Disable setatus bar
@ -49,8 +52,6 @@ set -g @plugin "tmux-plugins/tmux-yank"
set -g @plugin "tmux-plugins/tmux-resurrect" set -g @plugin "tmux-plugins/tmux-resurrect"
set -g @plugin "rose-pine/tmux" set -g @plugin "rose-pine/tmux"
set -g allow-passthrough on
set -ga update-environment TERM set -ga update-environment TERM
set -ga update-environment TERM_PROGRAM set -ga update-environment TERM_PROGRAM

View File

@ -170,7 +170,7 @@ prepend_keymap = [
{on = [ "m", "a" ], run = ''' shell 'ripdrag -atk "$@"' --confirm ''', desc = "Drag and drop all"}, {on = [ "m", "a" ], run = ''' shell 'ripdrag -atk "$@"' --confirm ''', desc = "Drag and drop all"},
{on = [ "m", "i" ], run = ''' shell 'ripdrag -tk "$@"' --confirm ''', desc = "Drag and drop individual"}, {on = [ "m", "i" ], run = ''' shell 'ripdrag -tk "$@"' --confirm ''', desc = "Drag and drop individual"},
# vidir # vidir
{on = [ "B" ], run = ''' shell 'vidir "$@"' --confirm ''', desc = "Bulk rename"}, {on = "B", run = 'vidir "$1"', desc = "Bulk rename"},
# Max Preview # Max Preview
{on = "T", run = "plugin --sync max-preview", desc = "Maximize or restore preview"}, {on = "T", run = "plugin --sync max-preview", desc = "Maximize or restore preview"},
# Hide Preview # Hide Preview

View File

@ -1,21 +1,21 @@
[plugin] [plugin]
deps = [ deps = [
{use = "AnirudhG07/nbpreview", rev = "2d24602"}, {use = "AnirudhG07/nbpreview", rev = "1d85745" },
{use = "Reledia/glow", rev = "388e847"}, {use = "Reledia/glow", rev = "c2ed51e" },
{use = "Reledia/hexyl", rev = "ccc0a4a"}, {use = "Reledia/hexyl", rev = "39d3d4e" },
{use = "Reledia/miller", rev = "40e0265"}, {use = "Reledia/miller", rev = "40e0265" },
{use = "Sonico98/exifaudio", rev = "855ff05"}, {use = "Sonico98/exifaudio", rev = "d794614" },
{use = "dedukun/relative-motions", rev = "44c4c1c"}, {use = "dedukun/relative-motions", rev = "df97039" },
{use = "hankertrix/augment-command", rev = "fe145ac"}, {use = "hankertrix/augment-command", rev = "4d64860" },
{use = "imsi32/yatline", rev = "e255f5c"}, {use = "imsi32/yatline", rev = "1b4a9a1" },
{use = "kirasok/torrent-preview", rev = "76970b6"}, {use = "kirasok/torrent-preview", rev = "76970b6" },
{use = "ndtoan96/ouch", rev = "db14883"}, {use = "ndtoan96/ouch", rev = "b869886" },
{use = "pirafrank/what-size", rev = "f08f7f2"}, {use = "pirafrank/what-size", rev = "f08f7f2" },
{use = "yazi-rs/plugins:chmod", rev = "d85bfd6"}, {use = "yazi-rs/plugins:chmod", rev = "ec97f88" },
{use = "yazi-rs/plugins:full-border", rev = "d85bfd6"}, {use = "yazi-rs/plugins:full-border", rev = "ec97f88" },
{use = "yazi-rs/plugins:git", rev = "d85bfd6"}, {use = "yazi-rs/plugins:git", rev = "ec97f88" },
{use = "yazi-rs/plugins:hide-preview", rev = "d85bfd6"}, {use = "yazi-rs/plugins:hide-preview", rev = "ec97f88" },
{use = "yazi-rs/plugins:max-preview", rev = "d85bfd6"}, {use = "yazi-rs/plugins:max-preview", rev = "ec97f88" },
] ]
[flavor] [flavor]

View File

@ -5,7 +5,8 @@ plugin that enhances Yazi's default commands.
This plugin is inspired by the This plugin is inspired by the
[Yazi tips page](https://yazi-rs.github.io/docs/tips), [Yazi tips page](https://yazi-rs.github.io/docs/tips),
the [bypass.yazi](https://github.com/Rolv-Apneseth/bypass.yazi) plugin the [bypass.yazi](https://github.com/Rolv-Apneseth/bypass.yazi) plugin
and the [fast-enter.yazi](https://github.com/ourongxing/fast-enter.yazi) plugin. and the [fast-enter.yazi](https://github.com/ourongxing/fast-enter.yazi)
plugin.
## Table of Contents ## Table of Contents
@ -44,15 +45,18 @@ ya pack -u
| `prompt` | `true` or `false` | `false` | Create a prompt to choose between hovered and selected items when both exist. If this option is disabled, selected items will only be operated on when the hovered item is selected, otherwise the hovered item will be the default item that is operated on. | | `prompt` | `true` or `false` | `false` | Create a prompt to choose between hovered and selected items when both exist. If this option is disabled, selected items will only be operated on when the hovered item is selected, otherwise the hovered item will be the default item that is operated on. |
| `default_item_group_for_prompt` | `hovered`, `selected` or `none` | `hovered` | The default item group to operate on when the prompt is submitted without any value. This only takes effect if `prompt` is set to `true`, otherwise this option doesn't do anything. `hovered` means the hovered item is operated on, `selected` means the selected items are operated on, and `none` just cancels the operation. | | `default_item_group_for_prompt` | `hovered`, `selected` or `none` | `hovered` | The default item group to operate on when the prompt is submitted without any value. This only takes effect if `prompt` is set to `true`, otherwise this option doesn't do anything. `hovered` means the hovered item is operated on, `selected` means the selected items are operated on, and `none` just cancels the operation. |
| `smart_enter` | `true` or `false` | `true` | Use one command to open files or enter a directory. With this option set, the `enter` and `open` commands will both call the `enter` command when a directory is hovered and call the `open` command when a regular file is hovered. | | `smart_enter` | `true` or `false` | `true` | Use one command to open files or enter a directory. With this option set, the `enter` and `open` commands will both call the `enter` command when a directory is hovered and call the `open` command when a regular file is hovered. |
| `smart_paste` | `true` or `false` | `false` | Paste items into a directory without entering it. The behaviour is exactly the same as the [smart-paste tip on Yazi's documentation](https://yazi-rs.github.io/docs/tips#smart-paste). Setting this option to `false` will use the default `paste` behaviour. You can also enable smart pasting by passing the `--smart` flag to the paste command. | | `smart_paste` | `true` or `false` | `false` | Paste items into a directory without entering it. The behaviour is exactly the same as the [smart paste tip on Yazi's documentation](https://yazi-rs.github.io/docs/tips#smart-paste). Setting this option to `false` will use the default `paste` behaviour. You can also enable this behaviour by passing the `--smart` flag to the `paste` command. |
| `smart_tab_create` | `true` or `false` | `false` | Create tabs in the directory that is being hovered instead of the current directory. The behaviour is exactly the same as the [smart tab tip on Yazi's documentation](https://yazi-rs.github.io/docs/tips#smart-tab). Setting this option to `false` will use the default `tab_create` behaviour, which means you need to pass the `--current` flag to the command. You can also enable this behaviour by passing the `--smart` flag to the `tab_create` command. |
| `smart_tab_switch` | `true` or `false` | `false` | If the tab that is being switched to does not exist yet, setting this option to `true` will create all the tabs in between the current number of open tabs, and the tab that is being switched to. The behaviour is exactly the same as [this tip](https://github.com/sxyazi/yazi/issues/918#issuecomment-2058157773). Setting this option to `false` will use the default `tab_switch` behaviour. You can also enable this behaviour by passing the `--smart` flag to the `tab_switch` command. |
| `enter_archives` | `true` or `false` | `true` | Automatically extract and enter archive files. This option requires the [7z or 7zz command](https://github.com/p7zip-project/p7zip) to be present. | | `enter_archives` | `true` or `false` | `true` | Automatically extract and enter archive files. This option requires the [7z or 7zz command](https://github.com/p7zip-project/p7zip) to be present. |
| `extract_retries` | An integer, like `1`, `3`, `10`, etc. | `3` | This option determines how many times the plugin will retry opening an encrypted or password-protected archive when a wrong password is given. This value plus 1 is the total number of times the plugin will try opening an encrypted or password-protected archive. | | `extract_retries` | An integer, like `1`, `3`, `10`, etc. | `3` | This option determines how many times the plugin will retry opening an encrypted or password-protected archive when a wrong password is given. This value plus 1 is the total number of times the plugin will try opening an encrypted or password-protected archive. |
| `extract_archives_recursively` | `true` or `false` | `true` | This option determines whether the plugin will extract all archives inside an archive file recursively. If this option is set to `false`, archive files inside an archive will not be extracted, and you will have to manually extract them yourself. |
| `must_have_hovered_item` | `true` or `false` | `true` | This option stops the plugin from executing any commands when there is no hovered item. | | `must_have_hovered_item` | `true` or `false` | `true` | This option stops the plugin from executing any commands when there is no hovered item. |
| `skip_single_subdirectory_on_enter` | `true` or `false` | `true` | Skip directories when there is only one subdirectory and no other files when entering directories. This behaviour can be turned off by passing the `--no-skip` flag to the `enter` or `open` commands. | | `skip_single_subdirectory_on_enter` | `true` or `false` | `true` | Skip directories when there is only one subdirectory and no other files when entering directories. This behaviour can be turned off by passing the `--no-skip` flag to the `enter` or `open` commands. |
| `skip_single_subdirectory_on_leave` | `true` or `false` | `true` | Skip directories when there is only one subdirectory and no other files when leaving directories. This behaviour can be turned off by passing the `--no-skip` flag to the `leave` command. | | `skip_single_subdirectory_on_leave` | `true` or `false` | `true` | Skip directories when there is only one subdirectory and no other files when leaving directories. This behaviour can be turned off by passing the `--no-skip` flag to the `leave` command. |
| `ignore_hidden_items` | `true` or `false` | `false` | Ignore hidden items when determining whether a directory only has one subdirectory and no other items. Setting this option to `false` will mean that hidden items in a directory will stop the plugin from skipping the single subdirectory. | | `ignore_hidden_items` | `true` or `false` | `false` | Ignore hidden items when determining whether a directory only has one subdirectory and no other items. Setting this option to `false` will mean that hidden items in a directory will stop the plugin from skipping the single subdirectory. |
| `wraparound_file_navigation` | `true` or `false` | `false` | Wrap around from the bottom to the top or from the top to the bottom when using the `arrow` or `parent-arrow` command to navigate. | | `wraparound_file_navigation` | `true` or `false` | `false` | Wrap around from the bottom to the top or from the top to the bottom when using the `arrow` or `parent_arrow` command to navigate. |
| `sort_directories_first` | `true` or `false` | `true` | This option tells the plugin if you have sorted directories first in your [`yazi.toml` file](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first), located at `~/.config/yazi/yazi.toml` on Linux and macOS or `C:\Users\USERNAME\AppData\Roaming\yazi\config\yazi.toml` on Windows, where `USERNAME` is your Windows username. If you have set [`sort_dir_first`](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first) to `true` in your [`yazi.toml` file](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first), set this option to `true` as well. If you have set [`sort_dir_first`](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first) to `false` instead, set this option to `false` as well. This option only affects the `parent-arrow` command with `wraparound_file_navigation` set to `true`. If the [`sort_dir_first`](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first) setting doesn't match the plugin's `sort_directories_first` setting, i.e. Yazi's `sort_dir_first` is `true` but the plugin's `sort_directories_first` is `false`, or Yazi's `sort_dir_first` is `false` but the plugin's `sort_directories_first` is `true`, the wraparound functionality of the `parent-arrow` command will not work properly and may act erratically. The default value of `sort_directories_first` follows Yazi's [`sort_dir_first`](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first) default value, which is `true`. | | `sort_directories_first` | `true` or `false` | `true` | This option tells the plugin if you have sorted directories first in your [`yazi.toml` file](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first), located at `~/.config/yazi/yazi.toml` on Linux and macOS or `C:\Users\USERNAME\AppData\Roaming\yazi\config\yazi.toml` on Windows, where `USERNAME` is your Windows username. If you have set [`sort_dir_first`](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first) to `true` in your [`yazi.toml` file](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first), set this option to `true` as well. If you have set [`sort_dir_first`](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first) to `false` instead, set this option to `false` as well. This option only affects the `parent_arrow` command with `wraparound_file_navigation` set to `true`. If the [`sort_dir_first`](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first) setting doesn't match the plugin's `sort_directories_first` setting, i.e. Yazi's `sort_dir_first` is `true` but the plugin's `sort_directories_first` is `false`, or Yazi's `sort_dir_first` is `false` but the plugin's `sort_directories_first` is `true`, the wraparound functionality of the `parent_arrow` command will not work properly and may act erratically. The default value of `sort_directories_first` follows Yazi's [`sort_dir_first`](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first) default value, which is `true`. |
If you would like to use the default configuration, which is shown below, If you would like to use the default configuration, which is shown below,
you don't need to add anything to your `~/.config/yazi/init.lua` you don't need to add anything to your `~/.config/yazi/init.lua`
@ -70,8 +74,11 @@ require("augment-command"):setup({
default_item_group_for_prompt = "hovered", default_item_group_for_prompt = "hovered",
smart_enter = true, smart_enter = true,
smart_paste = false, smart_paste = false,
smart_tab_create = false,
smart_tab_switch = false,
enter_archives = true, enter_archives = true,
extract_retries = 3, extract_retries = 3,
extract_archives_recursively = true,
must_have_hovered_item = true, must_have_hovered_item = true,
skip_single_subdirectory_on_enter = true, skip_single_subdirectory_on_enter = true,
skip_single_subdirectory_on_leave = true, skip_single_subdirectory_on_leave = true,
@ -83,9 +90,11 @@ require("augment-command"):setup({
However, if you would like to configure the plugin, you can add However, if you would like to configure the plugin, you can add
your desired configuration options to your `~/.config/yazi/init.lua` file your desired configuration options to your `~/.config/yazi/init.lua` file
on Linux and macOS, or your `C:\Users\USERNAME\AppData\Roaming\yazi\config\init.lua` on Linux and macOS, or your
`C:\Users\USERNAME\AppData\Roaming\yazi\config\init.lua`
file on Windows, where `USERNAME` is your Windows username. file on Windows, where `USERNAME` is your Windows username.
You can leave out configuration options that you would like to be left as default. You can leave out configuration options that you would
like to be left as default.
An example configuration is shown below: An example configuration is shown below:
```lua ```lua
@ -135,17 +144,16 @@ then it will operate on the selected items.
- Automatically extracts and enters archive files, - Automatically extracts and enters archive files,
with support for skipping directories with support for skipping directories
that contain only one subdirectory in the extracted archive. that contain only one subdirectory in the extracted archive.
This can be disabled by setting `enter_archives` to `false` in the configuration. This can be disabled by setting `enter_archives` to `false`
in the configuration.
This feature requires the This feature requires the
[`7z` or `7zz` command](https://github.com/p7zip-project/p7zip) [`7z` or `7zz` command](https://github.com/p7zip-project/p7zip)
to be present to extract the archives. to be present to extract the archives.
- If the archive file contains only a single file, - If the extracted archive file contains other archive
the command will automatically extract it to the files in it, those archives will be automatically
current directory instead of creating a folder extracted, keeping the directory structure
for the contents of the archive. of the archive if the archive doesn't
If this extracted file is also an archive file, only contain a single archive file.
the command will automatically
extract its contents before deleting it.
This feature requires the This feature requires the
[`file` command](https://www.darwinsys.com/file/) [`file` command](https://www.darwinsys.com/file/)
to detect the mime type of the extracted file, to detect the mime type of the extracted file,
@ -154,6 +162,9 @@ then it will operate on the selected items.
compressed tarballs much easier, as there's no need compressed tarballs much easier, as there's no need
to press a key twice to decompress and extract to press a key twice to decompress and extract
the compressed tarballs. the compressed tarballs.
You can disable this feature by setting
`extract_archives_recursively` to `false`
in the configuration.
### Enter (`enter`) ### Enter (`enter`)
@ -192,23 +203,6 @@ then it will operate on the selected items.
- The `remove` command is augmented as stated in - The `remove` command is augmented as stated in
[this section above](#what-about-the-commands-are-augmented). [this section above](#what-about-the-commands-are-augmented).
### Paste (`paste`)
- When `smart_paste` is set to `true`,
the `paste` command will paste items
into a hovered directory without entering it.
If the hovered item is not a directory,
the command pastes in the current directory instead.
Otherwise, when `smart_paste` is set to `false`,
the `paste` command will behave like the default
`paste` command.
- `--smart` flag to enable pasting in a hovered directory
without entering the directory.
This flag will cause the `paste` command to paste items
into a hovered directory even when `smart_paste` is set to `false`.
This allows you to set a key to use smart paste
instead of using smart paste for every paste command.
### Shell (`shell`) ### Shell (`shell`)
- This command runs the shell command given with the augment stated in - This command runs the shell command given with the augment stated in
@ -257,7 +251,7 @@ then it will operate on the selected items.
desc = "Open the pager" desc = "Open the pager"
``` ```
- `--exit-if-directory` flag to stop the shell command given - `--exit-if-dir` flag to stop the shell command given
from executing if the item group consists only of directories. from executing if the item group consists only of directories.
For example, if the item group is the hovered item, then For example, if the item group is the hovered item, then
the shell command will not be executed if the hovered item the shell command will not be executed if the hovered item
@ -273,10 +267,84 @@ then it will operate on the selected items.
[[manager.prepend_keymap]] [[manager.prepend_keymap]]
on = [ "i" ] on = [ "i" ]
run = '''plugin augment-command --args="shell '$PAGER $@' --block --confirm --exit-if-directory"''' run = '''plugin augment-command --args="shell '$PAGER $@' --block --confirm --exit-if-dir"'''
desc = "Open the pager" desc = "Open the pager"
``` ```
### Paste (`paste`)
- When `smart_paste` is set to `true`,
the `paste` command will paste items
into the hovered directory without entering it.
If the hovered item is not a directory,
the command pastes in the current directory instead.
Otherwise, when `smart_paste` is set to `false`,
the `paste` command will behave like the default
`paste` command.
- `--smart` flag to enable pasting in the hovered directory
without entering the directory.
This flag will cause the `paste` command to paste items
into the hovered directory even when `smart_paste` is set to `false`.
This allows you to set a key to use this behaviour
with the `paste` command instead of using it for
every `paste` command.
### Tab create (`tab_create`)
- When `smart_tab_create` is set to `true`,
the `tab_create` command will create a tab
in the hovered directory instead of the
current directory like the default key binds.
If the hovered item is not a directory,
then the command just creates a new tab in
the current directory instead.
Otherwise, when `smart_tab_create` is set to
`false`, the `tab_create` command will behave
like the default key bind to create a tab,
which is `tab_create --current`.
- `--smart` flag to enable creating a tab
in the hovered directory.
This flag will cause the `tab_create` command
to create a tab in the hovered directory even
when `smart_tab_create` is set to `false`.
This allows you to set a specific key to use this
behaviour with the `tab_create` command instead
of using it for every `tab_create` command.
### Tab switch (`tab_switch`)
- When `smart_tab_switch` is set to `true`,
the `tab_switch` command will ensure that
the tab that is being switched to exist.
It does this by automatically creating
all the tabs required for the desired
tab to exist.
For example, if you are switching to
tab 5 (`tab_switch 4`), and you only have
two tabs currently open (tabs 1 and 2),
the plugin will create tabs 3, 4 and 5
and then switch to tab 5.
The tabs are created using the current
directory. The `smart_tab_create`
configuration option does not affect
the behaviour of this command.
Otherwise, when `smart_tab_switch` is
set to `false`, the `tab_switch` command
will behave like the default `tab_switch`
command, and simply switch to the tab
if it exists, and do nothing if it doesn't
exist.
- `--smart` flag to automatically create
the required tabs for the desired tab
to exist.
This flag will cause the `tab_switch`
command to automatically create the
required tabs even when `smart_tab_switch`
is set to `false`.
This allows you to set a specific key to use this
behaviour with the `tab_switch` command instead
of using it for every `tab_switch` command.
### Arrow (`arrow`) ### Arrow (`arrow`)
- When `wraparound_file_navigation` is set to `true`, - When `wraparound_file_navigation` is set to `true`,
@ -286,7 +354,7 @@ then it will operate on the selected items.
## New commands ## New commands
### Parent-arrow (`parent-arrow`) ### Parent arrow (`parent_arrow`)
- This command behaves like the `arrow` command, - This command behaves like the `arrow` command,
but in the parent directory. but in the parent directory.
@ -304,8 +372,8 @@ then it will operate on the selected items.
i.e. if you have set the i.e. if you have set the
[`sort_dir_first`](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first) [`sort_dir_first`](https://yazi-rs.github.io/docs/configuration/yazi#manager.sort_dir_first)
to `true` in your `~/.config/yazi/yazi.toml` file on Linux and macOS, to `true` in your `~/.config/yazi/yazi.toml` file on Linux and macOS,
or your `C:\Users\USERNAME\AppData\Roaming\yazi\config\yazi.toml` on Windows, or your `C:\Users\USERNAME\AppData\Roaming\yazi\config\yazi.toml`
like so: on Windows, like so:
```toml ```toml
# ~/.config/yazi/yazi.toml on Linux and macOS # ~/.config/yazi/yazi.toml on Linux and macOS
@ -385,13 +453,15 @@ then it will operate on the selected items.
### Editor (`editor`) ### Editor (`editor`)
- The `editor` command opens the default editor set by the `$EDITOR` environment variable. - The `editor` command opens the default editor set by the
`$EDITOR` environment variable.
- The command is also augmented as stated in - The command is also augmented as stated in
[this section above](#what-about-the-commands-are-augmented). [this section above](#what-about-the-commands-are-augmented).
### Pager (`pager`) ### Pager (`pager`)
- The `pager` command opens the default pager set by the `$PAGER` environment variable. - The `pager` command opens the default pager set by the
`$PAGER` environment variable.
- The command is also augmented as stated in - The command is also augmented as stated in
[this section above](#what-about-the-commands-are-augmented). [this section above](#what-about-the-commands-are-augmented).
- The `pager` command will also skip opening directories, as the pager - The `pager` command will also skip opening directories, as the pager
@ -400,7 +470,7 @@ then it will operate on the selected items.
is a directory, or if **all** the selected items are directories. is a directory, or if **all** the selected items are directories.
This makes the pager command less annoying as it will not This makes the pager command less annoying as it will not
try to open a directory and then immediately fail with an error, try to open a directory and then immediately fail with an error,
causing a flash and Yazi to send a notification. causing a flash and causing Yazi to send a notification.
## Usage ## Usage
@ -431,7 +501,8 @@ run = "plugin augment-command --args='enter'"
desc = "Enter a directory and skip directories with only a single subdirectory" desc = "Enter a directory and skip directories with only a single subdirectory"
``` ```
All the default arguments, flags and options provided by Yazi are also supported, for example: All the default arguments, flags and options provided by Yazi
are also supported, for example:
```toml ```toml
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
@ -470,7 +541,7 @@ For a full configuration example,
you can take a look at you can take a look at
[my `keymap.toml` file](https://github.com/hankertrix/Dotfiles/blob/master/.config/yazi/keymap.toml). [my `keymap.toml` file](https://github.com/hankertrix/Dotfiles/blob/master/.config/yazi/keymap.toml).
## Licence ## [Licence](LICENSE)
This plugin is licenced under the GNU AGPL v3 licence. This plugin is licenced under the [GNU AGPL v3 licence](LICENSE).
You can view the full licence in the `LICENSE` file. You can view the full licence in the [`LICENSE`](LICENSE) file.

File diff suppressed because it is too large Load Diff

View File

@ -40,8 +40,8 @@ function Mediainfo(...)
return child return child
end end
function M:peek() function M:peek(job)
local cache = ya.file_cache(self) local cache = ya.file_cache(job)
if not cache then if not cache then
return return
end end
@ -50,26 +50,26 @@ function M:peek()
local cache_dir = GetPath(tostring(cache)) local cache_dir = GetPath(tostring(cache))
-- Try mediainfo, otherwise use exiftool -- Try mediainfo, otherwise use exiftool
local status, child = pcall(Mediainfo, self.file.url, cache_dir) local status, child = pcall(Mediainfo, job.file.url, cache_dir)
if not status or child == nil then if not status or child == nil then
status, child = pcall(Exiftool, self.file.url) status, child = pcall(Exiftool, job.file.url)
if not status or child == nil then if not status or child == nil then
local error = ui.Line { ui.Span("Make sure exiftool is installed and in your PATH") } local error = ui.Line { ui.Span("Make sure exiftool is installed and in your PATH") }
-- TODO)) Remove legacy method when v0.4 gets released -- TODO)) Remove legacy method when v0.4 gets released
local function display_error_legacy() local function display_error_legacy()
local p = ui.Paragraph(self.area, { error }):wrap(ui.Paragraph.WRAP) local p = ui.Paragraph(job.area, { error }):wrap(ui.Paragraph.WRAP)
ya.preview_widgets(self, { p }) ya.preview_widgets(job, { p })
end end
local function display_error() local function display_error()
local p = ui.Text(error):area(self.area):wrap(ui.Text.WRAP) local p = ui.Text(error):area(job.area):wrap(ui.Text.WRAP)
ya.preview_widgets(self, { p }) ya.preview_widgets(job, { p })
end end
if pcall(display_error) then else pcall(display_error_legacy) end if pcall(display_error) then else pcall(display_error_legacy) end
return return
end end
end end
local limit = self.area.h local limit = job.area.h
local i, metadata = 0, {} local i, metadata = 0, {}
repeat repeat
local next, event = child:read_line() local next, event = child:read_line()
@ -80,7 +80,7 @@ function M:peek()
end end
i = i + 1 i = i + 1
if i > self.skip then if i > job.skip then
local m_title, m_tag = Prettify(next) local m_title, m_tag = Prettify(next)
if m_title ~= "" and m_tag ~= "" then if m_title ~= "" and m_tag ~= "" then
local ti = ui.Span(m_title):bold() local ti = ui.Span(m_title):bold()
@ -89,30 +89,30 @@ function M:peek()
table.insert(metadata, ui.Line{}) table.insert(metadata, ui.Line{})
end end
end end
until i >= self.skip + limit until i >= job.skip + limit
-- TODO)) Remove legacy method when v0.4 gets released -- TODO)) Remove legacy method when v0.4 gets released
local function display_metadata_legacy() local function display_metadata_legacy()
local p = ui.Paragraph(self.area, metadata):wrap(ui.Paragraph.WRAP) local p = ui.Paragraph(job.area, metadata):wrap(ui.Paragraph.WRAP)
ya.preview_widgets(self, { p }) ya.preview_widgets(job, { p })
end end
local function display_metadata() local function display_metadata()
local p = ui.Text(metadata):area(self.area):wrap(ui.Text.WRAP) local p = ui.Text(metadata):area(job.area):wrap(ui.Text.WRAP)
ya.preview_widgets(self, { p }) ya.preview_widgets(job, { p })
end end
if pcall(display_metadata) then else pcall(display_metadata_legacy) end if pcall(display_metadata) then else pcall(display_metadata_legacy) end
local cover_width = self.area.w / 2 - 5 local cover_width = job.area.w / 2 - 5
local cover_height = (self.area.h / 4) + 3 local cover_height = (job.area.h / 4) + 3
local bottom_right = ui.Rect { local bottom_right = ui.Rect {
x = self.area.right - cover_width, x = job.area.right - cover_width,
y = self.area.bottom - cover_height, y = job.area.bottom - cover_height,
w = cover_width, w = cover_width,
h = cover_height, h = cover_height,
} }
if self:preload() == 1 then if self:preload(job) == 1 then
ya.image_show(cache, bottom_right) ya.image_show(cache, bottom_right)
end end
end end
@ -172,18 +172,18 @@ function Prettify(metadata)
end end
function M:seek(units) function M:seek(job)
local h = cx.active.current.hovered local h = cx.active.current.hovered
if h and h.url == self.file.url then if h and h.url == job.file.url then
ya.manager_emit("peek", { ya.manager_emit("peek", {
tostring(math.max(0, cx.active.preview.skip + units)), tostring(math.max(0, cx.active.preview.skip + job.units)),
only_if = tostring(self.file.url), only_if = tostring(job.file.url),
}) })
end end
end end
function M:preload() function M:preload(job)
local cache = ya.file_cache(self) local cache = ya.file_cache(job)
if not cache or fs.cha(cache) then if not cache or fs.cha(cache) then
return 1 return 1
end end
@ -216,7 +216,7 @@ Channels: %Channel(s)%"\
fs.write(Url(cache_dir.."mediainfo.txt"), mediainfo_template) fs.write(Url(cache_dir.."mediainfo.txt"), mediainfo_template)
local output = Command("exiftool") local output = Command("exiftool")
:args({ "-b", "-CoverArt", "-Picture", tostring(self.file.url) }) :args({ "-b", "-CoverArt", "-Picture", tostring(job.file.url) })
:stdout(Command.PIPED) :stdout(Command.PIPED)
:stderr(Command.PIPED) :stderr(Command.PIPED)
:output() :output()

View File

@ -2,20 +2,20 @@ local M = {}
function M:peek() function M:peek()
local child = Command("glow") local child = Command("glow")
:args({ :args({
"--style", "--style",
"dark", "dark",
"--width", "--width",
tostring(self.area.w), tostring(self.area.w),
tostring(self.file.url), tostring(self.file.url),
}) })
:env("CLICOLOR_FORCE", "1") :env("CLICOLOR_FORCE", "1")
:stdout(Command.PIPED) :stdout(Command.PIPED)
:stderr(Command.PIPED) :stderr(Command.PIPED)
:spawn() :spawn()
if not child then if not child then
return self:fallback_to_builtin() return require("code").peek(self)
end end
local limit = self.area.h local limit = self.area.h
@ -23,7 +23,7 @@ function M:peek()
repeat repeat
local next, event = child:read_line() local next, event = child:read_line()
if event == 1 then if event == 1 then
return self:fallback_to_builtin() return require("code").peek(self)
elseif event ~= 0 then elseif event ~= 0 then
break break
end end
@ -36,36 +36,15 @@ function M:peek()
child:start_kill() child:start_kill()
if self.skip > 0 and i < self.skip + limit then if self.skip > 0 and i < self.skip + limit then
ya.manager_emit( ya.manager_emit("peek", { math.max(0, i - limit), only_if = self.file.url, upper_bound = true })
"peek",
{ tostring(math.max(0, i - limit)), only_if = tostring(self.file.url), upper_bound = "" }
)
else else
lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size)) lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size))
ya.preview_widgets(self, { ui.Paragraph.parse(self.area, lines) }) ya.preview_widgets(self, { ui.Text.parse(lines):area(self.area) })
end end
end end
function M:seek(units) function M:seek(units)
local h = cx.active.current.hovered require("code").seek(self, units)
if h and h.url == self.file.url then
local step = math.floor(units * self.area.h / 10)
ya.manager_emit("peek", {
tostring(math.max(0, cx.active.preview.skip + step)),
only_if = tostring(self.file.url),
})
end
end
function M:fallback_to_builtin()
local err, bound = ya.preview_code(self)
if bound then
ya.manager_emit("peek", { bound, only_if = self.file.url, upper_bound = true })
elseif err and not err:find("cancelled", 1, true) then
ya.preview_widgets(self, {
ui.Paragraph(self.area, { ui.Line(err):reverse() }),
})
end
end end
return M return M

View File

@ -1,12 +1,12 @@
local M = {} local M = {}
function M:peek() function M:peek(job)
local child local child
local l = self.file.cha.len local l = self.file.cha.len
if l == 0 then if l == 0 then
child = Command("hexyl") child = Command("hexyl")
:args({ :args({
tostring(self.file.url), tostring(job.file.url),
}) })
:stdout(Command.PIPED) :stdout(Command.PIPED)
:stderr(Command.PIPED) :stderr(Command.PIPED)
@ -17,15 +17,15 @@ function M:peek()
"--border", "--border",
"none", "none",
"--terminal-width", "--terminal-width",
tostring(self.area.w), tostring(job.area.w),
tostring(self.file.url), tostring(job.file.url),
}) })
:stdout(Command.PIPED) :stdout(Command.PIPED)
:stderr(Command.PIPED) :stderr(Command.PIPED)
:spawn() :spawn()
end end
local limit = self.area.h local limit = job.area.h
local i, lines = 0, "" local i, lines = 0, ""
repeat repeat
local next, event = child:read_line() local next, event = child:read_line()
@ -36,29 +36,22 @@ function M:peek()
end end
i = i + 1 i = i + 1
if i > self.skip then if i > job.skip then
lines = lines .. next lines = lines .. next
end end
until i >= self.skip + limit until i >= job.skip + limit
child:start_kill() child:start_kill()
if self.skip > 0 and i < self.skip + limit then if job.skip > 0 and i < job.skip + limit then
ya.manager_emit("peek", { math.max(0, i - limit), only_if = self.file.url, upper_bound = true }) ya.manager_emit("peek", { math.max(0, i - limit), only_if = job.file.url, upper_bound = true })
else else
lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size)) lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size))
ya.preview_widgets(self, { ui.Text.parse(lines):area(self.area) }) ya.preview_widgets(job, { ui.Text.parse(lines):area(job.area) })
end end
end end
function M:seek(units) function M:seek(units)
local h = cx.active.current.hovered require("code").seek(job, units)
if h and h.url == self.file.url then
local step = math.floor(units * self.area.h / 10)
ya.manager_emit("peek", {
tostring(math.max(0, cx.active.preview.skip + step)),
only_if = tostring(self.file.url),
})
end
end end
return M return M

View File

@ -1,6 +1,6 @@
local M = {} local M = {}
function M:peek() function M:peek(job)
local child = Command("nbpreview") local child = Command("nbpreview")
:args({ :args({
-- DO NOT CHANGE -- -- DO NOT CHANGE --
@ -17,43 +17,42 @@ function M:peek()
-- SPECIAL CUSTOMIZATIONS -- -- SPECIAL CUSTOMIZATIONS --
"--color-system=standard", "--color-system=standard",
"--theme=ansi_dark", "--theme=ansi_dark",
tostring(self.file.url), tostring(job.file.url),
}) })
:stdout(Command.PIPED) :stdout(Command.PIPED)
:stderr(Command.PIPED) :stderr(Command.PIPED)
:spawn() :spawn()
if not child then if not child then
return require("code").peek(self) return require("code"):peek(job)
end end
local limit = self.area.h local limit = job.area.h
local i, lines = 0, "" local i, lines = 0, ""
repeat repeat
local next, event = child:read_line() local next, event = child:read_line()
if event == 1 then if event == 1 then
return require("code").peek(self) return require("code"):peek(job)
elseif event ~= 0 then elseif event ~= 0 then
break break
end end
i = i + 1 i = i + 1
if i > self.skip then if i > job.skip then
lines = lines .. next lines = lines .. next
end end
until i >= self.skip + limit until i >= job.skip + limit
child:start_kill() child:start_kill()
if self.skip > 0 and i < self.skip + limit then if job.skip > 0 and i < job.skip + limit then
ya.manager_emit("peek", { math.max(0, i - limit), only_if = self.file.url, upper_bound = true }) ya.manager_emit("peek", { math.max(0, i - limit), only_if = job.file.url, upper_bound = true })
else else
lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size)) lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size))
ya.preview_widgets(self, { ui.Text.parse(lines):area(self.area) }) ya.preview_widgets(job, { ui.Text.parse(lines):area(job.area) })
end end
end end
function M:seek(units) function M:seek(job)
require("code").seek(self, units) require("code"):seek(job)
end end
return M return M

View File

@ -1,13 +1,13 @@
local M = {} local M = {}
function M:peek() function M:peek(job)
local child = Command("ouch") local child = Command("ouch")
:args({ "l", "-t", "-y", tostring(self.file.url) }) :args({ "l", "-t", "-y", tostring(job.file.url) })
:stdout(Command.PIPED) :stdout(Command.PIPED)
:stderr(Command.PIPED) :stderr(Command.PIPED)
:spawn() :spawn()
local limit = self.area.h local limit = job.area.h
local file_name = string.match(tostring(self.file.url), ".*[/\\](.*)") local file_name = string.match(tostring(job.file.url), ".*[/\\](.*)")
local lines = string.format("📁 \x1b[2m%s\x1b[0m\n", file_name) local lines = string.format("📁 \x1b[2m%s\x1b[0m\n", file_name)
local num_lines = 1 local num_lines = 1
local num_skip = 0 local num_skip = 0
@ -20,7 +20,7 @@ function M:peek()
end end
if line:find('Archive', 1, true) ~= 1 and line:find('[INFO]', 1, true) ~= 1 then if line:find('Archive', 1, true) ~= 1 and line:find('[INFO]', 1, true) ~= 1 then
if num_skip >= self.skip then if num_skip >= job.skip then
lines = lines .. line lines = lines .. line
num_lines = num_lines + 1 num_lines = num_lines + 1
else else
@ -30,23 +30,23 @@ function M:peek()
until num_lines >= limit until num_lines >= limit
child:start_kill() child:start_kill()
if self.skip > 0 and num_lines < limit then if job.skip > 0 and num_lines < limit then
ya.manager_emit( ya.manager_emit(
"peek", "peek",
{ tostring(math.max(0, self.skip - (limit - num_lines))), only_if = tostring(self.file.url), upper_bound = "" } { tostring(math.max(0, job.skip - (limit - num_lines))), only_if = tostring(job.file.url), upper_bound = "" }
) )
else else
ya.preview_widgets(self, { ui.Text(lines):area(self.area) }) ya.preview_widgets(job, { ui.Text(lines):area(job.area) })
end end
end end
function M:seek(units) function M:seek(job)
local h = cx.active.current.hovered local h = cx.active.current.hovered
if h and h.url == self.file.url then if h and h.url == job.file.url then
local step = math.floor(units * self.area.h / 10) local step = math.floor(job.units * job.area.h / 10)
ya.manager_emit("peek", { ya.manager_emit("peek", {
math.max(0, cx.active.preview.skip + step), math.max(0, cx.active.preview.skip + step),
only_if = tostring(self.file.url), only_if = tostring(job.file.url),
}) })
end end
end end
@ -110,8 +110,8 @@ local function invoke_compress_command(paths, name)
end end
end end
function M:entry(args) function M:entry(job)
local default_fmt = args[1] local default_fmt = job.args[1]
ya.manager_emit("escape", { visual = true }) ya.manager_emit("escape", { visual = true })

View File

@ -51,7 +51,7 @@ local render_motion_setup = ya.sync(function(_)
end end
-- TODO: check why it doesn't work line this -- TODO: check why it doesn't work line this
-- Status:children_add(Status.motion, 100, Status.RIGHT) -- Status:children_add(function() return ui.Span("") end, 1000, Status.RIGHT)
end) end)
local render_motion = ya.sync(function(_, motion_num, motion_cmd) local render_motion = ya.sync(function(_, motion_num, motion_cmd)
@ -66,15 +66,15 @@ local render_motion = ya.sync(function(_, motion_num, motion_cmd)
local motion_span local motion_span
if not motion_cmd then if not motion_cmd then
motion_span = ui.Span(string.format(" %3d ", motion_num)):style(style) motion_span = ui.Span(string.format(" %3d ", motion_num))
else else
motion_span = ui.Span(string.format(" %3d%s ", motion_num, motion_cmd)):style(style) motion_span = ui.Span(string.format(" %3d%s ", motion_num, motion_cmd))
end end
return ui.Line { return ui.Line {
ui.Span(THEME.status.separator_open):fg(style.bg), ui.Span(THEME.status.separator_open):fg(style.main.bg),
motion_span, motion_span:style(style.main),
ui.Span(THEME.status.separator_close):fg(style.bg), ui.Span(THEME.status.separator_close):fg(style.main.bg),
ui.Span(" "), ui.Span(" "),
} }
end end
@ -210,9 +210,10 @@ local get_active_tab = ya.sync(function(_) return cx.tabs.idx end)
----------------------------------------------- -----------------------------------------------
return { return {
entry = function(_, args) entry = function(_, job)
local initial_value local initial_value
local args = job.args
-- this is checking if the argument is a valid number -- this is checking if the argument is a valid number
if #args > 0 then if #args > 0 then
initial_value = tostring(tonumber(args[1])) initial_value = tostring(tonumber(args[1]))

View File

@ -228,7 +228,7 @@ end
function Yatline.string.get:hovered_size() function Yatline.string.get:hovered_size()
local hovered = cx.active.current.hovered local hovered = cx.active.current.hovered
if hovered then if hovered then
return ya.readable_size(hovered:size() or hovered.cha.length) return ya.readable_size(hovered:size() or hovered.cha.len)
else else
return "" return ""
end end
@ -522,7 +522,7 @@ function Yatline.coloreds.get:permissions()
local hovered = cx.active.current.hovered local hovered = cx.active.current.hovered
if hovered then if hovered then
local perm = hovered.cha:permissions() local perm = hovered.cha:perm()
if perm then if perm then
local coloreds = {} local coloreds = {}
@ -826,9 +826,9 @@ end
local function config_paragraph(area, line) local function config_paragraph(area, line)
local line_array = { line } or {} local line_array = { line } or {}
if show_background then if show_background then
return ui.Paragraph(area, line_array):style(style_c) return ui.Text(line_array):area(area):style(style_c)
else else
return ui.Paragraph(area, line_array) return ui.Text(line_array):area(area)
end end
end end
@ -976,7 +976,7 @@ return {
return { config_paragraph(self._area) } return { config_paragraph(self._area) }
end end
local gauge = ui.Gauge(self._area) local gauge = ui.Gauge():area(self._area)
if progress.fail == 0 then if progress.fail == 0 then
gauge = gauge:gauge_style(THEME.status.progress_normal) gauge = gauge:gauge_style(THEME.status.progress_normal)
else else
@ -998,13 +998,13 @@ return {
if display_header_line then if display_header_line then
if show_line(header_line) then if show_line(header_line) then
Header.render = function(self) Header.redraw = function(self)
local left_line = config_line(header_line.left, Side.LEFT) local left_line = config_line(header_line.left, Side.LEFT)
local right_line = config_line(header_line.right, Side.RIGHT) local right_line = config_line(header_line.right, Side.RIGHT)
return { return {
config_paragraph(self._area, left_line), config_paragraph(self._area, left_line),
ui.Paragraph(self._area, { right_line }):align(ui.Paragraph.RIGHT) ui.Text(right_line):area(self._area):align(ui.Text.RIGHT)
} }
end end
@ -1012,19 +1012,20 @@ return {
Header.children_remove = function() return {} end Header.children_remove = function() return {} end
end end
else else
Header.render = function() return {} end Header.redraw = function() return {} end
end end
if display_status_line then if display_status_line then
if show_line(status_line) then if show_line(status_line) then
Status.render = function(self) Status.redraw = function(self)
local left_line = config_line(status_line.left, Side.LEFT) local left_line = config_line(status_line.left, Side.LEFT)
local right_line = config_line(status_line.right, Side.RIGHT) local right_line = config_line(status_line.right, Side.RIGHT)
local right_width = right_line:width()
return { return {
config_paragraph(self._area, left_line), config_paragraph(self._area, left_line),
ui.Paragraph(self._area, { right_line }):align(ui.Paragraph.RIGHT), ui.Text(right_line):area(self._area):align(ui.Text.RIGHT),
table.unpack(Progress:render(self._area, right_line:width())), table.unpack(Progress:new(self._area, right_width):redraw()),
} }
end end
@ -1032,7 +1033,7 @@ return {
Status.children_remove = function() return {} end Status.children_remove = function() return {} end
end end
else else
Status.render = function() return {} end Status.redraw = function() return {} end
end end
Root.layout = function(self) Root.layout = function(self)

View File

@ -26,7 +26,7 @@ ueberzug_offset = [ 0, 0, 0, 0 ]
[opener] [opener]
edit = [ edit = [
{run = '${EDITOR:=vi} "$@"', desc = "$EDITOR", block = true, for = "unix"}, {run = '${EDITOR:=vim} "$@"', desc = "$EDITOR", block = true, for = "unix"},
{run = 'code "%*"', orphan = true, desc = "code", for = "windows"}, {run = 'code "%*"', orphan = true, desc = "code", for = "windows"},
{run = 'code -w "%*"', block = true, desc = "code (block)", for = "windows"}, {run = 'code -w "%*"', block = true, desc = "code (block)", for = "windows"},
] ]

32
local/bin/typst-port Normal file
View File

@ -0,0 +1,32 @@
#!/usr/bin/bash
copy_to_clipboard() {
if [[ "$XDG_SESSION_TYPE" == "wayland" ]]; then
# Wayland
wl-copy
else
# X11
xclip -selection clipboard
fi
}
get_tinymist_ports() {
local line_num=${1:-0} # Default to 0 if no argument provided
# Get all lines and store in array
mapfile -t lines < <(ss -tunlp | grep tinymist | awk '{
split($5, addr, ":")
print addr[1] ":" addr[2]
}')
# Check if requested line exists
if [ "$line_num" -lt 0 ] || [ "$line_num" -ge "${#lines[@]}" ]; then
echo "Error: Line $line_num does not exist"
exit 1
fi
# Output the requested line
echo "${lines[$line_num]}" | tee >(copy_to_clipboard)
}
get_tinymist_ports "$1"