インストール

最新バージョン: 3.0.2

64ビット

64ビット

3.0.2

macOS (.app) 3.0.0

64ビット

Windows (.exe) 3.0.2
Debian (.deb) 3.0.2
Fedora (.exe)
Windows (.rpm) 3.0.2
Other Linux distros (.AppImage) 3.0.2

プロジェクトの目標

プロジェクトの目標はコマンドラインのインターフェイスユーザー向けに美しく伸縮性の高い経験をオープン Web 標準に構築することです。 当初は、主に速度、安定性、および拡張機能作者のための正しい API の開発に注力します。

将来的には、生産性のための最もシンプルで強力かつ十分にテストされたインターフェイスとなり得るものを強化するために、コミュニティが革新的な追加機能を考え出すと予想しています。 package.json.

$ npm search hyper

Then edit .hyper.js and add it to plugins

module.exports = { config: { /*... */ }, plugins: };

Hyper will show a notification when your modules are installed to .hyper_plugins.

キーマップ

すべてのコマンドキーを変更できるようになりました。 変更するには、.hyper.js を編集し、keymaps に変更したい内容を追加します。

そうすると、Hyper はデフォルトを変更した内容に変更します。 'window:devtools': 'Cmd+Alt+O'

module.exports = { config: { /*... */ }, keymaps: { 'window:devtools': 'cmd+alt+o' }};

デフォルトのキーマップ。

Configuration

Config location

macOS ~/Library/Application Support/Hyper/.hyper.js
Windows $Env:AppData/Hyper/.hyper.js
Linux ~/.config/Hyper/.hyper.js

Note: ~/.hyper.js での設定はまだサポートされていますが、アプリケーション ディレクトリに設定がある場合は無視されます。 そうでない場合は、最初の実行時にアプリケーション ディレクトリに移動されます。

.hyper.js で見た config オブジェクトは、次のように承認されます

“Menlo.X”fontFamily。 DejaVu Sans Mono, Lucida Console, monospace”

“bold”

“false”

プロパティ デフォルト 説明
updateChannel “stable” 更新を受け取る更新チャネル
fontSize 12 ターミナルのデフォルト サイズ(ピクセル)
fontFamily “Menlo.X” オプションのフォールバックで使用するフォントファミリー
uiFontFamily “-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, ….」 UI に使用するフォント ファミリ(フォールバックはオプション)
fontWeight “normal” デフォルトのフォントの太さ:「通常」または「大胆」
fontWeightBold 太字用フォント 太さを指定することができる。 “normal” または “bold”
cursorColor “rgba(248,28,229,0.8)” 端末のキャレットの色
cursorAccentColor “#000” BLOCKカーソル下の文字色
cursorShape “BLOCK” 端末内のキャレット形状を指定することができるようになりました。 利用可能なオプションは次のとおりです。 ‘BEAM’, ‘UNDERLINE’, ‘BLOCK’
cursorBlink trueのとき。 カーソルが点滅する
foregroundColor “#fff” 端末のメインテキストの色
backgroundColor “#000” ウィンドウとメインターミナルの背景の色と不透明度
selectionColor “rgba(248,28,229,0.3)” 端末のテキスト選択の背景色/不透明度
borderColor “#333” メインウィンドウの枠とタブバーの色
css “” メイン ウィンドウに含めるカスタム CSS
padding “12px 14px” CSS padding values for space around each term
colors { black: “#000000”, red: “#ff0000”, … } カラーパレットのオーバーライドのリスト。 キーの名前は「ANSI 16」を表し、すべてデフォルトの設定で見ることができる。
shell Hyper が新しいセッションを開始するときに実行するカスタムシェルへのパス
shellArgs “” シェル引数の配列
env {} 事前に設定する環境変数オブジェクト。 シェルを起動する
windowSize 新しいウィンドウのデフォルトの幅/高さ (ピクセル)
scrollback 1000 スクロールのために端末バッファに保持される行数
copyOnSelect false trueの場合。 選択したテキストを自動的にクリップボードにコピーする
quickEdit false この機能が有効の場合、選択したテキストはクリップボードにコピーされます。 右クリックで選択されたテキストはコピーされるか、選択範囲がない場合は貼り付けられます (Windows のデフォルトでは真)
defaultSSHApp true 真ならば Hyper は SSH
modifierKeys {altIsMeta.X} のデフォルト プロトコル クライアントとして設定されます。 false} 修飾キーがメタキーとして動作するように変更
showHamburgerMenu Linux/Windowsではtrue、 macOS では false ハンバーガー メニューの表示を変更します。 利用可能なオプションは:true, false
showWindowControls “” ウィンドウ コントロールの位置と可視性を変更します。 利用可能なオプションは、true, false, “left”

