rcmdnk's blog

20211114_hyper_200_200

Windows 11にアップグレードして wsltty上で日本語が化ける様になってしまったので Winodws純正のWindows Terminalを使ってたんですが、 日本語入力に難があるのでhyperに乗り換えました。

Windows 11でのターミナル問題

Windows 11はWindows 10からだと無償でアップグレードが出来るので 一般に配布された直後に入れてみました。

タスクバーやスタートメニューに関して少し見た目が変わったりしましたが、 中身的にはあまり変わってない印象。

アプリなども特に問題なく使えてましたが、 WSL2を使うために使っていた ターミナルアプリのwsltty で日本語が化けるようになってしまいました。

いろいろ試したものもうまくいかず、 一方でWindows 11からはWindows純正のWindows Terminalが コマンドプロンプトやPowerShellを使うのにも使うターミナルとして 組み込まれていて、これでWSLも使えるためこれに乗り換えていました。

ただ、問題として日本語を入力しようとすると少し問題があります。

Vimとかで右端の方で日本語を入力しようとると、変換中はうまく次の行に折り返しが出来ず、 右端の変換されている文字幅の下にどんどん追加されていく様な入力になります。 (一番右端で書き始めると下に一列に文字が入っていくような形。)

さらに、文章の途中に日本語を入力すると、後ろにある文字列と変換中の文字が被って意味わからないことになります。

変換を決定するとちゃんと入力されるのですが結構気持ち悪いです。

Hyper

Hyper™

HyperはHTML/JS/CSSを使って作られたターミナルエミュレーターです。

拡張機能などをWebアプリ感覚で作れるのでWeb開発をしてる人には手を入れ込むのが 簡単だったりします。

マルチプラットフォームに対応していて、 Windows、macOSに加え、様々なLinux環境でも使えます。

5年以上前に出た頃にちょっと試して面白いな、と思いつつ、 まだちょっと荒い感じがあって使ってませんでしたが、今回改めて使ってみることに。

以前(といっても調べたのは5年以上前)出来てなかった256色カラーは対応するようになっていました。

日本語に関しては全く問題なく表示でき、入力も問題なく出来ました。

その他に関しても特に違和感なかったのでとりあえずこれで良いかな、と。

設定ファイルはメニューのEdit->PreferencesやCtrl-,で開くか、 または

C:\Users\<User>\AppData\Roaming\Hyper\.hyper.js

にあるファイルを直接編集します。 Hyperではこのファイルを編集して保存すると自動的に設定が読み込まれてターミナルがアップデートされる様になっています。

一旦デフォルトのファイルを以下の様に書き換えて使っています。

C:\Users\<User>\AppData\Roaming\Hyper\.hyper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
--- hyper.js.old
+++ hyper.js
@@ -12,7 +12,7 @@
     fontSize: 12,

     // font family with optional fallbacks
-    fontFamily: 'Menlo, "DejaVu Sans Mono", Consolas, "Lucida Console", monospace',
+    fontFamily: '"Cascadia Mono", Menlo, "DejaVu Sans Mono", Consolas, "Lucida Console", monospace',

     // default font weight: 'normal' or 'bold'
     fontWeight: 'normal',
@@ -27,7 +27,7 @@
     letterSpacing: 0,

     // terminal cursor background color and opacity (hex, rgb, hsl, hsv, hwb or cmyk)
-    cursorColor: 'rgba(248,28,229,0.8)',
+    cursorColor: '#fff',

     // terminal text color under BLOCK cursor
     cursorAccentColor: '#000',
@@ -36,7 +36,7 @@
     cursorShape: 'BLOCK',

     // set to `true` (without backticks and without quotes) for blinking cursor
-    cursorBlink: false,
+    cursorBlink: true,

     // color of the text
     foregroundColor: '#fff',
@@ -67,7 +67,7 @@
     showWindowControls: '',

     // custom padding (CSS format, i.e.: `top right bottom left`)
-    padding: '12px 14px',
+    padding: '0px 0px',

     // the full list. if you're going to provide the full color palette,
     // including the 6 x 6 color cubes and the grayscale map, just provide
@@ -103,11 +103,11 @@
     //
     // PowerShell on Windows
     // - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`
-    shell: '',
+    shell: 'C:\\Windows\\System32\\wsl.exe',

     // for setting shell arguments (i.e. for using interactive shellArgs: `['-i']`)
     // by default `['--login']` will be used
-    shellArgs: ['--login'],
+    shellArgs: ['~'],

     // for environment variables
     env: {},
@@ -116,14 +116,14 @@
     bell: 'SOUND',

     // if `true` (without backticks and without quotes), selected text will automatically be copied to the clipboard
-    copyOnSelect: false,
+    copyOnSelect: true,

     // if `true` (without backticks and without quotes), hyper will be set as the default protocol client for SSH
     defaultSSHApp: true,

     // if `true` (without backticks and without quotes), on right click selected text will be copied or pasted if no
     // selection is present (`true` by default on Windows and disables the context menu feature)
-    quickEdit: false,
+    quickEdit: true,

     // choose either `'vertical'`, if you want the column mode when Option key is hold during selection (Default)
     // or `'force'`, if you want to force selection regardless of whether the terminal is in mouse events mode
  • FontをCascadia Mono
  • カーソルを白に。
  • カーソルを点滅するように。
  • 外枠の幅をゼロに。
  • 起動時にWSLを起動するように。
  • 文字列選択時にコピー。
  • 右クリック時にペースト。

といった感じ。

WSLに関しては、shellでwslの実行ファイルを指定し、shellArgs~と指定してあげる必要があります。

通常のコマンドプロンプトで開いた場合には wslというコマンドを打てばwslに入る事もできます。

うまく出来てないこと

  • Vim内でインサートモード時にカーソルを変更できない

Vim/Neovimではノーマルモードとインサートモードでカーソルをブロックから線に変更することで モードに違いを簡単に認識できる様になっています。

このあたりは設定次第と言うこともあるのですが、Windowsターミナルとかだとその変更ができる状態になっているにも関わらず、 Hyper上では指定したcursorShapeから変わりません。

Neovim cursor shape does not change on insert mode · Issue #2765 · vercel/hyper

このあたり、昔にも問題になって、一度はプラグインの悪さだった的な話もあったみたいですが、 また今も問題は起きているようです。

一応下のステータスラインですぐにチェックできるようにしていたりするのでそこまで 絶対というわけではないのですが、やはりできればほしい機能です。

  • 文字列選択した場合に反転表示にできない?

selectionColorという設定があり、この色がマウスで文字列を選択した際に 背景色として使われます。

一方、他の多くのターミナルではマウスで選択すると背景色と文字色を反転させて表示させます。

背景色を指定してしまうと、仮にその色と文字色が同じだったり似たようなものだと見にくくなってしまいます。

とりあえずはデフォルトの表示が薄い紫の様な色でその色だと大体問題なく見えるので そのままにしてありますが、もし可能なら反転状態にさせたいな、と。

これは割とCSSとかの定義で簡単にできそうな気はしていますが、気が向いたらそのうちまた。

macOSでは

HyperはmacOSでも使えるので、色々カスタマイズしていい感じに出来るならMacでも共有して 使っても良いかな、とは思ってます。

ただ、今の所上の様な問題があって、一方でMacで使っているiTerm2はかなり快適なので 今のところはMacでHyperを無理に使わなくても良いかな、という感じです。

Sponsored Links
Sponsored Links

« Windowsターミナルの起動時の初期ディレクトリ設定