mirror of
https://github.com/kristoferssolo/solorice.git
synced 2025-10-21 20:10:34 +00:00
Update 2025-03-30
Update 2025-03-03 Update 2025-03-07 Update 2025-03-13 Update 2025-03-14 Update 2025-03-22 Update 2025-03-24 Update 2025-03-29
This commit is contained in:
parent
5f54bb78ad
commit
f298468e99
@ -66,6 +66,7 @@ depends = [ "torrent", "zathura" ]
|
|||||||
"config/fastfetch/" = "~/.config/fastfetch/"
|
"config/fastfetch/" = "~/.config/fastfetch/"
|
||||||
"config/flameshot.ini" = "~/.config/flameshot/flameshot.ini"
|
"config/flameshot.ini" = "~/.config/flameshot/flameshot.ini"
|
||||||
"config/gitui/" = "~/.config/gitui/"
|
"config/gitui/" = "~/.config/gitui/"
|
||||||
|
"config/lazygit/" = "~/.config/lazygit/"
|
||||||
"config/git/" = "~/.config/git/"
|
"config/git/" = "~/.config/git/"
|
||||||
"config/mpv/" = "~/.config/mpv/"
|
"config/mpv/" = "~/.config/mpv/"
|
||||||
"config/lf/" = "~/.config/lf/"
|
"config/lf/" = "~/.config/lf/"
|
||||||
|
|||||||
@ -442,7 +442,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("zen-browser")
|
awful.spawn("floorp")
|
||||||
end, { description = "open browser", group = "launcher" }),
|
end, { description = "open browser", group = "launcher" }),
|
||||||
awful.key({ modkey }, "n", function()
|
awful.key({ modkey }, "n", function()
|
||||||
awful.spawn("alacritty -e yazi")
|
awful.spawn("alacritty -e yazi")
|
||||||
|
|||||||
@ -435,7 +435,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("zen-browser")
|
awful.spawn("floorp")
|
||||||
end, { description = "open browser", group = "launcher" }),
|
end, { description = "open browser", group = "launcher" }),
|
||||||
awful.key({ modkey }, "n", function()
|
awful.key({ modkey }, "n", function()
|
||||||
awful.spawn("alacritty -e yazi")
|
awful.spawn("alacritty -e yazi")
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
(defpoll clock_hour :interval "1m" "date +%H")
|
(defpoll clock_hour :interval "1m" "date +%H")
|
||||||
(defpoll clock_minute :interval "2s" "date +%M")
|
(defpoll clock_minute :interval "2s" "date +%M")
|
||||||
(defpoll clock_second :interval "1s" "date +%S")
|
(defpoll clock_second :interval "1s" "date +%S")
|
||||||
(defpoll clock_date :interval "10h" "date +%d.%m.%Y")
|
(defpoll clock_date :interval "1h" "date +%d.%m.%Y")
|
||||||
(defpoll clock_day :interval "10h" "date +%A")
|
(defpoll clock_day :interval "1h" "date +%A")
|
||||||
(defpoll volume_percent :interval "3s" "amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'")
|
(defpoll volume_percent :interval "3s" "amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'")
|
||||||
(defpoll mic_percent :interval "3s" "amixer -D pulse sget Capture | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'")
|
(defpoll mic_percent :interval "3s" "amixer -D pulse sget Capture | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'")
|
||||||
(defpoll brightness_percent :interval "5s" "brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}' | tr -d '%'")
|
(defpoll brightness_percent :interval "5s" "brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}' | tr -d '%'")
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
# 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,auto,1
|
||||||
# monitor=DP-1,disabled
|
# monitor=DP-1,disabled
|
||||||
|
|
||||||
###################
|
###################
|
||||||
@ -29,7 +31,7 @@ monitor=DP-1,prefered,180x-1440,1
|
|||||||
$terminal = alacritty
|
$terminal = alacritty
|
||||||
$fileManager = $terminal -e yazi
|
$fileManager = $terminal -e yazi
|
||||||
$menu = wofi --show drun -ib
|
$menu = wofi --show drun -ib
|
||||||
$browser = zen-browser
|
$browser = floorp
|
||||||
|
|
||||||
#################
|
#################
|
||||||
### AUTOSTART ###
|
### AUTOSTART ###
|
||||||
@ -39,10 +41,11 @@ $browser = zen-browser
|
|||||||
# 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 #& 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 & hyprland-per-window-layout
|
# 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=[workspace 1 silent] $browser
|
exec-once=[workspace 1 silent] $browser
|
||||||
exec-once=[workspace 8 silent] vesktop & kotatogram-desktop
|
exec-once=[workspace 8 silent] vesktop & kotatogram-desktop
|
||||||
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)
|
||||||
source=~/.config/hypr/rose-pine.conf
|
source=~/.config/hypr/rose-pine.conf
|
||||||
@ -55,7 +58,6 @@ source=~/.config/hypr/rose-pine.conf
|
|||||||
|
|
||||||
env = XCURSOR_SIZE,24
|
env = XCURSOR_SIZE,24
|
||||||
env = HYPRCURSOR_SIZE,24
|
env = HYPRCURSOR_SIZE,24
|
||||||
# env = DBUS_SESSION_BUS_ADDRESS,unix:path=/run/user/1000/bus
|
|
||||||
env = XDG_CURRENT_DESKTOP,Hyprland
|
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||||
env = XDG_SESSION_TYPE,wayland
|
env = XDG_SESSION_TYPE,wayland
|
||||||
env = XDG_SESSION_DESKTOP,Hyprland
|
env = XDG_SESSION_DESKTOP,Hyprland
|
||||||
|
|||||||
2
config/lazygit/config.yml
Normal file
2
config/lazygit/config.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
services:
|
||||||
|
git.modulation.lv: gitlab:git.modulation.lv/api/v4/projects
|
||||||
33
config/mpv/scripts/skip.lua
Normal file
33
config/mpv/scripts/skip.lua
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
-- Importing mpv module
|
||||||
|
local mpv = require("mp")
|
||||||
|
local mpv_options = require("mp.options")
|
||||||
|
|
||||||
|
local options = { -- setting default options
|
||||||
|
op_start = 0,
|
||||||
|
op_end = 0,
|
||||||
|
ed_start = 0,
|
||||||
|
ed_end = 0,
|
||||||
|
}
|
||||||
|
mpv_options.read_options(options, "skip") --reading script-opts data
|
||||||
|
|
||||||
|
-- Main function to check and skip if within the defined section
|
||||||
|
local function skip()
|
||||||
|
local current_time = mp.get_property_number("time-pos")
|
||||||
|
|
||||||
|
if not current_time then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check for opening sequence
|
||||||
|
if current_time >= options.op_start and current_time < options.op_end then
|
||||||
|
mp.set_property_number("time-pos", options.op_end)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check for ending sequence
|
||||||
|
if current_time >= options.ed_start and current_time < options.ed_end then
|
||||||
|
mp.set_property_number("time-pos", options.ed_end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Bind the function to be called whenever the time position is changed
|
||||||
|
mp.observe_property("time-pos", "number", skip)
|
||||||
@ -22,7 +22,7 @@ unsetopt PROMPT_SP
|
|||||||
|
|
||||||
|
|
||||||
# Default Apps
|
# Default Apps
|
||||||
export BROWSER="zen-browser"
|
export BROWSER="floorp"
|
||||||
export EDITOR="nvim"
|
export EDITOR="nvim"
|
||||||
export IMAGE="nsxiv"
|
export IMAGE="nsxiv"
|
||||||
export READER="zathura"
|
export READER="zathura"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
autostart="picom nextcloud transmission-daemon zen-browser discord syncthing mullvad-vpn spotify-launcher kotatogram-desktop easyeffects"
|
autostart="picom nextcloud transmission-daemon discord syncthing mullvad-vpn spotify-launcher kotatogram-desktop easyeffects"
|
||||||
|
|
||||||
for program in $autostart; do
|
for program in $autostart; do
|
||||||
pidof -sx "$program" || "$program" &
|
pidof -sx "$program" || "$program" &
|
||||||
|
|||||||
@ -159,13 +159,13 @@ prepend_keymap = [
|
|||||||
# chmod
|
# chmod
|
||||||
{on = [ "c", "m" ], run = "plugin chmod", desc = "Chmod on selected files"},
|
{on = [ "c", "m" ], run = "plugin chmod", desc = "Chmod on selected files"},
|
||||||
# Archive
|
# Archive
|
||||||
{on = [ "c", "a" ], run = "plugin ouch --args=zip", desc = "Compress with ouch"},
|
{on = [ "c", "a" ], run = "plugin ouch -- zip", desc = "Compress with ouch"},
|
||||||
# Augment Command
|
# Augment Command
|
||||||
{on = [ "l" ], run = "plugin augment-command --args='enter'", desc = "Enter a directory and skip directories with only a single subdirectory"},
|
{on = [ "l" ], run = "plugin augment-command -- enter", desc = "Enter a directory and skip directories with only a single subdirectory"},
|
||||||
{on = [ "k" ], run = "plugin augment-command --args='arrow -1'", desc = "Move cursor up"},
|
{on = [ "k" ], run = "plugin augment-command -- arrow -1", desc = "Move cursor up"},
|
||||||
{on = [ "r" ], run = "plugin augment-command --args='rename --cursor=before_ext'", desc = "Rename a file or directory"},
|
{on = [ "r" ], run = "plugin augment-command -- rename --cursor=before_ext", desc = "Rename a file or directory"},
|
||||||
{on = [ "R" ], run = "plugin augment-command --args='rename'", desc = "Rename a file or directory"},
|
{on = [ "R" ], run = "plugin augment-command -- rename", desc = "Rename a file or directory"},
|
||||||
{on = [ "D" ], run = "plugin augment-command --args='remove --permanently'", desc = "Permanently delete the files"},
|
{on = [ "D" ], run = "plugin augment-command -- remove --permanently", desc = "Permanently delete the files"},
|
||||||
# Dragon
|
# Dragon
|
||||||
{on = [ "m", "a" ], run = ''' shell 'ripdrag -atk "$@"' --confirm ''', desc = "Drag and drop all"},
|
{on = [ "m", "a" ], run = ''' shell 'ripdrag -atk "$@"' --confirm ''', desc = "Drag and drop all"},
|
||||||
{on = [ "m", "i" ], run = ''' shell 'ripdrag -tk "$@"' --confirm ''', desc = "Drag and drop individual"},
|
{on = [ "m", "i" ], run = ''' shell 'ripdrag -tk "$@"' --confirm ''', desc = "Drag and drop individual"},
|
||||||
@ -176,15 +176,15 @@ prepend_keymap = [
|
|||||||
# Hide Preview
|
# Hide Preview
|
||||||
{on = "<C-t>", run = "plugin --sync hide-preview", desc = "Hide or show preview"},
|
{on = "<C-t>", run = "plugin --sync hide-preview", desc = "Hide or show preview"},
|
||||||
# Relative motions
|
# Relative motions
|
||||||
{on = [ "1" ], run = "plugin relative-motions --args=1", desc = "Move in relative steps"},
|
{on = [ "1" ], run = "plugin relative-motions -- 1", desc = "Move in relative steps"},
|
||||||
{on = [ "2" ], run = "plugin relative-motions --args=2", desc = "Move in relative steps"},
|
{on = [ "2" ], run = "plugin relative-motions -- 2", desc = "Move in relative steps"},
|
||||||
{on = [ "3" ], run = "plugin relative-motions --args=3", desc = "Move in relative steps"},
|
{on = [ "3" ], run = "plugin relative-motions -- 3", desc = "Move in relative steps"},
|
||||||
{on = [ "4" ], run = "plugin relative-motions --args=4", desc = "Move in relative steps"},
|
{on = [ "4" ], run = "plugin relative-motions -- 4", desc = "Move in relative steps"},
|
||||||
{on = [ "5" ], run = "plugin relative-motions --args=5", desc = "Move in relative steps"},
|
{on = [ "5" ], run = "plugin relative-motions -- 5", desc = "Move in relative steps"},
|
||||||
{on = [ "6" ], run = "plugin relative-motions --args=6", desc = "Move in relative steps"},
|
{on = [ "6" ], run = "plugin relative-motions -- 6", desc = "Move in relative steps"},
|
||||||
{on = [ "7" ], run = "plugin relative-motions --args=7", desc = "Move in relative steps"},
|
{on = [ "7" ], run = "plugin relative-motions -- 7", desc = "Move in relative steps"},
|
||||||
{on = [ "8" ], run = "plugin relative-motions --args=8", desc = "Move in relative steps"},
|
{on = [ "8" ], run = "plugin relative-motions -- 8", desc = "Move in relative steps"},
|
||||||
{on = [ "9" ], run = "plugin relative-motions --args=9", desc = "Move in relative steps"},
|
{on = [ "9" ], run = "plugin relative-motions -- 9", desc = "Move in relative steps"},
|
||||||
{on = [ "c", "s" ], run = "plugin what-size", desc = "Calc size of selection or cwd"},
|
{on = [ "c", "s" ], run = "plugin what-size", desc = "Calc size of selection or cwd"},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@ -20,18 +20,18 @@ hash = "2d6d77583162aaf0a599e7a3091b5878"
|
|||||||
|
|
||||||
[[plugin.deps]]
|
[[plugin.deps]]
|
||||||
use = "Sonico98/exifaudio"
|
use = "Sonico98/exifaudio"
|
||||||
rev = "d794614"
|
rev = "4379fcf"
|
||||||
hash = "a8e15d3c21c02a5af41d46ed04778a02"
|
hash = "a8e15d3c21c02a5af41d46ed04778a02"
|
||||||
|
|
||||||
[[plugin.deps]]
|
[[plugin.deps]]
|
||||||
use = "dedukun/relative-motions"
|
use = "dedukun/relative-motions"
|
||||||
rev = "a1466a9"
|
rev = "8103065"
|
||||||
hash = "26d7fd10e163e0624d733c067eba4b61"
|
hash = "9f13f0740fa3a0c18e47ec6fb62ddfaa"
|
||||||
|
|
||||||
[[plugin.deps]]
|
[[plugin.deps]]
|
||||||
use = "hankertrix/augment-command"
|
use = "hankertrix/augment-command"
|
||||||
rev = "af31941"
|
rev = "f4a904c"
|
||||||
hash = "71c1ef899b40a54fcdf5a41f87daa967"
|
hash = "60dff62dcb958c83b7c84dfb3d5ef68b"
|
||||||
|
|
||||||
[[plugin.deps]]
|
[[plugin.deps]]
|
||||||
use = "imsi32/yatline"
|
use = "imsi32/yatline"
|
||||||
@ -53,30 +53,30 @@ use = "pirafrank/what-size"
|
|||||||
rev = "b23e3a4"
|
rev = "b23e3a4"
|
||||||
hash = "98e5f5af3efd3ba8bc2db0720187cc83"
|
hash = "98e5f5af3efd3ba8bc2db0720187cc83"
|
||||||
|
|
||||||
[[plugin.deps]]
|
|
||||||
use = "yazi-rs/plugins:chmod"
|
|
||||||
rev = "5186af7"
|
|
||||||
hash = "f28138c2e11e87962b66d583fef724c3"
|
|
||||||
|
|
||||||
[[plugin.deps]]
|
|
||||||
use = "yazi-rs/plugins:full-border"
|
|
||||||
rev = "5186af7"
|
|
||||||
hash = "ae9e1d0c6bfd68cdebc98cc684c22b45"
|
|
||||||
|
|
||||||
[[plugin.deps]]
|
[[plugin.deps]]
|
||||||
use = "yazi-rs/plugins:git"
|
use = "yazi-rs/plugins:git"
|
||||||
rev = "5186af7"
|
rev = "3d0c7c6"
|
||||||
hash = "771f18427fb75fb19990ce602bb322f4"
|
hash = "771f18427fb75fb19990ce602bb322f4"
|
||||||
|
|
||||||
[[plugin.deps]]
|
|
||||||
use = "yazi-rs/plugins:hide-preview"
|
|
||||||
rev = "5186af7"
|
|
||||||
hash = "1e31898370b752e4faf335b762b3eeaf"
|
|
||||||
|
|
||||||
[[plugin.deps]]
|
[[plugin.deps]]
|
||||||
use = "yazi-rs/plugins:max-preview"
|
use = "yazi-rs/plugins:max-preview"
|
||||||
rev = "5186af7"
|
rev = "3d0c7c6"
|
||||||
hash = "a8025f2bb311e869069364fba01abffc"
|
hash = "a8025f2bb311e869069364fba01abffc"
|
||||||
|
|
||||||
|
[[plugin.deps]]
|
||||||
|
use = "yazi-rs/plugins:chmod"
|
||||||
|
rev = "3d0c7c6"
|
||||||
|
hash = "2f1053f89d1a301a648ab181d0948e38"
|
||||||
|
|
||||||
|
[[plugin.deps]]
|
||||||
|
use = "yazi-rs/plugins:full-border"
|
||||||
|
rev = "3d0c7c6"
|
||||||
|
hash = "9dce00232a0e0e2502565c7aa2b0ed4e"
|
||||||
|
|
||||||
|
[[plugin.deps]]
|
||||||
|
use = "yazi-rs/plugins:hide-preview"
|
||||||
|
rev = "3d0c7c6"
|
||||||
|
hash = "53f826884e2c7e521cecc492a7f31d7e"
|
||||||
|
|
||||||
[flavor]
|
[flavor]
|
||||||
deps = []
|
deps = [ ]
|
||||||
|
|||||||
@ -10,17 +10,37 @@ plugin.
|
|||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
- [Requirements](#requirements)
|
- [Requirements](#requirements)
|
||||||
|
- [Optional dependencies](#optional-dependencies)
|
||||||
- [Installation](#installation)
|
- [Installation](#installation)
|
||||||
- [Configuration](#configuration)
|
- [Configuration](#configuration)
|
||||||
- [What about the commands are augmented?][augment-section]
|
- [What about the commands are augmented?][augment-section]
|
||||||
- [Augmented commands](#augmented-commands)
|
- [Augmented commands](#augmented-commands)
|
||||||
|
- [Open (`open`)](#open-open)
|
||||||
|
- [Extract (`extract`)](#extract-extract)
|
||||||
|
- [Enter (`enter`)](#enter-enter)
|
||||||
|
- [Leave (`leave`)](#leave-leave)
|
||||||
|
- [Rename (`rename`)](#rename-rename)
|
||||||
|
- [Remove (`remove`)](#remove-remove)
|
||||||
|
- [Create (`create`)](#create-create)
|
||||||
|
- [Shell (`shell`)](#shell-shell)
|
||||||
|
- [Passing arguments to the `shell` command](#passing-arguments-to-the-shell-command)
|
||||||
|
- [Paste (`paste`)](#paste-paste)
|
||||||
|
- [Tab create (`tab_create`)](#tab-create-tab_create)
|
||||||
|
- [Tab switch (`tab_switch`)](#tab-switch-tab_switch)
|
||||||
|
- [Quit (`quit`)](#quit-quit)
|
||||||
|
- [Arrow (`arrow`)](#arrow-arrow)
|
||||||
- [New commands](#new-commands)
|
- [New commands](#new-commands)
|
||||||
|
- [Parent arrow (`parent_arrow`)](#parent-arrow-parent_arrow)
|
||||||
|
- [Editor (`editor`)](#editor-editor)
|
||||||
|
- [Pager (`pager`)](#pager-pager)
|
||||||
- [Usage](#usage)
|
- [Usage](#usage)
|
||||||
|
- [Using the `extract` command as an opener](#using-the-extract-command-as-an-opener)
|
||||||
|
- [Full configuration example](#full-configuration-example)
|
||||||
- [Licence](#licence)
|
- [Licence](#licence)
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- [Yazi][yazi-link] v25.2.7+
|
- [Yazi][yazi-link] v25.2.26+
|
||||||
- [`7z` or `7zz` command][7z-link]
|
- [`7z` or `7zz` command][7z-link]
|
||||||
- [`file` command][file-command-link]
|
- [`file` command][file-command-link]
|
||||||
|
|
||||||
@ -44,7 +64,7 @@ ya pack -u
|
|||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
| Configuration | Values | Default | Description |
|
| Configuration | Values | Default | Description |
|
||||||
| ----------------------------------- | ------------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| ----------------------------------- | --------------------------------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `prompt` | `true` or `false` | `false` | Create a prompt to choose between hovered and selected items when both exist. If this option is disabled, selected items will only be operated on when the hovered item is selected, otherwise the hovered item will be the default item that is operated on. |
|
| `prompt` | `true` or `false` | `false` | Create a prompt to choose between hovered and selected items when both exist. If this option is disabled, selected items will only be operated on when the hovered item is selected, otherwise the hovered item will be the default item that is operated on. |
|
||||||
| `default_item_group_for_prompt` | `hovered`, `selected` or `none` | `hovered` | The default item group to operate on when the prompt is submitted without any value. This only takes effect if `prompt` is set to `true`, otherwise this option doesn't do anything. `hovered` means the hovered item is operated on, `selected` means the selected items are operated on, and `none` just cancels the operation. |
|
| `default_item_group_for_prompt` | `hovered`, `selected` or `none` | `hovered` | The default item group to operate on when the prompt is submitted without any value. This only takes effect if `prompt` is set to `true`, otherwise this option doesn't do anything. `hovered` means the hovered item is operated on, `selected` means the selected items are operated on, and `none` just cancels the operation. |
|
||||||
| `smart_enter` | `true` or `false` | `true` | Use one command to open files or enter a directory. With this option set, the `enter` and `open` commands will both call the `enter` command when a directory is hovered and call the `open` command when a regular file is hovered. You can also enable this behaviour by passing the `--smart` flag to the `enter` or `open` commands. |
|
| `smart_enter` | `true` or `false` | `true` | Use one command to open files or enter a directory. With this option set, the `enter` and `open` commands will both call the `enter` command when a directory is hovered and call the `open` command when a regular file is hovered. You can also enable this behaviour by passing the `--smart` flag to the `enter` or `open` commands. |
|
||||||
@ -62,6 +82,8 @@ ya pack -u
|
|||||||
| `must_have_hovered_item` | `true` or `false` | `true` | This option stops the plugin from executing any commands when there is no hovered item. |
|
| `must_have_hovered_item` | `true` or `false` | `true` | This option stops the plugin from executing any commands when there is no hovered item. |
|
||||||
| `skip_single_subdirectory_on_enter` | `true` or `false` | `true` | Skip directories when there is only one subdirectory and no other files when entering directories. This behaviour can be turned off by passing the `--no-skip` flag to the `enter` or `open` commands. |
|
| `skip_single_subdirectory_on_enter` | `true` or `false` | `true` | Skip directories when there is only one subdirectory and no other files when entering directories. This behaviour can be turned off by passing the `--no-skip` flag to the `enter` or `open` commands. |
|
||||||
| `skip_single_subdirectory_on_leave` | `true` or `false` | `true` | Skip directories when there is only one subdirectory and no other files when leaving directories. This behaviour can be turned off by passing the `--no-skip` flag to the `leave` command. |
|
| `skip_single_subdirectory_on_leave` | `true` or `false` | `true` | Skip directories when there is only one subdirectory and no other files when leaving directories. This behaviour can be turned off by passing the `--no-skip` flag to the `leave` command. |
|
||||||
|
| `smooth_scrolling` | `true` or `false` | `false` | Self-explanatory, this option enables smooth scrolling. |
|
||||||
|
| `scroll_delay` | A floating point number, like `0.02`, `0.05`, `0.1`, etc. | `0.02` | The delay, in seconds, between each call of the `arrow` command to scroll through the file list. The smaller the `scroll_delay`, the faster the file list is scrolled. Avoid setting a `scroll_delay` that is more than `1` second. This is due to the plugin being asynchronous, which will result in the plugin continuing to call the `arrow` command even when the directory has changed, or when you are in a different application that doesn't block Yazi, resulting in unexpected behaviour. |
|
||||||
| `wraparound_file_navigation` | `true` or `false` | `false` | Wrap around from the bottom to the top or from the top to the bottom when using the `arrow` or `parent_arrow` command to navigate. |
|
| `wraparound_file_navigation` | `true` or `false` | `false` | Wrap around from the bottom to the top or from the top to the bottom when using the `arrow` or `parent_arrow` command to navigate. |
|
||||||
|
|
||||||
If you would like to use the default configuration, which is shown below,
|
If you would like to use the default configuration, which is shown below,
|
||||||
@ -92,6 +114,8 @@ require("augment-command"):setup({
|
|||||||
must_have_hovered_item = true,
|
must_have_hovered_item = true,
|
||||||
skip_single_subdirectory_on_enter = true,
|
skip_single_subdirectory_on_enter = true,
|
||||||
skip_single_subdirectory_on_leave = true,
|
skip_single_subdirectory_on_leave = true,
|
||||||
|
smooth_scrolling = false,
|
||||||
|
scroll_delay = 0.02,
|
||||||
wraparound_file_navigation = false,
|
wraparound_file_navigation = false,
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
@ -115,6 +139,7 @@ require("augment-command"):setup({
|
|||||||
open_file_after_creation = true,
|
open_file_after_creation = true,
|
||||||
enter_directory_after_creation = true,
|
enter_directory_after_creation = true,
|
||||||
extract_retries = 5,
|
extract_retries = 5,
|
||||||
|
smooth_scrolling = true,
|
||||||
wraparound_file_navigation = true,
|
wraparound_file_navigation = true,
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
@ -451,10 +476,6 @@ then it will operate on the selected items.
|
|||||||
create directories to ensure that the path given exists.
|
create directories to ensure that the path given exists.
|
||||||
It also supports all the options supported by Yazi's `create` command,
|
It also supports all the options supported by Yazi's `create` command,
|
||||||
so you can pass them to the command and expect the same behaviour.
|
so you can pass them to the command and expect the same behaviour.
|
||||||
Do note that the separator in the `confirm` component will be the text colour
|
|
||||||
instead of your configured border colour for the `confirm` component as
|
|
||||||
the `list` part of the `confirm` component has not been exposed to plugin
|
|
||||||
developers, so the separator is made using text.
|
|
||||||
- The rationale for this behaviour is that creating a path without
|
- The rationale for this behaviour is that creating a path without
|
||||||
a file extension usually means you intend to create a directory instead
|
a file extension usually means you intend to create a directory instead
|
||||||
of a file, as files usually have file extensions.
|
of a file, as files usually have file extensions.
|
||||||
@ -792,6 +813,13 @@ in your `keymap.toml` file.
|
|||||||
|
|
||||||
### Arrow (`arrow`)
|
### Arrow (`arrow`)
|
||||||
|
|
||||||
|
- When `smooth_scrolling` is set to `true`, the arrow command will
|
||||||
|
smoothly scroll through the file list.
|
||||||
|
|
||||||
|
Video:
|
||||||
|
|
||||||
|
[smooth-arrow-video]
|
||||||
|
|
||||||
- When `wraparound_file_navigation` is set to `true`,
|
- When `wraparound_file_navigation` is set to `true`,
|
||||||
the arrow command will wrap around from the bottom to the top or
|
the arrow command will wrap around from the bottom to the top or
|
||||||
from the top to the bottom when navigating.
|
from the top to the bottom when navigating.
|
||||||
@ -800,7 +828,14 @@ in your `keymap.toml` file.
|
|||||||
|
|
||||||
[wraparound-arrow-video]
|
[wraparound-arrow-video]
|
||||||
|
|
||||||
Otherwise, it'll behave like the default `arrow` command.
|
- When both `smooth_scrolling` and `wraparound_file_navigation` are set to
|
||||||
|
`true`, the command will smoothly scroll the wraparound transition as well.
|
||||||
|
|
||||||
|
Video:
|
||||||
|
|
||||||
|
[smooth-wraparound-arrow-video]
|
||||||
|
|
||||||
|
- Otherwise, it'll behave like the default `arrow` command.
|
||||||
|
|
||||||
## New commands
|
## New commands
|
||||||
|
|
||||||
@ -815,6 +850,13 @@ in your `keymap.toml` file.
|
|||||||
|
|
||||||
[parent-arrow-video]
|
[parent-arrow-video]
|
||||||
|
|
||||||
|
- When `smooth_scrolling` is set to `true`, this command will
|
||||||
|
smoothly scroll through the parent directories.
|
||||||
|
|
||||||
|
Video:
|
||||||
|
|
||||||
|
[smooth-parent-arrow-video]
|
||||||
|
|
||||||
- When `wraparound_file_navigation` is set to `true`,
|
- When `wraparound_file_navigation` is set to `true`,
|
||||||
this command will also wrap around from the bottom to the top or
|
this command will also wrap around from the bottom to the top or
|
||||||
from top to the bottom when navigating in the parent directory.
|
from top to the bottom when navigating in the parent directory.
|
||||||
@ -823,9 +865,16 @@ in your `keymap.toml` file.
|
|||||||
|
|
||||||
[wraparound-parent-arrow-video]
|
[wraparound-parent-arrow-video]
|
||||||
|
|
||||||
|
- When both `smooth_scrolling` and `wraparound_file_navigation` are set to
|
||||||
|
`true`, the command will smoothly scroll the wraparound transition as well.
|
||||||
|
|
||||||
|
Video:
|
||||||
|
|
||||||
|
[smooth-wraparound-parent-arrow-video]
|
||||||
|
|
||||||
- You can also replicate this using this series of commands below,
|
- You can also replicate this using this series of commands below,
|
||||||
but it doesn't work as well,
|
but it doesn't work as well,
|
||||||
and doesn't support wraparound navigation:
|
and doesn't support wraparound navigation or smooth scrolling:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
# ~/.config/yazi/keymap.toml on Linux and macOS
|
# ~/.config/yazi/keymap.toml on Linux and macOS
|
||||||
@ -1010,94 +1059,98 @@ You can view the full licence in the [`LICENSE`][Licence] file.
|
|||||||
|
|
||||||
<!-- Open command -->
|
<!-- Open command -->
|
||||||
|
|
||||||
[open-prompt-video]: https://github.com/user-attachments/assets/82ddc67d-0b79-4487-8d29-6fd1eb754a8e
|
[open-prompt-video]: https://github.com/user-attachments/assets/ad51d25b-dc68-48f6-bd14-20dc0b68fb0c
|
||||||
[open-behaviour-video]: https://github.com/user-attachments/assets/3f8eec80-ae39-4071-b7ed-e9e9367f10fe
|
[open-behaviour-video]: https://github.com/user-attachments/assets/0b84e0e8-e483-4c3c-8408-4f672a34e249
|
||||||
[open-auto-extract-archives-video]: https://github.com/user-attachments/assets/35b356ed-9c3f-4093-ab59-f85ae64de757
|
[open-auto-extract-archives-video]: https://github.com/user-attachments/assets/ae7e8b33-1f41-4ee7-8f5b-18fb4d455709
|
||||||
[open-recursively-extract-archives-video]: https://github.com/user-attachments/assets/dd1a5bd4-c7af-4d0a-9bf5-b087ee5a06f0
|
[open-recursively-extract-archives-video]: https://github.com/user-attachments/assets/99119e03-e770-4442-b529-c5586cc04bd0
|
||||||
|
|
||||||
<!-- Extract command -->
|
<!-- Extract command -->
|
||||||
|
|
||||||
[extract-must-have-hovered-item-video]: https://github.com/user-attachments/assets/7c0516ff-01fd-48c2-ba27-4449ffede933
|
[extract-must-have-hovered-item-video]: https://github.com/user-attachments/assets/c7d4ef2f-5455-4c06-a84e-bfc71c31bfea
|
||||||
[extract-hovered-item-optional-video]: https://github.com/user-attachments/assets/07ef7d25-3284-4d93-9485-c8635519c57e
|
[extract-hovered-item-optional-video]: https://github.com/user-attachments/assets/64536ddb-2309-4442-b5a3-73b334d68161
|
||||||
[extract-prompt-video]: https://github.com/user-attachments/assets/be2cabc3-b47d-4aac-ac45-0f26957c606b
|
[extract-prompt-video]: https://github.com/user-attachments/assets/40ad3b74-0036-4835-bfd8-cec6259504c4
|
||||||
[extract-behaviour-video]: https://github.com/user-attachments/assets/6ea90612-da8f-45ad-8310-9b38c9e5a6f9
|
[extract-behaviour-video]: https://github.com/user-attachments/assets/6c7e7b3e-1be5-42ab-b7d9-987dcc10cc88
|
||||||
[extract-recursively-extract-archives-video]: https://github.com/user-attachments/assets/bbf7f670-f86d-4aa4-85c7-35b41170924e
|
[extract-recursively-extract-archives-video]: https://github.com/user-attachments/assets/6b5aef9d-9673-458b-8555-0c84570656dd
|
||||||
[extract-encrypted-archive]: https://github.com/user-attachments/assets/58645691-3559-44ad-918e-8c2cd127252f
|
[extract-encrypted-archive]: https://github.com/user-attachments/assets/9c1c1377-6693-409d-840e-1eb128cf3ccd
|
||||||
|
|
||||||
<!-- Enter command -->
|
<!-- Enter command -->
|
||||||
|
|
||||||
[smart-enter-video]: https://github.com/user-attachments/assets/a00da3f5-305a-4615-b55c-483a06dd56d7
|
[smart-enter-video]: https://github.com/user-attachments/assets/85b043bc-f152-44a9-9627-d0282a6481ef
|
||||||
[enter-skip-single-subdirectory-video]: https://github.com/user-attachments/assets/25ca5fb5-68f9-45fe-bf32-369e9335505d
|
[enter-skip-single-subdirectory-video]: https://github.com/user-attachments/assets/70b3f595-31f8-474d-a623-fc4d927566ec
|
||||||
|
|
||||||
<!-- Leave command -->
|
<!-- Leave command -->
|
||||||
|
|
||||||
[leave-skip-single-subdirectory-video]: https://github.com/user-attachments/assets/4740fdae-2cd9-463d-b67b-7cdfd8d8b9a1
|
[leave-skip-single-subdirectory-video]: https://github.com/user-attachments/assets/3f0f98d1-519e-48c7-90d8-15e57986cc89
|
||||||
|
|
||||||
<!-- Rename command -->
|
<!-- Rename command -->
|
||||||
|
|
||||||
[rename-must-have-hovered-item-video]: https://github.com/user-attachments/assets/fd88a198-3de3-4d2b-8bcf-8d68142c965f
|
[rename-must-have-hovered-item-video]: https://github.com/user-attachments/assets/0ec0ad97-d0f0-441d-86a7-73a93a11a683
|
||||||
[rename-hovered-item-optional-video]: https://github.com/user-attachments/assets/324dcd94-6f83-49a2-9390-5f41da520689
|
[rename-hovered-item-optional-video]: https://github.com/user-attachments/assets/9bc918fa-c8b6-4f09-954c-7631a61032a0
|
||||||
[rename-prompt-video]: https://github.com/user-attachments/assets/5aba29ae-8b16-4b92-a99c-ff7f0ec925fa
|
[rename-prompt-video]: https://github.com/user-attachments/assets/69da784c-0408-468b-bc34-f2271d0a8cdc
|
||||||
[rename-behaviour-video]: https://github.com/user-attachments/assets/280db6dd-10e4-4255-8c12-e13d23105e90
|
[rename-behaviour-video]: https://github.com/user-attachments/assets/44ea4d01-3d66-4ecd-82ac-4b4f874d2124
|
||||||
|
|
||||||
<!-- Remove command -->
|
<!-- Remove command -->
|
||||||
|
|
||||||
[remove-must-have-hovered-item-video]: https://github.com/user-attachments/assets/18649ff1-ef0d-409a-8f01-29431dcc8f2e
|
[remove-must-have-hovered-item-video]: https://github.com/user-attachments/assets/76c511c8-d3b6-494c-9fcf-f4035325bca3
|
||||||
[remove-hovered-item-optional-video]: https://github.com/user-attachments/assets/6e9f5ca0-9b9f-47f8-8499-2b2c1db9f47c
|
[remove-hovered-item-optional-video]: https://github.com/user-attachments/assets/4502d34d-1432-43ee-99b1-234085f795b5
|
||||||
[remove-prompt-video]: https://github.com/user-attachments/assets/3f94c6f8-2ffd-4970-a5a4-5ac6b3a621c0
|
[remove-prompt-video]: https://github.com/user-attachments/assets/9b7f774c-f982-4e57-a895-6368f3043311
|
||||||
[remove-behaviour-video]: https://github.com/user-attachments/assets/37d3c059-84ff-4475-908b-2c167b23c488
|
[remove-behaviour-video]: https://github.com/user-attachments/assets/de57f05d-582d-44d3-9908-5c3f370e7119
|
||||||
|
|
||||||
<!-- Create command -->
|
<!-- Create command -->
|
||||||
|
|
||||||
[create-and-enter-directories-video]: https://github.com/user-attachments/assets/a102f918-8d99-491f-a6e3-fd8151f16f96
|
[create-and-enter-directories-video]: https://github.com/user-attachments/assets/70ffbdc9-d05f-4cb7-bf18-b219139221ab
|
||||||
[create-and-open-files-video]: https://github.com/user-attachments/assets/14341b9b-a048-4ea2-9322-e963293b6813
|
[create-and-open-files-video]: https://github.com/user-attachments/assets/b3c4ae5a-41be-4d6a-8cb9-59450a4b77c4
|
||||||
[create-and-open-files-and-directories-video]: https://github.com/user-attachments/assets/dd05d84a-716b-4c4b-8e77-429bbfb4ea43
|
[create-and-open-files-and-directories-video]: https://github.com/user-attachments/assets/f645fa80-eb78-4bee-b234-a0fa8b1d5610
|
||||||
[create-behaviour-video]: https://github.com/user-attachments/assets/a13745a5-a2cc-4c25-a3ff-0f10ac98b6f9
|
[create-behaviour-video]: https://github.com/user-attachments/assets/0d73e2a1-ed13-4601-b9b5-3e696d69621c
|
||||||
[create-default-behaviour-video]: https://github.com/user-attachments/assets/5e9305c0-e56c-4fc3-b36b-e86c43571b06
|
[create-default-behaviour-video]: https://github.com/user-attachments/assets/452300b3-71d1-46ce-aa65-bed39ff2b92d
|
||||||
|
|
||||||
<!-- Shell command -->
|
<!-- Shell command -->
|
||||||
|
|
||||||
[shell-must-have-hovered-item-video]: https://github.com/user-attachments/assets/43404049-1a4c-458c-b33f-c221dddf15c6
|
[shell-must-have-hovered-item-video]: https://github.com/user-attachments/assets/dec6a8f1-1a7a-4955-aab1-46bf185aa0c5
|
||||||
[shell-hovered-item-optional-video]: https://github.com/user-attachments/assets/b399450a-eec4-43d5-a75d-91c4f04a9d59
|
[shell-hovered-item-optional-video]: https://github.com/user-attachments/assets/989a57d6-10ae-4e5d-93a4-d7461fef436f
|
||||||
[shell-prompt-video]: https://github.com/user-attachments/assets/e83eb468-96fd-463f-a96a-54ac9ee2295f
|
[shell-prompt-video]: https://github.com/user-attachments/assets/5c6f92be-a21e-49fd-aec2-7bdde85fd21b
|
||||||
[shell-behaviour-video]: https://github.com/user-attachments/assets/caa32923-9c3e-4ea4-a1b6-e0a2c7968e9d
|
[shell-behaviour-video]: https://github.com/user-attachments/assets/dba3b896-377d-4cee-8168-792cbf4c0491
|
||||||
[shell-exit-if-directory-video]: https://github.com/user-attachments/assets/a0feab97-b7fc-4d58-8611-60ccf5e794d5
|
[shell-exit-if-directory-video]: https://github.com/user-attachments/assets/0c01094d-5518-411c-965a-63a77ecaa910
|
||||||
|
|
||||||
<!-- Paste command -->
|
<!-- Paste command -->
|
||||||
|
|
||||||
[smart-paste-video]: https://github.com/user-attachments/assets/d48c12a7-f652-4df7-90a5-271cbfa97683
|
[smart-paste-video]: https://github.com/user-attachments/assets/067ad79a-d224-475e-8333-c1bf34aea746
|
||||||
|
|
||||||
<!-- Tab create command -->
|
<!-- Tab create command -->
|
||||||
|
|
||||||
[smart-tab-create-video]: https://github.com/user-attachments/assets/2921df3d-b51d-4dbb-a42f-80e021feaaf6
|
[smart-tab-create-video]: https://github.com/user-attachments/assets/f1805f59-cfd2-4d97-b1b7-a4de1a25b668
|
||||||
|
|
||||||
<!-- Tab switch command -->
|
<!-- Tab switch command -->
|
||||||
|
|
||||||
[smart-tab-switch-video]: https://github.com/user-attachments/assets/1afb540d-47a9-4625-ae59-95d5cd91aa35
|
[smart-tab-switch-video]: https://github.com/user-attachments/assets/de59fd6b-7dbe-4055-8a9f-174fd24d5a8c
|
||||||
|
|
||||||
<!-- Quit command -->
|
<!-- Quit command -->
|
||||||
|
|
||||||
[quit-with-confirmation-video]: https://github.com/user-attachments/assets/b6206ee4-766b-44ce-b90b-15b015ae71f9
|
[quit-with-confirmation-video]: https://github.com/user-attachments/assets/a87cdc00-e22b-4b96-a069-229fbfd7d451
|
||||||
|
|
||||||
<!-- Arrow command -->
|
<!-- Arrow command -->
|
||||||
|
|
||||||
[wraparound-arrow-video]: https://github.com/user-attachments/assets/41ea1fb0-a526-4549-95a2-547c3c4b0498
|
[smooth-arrow-video]: https://github.com/user-attachments/assets/d6c9bc96-5fdc-4ecd-8c30-91d3e97e67db
|
||||||
|
[wraparound-arrow-video]: https://github.com/user-attachments/assets/b52153df-1e7a-4063-8bcb-a7c4dc923652
|
||||||
|
[smooth-wraparound-arrow-video]: https://github.com/user-attachments/assets/f9bdd784-1cae-4292-8809-af6e26d5860f
|
||||||
|
|
||||||
<!-- Parent arrow command -->
|
<!-- Parent arrow command -->
|
||||||
|
|
||||||
[parent-arrow-video]: https://github.com/user-attachments/assets/f4dc492a-566b-4645-82e1-301713cff11f
|
[parent-arrow-video]: https://github.com/user-attachments/assets/ea2d2b37-0355-466d-bbd5-0a5860507589
|
||||||
[wraparound-parent-arrow-video]: https://github.com/user-attachments/assets/d19872f8-2851-47e6-8485-4e8e5be66871
|
[smooth-parent-arrow-video]: https://github.com/user-attachments/assets/b62548eb-2f10-4f15-8c95-9127b90a364c
|
||||||
|
[wraparound-parent-arrow-video]: https://github.com/user-attachments/assets/2fcc30b8-9a6a-44d2-84c4-d224e9c467d8
|
||||||
|
[smooth-wraparound-parent-arrow-video]: https://github.com/user-attachments/assets/44b87884-58b7-41af-81e6-e4cf771665aa
|
||||||
|
|
||||||
<!-- Editor command -->
|
<!-- Editor command -->
|
||||||
|
|
||||||
[editor-must-have-hovered-item-video]: https://github.com/user-attachments/assets/c2811b90-e164-4a6d-9f3d-aefe8aec1d95
|
[editor-must-have-hovered-item-video]: https://github.com/user-attachments/assets/ba982592-3351-4f13-bdf3-8971e0fdaf2c
|
||||||
[editor-hovered-item-optional-video]: https://github.com/user-attachments/assets/adad538a-fbe8-4ad3-8f6d-5600618a0673
|
[editor-hovered-item-optional-video]: https://github.com/user-attachments/assets/0d9ba0fa-6ad3-492d-b3d4-3ea427ac1b9d
|
||||||
[editor-prompt-video]: https://github.com/user-attachments/assets/cccb8a3c-6afa-49a6-8808-04b0f235b391
|
[editor-prompt-video]: https://github.com/user-attachments/assets/792ebdec-45c8-430c-a426-35c94adeb6ce
|
||||||
[editor-behaviour-video]: https://github.com/user-attachments/assets/b6821220-8530-4fd1-a40f-53d191a3fe1b
|
[editor-behaviour-video]: https://github.com/user-attachments/assets/3f1740af-334f-46a2-aa61-2d783bf82a6c
|
||||||
|
|
||||||
<!-- Pager command -->
|
<!-- Pager command -->
|
||||||
|
|
||||||
[pager-must-have-hovered-item-video]: https://github.com/user-attachments/assets/22a5211a-89cc-4c36-aadb-eb9e6ab1d578
|
[pager-must-have-hovered-item-video]: https://github.com/user-attachments/assets/b992a0a1-eb07-4ee5-af2a-179b94bff764
|
||||||
[pager-hovered-item-optional-video]: https://github.com/user-attachments/assets/6eaed3c9-91f4-4414-8d26-5eaf955a2861
|
[pager-hovered-item-optional-video]: https://github.com/user-attachments/assets/7a35f938-687a-40b7-82bd-fde72c185edd
|
||||||
[pager-prompt-video]: https://github.com/user-attachments/assets/1ee621f4-704e-4cc3-a2ff-ba06e4eaf5a3
|
[pager-prompt-video]: https://github.com/user-attachments/assets/3ec2a4e4-bf44-4058-938f-d9af66e15191
|
||||||
[pager-behaviour-video]: https://github.com/user-attachments/assets/9ed0d520-4e73-44c3-82f7-18378994e0f4
|
[pager-behaviour-video]: https://github.com/user-attachments/assets/7185799e-48bc-40c0-a11d-a94d0989d8d7
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
--- @since 25.2.7
|
--- @since 25.2.26
|
||||||
|
|
||||||
-- Plugin to make some Yazi commands smarter
|
-- Plugin to make some Yazi commands smarter
|
||||||
-- Written in Lua 5.4
|
-- Written in Lua 5.4
|
||||||
@ -61,6 +61,8 @@
|
|||||||
---@field must_have_hovered_item boolean Whether to stop when no item is hovered
|
---@field must_have_hovered_item boolean Whether to stop when no item is hovered
|
||||||
---@field skip_single_subdirectory_on_enter boolean Skip single subdir on enter
|
---@field skip_single_subdirectory_on_enter boolean Skip single subdir on enter
|
||||||
---@field skip_single_subdirectory_on_leave boolean Skip single subdir on leave
|
---@field skip_single_subdirectory_on_leave boolean Skip single subdir on leave
|
||||||
|
---@field smooth_scrolling boolean Whether to smoothly scroll or not
|
||||||
|
---@field scroll_delay number The scroll delay in seconds for smooth scrolling
|
||||||
---@field wraparound_file_navigation boolean Have wraparound navigation or not
|
---@field wraparound_file_navigation boolean Have wraparound navigation or not
|
||||||
|
|
||||||
-- The full configuration for the plugin
|
-- The full configuration for the plugin
|
||||||
@ -135,6 +137,8 @@ local DEFAULT_CONFIG = {
|
|||||||
must_have_hovered_item = true,
|
must_have_hovered_item = true,
|
||||||
skip_single_subdirectory_on_enter = true,
|
skip_single_subdirectory_on_enter = true,
|
||||||
skip_single_subdirectory_on_leave = true,
|
skip_single_subdirectory_on_leave = true,
|
||||||
|
smooth_scrolling = false,
|
||||||
|
scroll_delay = 0.02,
|
||||||
wraparound_file_navigation = false,
|
wraparound_file_navigation = false,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -569,23 +573,23 @@ local function convert_arguments_to_string(args)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Function to show a warning
|
-- Function to show a warning
|
||||||
---@param warning_message string The warning message
|
---@param warning_message any The warning message
|
||||||
---@param options YaziNotificationOptions|nil Options for the notification
|
---@param options YaziNotificationOptions|nil Options for the notification
|
||||||
---@return nil
|
---@return nil
|
||||||
local function show_warning(warning_message, options)
|
local function show_warning(warning_message, options)
|
||||||
return ya.notify(merge_tables(DEFAULT_NOTIFICATION_OPTIONS, options or {}, {
|
return ya.notify(merge_tables(DEFAULT_NOTIFICATION_OPTIONS, options or {}, {
|
||||||
content = warning_message,
|
content = tostring(warning_message),
|
||||||
level = "warn",
|
level = "warn",
|
||||||
}))
|
}))
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Function to show an error
|
-- Function to show an error
|
||||||
---@param error_message string The error message
|
---@param error_message any The error message
|
||||||
---@param options YaziNotificationOptions|nil Options for the notification
|
---@param options YaziNotificationOptions|nil Options for the notification
|
||||||
---@return nil
|
---@return nil
|
||||||
local function show_error(error_message, options)
|
local function show_error(error_message, options)
|
||||||
return ya.notify(merge_tables(DEFAULT_NOTIFICATION_OPTIONS, options or {}, {
|
return ya.notify(merge_tables(DEFAULT_NOTIFICATION_OPTIONS, options or {}, {
|
||||||
content = error_message,
|
content = tostring(error_message),
|
||||||
level = "error",
|
level = "error",
|
||||||
}))
|
}))
|
||||||
end
|
end
|
||||||
@ -716,7 +720,7 @@ end
|
|||||||
---@param args Arguments The arguments to pass to the plugin command
|
---@param args Arguments The arguments to pass to the plugin command
|
||||||
---@return nil
|
---@return nil
|
||||||
local function emit_plugin_command(command, args)
|
local function emit_plugin_command(command, args)
|
||||||
return ya.manager_emit("plugin", {
|
return ya.mgr_emit("plugin", {
|
||||||
PLUGIN_NAME,
|
PLUGIN_NAME,
|
||||||
string.format("%s %s", command, convert_arguments_to_string(args)),
|
string.format("%s %s", command, convert_arguments_to_string(args)),
|
||||||
})
|
})
|
||||||
@ -1267,7 +1271,7 @@ local function skip_single_child_directories(initial_directory_path)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Emit the change directory command to change to the directory variable
|
-- Emit the change directory command to change to the directory variable
|
||||||
ya.manager_emit("cd", { directory })
|
ya.mgr_emit("cd", { directory })
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Class implementations
|
-- Class implementations
|
||||||
@ -2309,7 +2313,7 @@ local function handle_open(args, config)
|
|||||||
--
|
--
|
||||||
|
|
||||||
-- Emit the command and exit the function
|
-- Emit the command and exit the function
|
||||||
return ya.manager_emit("open", args)
|
return ya.mgr_emit("open", args)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- If the hovered item is a directory
|
-- If the hovered item is a directory
|
||||||
@ -2341,7 +2345,7 @@ local function handle_open(args, config)
|
|||||||
-- opening only the hovered item
|
-- opening only the hovered item
|
||||||
-- as the item group is the hovered item,
|
-- as the item group is the hovered item,
|
||||||
-- and exit the function
|
-- and exit the function
|
||||||
return ya.manager_emit("open", merge_tables(args, { hovered = true }))
|
return ya.mgr_emit("open", merge_tables(args, { hovered = true }))
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Otherwise, the hovered item is an archive
|
-- Otherwise, the hovered item is an archive
|
||||||
@ -2521,12 +2525,12 @@ local function handle_extract(args, config)
|
|||||||
--
|
--
|
||||||
|
|
||||||
-- Reveal the item and exit the function
|
-- Reveal the item and exit the function
|
||||||
return ya.manager_emit("reveal", { extracted_items_url })
|
return ya.mgr_emit("reveal", { extracted_items_url })
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Otherwise, change the directory to the extracted item.
|
-- Otherwise, change the directory to the extracted item.
|
||||||
-- Note that extracted_items_url is destroyed here.
|
-- Note that extracted_items_url is destroyed here.
|
||||||
ya.manager_emit("cd", { extracted_items_url })
|
ya.mgr_emit("cd", { extracted_items_url })
|
||||||
|
|
||||||
-- If the user wants to skip single subdirectories on enter,
|
-- If the user wants to skip single subdirectories on enter,
|
||||||
-- and the no skip flag is not passed
|
-- and the no skip flag is not passed
|
||||||
@ -2563,7 +2567,7 @@ local function handle_enter(args, config)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Otherwise, always emit the enter command,
|
-- Otherwise, always emit the enter command,
|
||||||
ya.manager_emit("enter", args)
|
ya.mgr_emit("enter", args)
|
||||||
|
|
||||||
-- If the user doesn't want to skip single subdirectories on enter,
|
-- If the user doesn't want to skip single subdirectories on enter,
|
||||||
-- or one of the arguments passed is no skip,
|
-- or one of the arguments passed is no skip,
|
||||||
@ -2586,7 +2590,7 @@ local function handle_leave(args, config)
|
|||||||
--
|
--
|
||||||
|
|
||||||
-- Always emit the leave command
|
-- Always emit the leave command
|
||||||
ya.manager_emit("leave", args)
|
ya.mgr_emit("leave", args)
|
||||||
|
|
||||||
-- If the user doesn't want to skip single subdirectories on leave,
|
-- If the user doesn't want to skip single subdirectories on leave,
|
||||||
-- or one of the arguments passed is no skip,
|
-- or one of the arguments passed is no skip,
|
||||||
@ -2629,7 +2633,7 @@ local function handle_leave(args, config)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Emit the change directory command to change to the directory variable
|
-- Emit the change directory command to change to the directory variable
|
||||||
ya.manager_emit("cd", { directory })
|
ya.mgr_emit("cd", { directory })
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Function to handle a Yazi command
|
-- Function to handle a Yazi command
|
||||||
@ -2650,14 +2654,14 @@ local function handle_yazi_command(command, args)
|
|||||||
--
|
--
|
||||||
|
|
||||||
-- Emit the command to operate on the selected items
|
-- Emit the command to operate on the selected items
|
||||||
ya.manager_emit(command, args)
|
ya.mgr_emit(command, args)
|
||||||
|
|
||||||
-- If the item group is the hovered item
|
-- If the item group is the hovered item
|
||||||
elseif item_group == ItemGroup.Hovered then
|
elseif item_group == ItemGroup.Hovered then
|
||||||
--
|
--
|
||||||
|
|
||||||
-- Emit the command with the hovered option
|
-- Emit the command with the hovered option
|
||||||
ya.manager_emit(command, merge_tables(args, { hovered = true }))
|
ya.mgr_emit(command, merge_tables(args, { hovered = true }))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2686,7 +2690,7 @@ local function enter_or_open_created_item(item_url, is_directory, args, config)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Otherwise, call the function change to the created directory
|
-- Otherwise, call the function change to the created directory
|
||||||
return ya.manager_emit("cd", { item_url })
|
return ya.mgr_emit("cd", { item_url })
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Otherwise, the item is a file
|
-- Otherwise, the item is a file
|
||||||
@ -2700,13 +2704,13 @@ local function enter_or_open_created_item(item_url, is_directory, args, config)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Otherwise, call the function to reveal the created file
|
-- Otherwise, call the function to reveal the created file
|
||||||
ya.manager_emit("reveal", { item_url })
|
ya.mgr_emit("reveal", { item_url })
|
||||||
|
|
||||||
-- Wait for Yazi to finish loading
|
-- Wait for Yazi to finish loading
|
||||||
wait_until_yazi_is_loaded()
|
wait_until_yazi_is_loaded()
|
||||||
|
|
||||||
-- Call the function to open the file
|
-- Call the function to open the file
|
||||||
return ya.manager_emit("open", { hovered = true })
|
return ya.mgr_emit("open", { hovered = true })
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Function to execute the create command
|
-- Function to execute the create command
|
||||||
@ -2737,7 +2741,7 @@ local function execute_create(item_url, is_directory, args, config)
|
|||||||
|
|
||||||
-- If the function is not successful,
|
-- If the function is not successful,
|
||||||
-- show the error message and exit the function
|
-- show the error message and exit the function
|
||||||
if not successful then return show_error(tostring(error_message)) end
|
if not successful then return show_error(error_message) end
|
||||||
|
|
||||||
-- Otherwise, the item to create is a file
|
-- Otherwise, the item to create is a file
|
||||||
else
|
else
|
||||||
@ -2753,9 +2757,7 @@ local function execute_create(item_url, is_directory, args, config)
|
|||||||
|
|
||||||
-- If the function is not successful,
|
-- If the function is not successful,
|
||||||
-- show the error message and exit the function
|
-- show the error message and exit the function
|
||||||
if not successful then
|
if not successful then return show_error(error_message) end
|
||||||
return show_error(tostring(error_message))
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Otherwise, create the file
|
-- Otherwise, create the file
|
||||||
@ -2763,13 +2765,26 @@ local function execute_create(item_url, is_directory, args, config)
|
|||||||
|
|
||||||
-- If the function is not successful,
|
-- If the function is not successful,
|
||||||
-- show the error message and exit the function
|
-- show the error message and exit the function
|
||||||
if not successful then return show_error(tostring(error_message)) end
|
if not successful then return show_error(error_message) end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Call the function to enter or open the created item
|
-- Call the function to enter or open the created item
|
||||||
enter_or_open_created_item(item_url, is_directory, args, config)
|
enter_or_open_created_item(item_url, is_directory, args, config)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Function to get the confirm component border foreground colour
|
||||||
|
---@type fun(): Color
|
||||||
|
local get_confirm_border_fg = ya.sync(
|
||||||
|
--
|
||||||
|
|
||||||
|
-- I have no idea how to type it such that the theme
|
||||||
|
-- is accessible only within a synchronous function,
|
||||||
|
-- so disabling the diagnostic seems to be the
|
||||||
|
-- best course of action
|
||||||
|
---@diagnostic disable-next-line: undefined-global
|
||||||
|
function() return THEME.confirm.border.fg end
|
||||||
|
)
|
||||||
|
|
||||||
-- Function to handle the create command
|
-- Function to handle the create command
|
||||||
---@type CommandFunction
|
---@type CommandFunction
|
||||||
local function handle_create(args, config)
|
local function handle_create(args, config)
|
||||||
@ -2835,6 +2850,7 @@ local function handle_create(args, config)
|
|||||||
ui.Line("Will overwrite the following file:")
|
ui.Line("Will overwrite the following file:")
|
||||||
:align(ui.Line.CENTER),
|
:align(ui.Line.CENTER),
|
||||||
ui.Line(string.rep("─", DEFAULT_CONFIRM_OPTIONS.pos.w - 2))
|
ui.Line(string.rep("─", DEFAULT_CONFIRM_OPTIONS.pos.w - 2))
|
||||||
|
:style(ui.Style():fg(get_confirm_border_fg()))
|
||||||
:align(ui.Line.LEFT),
|
:align(ui.Line.LEFT),
|
||||||
ui.Line(tostring(full_url)):align(ui.Line.LEFT),
|
ui.Line(tostring(full_url)):align(ui.Line.LEFT),
|
||||||
}):wrap(ui.Text.WRAP_TRIM)
|
}):wrap(ui.Text.WRAP_TRIM)
|
||||||
@ -2955,9 +2971,7 @@ local function fix_shell_command_containing_bat(command)
|
|||||||
--
|
--
|
||||||
|
|
||||||
-- If the pager argument is quoted, return the command immediately
|
-- If the pager argument is quoted, return the command immediately
|
||||||
if pager_argument:find("['\"].+['\"]") then
|
if pager_argument:find("['\"].+['\"]") then return command end
|
||||||
return command
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Otherwise, quote the pager argument with single quotes
|
-- Otherwise, quote the pager argument with single quotes
|
||||||
--
|
--
|
||||||
@ -3134,7 +3148,7 @@ local function handle_shell(args, _)
|
|||||||
args = merge_tables({ command }, args)
|
args = merge_tables({ command }, args)
|
||||||
|
|
||||||
-- Emit the command to operate on the hovered item
|
-- Emit the command to operate on the hovered item
|
||||||
ya.manager_emit("shell", args)
|
ya.mgr_emit("shell", args)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Function to handle the paste command
|
-- Function to handle the paste command
|
||||||
@ -3151,17 +3165,17 @@ local function handle_paste(args, config)
|
|||||||
|
|
||||||
-- Just paste the items inside the current directory
|
-- Just paste the items inside the current directory
|
||||||
-- and exit the function
|
-- and exit the function
|
||||||
return ya.manager_emit("paste", args)
|
return ya.mgr_emit("paste", args)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Otherwise, enter the directory
|
-- Otherwise, enter the directory
|
||||||
ya.manager_emit("enter", {})
|
ya.mgr_emit("enter", {})
|
||||||
|
|
||||||
-- Paste the items inside the directory
|
-- Paste the items inside the directory
|
||||||
ya.manager_emit("paste", args)
|
ya.mgr_emit("paste", args)
|
||||||
|
|
||||||
-- Leave the directory
|
-- Leave the directory
|
||||||
ya.manager_emit("leave", {})
|
ya.mgr_emit("leave", {})
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Function to execute the tab create command
|
-- Function to execute the tab create command
|
||||||
@ -3189,12 +3203,12 @@ local execute_tab_create = ya.sync(function(state, args)
|
|||||||
|
|
||||||
-- Emit the command to create a new tab with the arguments
|
-- Emit the command to create a new tab with the arguments
|
||||||
-- and exit the function
|
-- and exit the function
|
||||||
return ya.manager_emit("tab_create", args)
|
return ya.mgr_emit("tab_create", args)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Otherwise, emit the command to create a new tab
|
-- Otherwise, emit the command to create a new tab
|
||||||
-- with the hovered item's url
|
-- with the hovered item's url
|
||||||
ya.manager_emit("tab_create", { hovered_item.url })
|
ya.mgr_emit("tab_create", { hovered_item.url })
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- Function to handle the tab create command
|
-- Function to handle the tab create command
|
||||||
@ -3227,7 +3241,7 @@ local execute_tab_switch = ya.sync(function(state, args)
|
|||||||
if
|
if
|
||||||
not (state.config.smart_tab_switch or table_pop(args, "smart", false))
|
not (state.config.smart_tab_switch or table_pop(args, "smart", false))
|
||||||
then
|
then
|
||||||
return ya.manager_emit("tab_switch", args)
|
return ya.mgr_emit("tab_switch", args)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Get the current tab
|
-- Get the current tab
|
||||||
@ -3242,19 +3256,19 @@ local execute_tab_switch = ya.sync(function(state, args)
|
|||||||
--
|
--
|
||||||
|
|
||||||
-- Call the tab create command
|
-- Call the tab create command
|
||||||
ya.manager_emit("tab_create", { current_tab.cwd })
|
ya.mgr_emit("tab_create", { current_tab.cwd })
|
||||||
|
|
||||||
-- If there is a hovered item
|
-- If there is a hovered item
|
||||||
if current_tab.hovered then
|
if current_tab.hovered then
|
||||||
--
|
--
|
||||||
|
|
||||||
-- Reveal the hovered item
|
-- Reveal the hovered item
|
||||||
ya.manager_emit("reveal", { current_tab.hovered.url })
|
ya.mgr_emit("reveal", { current_tab.hovered.url })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Switch to the given tab index
|
-- Switch to the given tab index
|
||||||
ya.manager_emit("tab_switch", args)
|
ya.mgr_emit("tab_switch", args)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- Function to handle the tab switch command
|
-- Function to handle the tab switch command
|
||||||
@ -3278,7 +3292,7 @@ local function handle_quit(args, config)
|
|||||||
-- or if the number of tabs is 1 or less,
|
-- or if the number of tabs is 1 or less,
|
||||||
-- then emit the quit command
|
-- then emit the quit command
|
||||||
if not (config.confirm_on_quit or args.confirm) or number_of_tabs <= 1 then
|
if not (config.confirm_on_quit or args.confirm) or number_of_tabs <= 1 then
|
||||||
return ya.manager_emit("quit", args)
|
return ya.mgr_emit("quit", args)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Otherwise, get the user's confirmation for quitting
|
-- Otherwise, get the user's confirmation for quitting
|
||||||
@ -3294,7 +3308,40 @@ local function handle_quit(args, config)
|
|||||||
if not user_confirmation then return end
|
if not user_confirmation then return end
|
||||||
|
|
||||||
-- Otherwise, emit the quit command
|
-- Otherwise, emit the quit command
|
||||||
ya.manager_emit("quit", args)
|
ya.mgr_emit("quit", args)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Function to handle smooth scrolling
|
||||||
|
---@param steps number The number of steps to scroll
|
||||||
|
---@param scroll_delay number The scroll delay in seconds
|
||||||
|
---@param scroll_func fun(step: integer): nil The function to call to scroll
|
||||||
|
local function smoothly_scroll(steps, scroll_delay, scroll_func)
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Initialise the direction to positive 1
|
||||||
|
local direction = 1
|
||||||
|
|
||||||
|
-- If the number of steps is negative
|
||||||
|
if steps < 0 then
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Set the direction to negative 1
|
||||||
|
direction = -1
|
||||||
|
|
||||||
|
-- Convert the number of steps to positive
|
||||||
|
steps = -steps
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Iterate over the number of steps
|
||||||
|
for _ = 1, steps do
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Call the function to scroll
|
||||||
|
scroll_func(direction)
|
||||||
|
|
||||||
|
-- Pause for the scroll delay
|
||||||
|
ya.sleep(scroll_delay)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Function to do the wraparound for the arrow command
|
-- Function to do the wraparound for the arrow command
|
||||||
@ -3307,8 +3354,15 @@ local wraparound_arrow = ya.sync(function(_, args)
|
|||||||
-- Get the current tab
|
-- Get the current tab
|
||||||
local current_tab = cx.active.current
|
local current_tab = cx.active.current
|
||||||
|
|
||||||
-- Get the step from the arguments given
|
-- Get the number of steps from the arguments given
|
||||||
local step = table.remove(args, 1)
|
local steps = table.remove(args, 1) or 1
|
||||||
|
|
||||||
|
-- If the step isn't a number,
|
||||||
|
-- immediately emit the arrow command
|
||||||
|
-- and exit the function
|
||||||
|
if type(steps) ~= "number" then
|
||||||
|
return ya.mgr_emit("arrow", merge_tables(args, { steps }))
|
||||||
|
end
|
||||||
|
|
||||||
-- Get the number of files in the current tab
|
-- Get the number of files in the current tab
|
||||||
local number_of_files = #current_tab.files
|
local number_of_files = #current_tab.files
|
||||||
@ -3320,14 +3374,17 @@ local wraparound_arrow = ya.sync(function(_, args)
|
|||||||
-- which is the current cursor position plus the step given
|
-- which is the current cursor position plus the step given
|
||||||
-- to the arrow function, modulus the number of files in
|
-- to the arrow function, modulus the number of files in
|
||||||
-- the current tab
|
-- the current tab
|
||||||
local new_cursor_index = (current_tab.cursor + step) % number_of_files
|
local new_cursor_index = (current_tab.cursor + steps) % number_of_files
|
||||||
|
|
||||||
-- Emit the arrow function with the new cursor index minus
|
-- Get the url of the item at the new cursor index.
|
||||||
-- the current cursor index to determine how to move the cursor
|
--
|
||||||
ya.manager_emit(
|
-- The plus one is needed to convert the cursor index,
|
||||||
"arrow",
|
-- which is 0-based, to a 1-based index,
|
||||||
merge_tables(args, { new_cursor_index - current_tab.cursor })
|
-- which is what is used to index into the list of files.
|
||||||
)
|
local item_url = current_tab.files[new_cursor_index + 1].url
|
||||||
|
|
||||||
|
-- Emit the reveal command
|
||||||
|
ya.mgr_emit("reveal", merge_tables(args, { item_url }))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- Function to handle the arrow command
|
-- Function to handle the arrow command
|
||||||
@ -3335,15 +3392,47 @@ end)
|
|||||||
local function handle_arrow(args, config)
|
local function handle_arrow(args, config)
|
||||||
--
|
--
|
||||||
|
|
||||||
-- If wraparound file navigation isn't wanted,
|
-- If smooth scrolling is wanted,
|
||||||
-- then execute the arrow command
|
if config.smooth_scrolling then
|
||||||
if not config.wraparound_file_navigation then
|
--
|
||||||
ya.manager_emit("arrow", args)
|
|
||||||
|
|
||||||
-- Otherwise, call the wraparound arrow function
|
-- Get the number of steps from the arguments given
|
||||||
else
|
local steps = table.remove(args, 1) or 1
|
||||||
wraparound_arrow(args)
|
|
||||||
|
-- If the number of steps isn't a number,
|
||||||
|
-- immediately emit the arrow command
|
||||||
|
-- and exit the function
|
||||||
|
if type(steps) ~= "number" then
|
||||||
|
return ya.mgr_emit("arrow", merge_tables(args, { steps }))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Initialise the function to the regular arrow command
|
||||||
|
local function scroll_func(step)
|
||||||
|
ya.mgr_emit("arrow", merge_tables(args, { step }))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- If wraparound file navigation is wanted
|
||||||
|
if config.wraparound_file_navigation then
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Set the scroll function to the wraparound arrow command
|
||||||
|
function scroll_func(step)
|
||||||
|
wraparound_arrow(merge_tables(args, { step }))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Call the smoothly scroll function and exit the function
|
||||||
|
return smoothly_scroll(steps, config.scroll_delay, scroll_func)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Otherwise, if smooth scrolling is not wanted,
|
||||||
|
-- and wraparound file navigation is wanted,
|
||||||
|
-- call the wraparound arrow function
|
||||||
|
-- and exit the function
|
||||||
|
if config.wraparound_file_navigation then return wraparound_arrow(args) end
|
||||||
|
|
||||||
|
-- Otherwise, emit the regular arrow command
|
||||||
|
ya.mgr_emit("arrow", args)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Function to get the directory items in the parent directory
|
-- Function to get the directory items in the parent directory
|
||||||
@ -3398,7 +3487,7 @@ local execute_parent_arrow = ya.sync(function(state, args)
|
|||||||
if not parent_directory then return end
|
if not parent_directory then return end
|
||||||
|
|
||||||
-- Get the offset from the arguments given
|
-- Get the offset from the arguments given
|
||||||
local offset = table.remove(args, 1)
|
local offset = table.remove(args, 1) or 1
|
||||||
|
|
||||||
-- Get the type of the offset
|
-- Get the type of the offset
|
||||||
local offset_type = type(offset)
|
local offset_type = type(offset)
|
||||||
@ -3506,19 +3595,30 @@ local execute_parent_arrow = ya.sync(function(state, args)
|
|||||||
|
|
||||||
-- Emit the command to change directory to
|
-- Emit the command to change directory to
|
||||||
-- the directory item and exit the function
|
-- the directory item and exit the function
|
||||||
return ya.manager_emit("cd", { directory_item.url })
|
return ya.mgr_emit("cd", { directory_item.url })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- Function to handle the parent arrow command
|
-- Function to handle the parent arrow command
|
||||||
---@type CommandFunction
|
---@type CommandFunction
|
||||||
local function handle_parent_arrow(args)
|
local function handle_parent_arrow(args, config)
|
||||||
--
|
--
|
||||||
|
|
||||||
-- Call the function to execute the parent arrow command
|
-- If smooth scrolling is not wanted,
|
||||||
-- with the arguments given
|
-- call the function to execute the parent arrow command
|
||||||
execute_parent_arrow(args)
|
if not config.smooth_scrolling then execute_parent_arrow(args) end
|
||||||
|
|
||||||
|
-- Otherwise, smooth scrolling is wanted,
|
||||||
|
-- so get the number of steps from the arguments given
|
||||||
|
local steps = table.remove(args, 1) or 1
|
||||||
|
|
||||||
|
-- Call the function to smoothly scroll the parent arrow command
|
||||||
|
smoothly_scroll(
|
||||||
|
steps,
|
||||||
|
config.scroll_delay,
|
||||||
|
function(step) execute_parent_arrow(merge_tables(args, { step })) end
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Function to handle the editor command
|
-- Function to handle the editor command
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
--- @since 25.2.7
|
--- @since 25.2.26
|
||||||
|
|
||||||
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.manager_emit("escape", { visual = true })
|
ya.mgr_emit("escape", { visual = true })
|
||||||
|
|
||||||
local urls = selected_or_hovered()
|
local urls = selected_or_hovered()
|
||||||
if #urls == 0 then
|
if #urls == 0 then
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
--- @since 25.2.7
|
--- @since 25.2.26
|
||||||
|
|
||||||
local function setup(_, opts)
|
local function setup(_, opts)
|
||||||
local type = opts and opts.type or ui.Border.ROUNDED
|
local type = opts and opts.type or ui.Border.ROUNDED
|
||||||
@ -24,7 +24,7 @@ local function setup(_, opts)
|
|||||||
c[3]:pad(ui.Pad.y(1)),
|
c[3]:pad(ui.Pad.y(1)),
|
||||||
}
|
}
|
||||||
|
|
||||||
local style = THEME.manager.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.Border.ALL):area(self._area):type(type):style(style),
|
||||||
ui.Bar(ui.Bar.RIGHT):area(self._chunks[1]):style(style),
|
ui.Bar(ui.Bar.RIGHT):area(self._chunks[1]):style(style),
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
--- @since 25.2.7
|
--- @since 25.2.26
|
||||||
--- @sync entry
|
--- @sync entry
|
||||||
|
|
||||||
local function entry(st)
|
local function entry(st)
|
||||||
@ -14,12 +14,12 @@ local function entry(st)
|
|||||||
else
|
else
|
||||||
st.old = Tab.layout
|
st.old = Tab.layout
|
||||||
Tab.layout = function(self)
|
Tab.layout = function(self)
|
||||||
local all = MANAGER.ratio.parent + MANAGER.ratio.current
|
local r = rt.mgr.ratio
|
||||||
self._chunks = ui.Layout()
|
self._chunks = ui.Layout()
|
||||||
:direction(ui.Layout.HORIZONTAL)
|
:direction(ui.Layout.HORIZONTAL)
|
||||||
:constraints({
|
:constraints({
|
||||||
ui.Constraint.Ratio(MANAGER.ratio.parent, all),
|
ui.Constraint.Ratio(r.parent, r.parent + r.current),
|
||||||
ui.Constraint.Ratio(MANAGER.ratio.current, all),
|
ui.Constraint.Ratio(r.current, r.parent + r.current),
|
||||||
ui.Constraint.Length(1),
|
ui.Constraint.Length(1),
|
||||||
})
|
})
|
||||||
:split(self._area)
|
:split(self._area)
|
||||||
|
|||||||
@ -76,10 +76,14 @@ local render_motion = ya.sync(function(_, motion_num, motion_cmd)
|
|||||||
motion_span = ui.Span(string.format(" %3d%s ", motion_num, motion_cmd))
|
motion_span = ui.Span(string.format(" %3d%s ", motion_num, motion_cmd))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local status_config = THEME.status
|
||||||
|
local separator_open = status_config.separator_open or status_config.sep_right.open
|
||||||
|
local separator_close = status_config.separator_close or status_config.sep_right.close
|
||||||
|
|
||||||
return ui.Line {
|
return ui.Line {
|
||||||
ui.Span(THEME.status.separator_open):fg(style.main.bg),
|
ui.Span(separator_open):fg(style.main.bg),
|
||||||
motion_span:style(style.main),
|
motion_span:style(style.main),
|
||||||
ui.Span(THEME.status.separator_close):fg(style.main.bg),
|
ui.Span(separator_close):fg(style.main.bg),
|
||||||
ui.Span(" "),
|
ui.Span(" "),
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
[ -f "$XDG_CONFIG_HOME/zsh/startup" ] && source "$XDG_CONFIG_HOME/zsh/startup"
|
[ -f "$XDG_CONFIG_HOME/zsh/startup" ] && source "$XDG_CONFIG_HOME/zsh/startup"
|
||||||
fpath=("$XDG_CONFIG_HOME/zsh/zfunc/" $fpath)
|
fpath=("$XDG_CONFIG_HOME/zsh/zfunc/" $fpath)
|
||||||
|
|
||||||
# Add deno completions to search path
|
# Add completions to search path
|
||||||
if [[ ":$FPATH:" != *":$XDG_CONFIG_HOME/zsh/completions:"* ]]; then export FPATH="$XDG_CONFIG_HOME/zsh/completions:$FPATH"; fi
|
if [[ ":$FPATH:" != *":$XDG_CONFIG_HOME/zsh/completions:"* ]]; then export FPATH="$XDG_CONFIG_HOME/zsh/completions:$FPATH"; fi
|
||||||
|
|
||||||
# Options
|
# Options
|
||||||
@ -146,6 +146,7 @@ eval "$(fzf --zsh)"
|
|||||||
eval "$(uv generate-shell-completion zsh)"
|
eval "$(uv generate-shell-completion zsh)"
|
||||||
eval "$(uvx --generate-shell-completion zsh)"
|
eval "$(uvx --generate-shell-completion zsh)"
|
||||||
eval "$(zoxide init zsh)"
|
eval "$(zoxide init zsh)"
|
||||||
|
eval "$(fastanime completions)"
|
||||||
|
|
||||||
[[ -r ~/.local/share/zsh/plugins/znap/znap.zsh ]] ||
|
[[ -r ~/.local/share/zsh/plugins/znap/znap.zsh ]] ||
|
||||||
git clone --depth 1 -- \
|
git clone --depth 1 -- \
|
||||||
|
|||||||
165
local/bin/ani-skip.bak
Executable file
165
local/bin/ani-skip.bak
Executable file
@ -0,0 +1,165 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
version_number="1.0.1"
|
||||||
|
|
||||||
|
agent="Mozilla/5.0 (Windows NT 6.1; Win64; rv:109.0) Gecko/20100101 Firefox/109.0"
|
||||||
|
|
||||||
|
chapter_format="\n[CHAPTER]\nTIMEBASE=1/1000\nSTART=%s\nEND=%s\nTITLE=%s\n"
|
||||||
|
option_format="skip-%s_start=%s,skip-%s_end=%s"
|
||||||
|
|
||||||
|
die() {
|
||||||
|
printf "\33[2K\r\033[1;31m%s\033[0m\n" "$*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
help_info() {
|
||||||
|
printf "
|
||||||
|
Usage:
|
||||||
|
%s [OPTIONS]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-q, --query
|
||||||
|
Anime Title or MyAnimeList ID
|
||||||
|
-e, --episode
|
||||||
|
Specify the episode number
|
||||||
|
-V, --version
|
||||||
|
Show the version of the script
|
||||||
|
-h, --help
|
||||||
|
Show this help message and exit
|
||||||
|
-U, --update
|
||||||
|
Update the script
|
||||||
|
Some example usages:
|
||||||
|
%s -q \"Solo Leveling\" # Returns MyAnimeList ID
|
||||||
|
%s -q \"Solo Leveling\" -e 3 # Returns MPV skip flag
|
||||||
|
%s -q 52299 -e 5 # Returns MPV skip flag
|
||||||
|
\n" "${0##*/}" "${0##*/}" "${0##*/}" "${0##*/}"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
update_script() {
|
||||||
|
update="$(curl -s -A "$agent" "https://raw.githubusercontent.com/synacktraa/ani-skip/master/ani-skip")" || die "Connection error"
|
||||||
|
update="$(printf '%s\n' "$update" | diff -u "$0" -)"
|
||||||
|
if [ -z "$update" ]; then
|
||||||
|
printf "Script is up to date :)\n"
|
||||||
|
else
|
||||||
|
if printf '%s\n' "$update" | patch "$0" -; then
|
||||||
|
printf "Script has been updated\n"
|
||||||
|
else
|
||||||
|
die "Can't update for some reason!"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
fetch_mal_id() {
|
||||||
|
#shellcheck disable=SC2016
|
||||||
|
: '
|
||||||
|
`fetch_mal_id` fetches MyAnimeList Identifier of particular anime
|
||||||
|
:param $1: title of the anime
|
||||||
|
'
|
||||||
|
name=$(printf "%s" "$*" | sed 's| (\([0-9]*\) episodes)||')
|
||||||
|
keyword=$(printf "%s" "$name" | tr -c '[:alnum:]' ' ' | sed -E 's| |%20|g')
|
||||||
|
mal_metadata=$(curl -sL -A "$agent" "https://myanimelist.net/search/prefix.json?type=anime&keyword=$keyword" | tr -d "\\" 2>/dev/null)
|
||||||
|
name=$(printf "%s\n" "$name" | tr -cs '[:print:]' ' ' | tr -c '[:alnum:]' ' ')
|
||||||
|
fzf_nth=$(printf "%s," $(seq 1 "$(printf "%s" "$name" | wc -w)") | sed 's|,$||')
|
||||||
|
results=$(printf "%s" "$mal_metadata" | sed 's|},{|\n|g' | sed 's|.*,"name":"||g ; s|","url":".*||g')
|
||||||
|
relevant_name=$(printf "%s" "$results" | fzf -i --filter="$name" --nth="$fzf_nth" | head -n1)
|
||||||
|
[ -z "$relevant_name" ] && relevant_name=$(printf "%s" "$results" | fzf -i --filter="$name" | head -n1)
|
||||||
|
[ -z "$relevant_name" ] && relevant_name=$(printf "%s" "$results" | head -n1)
|
||||||
|
printf "%s" "$mal_metadata" | sed 's|},{|\n|g' | grep 'name":"'"$relevant_name"'","url":' | sed -nE 's|.*"id":([0-9]{1,9}),.*|\1|p'
|
||||||
|
}
|
||||||
|
|
||||||
|
ftoi() {
|
||||||
|
printf "%.3f" "$1" | tr -d '.'
|
||||||
|
}
|
||||||
|
|
||||||
|
build_options() {
|
||||||
|
#shellcheck disable=SC2016
|
||||||
|
: '
|
||||||
|
`build_options` builds options for `--script-opts` flag
|
||||||
|
:param $1: AniSkip metadata
|
||||||
|
'
|
||||||
|
st_time_re='"start_time":([0-9.]+)'
|
||||||
|
ed_time_re='"end_time":([0-9.]+)'
|
||||||
|
op_end=""
|
||||||
|
ed_start=""
|
||||||
|
options=""
|
||||||
|
|
||||||
|
for skip_type in "op" "ed"
|
||||||
|
do
|
||||||
|
sk_type_re='"skip_type":"('$skip_type')"'
|
||||||
|
unformatted=$(printf "%s" "$1" | grep -Eo "$st_time_re,$ed_time_re},$sk_type_re")
|
||||||
|
if [ -n "$unformatted" ]; then
|
||||||
|
st_time=$(printf "%s" "$unformatted" | grep -Eo "$st_time_re" | sed -E 's@'"$st_time_re"'@\1@')
|
||||||
|
ed_time=$(printf "%s" "$unformatted" | grep -Eo "$ed_time_re" | sed -E 's@'"$ed_time_re"'@\1@')
|
||||||
|
|
||||||
|
[ "$skip_type" = "op" ] && op_end=$ed_time && ch_name="Opening"
|
||||||
|
[ "$skip_type" = "ed" ] && ed_start=$st_time && ch_name="Ending"
|
||||||
|
[ -n "$options" ] && options="$options,"
|
||||||
|
|
||||||
|
printf "$chapter_format" "$(ftoi $st_time)" "$(ftoi $ed_time)" "$ch_name" >> $chapters_file
|
||||||
|
options=$(printf "%s%s" "$options" $(printf "$option_format" "$skip_type" "$st_time" "$skip_type" "$ed_time"))
|
||||||
|
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "$op_end" ]; then
|
||||||
|
[ -n "$ed_start" ] && ep_ed=$ed_start || ep_ed=$op_end
|
||||||
|
printf "$chapter_format" "$(ftoi $op_end)" "$(ftoi $ep_ed)" "Episode" >> $chapters_file
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "%s" "$options"
|
||||||
|
}
|
||||||
|
|
||||||
|
build_flags() {
|
||||||
|
#shellcheck disable=SC2016
|
||||||
|
: '
|
||||||
|
`build_flags` builds `--script-opts` and `--chapters-file` flags for MPV player
|
||||||
|
:param $1: MyAnimeList Identifier
|
||||||
|
:param $2: Episode number
|
||||||
|
'
|
||||||
|
aniskip_api="https://api.aniskip.com/v1/skip-times/$1/$2?types=op&types=ed"
|
||||||
|
metadata=$(curl -s --connect-timeout 5 -A "$agent" "$aniskip_api")
|
||||||
|
|
||||||
|
found_status=$(printf "%s" "$metadata" | sed -n 's/.*"found":\([^,]*\).*/\1/p')
|
||||||
|
[ "$found_status" != "true" ] && die "Skip times not found!"
|
||||||
|
|
||||||
|
printf "%s" ";FFMETADATA1" > "$chapters_file"
|
||||||
|
options=$(build_options "$metadata")
|
||||||
|
[ -n "$options" ] && printf -- "--chapters-file=%s --script-opts=%s" "$chapters_file" "$options"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[ $# -eq 0 ] && help_info
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
[ "$OSTYPE" = msys* ] && flag=${1//[![:print:]]/} || flag="$1"
|
||||||
|
case "$flag" in
|
||||||
|
-U | --update) update_script ;;
|
||||||
|
-V | --version) printf "%s\n" "$version_number" && exit 0 ;;
|
||||||
|
-h | --help) help_info ;;
|
||||||
|
-q | --query)
|
||||||
|
[ $# -lt 2 ] && die "missing anime title/MyAnimeList ID!"
|
||||||
|
case $2 in
|
||||||
|
''|*[!0-9]*) mal_id=$(fetch_mal_id $2) ;;
|
||||||
|
*) mal_id=$2 ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-e | --episode)
|
||||||
|
[ $# -lt 2 ] && die "missing episode number!"
|
||||||
|
case $2 in
|
||||||
|
''|*[!0-9]*) die "value must be a number!" ;;
|
||||||
|
*) episode=$2 ;;
|
||||||
|
esac
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
[ -z "$mal_id" ] && die "-q/--query is required!"
|
||||||
|
if [ -z "$episode" ]; then
|
||||||
|
printf "%s" "$mal_id"
|
||||||
|
else
|
||||||
|
chapters_file=$(mktemp)
|
||||||
|
build_flags $mal_id $episode
|
||||||
|
fi
|
||||||
@ -3,7 +3,7 @@
|
|||||||
if [[ $# -eq 1 ]]; then
|
if [[ $# -eq 1 ]]; then
|
||||||
selected=$1
|
selected=$1
|
||||||
else
|
else
|
||||||
selected=$(fd --min-depth 1 --max-depth 1 --type d . ~/repos/Rust/ ~/repos/examples/ ~/repos/ ~/neorg/Work/ ~/Nextcloud/repos/ ~/Nextcloud/Documents/LaTeX/ ~/Nextcloud/Documents/Typst/ ~/Nextcloud/repos/university/** ~/Nextcloud/repos/university/**/**/ ~/repos/yoda-bot/ ~/repos/Codnity/ ~/repos/Codnity/emisela/ ~/repos/Codnity/dio/ ~/repos/Codnity/zaao/ ~/repos/Codnity/talentflow/ ~/Obsidian | sk --height 16)
|
selected=$(project-finder ~/repos/ ~/Nextcloud/ ~/Obsidian/ | sk --height 16)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z $selected ]]; then
|
if [[ -z $selected ]]; then
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user