# Open the current directory in a Finder window alias ofd='open_command $PWD' function _omz_osx_get_frontmost_app() { local the_app=$( osascript 2>/dev/null < 0 )) && command="${command}; $*" local the_app=$(_omz_osx_get_frontmost_app) if [[ "$the_app" == 'Terminal' ]]; then # Discarding stdout to quash "tab N of window id XXX" output osascript >/dev/null < 0 )) && command="${command}; $*" local the_app=$(_omz_osx_get_frontmost_app) if [[ "$the_app" == 'iTerm' ]]; then osascript <&2 false fi } function split_tab() { local command="cd \\\"$PWD\\\"; clear" (( $# > 0 )) && command="${command}; $*" local the_app=$(_omz_osx_get_frontmost_app) if [[ "$the_app" == 'iTerm' ]]; then osascript 2>/dev/null <&2 false fi } function pfd() { osascript 2>/dev/null </dev/null </dev/null </dev/null } function cdf() { cd "$(pfd)" } function pushdf() { pushd "$(pfd)" } function cdx() { cd "$(pxd)" } function quick-look() { (( $# > 0 )) && qlmanage -p $* &>/dev/null & } function man-preview() { man -t "$@" | open -f -a Preview } compdef _man man-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 ;; playing|status) local state=`osascript -e 'tell application "iTunes" to player state as string'` if [[ "$state" = "playing" ]]; then currenttrack=`osascript -e 'tell application "iTunes" to name of current track as string'` currentartist=`osascript -e 'tell application "iTunes" to artist of current track as string'` echo -E "Listening to $fg[yellow]$currenttrack$reset_color by $fg[yellow]$currentartist$reset_color"; else echo "iTunes is" $state; fi return 0 ;; 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