HyperJS
HyperJS HyperJS HyperJS

Hyper is an Electron-based terminal built on HTML/CSS/JS and fully extensible. With Hyper, you can install themes and plugins from the command line. The goal of the project is to create a beautiful and extensible experience for command-line interface users, built on open web standards.

Based on the provided source, Hyper™ is a terminal emulator designed with a focus on being beautiful, extensible, fast, and stable. It is built on open web standards.

Features:

  • Cross-Platform Availability: Hyper™ is available for macOS, Windows, and Linux distributions (Debian, Fedora, and others via AppImage).

  • Extensibility through Plugins: Hyper™ supports extensions (also referred to as plugins) that are based on npm. Users can search for plugins using npm search hyper and then add them to the plugins array in the .hyper.js configuration file. Hyper™ provides notifications upon plugin installation.

  • Customizable Keymaps: Users can customize all command keybindings by editing the keymaps object within the .hyper.js configuration file.

  • Extensive Configuration: Hyper™'s behavior and appearance can be extensively configured through the config object in the .hyper.js file. This includes options for:

    • Update channel

    • Font family and size

    • Font weight

    • Cursor appearance (color, accent color, shape, blinking)

    • Foreground and background colors

    • Selection and border colors

    • Custom CSS

    • Padding

    • Color palette overrides

    • Custom shell and shell arguments

    • Environment variables

    • Default window size

    • Scrollback history

    • Copy and paste behavior

    • Default SSH application setting

    • Modifier key behavior

    • Visibility of the hamburger menu and window controls

  • Extensions API: Hyper™'s extension system is built on the composition of React components and Redux actions. This allows developers to intercept and compose almost any part of the terminal's functionality, leveraging their knowledge of these underlying open-source libraries.

  • Plugin Development Hooks: Plugins can implement various methods that are invoked at different points in the application lifecycle, such as onApp, onWindow, onUnload (for Electron processes) and onRendererWindow, middleware, reduceUI, etc. (for the renderer process).

  • Component Decoration: Hyper™ allows developers to decorate its React components (like <Hyper>, <Header>, <Tabs>, <Tab>, <Terms>, <TermGroup>, <Term>, <Notifications>, etc.) using higher-order components to customize their behavior and appearance.

  • Hot-Loading and Hot-Reloading of Plugins: Plugins can be hot-loaded and hot-reloaded without a full application restart, typically by pressing Command + R (refresh). Hyper™ also periodically checks for plugin updates and when the configuration file is changed.

  • Access to Redux Actions and Effects: Extensions can interact with the Redux state management by using custom middleware and reducers to intercept, modify, or dispatch actions and handle side effects.

  • Underlying Terminal: Hyper™ utilizes xterm.js, contributing to its speed and functionality.

  • Extended Electron APIs: The Electron app and BrowserWindow objects are extended with Hyper™ specific properties and methods for accessing configuration, plugins, windows, and inter-process communication (RPC). Renderer windows also have access to an rpc object and the Redux store.

In essence, Hyper™ aims to be a highly customizable and powerful terminal emulator through its robust plugin system and extensive configuration options, built on modern web technologies.