Update 2025-05-31

Update 2025-05-06

Update 2025-05-09

Update 2025-05-11

Update 2025-05-13

Update 2025-05-18

Update 2025-05-19

Update 2025-05-24

Update 2025-05-27

Update 2025-05-29

Update 2025-05-31
This commit is contained in:
Kristofers Solo 2025-05-01 17:16:25 +03:00
parent d028d0ad38
commit 1d7d0b7c22
Signed by: kristoferssolo
GPG Key ID: 8687F2D3EEE6F0ED
54 changed files with 1577 additions and 521 deletions

View File

@ -0,0 +1,7 @@
packages = [ "wayland" ]
[variables]
dpi = "96"
font_size = "16"
terminal = "ghostty"
browser = "floorp"

View File

@ -0,0 +1,7 @@
packages = [ "x11" ]
[variables]
dpi = "96"
font_size = "10"
terminal = "ghostty"
browser = "floorp"

View File

@ -32,7 +32,7 @@ depends = [ "base", "awesome_laptop", "picom", "dunst", "rofi" ]
"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", "rofi" ]
[wayland.files] [wayland.files]
"config/zsh/.zprofile-wayland" = "~/.config/zsh/.zprofile" "config/zsh/.zprofile-wayland" = "~/.config/zsh/.zprofile"
@ -48,6 +48,12 @@ depends = [ "shell" ]
"config/shell/env" = "~/.zshenv" "config/shell/env" = "~/.zshenv"
"config/zsh/" = "~/.config/zsh/" "config/zsh/" = "~/.config/zsh/"
[fish]
depends = [ "shell" ]
[fish.files]
"config/fish/" = "~/.config/fish/"
[local.files] [local.files]
"local/bin/" = "~/.local/bin/" "local/bin/" = "~/.local/bin/"
"local/share/" = "~/.local/share/" "local/share/" = "~/.local/share/"
@ -59,7 +65,7 @@ depends = [ "shell" ]
"config/rofi/config.rasi" = {target = "~/.config/rofi/config.rasi", type = "template"} "config/rofi/config.rasi" = {target = "~/.config/rofi/config.rasi", type = "template"}
[misc] [misc]
depends = [ "torrent", "zathura" ] depends = [ "torrent", "zathura", "email" ]
[misc.files] [misc.files]
"config/batrc" = "~/.config/bat/config" "config/batrc" = "~/.config/bat/config"
@ -127,8 +133,11 @@ depends = [ "misc", "local", "eww", "lock" ]
[spotify.files] [spotify.files]
"config/spotify-tui.yml" = "~/.config/spotify-tui/config.yml" "config/spotify-tui.yml" = "~/.config/spotify-tui/config.yml"
[email.files]
"config/neomutt/" = "~/.config/neomutt/"
[terminal] [terminal]
depends = [ "zsh", "tmux" ] depends = [ "zsh", "tmux", "fish" ]
[terminal.files] [terminal.files]
"config/alacritty/" = "~/.config/alacritty/" "config/alacritty/" = "~/.config/alacritty/"
@ -139,6 +148,7 @@ depends = [ "zsh", "tmux" ]
[tmux.files] [tmux.files]
"config/tmux/" = "~/.config/tmux/" "config/tmux/" = "~/.config/tmux/"
"config/sesh/" = "~/.config/sesh/"
[xplr.files] [xplr.files]
"config/xplr/" = "~/.config/xplr/" "config/xplr/" = "~/.config/xplr/"

View File

