diff --git a/.config/niri/main.kdl b/.config/niri/main.kdl index 714006e1..b360884d 100644 --- a/.config/niri/main.kdl +++ b/.config/niri/main.kdl @@ -7,53 +7,18 @@ input { repeat-delay 250 repeat-rate 30 } - // Next sections include libinput settings. - // Omitting settings disables them, or leaves them at their default values. touchpad { off - // tap - // dwt - // dwtp - // drag-lock - // natural-scroll - // accel-speed 0.2 - // accel-profile "flat" - // scroll-method "two-finger" - // disabled-on-external-mouse } mouse { - // off - // natural-scroll accel-speed 0.1 accel-profile "flat" - // scroll-method "no-scroll" } trackpoint { off - // natural-scroll - // accel-speed 0.2 - // accel-profile "flat" - // scroll-method "on-button-down" - // scroll-button 273 - // middle-emulation } - // Uncomment this to make the mouse warp to the center of newly focused windows. - // warp-mouse-to-focus - // Focus windows and outputs automatically when moving the mouse into them. - // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen. - // focus-follows-mouse max-scroll-amount="0%" - // focus-follows-mouse max-scroll-amount="0%" focus-follows-mouse } -// BenQ -output "DP-1" { - mode "1920x1080@143.981" - position x=1920 y=0 -} -// Dell -output "HDMI-A-1" { - mode "1920x1200@59.950" -} overview { workspace-shadow { off @@ -61,53 +26,20 @@ overview { } layout { background-color "transparent" - // Set gaps around windows in logical pixels. gaps 16 struts { top -16 bottom -16 } - // gaps 16 - // gaps 8 - // When to center a column when changing focus, options are: - // - "never", default behavior, focusing an off-screen column will keep at the left - // or right edge of the screen. - // - "always", the focused column will always be centered. - // - "on-overflow", focusing a column will center it if it doesn't fit - // together with the previously focused column. - // center-focused-column "on-overflow" - // always-center-single-column - // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between. + always-center-single-column preset-column-widths { - // Proportion sets the width as a fraction of the output width, taking gaps into account. - // For example, you can perfectly fit four windows sized "proportion 0.25" on an output. - // The default preset widths are 1/3, 1/2 and 2/3 of the output. proportion 0.33333 proportion 0.5 proportion 0.66667 - // proportion 0.75 - // Fixed sets the width in logical pixels exactly. - // fixed 1920 } - // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between. - // preset-window-heights { } - // You can change the default width of the new windows. default-column-width { proportion 0.5 } - // If you leave the brackets empty, the windows themselves will decide their initial width. - // default-column-width {} - // By default focus ring and border are rendered as a solid background rectangle - // behind windows. That is, they will show up through semitransparent windows. - // This is because windows using client-side decorations can have an arbitrary shape. - // - // If you don't like that, you should uncomment `prefer-no-csd` below. - // Niri will draw focus ring and border *around* windows that agree to omit their - // client-side decorations. - // - // Alternatively, you can override it with a window rule called - // `draw-border-with-background`. - // You can change how the focus ring looks. focus-ring { off width 1 @@ -120,79 +52,21 @@ layout { active-color "#B14242" inactive-color "#121212" } - // You can enable drop shadows for windows. shadow { - // Uncomment the next line to enable shadows. on - // By default, the shadow draws only around its window, and not behind it. - // Uncomment this setting to make the shadow draw behind its window. - // - // Note that niri has no way of knowing about the CSD window corner - // radius. It has to assume that windows have square corners, leading to - // shadow artifacts inside the CSD rounded corners. This setting fixes - // those artifacts. - // - // However, instead you may want to set prefer-no-csd and/or - // geometry-corner-radius. Then, niri will know the corner radius and - // draw the shadow correctly, without having to draw it behind the - // window. These will also remove client-side shadows if the window - // draws any. - // - // draw-behind-window true - // You can change how shadows look. The values below are in logical - // pixels and match the CSS box-shadow properties. - // Softness controls the shadow blur radius. softness 30 - // Spread expands the shadow. spread 5 - // Offset moves the shadow relative to the window. offset x=0 y=5 - // You can also change the shadow color and opacity. color "#0007" } - // Struts shrink the area occupied by windows, similarly to layer-shell panels. - // You can think of them as a kind of outer gaps. They are set in logical pixels. - // Left and right struts will cause the next window to the side to always be visible. - // Top and bottom struts will simply add outer gaps in addition to the area occupied by - // layer-shell panels and regular gaps. } -// Add lines like this to spawn processes at startup. -// Note that running niri as a session supports xdg-desktop-autostart, -// which may be more convenient to use. -// See the binds section below for more spawn examples. -// spawn-at-startup "alacritty" "-e" "fish" spawn-at-startup "dunst" "&" -// spawn-at-startup "systemctl" "--user" "start" "blueman-applet.service" -// spawn-at-startup "systemctl" "--user" "restart" "blueman-manager.service" -// spawn-at-startup "systemctl" "--user" "restart" "waybar" spawn-at-startup "xwayland-satellite" -// Uncomment this line to ask the clients to omit their client-side decorations if possible. -// If the client will specifically ask for CSD, the request will be honored. -// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. -// This option will also fix border/focus ring drawing behind some semitransparent windows. -// After enabling or disabling this, you need to restart the apps for this to take effect. prefer-no-csd -// You can change the path where screenshots are saved. -// A ~ at the front will be expanded to the home directory. -// The path is formatted with strftime(3) to give you the screenshot date and time. screenshot-path "~/Pictures/niris/niri-%Y-%m-%d%H-%M-%S.png" -// You can also set this to null to disable saving screenshots to disk. -// screenshot-path null -// Animation settings. -// The wiki explains how to configure individual animations: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Animations animations { - // Uncomment to turn off all animations. - // off - // Slow down all animations by this factor. Values below 1 speed them up instead. - // slowdown 3.0 slowdown 0.7 } -// Window rules let you adjust behavior for individual windows. -// Find more information on the wiki: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules -// Work around WezTerm's initial configure bug -// by setting an empty default-column-width. window-rule { match app-id="^spotify$" open-on-workspace "music" @@ -202,9 +76,6 @@ window-rule { open-floating true } window-rule { - // This regular expression is intentionally made as specific as possible, - // since this is the default config, and we want no false positives. - // You can get away with just app-id="wezterm" if you want. match app-id="^org\\.wezfurlong\\.wezterm$" default-column-width { @@ -218,9 +89,6 @@ window-rule { } window-rule { match app-id="vesktop$" - // clip-to-geometry true - // min-width 500 - // draw-border-with-background true } window-rule { match app-id="firefox$" @@ -236,23 +104,11 @@ window-rule { } open-floating true } -// Open the Firefox picture-in-picture player as floating by default. -// window-rule { -// // This app-id regular expression will work for both: -// // - host Firefox (app-id is "firefox") -// // - Flatpak Firefox (app-id is "org.mozilla.firefox") -// match app-id="firefox$" title="^Picture-in-Picture$" -// open-floating true -// } -// Example: block out two password managers from screen capture. -// (This example rule is commented out with a "/-" in front.) window-rule { match app-id="^org\\.keepassxc\\.KeePassXC$" match app-id="^org\\.gnome\\.World\\.Secrets$" match app-id="^Bitwarden$" block-out-from "screen-capture" - // Use this instead if you want them visible on third-party screenshot tools. - // block-out-from "screencast" } // Steam notifications window-rule { @@ -271,13 +127,6 @@ layer-rule { shadow { on } - // Fuzzel defaults to 10 px rounded corners. - // geometry-corner-radius 10 -} -// Example: enable rounded corners for all windows.// (This example rule is commented out with a "/-" in front.) -/-window-rule { -geometry-corner-radius 12 -clip-to-geometry true } environment { QT_QPA_PLATFORM "wayland" @@ -299,21 +148,9 @@ hotkey-overlay { skip-at-startup } binds { - // Keys consist of modifiers separated by + signs, followed by an XKB key name - // in the end. To find an XKB name for a particular key, you may use a program - // like wev. - // - // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt - // when running as a winit window. - // - // Most actions that you can bind here can also be invoked programmatically with - // `niri msg action do-something`. - // Mod-Shift-/, which is usually the same as Mod-?, - // shows a list of important hotkeys. Mod+Shift+Slash { show-hotkey-overlay } - // Suggested binds for running programs: terminal, app launcher, screen locker. Mod+Return { spawn "footclient" } @@ -322,14 +159,10 @@ binds { } Mod+D { spawn "fuzzel" "--placeholder=Select an application:" - // spawn "fuzzel" "--hide-before-typing" "-I" "--placeholder=Select an application:" } Mod+Ctrl+semicolon { spawn "swaylock" "-c" "121212" "-e" "-f" "-F" } - // You can also use a shell. Do this if you need pipes, multiple commands, etc. - // Note: the entire command goes as a single argument in the end. - // Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; } XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+" } @@ -398,8 +231,6 @@ binds { Mod+Shift+I { move-column-right-or-to-monitor-right } - // Alternative commands that move across workspaces when reaching - // the first or last window in a column. Mod+N { focus-window-or-workspace-down } @@ -474,12 +305,6 @@ binds { Mod+Shift+Ctrl+I { move-column-to-monitor-right } - // Alternatively, there are commands to move just a single window: - // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } - // ... - // And you can also move a whole workspace to another monitor: - // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } - // ... Mod+H { focus-workspace-down } @@ -510,9 +335,6 @@ binds { Mod+Shift+U { move-column-to-workspace-up } - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+Page_Down { move-window-to-workspace-down; } - // ... Mod+Shift+Page_Down { move-workspace-down } @@ -525,12 +347,6 @@ binds { Mod+Ctrl+U { move-workspace-up } - // You can bind mouse wheel scroll ticks using the following syntax. - // These binds will change direction based on the natural-scroll setting. - // - // To avoid scrolling through workspaces really fast, you can use - // the cooldown-ms property. The bind will be rate-limited to this value. - // You can set a cooldown on any bind, but it's most useful for the wheel. Mod+MouseForward { focus-column-right } @@ -561,8 +377,6 @@ binds { Mod+Ctrl+WheelScrollLeft { move-column-left } - // Usually scrolling up and down with Shift in applications results in - // horizontal scrolling; these binds replicate that. Mod+Shift+WheelScrollDown { focus-column-right } @@ -575,22 +389,6 @@ binds { Mod+Ctrl+Shift+WheelScrollUp { move-column-left } - // Similarly, you can bind touchpad scroll "ticks". - // Touchpad scrolling is continuous, so for these binds it is split into - // discrete intervals. - // These binds are also affected by touchpad's natural-scroll, so these - // example binds are "inverted", since we have natural-scroll enabled for - // touchpads by default. - // Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; } - // Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; } - // You can refer to workspaces by index. However, keep in mind that - // niri is a dynamic workspace system, so these commands are kind of - // "best effort". Trying to refer to a workspace index bigger than - // the current workspace count will instead refer to the bottommost - // (empty) workspace. - // - // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on - // will all refer to the 3rd workspace. Mod+1 { focus-workspace 1 } @@ -645,95 +443,57 @@ binds { Mod+Shift+9 { move-column-to-workspace 9 } - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+1 { move-window-to-workspace 1; } - // Switches focus between the current and the previous workspace. Mod+Tab { focus-workspace-previous } - // Adapt the sway-window-switcher and bind it here - // The following binds move the focused window in and out of a column. - // If the window is alone, they will consume it into the nearby column to the side. - // If the window is already in a column, they will expel it out. Mod+Alt+C { consume-or-expel-window-left } Mod+Alt+D { consume-or-expel-window-right } - // Consume one window from the right to the bottom of the focused column. Mod+Alt+F { consume-window-into-column } - // Expel the bottom window from the focused column to the right. Mod+Alt+P { expel-window-from-column } Mod+R { switch-preset-column-width } - // Mod+Shift+R { - // switch-preset-window-height - // } - // Mod+Ctrl+R { - // reset-window-height - // } Mod+F { maximize-column } Mod+Shift+F { fullscreen-window } - // Expand the focused column to space not taken up by other fully visible columns. - // Makes the column "fill the rest of the space". Mod+Ctrl+F { expand-column-to-available-width } Mod+C { center-column } - // Finer width adjustments. - // This command can also: - // * set width in pixels: "1000" - // * adjust width in pixels: "-5" or "+5" - // * set width as a percentage of screen width: "25%" - // * adjust width as a percentage of screen width: "-10%" or "+10%" - // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, - // set-column-width "100" will make the column occupy 200 physical screen pixels. Mod+Minus { set-column-width "-10%" } Mod+Equal { set-column-width "+10%" } - // Finer height adjustments when in column with other windows. Mod+Shift+Minus { set-window-height "-10%" } Mod+Shift+Equal { set-window-height "+10%" } - // Move the focused window between the floating and the tiling layout. Mod+Shift+T { toggle-window-floating } Mod+T { switch-focus-between-floating-and-tiling } - // Toggle tabbed column display mode. - // Windows in this column will appear as vertical tabs, - // rather than stacked on top of each other. Mod+W { toggle-column-tabbed-display } - // Actions to switch layouts. - // Note: if you uncomment these, make sure you do NOT have - // a matching layout switch hotkey configured in xkb options above. - // Having both at once on the same hotkey will break the switching, - // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). - // Mod+Space { switch-layout "next"; } - // Mod+Shift+Space { switch-layout "prev"; } - // reload waybar Mod+Shift+W { spawn "systemctl" "--user" "restart" "waybar" } @@ -764,31 +524,17 @@ binds { Mod+B { spawn "~/.config/niri/scripts/rbw-fuzzel.fish" } - // Applications such as remote-desktop clients and software KVM switches may - // request that niri stops processing the keyboard shortcuts defined here - // so they may, for example, forward the key presses as-is to a remote machine. - // It's a good idea to bind an escape hatch to toggle the inhibitor, - // so a buggy application can't hold your session hostage. - // - // The allow-inhibiting=false property can be applied to other binds as well, - // which ensures niri always processes them, even when an inhibitor is active. Mod+Ctrl+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit } - // The quit action will show a confirmation dialog to avoid accidental exits. Mod+Shift+semicolon { spawn "~/dev/utils/waymoji/waymoji.fish" } - // Mod+Shift+semicolon { - // quit - // } - // Powers off the monitors. To turn them back on, do any input like - // moving the mouse or pressing any other key. Mod+Shift+P { power-off-monitors } - // Mod+Shift+o { - // toggle-overview - // } + Mod+Ctrl+o { + toggle-overview + } } diff --git a/.config/yazi/keymap.toml b/.config/yazi/keymap.toml index 67c19c62..881ea2db 100644 --- a/.config/yazi/keymap.toml +++ b/.config/yazi/keymap.toml @@ -1,292 +1,292 @@ "$schema" = "https://yazi-rs.github.io/schemas/keymap.json" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "e" run = "arrow -1" desc = "Move cursor up" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "n" run = "arrow 1" desc = "Move cursor down" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "m" run = "leave" desc = "Go back to the parent directory" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "i" run = "enter" desc = "Enter the child directory" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "j" run = "find_arrow" desc = "Goto the next found" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "J" run = "find_arrow --previous" desc = "Goto the previous found" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["k", "s"] run = "linemode size" desc = "Linemode: size" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["k", "p"] run = "linemode permissions" desc = "Linemode: permissions" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["k", "b"] run = "linemode btime" desc = "Linemode: btime" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["k", "k"] run = "linemode mtime" desc = "Linemode: mtime" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["k", "o"] run = "linemode owner" desc = "Linemode: owner" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["k", "n"] run = "linemode none" desc = "Linemode: none" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "!" run = 'shell "$SHELL" --block' desc = "Open shell here" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "" run = 'shell -- dragon-drop -x -i -T "$1"' desc = "Drag and drop selection" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["g", "r"] run = 'shell -- ya emit cd "$(git rev-parse --show-toplevel)"' desc = "Goto git root" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "o" run = "plugin open-with-cmd" desc = "Open with command" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [";"] # on = ["'", ";"] run = 'plugin custom-shell -- auto --interactive --block=false' desc = "custom-shell as default, interactive" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [":"] # on = ["'", ":"] run = 'plugin custom-shell -- auto --interactive --block' desc = "custom-shell as default, interactive, block" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "h" run = 'shell --block "helix ."' -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "C" run = "plugin ouch zip" desc = "Compress with ouch" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["g", "i"] run = "plugin lazygit" desc = "run lazygit" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["c", "C"] run = "plugin copy-file-contents" desc = "Copy contents of file" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["c", "x"] run = 'shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list' desc = "Mime copy" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["c", "r"] run = "plugin path-from-root" desc = "Copies path from git root" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["c", "m"] run = "plugin chmod" desc = "Chmod on selected files" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["g", "f"] run = "plugin jump-to-char" desc = "Jump to char" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["g", "l"] run = "plugin first-non-directory" desc = "Jump to first non-dir" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "" run = "plugin cdhist -- _ --fuzzy=fzf" desc = "CD history" # PROJECTS -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "P", "s" ] run = "plugin projects save" desc = "Save current project" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "P", "l" ] run = "plugin projects load" desc = "Load project" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "P", "P" ] run = "plugin projects load_last" desc = "Load last project" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "P", "d" ] run = "plugin projects delete" desc = "Delete project" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "P", "D" ] run = "plugin projects delete_all" desc = "Delete all projects" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "P", "m" ] run = "plugin projects 'merge current'" desc = "Merge current tab to other projects" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "P", "M" ] run = "plugin projects 'merge all'" desc = "Merge current project to other projects" # sudo cp/mv -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["R", "p", "p"] run = "plugin sudo -- paste" desc = "sudo paste" # sudo cp/mv --force -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["R", "P"] run = "plugin sudo -- paste --force" desc = "sudo paste" # sudo mv -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["R", "r"] run = "plugin sudo -- rename" desc = "sudo rename" # sudo ln -s (absolute-path) -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["R", "p", "l"] run = "plugin sudo -- link" desc = "sudo link" # sudo ln -s (relative-path) -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["R", "p", "r"] run = "plugin sudo -- link --relative" desc = "sudo link relative path" # sudo ln -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["R", "p", "L"] run = "plugin sudo -- hardlink" desc = "sudo hardlink" # sudo touch/mkdir -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["R", "a"] run = "plugin sudo -- create" desc = "sudo create" # sudo trash -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["R", "d"] run = "plugin sudo -- remove" desc = "sudo trash" # sudo delete -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = ["R", "D"] run = "plugin sudo -- remove --permanently" desc = "sudo delete" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = "F" run = "plugin smart-filter" desc = "Smart filter" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "I" ] run = "plugin bypass" desc = "Recursively enter child directory, skipping children with only a single subdirectory" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "M" ] run = "plugin bypass --args=reverse" desc = "Recursively enter parent directory, skipping parents with only a single subdirectory" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "k", "g" ] run = "plugin vcs-files" desc = "Show Git file changes" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "u", "a" ] run = "plugin yamb save" desc = "Add bookmark" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "u", "g" ] run = "plugin yamb jump_by_key" desc = "Jump bookmark by key" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "u", "G" ] run = "plugin yamb jump_by_fzf" desc = "Jump bookmark by fzf" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "u", "d" ] run = "plugin yamb delete_by_key" desc = "Delete bookmark by key" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "u", "D" ] run = "plugin yamb delete_by_fzf" desc = "Delete bookmark by fzf" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "u", "A" ] run = "plugin yamb delete_all" desc = "Delete all bookmarks" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "u", "r" ] run = "plugin yamb rename_by_key" desc = "Rename bookmark by key" -[[manager.prepend_keymap]] +[[mgr.prepend_keymap]] on = [ "u", "R" ] run = "plugin yamb rename_by_fzf" desc = "Rename bookmark by fzf" diff --git a/.config/yazi/keymap.toml-1748460725229781 b/.config/yazi/keymap.toml-1748460725229781 new file mode 100644 index 00000000..67c19c62 --- /dev/null +++ b/.config/yazi/keymap.toml-1748460725229781 @@ -0,0 +1,319 @@ +"$schema" = "https://yazi-rs.github.io/schemas/keymap.json" + +[[manager.prepend_keymap]] +on = "e" +run = "arrow -1" +desc = "Move cursor up" + +[[manager.prepend_keymap]] +on = "n" +run = "arrow 1" +desc = "Move cursor down" + +[[manager.prepend_keymap]] +on = "m" +run = "leave" +desc = "Go back to the parent directory" + +[[manager.prepend_keymap]] +on = "i" +run = "enter" +desc = "Enter the child directory" + +[[manager.prepend_keymap]] +on = "j" +run = "find_arrow" +desc = "Goto the next found" + +[[manager.prepend_keymap]] +on = "J" +run = "find_arrow --previous" +desc = "Goto the previous found" + +[[manager.prepend_keymap]] +on = ["k", "s"] +run = "linemode size" +desc = "Linemode: size" + +[[manager.prepend_keymap]] +on = ["k", "p"] +run = "linemode permissions" +desc = "Linemode: permissions" + +[[manager.prepend_keymap]] +on = ["k", "b"] +run = "linemode btime" +desc = "Linemode: btime" + +[[manager.prepend_keymap]] +on = ["k", "k"] +run = "linemode mtime" +desc = "Linemode: mtime" + +[[manager.prepend_keymap]] +on = ["k", "o"] +run = "linemode owner" +desc = "Linemode: owner" + +[[manager.prepend_keymap]] +on = ["k", "n"] +run = "linemode none" +desc = "Linemode: none" + +[[manager.prepend_keymap]] +on = "!" +run = 'shell "$SHELL" --block' +desc = "Open shell here" + +[[manager.prepend_keymap]] +on = "" +run = 'shell -- dragon-drop -x -i -T "$1"' +desc = "Drag and drop selection" + +[[manager.prepend_keymap]] +on = ["g", "r"] +run = 'shell -- ya emit cd "$(git rev-parse --show-toplevel)"' +desc = "Goto git root" + +[[manager.prepend_keymap]] +on = "o" +run = "plugin open-with-cmd" +desc = "Open with command" + +[[manager.prepend_keymap]] +on = [";"] +# on = ["'", ";"] +run = 'plugin custom-shell -- auto --interactive --block=false' +desc = "custom-shell as default, interactive" + +[[manager.prepend_keymap]] +on = [":"] +# on = ["'", ":"] +run = 'plugin custom-shell -- auto --interactive --block' +desc = "custom-shell as default, interactive, block" + +[[manager.prepend_keymap]] +on = "h" +run = 'shell --block "helix ."' + +[[manager.prepend_keymap]] +on = "C" +run = "plugin ouch zip" +desc = "Compress with ouch" + +[[manager.prepend_keymap]] +on = ["g", "i"] +run = "plugin lazygit" +desc = "run lazygit" + +[[manager.prepend_keymap]] +on = ["c", "C"] +run = "plugin copy-file-contents" +desc = "Copy contents of file" + +[[manager.prepend_keymap]] +on = ["c", "x"] +run = 'shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list' +desc = "Mime copy" + +[[manager.prepend_keymap]] +on = ["c", "r"] +run = "plugin path-from-root" +desc = "Copies path from git root" + +[[manager.prepend_keymap]] +on = ["c", "m"] +run = "plugin chmod" +desc = "Chmod on selected files" + +[[manager.prepend_keymap]] +on = ["g", "f"] +run = "plugin jump-to-char" +desc = "Jump to char" + +[[manager.prepend_keymap]] +on = ["g", "l"] +run = "plugin first-non-directory" +desc = "Jump to first non-dir" + +[[manager.prepend_keymap]] +on = "" +run = "plugin cdhist -- _ --fuzzy=fzf" +desc = "CD history" + +# PROJECTS + +[[manager.prepend_keymap]] +on = [ "P", "s" ] +run = "plugin projects save" +desc = "Save current project" + +[[manager.prepend_keymap]] +on = [ "P", "l" ] +run = "plugin projects load" +desc = "Load project" + +[[manager.prepend_keymap]] +on = [ "P", "P" ] +run = "plugin projects load_last" +desc = "Load last project" + +[[manager.prepend_keymap]] +on = [ "P", "d" ] +run = "plugin projects delete" +desc = "Delete project" + +[[manager.prepend_keymap]] +on = [ "P", "D" ] +run = "plugin projects delete_all" +desc = "Delete all projects" + +[[manager.prepend_keymap]] +on = [ "P", "m" ] +run = "plugin projects 'merge current'" +desc = "Merge current tab to other projects" + +[[manager.prepend_keymap]] +on = [ "P", "M" ] +run = "plugin projects 'merge all'" +desc = "Merge current project to other projects" + +# sudo cp/mv +[[manager.prepend_keymap]] +on = ["R", "p", "p"] +run = "plugin sudo -- paste" +desc = "sudo paste" + +# sudo cp/mv --force +[[manager.prepend_keymap]] +on = ["R", "P"] +run = "plugin sudo -- paste --force" +desc = "sudo paste" + +# sudo mv +[[manager.prepend_keymap]] +on = ["R", "r"] +run = "plugin sudo -- rename" +desc = "sudo rename" + +# sudo ln -s (absolute-path) +[[manager.prepend_keymap]] +on = ["R", "p", "l"] +run = "plugin sudo -- link" +desc = "sudo link" + +# sudo ln -s (relative-path) +[[manager.prepend_keymap]] +on = ["R", "p", "r"] +run = "plugin sudo -- link --relative" +desc = "sudo link relative path" + +# sudo ln +[[manager.prepend_keymap]] +on = ["R", "p", "L"] +run = "plugin sudo -- hardlink" +desc = "sudo hardlink" + +# sudo touch/mkdir +[[manager.prepend_keymap]] +on = ["R", "a"] +run = "plugin sudo -- create" +desc = "sudo create" + +# sudo trash +[[manager.prepend_keymap]] +on = ["R", "d"] +run = "plugin sudo -- remove" +desc = "sudo trash" + +# sudo delete +[[manager.prepend_keymap]] +on = ["R", "D"] +run = "plugin sudo -- remove --permanently" +desc = "sudo delete" + +[[manager.prepend_keymap]] +on = "F" +run = "plugin smart-filter" +desc = "Smart filter" + +[[manager.prepend_keymap]] +on = [ "I" ] +run = "plugin bypass" +desc = "Recursively enter child directory, skipping children with only a single subdirectory" +[[manager.prepend_keymap]] +on = [ "M" ] +run = "plugin bypass --args=reverse" +desc = "Recursively enter parent directory, skipping parents with only a single subdirectory" + +[[manager.prepend_keymap]] +on = [ "k", "g" ] +run = "plugin vcs-files" +desc = "Show Git file changes" + +[[manager.prepend_keymap]] +on = [ "u", "a" ] +run = "plugin yamb save" +desc = "Add bookmark" + +[[manager.prepend_keymap]] +on = [ "u", "g" ] +run = "plugin yamb jump_by_key" +desc = "Jump bookmark by key" + +[[manager.prepend_keymap]] +on = [ "u", "G" ] +run = "plugin yamb jump_by_fzf" +desc = "Jump bookmark by fzf" + +[[manager.prepend_keymap]] +on = [ "u", "d" ] +run = "plugin yamb delete_by_key" +desc = "Delete bookmark by key" + +[[manager.prepend_keymap]] +on = [ "u", "D" ] +run = "plugin yamb delete_by_fzf" +desc = "Delete bookmark by fzf" + +[[manager.prepend_keymap]] +on = [ "u", "A" ] +run = "plugin yamb delete_all" +desc = "Delete all bookmarks" + +[[manager.prepend_keymap]] +on = [ "u", "r" ] +run = "plugin yamb rename_by_key" +desc = "Rename bookmark by key" + +[[manager.prepend_keymap]] +on = [ "u", "R" ] +run = "plugin yamb rename_by_fzf" +desc = "Rename bookmark by fzf" +# INPUT + + +[[input.prepend_keymap]] +on = "" +run = "close" +desc = "Cancel input" + +[[input.prepend_keymap]] +on = "l" +run = "forward --end-of-word" +desc = "Move forward to the end of the current or next word" + +[[input.prepend_keymap]] +on = "L" +run = "forward --far --end-of-word" +desc = "Move forward to the end of the current or next WORD" + +[[input.prepend_keymap]] +on = "h" +run = "insert" +desc = "Enter insert mode" + +[[input.prepend_keymap]] +on = "H" +run = ["move first-char", "insert"] +desc = "Move to the BOL, and enter insert mode" diff --git a/.config/yazi/yazi.toml b/.config/yazi/yazi.toml index 91426d39..c461f073 100644 --- a/.config/yazi/yazi.toml +++ b/.config/yazi/yazi.toml @@ -1,4 +1,4 @@ -[manager] +[mgr] show_hidden = true # linemode = "git" title_format = "{cwd}" diff --git a/.config/yazi/yazi.toml-1748460725228885 b/.config/yazi/yazi.toml-1748460725228885 new file mode 100644 index 00000000..91426d39 --- /dev/null +++ b/.config/yazi/yazi.toml-1748460725228885 @@ -0,0 +1,30 @@ +[manager] +show_hidden = true +# linemode = "git" +title_format = "{cwd}" + + +[plugin] +prepend_previewers = [ + # { name = "*.md", run = "glow" }, + # { mime = "text/csv", run = "miller" }, + { mime = "audio/*", run = "exifaudio" }, + { mime = "application/*zip", run = "ouch" }, + { mime = "application/x-tar", run = "ouch" }, + { mime = "application/x-bzip2", run = "ouch" }, + { mime = "application/x-7z-compressed", run = "ouch" }, + { mime = "application/x-rar", run = "ouch" }, + { mime = "application/x-xz", run = "ouch" }, +] +append_previewers = [{ name = "*", run = "hexyl" }] +prepend_fetchers = [ + { id = "git", name = "*", run = "git" }, + { id = "git", name = "*/", run = "git" }, +] + +[opener] +extract = [ + { run = 'ouch d -y "%*"', desc = "Extract here with ouch", for = "windows" }, + { run = 'ouch d -y "$@"', desc = "Extract here with ouch", for = "unix" }, +] +open = [{ run = 'xdg-open "$@"', desc = "Open", orphan = true }]