oh-my-fish/plugins/tab/tab.fish
Justin Hileman edeecff2df Allow overriding default iTerm session profile.
iTerm2 nightly has an improved scripting bridge that exposes sessions, but until that ships, we'll have to use a hardcoded default and let users override.
2015-02-09 11:53:45 -08:00

68 lines
1.7 KiB
Fish

# Open new iTerm and Terminal tabs from the command line
#
# Author: Justin Hileman (http://justinhileman.com)
#
# Usage:
# tab Opens the current directory in a new tab
# tab [PATH] Open PATH in a new tab
# tab [CMD] Open a new tab and execute CMD
# tab [PATH] [CMD] ... You can prolly guess
#
# If you use iTerm and your default session profile isn't "Default Session",
# override it in your config.fish
#
# set -g tab_iterm_profile "MyProfile"
function tab -d 'Open the current directory (or any other directory) in a new tab'
set -l cmd ''
set -l cdto $PWD
if test (count $argv) -gt 0
if test -d $argv[1]
pushd . >/dev/null
cd $argv[1]
set cdto $PWD
set -e argv[1]
popd >/dev/null
end
end
if test (count $argv) -gt 0
set cmd "; $argv"
end
switch $TERM_PROGRAM
case 'iTerm.app'
set -l profile 'Default Session'
if set -q tab_iterm_profile
set profile $tab_iterm_profile
end
osascript 2>/dev/null -e "
tell application \"iTerm\"
tell current terminal
launch session \"$profile\"
tell the last session
write text \"cd \\\"$cdto\\\"$cmd\"
end tell
end tell
end tell
"
case 'Apple_Terminal'
osascript 2>/dev/null -e "
tell application \"Terminal\"
activate
tell application \"System Events\" to keystroke \"t\" using command down
repeat while contents of selected tab of window 1 starts with linefeed
delay 0.01
end repeat
do script \"cd \\\"$cdto\\\"$cmd\" in window 1
end tell
"
case '*'
echo "Unknown terminal: $TERM_PROGRAM" >&2
end
end