ohmyzsh/plugins/osx/osx.plugin.zsh
Gary Holtz a7b2b2d371 Adding Path Finder alternatives for the pfd and pfs commands in the OSX plugin.
'ppfd' and 'ppfs' should work the same way as 'pfd' and 'pfs', but with
Path Finder-y goodness!
2012-12-05 15:27:14 -06:00

133 lines
3.4 KiB
Bash

# ------------------------------------------------------------------------------
# FILE: osx.plugin.zsh
# DESCRIPTION: oh-my-zsh plugin file.
# AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com)
# VERSION: 1.0.1
# ------------------------------------------------------------------------------
function tab() {
local command="cd \\\"$PWD\\\""
(( $# > 0 )) && command="${command}; $*"
the_app=$(
osascript 2>/dev/null <<EOF
tell application "System Events"
name of first item of (every process whose frontmost is true)
end tell
EOF
)
[[ "$the_app" == 'Terminal' ]] && {
osascript 2>/dev/null <<EOF
tell application "System Events"
tell process "Terminal" to keystroke "t" using command down
tell application "Terminal" to do script "${command}" in front window
end tell
EOF
}
[[ "$the_app" == 'iTerm' ]] && {
osascript 2>/dev/null <<EOF
tell application "iTerm"
set current_terminal to current terminal
tell current_terminal
launch session "Default Session"
set current_session to current session
tell current_session
write text "${command}"
end tell
end tell
end tell
EOF
}
}
function pfd() {
osascript 2>/dev/null <<EOF
tell application "Finder"
return POSIX path of (target of window 1 as alias)
end tell
EOF
}
function pfs() {
osascript 2>/dev/null <<EOF
set output to ""
tell application "Finder" to set the_selection to selection
set item_count to count the_selection
repeat with item_index from 1 to count the_selection
if item_index is less than item_count then set the_delimiter to "\n"
if item_index is item_count then set the_delimiter to ""
set output to output & ((item item_index of the_selection as alias)'s POSIX path) & the_delimiter
end repeat
EOF
}
function ppfd() {
osascript 2>/dev/null <<EOF
tell application "Path Finder"
set the window_list to the finder windows
set front_window to item 1 of window_list
set front_path to the POSIX path of the target of the front finder window
return front_path
end tell
EOF
}
function ppfs() {
osascript 2>/dev/null <<EOF
set output to ""
tell application "Path Finder"
set pf_selection to selection
if pf_selection is missing value then
return
end if
set item_count to count pf_selection
repeat with i from 1 to count pf_selection
set pf_item to item i of pf_selection
try
set current_path to (POSIX path of pf_item)
if i is less than item_count - 1 then set the_delimter to "
"
if i is item_count then set the_delimiter to ""
set output to output & current_path & the_delimter
end try
end repeat
end tell
EOF
}
function cdf() {
cd "$(pfd)"
}
function pushdf() {
pushd "$(pfd)"
}
function quick-look() {
(( $# > 0 )) && qlmanage -p $* &>/dev/null &
}
function man-preview() {
man -t "$@" | open -f -a Preview
}
function trash() {
local trash_dir="${HOME}/.Trash"
local temp_ifs=$IFS
IFS=$'\n'
for item in "$@"; do
if [[ -e "$item" ]]; then
item_name="$(basename $item)"
if [[ -e "${trash_dir}/${item_name}" ]]; then
mv -f "$item" "${trash_dir}/${item_name} $(date "+%H-%M-%S")"
else
mv -f "$item" "${trash_dir}/"
fi
fi
done
IFS=$temp_ifs
}