12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #####################################################
- # iTerm2 plugin for oh-my-zsh #
- # Author: Aviv Rosenberg (github.com/avivrosenberg) #
- #####################################################
- ###
- # This plugin is only relevant if the terminal is iTerm2 on OSX.
- if [[ "$OSTYPE" == darwin* ]] && [[ -n "$ITERM_SESSION_ID" ]] ; then
- # maybe make it the default in the future and allow opting out?
- if zstyle -t ':omz:plugins:iterm2' shell-integration; then
- # Handle $0 according to the standard:
- # https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
- 0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
- 0="${${(M)0:#/*}:-$PWD/$0}"
- # See official docs: https://iterm2.com/documentation-shell-integration.html
- source "${0:A:h}/iterm2_shell_integration.zsh"
- fi
- ###
- # Executes an arbitrary iTerm2 command via an escape code sequence.
- # See https://iterm2.com/documentation-escape-codes.html for all supported commands.
- # Example: $ _iterm2_command "1337;StealFocus"
- function _iterm2_command() {
- local cmd="$1"
- # Escape codes for wrapping commands for iTerm2.
- local iterm2_prefix="\x1B]"
- local iterm2_suffix="\x07"
- # If we're in tmux, a special escape code must be prepended/appended so that
- # the iTerm2 escape code is passed on into iTerm2.
- if [[ -n $TMUX ]]; then
- local tmux_prefix="\x1BPtmux;\x1B"
- local tmux_suffix="\x1B\\"
- fi
- echo -n "${tmux_prefix}${iterm2_prefix}${cmd}${iterm2_suffix}${tmux_suffix}"
- }
- ###
- # iterm2_profile(): Function for changing the current terminal window's
- # profile (colors, fonts, settings, etc).
- # To change the current iTerm2 profile, call this function and pass in a name
- # of another existing iTerm2 profile (name can contain spaces).
- function iterm2_profile() {
- # Desired name of profile
- local profile="$1"
- # iTerm2 command for changing profile
- local cmd="1337;SetProfile=$profile"
- # send the sequence
- _iterm2_command "${cmd}"
- # update shell variable
- ITERM_PROFILE="$profile"
- }
- ###
- # iterm2_tab_color(): Changes the color of iTerm2's currently active tab.
- # Usage: iterm2_tab_color <red> <green> <blue>
- # where red/green/blue are on the range 0-255.
- function iterm2_tab_color() {
- _iterm2_command "6;1;bg;red;brightness;$1"
- _iterm2_command "6;1;bg;green;brightness;$2"
- _iterm2_command "6;1;bg;blue;brightness;$3"
- }
- ###
- # iterm2_tab_color_reset(): Resets the color of iTerm2's current tab back to
- # default.
- function iterm2_tab_color_reset() {
- _iterm2_command "6;1;bg;*;default"
- }
- fi
|