update: nvim waybar yazi windowrule

This commit is contained in:
DACHXY 2025-08-05 12:36:48 +08:00
parent 3a07c0da83
commit 529c9e5fa7
35 changed files with 520 additions and 13028 deletions

View file

@ -1,27 +1,166 @@
{
inputs,
config,
system,
pkgs,
lib,
...
}:
let
yaziPlugins = pkgs.fetchFromGitHub {
owner = "yazi-rs";
repo = "plugins";
rev = "86d28e4fb4f25f36cc501b8cb0badb37a6b14263";
hash = "sha256-m/gJTDm0cVkIdcQ1ZJliPqBhNKoCW1FciLkuq7D1mxo=";
};
in
{
programs = {
yazi = {
enable = true;
package = inputs.yazi.packages.${system}.default;
shellWrapperName = "y";
enableFishIntegration = false;
plugins = {
toggle-panel = ''${yaziPlugins}/toggle-panel.yazi'';
};
flavors = {
gruvbox-dark = pkgs.fetchFromGitHub {
owner = "bennyyip";
repo = "gruvbox-dark.yazi";
rev = "91fdfa70f6d593934e62aba1e449f4ec3d3ccc90";
hash = "sha256-RWqyAdETD/EkDVGcnBPiMcw1mSd78Aayky9yoxSsry4=";
};
};
theme = {
flavors = {
dark = "gruvbox-dark";
light = "gruvbox-dark";
};
};
keymap = {
mgr = {
prepend_keymap = [
# Toggle Maximize Preview
{
on = "T";
run = "plugin toggle-pane max-preview";
desc = "Show or hide the preview pane";
}
# Copy selected files to the system clipboard while yanking
{
on = "y";
run = [
''shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list''
"yank"
];
}
# cd back to the root of the current Git repository
{
on = [
"g"
"r"
];
run = ''shell -- ya emit cd "$(git rev-parse --show-toplevel)"'';
}
# Drag and Drop
{
on = [
"c"
"D"
];
run = ''
shell '${pkgs.ripdrag.out}/bin/ripdrag "$@" -x 2>/dev/null &' --confirm
'';
desc = "Drag the file";
}
# Start terminal
{
on = [ "!" ];
for = "unix";
run = ''shell "$SHELL" --block'';
desc = "Open $SHELL here";
}
];
};
};
initLua =
# lua
''
-- Show symlink in status bar
Status:children_add(function(self)
local h = self._current.hovered
if h and h.link_to then
return " -> " .. toString(h.link_to)
else
return ""
end
end, 3300, Status.LEFT)
-- Show user/group of files in status bar
Status:children_add(function()
local h = cx.active.current.hovered
if not h or ya.target_family() ~= "unix" then
return ""
end
return ui.Line {
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
":",
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
" ",
}
end, 500, Status.RIGHT)
-- Show username and hostname in header
Header:children_add(function()
if ya.target_family() ~= "unix" then
return ""
end
return ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ":"):fg("blue")
end, 500, Header.LEFT)
'';
};
};
home.packages = with pkgs; [
# Drag from yazi
ripdrag
ueberzugpp
];
home.file = {
".config/yazi" = {
recursive = true;
source = ../config/yazi;
};
};
# xdg.portal = {
# enable = lib.mkForce true;
# extraPortals = [ pkgs.xdg-desktop-portal-termfilechooser ];
# config = {
# common.default = [
# "hyprland"
# "gtk"
# ];
# common = {
# "org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
# };
# hyprland.default = [
# "hyprland"
# "gtk"
# ];
# hyprland."org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" ];
# };
# };
# xdg.configFile."xdg-desktop-portal-termfilechooser/config" = {
# force = true;
# text = ''
# [filechooser]
# cmd=TERMCMD='${config.programs.ghostty.package}/bin/ghostty --title=file_chooser -e "bash -c ${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh"'
# default_dir=$HOME
# open_mode = suggested
# save_mode = last
# '';
# };
# home.sessionVariables.TERMCMD = "${config.programs.ghostty.package}/bin/ghostty --title=file_chooser";
}