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

View File

@ -4,7 +4,7 @@
# Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-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
# 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",
#* "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.
proc_reversed = False

View File

@ -46,7 +46,6 @@ alias \
night="redshift -PO 4500" \
py="python" \
sv="rsv" \
typst-port="ss -tunlp | rg tinymist" \
v="$EDITOR" \
weather="curl wttr.in/" \
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 -g focus-events on
set -g allow-passthrough on
set -g visual-activity off
set -g mouse on
# Disable setatus bar
@ -49,8 +52,6 @@ set -g @plugin "tmux-plugins/tmux-yank"
set -g @plugin "tmux-plugins/tmux-resurrect"
set -g @plugin "rose-pine/tmux"
set -g allow-passthrough on
set -ga update-environment TERM
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", "i" ], run = ''' shell 'ripdrag -tk "$@"' --confirm ''', desc = "Drag and drop individual"},
# vidir
{on = [ "B" ], run = ''' shell 'vidir "$@"' --confirm ''', desc = "Bulk rename"},
{on = "B", run = 'vidir "$1"', desc = "Bulk rename"},
# Max Preview
{on = "T", run = "plugin --sync max-preview", desc = "Maximize or restore preview"},
# Hide Preview

View File

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

View File

@ -5,7 +5,8 @@ plugin that enhances Yazi's default commands.
This plugin is inspired by the
[Yazi tips page](https://yazi-rs.github.io/docs/tips),
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
@ -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. |
| `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_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. |
| `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. |
| `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. |
| `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. |
| `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`. |
| `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`. |
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`
@ -70,8 +74,11 @@ require("augment-command"):setup({
default_item_group_for_prompt = "hovered",
smart_enter = true,
smart_paste = false,
smart_tab_create = false,
smart_tab_switch = false,
enter_archives = true,
extract_retries = 3,
extract_archives_recursively = true,
must_have_hovered_item = true,
skip_single_subdirectory_on_enter = 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
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.
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:
```lua
@ -135,17 +144,16 @@ then it will operate on the selected items.
- Automatically extracts and enters archive files,
with support for skipping directories
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
[`7z` or `7zz` command](https://github.com/p7zip-project/p7zip)
to be present to extract the archives.
- If the archive file contains only a single file,
the command will automatically extract it to the
current directory instead of creating a folder
for the contents of the archive.
If this extracted file is also an archive file,
the command will automatically
extract its contents before deleting it.
- If the extracted archive file contains other archive
files in it, those archives will be automatically
extracted, keeping the directory structure
of the archive if the archive doesn't
only contain a single archive file.
This feature requires the
[`file` command](https://www.darwinsys.com/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
to press a key twice to decompress and extract
the compressed tarballs.
You can disable this feature by setting
`extract_archives_recursively` to `false`
in the configuration.
### Enter (`enter`)
@ -192,23 +203,6 @@ then it will operate on the selected items.
- The `remove` command is augmented as stated in
[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`)
- 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"
```
- `--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.
For example, if the item group is the hovered item, then
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]]
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"
```
### 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`)
- When `wraparound_file_navigation` is set to `true`,
@ -286,7 +354,7 @@ then it will operate on the selected items.
## New commands
### Parent-arrow (`parent-arrow`)
### Parent arrow (`parent_arrow`)
- This command behaves like the `arrow` command,
but in the parent directory.
@ -304,8 +372,8 @@ then it will operate on the selected items.
i.e. if you have set the
[`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,
or your `C:\Users\USERNAME\AppData\Roaming\yazi\config\yazi.toml` on Windows,
like so:
or your `C:\Users\USERNAME\AppData\Roaming\yazi\config\yazi.toml`
on Windows, like so:
```toml
# ~/.config/yazi/yazi.toml on Linux and macOS
@ -385,13 +453,15 @@ then it will operate on the selected items.
### 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
[this section above](#what-about-the-commands-are-augmented).
### 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
[this section above](#what-about-the-commands-are-augmented).
- 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.
This makes the pager command less annoying as it will not
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
@ -431,7 +501,8 @@ run = "plugin augment-command --args='enter'"
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
# ~/.config/yazi/keymap.toml on Linux and macOS
@ -470,7 +541,7 @@ For a full configuration example,
you can take a look at
[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.
You can view the full licence in the `LICENSE` file.
This plugin is licenced under the [GNU AGPL v3 licence](LICENSE).
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
end
function M:peek()
local cache = ya.file_cache(self)
function M:peek(job)
local cache = ya.file_cache(job)
if not cache then
return
end
@ -50,26 +50,26 @@ function M:peek()
local cache_dir = GetPath(tostring(cache))
-- 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
status, child = pcall(Exiftool, self.file.url)
status, child = pcall(Exiftool, job.file.url)
if not status or child == nil then
local error = ui.Line { ui.Span("Make sure exiftool is installed and in your PATH") }
-- TODO)) Remove legacy method when v0.4 gets released
local function display_error_legacy()
local p = ui.Paragraph(self.area, { error }):wrap(ui.Paragraph.WRAP)
ya.preview_widgets(self, { p })
local p = ui.Paragraph(job.area, { error }):wrap(ui.Paragraph.WRAP)
ya.preview_widgets(job, { p })
end
local function display_error()
local p = ui.Text(error):area(self.area):wrap(ui.Text.WRAP)
ya.preview_widgets(self, { p })
local p = ui.Text(error):area(job.area):wrap(ui.Text.WRAP)
ya.preview_widgets(job, { p })
end
if pcall(display_error) then else pcall(display_error_legacy) end
return
end
end
local limit = self.area.h
local limit = job.area.h
local i, metadata = 0, {}
repeat
local next, event = child:read_line()
@ -80,7 +80,7 @@ function M:peek()
end
i = i + 1
if i > self.skip then
if i > job.skip then
local m_title, m_tag = Prettify(next)
if m_title ~= "" and m_tag ~= "" then
local ti = ui.Span(m_title):bold()
@ -89,30 +89,30 @@ function M:peek()
table.insert(metadata, ui.Line{})
end
end
until i >= self.skip + limit
until i >= job.skip + limit
-- TODO)) Remove legacy method when v0.4 gets released
local function display_metadata_legacy()
local p = ui.Paragraph(self.area, metadata):wrap(ui.Paragraph.WRAP)
ya.preview_widgets(self, { p })
local p = ui.Paragraph(job.area, metadata):wrap(ui.Paragraph.WRAP)
ya.preview_widgets(job, { p })
end
local function display_metadata()
local p = ui.Text(metadata):area(self.area):wrap(ui.Text.WRAP)
ya.preview_widgets(self, { p })
local p = ui.Text(metadata):area(job.area):wrap(ui.Text.WRAP)
ya.preview_widgets(job, { p })
end
if pcall(display_metadata) then else pcall(display_metadata_legacy) end
local cover_width = self.area.w / 2 - 5
local cover_height = (self.area.h / 4) + 3
local cover_width = job.area.w / 2 - 5
local cover_height = (job.area.h / 4) + 3
local bottom_right = ui.Rect {
x = self.area.right - cover_width,
y = self.area.bottom - cover_height,
x = job.area.right - cover_width,
y = job.area.bottom - cover_height,
w = cover_width,
h = cover_height,
}
if self:preload() == 1 then
if self:preload(job) == 1 then
ya.image_show(cache, bottom_right)
end
end
@ -172,18 +172,18 @@ function Prettify(metadata)
end
function M:seek(units)
function M:seek(job)
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", {
tostring(math.max(0, cx.active.preview.skip + units)),
only_if = tostring(self.file.url),
tostring(math.max(0, cx.active.preview.skip + job.units)),
only_if = tostring(job.file.url),
})
end
end
function M:preload()
local cache = ya.file_cache(self)
function M:preload(job)
local cache = ya.file_cache(job)
if not cache or fs.cha(cache) then
return 1
end
@ -216,7 +216,7 @@ Channels: %Channel(s)%"\
fs.write(Url(cache_dir.."mediainfo.txt"), mediainfo_template)
local output = Command("exiftool")
:args({ "-b", "-CoverArt", "-Picture", tostring(self.file.url) })
:args({ "-b", "-CoverArt", "-Picture", tostring(job.file.url) })
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:output()

View File

@ -2,20 +2,20 @@ local M = {}
function M:peek()
local child = Command("glow")
:args({
"--style",
"dark",
"--width",
tostring(self.area.w),
tostring(self.file.url),
})
:env("CLICOLOR_FORCE", "1")
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:spawn()
:args({
"--style",
"dark",
"--width",
tostring(self.area.w),
tostring(self.file.url),
})
:env("CLICOLOR_FORCE", "1")
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:spawn()
if not child then
return self:fallback_to_builtin()
return require("code").peek(self)
end
local limit = self.area.h
@ -23,7 +23,7 @@ function M:peek()
repeat
local next, event = child:read_line()
if event == 1 then
return self:fallback_to_builtin()
return require("code").peek(self)
elseif event ~= 0 then
break
end
@ -36,36 +36,15 @@ function M:peek()
child:start_kill()
if self.skip > 0 and i < self.skip + limit then
ya.manager_emit(
"peek",
{ tostring(math.max(0, i - limit)), only_if = tostring(self.file.url), upper_bound = "" }
)
ya.manager_emit("peek", { math.max(0, i - limit), only_if = self.file.url, upper_bound = true })
else
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
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", {
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
require("code").seek(self, units)
end
return M

View File

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

View File

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

View File

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

View File

@ -51,7 +51,7 @@ local render_motion_setup = ya.sync(function(_)
end
-- 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)
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
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
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
return ui.Line {
ui.Span(THEME.status.separator_open):fg(style.bg),
motion_span,
ui.Span(THEME.status.separator_close):fg(style.bg),
ui.Span(THEME.status.separator_open):fg(style.main.bg),
motion_span:style(style.main),
ui.Span(THEME.status.separator_close):fg(style.main.bg),
ui.Span(" "),
}
end
@ -210,9 +210,10 @@ local get_active_tab = ya.sync(function(_) return cx.tabs.idx end)
-----------------------------------------------
return {
entry = function(_, args)
entry = function(_, job)
local initial_value
local args = job.args
-- this is checking if the argument is a valid number
if #args > 0 then
initial_value = tostring(tonumber(args[1]))

View File

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

View File

@ -26,7 +26,7 @@ ueberzug_offset = [ 0, 0, 0, 0 ]
[opener]
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 -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"