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.