GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

jonathanslenders

pymux – Pythonのターミナルマルチプレクサ(tmuxなど)

投稿日:

Pythonのターミナルマルチプレクサ(tmuxなど)

Pymux

Pythonのターミナルマルチプレクサ(tmuxなど)

pip install pymux

問題、質問、希望、コメント、フィードバック、発言? GitHubの問題を作成してください、私はそれを感謝します。

インストール

pipを使用してpymuxをインストールするだけです。

pip install pymux

pymuxと入力して起動します。

それは何をするためのものか?

端末マルチプレクサは、同じ端末内で複数のアプリケーションを実行することを可能にする。 これは、アプリケーションごとにvt100端末をエミュレートすることで行います。 これを行うサーバープログラムがあります。 最も有名なのはGNU Screentmuxです。

Pymuxは完全にPythonで書かれています。 C拡張は必要ありません。 2.6から3.5までのすべてのPythonバージョンで動作します。 それはOS XとLinux上で動作するはずです。

tmuxと比較

ある程度、pymuxはtmuxのクローンです。 つまり、デフォルトのショートカットはすべて同じです。 コマンドは同じか非常によく似ており、単純な構成ファイルでも同じである可能性があります。 しかし、完全互換のクローンを作成するつもりはありません。 現在は、tmuxが提供するコマンド・オプションのサブセットのみがサポートされています。

Pymuxはtmuxに対していくつかの改良点を実装しています:

  • コマンドラインの補完メニューがあります。 (画面の下部にあります。)
  • コマンドラインにはフィッシュスタイルの提案があります。
  • コマンドラインとコピーバッファのEmacsとViの両方のキーバインドは、以前のprompt_toolkitの努力のおかげで十分に発達しています
  • 検索中にコピーバッファ内の検索が強調表示されます。
  • 各ペインにはそれぞれ独自のタイトルバーがあります。
  • 複数のクライアントが同じセッションに接続されている場合、各クライアントは異なるウィンドウを見ることができます。 クライアントが異なるウィンドウを見ているときは、すべてのクライアントが完全なターミナル・サイズを使用します。
  • 24ビットトゥルーカラーをサポート。 (デフォルトでは無効になっていますが、すべての端末でサポートされているわけではありません。起動時または接続時に--truecolorオプションを使用して有効にしてください)。
  • ユニコードの入力と出力をサポートしています。 Pymuxはutf-8でエンコードされた2倍の幅の文字を正しく認識します。 (タイトルバーの場合も同様です)

パフォーマンスについて:

  • TmuxはC言語で書かれていますが、明らかにPythonより高速です。 これは、アプリケーションが大量の出力を生成する場合に顕著になります。 tmuxがfind / or yesなどの高速リアルタイム出力を提供できる場合、pymuxは出力をわずかに遅く処理します。この場合、出力は端末に1秒間に数回しかレンダリングされません。 通常、これは問題ではありません。 そうであれば、 Pypyは大幅なスピードアップを提供する必要があります。

Pythonとprompt_toolkitを使用する大きな利点は、新しい機能の実装が非常に簡単になることです。

その他のスクリーンショット

24ビットカラーサポートとオートコンプリートメニュー:

画面サイズの小さい別のクライアントが接続するとどうなりますか:

ペインがコピーモードに入ると、検索結果が強調表示されます。

なぜtmuxクローンを作成するのですか?

いくつかの理由で。 Pythonで端末マルチプレクサを使用すると、新しい機能を実験して実装するのが簡単になります。 C言語は優れた言語ですが、Pythonほど簡単に開発することはできません。

Pyvim (PythonのViクローン)と同じように、別の実験として始まりました。 prompt_toolkitの設計に挑戦するプロジェクト。 しかし、この時点で、pymuxは安定していて日々の作業に使用できるはずです。

この開発により、prompt_toolkitの多くの改善、特にパフォーマンスの改善が得られましたが、いくつかの機能改善も行われました。

さらに、開発は特に興味深いものです。なぜなら、ほとんどのPython開発者にとっては未知の領域が多々あります。 また、Pythonは端末アプリケーションを作成するための優れたツールであることも証明しています。

ロードマップ

公式のロードマップはありません。コードは大部分が楽しく書かれていますが、時間は限られていますが、私は専門的にpymuxを使用しています。新しいアイデアを実装したいと思っています。

いくつかのアイデア:

  • 配色のサポート。
  • Pythonで書かれた拡張機能をサポートしています。
  • スクリプティングのサポートが向上しました。 (現在、pymuxコマンドをペインのシェル内部から実行することは可能です(例: pymux split-window 。ただし、ステータスコードとフィードバックはまだ転送されていません)。
  • 改良されたマウスサポート。 (マウスの移動の報告。)
  • pymuxの一部はライブラリになることができます。そのため、任意のprompt_toolkitアプリケーションにvt100端末を組み込むことができます。 pyvimに埋め込まれた端末エミュレータを想像してみてください 。)
  • ウインドウやペインを横断するクールなウィジェットかもしれない。
  • より良い自動補完。

設定

~/.pymux.confファイルを作成し、コマンドラインで入力できるようにコマンドを入力します。 examplesディレクトリに設定例があります。

もしそれがクラッシュすれば?

何らかの理由でpymuxがクラッシュした場合、スタックトレースを/tmp/pymux.crash-*ような名前のファイルに書き込もうとします。 ユーザーインターフェイスがフリーズする可能性があります。 このスタックトレースでGitHubの問題を作成してください。

特別な感謝

  • Pyteは、動作するvt100パーサを提供しています。 (これはいくつかのxterm拡張をサポートするために拡張されています。)
  • コマンドライン引数を解析するためのdocopt
  • UIツールキットのprompt_toolkit
  • wcwidth :より良いUnicodeサポート(倍幅文字のサポート)。
  • tmux 、インスピレーションのために。







-jonathanslenders

執筆者:

jonathanslenders

pymux – Pythonのターミナルマルチプレクサ(tmuxなど)

投稿日:

(さらに…)







-jonathanslenders

執筆者: