hyper-init

The ultimate and most complete extension to initialize commands before and after Hyper terminal starts


Keywords
hyper, hyper.app, hyperterm, hyper-plugin, hyperterm-plugin, hyper-extension, plugin, extension, run, startup, init, initialization, initializer, launcher, terminal, command, start, command-line, commands, electron, hyper-init, hyperapp, javascript, js, terminal-app
License
MIT
Install
npm install hyper-init@1.5.2

Documentation

hyper-init heading

The ultimate and most complete extension to initialize commands before and after Hyper terminal starts

become a patron or sponsor issuehunt url npm version downloads mentioned in awesome list

With hyper-init you can perform as many commands as you want, before and after Hyper terminal starts, using rules that define when your commands should run.

hyper-init gif

Table of Contents

Installation

If you don't have Hyper, install it from here.

So, type the following on Hyper:

hyper i hyper-init

Configuration

init

hyper-init can be configured within the config object in the ~/.hyper.js configuration file.

All you have to do to get started is to create an array of objects called init, like this:

init: [
  {
    rule: 'once',
    commands: ['cd ~/Desktop', 'ls'],
    allowedShells: ['zsh', 'bash']
  }
]

Your ~/.hyper.js configuration file should look like this:

module.exports = {
  config: {

    // add hyper-init configuration like this:
    init: [
      {
        rule: 'once',
        commands: ['cd ~/Desktop', 'ls'],
        allowedShells: ['zsh', 'bash']
      },
      {
        rule: 'windows',
        commands: ['echo This is only executed on New Windows!']
      },
      {
        rule: ['splitted', 'tabs', 'windows'],
        commands: ['echo Hey, I can set an array of rules!']
      }
    ]
  },

  plugins: ['hyper-init']

}

Rules

A string or array that defines when you want your commands to run.

Rule Description
once executes your commands only at Hyper starts
windows executes your commands only when a new Hyper window opens
tabs executes your commands only when a new tab is opened
splitted executes your commands only when a new pane is opened
all executes your commands every time a terminal opens

Commands

An array with your shell commands to run.
You can perform as many commands as you would like.

Example:

commands: ['cd ~/Desktop', 'ls']

Allowed Shells

An array of allowed shells to restrict the commands to be executed.

Example:

allowedShells: ['zsh', 'bash']

You can omit this property or let the array empty if you would like to allow the commands run for all shells.

clearCommand

hyper-init can infer the command to clear the screen for a small number of terminals. If it can't infer the command, hyper-init clears the terminal buffer using printf "\\033[H". You can set it manually adding the clearCommand: '' property within the config object. For example:

module.exports = {
  config: {
    clearCommand: 'reset'
  }
}

commandSeparator

hyper-init uses && as the default separator for commands. For known terminals, hyper-init can infer the separator. You can also set it manually by adding the commandSeparator: '' property within the config object, but this overrides for all terminals, even ones that don't support that delimiter. For example:

module.exports = {
  config: {
    commandSeparator: ' ++ ' // For an arbitrary terminal that uses `++`
  }
}

Contributing

Contributions are always welcome.

There's a bunch of ways you can contribute to this project, like by:

  • 🔌 Creating new features
  • 👋 Requesting a feature
  • 🪲 Reporting a bug
  • 📄 Improving this documentation
  • 🚨 Sharing this project and recommending it to your friends
  • 💵 Supporting this project on Patreon
  • 🐛 Funding an issue on IssueHunt
  • 🌟 Dropping a star on this repository

And hyper-init's ability to infer the clearCommand and commandSeparator is based on its relatively small dictionary. Feel free to add more definitions for terminals not listed in shells.js.

KNOWN_SHELLS = {
  [...]
  shellName: {
    separator: '',
    clearCommand: ''
  }
  [...]
}
  • shellName should be replaced with the name of the shell you want to target (lowercase)
  • The value of separator should be the separator for multiple statements on one line (e.g. ' && ') as a string
  • The value of clearCommand should be the command to clear the target shell (e.g. 'cls') as a string
KNOWN_SHELLS = {
  [...]
  powershell: {
    separator: '; ',
    clearCommand: 'Clear-Host'
  }
  [...]
}

License

MIT © Dalton Menezes