This commit is contained in:
elwrcl committed 2026-09-07 03:47:27 +03:00
1 parent ec8d0d2432
commit e73e6faf1e
3 files changed
+71 -31

No files matched your search

+2 -2
View File
@@ -3,8 +3,8 @@
flake.homeModules.home-helix-keys = flake.homeModules.home-helix-keys =
{ ... }: { ... }:
let let
float = cmd: ":sh zellij run --floating --close-on-exit -- ${cmd}"; float = cmd: ":sh zellij run --floating --close-on-exit -- ${cmd} | ignore";
floatKeep = cmd: ":sh zellij run --floating -- ${cmd}"; floatKeep = cmd: ":sh zellij run --floating -- ${cmd} | ignore";
in in
{ {
programs.helix.settings.keys = { programs.helix.settings.keys = {
@@ -283,7 +283,6 @@
}; };
} }
{ {
# Written every time `jj describe`/`jj commit` opens $EDITOR.
name = "jjdescription"; name = "jjdescription";
rulers = [ rulers = [
51 51
+69 -28
View File
@@ -3,44 +3,78 @@
flake.homeModules.home-helix-sidebar = flake.homeModules.home-helix-sidebar =
{ config, pkgs, ... }: { config, pkgs, ... }:
let let
open = pkgs.writeShellApplication {
name = "hx-open";
runtimeInputs = [
config.programs.zellij.finalPackage
pkgs.gnused
];
text = ''
if [ "$#" -eq 0 ]; then
exit 0
fi
quote() {
printf "'%s'" "$(printf '%s' "$1" | sed "s/'/&&/g")"
}
zellij action move-focus right >/dev/null 2>&1 || true
if [ "$#" -eq 1 ] && [ -d "$1" ]; then
command=":cd $(quote "$1")"
else
args=""
for path in "$@"; do
args="$args $(quote "$path")"
done
command=":open$args"
fi
zellij action write 27 >/dev/null 2>&1
zellij action write-chars "$command" >/dev/null 2>&1
zellij action write 13 >/dev/null 2>&1
'';
};
sidebarConfig = pkgs.writeTextDir "yazi.toml" '' sidebarConfig = pkgs.writeTextDir "yazi.toml" ''
[mgr] [mgr]
ratio = [ 0, 1, 0 ] ratio = [ 1, 1, 2 ]
show_hidden = false show_hidden = false
show_symlink = false show_symlink = true
linemode = "none" linemode = "size"
scrolloff = 4 scrolloff = 4
sort_by = "natural"
sort_dir_first = true
[[plugin.prepend_fetchers]]
url = "*"
run = "git"
group = "git"
[[plugin.prepend_fetchers]]
url = "*/"
run = "git"
group = "git"
[opener]
edit = [
{ run = '$EDITOR "$@"', block = false, for = "unix" },
]
''; '';
sidebar = pkgs.writeShellApplication { sidebar = pkgs.writeShellApplication {
name = "hx-sidebar"; name = "hx-sidebar";
runtimeInputs = [ runtimeInputs = [
pkgs.yazi pkgs.yazi
config.programs.zellij.finalPackage pkgs.git
pkgs.coreutils
]; ];
text = '' text = ''
cd "''${1:-.}" cd "''${1:-.}"
export YAZI_CONFIG_HOME=${sidebarConfig} export YAZI_CONFIG_HOME=${sidebarConfig}
export EDITOR=${open}/bin/hx-open
export VISUAL="$EDITOR"
marker="''${XDG_RUNTIME_DIR:-/tmp}/hx-sidebar.''${ZELLIJ_SESSION_NAME:-none}" echo $$ > "''${XDG_RUNTIME_DIR:-/tmp}/hx-sidebar.''${ZELLIJ_SESSION_NAME:-none}"
chooser=$(mktemp -t hx-sidebar.XXXXXX) exec yazi .
trap 'rm -f "$chooser" "$marker"' EXIT
echo $$ > "$marker"
while true; do
: > "$chooser"
yazi . --chooser-file="$chooser"
picked=$(head -n 1 "$chooser")
[ -n "$picked" ] || break
zellij action move-focus right
zellij action write 27
zellij action write-chars ":open '$picked'"
zellij action write 13
done
''; '';
}; };
@@ -57,10 +91,17 @@
fi fi
marker="''${XDG_RUNTIME_DIR:-/tmp}/hx-sidebar.''${ZELLIJ_SESSION_NAME}" marker="''${XDG_RUNTIME_DIR:-/tmp}/hx-sidebar.''${ZELLIJ_SESSION_NAME}"
pid=""
if [ -r "$marker" ]; then
pid=$(cat "$marker")
fi
if [ -n "$pid" ] && [ "$(cat "/proc/$pid/comm" 2>/dev/null || true)" = "yazi" ]; then
kill "$pid"
rm -f "$marker"
exit 0
fi
if [ -e "$marker" ] && kill -0 "$(cat "$marker")" 2>/dev/null; then
zellij action toggle-fullscreen
else
rm -f "$marker" rm -f "$marker"
id=$(zellij action new-pane \ id=$(zellij action new-pane \
@@ -69,16 +110,16 @@
--close-on-exit \ --close-on-exit \
-- ${sidebar}/bin/hx-sidebar "$PWD") -- ${sidebar}/bin/hx-sidebar "$PWD")
zellij action move-pane --pane-id "$id" left zellij action move-pane --pane-id "$id" left >/dev/null
for _ in 1 2 3 4 5; do for _ in 1 2 3 4 5; do
zellij action resize --pane-id "$id" decrease right zellij action resize --pane-id "$id" decrease right >/dev/null 2>&1
done done
fi
''; '';
}; };
in in
{ {
home.packages = [ home.packages = [
open
sidebar sidebar
toggle toggle
]; ];