fix xdg-deskop-portal-termfilechooser yazi-wrapper
This commit is contained in:
@@ -50,8 +50,8 @@
|
|||||||
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||||
{ on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
{ on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
||||||
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||||
{ on = [ "g" "g" ]; run = "arrow down"; desc = "Move cursor to the top"; }
|
{ on = [ "g" "g" ]; run = "arrow top"; desc = "Move cursor to the top"; }
|
||||||
{ on = [ "g" "e" ]; run = "arrow up"; desc = "Move cursor to the end"; }
|
{ on = [ "g" "e" ]; run = "arrow bot"; desc = "Move cursor to the end"; }
|
||||||
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
|
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
|
||||||
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
|
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
|
||||||
(pkgs.lib.mkIf (hyper.host == "NxACE") { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site directory"; })
|
(pkgs.lib.mkIf (hyper.host == "NxACE") { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site directory"; })
|
||||||
@@ -65,6 +65,7 @@
|
|||||||
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
|
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
|
||||||
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
|
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
|
||||||
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||||
|
{ on = [ "g" "p" ]; run = "cd ~/projects"; desc = "Go to the projects directory"; }
|
||||||
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||||
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
|
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
|
||||||
# Navigation
|
# Navigation
|
||||||
@@ -396,17 +397,65 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
xdg = {
|
xdg = {
|
||||||
configFile."xdg-desktop-portal-termfilechooser/config".text = lib.mkIf config.programs.yazi.enable ''
|
# # https://github.com/hunkyburrito/xdg-desktop-portal-termfilechooser/pull/44
|
||||||
|
configFile = let
|
||||||
|
wrapper = pkgs.writeShellApplication { name = "yazi-wrapper.sh"; text = /*bash*/ ''
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
multiple="$1"
|
||||||
|
directory="$2"
|
||||||
|
save="$3"
|
||||||
|
path="$4"
|
||||||
|
out="$5"
|
||||||
|
|
||||||
|
cmd="yazi"
|
||||||
|
termcmd="''${TERMCMD:-kitty --title 'termfilechooser'}"
|
||||||
|
|
||||||
|
if [ "$save" = "1" ]; then
|
||||||
|
# save a file
|
||||||
|
set -- --chooser-file="$out" "$path"
|
||||||
|
elif [ "$directory" = "1" ]; then
|
||||||
|
# upload files from a directory
|
||||||
|
set -- --chooser-file="$out" --cwd-file="$out" "$path"
|
||||||
|
elif [ "$multiple" = "1" ]; then
|
||||||
|
# upload multiple files
|
||||||
|
set -- --chooser-file="$out" "$path"
|
||||||
|
else
|
||||||
|
# upload only 1 file
|
||||||
|
set -- --chooser-file="$out" "$path"
|
||||||
|
fi
|
||||||
|
|
||||||
|
command="$termcmd $cmd"
|
||||||
|
for arg in "$@"; do
|
||||||
|
# escape double quotes
|
||||||
|
escaped=$(printf "%s" "$arg" | sed -E 's/[\"\(\)\{\}\|]//g')
|
||||||
|
# escape spaces
|
||||||
|
command="$command \"$escaped\""
|
||||||
|
done
|
||||||
|
|
||||||
|
sh -c "$command"
|
||||||
|
'';};
|
||||||
|
in {
|
||||||
|
"xdg-desktop-portal-termfilechooser/config".text = ''
|
||||||
[filechooser]
|
[filechooser]
|
||||||
cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh
|
cmd=${wrapper}/bin/yazi-wrapper.sh
|
||||||
env=TERMCMD=ghostty --title="terminal-file-picker -e"
|
env=TERMCMD=ghostty --title="terminal-file-picker -e"
|
||||||
default_dir=$HOME
|
default_dir=$HOME
|
||||||
open_mode=suggested
|
open_mode=suggested
|
||||||
save_mode=last
|
save_mode=last
|
||||||
'';
|
'';
|
||||||
|
# "xdg-desktop-portal-termfilechooser/config".text = ''
|
||||||
|
# [filechooser]
|
||||||
|
# cmd=${pkgs.latest.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh
|
||||||
|
# env=TERMCMD=ghostty --title="terminal-file-picker -e"
|
||||||
|
# default_dir=$HOME
|
||||||
|
# open_mode=suggested
|
||||||
|
# save_mode=last
|
||||||
|
# '';
|
||||||
|
};
|
||||||
portal = {
|
portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraPortals = [ pkgs.xdg-desktop-portal-termfilechooser ];
|
extraPortals = [ pkgs.latest.xdg-desktop-portal-termfilechooser ];
|
||||||
config = {
|
config = {
|
||||||
common = {
|
common = {
|
||||||
"org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
|
"org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
|
||||||
|
|||||||
Reference in New Issue
Block a user