summaryrefslogtreecommitdiff
path: root/plugins/macos/macos.plugin.zsh
diff options
context:
space:
mode:
authorJonathan Batchelor <jmb@users.noreply.github.com>2021-11-05 23:40:38 +0000
committerGitHub <noreply@github.com>2021-11-05 16:40:38 -0700
commitb2f35a7b98455b2bb8c7c3b11db6aa587e1d28bf (patch)
tree47fbe27ab692f7624a4b15e4db484335d7638d81 /plugins/macos/macos.plugin.zsh
parent7a2cb106258aa7a18bcd53e45df96c4871a03d5e (diff)
downloadzsh-b2f35a7b98455b2bb8c7c3b11db6aa587e1d28bf.tar.gz
zsh-b2f35a7b98455b2bb8c7c3b11db6aa587e1d28bf.tar.bz2
zsh-b2f35a7b98455b2bb8c7c3b11db6aa587e1d28bf.zip
refactor(osx): Rename osx plugin to macos (#10341)
Apple changed the name of their operating system from OS X to macOS a number of years ago. This was overdue! As per issue #10311 * refactor(osx): rename `osx` plugin to `macos` * refactor(macos): Add symbolic link from old `osx` plugin name.
Diffstat (limited to 'plugins/macos/macos.plugin.zsh')
-rw-r--r--plugins/macos/macos.plugin.zsh269
1 files changed, 269 insertions, 0 deletions
diff --git a/plugins/macos/macos.plugin.zsh b/plugins/macos/macos.plugin.zsh
new file mode 100644
index 000000000..4bcbbaead
--- /dev/null
+++ b/plugins/macos/macos.plugin.zsh
@@ -0,0 +1,269 @@
+# Check if 'osx' is still in the plugins list and prompt to change to 'macos'
+if [[ -n "${plugins[(r)osx]}" ]]; then
+ print ${(%):-"%F{yellow}The \`osx\` plugin is deprecated and has been renamed to \`macos\`."}
+ print ${(%):-"Please update your .zshrc to use the \`%Bmacos%b\` plugin instead.%f"}
+fi
+
+# Open the current directory in a Finder window
+alias ofd='open_command $PWD'
+
+# Show/hide hidden files in the Finder
+alias showfiles="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
+alias hidefiles="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
+
+# Bluetooth restart
+function btrestart() {
+ sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
+ sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
+}
+
+function _omz_macos_get_frontmost_app() {
+ osascript 2>/dev/null <<EOF
+ tell application "System Events"
+ name of first item of (every process whose frontmost is true)
+ end tell
+EOF
+}
+
+function tab() {
+ # Must not have trailing semicolon, for iTerm compatibility
+ local command="cd \\\"$PWD\\\"; clear"
+ (( $# > 0 )) && command="${command}; $*"
+
+ local the_app=$(_omz_macos_get_frontmost_app)
+
+ if [[ "$the_app" == 'Terminal' ]]; then
+ # Discarding stdout to quash "tab N of window id XXX" output
+ osascript >/dev/null <<EOF
+ tell application "System Events"
+ tell process "Terminal" to keystroke "t" using command down
+ end tell
+ tell application "Terminal" to do script "${command}" in front window
+EOF
+ elif [[ "$the_app" == 'iTerm' ]]; then
+ osascript <<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
+ elif [[ "$the_app" == 'iTerm2' ]]; then
+ osascript <<EOF
+ tell application "iTerm2"
+ tell current window
+ create tab with default profile
+ tell current session to write text "${command}"
+ end tell
+ end tell
+EOF
+ elif [[ "$the_app" == 'Hyper' ]]; then
+ osascript >/dev/null <<EOF
+ tell application "System Events"
+ tell process "Hyper" to keystroke "t" using command down
+ end tell
+ delay 1
+ tell application "System Events"
+ keystroke "${command}"
+ key code 36 #(presses enter)
+ end tell
+EOF
+ else
+ echo "$0: unsupported terminal app: $the_app" >&2
+ return 1
+ fi
+}
+
+function vsplit_tab() {
+ local command="cd \\\"$PWD\\\"; clear"
+ (( $# > 0 )) && command="${command}; $*"
+
+ local the_app=$(_omz_macos_get_frontmost_app)
+
+ if [[ "$the_app" == 'iTerm' ]]; then
+ osascript <<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} \n"
+ end tell
+EOF
+ elif [[ "$the_app" == 'iTerm2' ]]; then
+ osascript <<EOF
+ tell application "iTerm2"
+ tell current session of first window
+ set newSession to (split vertically with same profile)
+ tell newSession
+ write text "${command}"
+ select
+ end tell
+ end tell
+ end tell
+EOF
+ elif [[ "$the_app" == 'Hyper' ]]; then
+ osascript >/dev/null <<EOF
+ tell application "System Events"
+ tell process "Hyper"
+ tell menu item "Split Vertically" of menu "Shell" of menu bar 1
+ click
+ end tell
+ end tell
+ delay 1
+ keystroke "${command} \n"
+ end tell
+EOF
+ else
+ echo "$0: unsupported terminal app: $the_app" >&2
+ return 1
+ fi
+}
+
+function split_tab() {
+ local command="cd \\\"$PWD\\\"; clear"
+ (( $# > 0 )) && command="${command}; $*"
+
+ local the_app=$(_omz_macos_get_frontmost_app)
+
+ if [[ "$the_app" == 'iTerm' ]]; then
+ 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} \n"
+ end tell
+EOF
+ elif [[ "$the_app" == 'iTerm2' ]]; then
+ osascript <<EOF
+ tell application "iTerm2"
+ tell current session of first window
+ set newSession to (split horizontally with same profile)
+ tell newSession
+ write text "${command}"
+ select
+ end tell
+ end tell
+ end tell
+EOF
+ elif [[ "$the_app" == 'Hyper' ]]; then
+ osascript >/dev/null <<EOF
+ tell application "System Events"
+ tell process "Hyper"
+ tell menu item "Split Horizontally" of menu "Shell" of menu bar 1
+ click
+ end tell
+ end tell
+ delay 1
+ keystroke "${command} \n"
+ end tell
+EOF
+ else
+ echo "$0: unsupported terminal app: $the_app" >&2
+ return 1
+ fi
+}
+
+function pfd() {
+ osascript 2>/dev/null <<EOF
+ tell application "Finder"
+ return POSIX path of (insertion location 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 pxd() {
+ dirname $(osascript 2>/dev/null <<EOF
+ if application "Xcode" is running then
+ tell application "Xcode"
+ return path of active workspace document
+ end tell
+ end if
+EOF
+)
+}
+
+function cdx() {
+ cd "$(pxd)"
+}
+
+function quick-look() {
+ (( $# > 0 )) && qlmanage -p $* &>/dev/null &
+}
+
+function man-preview() {
+ # Don't let Preview.app steal focus if the man page doesn't exist
+ man -w "$@" &>/dev/null && man -t "$@" | open -f -a Preview || man "$@"
+}
+compdef _man man-preview
+
+function vncviewer() {
+ open vnc://$@
+}
+
+# Remove .DS_Store files recursively in a directory, default .
+function rmdsstore() {
+ find "${@:-.}" -type f -name .DS_Store -delete
+}
+
+# Erases purgeable disk space with 0s on the selected disk
+function freespace(){
+ if [[ -z "$1" ]]; then
+ echo "Usage: $0 <disk>"
+ echo "Example: $0 /dev/disk1s1"
+ echo
+ echo "Possible disks:"
+ df -h | awk 'NR == 1 || /^\/dev\/disk/'
+ return 1
+ fi
+
+ echo "Cleaning purgeable files from disk: $1 ...."
+ diskutil secureErase freespace 0 $1
+}
+
+_freespace() {
+ local -a disks
+ disks=("${(@f)"$(df | awk '/^\/dev\/disk/{ printf $1 ":"; for (i=9; i<=NF; i++) printf $i FS; print "" }')"}")
+ _describe disks disks
+}
+
+compdef _freespace freespace
+
+# Music / iTunes control function
+source "${0:h:A}/music"
+
+# Spotify control function
+source "${0:h:A}/spotify"