61 lines
1.5 KiB
Nix
61 lines
1.5 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
...
|
|
}: let
|
|
yazi-picker = pkgs.writeShellScriptBin "yazi-picker" ''
|
|
echo "--- $(date) ---" >> /tmp/yazi-picker.log
|
|
echo "Args: $@" >> /tmp/yazi-picker.log
|
|
echo "Env: WAYLAND_DISPLAY=$WAYLAND_DISPLAY DISPLAY=$DISPLAY" >> /tmp/yazi-picker.log
|
|
|
|
path="$1"
|
|
[ -z "$path" ] && path="."
|
|
|
|
if [ "$2" = "true" ]; then
|
|
echo "Mode: Save" >> /tmp/yazi-picker.log
|
|
# Future: handle save mode better (maybe prompts?)
|
|
else
|
|
echo "Mode: Open" >> /tmp/yazi-picker.log
|
|
fi
|
|
|
|
out="$HOME/.cache/yazi-chooser"
|
|
rm -f "$out"
|
|
|
|
echo "Launching ghostty..." >> /tmp/yazi-picker.log
|
|
${pkgs.ghostty}/bin/ghostty --class="yazi-picker" --title="File Picker" -e ${pkgs.yazi}/bin/yazi "$path" --chooser-file="$out"
|
|
ret=$?
|
|
echo "Ghostty exited with $ret" >> /tmp/yazi-picker.log
|
|
|
|
if [ -f "$out" ]; then
|
|
selected=$(cat "$out")
|
|
echo "Selected: $selected" >> /tmp/yazi-picker.log
|
|
echo "$selected"
|
|
rm "$out"
|
|
else
|
|
echo "No selection" >> /tmp/yazi-picker.log
|
|
fi
|
|
'';
|
|
in {
|
|
programs.yazi = {
|
|
enable = true;
|
|
enableFishIntegration = true;
|
|
settings = {
|
|
manager = {
|
|
show_hidden = true;
|
|
sort_by = "natural";
|
|
sort_dir_first = true;
|
|
linemode = "size";
|
|
};
|
|
};
|
|
};
|
|
|
|
home.packages = [
|
|
yazi-picker
|
|
];
|
|
|
|
xdg.configFile."xdg-desktop-portal-termfilechooser/config".text = ''
|
|
[filechooser]
|
|
cmd=${yazi-picker}/bin/yazi-picker
|
|
'';
|
|
}
|