Extensions API

拡張機能は Electron とレンダラー プロセスの両方で読み込まれる汎用 Node.js モジュールです。 React コンポーネントと Redux アクション。

可能なカスタマイズ ポイントごとにカスタム API メソッドまたはパラメーターを公開する代わりに、機能のあらゆるビットを傍受して合成することができます。

プラグイン開発に関するさらなる詳細は、Hyper リポジトリで見つけることができます。

あなたのモジュールは、これらのメソッドの少なくとも 1 つを公開する必要があります。

Electron

<Tabs>から<Header>コンポーネントへ小道具を受け渡します。

Method Invoked from Description
onApp Electron アプリが最初にロードされると呼び出されます。 プラグインが再ロードされると、既存のアプリで再度呼び出されます。

Parameters:

app electron app.
onWindow Electron

それぞれのウィンドウが作成されたときに呼び出されます。 プラグインがリロードされると、既存のウィンドウで再度呼び出されます。

Parameters:

window 1個の電子 BrowserWindow.
onUnload Electron

プラグインがユーザーにより削除されると発生する。

Parameters:

app electron app.
decorateConfig Electron / Renderer

v0.5.0+.0.0 レンドラ。 ユーザーの設定を装飾できるようにします。
テーマ設定やプラグインのカスタムパラメータに便利です。

Parameters:

config オブジェクト
decorateEnv

v0.7.0+.0

プラグインのユーザー設定を飾ることができます。 変更された環境オブジェクトを返すことにより、ユーザーの環境を装飾することを可能にします。

Parameters:

environment The environment object
decorateMenu Electron

Electron の Menu template で起動されたものです。 プラグインが再読み込みされた場合、再度呼び出され、メニューが更新されます。

パラメータ:

menu メニューテンプレートオブジェクト
decorateBrowserOptions Electron

新しいウィンドウが作られるときElectronの BrowserWindow オプションに飾り付けができるようにしました。

Parameters:

options BrowserWindow オプションオブジェクトです。
onRendererWindow レンダラ

ウィンドウごとにプラグインが最初にロードまたはその後再ロードされるときに起動されます。

パラメータ:

window ウィンドウオブジェクト
middleware Renderer

あらゆる動作を傍受できるカスタム Reduxミドルウエアです。 その後、thunkミドルウェアを呼び出すので、ミドルウェアはnextサンクスできることになります。

reduceUI
reduceSessions
reduceTermGroups
Renderer

State shape用のカスタムreducerです。

state Redux 状態オブジェクト
action アクション オブジェクト
getTabsProps Renderer
parentProps 親コンポーネントからの小道具。
props コンポーネントに渡される既存のプロパティ。
getTabProps レンダラ

<Tab>から<Tabs>コンポーネントにプロパティを受け渡します。

uid Tab / Term uid
parentProps 親コンポーネントからのプロップスです。
props コンポーネントに渡される既存のプロパティ。
getTermGroupProps レンダラ

<Terms>から <TermGroup> コンポーネントにプロパティを受け渡します。

uid TermGroup uid
parentProps 親コンポーネントからのプロップを返さなければならない。
props コンポーネントに渡される既存のプロパティ。
getTermProps レンダラ

<TermGroup> から<Term>コンポーネントにプロパティを引き継ぎます。

uid Term uid
parentProps 親コンポーネントからのプロップ。
props コンポーネントへの既存のプロパティが渡されていること。
mapHyperState
mapTermsState
mapHeaderState
mapNotificationsState Renderer

コンポーネントが受け取る状態のプロパティのためのカスタムマッパーです。 子コンポーネントがこれらのプロパティを取得するには、対応するメソッド (getTermProps など) を使用してそれらを渡す必要があることに注意してください。

渡されたマップの拡張オブジェクトを返す必要があります。

state The Redux global state
map コンポーネントに渡されるプロパティの既存のマップです。
mapHyperDispatch
mapTermsDispatch
mapHeaderDispatch
mapNotificationsDispatch Renderer

Dispatch Properties のカスタムマッパーです。 渡されたマップの拡張オブジェクトを返す必要があります。

dispatch The Redux ディスパッチ関数
map コンポーネントに渡されるプロパティの既存のマップです。
decorateHyper
decorateNotifications
decorateNotificationdecorateHeader
decorateTabs
decorateTabdecorateTerms
decorateTermGroup
decorateSplitPane
decorateTerm レンダラ

装飾するためにReact Componentで起動されます。 高次コンポーネントを返す必要があります。

