- Notifications
You must be signed in to change notification settings - Fork15
mklement0/ttab
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Contents
A CLI for Unix-like platforms that programmatically opening a new terminal tab/window in one of the following terminal applications, optionally with a command to execute and/or a specific title and specific display settings (profile).
- OnmacOS: either
Terminal
(the default terminal emulator) or popular alternativeiTerm2
. - OnLinux,Gnome Terminal (
gnome-terminal
), thanks to a contribution by@ksvirsky. - Note:
ttab
doesnot supportWindows; consider using theWindows Terminal-basedwttab
utility there.
Note:iTerm2
andgnome-terminal
support is currently not covered by the automated tests run before every release.
Important: On macOS, irrespective of installation method,Terminal
/iTerm2
(iTerm.app
) needs to be grantedaccess for assistive devices in order forttab
to function properly, which is aone-time operation that requires administrative privileges.If you're not prompted on first run and get an error message instead, go toSystem Preferences > Security & Privacy
, tabPrivacy
, selectAccessibility
, unlock, and make sureTerminal.app
/iTerm.app
is in the list on the right and has a checkmark.For more information, seeApple's support article on the subject.
WithHomebrew installed, run the following:
- Initial installation:
brew tap mklement0/ttab https://github.com/mklement0/ttab.gitbrew install mklement0/ttab/ttab
- Later updates:
brew upgrade mklement0/ttab/ttab
Note:
- The Homebrew version may lag behind the npm registry version if later versions relate solely to the Linux-only Gnome Terminal functionality.
- To remove
ttab
later, runbrew rm ttab
.
WithNode.js installed, install from thenpm registry:
Initial installation:
[sudo] npm install ttab -g
Later update:
[sudo] npm upgrade ttab -g
Note:
- Whether you need
sudo
depends on how you installed Node.js and whether you'vechanged permissions later; if you get anEACCES
error, try again withsudo
. - The
-g
ensuresglobal installation and is needed to putttab
in your system's$PATH
. - To remove
ttab
later, run[sudo] npm rm ttab -g
.
- Downloadthis
bash
script asttab
. - Make it executable with
chmod +x ttab
. - Move it to a folder in your
$PATH
, such as/usr/local/bin
.
# Open a new tab in the current terminal window.ttab# Open a new tab in a new terminal window.ttab -w# Open new horizontal split tab in the current terminal window:ttab -h# Open new vertical split tab in the current terminal window, changing the path to the# given path, but without checking the presence of the target directory:ttab -v -i -d"$HOME/Library/Application Support"# Open a new tab and execute the specified command before showing the prompt.ttab ls -l"$HOME/Library/Application Support"# Open a new tab and execute the specified command *after a delay* of 0.8 secs,# to accommodate shells with lengthy initialization-file processing.# Note: You may preset the delay via environment variable TTAB_CMD_DELAYttab -l 0.8 ls -1# Open a new tab and execute *multiple* commands in it - note how the entire# command line is specified as *single, quoted string*.ttab'git branch; git status'# Open a new tab, switch to the specified dir., then execute the specified# command before showing the prompt.ttab -d~/Library/Application\Support ls -1# Open a new tab with title 'How Green Was My Valley' and settings 'Grass'.# See the note re use of -t in iTerm2 below.ttab -t'How Green Was My Valley' -s Grass# Open a new tab and execute the specified script before showing the prompt.ttab /path/to/someScript# Open a new tab, execute the specified script, and exit.ttabexec /path/to/someScript# Open a new tab, execute a command, wait for a keypress, and exit.ttab'ls "$HOME/Library/Application Support"; echo Press a key to exit.; read -rsn 1; exit'# Open a new tab in iTerm2 (if installed).ttab -a iTerm2echo'Hi from iTerm2.'# Execute the command in the current tab of the current terminal window:ttab -c'ls "$HOME/Library/Application Support"'
Find concise usage information below; for complete documentation, read themanual online, or, once installed, runman ttab
(ttab --man
if installed manually).
$ ttab --helpOpens a new terminal tab or window, on macOS in either Terminal.app or iTerm2.app; on Linux in Gnome Terminal, if available. ttab [-w|-v|-h|-c] [-i] [-s <settings>] [-t <title>] [-q] [-g|-G] [-d <dir>] [<cmd> ...] -w Open new tab in new terminal window. -v iTerm only: create a new vertical split -h iTerm only: create a new horizontal split -c Terminal/iTerm only: do not open any new window or tab, run in the current tab of the current window. -i Suppress up-front verification of the existence of the target directory specified via the -d option. -s <settings> Assign a settings set (profile). -t <title> Specify title for new tab. -q Clear the new tab's screen. -g Terminal/iTerm only: create in background (don't activate application). -G Terminal/iTerm: don't activate new tab and create in background. gnome-terminal: don't activate new tab, except with -w. -d <dir> Specify working directory; -d '' disables inheriting the current dir. in Terminal/iTerm. -l <secs> Terminal/iTerm only: delay startup command submission; may be preset via env. var. TTAB_CMD_DELAY -a Terminal | iTerm Open the new tab in the given terminal app on macOS. <cmd> ... Command to execute in the new tab. "<cmd> ...; ..." Multi-command command line (passed as single operand).Standard options: --help, --man, --version, --home
Note toiTerm2 users: The-t
option for specifying a title only works ifthe new tab's active profile is configured to show the session name in thetitle, which can be configured via the Preferences dialog as shown by@francis-lookbackhere.
Copyright (c) 2015-2024 Michael Klementmklement0@gmail.com (http://same2u.net), released under theMIT license.
A thank you to all contributors to this repo, especially the following major ones:
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; theabsence of a suffix denotes a requiredrun-time dependency:(D)
denotes adevelopment-time-only dependency,(O)
anoptional dependency, and(P)
apeer dependency.
Versioning complies withsemantic versioning (semver).
v0.9.0 (2024-05-22):
- [enhancement] Thanks to@HofiOne,
ttab
now supports new macOS-focused options,-h
,-v
,-c
, and-i
,which notably includes support for splitting the current tab horizontally (-h
) or vertically (-v
) in iTerm2. - [fix] Attempts to use options that are not supported in the target terminal now consistently result in errors.
- [breaking change] Since
-h
now requests horizontal splitting, it can no longer be used to invoke help; use--help
instead.
- [enhancement] Thanks to@HofiOne,
v0.8.0 (2023-01-12):
- [enhancement] New
-l
option / env. var.TTAB_CMD_DELAY
allows specifying a delay before submitting a startup command to a new tab, to accommodate shells whose initialization-file processing takes a while (iTerminal / iTerm2 only).
- [enhancement] New
v0.7.3 (2022-08-11):
- [fix] for #43; the way that keeping the shell alive is emulated in Gnome Terminal now also works when the startup command is aborted with Ctrl-C.
v0.7.2 (2021-10-26):
- [fix] for #39;
ttab
now works correctly when iTerm's "Exclude from Dock and ⌘-Tab Application Switcher" preference is enabled, albeit without support for-g
and-G
, for technical reasons.
- [fix] for #39;
v0.7.1 (2021-04-06):
- [fix] Fix for #13:
-g
and-G
now work in macOS Big Sur too.
- [fix] Fix for #13:
v0.7.0 (2020-08-24):
- [enhancement] Thanks to@ksvirsky,
ttab
is now also available on Linux, assuminggnome-terminal
is available.
- [enhancement] Thanks to@ksvirsky,
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 whatit thinks the working directory should be; useful for creating tabs/windowsthat set their own working directory.
- [enhancement]
v0.5.1 (2017-03-23):
- [doc] Sample command fixed.
- [dev] Reliability of tests improved.
v0.5.0 (2016-10-01):
- [new feature]
-q
now allows clearing the "screen" of the new tab afteropening usingclear
, assuming any command (list) passed succeeded. - [enhancement] A quoted multi-command shell command string can now bespecified as a single - and only - operand, without having to precede withan explicit
eval
command. - [behavior change] If no custom title is specified with
-t <title>
, noattempt is made anymore to auto-derive a meaningful tab title from theshell command specified, as there is no heuristic that works well in allcases. - [fix]Issue #7: iTerm2now also preserves the current working dir. when opening a new tab in thecurrent window.
- [new feature]
v0.4.0 (2016-09-13):
- [enhancement]
-a Terminal|iTerm2
now allows specifying the target Terminalapplication, which is useful for launchingttab
from non-terminal applicationssuch asAlfred. - [fix] Specifying a syntactically invalid shell command to execute in thenew 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):
- [doc] Incorrect new-window option corrected in examples.
- [doc, dev] Read-me improved together with the Makefile to turn off syntax highlighting for the CLI help chapter.
v0.1.7 (2015-06-26):
- [doc] Read-me: npm badge changed to shields.io; license badge added.
- [dev] Makefile updated.
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):
- [doc] Improved CLI usage help; keywords added to
package.json
. - [dev]
make browse
now opens the GitHub repo in the default browser.
- [doc] Improved CLI usage help; keywords added to
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.
About
macOS and Linux CLI for opening a new terminal tab/window, optionally with a command to execute and/or display settings
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors8
Uh oh!
There was an error while loading.Please reload this page.