Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eggplanetio/mert
▢ An iTerm 3-compatible window, tab, and pane manager.
https://github.com/eggplanetio/mert
Last synced: 19 days ago
JSON representation
▢ An iTerm 3-compatible window, tab, and pane manager.
- Host: GitHub
- URL: https://github.com/eggplanetio/mert
- Owner: eggplanetio
- Created: 2016-06-03T02:29:21.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-07-10T21:51:25.000Z (over 3 years ago)
- Last Synced: 2024-05-22T21:34:05.449Z (6 months ago)
- Language: JavaScript
- Homepage:
- Size: 54.7 KB
- Stars: 335
- Watchers: 6
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
> An iTerm 3-compatible window, tab, and pane manager.
![npm badge](https://badge.fury.io/js/mert.svg)
## Installation
```
npm install -g mert
```## Usage
```bash
mert init [type] # Create new .mertrc file. Options: global or local
mert start [name] # Start project by name or by specifying file path (defaults to .mertrc in cwd)
```## Overview
_mert_ is a simple command line tool for managing your windows, tabs, and pane configurations for iTerm 3
and iTerm 2. A little yaml config file (called the `.mertrc` file) along with some JXA (Javascript +
Applescript), you can have your iTerm environment up and running in no time._mert_ uses a combination of a "global" file at `~/.mertrc` and/or one in your current directory to
spin up your iTerm environment.## Examples
_mert_ supports window, tab, and pane management. Examples live inside of
`./tests/examples`, so that's a great place to start.- [Panes](https://github.com/eggplanetio/mert/blob/master/tests/examples/.mertrc-base)
- [Tabs & Panes](https://github.com/eggplanetio/mert/blob/master/tests/examples/.mertrc-tabs)
- [Windows, Tabs, & Panes](https://github.com/eggplanetio/mert/blob/master/tests/examples/.mertrc-windows-and-tabs)Take the following two `.mertrc` files:
#### Global Config
```yaml
# ~/.mertrc
foo:
root: ~/code/foo
layout:
-
- echo "Row 1, Pane 1"
- echo "Row 1, Pane 2"
-
- echo "Row 2, Pane 1"
```#### Local Config
```yaml
# /Users/brian/code/bar/.mertrc
layout:
-
- echo "Row 1, Pane 1 in bar"
- echo "Row 1, Pane 2 in bar"
-
- echo "Row 2, Pane 1 in bar"
```Running the following:
```bash
mert start foo
```would result in the following iTerm window, each command running in `~/code/foo`:
```
+-------------------------------------------+
| "Row 1, Pane 1" | "Row 1, Pane 2 |
| | |
|---------------------|---------------------|
| "Row 2, Pane 2" | "Row 2, Pane 2 |
| | |
+---------------------|---------------------+
```Conversely, running:
```
cd /Users/brian/code/bar/.mertrc
mert start
```Would spin up the `.mertrc` file within the parent directory.
Checkout the demo below:
![mert demo](https://cloud.githubusercontent.com/assets/659829/15803031/c0e7a9e0-2a7e-11e6-89f9-38704b28ecba.gif)
### Split Strategy
By default *mert* adopts a vertical-first split strategy. This behavior can be changed by explicitly setting the `split_strategy` option to 'horizontal' in the `.mertrc` file.Take for example the following `.mertrc`:
```yaml
layout:
-
- echo "Row 1, Pane 1"
-
- echo "Row 2, Pane 1"
- echo "Row 2, Pane 2"
```This would result in the following iTerm window:
```
+-------------------------------------------+
| "Row 1, Pane 1" |
| |
|---------------------|---------------------|
| "Row 2, Pane 2" | "Row 2, Pane 2 |
| | |
+---------------------|---------------------+
```Whereas a `.mertrc` with the `split_strategy` configuration set, as shown here:
```yaml
split_strategy: "vertical"
layout:
-
- echo "Col 1, Pane 1"
-
- echo "Col 2, Pane 1"
- echo "Col 2, Pane 2"
```would produce an iTerm window like the one below:
```
+---------------------|---------------------+
| "Col 1, Pane 1" | "Col 2, Pane 1 |
| | |
| |---------------------|
| | "Col 2, Pane 2 |
| | |
+---------------------|---------------------+
```### Launch Strategy
By default *mert* will start a new iTerm window and launch your layout into it. You can choose to launch your layout
into a new tab, or into the current pane, instead by using the root-level `launch_strategy` option.See [Tab Launch Strategy](https://github.com/eggplanetio/mert/blob/master/tests/examples/.mertrc-launch-strategy-tab)
and [In-Place Launch Strategy](https://github.com/eggplanetio/mert/blob/master/tests/examples/.mertrc-launch-strategy-in_place)
for an example.### Profiles
By default *mert* will use the `Default` iTerm profile. You can use a different profile for your layout
by adding the root-level `profile` option.To use a different profile, set the `profile` configuration on the `.mertrc` file:
```yaml
profile: "MyProfile"
layout:
-
- echo "Col 1, Pane 1"
-
- echo "Col 2, Pane 1"
- echo "Col 2, Pane 2"
```## Testing
```
npm run test
```## License
Released under the MIT License.
## Questions?
Brought to you by [eggplanet](http://www.eggplanet.io/).
## Contributors
- [@brianmgonzalez](https://twitter.com/brianmgonzalez)
- [@michaelmoussa](https://twitter.com/michaelmoussa)
- [@ghosh](https://twitter.com/_ighosh)
- [@juancaldera](#)