aboutsummaryrefslogtreecommitdiffstats
path: root/modules/scripts/yazi-file-chooser
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar+git@gmail.com>2026-07-23 18:30:05 +0530
committerArpit Chakladar <arpitchakladar+git@gmail.com>2026-07-23 18:42:18 +0530
commit5032239a236595451f22ea948c42281f8aa04645 (patch)
tree5e6be8235a04614c676d8883c3c756e1b9a5f4ff /modules/scripts/yazi-file-chooser
parent2ad7b06ced0ffa39d20e6be41466e5bd834ee956 (diff)
downloadhome-manager-config-5032239a236595451f22ea948c42281f8aa04645.tar.gz
home-manager-config-5032239a236595451f22ea948c42281f8aa04645.zip
feat: migrate from lf to yazi as default file manager
- Replace lf module with yazi module including base16 theme - Remove file-preview and file-preview-clean scripts (no longer needed) - Add yazi-file-chooser script for XDG Desktop Portal integration - Update i3 keybinding to use yazi - Add GTK_USE_PORTAL and TERMCMD session variables - Add extraLinks support to mkScriptModule
Diffstat (limited to 'modules/scripts/yazi-file-chooser')
-rw-r--r--modules/scripts/yazi-file-chooser/default.nix24
-rw-r--r--modules/scripts/yazi-file-chooser/script.sh20
2 files changed, 44 insertions, 0 deletions
diff --git a/modules/scripts/yazi-file-chooser/default.nix b/modules/scripts/yazi-file-chooser/default.nix
new file mode 100644
index 0000000..d06151a
--- /dev/null
+++ b/modules/scripts/yazi-file-chooser/default.nix
@@ -0,0 +1,24 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+let
+ inherit ((import ../lib.nix { inherit lib pkgs; })) mkScriptModule;
+ base = mkScriptModule {
+ name = "yazi-file-chooser";
+ path = ./script.sh;
+ description = "Yazi-based file chooser for XDG Desktop Portal";
+ deps = [
+ config.file-management.yazi.package
+ config.terminal.kitty.package
+ ];
+ extraLinks = [ "~/.config/xdg-desktop-portal-termfilechooser/config" ];
+ inherit config;
+ };
+in
+{
+ options = base.options;
+ config = base.moduleConfig;
+}
diff --git a/modules/scripts/yazi-file-chooser/script.sh b/modules/scripts/yazi-file-chooser/script.sh
new file mode 100644
index 0000000..a2f9166
--- /dev/null
+++ b/modules/scripts/yazi-file-chooser/script.sh
@@ -0,0 +1,20 @@
+# $1 = multiple selection (1/0)
+# $2 = directory select mode (1/0)
+# $3 = save file mode (1/0)
+# $4 = initial directory path
+# $5 = output path file (where portal expects selected paths)
+
+multiple="$1"
+directory="$2"
+save="$3"
+path="$4"
+out="$5"
+
+# Pick directory vs single/multiple file
+if [ "$directory" = "1" ]; then
+ # --cwd-file outputs the final working directory path when exiting
+ exec yazi "$path" --cwd-file="$out"
+else
+ # --chooser-file writes all selected file path(s) to $out on exit
+ exec yazi "$path" --chooser-file="$out"
+fi