Parameters:

Hyper The React Componentconstructor.
env コンポーネント構築用に有用なモジュール リファレンスを収集したものです。 下記参照

Module loading

ユーザーは Command + R (refresh) でプラグインのホットロードおよびホットリロードが可能です。 733>

Notice

`BrowserWindow` に影響を与えるプラグインは、ホットロード後に新しいウィンドウで効果を発揮します。

将来的には、自動的にこれを行うかもしれません。 新しいプラグインをロードする:

  • 定期的に(数時間おき)
  • 設定ファイルに変更があったとき(plugins または localPlugins
  • ユーザーがプラグイン > Update all now

再ロードするプロセスでは .hyper_pluginsnpm prunenpm install を走らせることになります。

  • エレクトロンとレンダラーの両方のプロセスで require.cache を実行
  • 既存のインスタンスで on* メソッドを呼び出し、新しい装飾が配置されたコンポーネントを再レンダリングします。
  • Plugins location

    macOS ~/Library/Application Support/Hyper/.hyper_plugins
    Windows $Env:AppData/Hyper/.hyper_plugins
    Linux ~/.config/Hyper/.hyper_plugins

    Note: のプラグインはまだサポートされていますが、アプリケーション ディレクトリにプラグインがある場合は無視されます。

    注意: メイン プロセスでは、プラグインはできるだけ早く登録されます (私たちは onLoad を起動します)。 ブラウザ上では、command+R を押すことによってロードをトリガーするのはユーザー次第です。 状態をリセットしたり、正しく保存しない拡張機能によって重要な作業が失われるのを防ぐために、この方法でユーザーにロードの制御をさせます。

    Decorating components

    UI のすべてのピースに高次コンポーネントを提供する機能を提供します。
    その構造は次のとおりです:

    <Hyper> <Header> <Tabs> <Tab /> ... </Tabs> </Header> <Terms> <TermGroup> <SplitPane> <TermGroup> <Term /> ... </TermGroup> <TermGroup> <Term /> ... </TermGroup> </SplitPane> </TermGroup> </Terms> <Notifications> <Notification /> ... </Notifications></Hyper>

    すべての decorate* メソッドは、第2パラメーターとして渡されるオブジェクトで次の参照を受け取ります:

    React React 名前空間全体です。
    notify

    デスクトップ通知を表示するヘルパー関数です。 最初のパラメーターはタイトル、2 番目は通知のオプションの本文、3 番目は開発コンソールに詳細を記録するために使用できる別のオプションのパラメーターです。

    これらの詳細を渡すには、単に、ログに記録する情報を含む error プロパティをオブジェクトに提供します。

    すべてのコンポーネントは、そのマークアップを拡張するために次の 2 つのプロパティを受け入れます:

    customChildren Element の配列またはコンポーネントの下部に挿入する単一の Element です。
    customChildrenBefore 上記のプロパティと同じですが、コンポーネントの最初の子要素(複数可)として挿入されます。

    高次コンポーネントは、装飾されたコンポーネントに onDecorated プロパティを供給して、そのインスタンスへの参照を取得することができます。

    Term 高次コンポーネントは、カーソルが移動したときに呼び出される onCursorMovehandler プロパティを、Term の原点に対する相対位置を表すオブジェクト パラメータで提供することができます。

    x ピクセル単位の水平位置
    y ピクセル単位の垂直位置
    width ピクセル単位のカーソル幅
    height カーソルの高さ (ピクセル)
    col 列での水平位置
    row 行での垂直位置

    他のデコレーターと互換性を保つようお勧めします。 733>

    For example, if you’re passing children, compose potential existing values:

    render () { const customChildren = Array.from(this.props.customChildren) .concat(<p>My new child</p>); return <Tab {...this.props} customChildren={customChildren} />}

    or if you use onDecorated property

    onDecorated (term) { this.term = term; if (this.props.onDecorated) { this.props.onDecorated(term); }}

    Actions and Effects

    All the Redux actions are available to you to handle through your middleware and reducers.The Reduxアクションは、あなたのミドルウェアとリデューサーを通して処理することができます。 733>

    Side effects は 2 つの基本的な形式で発生します。

    • 一部のアクションは、状態に基づいて他のアクションをディスパッチします。
    • RPC チャネルを介してメイン プロセスと通信することにより、非同期処理を行うアクションもある

    いずれの場合も、副作用はアクションの effect キーとして渡され、後に当社のミドルウェアによって処理される

    つまり、効果を上書き、合成、完全に排除できるのです! 言い換えると、このようにしてアプリのデフォルトの機能や動作を変更することができます。

    例として、Command+= を押したときにフォント サイズを大きくするために使用するアクションを考えてみましょう:

    export function increaseFontSize () { return (dispatch, getState) => { dispatch({ type: UI_FONT_SIZE_INCR, effect () { const state = getState(); const old = state.ui.fontSizeOverride || state.ui.fontSize; const value = old + 1; dispatch({ type: UI_FONT_SIZE_SET, value }); } }); };}

    The underlying terminal

    Hyper has a lot of its speed and functionality thanks of the power of xterm.js

    追加 API

    Electron app オブジェクトは以下のプロパティで拡張されています:

    config .hyper.jsconfigブロックと Object です。
    plugins プラグイン用のヘルパーを持つ Object
    getWindows すべての開いているウィンドウの Set を返す Function
    createWindow 新規ウィンドウを作成する Function 。 新しいウィンドウのinitコールバックとして渡されるオプションのcallbackを受け入れます。

    電子BrowserWindowオブジェクトは次のパラメータで拡張されます:

    rpc ウィンドウプロセスとのコミュニケーションを可能にするEventEmitterです。
    sessions 各項のptyとの通信を保持するSessionオブジェクトのMapです。

    Renderer ウィンドウも同様に:

    Redux Store オブジェクトが含まれます。 これにより、dispatchアクションへのアクセスや、getStateによるグローバルステートの読み取りが可能になります。

    rpc ウィンドウ プロセスとのコミュニケーションを可能にする EventEmitter を拡張します。
    store

    ブラウザとレンダリングプロセスで対称的なrpcオブジェクトです。 API は Node.js と同じですが、パラメータとして単一のオブジェクトしか認めない点が異なります。

    window.rpc.emit('hi there', { some: 'payload', any: });

    Example theme: Hyperyellow

    以下の拡張機能は、CSS と黄色を追加するように設定を変更するだけです! 以下はそのコードです。

    テーマは単なるプラグインです! 必要なフックは decorateConfig のみです:

    exports.decorateConfig = (config) => { return Object.assign({}, config, { borderColor: 'yellow', cursorColor: 'yellow', css: ` ${config.css || ''} .tabs_nav .tabs_list .tab_text { color: yellow; } .tabs_nav .tabs_title { color: yellow; } ` });}

    Devtools で用語を検査することにより、クラス名を取得しました。 その際、いくつかのクラスは自動的に生成され、ランダムな nonce が続くことに注意してください (例: term_13hv8io)。 それらは無視してください: それらはすべての新しいウィンドウで変わります!

    他の拡張機能とうまくやることに重点を置いていることに注目してください。 具体的には、新しいオブジェクトを作成し、関心のあるキーのみを拡張し、ユーザーの設定と他の作者の設定を維持するために CSS を構成します:

    return Object.assign({}, config, { css: ` ${config.css || ''} /* your css here */ `});

    Example extension: Hyperpower

    The following extension renders particles as the caret moves:

    Let’s walk through its code.
    First, we intercept the Redux action SESSION_ADD_DATA.この拡張機能では、パーティクルを移動して表示します。

    exports.middleware = (store) => (next) => (action) => { if ('SESSION_ADD_DATA' === action.type) { const { data } = action; if (/bash: wow: command not found/.test(data)) { store.dispatch({ type: 'WOW_MODE_TOGGLE' }); } else { next(action); } } else { next(action); }};

    アクションを再派遣しない、つまり、コマンドの出力をターミナルにレンダリングしないことに注意してください。 その代わりに、uiReducer で取得し、後でマップする独自のアクションをディスパッチします。

    exports.reduceUI = (state, action) => { switch (action.type) { case 'WOW_MODE_TOGGLE': return state.set('wowMode', !state.wowMode); } return state;};exports.mapTermsState = (state, map) => { return Object.assign(map, { wowMode: state.ui.wowMode });};

    次に、基礎となるキャレットにアクセスできるように <Term> コンポーネントを装飾します。

    exports.getTermProps = (uid, parentProps, props) => { return Object.assign(props, { wowMode: parentProps.wowMode });}

    次に、拡張機能は <Term> をラップする高次のコンポーネントを返します。 ベースとなる Term コンポーネントとその DOM 参照にアクセスするために onDecorated プロパティを渡し、Hyper カーソル API を使用するために onCursorMove プロパティを渡していることに注意してください:

    render () { return React.createElement(Term, Object.assign({}, this.props, { onDecorated: this._onDecorated, onCursorMove: this._onCursorMove }));}

    admin

    コメントを残す

    メールアドレスが公開されることはありません。

    lg