123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- # ------------------------------------------------------------------------------
- # FILE: osx.plugin.zsh
- # DESCRIPTION: oh-my-zsh plugin file.
- # AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com)
- # VERSION: 1.1.0
- # ------------------------------------------------------------------------------
- function tab() {
- local command="cd \\\"$PWD\\\"; clear; "
- (( $# > 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}"
- keystroke return
- end tell
- end tell
- end tell
- EOF
- }
- }
- function vsplit_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" == 'iTerm' ]] && {
- osascript 2>/dev/null <<EOF
- tell application "iTerm" to activate
- tell application "System Events"
- tell process "iTerm"
- tell menu item "Split Vertically With Current Profile" of menu "Shell" of menu bar item "Shell" of menu bar 1
- click
- end tell
- end tell
- keystroke "${command}; clear;"
- keystroke return
- end tell
- EOF
- }
- }
- function split_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" == 'iTerm' ]] && {
- osascript 2>/dev/null <<EOF
- tell application "iTerm" to activate
- tell application "System Events"
- tell process "iTerm"
- tell menu item "Split Horizontally With Current Profile" of menu "Shell" of menu bar item "Shell" of menu bar 1
- click
- end tell
- end tell
- keystroke "${command}; clear;"
- keystroke return
- 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 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 vncviewer() {
- open vnc://$@
- }
- # iTunes control function
- function itunes() {
- local opt=$1
- shift
- case "$opt" in
- launch|play|pause|stop|rewind|resume|quit)
- ;;
- mute)
- opt="set mute to true"
- ;;
- unmute)
- opt="set mute to false"
- ;;
- next|previous)
- opt="$opt track"
- ;;
- vol)
- opt="set sound volume to $1" #$1 Due to the shift
- ;;
- shuf|shuff|shuffle)
- # The shuffle property of current playlist can't be changed in iTunes 12,
- # so this workaround uses AppleScript to simulate user input instead.
- # Defaults to toggling when no options are given.
- # The toggle option depends on the shuffle button being visible in the Now playing area.
- # On and off use the menu bar items.
- local state=$1
- if [[ -n "$state" && ! "$state" =~ "^(on|off|toggle)$" ]]
- then
- print "Usage: itunes shuffle [on|off|toggle]. Invalid option."
- return 1
- fi
- case "$state" in
- on|off)
- # Inspired by: http://stackoverflow.com/a/14675583
- osascript 1>/dev/null 2>&1 <<-EOF
- tell application "System Events" to perform action "AXPress" of (menu item "${state}" of menu "Shuffle" of menu item "Shuffle" of menu "Controls" of menu bar item "Controls" of menu bar 1 of application process "iTunes" )
- EOF
- return 0
- ;;
- toggle|*)
- osascript 1>/dev/null 2>&1 <<-EOF
- tell application "System Events" to perform action "AXPress" of (button 2 of process "iTunes"'s window "iTunes"'s scroll area 1)
- EOF
- return 0
- ;;
- esac
- ;;
- ""|-h|--help)
- echo "Usage: itunes <option>"
- echo "option:"
- echo "\tlaunch|play|pause|stop|rewind|resume|quit"
- echo "\tmute|unmute\tcontrol volume set"
- echo "\tnext|previous\tplay next or previous track"
- echo "\tshuf|shuffle [on|off|toggle]\tSet shuffled playback. Default: toggle. Note: toggle doesn't support the MiniPlayer."
- echo "\tvol\tSet the volume, takes an argument from 0 to 100"
- echo "\thelp\tshow this message and exit"
- return 0
- ;;
- *)
- print "Unknown option: $opt"
- return 1
- ;;
- esac
- osascript -e "tell application \"iTunes\" to $opt"
- }
|