fpasoterm 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of fpasoterm might be problematic. Click here for more details.
- package/CHANGELOG.md +230 -0
- package/CONTRIBUTING.md +67 -0
- package/INSTALL.ja.md +204 -0
- package/INSTALL.md +229 -0
- package/LICENSE +21 -0
- package/README.ja.md +389 -0
- package/README.md +607 -0
- package/bin/fpasoterm +2882 -0
- package/completions/_fpasoterm +81 -0
- package/completions/fpasoterm.bash +55 -0
- package/completions/fpasoterm.fish +64 -0
- package/completions/fpasoterm.ps1 +47 -0
- package/docs/capability-diagnostics.en.md +77 -0
- package/docs/capability-diagnostics.ja.md +63 -0
- package/docs/completion.en.md +141 -0
- package/docs/completion.ja.md +113 -0
- package/docs/config.en.md +554 -0
- package/docs/config.ja.md +544 -0
- package/docs/debugging.en.md +72 -0
- package/docs/debugging.ja.md +66 -0
- package/docs/diagnostics.en.md +69 -0
- package/docs/diagnostics.ja.md +64 -0
- package/docs/font-diagnostics.en.md +116 -0
- package/docs/font-diagnostics.ja.md +105 -0
- package/docs/fpasoterm-plugin.d.ts +51 -0
- package/docs/known-issues.en.md +23 -0
- package/docs/known-issues.ja.md +23 -0
- package/docs/plugins.en.md +266 -0
- package/docs/plugins.ja.md +176 -0
- package/docs/pr-review.en.md +177 -0
- package/docs/pr-review.ja.md +170 -0
- package/docs/release-checklist.en.md +72 -0
- package/docs/release-checklist.ja.md +71 -0
- package/docs/security.en.md +36 -0
- package/docs/security.ja.md +31 -0
- package/docs/spec.en.md +106 -0
- package/docs/spec.ja.md +99 -0
- package/docs/sshfs.en.md +28 -0
- package/docs/sshfs.ja.md +28 -0
- package/docs/sync.en.md +280 -0
- package/docs/sync.ja.md +280 -0
- package/examples/apply-default-appearance.bat +8 -0
- package/examples/apply-default-appearance.ps1 +7 -0
- package/examples/apply-default-appearance.sh +7 -0
- package/examples/apply-runtime-appearance.bat +8 -0
- package/examples/apply-runtime-appearance.ps1 +7 -0
- package/examples/apply-runtime-appearance.sh +7 -0
- package/examples/config/default-appearance.toml +36 -0
- package/examples/config/minimal.toml +30 -0
- package/examples/config/profiles.toml +20 -0
- package/examples/config/runtime-appearance.toml +24 -0
- package/examples/config/sync-folder.toml +17 -0
- package/examples/config/tui-compatibility.toml +7 -0
- package/examples/config/with-plugins.toml +33 -0
- package/examples/plugins/hello.ts +17 -0
- package/examples/plugins/status-banner.ts +14 -0
- package/examples/plugins/theme.ts +32 -0
- package/examples/plugins/welcome-banner.ts +16 -0
- package/extra/linux/icons/hicolor/128x128/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/16x16/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/192x192/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/256x256/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/32x32/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/48x48/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/512x512/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/64x64/apps/fpasoterm.png +0 -0
- package/extra/linux/io.github.oyoguhito.fpasoterm.desktop +10 -0
- package/extra/logo/fpasoterm.png +0 -0
- package/extra/macos/fpasoterm.icns +0 -0
- package/extra/windows/fpasoterm.cmd +40 -0
- package/extra/windows/fpasoterm.ico +0 -0
- package/package.json +81 -0
- package/scripts/build-artifacts.js +183 -0
- package/scripts/generate-icon.js +251 -0
- package/scripts/init-jj-empty-main +41 -0
- package/scripts/install-linux-desktop.js +238 -0
- package/scripts/run +16 -0
- package/scripts/security/scan-secrets.js +89 -0
- package/scripts/tests/smoke.js +2476 -0
- package/scripts/uninstall-desktop.js +20 -0
- package/scripts/uninstall-linux-desktop.js +96 -0
- package/scripts/uninstall-windows-path.js +94 -0
- package/src/config.js +855 -0
- package/src/renderer/confirm.html +71 -0
- package/src/renderer/index.html +223 -0
- package/src/renderer/renderer.js +4166 -0
- package/src/renderer/styles.css +969 -0
- package/src/renderer/vendor/addon-fit/addon-fit.js +2 -0
- package/src/renderer/vendor/addon-image/LICENSE +19 -0
- package/src/renderer/vendor/addon-image/addon-image.js +3 -0
- package/src/renderer/vendor/addon-web-links/LICENSE +19 -0
- package/src/renderer/vendor/addon-web-links/addon-web-links.js +2 -0
- package/src/renderer/vendor/xterm/xterm.css +292 -0
- package/src/renderer/vendor/xterm/xterm.js +2 -0
- package/src-tauri/Cargo.lock +5253 -0
- package/src-tauri/Cargo.toml +29 -0
- package/src-tauri/build.rs +140 -0
- package/src-tauri/capabilities/default.json +13 -0
- package/src-tauri/default-config.toml +128 -0
- package/src-tauri/src/main.rs +9347 -0
- package/src-tauri/tauri.conf.json +60 -0
|
@@ -0,0 +1,544 @@
|
|
|
1
|
+
# fpasoterm 設定
|
|
2
|
+
|
|
3
|
+
fpasoterm はユーザー編集用の設定を以下から読み込みます。
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
~/.config/fpasoterm/User/config.toml
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Windows の `~` は現在の user profile を表すため、既定 path は
|
|
10
|
+
`%USERPROFILE%\.config\fpasoterm\User\config.toml` です。
|
|
11
|
+
|
|
12
|
+
起動時に、全デフォルト項目を含む example を以下へ書き出し、古い場合は更新します。
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
~/.config/fpasoterm/User/config.toml.example
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
`config.toml.example` を `config.toml` にコピーし、変更したい値だけ編集してください。既存の `config.toml` は上書きしません。`config.toml.example` が無い場合や古い場合は、次回起動時に再生成されます。
|
|
19
|
+
|
|
20
|
+
別の設定ファイルを一度だけ使う場合:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
fpasoterm --config ~/.config/fpasoterm/User/work.toml
|
|
24
|
+
fpasoterm -c ~/.config/fpasoterm/User/work.toml
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
window menu の `Help` には、そのwindowが現在使用している設定ファイルの絶対pathを表示します。
|
|
28
|
+
`OSC 777;config=...` で runtime config file を適用した場合も、適用後のpathを表示します。
|
|
29
|
+
|
|
30
|
+
## 変更の反映タイミング
|
|
31
|
+
|
|
32
|
+
fpasoterm は各 window process の起動時に `config.toml` を読みます。launcher は解決済み設定を
|
|
33
|
+
in-memory JSON snapshot として native process へ渡します。これは file cache ではなく、起動済み
|
|
34
|
+
window は TOML file の変更を監視しません。編集後は対象 window を閉じて再度起動してください。
|
|
35
|
+
`[keybindings]` も同じです。shortcut label と binding は起動時に解決されるため、TOML を編集した
|
|
36
|
+
だけでは既存 window に反映されません。
|
|
37
|
+
|
|
38
|
+
```mermaid
|
|
39
|
+
flowchart TD
|
|
40
|
+
U["User TOML<br/>~/.config/fpasoterm/User/config.toml"]
|
|
41
|
+
X["自動生成 example<br/>config.toml.example"]
|
|
42
|
+
S["保存済み bounds<br/>window-state.json"]
|
|
43
|
+
N["Node launcher<br/>bin/fpasoterm"]
|
|
44
|
+
E["embedded default<br/>src-tauri/default-config.toml"]
|
|
45
|
+
D["配布済み direct binary<br/>fpasoterm.exe / fpasoterm"]
|
|
46
|
+
J["FPASOTERM_RUNTIME_CONFIG_JSON<br/>一つの process 用 snapshot"]
|
|
47
|
+
W["native window と renderer"]
|
|
48
|
+
T["terminal shell から fpasoterm を実行"]
|
|
49
|
+
|
|
50
|
+
U --> N
|
|
51
|
+
N --> X
|
|
52
|
+
S -. 保存済み width height .-> N
|
|
53
|
+
N --> J --> W
|
|
54
|
+
U --> D
|
|
55
|
+
E --> D
|
|
56
|
+
S -. 保存済み width height .-> D
|
|
57
|
+
D --> W
|
|
58
|
+
W --> T --> D
|
|
59
|
+
J -. 子 process は継承した native snapshot を無視 .-> D
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`FPASOTERM_RUNTIME_CONFIG_JSON` はdiskへ保存されず、古いTOML fileのcacheでもありません。
|
|
63
|
+
新しい起動ごとに、Node launcherは選択された`config.toml`を読み直して新しいJSON snapshotを作り、
|
|
64
|
+
配布済みdirect binaryは選択されたTOMLを自身で読みます。fileが無い場合や古いpartial TOMLの場合も、
|
|
65
|
+
current defaultとmergeして読み込みます。`config.toml.example`の更新は別処理であり、既存userの
|
|
66
|
+
`config.toml`を変更しません。
|
|
67
|
+
|
|
68
|
+
設定の読込処理が`config.toml`または`window-state.json`を書き換えることはありません。保存済み
|
|
69
|
+
boundsは`window.rememberBounds = true`の場合だけTOMLのwidth/heightより優先され続けます。保存sizeを
|
|
70
|
+
削除する操作は明示的な`--reset-window-state`だけです。
|
|
71
|
+
|
|
72
|
+
window を閉じずに現在の terminal session へ適用する場合は、terminal から次の OSC sequence を
|
|
73
|
+
出力します。不明な場合は `Help` に表示される絶対pathを使用してください。
|
|
74
|
+
|
|
75
|
+
```sh
|
|
76
|
+
config_path="$HOME/.config/fpasoterm/User/config.toml"
|
|
77
|
+
printf '\033]777;config=%s\a\r\n' "$config_path"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
PowerShell の場合:
|
|
81
|
+
|
|
82
|
+
```powershell
|
|
83
|
+
$configPath = Join-Path $HOME '.config\fpasoterm\User\config.toml'
|
|
84
|
+
[Console]::Write("$([char]27)]777;config=$configPath$([char]7)`r`n")
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
`window.rememberBounds = true` の場合、`window.width` と `window.height` は保存済み
|
|
88
|
+
`window-state.json` により追加で上書きされます。`config.toml` で size を試す場合は、
|
|
89
|
+
`fpasoterm --reset-window-state` を実行してから新しい window を開いてください。
|
|
90
|
+
|
|
91
|
+
設定済みウィンドウサイズを一時的に上書きする場合:
|
|
92
|
+
|
|
93
|
+
```sh
|
|
94
|
+
fpasoterm --size 1200x760
|
|
95
|
+
fpasoterm -z 1200x760
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
titlebar の表示名や色を一時的に上書きする場合。複数ウィンドウを開いた時の識別に使えます。
|
|
99
|
+
|
|
100
|
+
```sh
|
|
101
|
+
fpasoterm --title work --titlebar-color '#2e7d32'
|
|
102
|
+
fpasoterm -t logs -b '#6a1b9a'
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
`--title` を使った場合、shell が送る title change は無視されるため、
|
|
106
|
+
ウィンドウ識別用の表示名が維持されます。起動中 terminal から意図して
|
|
107
|
+
変更したい場合は `OSC 777;title=...` を使ってください。
|
|
108
|
+
|
|
109
|
+
起動後に shell でコマンドを実行する場合:
|
|
110
|
+
|
|
111
|
+
```sh
|
|
112
|
+
fpasoterm --command "tmux attach -t work"
|
|
113
|
+
fpasoterm -e "tmux attach -t work"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
一度だけ別の shell を使う場合:
|
|
117
|
+
|
|
118
|
+
```sh
|
|
119
|
+
fpasoterm --shell pwsh.exe
|
|
120
|
+
fpasoterm --shell cmd.exe
|
|
121
|
+
fpasoterm -s /usr/bin/fish
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
保存済みウィンドウサイズを削除する場合:
|
|
125
|
+
|
|
126
|
+
```sh
|
|
127
|
+
fpasoterm --reset-window-state
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
全設定をOSごとのデフォルトへ戻す場合:
|
|
131
|
+
|
|
132
|
+
```sh
|
|
133
|
+
fpasoterm --reset-config
|
|
134
|
+
# 短縮形: fpasoterm -R
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
既存ファイルは同じ場所の `config.toml.backup-<timestamp>` へrenameして残し、
|
|
138
|
+
完全な新しい`config.toml`を生成します。保存済み`window-state.json`も削除するため、
|
|
139
|
+
次回起動時はデフォルトの幅1000、高さ680が使われます。このコマンドはwindowを
|
|
140
|
+
開かず終了します。`--config <path>`と併用した場合は選択したconfigだけをrenameして
|
|
141
|
+
resetし、標準のローカルwindow stateも削除します。
|
|
142
|
+
|
|
143
|
+
既存の値を置き換えず、新しい fpasoterm version で追加された設定項目だけを追加する場合:
|
|
144
|
+
|
|
145
|
+
```sh
|
|
146
|
+
fpasoterm --update-config
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
このcommandは既存の対応済みvalueを維持した完全な正規化済み`config.toml`を書き出し、
|
|
150
|
+
書換前に`config.toml.backup-<timestamp>`を作成します。`window-state.json`は変更しません。
|
|
151
|
+
`--config <path>`で別fileも更新できます。Node launcherと配布済みdirect binaryの両方で
|
|
152
|
+
使用できます。
|
|
153
|
+
|
|
154
|
+
現在の対応設定schemaに含まれない項目を削除する場合:
|
|
155
|
+
|
|
156
|
+
```sh
|
|
157
|
+
fpasoterm --prune-config
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
こちらもbackupを作成し、対応済みvalueは維持します。ただしthird-party plugin用のcustom key
|
|
161
|
+
を含め、unknownな設定を全て削除します。backupを確認できる状態でだけ実行してください。
|
|
162
|
+
新しい既定値の追加と削除済み項目の除去の両方が必要な場合は、先に`--prune-config`、次に
|
|
163
|
+
`--update-config`を実行します。
|
|
164
|
+
|
|
165
|
+
解決済み設定と plugin 状態を表示する場合:
|
|
166
|
+
|
|
167
|
+
```sh
|
|
168
|
+
fpasoterm --show-config
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
選択中TOMLを変更せず検証する場合、選択中pathを確認する場合、現在の完全な既定exampleを
|
|
172
|
+
標準出力へ出す場合:
|
|
173
|
+
|
|
174
|
+
```sh
|
|
175
|
+
fpasoterm --config-check
|
|
176
|
+
fpasoterm --config-path
|
|
177
|
+
fpasoterm --config-example > config.toml
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
warning、exit status、GitHub Issue向けの`--diagnostics` reportは
|
|
181
|
+
[設定と診断](diagnostics.ja.md)を参照してください。
|
|
182
|
+
|
|
183
|
+
## Profile
|
|
184
|
+
|
|
185
|
+
profileは一回の起動にだけ適用する名前付きoverlayです。通常設定を先にmergeし、
|
|
186
|
+
次に`[profiles.<name>]`、最後に`--title`、`--shell`、`--size`などのCLI引数を
|
|
187
|
+
適用します。このためprofileを選んでも`config.toml`や保存済みwindow boundsは
|
|
188
|
+
書き換わりません。
|
|
189
|
+
|
|
190
|
+
```toml
|
|
191
|
+
[terminal]
|
|
192
|
+
fontSize = 14
|
|
193
|
+
|
|
194
|
+
[profiles.large-font.terminal]
|
|
195
|
+
fontSize = 18
|
|
196
|
+
|
|
197
|
+
[profiles.transparent.window]
|
|
198
|
+
titlebarColor = "#00695c"
|
|
199
|
+
|
|
200
|
+
[profiles.transparent.terminal]
|
|
201
|
+
backgroundOpacity = 0.65
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
```sh
|
|
205
|
+
fpasoterm --profile-list
|
|
206
|
+
fpasoterm --profile large-font
|
|
207
|
+
fpasoterm --config examples/config/profiles.toml --profile transparent
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
profile名はcase-sensitiveなTOML table名です。存在しない名前、またはtableではない
|
|
211
|
+
profileを指定すると、通常設定へ黙ってfallbackせずerrorで終了します。
|
|
212
|
+
`--show-config`と`--diagnostics`には選択中profileを表示します。
|
|
213
|
+
`--config`を指定せず`fpasoterm --profile large-font`を使う場合は、
|
|
214
|
+
`fpasoterm --config-path`で表示されるfileへ`[profiles.large-font.terminal]`tableを
|
|
215
|
+
copyします。[`examples/config/profiles.toml`](../examples/config/profiles.toml)も参照してください。
|
|
216
|
+
|
|
217
|
+
コマンドラインから plugin を有効化・無効化する場合:
|
|
218
|
+
|
|
219
|
+
```sh
|
|
220
|
+
fpasoterm --enable-plugin hello,theme
|
|
221
|
+
fpasoterm --disable-plugin hello,theme
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
plugin 操作は `User/plugins` 配下のファイル名で選択します。複数指定はカンマ区切り、
|
|
225
|
+
または同じオプションの繰り返しが使用できます。同名ファイルが複数のサブディレクトリに
|
|
226
|
+
ある場合は `group/hello.ts` のように plugins directory からの相対 path を指定します。
|
|
227
|
+
|
|
228
|
+
## 全デフォルト
|
|
229
|
+
|
|
230
|
+
```toml
|
|
231
|
+
[window]
|
|
232
|
+
title = "fpasoterm"
|
|
233
|
+
width = 1000
|
|
234
|
+
height = 680
|
|
235
|
+
minWidth = 420
|
|
236
|
+
minHeight = 260
|
|
237
|
+
backgroundColor = "rgba(0, 0, 0, 0)"
|
|
238
|
+
titlebarColor = "#1565c0"
|
|
239
|
+
titleLocked = true
|
|
240
|
+
themeSource = "system"
|
|
241
|
+
rememberBounds = true
|
|
242
|
+
frame = false
|
|
243
|
+
[terminal]
|
|
244
|
+
allowTransparency = true
|
|
245
|
+
cursorBlink = true
|
|
246
|
+
cursorStyle = "block"
|
|
247
|
+
fontFamily = "\"DejaVu Sans Mono\", \"Noto Sans Mono\", \"Noto Sans Mono CJK JP\", \"Noto Sans Mono CJK KR\", \"Noto Sans Mono CJK SC\", \"NanumGothicCoding\", \"BIZ UDGothic\", \"Symbols Nerd Font Mono\", \"Symbols Nerd Font\", \"JetBrainsMono Nerd Font\", \"Noto Sans CJK JP\", \"Noto Sans CJK KR\", \"Noto Sans CJK SC\", \"Noto Sans CJK TC\", \"Hiragino Kaku Gothic ProN\", \"Apple SD Gothic Neo\", \"Malgun Gothic\", Meiryo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"
|
|
248
|
+
fontSize = 14
|
|
249
|
+
# 省略時の既定値はmacOS Intelで12、その他のOSで14です。
|
|
250
|
+
lineHeight = 1
|
|
251
|
+
minimumContrastRatio = 1
|
|
252
|
+
rescaleOverlappingGlyphs = false
|
|
253
|
+
backgroundOpacity = 0.65
|
|
254
|
+
scrollback = 1000
|
|
255
|
+
termName = "xterm-256color"
|
|
256
|
+
encoding = "utf-8"
|
|
257
|
+
shell = ""
|
|
258
|
+
|
|
259
|
+
# enhanced Kitty keyboard inputを明示的に必要とするTUIだけで有効化します。
|
|
260
|
+
# 現在無効なgraphics addonとは別の設定です。
|
|
261
|
+
kittyKeyboard = false
|
|
262
|
+
|
|
263
|
+
# [terminal.images] は将来の安定した renderer 用に予約されています。
|
|
264
|
+
# 現在の build はこの section を無視します。config.toml へ追加しないでください。
|
|
265
|
+
|
|
266
|
+
[terminal.theme]
|
|
267
|
+
background = "rgba(16, 19, 23, 0.65)"
|
|
268
|
+
foreground = "#e8edf2"
|
|
269
|
+
cursor = "#f5d76e"
|
|
270
|
+
selectionBackground = "#35506b"
|
|
271
|
+
black = "#11151a"
|
|
272
|
+
red = "#ff6b6b"
|
|
273
|
+
green = "#8bd17c"
|
|
274
|
+
yellow = "#f5d76e"
|
|
275
|
+
blue = "#7bb7ff"
|
|
276
|
+
magenta = "#d7a8ff"
|
|
277
|
+
cyan = "#63d4d5"
|
|
278
|
+
white = "#e8edf2"
|
|
279
|
+
brightBlack = "#5d6978"
|
|
280
|
+
brightRed = "#ff8f8f"
|
|
281
|
+
brightGreen = "#ade89f"
|
|
282
|
+
brightYellow = "#ffe08a"
|
|
283
|
+
brightBlue = "#a4ceff"
|
|
284
|
+
brightMagenta = "#e3c3ff"
|
|
285
|
+
brightCyan = "#9de9ea"
|
|
286
|
+
brightWhite = "#ffffff"
|
|
287
|
+
|
|
288
|
+
[keybindings]
|
|
289
|
+
# Mod は Windows/Linux の Ctrl、macOS の Cmd を表します。
|
|
290
|
+
prefix = "Mod+Shift"
|
|
291
|
+
# 一文字の value は prefix を継承します。full shortcut はその操作だけ上書きします。
|
|
292
|
+
# physical key の例: newWindow = "Ctrl+Alt+KeyN"
|
|
293
|
+
logMenu = "L"
|
|
294
|
+
logToggle = "S"
|
|
295
|
+
logShow = "P"
|
|
296
|
+
copy = "C"
|
|
297
|
+
paste = "V"
|
|
298
|
+
menu = "M"
|
|
299
|
+
help = "H"
|
|
300
|
+
newWindow = "N"
|
|
301
|
+
openCwd = "o"
|
|
302
|
+
broadcast = "B"
|
|
303
|
+
kill = "K"
|
|
304
|
+
tile = "T"
|
|
305
|
+
closeAll = "X"
|
|
306
|
+
|
|
307
|
+
### キー名
|
|
308
|
+
|
|
309
|
+
`prefix` には `+` 区切りで modifier だけを指定できます。値は `Ctrl` または `Control`、`Alt`
|
|
310
|
+
または `Option`、`Shift`、`Meta` または `Cmd` または `Command`、`Mod` です。`Mod` は
|
|
311
|
+
Windows/Linux の `Ctrl`、macOS の `Cmd` を表します。modifier の大文字小文字は区別しません。
|
|
312
|
+
`Escape` など action key を `prefix` の一部にはできません。
|
|
313
|
+
|
|
314
|
+
各 action には、`prefix` を継承する action key 一つ、または `Ctrl+Shift+KeyN` のような full
|
|
315
|
+
shortcut 一つを指定できます。以下の名前を使用できます。
|
|
316
|
+
|
|
317
|
+
| 種類 | 名前 | 照合 |
|
|
318
|
+
| --- | --- | --- |
|
|
319
|
+
| 文字 | `A`-`Z`、`0`-`9`、`-` | browser の key value。keyboard layout 依存 |
|
|
320
|
+
| 名前付きキー | `Tab`、`Enter`、`Escape`、`Space`、`Backspace`、`Delete`、`Insert`、`Home`、`End`、`PageUp`、`PageDown` | `Space` と physical form は keyboard code、それ以外は key value |
|
|
321
|
+
| function/cursor | `F1`-`F24`、`ArrowUp`、`ArrowDown`、`ArrowLeft`、`ArrowRight` | physical keyboard code |
|
|
322
|
+
| physical key | `KeyA`-`KeyZ`、`Digit0`-`Digit9`、`Space`、`Numpad0`-`Numpad9`、`NumpadEnter`、`NumpadAdd`、`NumpadSubtract`、`NumpadMultiply`、`NumpadDivide`、`NumpadDecimal` | physical keyboard code |
|
|
323
|
+
| 日本語 IME key | `ZenkakuHankaku`、`KanaMode`、`KanjiMode` | browser の key value。keyboard/OS 依存 |
|
|
324
|
+
|
|
325
|
+
`Tab`、`Escape`、`Delete`、`Backspace` は使用可能です。例えば `kill = "Escape"` は設定済み
|
|
326
|
+
prefix を継承し、`help = "Ctrl+Shift+F1"` は Help だけ full shortcut になります。`Space` は
|
|
327
|
+
literal の `Space` で指定できます。例: `broadcast = "Space"`。通常のキーは keyboard layout
|
|
328
|
+
に依存しない `KeyN`、`Digit1` を推奨します。
|
|
329
|
+
|
|
330
|
+
`Fn` は action / modifier として使用できません。通常は keyboard firmware が処理し、browser に
|
|
331
|
+
独立した key event が届かないためです。`Fn+F1` は OS が F1 event として渡す場合だけ `F1` として
|
|
332
|
+
指定できます。日本語 IME key は IME または OS が先に捕捉する場合があるため、application action
|
|
333
|
+
には推奨しません。同様に `Alt+Tab`、`Ctrl+Alt+Tab`、一部の function key のような OS 予約済み
|
|
334
|
+
shortcut は fpasoterm に届かないことがあります。同じ full shortcut を複数の fpasoterm action へ
|
|
335
|
+
割り当てないでください。
|
|
336
|
+
|
|
337
|
+
`Ctrl+X` 単体は、例えば `closeAll = "Ctrl+X"` として指定できる有効な full shortcut です。
|
|
338
|
+
`Ctrl+X` を押してから `N` を押す形式は、一つのshortcutではなく順序付きkey chordです。現行の
|
|
339
|
+
config formatではkey chordには対応していません。
|
|
340
|
+
|
|
341
|
+
Windows では `Ctrl+N` や `Ctrl+Shift+N` を fpasoterm の確認に使わないでください。WebView または
|
|
342
|
+
IME が renderer より先に捕捉する場合があります。代わりに、OS予約と競合しにくい明示的なbindingを
|
|
343
|
+
指定します。
|
|
344
|
+
|
|
345
|
+
```toml
|
|
346
|
+
[keybindings]
|
|
347
|
+
newWindow = "Ctrl+F2"
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
`--debug-keys --console-diagnostics` で起動すると、動作するshortcutではF2 eventに`ctrl=true`と
|
|
351
|
+
`shortcut matched action=newWindow spec=Ctrl+F2`の両方が出ます。`ctrl=false`の場合はOSがmodifierを
|
|
352
|
+
渡していないため、renderer側では修正できません。
|
|
353
|
+
|
|
354
|
+
[plugins]
|
|
355
|
+
enabled = []
|
|
356
|
+
|
|
357
|
+
[sync]
|
|
358
|
+
enabled = false
|
|
359
|
+
provider = "folder"
|
|
360
|
+
path = ""
|
|
361
|
+
channel = "default"
|
|
362
|
+
diagnostics = true
|
|
363
|
+
maxBytes = 1048576
|
|
364
|
+
commands = false
|
|
365
|
+
commandSecret = ""
|
|
366
|
+
commandTtlSeconds = 60
|
|
367
|
+
|
|
368
|
+
[logging]
|
|
369
|
+
enabled = true
|
|
370
|
+
directory = ""
|
|
371
|
+
autoStart = false
|
|
372
|
+
maxBytes = 10485760
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
`lineHeight` の既定値はmacOSを含む全OSで`1`です。TUI logo行の連続性より`g`/`q`/`y`などdescenderの判別を優先します。fpasoterm同梱のxterm.jsは`0.5`以上を受け付けます。macOSの以前のcompact既定値`0.8`、`0.81`、`0.82`、`0.85`、`0.9`、`0.92`と一致する既存設定はruntimeで移行します。明示したcustom値は保持します。
|
|
376
|
+
|
|
377
|
+
macOSではbox/block glyphのmetricsがmacOS Terminalに近い`Menlo`を既定fontの先頭にします。`SF Mono`はfallbackとして維持します。
|
|
378
|
+
|
|
379
|
+
### 文字コード
|
|
380
|
+
|
|
381
|
+
`terminal.encoding` の既定値は `utf-8` です。Unixでは、親processからUTF-8ではないlocaleを
|
|
382
|
+
継承した場合にも、UTF-8 PTYへUTF-8 localeを設定します。これによりmacOSの`ls`などが
|
|
383
|
+
日本語pathを`?`へ置換することを防ぎます。legacy programが出力するbyte列を使用する場合だけ、
|
|
384
|
+
`shift-jis` または `euc-jp` を設定してください。文字コードの自動判定は曖昧で誤表示を起こすため
|
|
385
|
+
実装しません。**Diagnostics > Capability Test** のselectorで保存でき、decoderとshell localeを
|
|
386
|
+
適用するにはwindowを再起動します。
|
|
387
|
+
|
|
388
|
+
```toml
|
|
389
|
+
[terminal]
|
|
390
|
+
encoding = "utf-8"
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
## セクション
|
|
394
|
+
|
|
395
|
+
- `window`: titlebar の表示名、初期ウィンドウサイズ、最小サイズ、背景色、custom titlebar 色、native theme source、frame/titlebar 表示、最後の window bounds を local に記憶するかどうか。`themeSource` は `system`、`light`、`dark` を指定できます。`titleLocked` は既定で `true` で、shell が送る title sequence で fpasoterm の titlebar が上書きされないようにします。`--title` / `-t` と `--titlebar-color` / `-b` は一度だけ titlebar 表示を上書きします。
|
|
396
|
+
- `terminal`: terminal 作成時に渡す xterm.js options。既定の `fontFamily` は罫線・block文字のcell計測を安定させるため、Noto/DejaVu等幅font候補を先頭にします。Nerd Font候補はprivate-use glyph用のfallbackです。macOSでは`SF Mono`、`Menlo`、Hiragino、`Apple SD Gothic Neo`を含みます。ASCII文字のcell計測を等幅に保つため、可変幅の`Hiragino Sans`を等幅fontより前へ置かないでください。他OSでは半角カタカナやCJK文字を優先して描画するため、日本語・韓国語・中国語向けのNoto CJK候補とOSごとの一般的なfallbackを含めます。ただし、installされていないfontのglyphはfont stackだけでは表示できません。韓国語がtofu boxになる、またはNerd Fontのprivate-use glyphが別記号になる場合は、Font / Glyph Testで確認し、OS側でCJK fontまたはNerd Fontをinstallしてください。`lineHeight` の既定値はterminal artやTUI logoの隣接行がつながるように `1` です。`minimumContrastRatio` の既定値は `1` で、terminal applicationが指定したANSI/RGB色を維持します。`rescaleOverlappingGlyphs` の既定値は `false` で、block artやPowerline形式の装飾などapplication側のglyphを保ちます。CJK fontが隣接cellへ重なる場合だけ有効化してください。`terminal.termName` は既定で `xterm-256color` です。backend PTY は `TERM=xterm-256color` と `COLORTERM=truecolor` を設定するため、tmuxなどのterminal multiplexerがterminfoを使え、TUI applicationもtruecolor経路を選択できます。`terminal.shell` は空でなければ platform default shell を上書きします。Windows では `powershell.exe`、`pwsh.exe`、`cmd.exe` などを指定できます。`--shell <command>` / `-s <command>` は一度だけこの設定を上書きします。`terminal.kittyKeyboard` は既定で `false` です。enhanced Kitty keyboard inputを明示的に必要とするTUIだけで有効化してください。WebViewごとにIME動作が異なるためです。graphicsを有効化する設定ではありません。`[terminal.images]` は予約済みで、現在の build は値を無視します。追加・有効化しないでください。
|
|
397
|
+
|
|
398
|
+
Windowsで非標準の場所にPowerShellをinstallしている場合は、`C:\Program Files\PowerShell\7\pwsh.exe` のようにshellのフルパスを指定できます。
|
|
399
|
+
|
|
400
|
+
PowerShell 7 (`pwsh.exe`) が利用可能な場合に既定 shell として選択します。見つからない場合は一般的なPowerShell 7のinstall pathを確認します。
|
|
401
|
+
|
|
402
|
+
### TUI互換性の確認
|
|
403
|
+
|
|
404
|
+
block glyphを詰めて使うterminal applicationや、意図して低contrastなRGB色を使うapplicationでは、
|
|
405
|
+
contrastまたはglyph rescalingの上書きにより表示が崩れることがあります。既定値はこれらの
|
|
406
|
+
applicationをそのまま表示する値です。既存設定と比較する場合は、`[terminal]`へ次を設定して
|
|
407
|
+
再起動するか、一度だけ`examples/config/tui-compatibility.toml`を指定して起動してください。
|
|
408
|
+
|
|
409
|
+
```toml
|
|
410
|
+
[terminal]
|
|
411
|
+
minimumContrastRatio = 1
|
|
412
|
+
rescaleOverlappingGlyphs = false
|
|
413
|
+
```
|
|
414
|
+
- `keybindings`: application shortcut の設定。`prefix = "Mod+Shift"` はWindows/Linuxでは`Ctrl+Shift`、macOSでは`Cmd+Shift`を表します。Windowsでkeyboard layoutまたは他applicationが`Ctrl+Shift`を捕捉する場合は、`prefix = "Ctrl+Alt"`へ変更してください。この変更は共通modifierを置換するため、従来の`Ctrl+Shift` application shortcutは実行されなくなります。prefix tokenは大文字小文字を区別しませんが、`Ctrl`/`Control`、`Alt`/`Option`、`Shift`、`Meta`/`Cmd`/`Command`、`Mod`だけが使用できます。`Ctrl+Esc`は`Esc`がmodifierではなくaction keyのため無効です。無効なprefixは`Mod+Shift`へfallbackし、menuのtooltipで確認できます。一文字のaction valueは`prefix`を継承し、full shortcut はそのactionだけを上書きします。action keyには`Escape`、`F1`、`ArrowUp`、`KeyN`/`Digit1`などを使用できます。例: `newWindow = "Ctrl+Alt+KeyN"`、`kill = "Ctrl+Alt+Escape"`。`KeyN`のような値はphysical keyboard keyで照合するため、keyboard layoutによる`event.key`の違いを避けられます。window menuの先頭には有効なprefixを表示し、各actionはキーだけを表示します。menuを開くと最初のitemへfocusし、`Tab`/`Shift+Tab`と矢印キーで移動、`Escape`で閉じてterminalへfocusを戻します。再起動またはruntime config fileの適用でmenu labelとbindingを更新します。
|
|
415
|
+
fpasoterm は IME composition event を仮入力表示のためだけに監視します。xterm.js と WebView のnativeな入力配送をそのまま使い、fpasoterm が IME text を抑止・再送・置換・直接確定することはありません。ChromeOS/Linuxでは、新しいcompositionの開始時にまだ新しい仮入力textが入っていないため、hidden helper textareaに過去の確定textが残っている場合だけclearします。後続変換が過去の確定textを継承することを防ぎ、terminal textとPTY payloadは変更しません。Windows/LinuxではWebViewがxtermのhelper textareaを描画しない場合にだけ、表示専用の`IME` fallbackを使います。macOSはWebKit nativeのmarked text描画を使い、このfallbackを追加しないため、確定後にIME overlayが残りません。
|
|
416
|
+
- `plugins.enabled`: `~/.config/fpasoterm/User/` からの相対 plugin path。
|
|
417
|
+
- `sync`: diagnostics と明示的に送信した broadcast command を同期フォルダで共有する設定。`provider = "folder"` は Google Drive for desktop などで同期済みのローカルフォルダを使います。`commands` は短寿命の共有 command を許可し、`commandTtlSeconds` は実行可能な時間を制限します。詳細は [Sync Folder](sync.ja.md) を参照してください。
|
|
418
|
+
- `logging`: terminal output logging 設定。hamburger menu に `Log Start (^S)` / `Log Stop (^S)` と `Log Show (^P)` を表示します。`Ctrl+Shift+L` はlog操作にfocusした状態でmenuを開き、`Ctrl+Shift+S` は記録を直接切り替え、`Ctrl+Shift+P` はcaptured `terminal-*.log` の一覧から表示対象を選択する画面を開きます。制御シーケンスを除去した readable terminal output を local file に記録します。自動生成されるlog名には titlebar の title と timestamp が入り、例は `terminal-work-<timestamp>.log` です。log panel では選択した停止済み log の削除ができ、`Delete All` は log panel 内の確認で承認された場合だけ active log を空にして、設定済み log directory の停止済み `terminal-*.log` を全て削除します。`directory` が空の場合は `~/.config/fpasoterm/User/logs` が使われ、必要に応じて同期フォルダを指定できます。path には `~`、`%USERPROFILE%`、`$HOME` などを使えます。OS 間で共有する設定では `~` が最も扱いやすい指定です。
|
|
419
|
+
|
|
420
|
+
`window.rememberBounds` が有効な場合、最後の window size は `~/.config/fpasoterm/User/window-state.json` に保存され、次回起動時に復元されます。
|
|
421
|
+
|
|
422
|
+
window 表示と size は、デフォルト設定、`config.toml` に明示した値、size については保存済み `window-state.json`、最後に `--title`、`--titlebar-color`、`--size` などの一時 CLI 指定、の順に解決されます。size 設定変更を保存済み状態より優先したい場合は、`fpasoterm --reset-window-state` を実行してください。
|
|
423
|
+
|
|
424
|
+
Windowsでは、起動したterminal processの`Path`先頭にfpasoterm executable directoryを追加します。macOSでは、以前のreleaseでも使用していた標準的な`~/.local/bin/fpasoterm`を現在起動中のapp bundle向けに毎回生成し、`~/.local/bin`を`PATH`先頭に置いて全引数を変更せず転送します。互換性のため`~/.config/fpasoterm/bin/fpasoterm`も更新します。これにより従来のcommand pathを維持したまま、fpasoterm内で`fpasoterm --help`、`--list`、`--close`など直接binaryのcommandを実行できます。macOSで新しいGUIを起動する場合は既定でprocessを切り離して現在のpromptを解放します。終了まで待つ場合は`--foreground`を使います。Node launcher専用option、`--hoge`や`-?`などの未知option、値不足のoptionを配布binaryへ指定した場合は、無関係なGUIを開かず一行のerrorだけを表示します。全option一覧が必要な場合だけ`--help`を実行してください。`--version` と app内の `Help (^H)` panelにはpackage versionとbuild commitを表示するため、同じversionのcontributor buildやPR buildも識別できます。
|
|
425
|
+
|
|
426
|
+
macOSは最後のwindowを閉じてもapplicationをactiveのまま維持するのが通常動作です。CLIの`--close` / `-q`とapp内のClose Allでは一致する各fpasoterm processを明示終了するため、`fpasoterm -q all`後はmacOSのメニューバーにもfpasotermを残しません。
|
|
427
|
+
|
|
428
|
+
起動中の titlebar は terminal 内の command からも変更できます。標準の OSC title sequence は window title を変更し、fpasoterm 独自の OSC 777 は titlebar 表示を変更します。
|
|
429
|
+
|
|
430
|
+
## Terminal Graphics
|
|
431
|
+
|
|
432
|
+
Kitty Graphics Protocol、SIXEL、iTerm inline imageは、現在のbuildでは未対応です。xterm.js image addonはChromeOSの現行Tauri/WebKitGTKでWebViewを無反応にすることがあるため、`config.toml`に`[terminal.images]`があっても意図的にloadしません。
|
|
433
|
+
|
|
434
|
+
graphicsの検証目的でも、fpasoterm内で`kitten icat`、`chafa --format kitty`、`chafa --format sixels`を実行しないでください。fpasotermは`TERM=xterm-256color`を維持し、Kitty graphics capability queryへ応答しないため、`kitten icat`はgraphics非対応のerrorを表示します。これは想定どおりであり、以前再現したrenderer freezeを避けるためです。
|
|
435
|
+
|
|
436
|
+
## Broadcast Input
|
|
437
|
+
|
|
438
|
+
hamburger menu の `Broadcast (^B)`、または `Ctrl+Shift+B` を押します。title と PID ごとに一つ以上の local window を選択し、command を入力して `Shift+Enter` または `Send` を実行します。複数行 command の改行は通常の `Enter` で入力します。fpasotermは末尾の改行を除去して改行コードを正規化し、選択したlocal fpasoterm windowだけへtextを配信します。command送信時は常に本文の後にtarget terminalの実際のEnter key eventを送り、target TUIが有効なkeyboard protocolに従ってencodeできます。通常のshellでは従来と同じCR byteになります。pickerが挿入する`Ctrl+C`などcontrol byteだけの入力は、追加のEnterを送らずに配信します。
|
|
439
|
+
|
|
440
|
+
全 local window を選択し、sync が有効な場合、dialog に `Include synced channel` が表示されます。これを選ぶと、同じ sync path と channel を使う、すでに起動している全ての fpasoterm instance にも同じ短寿命 command を送ります。remote window の identity は共有していないため、local の一部だけを選択している場合は sync delivery を無効にします。command file は `sync.commandTtlSeconds`(既定 60 秒)で期限切れとなり、instance は自分の起動前に作成された command を実行しません。
|
|
441
|
+
|
|
442
|
+
この機能は remote server、OAuth token、後から起動した instance での command 自動実行を使用しません。この機能を使う場合、shared sync folder は command channel になります。参加する全 machine で信頼できる folder と channel だけを使用してください。
|
|
443
|
+
|
|
444
|
+
Broadcast dialogを開いている間は、`Tab` と `Shift+Tab` がterminalへ移動せず、dialog内のcontrolを循環します。focusしたcontrolはscrollして表示され、黄色の枠と`Keyboard focus:`行で現在位置を確認できます。terminalが意図せずfocusを取り戻した場合も`Shift+Enter`は送信として処理します。送信時は常に本文の後にtarget terminalの実際のEnter key eventを送り、dialog shortcutとは別にenhanced keyboard protocolを維持します。IME変換中のkeyはdialog操作として扱わずbrowserへ渡します。dialogの **Control byte** pickerでは、textareaのcursor位置へ表示可能な
|
|
445
|
+
表記を挿入します。明示的な`Enter / CR`は`\x0D`、`Tab`は`\x09`、`Ctrl+C`は`\x03`、`Ctrl+D`は`\x04`、`Ctrl+X`は`\x18`、`Ctrl+Z`は
|
|
446
|
+
`\x1A`です。fpasotermはpickerが挿入したこれらの表記だけを、送信時にterminal byteへ変換します。末尾に明示した`\x0D`へは追加のsemantic Enterを送信しません。単独の`Esc`は
|
|
447
|
+
**Alt prefix / Esc**と同じ`\x1B`になるため、選択肢から除外しています。`Ctrl`と`Alt`はbyteではなくmodifierです。
|
|
448
|
+
慣例上の`Alt+x`を送る場合は **Alt prefix / Esc** を挿入してから`x`を入力します。Escapeはclose、Tabはfocus移動に
|
|
449
|
+
予約されているため、pickerを使うことでkey eventへの依存を避けます。
|
|
450
|
+
|
|
451
|
+
Broadcastで危険性の高いpatternに一致するcommandを送る前には、追加確認を表示します。現在の対象は`rm`、
|
|
452
|
+
`find -delete`、`git reset --hard`、force付き`git clean`、filesystem format、`dd of=`、`truncate`、
|
|
453
|
+
`shred`、shutdown commandです。確認画面には一致したpattern、選択target、sync delivery、command textを
|
|
454
|
+
表示します。これは利便性のための警告でありshell parserやsecurity boundaryではありません。**Send Anyway** を
|
|
455
|
+
選ぶ前に、すべてのBroadcast commandを確認してください。
|
|
456
|
+
|
|
457
|
+
BroadcastとDiagnostics panelは同じ右下位置に表示します。panelの見出しをdragするとwindow内で移動できます。
|
|
458
|
+
この位置は一時的で、保存されずterminal windowの位置やsizeも変更しません。
|
|
459
|
+
|
|
460
|
+
次の `printf` 例は POSIX shell (`bash`、`dash`、`fish` など) 向けです。Windows の PowerShell や cmd.exe ではそのまま使えません。
|
|
461
|
+
|
|
462
|
+
```sh
|
|
463
|
+
printf '\033]0;work\a\r\n'
|
|
464
|
+
printf '\033]777;titlebarColor=#2e7d32\a\r\n'
|
|
465
|
+
printf '\033]777;opacity=0.65\a\r\n'
|
|
466
|
+
printf '\033]777;title=work;titlebarColor=#2e7d32\a\r\n'
|
|
467
|
+
printf '\033]777;log=start\a\r\n'
|
|
468
|
+
printf '\033]777;log=stop\a\r\n'
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
PowerShell で直接送る場合:
|
|
472
|
+
|
|
473
|
+
```powershell
|
|
474
|
+
[Console]::Write("$([char]27)]777;title=work;titlebarColor=#2e7d32$([char]7)`r`n")
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
runtime config sample は次で適用できます。
|
|
478
|
+
|
|
479
|
+
```sh
|
|
480
|
+
./examples/apply-runtime-appearance.sh
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
Windows PowerShell または cmd.exe では次を使えます。
|
|
484
|
+
|
|
485
|
+
```powershell
|
|
486
|
+
.\examples\apply-runtime-appearance.ps1
|
|
487
|
+
.\examples\apply-runtime-appearance.bat
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
この sample は title を `RUNTIME SAMPLE ACTIVE` にし、titlebar をピンク、terminal 背景と文字色を分かりやすく変更します。
|
|
491
|
+
|
|
492
|
+
起動中の window を標準の見た目へ戻す場合:
|
|
493
|
+
|
|
494
|
+
```sh
|
|
495
|
+
./examples/apply-default-appearance.sh
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
Windows PowerShell または cmd.exe では次を使えます。
|
|
499
|
+
|
|
500
|
+
```powershell
|
|
501
|
+
.\examples\apply-default-appearance.ps1
|
|
502
|
+
.\examples\apply-default-appearance.bat
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
path を手動指定する場合:
|
|
506
|
+
|
|
507
|
+
```sh
|
|
508
|
+
config_path="$(pwd)/examples/config/runtime-appearance.toml"
|
|
509
|
+
printf '\033]777;config=%s\a\r\n' "$config_path"
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
Windows PowerShell で path を手動指定する場合:
|
|
513
|
+
|
|
514
|
+
```powershell
|
|
515
|
+
$configPath = Resolve-Path .\examples\config\runtime-appearance.toml
|
|
516
|
+
[Console]::Write("$([char]27)]777;config=$configPath$([char]7)`r`n")
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
runtime config 適用では、現在の shell session は維持されます。`window.title`、`window.titlebarColor`、`window.width`、`window.height`、`terminal.fontSize`、`terminal.lineHeight`、`terminal.minimumContrastRatio`、`terminal.fontFamily`、`terminal.backgroundOpacity`、`terminal.theme` など、起動中に反映可能な表示設定を適用します。`terminal.shell` のように新しい PTY が必要な設定は次回起動時に反映されます。
|
|
520
|
+
|
|
521
|
+
TOML では同じ table を複数回定義できません。`frame = true` などを試す場合は、既存の `[window]` section 内の値を編集してください。ファイル末尾へ新しく `[window]` を追加すると config parse error になります。
|
|
522
|
+
|
|
523
|
+
## Plugins
|
|
524
|
+
|
|
525
|
+
Plugin は以下に配置します。
|
|
526
|
+
|
|
527
|
+
```text
|
|
528
|
+
~/.config/fpasoterm/User/plugins/
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
`config.toml` で有効化します。
|
|
532
|
+
|
|
533
|
+
```toml
|
|
534
|
+
[plugins]
|
|
535
|
+
enabled = ["plugins/example.ts"]
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
TypeScript plugin は以下へ変換されます。
|
|
539
|
+
|
|
540
|
+
```text
|
|
541
|
+
~/.config/fpasoterm/User/cache/plugins/
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
設定サンプルは `examples/config/`、plugin sample は `examples/plugins/` を参照してください。
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Debugging Guide
|
|
2
|
+
|
|
3
|
+
Use this guide when a platform-specific problem needs an event trace, such as
|
|
4
|
+
IME composition, clipboard handling, terminal rendering, or a window lifecycle
|
|
5
|
+
problem.
|
|
6
|
+
|
|
7
|
+
## Start From Current Source
|
|
8
|
+
|
|
9
|
+
Close every existing fpasoterm window, then force a local debug-binary rebuild.
|
|
10
|
+
This avoids testing an older packaged or cached binary.
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
mise exec node -- ./bin/fpasoterm --dev --foreground --debug-keys --console-diagnostics \
|
|
14
|
+
2>&1 | tee ~/temp/fpasoterm-debug.log
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
`--dev` rebuilds the local debug binary from the current source. `--foreground`
|
|
18
|
+
keeps the launcher attached to the console. `--debug-keys` enables renderer key
|
|
19
|
+
and composition diagnostics, and `--console-diagnostics` mirrors them to stderr.
|
|
20
|
+
|
|
21
|
+
For a normal attached launch without forcing a rebuild:
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
fpasoterm --foreground --debug-keys --console-diagnostics
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The persistent debug log is
|
|
28
|
+
`~/.config/fpasoterm/User/logs/fpasoterm-debug.log` unless the platform uses a
|
|
29
|
+
different configured user directory.
|
|
30
|
+
|
|
31
|
+
## IME Composition Trace
|
|
32
|
+
|
|
33
|
+
Reproduce the issue with at least two conversions. For example, convert and
|
|
34
|
+
confirm `日本語は`, then convert and confirm another phrase or enter punctuation.
|
|
35
|
+
After closing the app, extract only the IME and PTY-input lines:
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
grep -E 'renderer ime (compositionstart|compositionupdate|compositionend|beforeinput|input|keydown|cleared)|renderer terminal input' \
|
|
39
|
+
~/temp/fpasoterm-debug.log
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Expected behavior is that each `renderer terminal input` payload contains the
|
|
43
|
+
newly committed text only. When investigating ChromeOS, compare the helper
|
|
44
|
+
textarea `value=` at `compositionstart` with the following
|
|
45
|
+
`compositionupdate`: a stale prior value must not be inherited by the new
|
|
46
|
+
composition.
|
|
47
|
+
|
|
48
|
+
Share the smallest contiguous trace that includes one successful conversion
|
|
49
|
+
and one failing conversion. Do not edit or normalize the event payloads: their
|
|
50
|
+
ordering is the evidence needed to diagnose the platform webview and xterm.js
|
|
51
|
+
interaction.
|
|
52
|
+
|
|
53
|
+
## Rendering And Window Diagnostics
|
|
54
|
+
|
|
55
|
+
Use this command for WebKitGTK rendering symptoms on ChromeOS/Baguette:
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
fpasoterm --disable-dmabuf --foreground --console-diagnostics
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Use the titlebar menu's **Diagnostics > Font / Glyph Test** and
|
|
62
|
+
**Diagnostics > Capability Test** before reporting glyph, terminfo, truecolor,
|
|
63
|
+
OSC, bracketed-paste, or bell issues. See [Configuration and Diagnostics](diagnostics.en.md),
|
|
64
|
+
[Font and Glyph Diagnostics](font-diagnostics.en.md), and
|
|
65
|
+
[Terminal Capability Diagnostics](capability-diagnostics.en.md).
|
|
66
|
+
|
|
67
|
+
## Reporting Safely
|
|
68
|
+
|
|
69
|
+
Include the result of `fpasoterm --diagnostics` when useful, but review it
|
|
70
|
+
first. It can contain local paths, plugin names, shell output, and sync-folder
|
|
71
|
+
details. Never publish credentials, tokens, private commands, or terminal
|
|
72
|
+
output containing secrets.
|