@ -68,6 +68,7 @@ beautiful.init(gears.filesystem.get_configuration_dir() .. "mytheme.lua")
-- This is used later as the default terminal and editor to run. -- This is used later as the default terminal and editor to run.
local terminal = "{{terminal}}" local terminal = "{{terminal}}"
local browser = "{{browser}}"
local editor = os.getenv("EDITOR") or "nvim" local editor = os.getenv("EDITOR") or "nvim"
local editor_cmd = terminal .. " -e " .. editor local editor_cmd = terminal .. " -e " .. editor
@ -437,7 +438,7 @@ local globalkeys = gears.table.join(
-- awful.key({ modkey, "Control" }, "q", awesome.quit, { description = "quit awesome", group = "awesome" }), -- awful.key({ modkey, "Control" }, "q", awesome.quit, { description = "quit awesome", group = "awesome" }),
awful.key({ modkey }, "b", function() awful.key({ modkey }, "b", function()
awful.spawn("floorp") awful.spawn(browser)
end, { description = "open browser", group = "launcher" }), end, { description = "open browser", group = "launcher" }),
awful.key({ modkey }, "n", function() awful.key({ modkey }, "n", function()
awful.spawn(terminal .. " -e yazi") awful.spawn(terminal .. " -e yazi")

View File

@ -67,6 +67,7 @@ beautiful.init(gears.filesystem.get_configuration_dir() .. "mytheme.lua")
-- This is used later as the default terminal and editor to run. -- This is used later as the default terminal and editor to run.
local terminal = "{{terminal}}" local terminal = "{{terminal}}"
local browser = "{{browser}}"
local editor = os.getenv("EDITOR") or "nvim" local editor = os.getenv("EDITOR") or "nvim"
local editor_cmd = terminal .. " -e " .. editor local editor_cmd = terminal .. " -e " .. editor
@ -430,7 +431,7 @@ local globalkeys = gears.table.join(
-- awful.key({ modkey, "Control" }, "q", awesome.quit, { description = "quit awesome", group = "awesome" }), -- awful.key({ modkey, "Control" }, "q", awesome.quit, { description = "quit awesome", group = "awesome" }),
awful.key({ modkey }, "b", function() awful.key({ modkey }, "b", function()
awful.spawn("floorp") awful.spawn(browser)
end, { description = "open browser", group = "launcher" }), end, { description = "open browser", group = "launcher" }),
awful.key({ modkey }, "n", function() awful.key({ modkey }, "n", function()
awful.spawn(terminal .. " -e yazi") awful.spawn(terminal .. " -e yazi")
@ -485,7 +486,7 @@ local globalkeys = gears.table.join(
-- Menubar -- Menubar
awful.key({ modkey }, "p", function() awful.key({ modkey }, "p", function()
-- menubar.show() -- menubar.show()
awful.spawn("rofi -show drun -show-icons") awful.spawn("rofi -show combi -show-icons")
end, { description = "show the menubar", group = "launcher" }) end, { description = "show the menubar", group = "launcher" })
) )

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="Rosé Pine" --theme="base16"
# 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

@ -1,4 +1,4 @@
#? Config file for btop v. 1.4.0 #? Config file for btop v. 1.4.3
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
@ -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 = "memory" proc_sorting = "cpu direct"
#* Reverse sorting order, True or False. #* Reverse sorting order, True or False.
proc_reversed = False proc_reversed = False
@ -72,7 +72,7 @@ proc_colors = True
proc_gradient = True proc_gradient = True
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. #* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = False proc_per_core = True
#* Show process memory as bytes instead of percent. #* Show process memory as bytes instead of percent.
proc_mem_bytes = True proc_mem_bytes = True
@ -210,6 +210,9 @@ net_sync = False
#* Starts with the Network Interface specified here. #* Starts with the Network Interface specified here.
net_iface = "" net_iface = ""
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present. #* Show battery stats in top right if battery is present.
show_battery = True show_battery = True
@ -226,6 +229,9 @@ log_level = "WARNING"
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. #* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = True nvml_measure_pcie_speeds = True
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
rsmi_measure_pcie_speeds = True
#* Horizontally mirror the GPU graph. #* Horizontally mirror the GPU graph.
gpu_mirror_graph = True gpu_mirror_graph = True

View File

@ -146,6 +146,10 @@ clock_time {
margin: 0px 10px 0px 10px; margin: 0px 10px 0px 10px;
} }
.module-wifi {
margin: 0 10px;
}
.separ { .separ {
color: $highlight_med; color: $highlight_med;
font-weight: bold; font-weight: bold;
@ -472,3 +476,11 @@ calendar:indeterminate {
min-width: 120px; min-width: 120px;
margin: 0px 0px 20px 0px; margin: 0px 0px 20px 0px;
} }
.activate-linux {
color: rgba(250, 250, 250, 0.5);
&.background {
background: none;
}
}

View File

@ -99,12 +99,12 @@
:tooltip "Battery on ${EWW_BATTERY.BAT0.capacity}%" :tooltip "Battery on ${EWW_BATTERY.BAT0.capacity}%"
:show_truncated false :show_truncated false
:wrap false :wrap false
"${EWW_BATTERY.BAT0.status == "Charging" ? "" : ;; "${EWW_BATTERY.BAT0.status == "Charging" ? "" :
EWW_BATTERY.BAT0.capacity > 90 ? "" : ;; EWW_BATTERY.BAT0.capacity > 90 ? "" :
EWW_BATTERY.BAT0.capacity > 70 ? "" : ;; EWW_BATTERY.BAT0.capacity > 70 ? "" :
EWW_BATTERY.BAT0.capacity > 40 ? "" : ;; EWW_BATTERY.BAT0.capacity > 40 ? "" :
EWW_BATTERY.BAT0.capacity > 20 ? "" : ;; EWW_BATTERY.BAT0.capacity > 20 ? "" :
""}" ;; ""}"
)))) ))))
@ -124,7 +124,7 @@
:tooltip "Using ${memory}% ram" :tooltip "Using ${memory}% ram"
:show_truncated false :show_truncated false
:wrap false :wrap false
"")))) ))))
@ -311,12 +311,12 @@
:class "sys_bat" :class "sys_bat"
:thickness 9 :thickness 9
(label (label
:text "${EWW_BATTERY.BAT0.status == "Charging" ? "" : ;; :text "${EWW_BATTERY.BAT0.status == "Charging" ? "" :
EWW_BATTERY.BAT0.capacity > 90 ? "" : ;; EWW_BATTERY.BAT0.capacity > 90 ? "" :
EWW_BATTERY.BAT0.capacity > 70 ? "" : ;; EWW_BATTERY.BAT0.capacity > 70 ? "" :
EWW_BATTERY.BAT0.capacity > 40 ? "" : ;; EWW_BATTERY.BAT0.capacity > 40 ? "" :
EWW_BATTERY.BAT0.capacity > 20 ? "" : ;; EWW_BATTERY.BAT0.capacity > 20 ? "" :
""}" ;; ""}"
:interval "5m" :interval "5m"
:class "sys_icon_bat ${EWW_BATTERY.BAT0.capacity} syst_icon_bat__${EWW_BATTERY.BAT0.status} ${EWW_BATTERY.BAT0.capacity < 20 ? "sys_icon_bat__low" : ""}" :class "sys_icon_bat ${EWW_BATTERY.BAT0.capacity} syst_icon_bat__${EWW_BATTERY.BAT0.status} ${EWW_BATTERY.BAT0.capacity < 20 ? "sys_icon_bat__low" : ""}"
:limit-width 2 :limit-width 2
@ -350,7 +350,7 @@
:show_truncated false :show_truncated false
:wrap false))) :wrap false)))
(label (label
:text "" :text ""
:class "sys_sep" :class "sys_sep"
:halign "center") :halign "center")
(box (box
@ -363,7 +363,6 @@
:class "sys_mem" :class "sys_mem"
:thickness 9 :thickness 9
(label (label
:text ""
:class "sys_icon_mem" :class "sys_icon_mem"
:limit-width 2 :limit-width 2
:show_truncated false :show_truncated false
@ -566,3 +565,16 @@
(box :class "window" (box :class "window"
(label :text "${window}"))) (label :text "${window}")))
(defwidget activate-linux []
(box
:orientation "v"
:halign "start"
:valign "start"
(label :xalign 0 :markup "<span font_size=\"large\">Activate Linux</span>")
(label :xalign 0 :text "Go to Settings to activate Linux")))
(defwindow activate-linux
:monitor 0
:stacking "fg"
:geometry (geometry :x "8px" :y "64px" :width "420px" :anchor "bottom right")
(activate-linux))

View File

@ -20,4 +20,3 @@ elif [[ "$1" == "--ESSID" ]]; then
elif [[ "$1" == "--ICON" ]]; then elif [[ "$1" == "--ICON" ]]; then
echo $icon echo $icon
fi fi

View File

@ -0,0 +1,17 @@
function _fastanime_completion;
set -l response (env _FASTANIME_COMPLETE=fish_complete COMP_WORDS=(commandline -cp) COMP_CWORD=(commandline -t) fastanime);
for completion in $response;
set -l metadata (string split "," $completion);
if test $metadata[1] = "dir";
__fish_complete_directories $metadata[2];
else if test $metadata[1] = "file";
__fish_complete_path $metadata[2];
else if test $metadata[1] = "plain";
echo $metadata[2];
end;
end;
end;
complete --no-files --command fastanime --arguments "(_fastanime_completion)";

View File

@ -0,0 +1 @@
fzf --fish | source

View File

@ -0,0 +1 @@
uv generate-shell-completion fish | source

View File

@ -0,0 +1 @@
uvx --generate-shell-completion fish | source

View File

@ -0,0 +1 @@
zoxide init fish | source

View File

@ -0,0 +1,60 @@
# Use neovim for vim if present
if type -q nvim
set -g vimdiff "nvim -d"
end
# Verbosity and settings that you pretty much just always are going to wand
alias bc="bc -ql"
alias cp="cp -vi"
alias df="df -h"
alias mkdir="mkdir -pv"
alias mv="mv -iv"
alias nsxiv="nsxiv -a"
alias rm="rm -vI"
alias wget="wget --hsts-file=$XDG_DATA_HOME/wget-hsts"
alias keychain="keychain --dir $XDG_RUNTIME_DIR/keychain"
# Colorize commands when possible
alias diff="diff --color=auto"
alias grep="rg --color=auto"
alias ip="ip -color=auto"
alias less="moar"
alias ls="eza -a --icons --group-directories-first"
# These common commands ate just too long! Abbreviate them
alias battery="acpi"
alias code="vscodium"
alias day="redshift -PO 6500"
alias dv="doasedit"
alias e="$EDITOR"
alias fetch="fastfetch"
alias lf="lfub"
alias lg="lazygit"
alias lock="swaylock"
alias lzd="lazydocker"
alias night="redshift -PO 4500"
alias py="python"
alias sv="rsv"
alias v="$EDITOR"
alias weather="curl wttr.in/"
alias wg-down="wg-quick down wg0"
alias wg-up="wg-quick up wg0"
alias ww="$EDITOR ~/neorg/"
alias yarn="yarn --use-yarnrc $XDG_CONFIG_HOME/yarn/config"
alias yy="yazi"
# Git aliases
alias gP="git push"
alias ga="git add"
alias gap="git add --patch"
alias gc="git commit"
alias gd="git diff --output-indicator-new=' ' --output-indicator-old=' '"
alias gds="git diff --staged"
alias gl="git log --all --graph --pretty=format:'%C(magenta)%h %C(white) %an %ar%C(auto) %D%n%s%n'"
alias gp="git pull"
alias gs="git status --short"
# doas alias
for command in mount umount rsv sv pacman updatedb su shutdown poweroff reboot zzz systemctl wg wg-quick
alias $command="doas $command"
end

View File

@ -0,0 +1,2 @@
# Ctrl+O runs yazicd
bind -M insert \co 'yazicd'

57
config/fish/config.fish Normal file
View File

@ -0,0 +1,57 @@
# Source startup file
# if test -f "$XDG_CONFIG_HOME/zsh/startup"
# source "$XDG_CONFIG_HOME/zsh/startup"
# end
# Starship prompt
starship init fish | source
# Aliases
if test -f "$XDG_CONFIG_HOME/fish/alias.fish"
source "$XDG_CONFIG_HOME/fish/alias.fish"
end
# Environment variables
set -x KEYTIMEOUT 1
# Functions
function cd
if test (count $argv) -eq 0
builtin cd ~
else
builtin cd $argv
end
eza -a --icons --group-directories-first
end
function lfcd
set tmp (mktemp -uq)
lf -last-dir-path="$tmp" $argv
if test -f "$tmp"
set dir (cat "$tmp")
if test -d "$dir" -a "$dir" != (pwd)
cd "$dir"
end
end
end
function yazicd
set tmp (mktemp -t "yazi-cwd.XXXXXX")
yazi $argv --cwd-file="$tmp"
set cwd (cat "$tmp")
if test -n "$cwd" -a "$cwd" != "$PWD"
cd "$cwd"
eza -a --icons --group-directories-first
end
rm -f "$tmp"
end
# Keybindings
fish_vi_key_bindings
# Source other files
# if test -f "$HOME/.local/share/../bin/env"
# source "$HOME/.local/share/../bin/env"
# end

View File

@ -22,6 +22,7 @@ window-decoration = false
scrollback-limit = 10000000 scrollback-limit = 10000000
mouse-hide-while-typing = true mouse-hide-while-typing = true
confirm-close-surface = false confirm-close-surface = false
mouse-scroll-multiplier = 0.5
# Keybinds # Keybinds
keybind = alt+f4=ignore keybind = alt+f4=ignore

View File

@ -10,7 +10,7 @@
whitespace = error whitespace = error
preloadindex = true preloadindex = true
[url "git@github.com:kristoferssolo"] [url "git@github.com:kristoferssolo:"]
insteadOf = "solo:" insteadOf = "solo:"
[url "git@github.com"] [url "git@github.com"]
insteadOf = "gh:" insteadOf = "gh:"

View File

@ -16,9 +16,10 @@
# See https://wiki.hyprland.org/Configuring/Monitors/ # See https://wiki.hyprland.org/Configuring/Monitors/
monitor=eDP-1,prefered,0x0,1 monitor=eDP-1,prefered,0x0,1
monitor=DP-1,prefered,180x-1440,1 # monitor=DP-1,prefered,180x-1440,1
# monitor=HDMI-A-1,prefered,480x-1080,1 # monitor=HDMI-A-1,prefered,480x-1080,1
monitor=HDMI-A-1,prefered,auto,1 # monitor=HDMI-A-1,prefered,mirror,eDP-1
# monitor=DP-1,prefered,mirror,eDP-1
# monitor=DP-1,disabled # monitor=DP-1,disabled
################### ###################
@ -30,8 +31,9 @@ monitor=HDMI-A-1,prefered,auto,1
# Set programs that you use # Set programs that you use
$terminal = {{terminal}} $terminal = {{terminal}}
$fileManager = $terminal -e yazi $fileManager = $terminal -e yazi
$menu = wofi --show drun -ib # $menu = wofi --show drun -ib
$browser = floorp $menu = rofi -show combi -show-icons
$browser = {{browser}}
################# #################
### AUTOSTART ### ### AUTOSTART ###
@ -40,11 +42,11 @@ $browser = floorp
# Autostart necessary processes (like notifications daemons, status bars, etc.) # Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this: # Or execute your favorite apps at launch like this:
exec-once=pipewire & pipewire-pulse & wireplumber & eww daemon & eww open bar #& dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP DISPLAY XAUTHORITY exec-once=pipewire & pipewire-pulse & wireplumber & eww daemon & eww open bar
# exec-once=eww daemon & eww open bar & dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP DISPLAY XAUTHORITY exec-once=dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP DISPLAY XAUTHORITY
exec-once=nextcloud & /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & xrdb "$XDG_CONFIG_HOME/x11/xresources" & transmission-daemon & dunst exec-once=nextcloud & /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & xrdb "$XDG_CONFIG_HOME/x11/xresources" & transmission-daemon & dunst & hyprpaper
exec-once=[workspace 1 silent] $browser exec-once=[workspace 1 silent] $browser
exec-once=[workspace 8 silent] vesktop & kotatogram-desktop exec-once=[workspace 8 silent] kotatogram-desktop & flatpak run dev.vencord.Vesktop
# exec-once=[workspace 9 silent] spotify-launcher # exec-once=[workspace 9 silent] spotify-launcher
# Source a file (multi-file configs) # Source a file (multi-file configs)
@ -72,8 +74,8 @@ env = WM,Hyprland
# https://wiki.hyprland.org/Configuring/Variables/#general # https://wiki.hyprland.org/Configuring/Variables/#general
general { general {
gaps_in = 5 gaps_in = 4
gaps_out = 10 gaps_out = 8
border_size = 2 border_size = 2
@ -87,13 +89,13 @@ general {
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false allow_tearing = false
layout = master layout = dwindle
} }
# https://wiki.hyprland.org/Configuring/Variables/#decoration # https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration { decoration {
rounding = 5 rounding = 4
# rounding_power = 2 rounding_power = 4
# Change transparency of focused and unfocused windows # Change transparency of focused and unfocused windows
active_opacity = 1.0 active_opacity = 1.0
@ -110,7 +112,7 @@ decoration {
blur { blur {
enabled = true enabled = true
size = 3 size = 3
passes = 1 passes = 3
vibrancy = 0.1696 vibrancy = 0.1696
} }
@ -159,6 +161,7 @@ animations {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle { dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
force_split = 2
preserve_split = true # You probably want this preserve_split = true # You probably want this
} }
@ -170,10 +173,10 @@ master {
# https://wiki.hyprland.org/Configuring/Variables/#misc # https://wiki.hyprland.org/Configuring/Variables/#misc
misc { misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
vfr = true # It will lower the amount of sent frames when nothing is happening on-screen.
} }
############# #############
### INPUT ### ### INPUT ###
############# #############
@ -211,6 +214,9 @@ device {
sensitivity = -0.5 sensitivity = -0.5
} }
cursor {
hide_on_key_press = true
}
################### ###################
### KEYBINDINGS ### ### KEYBINDINGS ###
@ -225,6 +231,9 @@ bind = $mainMod SHIFT, Q, killactive
bind = $mainMod, N, exec, $fileManager bind = $mainMod, N, exec, $fileManager
bind = $mainMod CTRL, SPACE, togglefloating bind = $mainMod CTRL, SPACE, togglefloating
bind = $mainMod, P, exec, $menu bind = $mainMod, P, exec, $menu
bind = $mainMod, G, exec, rofi -modi games -show games -theme games-smaller
bind = $mainMod, C, exec, rofi -show calc -modi calc -no-show-match -no-sort -calc-command "echo -n '{result}' | wl-copy"
bind = $mainMod, W, exec, networkmanager_dmenu
bind = $mainMod SHIFT, P, exec, cliphist list | wofi -S dmenu | cliphist decode | wl-copy bind = $mainMod SHIFT, P, exec, cliphist list | wofi -S dmenu | cliphist decode | wl-copy
bind = $mainMod, F, fullscreen bind = $mainMod, F, fullscreen
bind = $mainMod, M, bringactivetotop bind = $mainMod, M, bringactivetotop
@ -375,12 +384,12 @@ windowrulev2 = opacity 0.95, class:thunderbird
windowrulev2 = workspace 8, class:discord windowrulev2 = workspace 8, class:discord
windowrulev2 = opacity 0.95, class:discord windowrulev2 = opacity 0.95, class:discord
windowrulev2 = workspace 8, class:vesktop windowrulev2 = workspace 8, class:vesktop
windowrulev2 = opacity 0.95, class:vesktop windowrulev2 = opacity 0.9, class:vesktop
windowrulev2 = workspace 8, class:Ripcord windowrulev2 = workspace 8, class:Ripcord
windowrulev2 = workspace 8, class:TelegramDesktop windowrulev2 = workspace 8, class:TelegramDesktop
windowrulev2 = opacity 0.95, class:TelegramDesktop windowrulev2 = opacity 0.95, class:TelegramDesktop
windowrulev2 = workspace 8, title:Kotatogram windowrulev2 = workspace 8, title:Kotatogram
windowrulev2 = opacity 0.95, title:Kotatogram windowrulev2 = opacity 0.9, initialTitle:Kotatogram
windowrulev2 = opacity 0.9, class:teams-for-linux windowrulev2 = opacity 0.9, class:teams-for-linux
windowrulev2 = workspace 5, class:Ferdium windowrulev2 = workspace 5, class:Ferdium
windowrulev2 = opacity 0.9, class:Ferdium windowrulev2 = opacity 0.9, class:Ferdium
@ -394,7 +403,6 @@ windowrulev2 = opacity 0.9, class:Spotify
# chromakey_background = 7,8,17 # chromakey_background = 7,8,17
windowrulev2 = opacity 0.95, class:qbittorrent windowrulev2 = opacity 0.95, class:qbittorrent
windowrulev2 = opacity 0.95, class:lutris
windowrulev2 = opacity 0.95, class:pacfinder windowrulev2 = opacity 0.95, class:pacfinder
windowrulev2 = opacity 0.9, class:Bitwarden windowrulev2 = opacity 0.9, class:Bitwarden
windowrulev2 = opacity 0.9, class:kdeconnect windowrulev2 = opacity 0.9, class:kdeconnect
@ -403,7 +411,3 @@ windowrulev2 = opacity 0.9, class:kdeconnect
windowrulev2 = move 100%-250 100%-250, class:galculator windowrulev2 = move 100%-250 100%-250, class:galculator
windowrulev2 = size 250 250, class:galculator windowrulev2 = size 250 250, class:galculator
windowrulev2 = float, class:galculator windowrulev2 = float, class:galculator
windowrulev2=float,title:^(flameshot)
windowrulev2=move 0 0,title:^(flameshot)
windowrulev2=suppressevent fullscreen,title:^(flameshot)

View File

@ -1,7 +1,5 @@
ipc = off ipc = off # save on baterry
splash = true splash = true
preload = ~/Pictures/wallpapers/Linux-Dynamic-Wallpapers/Firewatch2/Firewatch2-1.png preload = ~/Pictures/wallpapers/anime/frieren/frieren-beyond-journeys-end-anime-4k-wallpaper.jpg
preload = ~/Pictures/wallpapers/Linux-Dynamic-Wallpapers/LakesideDeerComplete/LakesideDeer-03.png
preload = ~/Pictures/wallpapers/abstract/GDWP-789-4K-No-Logo.jpg
wallpaper = ,~/Pictures/wallpapers/abstract/GDWP-789-4K-No-Logo.jpg wallpaper = ,~/Pictures/wallpapers/anime/frieren/frieren-beyond-journeys-end-anime-4k-wallpaper.jpg

View File

@ -0,0 +1,2 @@
git:
overrideGpg: true

67
config/neomutt/muttrc Normal file
View File

@ -0,0 +1,67 @@
# === Basic Settings ===
set realname = "Kristiāns Francis Cagulis"
set from = "kristians.cagulis@gmail.com"
set use_from = yes
set envelope_from = yes # Use 'from' address for envelope
set edit_headers = yes # Let you edit headers when composing
# === Editor ===
set editor = "nano" # Or vim, emacs, etc.
# === Folder Settings ===
# This is where NeoMutt will look for mailboxes.
# For IMAP, it's usually the remote server.
set folder = "imaps://imap.example.com:993" # Your IMAP server and port
set spoolfile = "+INBOX" # Your main inbox
set postponed = "+Drafts" # Where to save drafts (adjust folder name)
set record = "+Sent" # Where to save sent messages (adjust folder name)
set trash = "+Trash" # Where to move deleted messages (adjust folder name)
# === IMAP Settings ===
set imap_user = "kristians.cagulis@gmail.com"
# set imap_pass = "YOUR_APP_PASSWORD" # We'll source this from another file
set imap_check_subscribed = yes
set imap_keepalive = 300
set mail_check = 60 # Check for new mail every 60 seconds
set imap_passive = no # Some servers need this
# === SMTP Settings (Sending Mail) ===
set smtp_url = "smtps://your_email@example.com@smtp.example.com:465" # SMTP server, port, and username
# set smtp_pass = "YOUR_APP_PASSWORD" # We'll source this from another file
# === Sorting ===
set sort = threads # Sort by threads
set sort_aux = last-date-received # Sort threads by last received date
# === Header Weeding (Clean up displayed headers) ===
ignore *
unignore from: to: cc: date: subject:
hdr_order from: to: cc: date: subject:
# === Sidebar (Optional but highly recommended) ===
set sidebar_visible = yes
set sidebar_width = 25
set sidebar_format = "%B%?F? [%F]?%* %?N?%N/?%S" # Folder | Unread / Total
# Keybindings for sidebar navigation (Ctrl-B, Ctrl-T, Ctrl-O, Ctrl-C)
bind index,pager \cb sidebar-prev
bind index,pager \ct sidebar-next
bind index,pager \co sidebar-open
bind index,pager \cc sidebar-toggle-visible
# === Other useful settings ===
set confirmappend = no # Don't ask when appending to mbox
set quit = ask-yes # Ask before quitting
set pager_context = 3 # Show 3 lines of context in pager
set menu_scroll = yes # Scroll menus
set tilde = yes # Show tildes for empty lines like in Vim
# === Source account-specific configurations (like passwords) ===
# Make sure the path is correct!
source "~/.config/neomutt/accounts/my_email.conf"
# === GPG Settings (Optional, for encrypted/signed mail) ===
# set crypt_autosign = yes
# set crypt_autoencrypt = yes
# set pgp_sign_as = "0xYOUR_GPG_KEY_ID"
# set pgp_timeout = 3600 # Cache GPG passphrase for 1 hour
# set pgp_good_sign = "~G Good signature from"

View File

@ -1,7 +1,7 @@
@theme "rose-pine" @theme "rose-pine"
configuration { configuration {
modes: "window,drun,run,ssh,filebrowser"; modes: "window,drun,run,ssh,filebrowser,games,calc";
font: "JetBrainsMono NF 12"; font: "JetBrainsMono NF 12";
// location: 0; // location: 0;
// yoffset: 0; // yoffset: 0;
@ -34,7 +34,7 @@ configuration {
// auto-select: false; // auto-select: false;
// parse-hosts: false; // parse-hosts: false;
// parse-known-hosts: true; // parse-known-hosts: true;
// combi-modes: "window,run"; combi-modes: "drun,games";
matching: "fuzzy"; matching: "fuzzy";
// tokenize: true; // tokenize: true;
// m: "-5"; // m: "-5";

4
config/sesh/sesh.toml Normal file
View File

@ -0,0 +1,4 @@
[default_session]
startup_command = "tmux new-window && tmux select-window -t 1 && clear"
preview_command = "eza -a --icons --git --group-directories-first --color=always {}"
blacklist = [ "**/SoloVim/*", "**/solorice/**" ]

View File

@ -34,8 +34,8 @@ alias \
j="joshutoub" \ j="joshutoub" \
lf="lfub" \ lf="lfub" \
lg="lazygit" \ lg="lazygit" \
lzd="lazydocker" \
lock="swaylock" \ lock="swaylock" \
lzd="lazydocker" \
night="redshift -PO 4500" \ night="redshift -PO 4500" \
py="python" \ py="python" \
sv="rsv" \ sv="rsv" \
@ -45,6 +45,7 @@ alias \
wg-up="wg-quick up wg0" \ wg-up="wg-quick up wg0" \
ww="$EDITOR ~/neorg/" \ ww="$EDITOR ~/neorg/" \
yarn="yarn --use-yarnrc $XDG_CONFIG_HOME/yarn/config" \ yarn="yarn --use-yarnrc $XDG_CONFIG_HOME/yarn/config" \
va="source .venv/bin/activate" \
yy="yazi" yy="yazi"
alias \ alias \

View File

@ -10,11 +10,14 @@ typeset -U PATH path
export PATH="$PATH:${$(find ~/.local/bin -type d -printf %p:)%%:}" export PATH="$PATH:${$(find ~/.local/bin -type d -printf %p:)%%:}"
export PATH="$PATH:~/.spicetify" export PATH="$PATH:~/.spicetify"
export PATH="$PATH:${$(find ~/.cache/.bun/bin -type d -printf %p:)%%:}" export PATH="$PATH:${$(find ~/.cache/.bun/bin -type d -printf %p:)%%:}"
export PATH=$JAVA_HOME/bin:$PATH
# Disable files # Disable files
export LESSHISTFILE=- export LESSHISTFILE=-
export $(dbus-launch) export $(dbus-launch)
export MANPAGER='nvim +Man!'
export LIBSEAT_BACKEND=logind export LIBSEAT_BACKEND=logind
unsetopt PROMPT_SP unsetopt PROMPT_SP
@ -87,6 +90,7 @@ export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc"
export ZDOTDIR="$XDG_CONFIG_HOME/zsh" export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
# export _JAVA_OPTIONS="-Djava.util.prefs.userRoot=${XDG_CONFIG_HOME}/java - Djavafx.cachedir=${XDG_CACHE_HOME}/openjfx" # export _JAVA_OPTIONS="-Djava.util.prefs.userRoot=${XDG_CONFIG_HOME}/java - Djavafx.cachedir=${XDG_CACHE_HOME}/openjfx"
# export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME/java" # export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME/java"
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk"
# Other program settings # Other program settings
export AWT_TOOLKIT="MToolkit wmname LG3D" # May have to install wmname export AWT_TOOLKIT="MToolkit wmname LG3D" # May have to install wmname
@ -111,4 +115,3 @@ export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
. "$XDG_DATA_HOME/cargo/env" . "$XDG_DATA_HOME/cargo/env"
. "$XDG_CACHE_HOME/deno/.deno/env" . "$XDG_CACHE_HOME/deno/.deno/env"
. "/home/kristofers/.local/share/cargo/env"

View File

@ -1,3 +1,6 @@
# Get editor completions based on the config schema
"$schema" = 'https://starship.rs/config-schema.json'
# Disable the blank line at the start of the prompt # Disable the blank line at the start of the prompt
add_newline = false add_newline = false
command_timeout = 1000 command_timeout = 1000

View File

@ -43,8 +43,23 @@ bind '"' split-window -v -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}"
bind-key -r i run-shell "tmux neww chtsh" bind-key -r i run-shell "tmux neww chtsh"
bind-key -r f run-shell "tmux neww ~/.local/bin/tmux-sessionizer" # bind-key -r f run-shell "tmux neww ~/.local/bin/tmux-sessionizer"
bind-key -r f run-shell "sesh connect \"$(
sesh list --icons | fzf-tmux -p 80%,70% \
--no-sort --ansi --border-label ' sesh ' --prompt '⚡ ' \
--header ' ^a all ^t tmux ^g configs ^x zoxide ^d tmux kill ^f find' \
--bind 'tab:down,btab:up' \
--bind 'ctrl-a:change-prompt(⚡ )+reload(sesh list --icons)' \
--bind 'ctrl-t:change-prompt(🪟 )+reload(sesh list -t --icons)' \
--bind 'ctrl-g:change-prompt(⚙️ )+reload(sesh list -c --icons)' \
--bind 'ctrl-x:change-prompt(📁 )+reload(sesh list -z --icons)' \
--bind 'ctrl-f:change-prompt(🔎 )+reload(fd -H -d 2 -t d -E .Trash . ~)' \
--bind 'ctrl-d:execute(tmux kill-session -t {2..})+change-prompt(⚡ )+reload(sesh list --icons)' \
--preview-window 'right:55%' \
--preview 'sesh preview {}'
)\""
bind-key x kill-pane
set -g @plugin "tmux-plugins/tpm" set -g @plugin "tmux-plugins/tpm"
set -g @plugin "tmux-plugins/tmux-sensible" set -g @plugin "tmux-plugins/tmux-sensible"
@ -56,6 +71,7 @@ set -g @plugin "rose-pine/tmux"
set -ga update-environment TERM set -ga update-environment TERM
set -ga update-environment TERM_PROGRAM set -ga update-environment TERM_PROGRAM
set -g detach-on-destroy off # don't exit from tmux when closing a session
# set vi-mode # set vi-mode
set-window-option -g mode-keys vi set-window-option -g mode-keys vi
@ -63,6 +79,7 @@ set-window-option -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
bind-key -T copy-mode-vi y send-keys -X copy-selectet-and-cancel bind-key -T copy-mode-vi y send-keys -X copy-selectet-and-cancel
bind -N "last-session (via sesh) " L run-shell "sesh last"
# Rose pine # Rose pine

View File

@ -2,7 +2,7 @@
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. # If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
"$schema" = "https://yazi-rs.github.io/schemas/keymap.json" "$schema" = "https://yazi-rs.github.io/schemas/keymap.json"
[manager] [mgr]
keymap = [ keymap = [
{on = [ "<Esc>" ], run = "escape", desc = "Exit visual mode, clear selected, or cancel search"}, {on = [ "<Esc>" ], run = "escape", desc = "Exit visual mode, clear selected, or cancel search"},
{on = [ "<C-[>" ], run = "escape", desc = "Exit visual mode, clear selected, or cancel search"}, {on = [ "<C-[>" ], run = "escape", desc = "Exit visual mode, clear selected, or cancel search"},

View File

@ -10,8 +10,8 @@ hash = "23915860e59348bf4166778bb0e606f7"
[[plugin.deps]] [[plugin.deps]]
use = "hankertrix/augment-command" use = "hankertrix/augment-command"
rev = "04cda98" rev = "ac4a651"
hash = "3ec6486539188b1e1932ac27f3582917" hash = "7b6b0b8c260c9c5e557287bf9b370f7c"
[[plugin.deps]] [[plugin.deps]]
use = "kirasok/torrent-preview" use = "kirasok/torrent-preview"
@ -25,43 +25,43 @@ hash = "5b9dea47776a30946cfbf83232d18fb1"
[[plugin.deps]] [[plugin.deps]]
use = "pirafrank/what-size" use = "pirafrank/what-size"
rev = "f1c6b69" rev = "0a4904c"
hash = "6e789212eb41d937bab04877ca361099" hash = "fca231a128488a554823374f8f6d5241"
[[plugin.deps]] [[plugin.deps]]
use = "yazi-rs/plugins:git" use = "yazi-rs/plugins:git"
rev = "864a021" rev = "c0ad8a3"
hash = "e0ada736ea676c2bbb3ec705a49526ef" hash = "bf6f074cd41ee33c3360341d168f9733"
[[plugin.deps]] [[plugin.deps]]
use = "yazi-rs/plugins:chmod" use = "yazi-rs/plugins:chmod"
rev = "864a021" rev = "c0ad8a3"
hash = "2f1053f89d1a301a648ab181d0948e38" hash = "d0ad0c1946b46a30c8489735fe8de41c"
[[plugin.deps]] [[plugin.deps]]
use = "yazi-rs/plugins:full-border" use = "yazi-rs/plugins:full-border"
rev = "864a021" rev = "c0ad8a3"
hash = "1f3dad061209081a6b04dd6ff2cb06c7" hash = "3996fc74044bc44144b323686f887e1"
[[plugin.deps]] [[plugin.deps]]
use = "yazi-rs/plugins:mount" use = "yazi-rs/plugins:mount"
rev = "864a021" rev = "c0ad8a3"
hash = "dd97eede8e20e59cd2604e8006e470e2" hash = "c0b6cd7dc830b96e77e5c8a71eec7926"
[[plugin.deps]] [[plugin.deps]]
use = "yazi-rs/plugins:smart-filter" use = "yazi-rs/plugins:smart-filter"
rev = "864a021" rev = "c0ad8a3"
hash = "f0c4b41b5d19a3144958383333eff6e7" hash = "4d82cd9e7534d976f000edf9c0f68d8f"
[[plugin.deps]] [[plugin.deps]]
use = "yazi-rs/plugins:diff" use = "yazi-rs/plugins:diff"
rev = "864a021" rev = "c0ad8a3"
hash = "7a08e303167d5b655c06da6d570f0333" hash = "47865a70cade14a0b9b6bc6a54f16bdb"
[[plugin.deps]] [[plugin.deps]]
use = "AnirudhG07/rich-preview" use = "AnirudhG07/rich-preview"
rev = "fdcf373" rev = "de28f50"
hash = "bd1737dd44b202f412122e6a3b378d4c" hash = "b9cd4027db110b4228889be32462f363"
[[plugin.deps]] [[plugin.deps]]
use = "macydnah/office" use = "macydnah/office"
@ -70,8 +70,8 @@ hash = "35241f7d85abc5a0d2441020bc597ceb"
[[plugin.deps]] [[plugin.deps]]
use = "boydaihungst/mediainfo" use = "boydaihungst/mediainfo"
rev = "9629b1e" rev = "c6d0de7"
hash = "5204b4e2bd238c40fa66cf0a0191f084" hash = "7b024fc14b462235068400207cbe7bf0"
[[plugin.deps]] [[plugin.deps]]
use = "iynaix/time-travel" use = "iynaix/time-travel"

View File

@ -21,6 +21,7 @@ plugin.
- [Leave (`leave`)](#leave-leave) - [Leave (`leave`)](#leave-leave)
- [Rename (`rename`)](#rename-rename) - [Rename (`rename`)](#rename-rename)
- [Remove (`remove`)](#remove-remove) - [Remove (`remove`)](#remove-remove)
- [Copy (`copy`)](#copy-copy)
- [Create (`create`)](#create-create) - [Create (`create`)](#create-create)
- [Shell (`shell`)](#shell-shell) - [Shell (`shell`)](#shell-shell)
- [Passing arguments to the `shell` command](#passing-arguments-to-the-shell-command) - [Passing arguments to the `shell` command](#passing-arguments-to-the-shell-command)
@ -32,16 +33,20 @@ plugin.
- [New commands](#new-commands) - [New commands](#new-commands)
- [Parent arrow (`parent_arrow`)](#parent-arrow-parent_arrow) - [Parent arrow (`parent_arrow`)](#parent-arrow-parent_arrow)
- [Archive (`archive`)](#archive-archive) - [Archive (`archive`)](#archive-archive)
- [Emit (`emit`)](#emit-emit)
- [Editor (`editor`)](#editor-editor) - [Editor (`editor`)](#editor-editor)
- [Pager (`pager`)](#pager-pager) - [Pager (`pager`)](#pager-pager)
- [Usage](#usage) - [Usage](#usage)
- [Using the `extract` command as an opener](#using-the-extract-command-as-an-opener) - [Using the `extract` command as an opener](#using-the-extract-command-as-an-opener)
- [Configuring the plugin's prompts](#configuring-the-plugins-prompts)
- [Input prompts](#input-prompts)
- [Confirmation prompts](#confirmation-prompts)
- [Full configuration example](#full-configuration-example) - [Full configuration example](#full-configuration-example)
- [Licence](#licence) - [Licence]
## Requirements ## Requirements
- [Yazi][yazi-link] v25.4.8+ - [Yazi][yazi-link] v25.5.28+
- [`7z` or `7zz` command][7z-link] - [`7z` or `7zz` command][7z-link]
- [`file` command][file-command-link] - [`file` command][file-command-link]
@ -53,13 +58,13 @@ plugin.
```sh ```sh
# Add the plugin # Add the plugin
ya pack -a hankertrix/augment-command ya pkg add hankertrix/augment-command
# Install plugin # Install plugin
ya pack -i ya pkg install
# Update plugin # Update plugin
ya pack -u ya pkg upgrade
``` ```
## Configuration ## Configuration
@ -498,6 +503,29 @@ then it will operate on the selected items.
[remove-behaviour-video] [remove-behaviour-video]
### Copy (`copy`)
- The `copy` command is augmented as stated in
[this section above][augment-section].
Videos:
- When `must_have_hovered_item` is `true`:
[copy-must-have-hovered-item-video]
- When `must_have_hovered_item` is `false`:
[copy-hovered-item-optional-video]
- When `prompt` is set to `true`:
[copy-prompt-video]
- When `prompt` is set to `false`:
[copy-behaviour-video]
### Create (`create`) ### Create (`create`)
- You should use Yazi's default `create` command instead - You should use Yazi's default `create` command instead
@ -616,7 +644,7 @@ then it will operate on the selected items.
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "i" on = "i"
run = "plugin augment-command -- shell '$PAGER $@' --block --exit-if-dir" run = "plugin augment-command -- shell '$PAGER $@' --block --exit-if-dir"
desc = "Open the pager" desc = "Open the pager"
@ -633,7 +661,7 @@ then it will operate on the selected items.
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "o" on = "o"
run = "plugin augment-command -- shell '$EDITOR $@' --block --exit-if-dir" run = "plugin augment-command -- shell '$EDITOR $@' --block --exit-if-dir"
desc = "Open the editor" desc = "Open the editor"
@ -658,7 +686,7 @@ the shell command arguments, so here are a few ways to do it:
```toml ```toml
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "i" on = "i"
run = "plugin augment-command -- shell --block 'bat -p --pager less $@'" run = "plugin augment-command -- shell --block 'bat -p --pager less $@'"
desc = "Open with bat" desc = "Open with bat"
@ -682,7 +710,7 @@ the shell command arguments, so here are a few ways to do it:
```toml ```toml
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "<C-s>" on = "<C-s>"
run = 'plugin augment-command -- shell --block -- sh -c "$SHELL"' run = 'plugin augment-command -- shell --block -- sh -c "$SHELL"'
desc = "Open a shell inside of a shell here" desc = "Open a shell inside of a shell here"
@ -691,7 +719,7 @@ the shell command arguments, so here are a few ways to do it:
```toml ```toml
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "<C-s>" on = "<C-s>"
run = "plugin augment-command -- shell --block -- sh -c 'echo hello'" run = "plugin augment-command -- shell --block -- sh -c 'echo hello'"
desc = "Open a shell and say hello inside the opened shell" desc = "Open a shell and say hello inside the opened shell"
@ -706,7 +734,7 @@ the shell command arguments, so here are a few ways to do it:
```toml ```toml
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "<C-s>" on = "<C-s>"
run = '''plugin augment-command -- shell --block -- sh -c 'sh -c "$SHELL"'''' run = '''plugin augment-command -- shell --block -- sh -c 'sh -c "$SHELL"''''
desc = "Open a shell inside of a shell inside of a shell here" desc = "Open a shell inside of a shell inside of a shell here"
@ -715,7 +743,7 @@ the shell command arguments, so here are a few ways to do it:
```toml ```toml
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "<C-s>" on = "<C-s>"
run = '''plugin augment-command -- run = '''plugin augment-command --
shell --block -- sh -c "$SHELL -c 'echo hello'" shell --block -- sh -c "$SHELL -c 'echo hello'"
@ -729,7 +757,7 @@ the shell command arguments, so here are a few ways to do it:
```toml ```toml
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "<C-e>" on = "<C-e>"
run = '''plugin augment-command -- run = '''plugin augment-command --
shell -- shell --
@ -947,14 +975,14 @@ in your `keymap.toml` file.
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
# Use K to move up in the parent directory # Use K to move up in the parent directory
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "K" on = "K"
run = ["leave", "arrow -1", "enter"] run = ["leave", "arrow -1", "enter"]
desc = "Move up in the parent directory" desc = "Move up in the parent directory"
# Use J to move down in the parent directory # Use J to move down in the parent directory
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "J" on = "J"
run = ["leave", "arrow 1", "enter"] run = ["leave", "arrow 1", "enter"]
desc = "Move down in the parent directory" desc = "Move down in the parent directory"
@ -970,6 +998,16 @@ in your `keymap.toml` file.
to an archive, with the plugin prompting for an archive name. to an archive, with the plugin prompting for an archive name.
The archive file extension given will be used to determine The archive file extension given will be used to determine
the type of archive to create. the type of archive to create.
- When the archive name given has no file extension, the `.zip`
file extension will be automatically added by default
to create a `zip` archive.
- When the item group is determined to be the hovered item,
the `archive` command will create a `.zip` archive with the
name of the hovered item if no archive name is given
and the input is confirmed by using the `<Enter>` key.
- The `archive` command will also prompt for an overwrite confirmation,
if the archive being created already exists,
just like the `create` command.
- This command is also augmented as stated in - This command is also augmented as stated in
[this section above][augment-section]. [this section above][augment-section].
@ -991,6 +1029,8 @@ in your `keymap.toml` file.
[archive-behaviour-video] [archive-behaviour-video]
- `--force` flag to always overwrite the existing archive
without showing the confirmation prompt.
- `--encrypt` flag to encrypt the archive with the given password, - `--encrypt` flag to encrypt the archive with the given password,
which applies even when `encrypt_archives` is set to `false`. which applies even when `encrypt_archives` is set to `false`.
- `--encrypt-headers` flag to encrypt the archive headers, - `--encrypt-headers` flag to encrypt the archive headers,
@ -1025,10 +1065,55 @@ in your `keymap.toml` file.
[archive-remove-archived-files-video] [archive-remove-archived-files-video]
### Emit (`emit`)
- The `emit` command allows you to emit any Yazi command
by typing the command into an input prompt.
The syntax of the command is exactly the same as
the commands in the `keymap.toml` file.
For example, if the input is `arrow next`,
then that will be the command that is emitted by the plugin.
Video:
[emit-yazi-command-video]
- `--plugin` flag to emit a plugin command.
This flag essentially just emits Yazi's `plugin` command
with the input passed as the first argument.
For example, if the input is `augment-command -- parent_arrow 1`,
then the full command being emitted by the plugin is
`plugin augment-command -- parent_arrow 1`.
Video:
[emit-plugin-command-video]
- `--augmented` flag to emit an augmented command.
This flag is a shortcut for emitting a command from this plugin.
For example, if the command given is `parent_arrow 1`,
the full command emitted by the plugin is
`plugin augment-command -- parent_arrow 1`.
Video:
[emit-augmented-command-video]
- If `--augmented` flag is passed together with the `--plugin` flag,
the `--augmented` flag will take precedence over the `--plugin` flag,
and the command emitted will be from this plugin
instead of being a `plugin` command.
In any case, you should not be passing
both the `--plugin` and `--augmented` flags.
### Editor (`editor`) ### Editor (`editor`)
- The `editor` command opens the default editor set by the - The `editor` command opens the default editor set by the
`$EDITOR` environment variable. `$EDITOR` environment variable.
- When the file being edited is owned by the root user on Unix systems,
like Linux and macOS, the `editor` command will automatically call
`sudo -e` to edit the file instead of using the `$EDITOR`
environment variable.
- The command is also augmented as stated in - The command is also augmented as stated in
[this section above][augment-section]. [this section above][augment-section].
@ -1093,7 +1178,7 @@ on Windows, in this format:
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "key" on = "key"
run = "plugin augment-command -- command arguments --flags --options=42" run = "plugin augment-command -- command arguments --flags --options=42"
desc = "Description" desc = "Description"
@ -1105,7 +1190,7 @@ For example, to use the augmented `enter` command:
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "l" on = "l"
run = "plugin augment-command -- enter" run = "plugin augment-command -- 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"
@ -1118,22 +1203,22 @@ are also supported, for example:
# ~/.config/yazi/keymap.toml on Linux and macOS # ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows # %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "k" on = "k"
run = "plugin augment-command -- arrow -1" run = "plugin augment-command -- arrow -1"
desc = "Move cursor up" desc = "Move cursor up"
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "r" on = "r"
run = "plugin augment-command -- rename --cursor=before_ext" run = "plugin augment-command -- rename --cursor=before_ext"
desc = "Rename a file or directory" desc = "Rename a file or directory"
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "D" on = "D"
run = "plugin augment-command -- remove --permanently" run = "plugin augment-command -- remove --permanently"
desc = "Permanently delete the files" desc = "Permanently delete the files"
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = ["g", "j"] on = ["g", "j"]
run = "plugin augment-command -- parent_arrow 1" run = "plugin augment-command -- parent_arrow 1"
``` ```
@ -1153,6 +1238,166 @@ the `extract` command to a key in your `keymap.toml` file.
Look at the [`extract` command section](#extract-extract) Look at the [`extract` command section](#extract-extract)
for details on how to do so. for details on how to do so.
### Configuring the plugin's prompts
If you would like to use the plugin's default prompts,
you can skip this section entirely. Otherwise, read on.
The plugin's prompts can be configured using the `th`
object for built-in commands like `create`.
New commands, or new features in existing commands introduced by the plugin,
like `archive` or `quit`, can be configured
using the `th.augment_command` object instead.
You **must** call the plugin's `setup` function after
configuring the plugin's prompts, otherwise,
the prompts will remain as the default prompts.
For example:
```lua
-- Prompt configurations for the plugin
th.create_title = { "Create:", "Create (dir):" }
th.augment_command = th.augment_command or {}
th.augment_command.archive_title = "Archive name:"
th.augment_command.quit_title = "Quit?"
-- Call the plugin's setup function
require("augment-command"):setup()
```
This method of configuration is to be forward compatible
with future versions of Yazi, as mentioned
[here](https://github.com/yazi-rs/plugins/issues/44).
#### Input prompts
For `input` prompts, like the prompt for the `archive` command,
there are 3 configuration options:
- `title`
- `origin`
- `offset`
These options are documented in [Yazi's documentation][input-configuration].
For example, to configure the `create` command, which is built-in:
```lua
th.create_title = { "Create:", "Create (dir):" }
th.create_origin = "top-center"
th.create_offset = {
x = 0,
y = 2,
w = 50,
h = 3,
}
```
This way of configuring the `input` prompt applies to the following:
- `create`
Below is an example of configuring the `archive` command,
which is provided by the plugin:
```lua
th.augment_command = th.augment_command or {}
th.augment_command.archive_title = "Archive name:"
th.augment_command.archive_origin = "top-center"
th.augment_command.archive_offset = {
x = 0,
y = 2,
w = 50,
h = 3,
}
```
This way of configuring the `input` prompt applies to the following:
- `item_group`: The prompt to select an item group.
- `extract_password`:
The prompt to enter the password when extracting an encrypted archive.
- `archive`: The prompt for the archive name.
- `archive_password`:
The prompts to enter the archive password when
creating an encrypted archive.
Note that the title for this prompt, `archive_password_title`,
should be a list of two strings, like this:
```lua
th.augment_command = th.augment_command or {}
th.archive_password_title = {
"Archive password:",
"Confirm archive password:",
}
```
#### Confirmation prompts
For `confirm` prompts, like the prompt for the `quit` command,
there are 4 configuration options:
- `title`
- `content`
- `origin`
- `offset`
These options are documented in [Yazi's documentation][confirm-configuration].
The configuration for the `confirm` prompt is very
similar to that of the `input` prompt,
just with one more option called `content`.
The `content` option can take either a `string`, or a list of `strings`.
For example, to configure the `overwrite` part
of the `create` and `archive` commands, which is built-in:
```lua
th.overwrite_title = "Overwrite file?"
th.overwrite_content = "Will overwrite the following file:"
th.overwrite_origin = "center"
th.overwrite_offset = {
x = 0,
y = 0,
w = 50,
h = 15,
}
```
This way of configuring the `confirm` prompt applies to the following:
- `overwrite`:
The overwrite prompt when creating a file with
the same name as an existing file.
Below is an example of configuring the `quit` command,
which is provided by the plugin:
```lua
th.augment_command = th.augment_command or {}
th.augment_command.quit_title = "Quit?"
th.augment_command.quit_content = {
"There are multiple tabs open.",
"Are you sure you want to quit?",
}
th.augment_command.quit_origin = "center"
th.augment_command.quit_offset = {
x = 0,
y = 0,
w = 50,
h = 15,
}
```
This way of configuring the `confirm` prompt applies to the following:
- `quit`: The quit prompt when quitting with multiple tabs open.
### Full configuration example ### Full configuration example
For a full configuration example, For a full configuration example,
@ -1181,6 +1426,8 @@ You can view the full licence in the [`LICENSE`][Licence] file.
[yazi-yazi-toml]: https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/yazi-default.toml [yazi-yazi-toml]: https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/yazi-default.toml
[yazi-shell-variables]: https://yazi-rs.github.io/docs/configuration/keymap/#manager.shell [yazi-shell-variables]: https://yazi-rs.github.io/docs/configuration/keymap/#manager.shell
[thunderbird-tip]: https://yazi-rs.github.io/docs/tips#email-selected-files-using-thunderbird [thunderbird-tip]: https://yazi-rs.github.io/docs/tips#email-selected-files-using-thunderbird
[input-configuration]: https://yazi-rs.github.io/docs/configuration/yazi#input
[confirm-configuration]: https://yazi-rs.github.io/docs/configuration/yazi#confirm
[yazi-keymap-toml]: https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/keymap-default.toml [yazi-keymap-toml]: https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/keymap-default.toml
[my-keymap-toml]: https://github.com/hankertrix/Dotfiles/blob/main/.config/yazi/keymap.toml [my-keymap-toml]: https://github.com/hankertrix/Dotfiles/blob/main/.config/yazi/keymap.toml
[my-yazi-toml]: https://github.com/hankertrix/Dotfiles/blob/main/.config/yazi/yazi.toml [my-yazi-toml]: https://github.com/hankertrix/Dotfiles/blob/main/.config/yazi/yazi.toml
@ -1190,110 +1437,123 @@ You can view the full licence in the [`LICENSE`][Licence] file.
<!-- Open command --> <!-- Open command -->
[open-prompt-video]: https://github.com/user-attachments/assets/624da7a1-99cc-428d-acbb-d4ce684f92cb [open-prompt-video]: https://github.com/user-attachments/assets/a792f9d9-97f3-4fab-95cc-03b33c58dd47
[open-behaviour-video]: https://github.com/user-attachments/assets/202f1c07-2001-49d7-a9d7-7a4e7b102c41 [open-behaviour-video]: https://github.com/user-attachments/assets/b2e56c10-91cd-4556-9f64-355aa8948832
[open-auto-extract-archives-video]: https://github.com/user-attachments/assets/dad0572e-15d7-4dfd-bf48-00851af66b6e [open-auto-extract-archives-video]: https://github.com/user-attachments/assets/a406391a-b31d-4b45-afa1-b982ddd89eaf
[open-recursively-extract-archives-video]: https://github.com/user-attachments/assets/b8e929ce-32cd-4f7e-ad97-ffe94bdacd71 [open-recursively-extract-archives-video]: https://github.com/user-attachments/assets/a960f152-4391-4d55-bd0e-0a08efb42729
<!-- Extract command --> <!-- Extract command -->
[extract-must-have-hovered-item-video]: https://github.com/user-attachments/assets/6b9f347f-34ce-4ca1-8e3a-24dbeb297dc7 [extract-must-have-hovered-item-video]: https://github.com/user-attachments/assets/ed310a81-c482-4eed-9d54-5f50a7cc7637
[extract-hovered-item-optional-video]: https://github.com/user-attachments/assets/1596f9f8-e0f5-49e3-964c-6f94b1c24055 [extract-hovered-item-optional-video]: https://github.com/user-attachments/assets/85d5a6bf-ed35-4f9a-b782-faea119da7c5
[extract-prompt-video]: https://github.com/user-attachments/assets/568aef53-dc90-420e-ada9-171f56388ee1 [extract-prompt-video]: https://github.com/user-attachments/assets/40f41727-7e55-44d8-816c-e706d09e27b8
[extract-behaviour-video]: https://github.com/user-attachments/assets/d6ebf5fb-45d3-4ae0-adab-3e89b1ec2f4e [extract-behaviour-video]: https://github.com/user-attachments/assets/6f4f68d4-d43c-4de6-8d85-7e22c0cc0cc6
[extract-recursively-extract-archives-video]: https://github.com/user-attachments/assets/d8978671-9149-45b7-9a92-21c1697baa7d [extract-recursively-extract-archives-video]: https://github.com/user-attachments/assets/d9e7030c-9491-4dfa-a1f4-baf3a45eed64
[extract-encrypted-archive-video]: https://github.com/user-attachments/assets/24701662-0c19-4478-b576-75d9284cd695 [extract-encrypted-archive-video]: https://github.com/user-attachments/assets/48acd16d-f285-4d58-94c3-b402d7784d94
[extract-reveal-extracted-item-video]: https://github.com/user-attachments/assets/170bf187-dc2a-4310-aa86-5dc9a864aced [extract-reveal-extracted-item-video]: https://github.com/user-attachments/assets/96d7fe43-024a-4b1e-b961-9ab9c708db83
[extract-remove-extracted-archive-video]: https://github.com/user-attachments/assets/9b2e625a-a7f8-4678-8a26-265a7d3b8e0c [extract-remove-extracted-archive-video]: https://github.com/user-attachments/assets/7b700ffc-3ce6-4185-a8b0-8ecfd09c2519
<!-- Enter command --> <!-- Enter command -->
[smart-enter-video]: https://github.com/user-attachments/assets/be950544-a58f-495a-a7e8-e37e99011070 [smart-enter-video]: https://github.com/user-attachments/assets/9fc60a42-8692-4ac8-8250-652958582b98
[enter-skip-single-subdirectory-video]: https://github.com/user-attachments/assets/1bd30cb0-611a-44f2-9839-968287af4455 [enter-skip-single-subdirectory-video]: https://github.com/user-attachments/assets/8069e828-d2dd-4c69-a0b8-fe13074de715
<!-- Leave command --> <!-- Leave command -->
[leave-skip-single-subdirectory-video]: https://github.com/user-attachments/assets/735de8f7-6abb-4929-8e3d-bba470fc6063 [leave-skip-single-subdirectory-video]: https://github.com/user-attachments/assets/01330321-b9f9-4dad-b339-8923509e759c
<!-- Rename command --> <!-- Rename command -->
[rename-must-have-hovered-item-video]: https://github.com/user-attachments/assets/b0f608df-7e8d-4e5f-958f-b3df9d0a92fa [rename-must-have-hovered-item-video]: https://github.com/user-attachments/assets/b6ec96f9-c8a2-490c-9003-8c361e83e336
[rename-hovered-item-optional-video]: https://github.com/user-attachments/assets/9613d238-d8e3-4e6f-b073-f847a4f331a1 [rename-hovered-item-optional-video]: https://github.com/user-attachments/assets/8bf0001d-6d39-4c4f-a364-b399e65208e8
[rename-prompt-video]: https://github.com/user-attachments/assets/6ad26e1b-dab1-4e8e-92af-bfcbf6c5232c [rename-prompt-video]: https://github.com/user-attachments/assets/a3926488-f127-4d35-b9ab-7943f01abcb3
[rename-behaviour-video]: https://github.com/user-attachments/assets/fdd70919-f164-4676-9046-6a4b95cd86ed [rename-behaviour-video]: https://github.com/user-attachments/assets/e3d65d76-34d5-45a4-918d-0b28e662840a
<!-- Remove command --> <!-- Remove command -->
[remove-must-have-hovered-item-video]: https://github.com/user-attachments/assets/fa0aeb4e-ee6a-4e34-9c6f-4d4bc0afd111 [remove-must-have-hovered-item-video]: https://github.com/user-attachments/assets/3366c9fa-1a4c-4c3c-a37d-70814d23828d
[remove-hovered-item-optional-video]: https://github.com/user-attachments/assets/f42167dc-df59-451d-b26b-16e75be93fad [remove-hovered-item-optional-video]: https://github.com/user-attachments/assets/01a3fc57-cc90-47f5-b744-d3eed00ac237
[remove-prompt-video]: https://github.com/user-attachments/assets/dd901db3-1ab4-4cb7-bb3f-8aec335c7b94 [remove-prompt-video]: https://github.com/user-attachments/assets/18940b9f-4f04-4ab3-a6a9-b35ee8084bd8
[remove-behaviour-video]: https://github.com/user-attachments/assets/d4087826-3480-486d-98ff-708bca548270 [remove-behaviour-video]: https://github.com/user-attachments/assets/e524ecdb-f94b-4e6e-b5b2-967470ac3f87
<!-- Copy command -->
[copy-must-have-hovered-item-video]: https://github.com/user-attachments/assets/d4ffa133-16d3-44f7-923d-bdd743fa4a77
[copy-hovered-item-optional-video]: https://github.com/user-attachments/assets/d2a7f5cd-ab09-45fd-8865-068bb1c269f8
[copy-prompt-video]: https://github.com/user-attachments/assets/41d372c5-2992-410c-97ae-aca2c6fea4ee
[copy-behaviour-video]: https://github.com/user-attachments/assets/57658664-1a89-46c4-bb4b-3551b0061436
<!-- Create command --> <!-- Create command -->
[create-and-enter-directories-video]: https://github.com/user-attachments/assets/0604e9a3-7c23-4e9c-963a-6e83955fe7ae [create-and-enter-directories-video]: https://github.com/user-attachments/assets/b27756db-f6ed-4598-b54f-214b7ccbe208
[create-and-open-files-video]: https://github.com/user-attachments/assets/2feee5e5-1d56-4150-8f08-101338392950 [create-and-open-files-video]: https://github.com/user-attachments/assets/b7ff1e6c-4c70-4598-a5f6-a88e1559f5d9
[create-and-open-files-and-directories-video]: https://github.com/user-attachments/assets/629a6923-6fa5-4b85-93b7-3b5495c8bbbb [create-and-open-files-and-directories-video]: https://github.com/user-attachments/assets/90dc6dd2-c39d-4ed5-a8b1-e17a18f0219f
[create-behaviour-video]: https://github.com/user-attachments/assets/55b485ea-e49e-4629-b077-4f2a81031f38 [create-behaviour-video]: https://github.com/user-attachments/assets/44bdc556-cde7-4ab9-b3c0-05c4f1fa3120
[create-default-behaviour-video]: https://github.com/user-attachments/assets/acf04af0-107f-4ebb-9ed2-2a03847071a5 [create-default-behaviour-video]: https://github.com/user-attachments/assets/4948fd32-27a9-4546-83f9-ad6fa9c6afa8
<!-- Shell command --> <!-- Shell command -->
[shell-must-have-hovered-item-video]: https://github.com/user-attachments/assets/d9a49cb7-67fd-40fe-8f68-130561de0cca [shell-must-have-hovered-item-video]: https://github.com/user-attachments/assets/b68c51db-ccb7-447b-897e-fd99048c47c0
[shell-hovered-item-optional-video]: https://github.com/user-attachments/assets/f7fdfa7c-d7cc-4157-bb5f-63c37f82ea5b [shell-hovered-item-optional-video]: https://github.com/user-attachments/assets/4643b23e-a2df-465f-8f62-3501747038b8
[shell-prompt-video]: https://github.com/user-attachments/assets/6648ad92-320f-457d-9f3e-b5da6f1c07bc [shell-prompt-video]: https://github.com/user-attachments/assets/929e6a68-7e3f-4614-8344-c0a482d471ad
[shell-behaviour-video]: https://github.com/user-attachments/assets/4727658f-e27c-4fbe-acd7-acfeac54cd17 [shell-behaviour-video]: https://github.com/user-attachments/assets/3afd995a-225a-4cc1-8189-0241555a6345
[shell-exit-if-directory-video]: https://github.com/user-attachments/assets/ef0e9818-cc81-45fc-9126-6903314ed6b3 [shell-exit-if-directory-video]: https://github.com/user-attachments/assets/f7cef7a0-027b-462f-8fe0-b107e5844736
<!-- Paste command --> <!-- Paste command -->
[smart-paste-video]: https://github.com/user-attachments/assets/59800de2-8445-4f68-834b-10a0e394c400 [smart-paste-video]: https://github.com/user-attachments/assets/946a8211-41a8-43a0-b56e-9c13f5a00f4d
<!-- Tab create command --> <!-- Tab create command -->
[smart-tab-create-video]: https://github.com/user-attachments/assets/bf48e411-b7ed-4624-abd9-084dcdc25ab5 [smart-tab-create-video]: https://github.com/user-attachments/assets/4ea25adc-53d0-4086-b8b3-73dcea6d5932
<!-- Tab switch command --> <!-- Tab switch command -->
[smart-tab-switch-video]: https://github.com/user-attachments/assets/5b94ff0f-f77c-4250-96ac-4fea67eebc46 [smart-tab-switch-video]: https://github.com/user-attachments/assets/9e2190ad-1b4d-425e-90de-1eb41a445584
<!-- Quit command --> <!-- Quit command -->
[quit-with-confirmation-video]: https://github.com/user-attachments/assets/9e212a32-c7c3-470f-895e-bb1cba03292d [quit-with-confirmation-video]: https://github.com/user-attachments/assets/d3c71ae0-7024-4f06-9398-457cad0f5c1d
<!-- Arrow command --> <!-- Arrow command -->
[smooth-arrow-video]: https://github.com/user-attachments/assets/990935f5-ce6e-4536-9ddc-d8a32da69803 [smooth-arrow-video]: https://github.com/user-attachments/assets/04683520-6028-4246-b529-eac6d3a936cf
[wraparound-arrow-video]: https://github.com/user-attachments/assets/b8233e26-06b7-436d-bafa-1639ed12aa53 [wraparound-arrow-video]: https://github.com/user-attachments/assets/f2555189-4628-4745-89f4-9ecb4ef070ab
[smooth-wraparound-arrow-video]: https://github.com/user-attachments/assets/59d3618a-59cd-448d-b552-e3cc796d109e [smooth-wraparound-arrow-video]: https://github.com/user-attachments/assets/5d603738-a527-4e19-80fd-db41ae76e42b
<!-- Parent arrow command --> <!-- Parent arrow command -->
[parent-arrow-video]: https://github.com/user-attachments/assets/c412ed7b-a6ee-44e7-bf68-f9f2e5214a50 [parent-arrow-video]: https://github.com/user-attachments/assets/166a83d6-c7ef-4269-b725-62dde60f078f
[smooth-parent-arrow-video]: https://github.com/user-attachments/assets/45fdfa5f-86ef-453c-89a8-1c58d6318e93 [smooth-parent-arrow-video]: https://github.com/user-attachments/assets/02a7090b-3373-43db-95ed-2b3a6fe683d3
[wraparound-parent-arrow-video]: https://github.com/user-attachments/assets/3a429a57-2dc6-47c6-be4e-fab5844bafde [wraparound-parent-arrow-video]: https://github.com/user-attachments/assets/229e11f8-a5e4-4237-93f3-d6c8875c9e78
[smooth-wraparound-parent-arrow-video]: https://github.com/user-attachments/assets/7d3d58ea-4b00-4cb2-9aea-950940b1ad1a [smooth-wraparound-parent-arrow-video]: https://github.com/user-attachments/assets/7739afe5-e34d-466e-adf2-3e8a8732f04d
<!-- Archive command --> <!-- Archive command -->
[archive-must-have-hovered-item-video]: https://github.com/user-attachments/assets/a8d667c8-a8a5-44ed-9220-aa55345c98ed [archive-must-have-hovered-item-video]: https://github.com/user-attachments/assets/6dac06c1-a69c-4b21-86f6-63f6cc693f22
[archive-hovered-item-optional-video]: https://github.com/user-attachments/assets/213f82d2-fe70-4c42-8f24-b09c7d7d7dfe [archive-hovered-item-optional-video]: https://github.com/user-attachments/assets/b33fbcdf-1e00-49db-aede-99c2c3a26171
[archive-prompt-video]: https://github.com/user-attachments/assets/20366432-f195-4531-bb08-9b3f0e8f848e [archive-prompt-video]: https://github.com/user-attachments/assets/ddc0a2e7-9b90-416f-97e3-57af5ad5f355
[archive-behaviour-video]: https://github.com/user-attachments/assets/dcbe9909-db40-4f96-8591-c1a104b63381 [archive-behaviour-video]: https://github.com/user-attachments/assets/437254d2-4746-41e7-9500-13cef60764b7
[archive-encrypt-files-video]: https://github.com/user-attachments/assets/08b98e01-2cc2-486e-bd4d-bfbe9da792db [archive-encrypt-files-video]: https://github.com/user-attachments/assets/d4269378-58ce-4b58-a420-13455576c58f
[archive-reveal-created-archive-video]: https://github.com/user-attachments/assets/e908afb8-c431-4e6d-8834-c02216461076 [archive-reveal-created-archive-video]: https://github.com/user-attachments/assets/86f01452-42a4-4a97-9d31-ce6f9bc10407
[archive-remove-archived-files-video]: https://github.com/user-attachments/assets/d0495292-6508-4417-b378-033e6acc0c4d [archive-remove-archived-files-video]: https://github.com/user-attachments/assets/012ed8b5-57ae-4cb3-8bf7-4e0af6bdb0d2
<!-- Emit command -->
[emit-yazi-command-video]: https://github.com/user-attachments/assets/d2fadf6b-1877-479f-9ac3-734cf227693f
[emit-plugin-command-video]: https://github.com/user-attachments/assets/af28c33a-b915-413a-91b2-fc812c1d4d90
[emit-augmented-command-video]: https://github.com/user-attachments/assets/08c2d3d6-8ae6-48e2-a045-9c9dc5d81bfd
<!-- Editor command --> <!-- Editor command -->
[editor-must-have-hovered-item-video]: https://github.com/user-attachments/assets/a0e4500d-7bfe-4fb1-9289-8c39c5c6f323 [editor-must-have-hovered-item-video]: https://github.com/user-attachments/assets/ca6d4bac-57be-487e-98e7-805b396fb3d3
[editor-hovered-item-optional-video]: https://github.com/user-attachments/assets/96798f1f-2ddc-464a-b6ae-48cc20f88b3c [editor-hovered-item-optional-video]: https://github.com/user-attachments/assets/3481a3be-d91c-4903-b7a1-80d3048fcf6b
[editor-prompt-video]: https://github.com/user-attachments/assets/5453cc87-3721-4b80-8cc2-b730ddff5da8 [editor-prompt-video]: https://github.com/user-attachments/assets/7cdb942f-0ad3-453c-93a5-ab89df5cd644
[editor-behaviour-video]: https://github.com/user-attachments/assets/f479ef38-5b78-43f1-83d4-045bef6f5f20 [editor-behaviour-video]: https://github.com/user-attachments/assets/e7537e2e-56a0-4681-9820-5b48cd583bc8
<!-- Pager command --> <!-- Pager command -->
[pager-must-have-hovered-item-video]: https://github.com/user-attachments/assets/7daa8e81-bc83-4ff3-9462-d71293565e67 [pager-must-have-hovered-item-video]: https://github.com/user-attachments/assets/292f503e-c7b0-45ad-97b3-75325f8bb0e7
[pager-hovered-item-optional-video]: https://github.com/user-attachments/assets/e123fb58-d49e-46b6-bc33-c41eb01cf9aa [pager-hovered-item-optional-video]: https://github.com/user-attachments/assets/ca5f1126-4761-4289-a441-4b44c7234e57
[pager-prompt-video]: https://github.com/user-attachments/assets/cfba76a1-116e-4caf-b25a-57d631d115a0 [pager-prompt-video]: https://github.com/user-attachments/assets/45d758e0-f95c-4e2e-92b2-094c2f475c00
[pager-behaviour-video]: https://github.com/user-attachments/assets/d036f865-2909-414b-80d9-80e550b6b3dd [pager-behaviour-video]: https://github.com/user-attachments/assets/547ebf9c-ab85-4e72-85c0-e130739b9e68

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ https://github.com/yazi-rs/plugins/assets/17523360/7aa3abc2-d057-498c-8473-a6282
## Installation ## Installation
```sh ```sh
ya pack -a yazi-rs/plugins:chmod ya pkg add yazi-rs/plugins:chmod
``` ```
## Usage ## Usage
@ -15,7 +15,7 @@ ya pack -a yazi-rs/plugins:chmod
Add this to your `~/.config/yazi/keymap.toml`: Add this to your `~/.config/yazi/keymap.toml`:
```toml ```toml
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = [ "c", "m" ] on = [ "c", "m" ]
run = "plugin chmod" run = "plugin chmod"
desc = "Chmod on selected files" desc = "Chmod on selected files"

View File

@ -1,4 +1,4 @@
--- @since 25.2.26 --- @since 25.5.28
local selected_or_hovered = ya.sync(function() local selected_or_hovered = ya.sync(function()
local tab, paths = cx.active, {} local tab, paths = cx.active, {}
@ -13,7 +13,7 @@ end)
return { return {
entry = function() entry = function()
ya.mgr_emit("escape", { visual = true }) ya.emit("escape", { visual = true })
local urls = selected_or_hovered() local urls = selected_or_hovered()
if #urls == 0 then if #urls == 0 then
@ -28,7 +28,7 @@ return {
return return
end end
local status, err = Command("chmod"):arg(value):args(urls):spawn():wait() local status, err = Command("chmod"):arg(value):arg(urls):spawn():wait()
if not status or not status.success then if not status or not status.success then
ya.notify { ya.notify {
title = "Chmod", title = "Chmod",

View File

@ -7,7 +7,7 @@ https://github.com/yazi-rs/plugins/assets/17523360/eff5e949-386a-44ea-82f9-4cb4a
## Installation ## Installation
```sh ```sh
ya pack -a yazi-rs/plugins:diff ya pkg add yazi-rs/plugins:diff
``` ```
## Usage ## Usage
@ -15,7 +15,7 @@ ya pack -a yazi-rs/plugins:diff
Add this to your `~/.config/yazi/keymap.toml`: Add this to your `~/.config/yazi/keymap.toml`:
```toml ```toml
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "<C-d>" on = "<C-d>"
run = "plugin diff" run = "plugin diff"
desc = "Diff the selected with the hovered file" desc = "Diff the selected with the hovered file"

View File

@ -7,7 +7,7 @@ Add a full border to Yazi to make it look fancier.
## Installation ## Installation
```sh ```sh
ya pack -a yazi-rs/plugins:full-border ya pkg add yazi-rs/plugins:full-border
``` ```
## Usage ## Usage

View File

@ -7,10 +7,10 @@ local function setup(_, opts)
Tab.build = function(self, ...) Tab.build = function(self, ...)
local bar = function(c, x, y) local bar = function(c, x, y)
if x <= 0 or x == self._area.w - 1 or th.mgr.border_symbol ~= "" then if x <= 0 or x == self._area.w - 1 or th.mgr.border_symbol ~= "" then
return ui.Bar(ui.Bar.TOP) return ui.Bar(ui.Edge.TOP)
end end
return ui.Bar(ui.Bar.TOP) return ui.Bar(ui.Edge.TOP)
:area( :area(
ui.Rect { x = x, y = math.max(0, y), w = ya.clamp(0, self._area.w - x, 1), h = math.min(1, self._area.h) } ui.Rect { x = x, y = math.max(0, y), w = ya.clamp(0, self._area.w - x, 1), h = math.min(1, self._area.h) }
) )
@ -26,9 +26,9 @@ local function setup(_, opts)
local style = th.mgr.border_style local style = th.mgr.border_style
self._base = ya.list_merge(self._base or {}, { self._base = ya.list_merge(self._base or {}, {
ui.Border(ui.Border.ALL):area(self._area):type(type):style(style), ui.Border(ui.Edge.ALL):area(self._area):type(type):style(style),
ui.Bar(ui.Bar.RIGHT):area(self._chunks[1]):style(style), ui.Bar(ui.Edge.RIGHT):area(self._chunks[1]):style(style),
ui.Bar(ui.Bar.LEFT):area(self._chunks[3]):style(style), ui.Bar(ui.Edge.LEFT):area(self._chunks[3]):style(style),
bar("", c[1].right - 1, c[1].y), bar("", c[1].right - 1, c[1].y),
bar("", c[1].right - 1, c[1].bottom - 1), bar("", c[1].right - 1, c[1].bottom - 1),

View File

@ -1,8 +1,5 @@
# git.yazi # git.yazi
> [!NOTE]
> Yazi v25.2.26 or later is required for this plugin to work.
Show the status of Git file changes as linemode in the file list. Show the status of Git file changes as linemode in the file list.
https://github.com/user-attachments/assets/34976be9-a871-4ffe-9d5a-c4cdd0bf4576 https://github.com/user-attachments/assets/34976be9-a871-4ffe-9d5a-c4cdd0bf4576
@ -10,7 +7,7 @@ https://github.com/user-attachments/assets/34976be9-a871-4ffe-9d5a-c4cdd0bf4576
## Installation ## Installation
```sh ```sh
ya pack -a yazi-rs/plugins:git ya pkg add yazi-rs/plugins:git
``` ```
## Setup ## Setup

View File

@ -1,4 +1,4 @@
--- @since 25.4.4 --- @since 25.5.28
local WINDOWS = ya.target_family() == "windows" local WINDOWS = ya.target_family() == "windows"
@ -190,8 +190,8 @@ local function fetch(_, job)
-- stylua: ignore -- stylua: ignore
local output, err = Command("git") local output, err = Command("git")
:cwd(tostring(cwd)) :cwd(tostring(cwd))
:args({ "--no-optional-locks", "-c", "core.quotePath=", "status", "--porcelain", "-unormal", "--no-renames", "--ignored=matching" }) :arg({ "--no-optional-locks", "-c", "core.quotePath=", "status", "--porcelain", "-unormal", "--no-renames", "--ignored=matching" })
:args(paths) :arg(paths)
:stdout(Command.PIPED) :stdout(Command.PIPED)
:output() :output()
if not output then if not output then

View File

@ -10,7 +10,7 @@ This is a Yazi plugin for previewing media files. The preview shows thumbnail
using `ffmpeg` if available and media metadata using `mediainfo`. using `ffmpeg` if available and media metadata using `mediainfo`.
> [!IMPORTANT] > [!IMPORTANT]
> Minimum version: yazi v25.2.7. > Minimum version: yazi v25.5.28.
## Preview ## Preview
@ -48,13 +48,14 @@ Install mediainfo CLI:
Install + config this plugin: Install + config this plugin:
> [!IMPORTANT] > [!IMPORTANT] > `mediainfo` use video, image, svg, magick built-in plugins behind the scene to render preview image, song cover.
> `mediainfo` use video, image, svg, magick built-in plugins behind the scene to render preview image, song cover.
> So you can remove those 3 plugins from `preloaders` and `previewers` sections in `yazi.toml`. > So you can remove those 3 plugins from `preloaders` and `previewers` sections in `yazi.toml`.
If you have cache problem, run this cmd, and follow the tips: `yazi --clear-cache` If you have cache problem, run this cmd, and follow the tips: `yazi --clear-cache`
```bash ```bash
ya pkg add boydaihungst/mediainfo
# or
ya pack -a boydaihungst/mediainfo ya pack -a boydaihungst/mediainfo
``` ```

View File

@ -1,4 +1,4 @@
--- @since 25.2.7 --- @since 25.5.28
local skip_labels = { local skip_labels = {
["Complete name"] = true, ["Complete name"] = true,
@ -56,13 +56,13 @@ function M:peek(job)
return return
end end
local cache_mediainfo_path = tostring(cache_img_url_no_skip) .. suffix local cache_mediainfo_path = tostring(cache_img_url_no_skip) .. suffix
ya.sleep(math.max(0, (rt and rt.preview or PREVIEW).image_delay / 1000 + start - os.clock())) ya.sleep(math.max(0, rt.preview.image_delay / 1000 + start - os.clock()))
local output = read_mediainfo_cached_file(cache_mediainfo_path) local output = read_mediainfo_cached_file(cache_mediainfo_path)
local lines = {} local lines = {}
local max_lines = math.floor(job.area.h / 2) local max_lines = math.floor(job.area.h / 2)
local last_line = 0 local last_line = 0
local is_wrap = rt and rt.preview and rt.preview.wrap == "yes" local is_wrap = rt.preview.wrap == "yes"
if output then if output then
local max_width = math.max(1, job.area.w) local max_width = math.max(1, job.area.w)
@ -82,11 +82,11 @@ function M:peek(job)
if not skip_labels[label] then if not skip_labels[label] then
line = ui.Line({ line = ui.Line({
ui.Span(label .. ": "):style(ui.Style():fg("reset"):bold()), ui.Span(label .. ": "):style(ui.Style():fg("reset"):bold()),
ui.Span(value):style((th and th.spot and th.spot.tbl_col) or ui.Style():fg("blue")), ui.Span(value):style(th.spot.tbl_col or ui.Style():fg("blue")),
}) })
end end
elseif str ~= "General" then elseif str ~= "General" then
line = ui.Line({ ui.Span(str):style((th and th.spot and th.spot.title) or ui.Style():fg("green")) }) line = ui.Line({ ui.Span(str):style(th.spot.title or ui.Style():fg("green")) })
end end
if line then if line then
@ -105,7 +105,7 @@ function M:peek(job)
local mediainfo_height = math.min(max_lines, last_line) local mediainfo_height = math.min(max_lines, last_line)
if (job.skip > 0 and #lines == 0) and (not is_video or (is_video and job.skip >= 90)) then if (job.skip > 0 and #lines == 0) and (not is_video or (is_video and job.skip >= 90)) then
ya.manager_emit("peek", { math.max(0, job.skip - max_lines), only_if = job.file.url, upper_bound = false }) ya.emit("peek", { math.max(0, job.skip - max_lines), only_if = job.file.url, upper_bound = false })
return return
end end
local rendered_img_rect = cache_img_url local rendered_img_rect = cache_img_url
@ -121,7 +121,7 @@ function M:peek(job)
or nil or nil
local image_height = rendered_img_rect and rendered_img_rect.h or 0 local image_height = rendered_img_rect and rendered_img_rect.h or 0
ya.preview_widgets(job, { ya.preview_widget(job, {
ui.Text(lines) ui.Text(lines)
:area(ui.Rect({ :area(ui.Rect({
x = job.area.x, x = job.area.x,
@ -136,8 +136,7 @@ end
function M:seek(job) function M:seek(job)
local h = cx.active.current.hovered local h = cx.active.current.hovered
if h and h.url == job.file.url then if h and h.url == job.file.url then
local step = ya.clamp(-10, job.units, 10) ya.emit("peek", {
ya.manager_emit("peek", {
math.max(0, cx.active.preview.skip + job.units), math.max(0, cx.active.preview.skip + job.units),
only_if = job.file.url, only_if = job.file.url,
}) })
@ -165,8 +164,8 @@ function M:preload(job)
if cache_img_url_no_skip and (not cache_img_url_no_skip_cha or cache_img_url_no_skip_cha.len <= 0) then if cache_img_url_no_skip and (not cache_img_url_no_skip_cha or cache_img_url_no_skip_cha.len <= 0) then
-- audio -- audio
if job.mime and string.find(job.mime, "^audio/") then if job.mime and string.find(job.mime, "^audio/") then
local qv = 31 - math.floor((rt and rt.preview or PREVIEW).image_quality * 0.3) local qv = 31 - math.floor(rt.preview.image_quality * 0.3)
local status, _ = Command("ffmpeg"):args({ local status, _ = Command("ffmpeg"):arg({
"-v", "-v",
"quiet", "quiet",
"-threads", "-threads",
@ -185,10 +184,7 @@ function M:preload(job)
"-q:v", "-q:v",
qv, qv,
"-vf", "-vf",
string.format( string.format("scale=-1:'min(%d,ih)':flags=fast_bilinear", rt.preview.max_height / 2),
"scale=-1:'min(%d,ih)':flags=fast_bilinear",
(rt and rt.preview or PREVIEW).max_height / 2
),
"-f", "-f",
"image2", "image2",
"-y", "-y",
@ -224,7 +220,7 @@ function M:preload(job)
return true return true
end end
local cmd = "mediainfo" local cmd = "mediainfo"
local output, err = Command(cmd):args({ tostring(job.file.url) }):stdout(Command.PIPED):output() local output, err = Command(cmd):arg({ tostring(job.file.url) }):stdout(Command.PIPED):output()
if err then if err then
err_msg = err_msg .. string.format("Failed to start `%s`, Do you have `%s` installed?\n", cmd, cmd) err_msg = err_msg .. string.format("Failed to start `%s`, Do you have `%s` installed?\n", cmd, cmd)
end end

View File

@ -1,8 +1,5 @@
# mount.yazi # mount.yazi
> [!NOTE]
> Yazi v25.2.7 or later is required for this plugin to work.
A mount manager for Yazi, providing disk mount, unmount, and eject functionality. A mount manager for Yazi, providing disk mount, unmount, and eject functionality.
Supported platforms: Supported platforms:
@ -15,7 +12,7 @@ https://github.com/user-attachments/assets/c6f780ab-458b-420f-85cf-2fc45fcfe3a2
## Installation ## Installation
```sh ```sh
ya pack -a yazi-rs/plugins:mount ya pkg add yazi-rs/plugins:mount
``` ```
## Usage ## Usage
@ -23,7 +20,7 @@ ya pack -a yazi-rs/plugins:mount
Add this to your `~/.config/yazi/keymap.toml`: Add this to your `~/.config/yazi/keymap.toml`:
```toml ```toml
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "M" on = "M"
run = "plugin mount" run = "plugin mount"
``` ```

View File

@ -1,4 +1,4 @@
--- @since 25.2.26 --- @since 25.5.28
local toggle_ui = ya.sync(function(self) local toggle_ui = ya.sync(function(self)
if self.children then if self.children then
@ -12,7 +12,7 @@ end)
local subscribe = ya.sync(function(self) local subscribe = ya.sync(function(self)
ps.unsub("mount") ps.unsub("mount")
ps.sub("mount", function() ya.mgr_emit("plugin", { self._id, "refresh" }) end) ps.sub("mount", function() ya.emit("plugin", { self._id, "refresh" }) end)
end) end)
local update_partitions = ya.sync(function(self, partitions) local update_partitions = ya.sync(function(self, partitions)
@ -113,7 +113,7 @@ function M:entry(job)
elseif run == "enter" then elseif run == "enter" then
local active = active_partition() local active = active_partition()
if active and active.dist then if active and active.dist then
ya.mgr_emit("cd", { active.dist }) ya.emit("cd", { active.dist })
end end
else else
tx2:send(run) tx2:send(run)
@ -155,11 +155,11 @@ function M:redraw()
return { return {
ui.Clear(self._area), ui.Clear(self._area),
ui.Border(ui.Border.ALL) ui.Border(ui.Edge.ALL)
:area(self._area) :area(self._area)
:type(ui.Border.ROUNDED) :type(ui.Border.ROUNDED)
:style(ui.Style():fg("blue")) :style(ui.Style():fg("blue"))
:title(ui.Line("Mount"):align(ui.Line.CENTER)), :title(ui.Line("Mount"):align(ui.Align.CENTER)),
ui.Table(rows) ui.Table(rows)
:area(self._area:pad(ui.Pad(1, 2, 1, 2))) :area(self._area:pad(ui.Pad(1, 2, 1, 2)))
:header(ui.Row({ "Src", "Label", "Dist", "FSType" }):style(ui.Style():bold())) :header(ui.Row({ "Src", "Label", "Dist", "FSType" }):style(ui.Style():bold()))
@ -233,7 +233,7 @@ function M.fillin(tbl)
return tbl return tbl
end end
local output, err = Command("lsblk"):args({ "-p", "-o", "name,fstype", "-J" }):args(sources):output() local output, err = Command("lsblk"):arg({ "-p", "-o", "name,fstype", "-J" }):arg(sources):output()
if err then if err then
ya.dbg("Failed to fetch filesystem types for unmounted partitions: " .. err) ya.dbg("Failed to fetch filesystem types for unmounted partitions: " .. err)
return tbl return tbl
@ -256,14 +256,14 @@ function M.operate(type)
local output, err local output, err
if ya.target_os() == "macos" then if ya.target_os() == "macos" then
output, err = Command("diskutil"):args({ type, active.src }):output() output, err = Command("diskutil"):arg({ type, active.src }):output()
end end
if ya.target_os() == "linux" then if ya.target_os() == "linux" then
if type == "eject" then if type == "eject" then
Command("udisksctl"):args({ "unmount", "-b", active.src }):status() Command("udisksctl"):arg({ "unmount", "-b", active.src }):status()
output, err = Command("udisksctl"):args({ "power-off", "-b", active.src }):output() output, err = Command("udisksctl"):arg({ "power-off", "-b", active.src }):output()
else else
output, err = Command("udisksctl"):args({ type, "-b", active.src }):output() output, err = Command("udisksctl"):arg({ type, "-b", active.src }):output()
end end
end end

View File

@ -14,7 +14,7 @@ Preview file types using `rich` command in Yazi. This plugin allows preview for
## Requirements ## Requirements
- [Yazi](https://github.com/sxyazi/yazi) v0.4 or higher. - [Yazi](https://github.com/sxyazi/yazi) v25.4.8 or higher.
- [rich-cli](https://github.com/Textualize/rich) v13.7.1 or higher. - [rich-cli](https://github.com/Textualize/rich) v13.7.1 or higher.
## Installation ## Installation
@ -22,7 +22,7 @@ Preview file types using `rich` command in Yazi. This plugin allows preview for
To install this plugin, simply run- To install this plugin, simply run-
```bash ```bash
ya pack -a AnirudhG07/rich-preview ya pkg add AnirudhG07/rich-preview
## For linux and MacOS ## For linux and MacOS
git clone https://github.com/AnirudhG07/rich-preview.yazi.git ~/.config/yazi/plugins/rich-preview.yazi git clone https://github.com/AnirudhG07/rich-preview.yazi.git ~/.config/yazi/plugins/rich-preview.yazi

View File

@ -7,7 +7,7 @@ https://github.com/yazi-rs/plugins/assets/17523360/72aaf117-1378-4f7e-93ba-d425a
## Installation ## Installation
```sh ```sh
ya pack -a yazi-rs/plugins:smart-filter ya pkg add yazi-rs/plugins:smart-filter
``` ```
## Usage ## Usage
@ -15,7 +15,7 @@ ya pack -a yazi-rs/plugins:smart-filter
Add this to your `~/.config/yazi/keymap.toml`: Add this to your `~/.config/yazi/keymap.toml`:
```toml ```toml
[[manager.prepend_keymap]] [[mgr.prepend_keymap]]
on = "F" on = "F"
run = "plugin smart-filter" run = "plugin smart-filter"
desc = "Smart filter" desc = "Smart filter"

View File

@ -1,4 +1,4 @@
--- @since 25.2.26 --- @since 25.5.28
local hovered = ya.sync(function() local hovered = ya.sync(function()
local h = cx.active.current.hovered local h = cx.active.current.hovered
@ -28,20 +28,20 @@ local function entry()
while true do while true do
local value, event = input:recv() local value, event = input:recv()
if event ~= 1 and event ~= 3 then if event ~= 1 and event ~= 3 then
ya.mgr_emit("escape", { filter = true }) ya.emit("escape", { filter = true })
break break
end end
ya.mgr_emit("filter_do", { value, smart = true }) ya.emit("filter_do", { value, smart = true })
local h = hovered() local h = hovered()
if h.unique and h.is_dir then if h.unique and h.is_dir then
ya.mgr_emit("escape", { filter = true }) ya.emit("escape", { filter = true })
ya.mgr_emit("enter", {}) ya.emit("enter", {})
input = prompt() input = prompt()
elseif event == 1 then elseif event == 1 then
ya.mgr_emit("escape", { filter = true }) ya.emit("escape", { filter = true })
ya.mgr_emit(h.is_dir and "enter" or "open", { h.url }) ya.emit(h.is_dir and "enter" or "open", { h.url })
end end
end end
end end

View File

@ -9,14 +9,15 @@ what-size supports Yazi on Linux, macOS, and Windows.
### OS ### OS
- Linux since first commit - Linux since first commit
- macOS since commit `42c6a0efb7245badb16781da5380be1a1705f3f2` ([link](https://github.com/pirafrank/what-size.yazi/commit/42c6a0efb7245badb16781da5380be1a1705f3f2)) - macOS since commit `42c6a0e` ([link](https://github.com/pirafrank/what-size.yazi/commit/42c6a0efb7245badb16781da5380be1a1705f3f2))
- Windows since commit `4a56ead2a84c5969791fb17416e0b451ab906c5d` ([link](https://github.com/pirafrank/what-size.yazi/commit/4a56ead2a84c5969791fb17416e0b451ab906c5d)) - Windows since commit `4a56ead` ([link](https://github.com/pirafrank/what-size.yazi/commit/4a56ead2a84c5969791fb17416e0b451ab906c5d))
### Yazi ### Yazi
- yazi `25.x` since commit `fce1778d911621dc57796cdfdf11dcda3c2e28de` ([link](https://github.com/pirafrank/what-size.yazi/commit/fce1778d911621dc57796cdfdf11dcda3c2e28de)). - yazi `25.5.28` and onwards since commit `c5c939b` ([link](https://github.com/pirafrank/what-size.yazi/commit/c5c939bb37ec1d132c942cf5724d4e847acc2977))
- yazi `0.4.x` since commit `2780de5aeef1ed16d1973dd6e0cd4d630c900d56` ([link](https://github.com/pirafrank/what-size.yazi/commit/2780de5aeef1ed16d1973dd6e0cd4d630c900d56)). - yazi `25.x`-`25.4.8` since commit `fce1778` ([link](https://github.com/pirafrank/what-size.yazi/commit/fce1778d911621dc57796cdfdf11dcda3c2e28de))
- yazi `0.3.x` up to commit `f08f7f2d5c94958ac4cb66c51a7c24b4319c6c93` ([link](https://github.com/pirafrank/what-size.yazi/commit/f08f7f2d5c94958ac4cb66c51a7c24b4319c6c93)). - yazi `0.4.x` since commit `2780de5` ([link](https://github.com/pirafrank/what-size.yazi/commit/2780de5aeef1ed16d1973dd6e0cd4d630c900d56))
- yazi `0.3.x` up to commit `f08f7f2` ([link](https://github.com/pirafrank/what-size.yazi/commit/f08f7f2d5c94958ac4cb66c51a7c24b4319c6c93))
## Requirements ## Requirements

View File

@ -46,7 +46,7 @@ local function get_total_size(items)
return total return total
else else
local arg = ya.target_os() == "macos" and "-scA" or "-scb" local arg = ya.target_os() == "macos" and "-scA" or "-scb"
local output, err = Command("du"):arg(arg):args(items):output() local output, err = Command("du"):arg(arg):arg(items):output()
if not output then if not output then
ya.err("Failed to run du: " .. err) ya.err("Failed to run du: " .. err)
end end

View File

@ -2,7 +2,7 @@
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. # If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
"$schema" = "https://yazi-rs.github.io/schemas/yazi.json" "$schema" = "https://yazi-rs.github.io/schemas/yazi.json"
[manager] [mgr]
ratio = [ 1, 2, 3 ] ratio = [ 1, 2, 3 ]
sort_by = "alphabetical" sort_by = "alphabetical"
sort_sensitive = false sort_sensitive = false

View File

@ -77,7 +77,7 @@ function cd {
if [ $# -eq 0 ]; then if [ $# -eq 0 ]; then
new_directory=${HOME} new_directory=${HOME}
fi fi
builtin cd "${new_directory}" && eza -a --icons --group-directories-first z "${new_directory}" && eza -a --icons --group-directories-first
} }
# Use lf to switch directories and bind it to ctrl-o # Use lf to switch directories and bind it to ctrl-o
@ -87,7 +87,7 @@ lfcd() {
lf -last-dir-path="$tmp" "$@" lf -last-dir-path="$tmp" "$@"
if [ -f "$tmp" ]; then if [ -f "$tmp" ]; then
dir="$(cat "$tmp")" dir="$(cat "$tmp")"
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir" || return [ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && z "$dir" || return
fi fi
} }
@ -95,16 +95,41 @@ function yazicd() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" local tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
yazi "$@" --cwd-file="$tmp" yazi "$@" --cwd-file="$tmp"
if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
builtin cd -- "$cwd" && eza -a --icons --group-directories-first z -- "$cwd" && eza -a --icons --group-directories-first
fi fi
rm -f -- "$tmp" >/dev/null 2>&1 rm -f -- "$tmp" >/dev/null 2>&1
} }
tmux-window-name() {
function tmux-window-name() {
($TMUX_PLUGIN_MANAGER_PATH/tmux-window-name/scripts/rename_session_windows.py &) ($TMUX_PLUGIN_MANAGER_PATH/tmux-window-name/scripts/rename_session_windows.py &)
} }
# add-zsh-hook chpwd tmux-window-name function fzf_sesh_connect_widget() {
local session
session=$(
sesh list --icons | fzf-tmux -p 80%,70% \
--no-sort --ansi \
--border-label ' sesh ' \
--prompt '⚡ ' \
--header ' ^a all ^t tmux ^g configs ^x zoxide ^d tmux kill ^f find' \
--bind 'tab:down,btab:up' \
--bind 'ctrl-a:change-prompt(⚡ )+reload(sesh list --icons)' \
--bind 'ctrl-t:change-prompt(🪟 )+reload(sesh list -t --icons)' \
--bind 'ctrl-g:change-prompt(⚙️ )+reload(sesh list -c --icons)' \
--bind 'ctrl-x:change-prompt(📁 )+reload(sesh list -z --icons)' \
--bind 'ctrl-f:change-prompt(🔎 )+reload(fd -H -d 2 -t d -E .Trash . ~)' \
--bind 'ctrl-d:execute(tmux kill-session -t {2..})+change-prompt(⚡ )+reload(sesh list --icons)' \
--preview-window 'right:55%' \
--preview 'sesh preview {}'
)
# if the user picked something, build & run the command
if [[ -n $session ]]; then
BUFFER="sesh connect \"$session\""
zle accept-line
fi
}
zle -N fzf_sesh_connect_widget
# Navigate words with CTRL+ARROW keys # Navigate words with CTRL+ARROW keys
bindkey '^H' backward-kill-word # delete previous word with CTRL+BACKSPACE bindkey '^H' backward-kill-word # delete previous word with CTRL+BACKSPACE
@ -138,8 +163,8 @@ bindkey -M vicmd '^e' edit-command-line
bindkey -M visual '^[[P' vi-delete bindkey -M visual '^[[P' vi-delete
bindkey -s '^n' '^uv .\n' bindkey -s '^n' '^uv .\n'
bindkey -s '^f' '^utmux neww tmux-sessionizer\n' # bindkey -s '^f' '^utmux neww tmux-sessionizer\n'
bindkey '^F' fzf_sesh_connect_widget
eval "$(starship init zsh)" eval "$(starship init zsh)"
eval "$(fzf --zsh)" eval "$(fzf --zsh)"

View File

@ -1,37 +1,32 @@
#!/bin/bash #!/bin/bash
if [[ $# -eq 1 ]]; then if [[ $# -eq 1 ]]; then
selected=$1 selected="$1"
else else
selected=$(project-finder ~/repos/ ~/Nextcloud/ ~/Obsidian/ | sk --height 16) selected=$(project-finder ~/repos/ ~/Nextcloud/ ~/Obsidian/ | sk --height 16)
fi fi
if [[ -z $selected ]]; then if [[ -z "$selected" ]]; then
exit 0 exit 0
fi fi
selected_name=$(basename "$selected" | tr . _) selected_name=$(basename "$selected" | tr . _)
tmux_running=$(pgrep tmux)
if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
# Create new session with nvim in first window, detached
tmux new-session -ds "$selected_name" -c "$selected" "${EDITOR:-vim} ."
# Create second window as plain terminal
tmux new-window -t "$selected_name:" -c "$selected"
# Select the first window (index 0)
tmux select-window -t "$selected_name:1"
# Attach to the session
tmux attach-session -t "$selected_name"
exit 0
fi
# Check if the session exists
if ! tmux has-session -t="$selected_name" 2>/dev/null; then if ! tmux has-session -t="$selected_name" 2>/dev/null; then
# Create new session with nvim in first window, detached # Create a new session, detached, with window 0 in the selected directory
tmux new-session -ds "$selected_name" -c "$selected" "${EDITOR:-vim} ." tmux new-session -d -s "$selected_name" -c "$selected"
# Create second window as plain terminal # Create a second window (index 1) in the same directory
tmux new-window -t "$selected_name:" -c "$selected" tmux new-window -t "$selected_name:" -c "$selected"
# Select the first window (index 0)
tmux select-window -t "$selected_name:1"
fi fi
# Always select window 0
tmux select-window -t "$selected_name:1"
if [[ -z "$TMUX" ]]; then
# Not inside tmux, attach to the session
tmux attach-session -t "$selected_name"
else
# Inside tmux, switch client to the session
tmux switch-client -t "$selected_name" tmux switch-client -t "$selected_name"
fi