# @halostatue/fish-macos/functions/finder.fish:v7.0.0 function __macos_finder_defaults::query set --query argv[1] or return 1 set --function value (defaults read com.apple.Finder $argv[1] 2>/dev/null) or return 1 switch $value case 1 true case '*' false end end function __macos_finder_defaults::set set --query argv[1] or return 1 set --query argv[2] or return 1 defaults write com.apple.Finder $argv[1] -bool $argv[2] and killall Finder end function __macos_finder_pwd::get set --function window 1 if set --query argv[1] set window $argv[1] end echo 'tell application "Finder" if ('$window' <= (count Finder windows)) then get POSIX path of (target of window '$window' as alias) else get POSIX path of (desktop as alias) end if end tell' | osascript end function __macos_finder_pwd::update argparse --exclusive column,list,icon column list icon -- $argv or return 1 set --function window_count 1 set --function view '' set --function view_type '' if set --query _flag_column set view_type column else if set --query _flag_list set view_type list else if set --query _flag_icon set view_type icon end if test $view_type != '' set view 'set the current view of the front Finder window to '$view_type' view' end set --query argv[1]; and set window_count $argv[1] echo 'tell application "Finder" if ('$window_count' <= (count Finder windows)) then set the target of window '$window_count' to (POSIX file "'$PWD'") as string else open (POSIX file "'$PWD'") as string end if ' $view ' end tell' | osascript >/dev/null end # Based on bashfinder: https://github.com/NapoleonWils0n/bashfinder.git # and my port to zsh. function finder --description 'Manipulate the finder with the current shell' argparse --stop-nonopt h/help -- $argv if set --query _flag_help echo 'Usage: finder [options] subcommand [arguments...] Interacts with the Finder. If a window number parameter is accepted in a command, the first (front-most) window is number 1. If a lower window is specified, or no window is specified, that window becomes the first window. Subcommands: cd Changes to the path of the Finder window clean Removes .DS_Store files column Changes the Finder window to PWD using column view desktop-icons Shows or hides the desktop icons hidden Shows or hides files that are normally hidden from the Finder icon Changes the Finder window to PWD using icon view list Changes the Finder window to PWD using list view pushd Changes to the path of the Finder window with pushd pwd Prints the path of the Finder window quarantine Manages quarantine events selected Print the selected files on the command-line track Makes the first Finder window track with the shell PWD untrack Disables Finder directory tracking update Updates the Finder window to PWD Options: -h, --help Show this help' return 0 end set --function verb (string lower -- $argv[1]) set --erase argv[1] switch $verb case cd __macos_finder_cd $argv case clean __macos_finder_clean $argv case desktop-icons __macos_finder_desktop_icons $argv case hidden __macos_finder_hidden $argv case update __macos_finder_update $argv case list __macos_finder_list $argv case icon __macos_finder_icon $argv case column __macos_finder_column $argv case pwd __macos_finder_pwd::get $argv[1] case pushd __macos_finder_pushd $argv case quarantine __macos_finder_quarantine $argv case selected __macos_finder_selected case track __macos_finder_track case untrack __macos_finder_untrack case '' echo >&2 'finder: No command provided.' finder --help >&2 return 1 case '*' echo $verb echo >&2 'finder: Unknown command.' finder --help >&2 return 1 end end