xtab v0.0.1
Contents
- xtab — open a new Terminal.app / iTerm2.app / Gnome Terminal tab or window
- Installation
- Examples
- Usage
- License
- Changelog
xtab — open a new Terminal.app / iTerm2.app / Gnome Terminal tab or window
xtab
is a fork of ttab package with added Gnome Temrinal support (Ubuntu OS and some other Linux dists.)
A macOS (OS X) CLI for programmatically opening a new terminal tab/window in the standard terminal application, Terminal
,
or in popular alternative iTerm2
, optionally with a command to execute and/or a specific title and specific display settings.
Note: iTerm2
support is experimental in that it is currently not covered by the automated tests run before every release.
Installation
Important: Irrespective of installation method, Terminal
/ iTerm2
(iTerm.app
) needs to be granted access for assistive devices in order for xtab
to function properly, which is a one-time operation that requires administrative privileges.
If you're not prompted on first run and get an error message instead, go to System Preferences > Security & Privacy
, tab Privacy
, select Accessibility
, unlock, and make sure Terminal.app
/ iTerm.app
is in the list on the right and has a checkmark.
For more information, see Apple's support article on the subject.
Installation via Homebrew
With Homebrew installed, run the following:
brew install https://raw.githubusercontent.com/ksvirsky/xtab/master/xtab.rb
Tip of the hat to @dsingingwolfboy for inspiring me to add this installation method and providing the original formula.
Installation from the npm registry
With Node.js or io.js installed, install from the npm registry:
[sudo] npm install xtab -g
Note:
- Whether you need
sudo
depends on how you installed Node.js / io.js and whether you've changed permissions later; if you get anEACCES
error, try again withsudo
. - The
-g
ensures global installation and is needed to putxtab
in your system's$PATH
.
Manual installation
- Download this
bash
script asxtab
. - Make it executable with
chmod +x xtab
. - Move it to a folder in your
$PATH
, such as/usr/local/bin
.
Examples
# Open a new tab in the current terminal window.
xtab
# Open a new tab in a new terminal window.
xtab -w
# Open a new tab and execute the specified command before showing the prompt.
xtab ls -l "$HOME/Library/Application Support"
# Open a new tab and execute *multiple* commands in it - note how the entire
# command line is specified as *single, quoted string*.
xtab 'git branch; git status'
# Open a new tab, switch to the specified dir., then execute the specified
# command before showing the prompt.
xtab -d ~/Library/Application\ Support ls -1
# Open a new tab with title 'How Green Was My Valley' and settings 'Grass'.
tab -t 'How Green Was My Valley' -s Grass
# Open a new tab and execute the specified script before showing the prompt.
xtab /path/to/someScript
# Open a new tab, execute the specified script, and exit.
xtab exec /path/to/someScript
# Open a new tab, execute a command, wait for a keypress, and exit.
xtab 'ls "$HOME/Library/Application Support"; echo Press a key to exit.; read -rsn 1; exit'
# Open a new tab in iTerm2 (if installed).
xtab -a iTerm2 echo 'Hi from iTerm2.'
Usage
Find concise usage information below; for complete documentation, read the manual online, or, once installed, run man xtab
(xtab --man
if installed manually).
$ xtab --help
Opens a new terminal tab or window in OS X's Terminal application or iTerm2.
xtab [-w] [-s <settings>] [-t <title>] [-q] [-g|-G] [-d <dir>] [<cmd> ...]
-w open new tab in new terminal window
-s <settings> assign a settings set (profile)
-t <title> specify title for new tab
-q clear the new tab's screen
-g create tab in background (don't activate Terminal/iTerm)
-G create tab in background and don't activate new tab
-d <dir> specify working directory; -d '' disables inheriting
the current dir.
-a Terminal|iTerm2 open tab or window in Terminal.app / iTerm2
<cmd> ... command to execute in the new tab
"<cmd> ...; ..." multi-command command line (passed as single operand)
Standard options: --help, --man, --version, --home
License
Copyright (c) 2015-2019 Michael Klement mklement0@gmail.com (http://same2u.net), released under the MIT license.
Acknowledgements
This project gratefully depends on the following open-source components, according to the terms of their respective licenses.
npm dependencies below have optional suffixes denoting the type of dependency; the absence of a suffix denotes a required run-time dependency: (D)
denotes a development-time-only dependency, (O)
an optional dependency, and (P)
a peer dependency.
npm dependencies
Changelog
Versioning complies with semantic versioning (semver).
v0.6.1 (2017-11-08):
- fix macOS 10.13 (High Sierra compatibility), which makes
-G
work again. - installation Homebrew formula added (added post-release, on 2019-12-22).
- fix macOS 10.13 (High Sierra compatibility), which makes
v0.6.0 (2017-06-21):
- enhancement
-d ''
now preventsttab
from implicitly changing to what it thinks the working directory should be; useful for creating tabs/windows that set their own working directory.
- enhancement
v0.5.1 (2017-03-23):
v0.5.0 (2016-10-01):
- new feature
-q
now allows clearing the "screen" of the new tab after opening usingclear
, assuming any command (list) passed succeeded. - enhancement A quoted multi-command shell command string can now be
specified as a single - and only - operand, without having to precede with
an explicit
eval
command. - behavior change If no custom title is specified with
-t <title>
, no attempt is made anymore to auto-derive a meaningful tab title from the shell command specified, as there is no heuristic that works well in all cases. - fix(https://github.com/mklement0/ttab/issues/7): iTerm2 now also preserves the current working dir. when opening a new tab in the current window.
- new feature
v0.4.0 (2016-09-13):
- enhancement
-a Terminal|iTerm2
now allows specifying the target Terminal application, which is useful for launchingttab
from non-terminal applications such as Alfred. - fix Specifying a syntactically invalid shell command to execute in the
new tab now causes
ttab
to report a nonzero exit code.
- enhancement
v0.3.1 (2016-06-03):
- enhancement Support for iTerm2 v3 added (whose AppleScript syntax changed fundamentally)
- enhancement Setting a tab title is now also supported in iTerm2 v2.
v0.3.0 (2016-05-04):
- enhancement Experimental support for iTerm2 (
iTerm.app
) added.
- enhancement Experimental support for iTerm2 (
v0.2.1 (2015-09-15):
- dev Makefile improvements; various other behind-the-scenes tweaks.
v0.2.0 (2015-09-14):
- enhancement You can now use embedded (escaped, if necessary) double-quotes inside a multi-command string passed via
eval
. - doc If installed via the npm registry, a man page is now installed (view with
man ttab
); if installed manually,ttab --man
shows a plain-text version.ttab -h
now only prints concise, single-page usage information.
- enhancement You can now use embedded (escaped, if necessary) double-quotes inside a multi-command string passed via
v0.1.8 (2015-09-11):
v0.1.7 (2015-06-26):
v0.1.6 (2015-06-01):
- doc Read-me improvements; typo in CLI usage help fixed.
v0.1.5 (2015-06-01):
- doc Improved CLI usage help.
v0.1.4 (2015-06-01):
v0.1.3 (2015-06-01):
- fix The -g and -G options again correctly do not activate Terminal.app when creating the desired tab.
- enhancement Option parsing now accepts option-arguments directly attached to the option.
- dev Tests added.
v0.1.2 (2015-06-01):
- doc Manual-installation link and instructions fixed; examples fixed.
v0.1.1 (2015-06-01):
- doc README.md improved with respect to manual installation instructions.
v0.1.0 (2015-06-01):
- Initial release.