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"}
[wayland]
depends = [ "base", "hyprland", "dunst" ]
depends = [ "base", "hyprland", "dunst", "rofi" ]
[wayland.files]
"config/zsh/.zprofile-wayland" = "~/.config/zsh/.zprofile"
@ -48,6 +48,12 @@ depends = [ "shell" ]
"config/shell/env" = "~/.zshenv"
"config/zsh/" = "~/.config/zsh/"
[fish]
depends = [ "shell" ]
[fish.files]
"config/fish/" = "~/.config/fish/"
[local.files]
"local/bin/" = "~/.local/bin/"
"local/share/" = "~/.local/share/"
@ -59,7 +65,7 @@ depends = [ "shell" ]
"config/rofi/config.rasi" = {target = "~/.config/rofi/config.rasi", type = "template"}
[misc]
depends = [ "torrent", "zathura" ]
depends = [ "torrent", "zathura", "email" ]
[misc.files]
"config/batrc" = "~/.config/bat/config"
@ -127,8 +133,11 @@ depends = [ "misc", "local", "eww", "lock" ]
[spotify.files]
"config/spotify-tui.yml" = "~/.config/spotify-tui/config.yml"
[email.files]
"config/neomutt/" = "~/.config/neomutt/"
[terminal]
depends = [ "zsh", "tmux" ]
depends = [ "zsh", "tmux", "fish" ]
[terminal.files]
"config/alacritty/" = "~/.config/alacritty/"
@ -139,6 +148,7 @@ depends = [ "zsh", "tmux" ]
[tmux.files]
"config/tmux/" = "~/.config/tmux/"
"config/sesh/" = "~/.config/sesh/"
[xplr.files]
"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.
local terminal = "{{terminal}}"
local browser = "{{browser}}"
local editor = os.getenv("EDITOR") or "nvim"
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 }, "b", function()
awful.spawn("floorp")
awful.spawn(browser)
end, { description = "open browser", group = "launcher" }),
awful.key({ modkey }, "n", function()
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.
local terminal = "{{terminal}}"
local browser = "{{browser}}"
local editor = os.getenv("EDITOR") or "nvim"
local editor_cmd = terminal .. " -e " .. editor
@ -107,9 +108,9 @@ local myawesomemenu = {
hotkeys_popup.show_help(nil, awful.screen.focused())
end,
},
{ "manual", terminal .. " -e man awesome" },
{ "manual", terminal .. " -e man awesome" },
{ "edit config", editor_cmd .. " " .. awesome.conffile },
{ "restart", awesome.restart },
{ "restart", awesome.restart },
{
"quit",
function()
@ -430,7 +431,7 @@ local globalkeys = gears.table.join(
-- awful.key({ modkey, "Control" }, "q", awesome.quit, { description = "quit awesome", group = "awesome" }),
awful.key({ modkey }, "b", function()
awful.spawn("floorp")
awful.spawn(browser)
end, { description = "open browser", group = "launcher" }),
awful.key({ modkey }, "n", function()
awful.spawn(terminal .. " -e yazi")
@ -485,7 +486,7 @@ local globalkeys = gears.table.join(
-- Menubar
awful.key({ modkey }, "p", function()
-- menubar.show()
awful.spawn("rofi -show drun -show-icons")
awful.spawn("rofi -show combi -show-icons")
end, { description = "show the menubar", group = "launcher" })
)
@ -672,9 +673,9 @@ awful.rules.rules = {
rule_any = { class = { "easyeffects" } },
properties = { screen = 1, tag = "9" },
},
{ rule_any = { class = { "kdeconnect.app" } }, properties = { screen = 2, tag = "7" } },
{ rule_any = { class = { "Spotify" } }, properties = { screen = 2, tag = "9" } },
{ rule_any = { class = { "mpv" } }, properties = { fullscreen = true } },
{ rule_any = { class = { "kdeconnect.app" } }, properties = { screen = 2, tag = "7" } },
{ rule_any = { class = { "Spotify" } }, properties = { screen = 2, tag = "9" } },
{ rule_any = { class = { "mpv" } }, properties = { fullscreen = true } },
}
--- Signals

View File

@ -4,7 +4,7 @@
# Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes`
# for a list of all available themes
--theme="Rosé Pine"
--theme="base16"
# Enable this to use italic text on the terminal. This is not supported on all
# 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.
#* 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",
#* "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.
proc_reversed = False
@ -72,7 +72,7 @@ proc_colors = 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.
proc_per_core = False
proc_per_core = True
#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
@ -210,6 +210,9 @@ net_sync = False
#* Starts with the Network Interface specified here.
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 = True
@ -226,6 +229,9 @@ log_level = "WARNING"
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
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.
gpu_mirror_graph = True

View File

@ -146,6 +146,10 @@ clock_time {
margin: 0px 10px 0px 10px;
}
.module-wifi {
margin: 0 10px;
}
.separ {
color: $highlight_med;
font-weight: bold;
@ -472,3 +476,11 @@ calendar:indeterminate {
min-width: 120px;
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}%"
:show_truncated false
:wrap false
"${EWW_BATTERY.BAT0.status == "Charging" ? "" :
EWW_BATTERY.BAT0.capacity > 90 ? "" :
EWW_BATTERY.BAT0.capacity > 70 ? "" :
EWW_BATTERY.BAT0.capacity > 40 ? "" :
EWW_BATTERY.BAT0.capacity > 20 ? "" :
""}"
;; "${EWW_BATTERY.BAT0.status == "Charging" ? "" :
;; EWW_BATTERY.BAT0.capacity > 90 ? "" :
;; EWW_BATTERY.BAT0.capacity > 70 ? "" :
;; EWW_BATTERY.BAT0.capacity > 40 ? "" :
;; EWW_BATTERY.BAT0.capacity > 20 ? "" :
;; ""}"
))))
@ -124,7 +124,7 @@
:tooltip "Using ${memory}% ram"
:show_truncated false
:wrap false
""))))
))))
@ -311,12 +311,12 @@
:class "sys_bat"
:thickness 9
(label
:text "${EWW_BATTERY.BAT0.status == "Charging" ? "" :
EWW_BATTERY.BAT0.capacity > 90 ? "" :
EWW_BATTERY.BAT0.capacity > 70 ? "" :
EWW_BATTERY.BAT0.capacity > 40 ? "" :
EWW_BATTERY.BAT0.capacity > 20 ? "" :
""}"
;; :text "${EWW_BATTERY.BAT0.status == "Charging" ? "" :
;; EWW_BATTERY.BAT0.capacity > 90 ? "" :
;; EWW_BATTERY.BAT0.capacity > 70 ? "" :
;; EWW_BATTERY.BAT0.capacity > 40 ? "" :
;; EWW_BATTERY.BAT0.capacity > 20 ? "" :
;; ""}"
: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" : ""}"
:limit-width 2
@ -350,7 +350,7 @@
:show_truncated false
:wrap false)))
(label
:text ""
:text ""
:class "sys_sep"
:halign "center")
(box
@ -363,7 +363,6 @@
:class "sys_mem"
:thickness 9
(label
:text ""
:class "sys_icon_mem"
:limit-width 2
:show_truncated false
@ -566,3 +565,16 @@
(box :class "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

@ -3,7 +3,7 @@
status=$(nmcli g | \grep -oE "disconnected")
essid=$(nmcli c | \grep wlan0 | awk '{print ($1)}')
if [ $status ] ; then
if [ $status ]; then
icon=""
text=""
col="#575268"
@ -16,8 +16,7 @@ fi
if [[ "$1" == "--COL" ]]; then
echo $col
elif [[ "$1" == "--ESSID" ]]; then
echo $text
echo $text
elif [[ "$1" == "--ICON" ]]; then
echo $icon
echo $icon
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
mouse-hide-while-typing = true
confirm-close-surface = false
mouse-scroll-multiplier = 0.5
# Keybinds
keybind = alt+f4=ignore

View File

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

View File

@ -16,9 +16,10 @@
# See https://wiki.hyprland.org/Configuring/Monitors/
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,auto,1
# monitor=HDMI-A-1,prefered,mirror,eDP-1
# monitor=DP-1,prefered,mirror,eDP-1
# monitor=DP-1,disabled
###################
@ -30,8 +31,9 @@ monitor=HDMI-A-1,prefered,auto,1
# Set programs that you use
$terminal = {{terminal}}
$fileManager = $terminal -e yazi
$menu = wofi --show drun -ib
$browser = floorp
# $menu = wofi --show drun -ib
$menu = rofi -show combi -show-icons
$browser = {{browser}}
#################
### AUTOSTART ###
@ -40,11 +42,11 @@ $browser = floorp
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# 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=eww daemon & eww open bar & 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=pipewire & pipewire-pulse & wireplumber & eww daemon & eww open bar
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 & hyprpaper
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
# Source a file (multi-file configs)
@ -72,8 +74,8 @@ env = WM,Hyprland
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 5
gaps_out = 10
gaps_in = 4
gaps_out = 8
border_size = 2
@ -87,13 +89,13 @@ general {
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = master
layout = dwindle
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 5
# rounding_power = 2
rounding = 4
rounding_power = 4
# Change transparency of focused and unfocused windows
active_opacity = 1.0
@ -110,7 +112,7 @@ decoration {
blur {
enabled = true
size = 3
passes = 1
passes = 3
vibrancy = 0.1696
}
@ -159,6 +161,7 @@ animations {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
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
}
@ -170,10 +173,10 @@ master {
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
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 ###
#############
@ -211,6 +214,9 @@ device {
sensitivity = -0.5
}
cursor {
hide_on_key_press = true
}
###################
### KEYBINDINGS ###
@ -225,6 +231,9 @@ bind = $mainMod SHIFT, Q, killactive
bind = $mainMod, N, exec, $fileManager
bind = $mainMod CTRL, SPACE, togglefloating
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, F, fullscreen
bind = $mainMod, M, bringactivetotop
@ -375,12 +384,12 @@ windowrulev2 = opacity 0.95, class:thunderbird
windowrulev2 = workspace 8, class:discord
windowrulev2 = opacity 0.95, class:discord
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:TelegramDesktop
windowrulev2 = opacity 0.95, class:TelegramDesktop
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 = workspace 5, class:Ferdium
windowrulev2 = opacity 0.9, class:Ferdium
@ -394,7 +403,6 @@ windowrulev2 = opacity 0.9, class:Spotify
# chromakey_background = 7,8,17
windowrulev2 = opacity 0.95, class:qbittorrent
windowrulev2 = opacity 0.95, class:lutris
windowrulev2 = opacity 0.95, class:pacfinder
windowrulev2 = opacity 0.9, class:Bitwarden
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 = size 250 250, class:galculator
windowrulev2 = float, class:galculator
windowrulev2=float,title:^(flameshot)
windowrulev2=move 0 0,title:^(flameshot)
windowrulev2=suppressevent fullscreen,title:^(flameshot)

View File

@ -1,4 +1,4 @@
$font = JetBrainsMonoNF
$font = JetBrainsMono NF
$base = rgb(191724)
$surface = rgb(1f1d2e)

View File

@ -1,7 +1,5 @@
ipc = off
ipc = off # save on baterry
splash = true
preload = ~/Pictures/wallpapers/Linux-Dynamic-Wallpapers/Firewatch2/Firewatch2-1.png
preload = ~/Pictures/wallpapers/Linux-Dynamic-Wallpapers/LakesideDeerComplete/LakesideDeer-03.png
preload = ~/Pictures/wallpapers/abstract/GDWP-789-4K-No-Logo.jpg
preload = ~/Pictures/wallpapers/anime/frieren/frieren-beyond-journeys-end-anime-4k-wallpaper.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"
configuration {
modes: "window,drun,run,ssh,filebrowser";
modes: "window,drun,run,ssh,filebrowser,games,calc";
font: "JetBrainsMono NF 12";
// location: 0;
// yoffset: 0;
@ -34,7 +34,7 @@ configuration {
// auto-select: false;
// parse-hosts: false;
// parse-known-hosts: true;
// combi-modes: "window,run";
combi-modes: "drun,games";
matching: "fuzzy";
// tokenize: true;
// 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" \
lf="lfub" \
lg="lazygit" \
lzd="lazydocker" \
lock="swaylock" \
lzd="lazydocker" \
night="redshift -PO 4500" \
py="python" \
sv="rsv" \
@ -45,6 +45,7 @@ alias \
wg-up="wg-quick up wg0" \
ww="$EDITOR ~/neorg/" \
yarn="yarn --use-yarnrc $XDG_CONFIG_HOME/yarn/config" \
va="source .venv/bin/activate" \
yy="yazi"
alias \

View File

@ -10,11 +10,14 @@ typeset -U PATH path
export PATH="$PATH:${$(find ~/.local/bin -type d -printf %p:)%%:}"
export PATH="$PATH:~/.spicetify"
export PATH="$PATH:${$(find ~/.cache/.bun/bin -type d -printf %p:)%%:}"
export PATH=$JAVA_HOME/bin:$PATH
# Disable files
export LESSHISTFILE=-
export $(dbus-launch)
export MANPAGER='nvim +Man!'
export LIBSEAT_BACKEND=logind
unsetopt PROMPT_SP
@ -87,6 +90,7 @@ export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc"
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"
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk"
# Other program settings
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_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
add_newline = false
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-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/tmux-sensible"
@ -56,6 +71,7 @@ set -g @plugin "rose-pine/tmux"
set -ga update-environment TERM
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-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 C-v send-keys -X rectangle-toggle
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

View File

@ -2,7 +2,7 @@
# 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"
[manager]
[mgr]
keymap = [
{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"},

View File

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

View File

@ -21,6 +21,7 @@ plugin.
- [Leave (`leave`)](#leave-leave)
- [Rename (`rename`)](#rename-rename)
- [Remove (`remove`)](#remove-remove)
- [Copy (`copy`)](#copy-copy)
- [Create (`create`)](#create-create)
- [Shell (`shell`)](#shell-shell)
- [Passing arguments to the `shell` command](#passing-arguments-to-the-shell-command)
@ -32,16 +33,20 @@ plugin.
- [New commands](#new-commands)
- [Parent arrow (`parent_arrow`)](#parent-arrow-parent_arrow)
- [Archive (`archive`)](#archive-archive)
- [Emit (`emit`)](#emit-emit)
- [Editor (`editor`)](#editor-editor)
- [Pager (`pager`)](#pager-pager)
- [Usage](#usage)
- [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)
- [Licence](#licence)
- [Licence]
## Requirements
- [Yazi][yazi-link] v25.4.8+
- [Yazi][yazi-link] v25.5.28+
- [`7z` or `7zz` command][7z-link]
- [`file` command][file-command-link]
@ -53,13 +58,13 @@ plugin.
```sh
# Add the plugin
ya pack -a hankertrix/augment-command
ya pkg add hankertrix/augment-command
# Install plugin
ya pack -i
ya pkg install
# Update plugin
ya pack -u
ya pkg upgrade
```
## Configuration
@ -498,6 +503,29 @@ then it will operate on the selected items.
[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`)
- 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
# %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "i"
run = "plugin augment-command -- shell '$PAGER $@' --block --exit-if-dir"
desc = "Open the pager"
@ -633,7 +661,7 @@ then it will operate on the selected items.
# ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "o"
run = "plugin augment-command -- shell '$EDITOR $@' --block --exit-if-dir"
desc = "Open the editor"
@ -658,7 +686,7 @@ the shell command arguments, so here are a few ways to do it:
```toml
# ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "i"
run = "plugin augment-command -- shell --block 'bat -p --pager less $@'"
desc = "Open with bat"
@ -682,7 +710,7 @@ the shell command arguments, so here are a few ways to do it:
```toml
# ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "<C-s>"
run = 'plugin augment-command -- shell --block -- sh -c "$SHELL"'
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
# ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "<C-s>"
run = "plugin augment-command -- shell --block -- sh -c 'echo hello'"
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
# ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "<C-s>"
run = '''plugin augment-command -- shell --block -- sh -c 'sh -c "$SHELL"''''
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
# ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "<C-s>"
run = '''plugin augment-command --
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
# ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "<C-e>"
run = '''plugin augment-command --
shell --
@ -947,14 +975,14 @@ in your `keymap.toml` file.
# %AppData%\yazi\config\keymap.toml on Windows
# Use K to move up in the parent directory
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "K"
run = ["leave", "arrow -1", "enter"]
desc = "Move up in the parent directory"
# Use J to move down in the parent directory
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "J"
run = ["leave", "arrow 1", "enter"]
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.
The archive file extension given will be used to determine
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 section above][augment-section].
@ -991,6 +1029,8 @@ in your `keymap.toml` file.
[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,
which applies even when `encrypt_archives` is set to `false`.
- `--encrypt-headers` flag to encrypt the archive headers,
@ -1025,10 +1065,55 @@ in your `keymap.toml` file.
[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`)
- The `editor` command opens the default editor set by the
`$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
[this section above][augment-section].
@ -1093,7 +1178,7 @@ on Windows, in this format:
# ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "key"
run = "plugin augment-command -- command arguments --flags --options=42"
desc = "Description"
@ -1105,7 +1190,7 @@ For example, to use the augmented `enter` command:
# ~/.config/yazi/keymap.toml on Linux and macOS
# %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "l"
run = "plugin augment-command -- enter"
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
# %AppData%\yazi\config\keymap.toml on Windows
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "k"
run = "plugin augment-command -- arrow -1"
desc = "Move cursor up"
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "r"
run = "plugin augment-command -- rename --cursor=before_ext"
desc = "Rename a file or directory"
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "D"
run = "plugin augment-command -- remove --permanently"
desc = "Permanently delete the files"
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = ["g", "j"]
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)
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
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-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
[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
[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
@ -1190,110 +1437,123 @@ You can view the full licence in the [`LICENSE`][Licence] file.
<!-- Open command -->
[open-prompt-video]: https://github.com/user-attachments/assets/624da7a1-99cc-428d-acbb-d4ce684f92cb
[open-behaviour-video]: https://github.com/user-attachments/assets/202f1c07-2001-49d7-a9d7-7a4e7b102c41
[open-auto-extract-archives-video]: https://github.com/user-attachments/assets/dad0572e-15d7-4dfd-bf48-00851af66b6e
[open-recursively-extract-archives-video]: https://github.com/user-attachments/assets/b8e929ce-32cd-4f7e-ad97-ffe94bdacd71
[open-prompt-video]: https://github.com/user-attachments/assets/a792f9d9-97f3-4fab-95cc-03b33c58dd47
[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/a406391a-b31d-4b45-afa1-b982ddd89eaf
[open-recursively-extract-archives-video]: https://github.com/user-attachments/assets/a960f152-4391-4d55-bd0e-0a08efb42729
<!-- Extract command -->
[extract-must-have-hovered-item-video]: https://github.com/user-attachments/assets/6b9f347f-34ce-4ca1-8e3a-24dbeb297dc7
[extract-hovered-item-optional-video]: https://github.com/user-attachments/assets/1596f9f8-e0f5-49e3-964c-6f94b1c24055
[extract-prompt-video]: https://github.com/user-attachments/assets/568aef53-dc90-420e-ada9-171f56388ee1
[extract-behaviour-video]: https://github.com/user-attachments/assets/d6ebf5fb-45d3-4ae0-adab-3e89b1ec2f4e
[extract-recursively-extract-archives-video]: https://github.com/user-attachments/assets/d8978671-9149-45b7-9a92-21c1697baa7d
[extract-encrypted-archive-video]: https://github.com/user-attachments/assets/24701662-0c19-4478-b576-75d9284cd695
[extract-reveal-extracted-item-video]: https://github.com/user-attachments/assets/170bf187-dc2a-4310-aa86-5dc9a864aced
[extract-remove-extracted-archive-video]: https://github.com/user-attachments/assets/9b2e625a-a7f8-4678-8a26-265a7d3b8e0c
[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/85d5a6bf-ed35-4f9a-b782-faea119da7c5
[extract-prompt-video]: https://github.com/user-attachments/assets/40f41727-7e55-44d8-816c-e706d09e27b8
[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/d9e7030c-9491-4dfa-a1f4-baf3a45eed64
[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/96d7fe43-024a-4b1e-b961-9ab9c708db83
[extract-remove-extracted-archive-video]: https://github.com/user-attachments/assets/7b700ffc-3ce6-4185-a8b0-8ecfd09c2519
<!-- Enter command -->
[smart-enter-video]: https://github.com/user-attachments/assets/be950544-a58f-495a-a7e8-e37e99011070
[enter-skip-single-subdirectory-video]: https://github.com/user-attachments/assets/1bd30cb0-611a-44f2-9839-968287af4455
[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/8069e828-d2dd-4c69-a0b8-fe13074de715
<!-- 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-must-have-hovered-item-video]: https://github.com/user-attachments/assets/b0f608df-7e8d-4e5f-958f-b3df9d0a92fa
[rename-hovered-item-optional-video]: https://github.com/user-attachments/assets/9613d238-d8e3-4e6f-b073-f847a4f331a1
[rename-prompt-video]: https://github.com/user-attachments/assets/6ad26e1b-dab1-4e8e-92af-bfcbf6c5232c
[rename-behaviour-video]: https://github.com/user-attachments/assets/fdd70919-f164-4676-9046-6a4b95cd86ed
[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/8bf0001d-6d39-4c4f-a364-b399e65208e8
[rename-prompt-video]: https://github.com/user-attachments/assets/a3926488-f127-4d35-b9ab-7943f01abcb3
[rename-behaviour-video]: https://github.com/user-attachments/assets/e3d65d76-34d5-45a4-918d-0b28e662840a
<!-- Remove command -->
[remove-must-have-hovered-item-video]: https://github.com/user-attachments/assets/fa0aeb4e-ee6a-4e34-9c6f-4d4bc0afd111
[remove-hovered-item-optional-video]: https://github.com/user-attachments/assets/f42167dc-df59-451d-b26b-16e75be93fad
[remove-prompt-video]: https://github.com/user-attachments/assets/dd901db3-1ab4-4cb7-bb3f-8aec335c7b94
[remove-behaviour-video]: https://github.com/user-attachments/assets/d4087826-3480-486d-98ff-708bca548270
[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/01a3fc57-cc90-47f5-b744-d3eed00ac237
[remove-prompt-video]: https://github.com/user-attachments/assets/18940b9f-4f04-4ab3-a6a9-b35ee8084bd8
[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-and-enter-directories-video]: https://github.com/user-attachments/assets/0604e9a3-7c23-4e9c-963a-6e83955fe7ae
[create-and-open-files-video]: https://github.com/user-attachments/assets/2feee5e5-1d56-4150-8f08-101338392950
[create-and-open-files-and-directories-video]: https://github.com/user-attachments/assets/629a6923-6fa5-4b85-93b7-3b5495c8bbbb
[create-behaviour-video]: https://github.com/user-attachments/assets/55b485ea-e49e-4629-b077-4f2a81031f38
[create-default-behaviour-video]: https://github.com/user-attachments/assets/acf04af0-107f-4ebb-9ed2-2a03847071a5
[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/b7ff1e6c-4c70-4598-a5f6-a88e1559f5d9
[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/44bdc556-cde7-4ab9-b3c0-05c4f1fa3120
[create-default-behaviour-video]: https://github.com/user-attachments/assets/4948fd32-27a9-4546-83f9-ad6fa9c6afa8
<!-- Shell command -->
[shell-must-have-hovered-item-video]: https://github.com/user-attachments/assets/d9a49cb7-67fd-40fe-8f68-130561de0cca
[shell-hovered-item-optional-video]: https://github.com/user-attachments/assets/f7fdfa7c-d7cc-4157-bb5f-63c37f82ea5b
[shell-prompt-video]: https://github.com/user-attachments/assets/6648ad92-320f-457d-9f3e-b5da6f1c07bc
[shell-behaviour-video]: https://github.com/user-attachments/assets/4727658f-e27c-4fbe-acd7-acfeac54cd17
[shell-exit-if-directory-video]: https://github.com/user-attachments/assets/ef0e9818-cc81-45fc-9126-6903314ed6b3
[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/4643b23e-a2df-465f-8f62-3501747038b8
[shell-prompt-video]: https://github.com/user-attachments/assets/929e6a68-7e3f-4614-8344-c0a482d471ad
[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/f7cef7a0-027b-462f-8fe0-b107e5844736
<!-- 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 -->
[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 -->
[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-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 -->
[smooth-arrow-video]: https://github.com/user-attachments/assets/990935f5-ce6e-4536-9ddc-d8a32da69803
[wraparound-arrow-video]: https://github.com/user-attachments/assets/b8233e26-06b7-436d-bafa-1639ed12aa53
[smooth-wraparound-arrow-video]: https://github.com/user-attachments/assets/59d3618a-59cd-448d-b552-e3cc796d109e
[smooth-arrow-video]: https://github.com/user-attachments/assets/04683520-6028-4246-b529-eac6d3a936cf
[wraparound-arrow-video]: https://github.com/user-attachments/assets/f2555189-4628-4745-89f4-9ecb4ef070ab
[smooth-wraparound-arrow-video]: https://github.com/user-attachments/assets/5d603738-a527-4e19-80fd-db41ae76e42b
<!-- Parent arrow command -->
[parent-arrow-video]: https://github.com/user-attachments/assets/c412ed7b-a6ee-44e7-bf68-f9f2e5214a50
[smooth-parent-arrow-video]: https://github.com/user-attachments/assets/45fdfa5f-86ef-453c-89a8-1c58d6318e93
[wraparound-parent-arrow-video]: https://github.com/user-attachments/assets/3a429a57-2dc6-47c6-be4e-fab5844bafde
[smooth-wraparound-parent-arrow-video]: https://github.com/user-attachments/assets/7d3d58ea-4b00-4cb2-9aea-950940b1ad1a
[parent-arrow-video]: https://github.com/user-attachments/assets/166a83d6-c7ef-4269-b725-62dde60f078f
[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/229e11f8-a5e4-4237-93f3-d6c8875c9e78
[smooth-wraparound-parent-arrow-video]: https://github.com/user-attachments/assets/7739afe5-e34d-466e-adf2-3e8a8732f04d
<!-- Archive command -->
[archive-must-have-hovered-item-video]: https://github.com/user-attachments/assets/a8d667c8-a8a5-44ed-9220-aa55345c98ed
[archive-hovered-item-optional-video]: https://github.com/user-attachments/assets/213f82d2-fe70-4c42-8f24-b09c7d7d7dfe
[archive-prompt-video]: https://github.com/user-attachments/assets/20366432-f195-4531-bb08-9b3f0e8f848e
[archive-behaviour-video]: https://github.com/user-attachments/assets/dcbe9909-db40-4f96-8591-c1a104b63381
[archive-encrypt-files-video]: https://github.com/user-attachments/assets/08b98e01-2cc2-486e-bd4d-bfbe9da792db
[archive-reveal-created-archive-video]: https://github.com/user-attachments/assets/e908afb8-c431-4e6d-8834-c02216461076
[archive-remove-archived-files-video]: https://github.com/user-attachments/assets/d0495292-6508-4417-b378-033e6acc0c4d
[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/b33fbcdf-1e00-49db-aede-99c2c3a26171
[archive-prompt-video]: https://github.com/user-attachments/assets/ddc0a2e7-9b90-416f-97e3-57af5ad5f355
[archive-behaviour-video]: https://github.com/user-attachments/assets/437254d2-4746-41e7-9500-13cef60764b7
[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/86f01452-42a4-4a97-9d31-ce6f9bc10407
[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-must-have-hovered-item-video]: https://github.com/user-attachments/assets/a0e4500d-7bfe-4fb1-9289-8c39c5c6f323
[editor-hovered-item-optional-video]: https://github.com/user-attachments/assets/96798f1f-2ddc-464a-b6ae-48cc20f88b3c
[editor-prompt-video]: https://github.com/user-attachments/assets/5453cc87-3721-4b80-8cc2-b730ddff5da8
[editor-behaviour-video]: https://github.com/user-attachments/assets/f479ef38-5b78-43f1-83d4-045bef6f5f20
[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/3481a3be-d91c-4903-b7a1-80d3048fcf6b
[editor-prompt-video]: https://github.com/user-attachments/assets/7cdb942f-0ad3-453c-93a5-ab89df5cd644
[editor-behaviour-video]: https://github.com/user-attachments/assets/e7537e2e-56a0-4681-9820-5b48cd583bc8
<!-- Pager command -->
[pager-must-have-hovered-item-video]: https://github.com/user-attachments/assets/7daa8e81-bc83-4ff3-9462-d71293565e67
[pager-hovered-item-optional-video]: https://github.com/user-attachments/assets/e123fb58-d49e-46b6-bc33-c41eb01cf9aa
[pager-prompt-video]: https://github.com/user-attachments/assets/cfba76a1-116e-4caf-b25a-57d631d115a0
[pager-behaviour-video]: https://github.com/user-attachments/assets/d036f865-2909-414b-80d9-80e550b6b3dd
[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/ca5f1126-4761-4289-a441-4b44c7234e57
[pager-prompt-video]: https://github.com/user-attachments/assets/45d758e0-f95c-4e2e-92b2-094c2f475c00
[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
```sh
ya pack -a yazi-rs/plugins:chmod
ya pkg add yazi-rs/plugins:chmod
```
## Usage
@ -15,7 +15,7 @@ ya pack -a yazi-rs/plugins:chmod
Add this to your `~/.config/yazi/keymap.toml`:
```toml
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = [ "c", "m" ]
run = "plugin chmod"
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 tab, paths = cx.active, {}
@ -13,7 +13,7 @@ end)
return {
entry = function()
ya.mgr_emit("escape", { visual = true })
ya.emit("escape", { visual = true })
local urls = selected_or_hovered()
if #urls == 0 then
@ -28,7 +28,7 @@ return {
return
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
ya.notify {
title = "Chmod",

View File

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

View File

@ -7,10 +7,10 @@ local function setup(_, opts)
Tab.build = function(self, ...)
local bar = function(c, x, y)
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
return ui.Bar(ui.Bar.TOP)
return ui.Bar(ui.Edge.TOP)
: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) }
)
@ -26,9 +26,9 @@ local function setup(_, opts)
local style = th.mgr.border_style
self._base = ya.list_merge(self._base or {}, {
ui.Border(ui.Border.ALL):area(self._area):type(type):style(style),
ui.Bar(ui.Bar.RIGHT):area(self._chunks[1]):style(style),
ui.Bar(ui.Bar.LEFT):area(self._chunks[3]):style(style),
ui.Border(ui.Edge.ALL):area(self._area):type(type):style(style),
ui.Bar(ui.Edge.RIGHT):area(self._chunks[1]):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].bottom - 1),

View File

@ -1,8 +1,5 @@
# 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.
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
```sh
ya pack -a yazi-rs/plugins:git
ya pkg add yazi-rs/plugins:git
```
## Setup

View File

@ -1,4 +1,4 @@
--- @since 25.4.4
--- @since 25.5.28
local WINDOWS = ya.target_family() == "windows"
@ -190,8 +190,8 @@ local function fetch(_, job)
-- stylua: ignore
local output, err = Command("git")
:cwd(tostring(cwd))
:args({ "--no-optional-locks", "-c", "core.quotePath=", "status", "--porcelain", "-unormal", "--no-renames", "--ignored=matching" })
:args(paths)
:arg({ "--no-optional-locks", "-c", "core.quotePath=", "status", "--porcelain", "-unormal", "--no-renames", "--ignored=matching" })
:arg(paths)
:stdout(Command.PIPED)
:output()
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`.
> [!IMPORTANT]
> Minimum version: yazi v25.2.7.
> Minimum version: yazi v25.5.28.
## Preview
@ -48,13 +48,14 @@ Install mediainfo CLI:
Install + config this plugin:
> [!IMPORTANT]
> `mediainfo` use video, image, svg, magick built-in plugins behind the scene to render preview image, song cover.
> [!IMPORTANT] > `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`.
If you have cache problem, run this cmd, and follow the tips: `yazi --clear-cache`
```bash
ya pkg add boydaihungst/mediainfo
# or
ya pack -a boydaihungst/mediainfo
```

View File

@ -1,4 +1,4 @@
--- @since 25.2.7
--- @since 25.5.28
local skip_labels = {
["Complete name"] = true,
@ -56,13 +56,13 @@ function M:peek(job)
return
end
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 lines = {}
local max_lines = math.floor(job.area.h / 2)
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
local max_width = math.max(1, job.area.w)
@ -82,11 +82,11 @@ function M:peek(job)
if not skip_labels[label] then
line = ui.Line({
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
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
if line then
@ -105,7 +105,7 @@ function M:peek(job)
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
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
end
local rendered_img_rect = cache_img_url
@ -121,7 +121,7 @@ function M:peek(job)
or nil
local image_height = rendered_img_rect and rendered_img_rect.h or 0
ya.preview_widgets(job, {
ya.preview_widget(job, {
ui.Text(lines)
:area(ui.Rect({
x = job.area.x,
@ -136,8 +136,7 @@ end
function M:seek(job)
local h = cx.active.current.hovered
if h and h.url == job.file.url then
local step = ya.clamp(-10, job.units, 10)
ya.manager_emit("peek", {
ya.emit("peek", {
math.max(0, cx.active.preview.skip + job.units),
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
-- audio
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 status, _ = Command("ffmpeg"):args({
local qv = 31 - math.floor(rt.preview.image_quality * 0.3)
local status, _ = Command("ffmpeg"):arg({
"-v",
"quiet",
"-threads",
@ -185,10 +184,7 @@ function M:preload(job)
"-q:v",
qv,
"-vf",
string.format(
"scale=-1:'min(%d,ih)':flags=fast_bilinear",
(rt and rt.preview or PREVIEW).max_height / 2
),
string.format("scale=-1:'min(%d,ih)':flags=fast_bilinear", rt.preview.max_height / 2),
"-f",
"image2",
"-y",
@ -224,7 +220,7 @@ function M:preload(job)
return true
end
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
err_msg = err_msg .. string.format("Failed to start `%s`, Do you have `%s` installed?\n", cmd, cmd)
end

View File

@ -1,8 +1,5 @@
# 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.
Supported platforms:
@ -15,7 +12,7 @@ https://github.com/user-attachments/assets/c6f780ab-458b-420f-85cf-2fc45fcfe3a2
## Installation
```sh
ya pack -a yazi-rs/plugins:mount
ya pkg add yazi-rs/plugins:mount
```
## Usage
@ -23,7 +20,7 @@ ya pack -a yazi-rs/plugins:mount
Add this to your `~/.config/yazi/keymap.toml`:
```toml
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "M"
run = "plugin mount"
```

View File

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

View File

@ -14,7 +14,7 @@ Preview file types using `rich` command in Yazi. This plugin allows preview for
## 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.
## Installation
@ -22,7 +22,7 @@ Preview file types using `rich` command in Yazi. This plugin allows preview for
To install this plugin, simply run-
```bash
ya pack -a AnirudhG07/rich-preview
ya pkg add AnirudhG07/rich-preview
## For linux and MacOS
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
```sh
ya pack -a yazi-rs/plugins:smart-filter
ya pkg add yazi-rs/plugins:smart-filter
```
## Usage
@ -15,7 +15,7 @@ ya pack -a yazi-rs/plugins:smart-filter
Add this to your `~/.config/yazi/keymap.toml`:
```toml
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = "F"
run = "plugin 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 h = cx.active.current.hovered
@ -28,20 +28,20 @@ local function entry()
while true do
local value, event = input:recv()
if event ~= 1 and event ~= 3 then
ya.mgr_emit("escape", { filter = true })
ya.emit("escape", { filter = true })
break
end
ya.mgr_emit("filter_do", { value, smart = true })
ya.emit("filter_do", { value, smart = true })
local h = hovered()
if h.unique and h.is_dir then
ya.mgr_emit("escape", { filter = true })
ya.mgr_emit("enter", {})
ya.emit("escape", { filter = true })
ya.emit("enter", {})
input = prompt()
elseif event == 1 then
ya.mgr_emit("escape", { filter = true })
ya.mgr_emit(h.is_dir and "enter" or "open", { h.url })
ya.emit("escape", { filter = true })
ya.emit(h.is_dir and "enter" or "open", { h.url })
end
end
end

View File

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

View File

@ -46,7 +46,7 @@ local function get_total_size(items)
return total
else
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
ya.err("Failed to run du: " .. err)
end

View File

@ -2,7 +2,7 @@
# 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"
[manager]
[mgr]
ratio = [ 1, 2, 3 ]
sort_by = "alphabetical"
sort_sensitive = false

View File

@ -77,7 +77,7 @@ function cd {
if [ $# -eq 0 ]; then
new_directory=${HOME}
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
@ -87,7 +87,7 @@ lfcd() {
lf -last-dir-path="$tmp" "$@"
if [ -f "$tmp" ]; then
dir="$(cat "$tmp")"
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir" || return
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && z "$dir" || return
fi
}
@ -95,16 +95,41 @@ function yazicd() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
yazi "$@" --cwd-file="$tmp"
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
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 &)
}
# 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
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 -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 "$(fzf --zsh)"

View File

@ -1,37 +1,32 @@
#!/bin/bash
if [[ $# -eq 1 ]]; then
selected=$1
selected="$1"
else
selected=$(project-finder ~/repos/ ~/Nextcloud/ ~/Obsidian/ | sk --height 16)
fi
if [[ -z $selected ]]; then
if [[ -z "$selected" ]]; then
exit 0
fi
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
# 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
# Create a new session, detached, with window 0 in the selected directory
tmux new-session -d -s "$selected_name" -c "$selected"
# Create a second window (index 1) in the same directory
tmux new-window -t "$selected_name:" -c "$selected"
# Select the first window (index 0)
tmux select-window -t "$selected_name:1"
fi
tmux switch-client -t "$selected_name"
# 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"
fi