Vastly improved Mac OS X plugin
Robby Russell authored on 23/07/2011 at 16:27:31... | ... |
@@ -1,63 +1,99 @@ |
1 |
-alias showfiles='defaults write com.apple.finder AppleShowAllFiles TRUE; killall Finder' |
|
2 |
-alias hidefiles='defaults write com.apple.finder AppleShowAllFiles FALSE; killall Finder' |
|
1 |
+# ------------------------------------------------------------------------------ |
|
2 |
+# FILE: osx.plugin.zsh |
|
3 |
+# DESCRIPTION: oh-my-zsh plugin file. |
|
4 |
+# AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com) |
|
5 |
+# VERSION: 1.0.1 |
|
6 |
+# ------------------------------------------------------------------------------ |
|
3 | 7 |
|
4 |
-# Recursively delete .DS_Store files |
|
5 |
-alias rm-dsstore="find . -name '*.DS_Store' -type f -delete" |
|
6 |
- |
|
7 |
-function savepath() { |
|
8 |
- pwd > ~/.current_path~ |
|
9 |
-} |
|
10 | 8 |
|
11 | 9 |
function tab() { |
12 |
-savepath |
|
13 |
-osascript >/dev/null <<EOF |
|
14 |
-on do_submenu(app_name, menu_name, menu_item, submenu_item) |
|
15 |
- -- bring the target application to the front |
|
16 |
- tell application app_name |
|
17 |
- activate |
|
18 |
- end tell |
|
19 |
- tell application "System Events" |
|
20 |
- tell process app_name |
|
21 |
- tell menu bar 1 |
|
22 |
- tell menu bar item menu_name |
|
23 |
- tell menu menu_name |
|
24 |
- tell menu item menu_item |
|
25 |
- tell menu menu_item |
|
26 |
- click menu item submenu_item |
|
27 |
- end tell |
|
28 |
- end tell |
|
29 |
- end tell |
|
30 |
- end tell |
|
31 |
- end tell |
|
10 |
+ local command="cd \\\"$PWD\\\"" |
|
11 |
+ (( $# > 0 )) && command="${command}; $*" |
|
12 |
+ |
|
13 |
+ the_app=$( |
|
14 |
+ osascript 2>/dev/null <<EOF |
|
15 |
+ tell application "System Events" |
|
16 |
+ name of first item of (every process whose frontmost is true) |
|
32 | 17 |
end tell |
33 |
- end tell |
|
34 |
-end do_submenu |
|
18 |
+EOF |
|
19 |
+ ) |
|
35 | 20 |
|
36 |
-do_submenu("Terminal", "Shell", "New Tab", 1) |
|
21 |
+ [[ "$the_app" == 'Terminal' ]] && { |
|
22 |
+ osascript 2>/dev/null <<EOF |
|
23 |
+ tell application "System Events" |
|
24 |
+ tell process "Terminal" to keystroke "t" using command down |
|
25 |
+ tell application "Terminal" to do script "${command}" in front window |
|
26 |
+ end tell |
|
37 | 27 |
EOF |
38 |
-} |
|
28 |
+ } |
|
39 | 29 |
|
40 |
-function itab() { |
|
41 |
-savepath |
|
42 |
-osascript >/dev/null <<EOF |
|
43 |
-on do_submenu(app_name, menu_name, menu_item) |
|
44 |
- -- bring the target application to the front |
|
45 |
- tell application app_name |
|
46 |
- activate |
|
47 |
- end tell |
|
48 |
- tell application "System Events" |
|
49 |
- tell process app_name |
|
50 |
- tell menu bar 1 |
|
51 |
- tell menu bar item menu_name |
|
52 |
- tell menu menu_name |
|
53 |
- click menu item menu_item |
|
54 |
- end tell |
|
30 |
+ [[ "$the_app" == 'iTerm' ]] && { |
|
31 |
+ osascript 2>/dev/null <<EOF |
|
32 |
+ tell application "iTerm" |
|
33 |
+ set current_terminal to current terminal |
|
34 |
+ tell current_terminal |
|
35 |
+ launch session "Default Session" |
|
36 |
+ set current_session to current session |
|
37 |
+ tell current_session |
|
38 |
+ write text "${command}" |
|
55 | 39 |
end tell |
56 | 40 |
end tell |
57 | 41 |
end tell |
42 |
+EOF |
|
43 |
+ } |
|
44 |
+} |
|
45 |
+ |
|
46 |
+function pfd() { |
|
47 |
+ osascript 2>/dev/null <<EOF |
|
48 |
+ tell application "Finder" |
|
49 |
+ return POSIX path of (target of window 1 as alias) |
|
58 | 50 |
end tell |
59 |
-end do_submenu |
|
51 |
+EOF |
|
52 |
+} |
|
60 | 53 |
|
61 |
-do_submenu("iTerm", "Shell", "New Tab") |
|
54 |
+function pfs() { |
|
55 |
+ osascript 2>/dev/null <<EOF |
|
56 |
+ set output to "" |
|
57 |
+ tell application "Finder" to set the_selection to selection |
|
58 |
+ set item_count to count the_selection |
|
59 |
+ repeat with item_index from 1 to count the_selection |
|
60 |
+ if item_index is less than item_count then set the_delimiter to "\n" |
|
61 |
+ if item_index is item_count then set the_delimiter to "" |
|
62 |
+ set output to output & ((item item_index of the_selection as alias)'s POSIX path) & the_delimiter |
|
63 |
+ end repeat |
|
62 | 64 |
EOF |
63 | 65 |
} |
66 |
+ |
|
67 |
+function cdf() { |
|
68 |
+ cd "$(pfd)" |
|
69 |
+} |
|
70 |
+ |
|
71 |
+function pushdf() { |
|
72 |
+ pushd "$(pfd)" |
|
73 |
+} |
|
74 |
+ |
|
75 |
+function quick-look() { |
|
76 |
+ (( $# > 0 )) && qlmanage -p $* &>/dev/null & |
|
77 |
+} |
|
78 |
+ |
|
79 |
+function man-preview() { |
|
80 |
+ man -t "$@" | open -f -a Preview |
|
81 |
+} |
|
82 |
+ |
|
83 |
+function trash() { |
|
84 |
+ local trash_dir="${HOME}/.Trash" |
|
85 |
+ local temp_ifs=$IFS |
|
86 |
+ IFS=$'\n' |
|
87 |
+ for item in "$@"; do |
|
88 |
+ if [[ -e "$item" ]]; then |
|
89 |
+ item_name="$(basename $item)" |
|
90 |
+ if [[ -e "${trash_dir}/${item_name}" ]]; then |
|
91 |
+ mv -f "$item" "${trash_dir}/${item_name} $(date "+%H-%M-%S")" |
|
92 |
+ else |
|
93 |
+ mv -f "$item" "${trash_dir}/" |
|
94 |
+ fi |
|
95 |
+ fi |
|
96 |
+ done |
|
97 |
+ IFS=$temp_ifs |
|
98 |
+} |
|
99 |
+ |