mirror of
https://github.com/Eugeny/tabby.git
synced 2025-07-28 19:48:33 +00:00
Compare commits
102 Commits
v1.0.195
...
all-contri
Author | SHA1 | Date | |
---|---|---|---|
![]() |
1fe961e1f1 | ||
![]() |
41bd8a6012 | ||
![]() |
5bfa72573b | ||
![]() |
facd52ff4e | ||
![]() |
8826127913 | ||
![]() |
fe58e4705c | ||
![]() |
dcba109e07 | ||
![]() |
a7e6fa7b1d | ||
![]() |
8e29b4ac97 | ||
![]() |
9379f91895 | ||
![]() |
d2a54d0d96 | ||
![]() |
fac6ec572f | ||
![]() |
539ad0bddc | ||
![]() |
a494d9c800 | ||
![]() |
5075c836f9 | ||
![]() |
1112766ac0 | ||
![]() |
b97c334660 | ||
![]() |
46a1dd39f0 | ||
![]() |
9c68274d46 | ||
![]() |
89b3f3892e | ||
![]() |
37226f66e3 | ||
![]() |
38b8702373 | ||
![]() |
bd4b11813c | ||
![]() |
38302622b8 | ||
![]() |
312b365851 | ||
![]() |
2b5976f202 | ||
![]() |
1e6f6af5ed | ||
![]() |
901181f681 | ||
![]() |
fd9505c18f | ||
![]() |
d6d273b2fb | ||
![]() |
d98ab296c7 | ||
![]() |
fe6836d996 | ||
![]() |
d3adbd03d4 | ||
![]() |
30b51e45bc | ||
![]() |
bb6ed52291 | ||
![]() |
9978e0b86f | ||
![]() |
632c248984 | ||
![]() |
769070a630 | ||
![]() |
ee4c2718b5 | ||
![]() |
3794d41a45 | ||
![]() |
89fff28b11 | ||
![]() |
f0dadd639e | ||
![]() |
0e27af1203 | ||
![]() |
311f59f59b | ||
![]() |
ffa23bc2c9 | ||
![]() |
9409c6ffa4 | ||
![]() |
6f63db799e | ||
![]() |
aca7312141 | ||
![]() |
d81d942d7f | ||
![]() |
da0a4569de | ||
![]() |
30a916de6d | ||
![]() |
b9b98bd949 | ||
![]() |
ff66f050e0 | ||
![]() |
20479e9f27 | ||
![]() |
e48b2032ad | ||
![]() |
dc8ddfcd15 | ||
![]() |
b1acfe2519 | ||
![]() |
19d59a4cfb | ||
![]() |
f2a62413da | ||
![]() |
6498c4f923 | ||
![]() |
f423be1510 | ||
![]() |
8cb75e14a2 | ||
![]() |
6997c24dfa | ||
![]() |
94c5133104 | ||
![]() |
98f20cfb5d | ||
![]() |
1450e0436f | ||
![]() |
65756a62bc | ||
![]() |
84b0e13dc8 | ||
![]() |
b144331396 | ||
![]() |
b0973791a8 | ||
![]() |
268af8806c | ||
![]() |
c5d79135ab | ||
![]() |
f54908d603 | ||
![]() |
1fee5fbc58 | ||
![]() |
ada47d0cfa | ||
![]() |
bbca7a6a84 | ||
![]() |
d1b45812d5 | ||
![]() |
6a0c5f1e1f | ||
![]() |
3b8ca0d592 | ||
![]() |
73fae43027 | ||
![]() |
34188debd4 | ||
![]() |
9f050d8e0d | ||
![]() |
178e4a6527 | ||
![]() |
c0837febfe | ||
![]() |
dfc7a2cb94 | ||
![]() |
7da2a15bf7 | ||
![]() |
8bcb7d443a | ||
![]() |
ab593ac1f3 | ||
![]() |
9835466e68 | ||
![]() |
3e559832ec | ||
![]() |
01953ff064 | ||
![]() |
a22f9a8b43 | ||
![]() |
b710c1711f | ||
![]() |
4e6b1d2ed2 | ||
![]() |
2a8b7c3e79 | ||
![]() |
9a6e684f9e | ||
![]() |
1ebf29a977 | ||
![]() |
0cd856b51f | ||
![]() |
307b4ea266 | ||
![]() |
1f2fa5cce7 | ||
![]() |
344fd5d05a | ||
![]() |
6225bceab4 |
@@ -1130,6 +1130,60 @@
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "CryptoGnome",
|
||||
"name": "Crypto Gnome",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/33667144?v=4",
|
||||
"profile": "https://www.gnomegarden.io/",
|
||||
"contributions": [
|
||||
"financial"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "rbukovansky",
|
||||
"name": "Richard Bukovansky",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/1004491?v=4",
|
||||
"profile": "https://github.com/rbukovansky",
|
||||
"contributions": [
|
||||
"financial"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "pseudocc",
|
||||
"name": "catlas",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/85104110?v=4",
|
||||
"profile": "https://github.com/pseudocc",
|
||||
"contributions": [
|
||||
"financial"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Kapocsi",
|
||||
"name": "Thomas Kapocsi",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/84490604?v=4",
|
||||
"profile": "http://kapocsi.ca",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "dylhack",
|
||||
"name": "Dylan Hackworth",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/27179786?v=4",
|
||||
"profile": "https://dylhack.dev/",
|
||||
"contributions": [
|
||||
"financial"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "echo304",
|
||||
"name": "Sangboak Lee",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/16456651?v=4",
|
||||
"profile": "https://github.com/echo304",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -127,7 +127,7 @@ jobs:
|
||||
path: artifact-zip
|
||||
|
||||
Linux-Build:
|
||||
runs-on: ubuntu-18.04 # build against an older glibc for compatibility
|
||||
runs-on: ubuntu-20.04
|
||||
needs: Lint
|
||||
strategy:
|
||||
matrix:
|
||||
|
@@ -42,13 +42,13 @@ yarn start
|
||||
To build an installer, first complete a "normal" build as described above and then run:
|
||||
|
||||
```
|
||||
node scripts/prepackage-plugins.js
|
||||
node scripts/prepackage-plugins.mjs
|
||||
|
||||
node scripts/build-windows.js
|
||||
node scripts/build-windows.mjs
|
||||
# or
|
||||
node scripts/build-linux.js
|
||||
node scripts/build-linux.mjs
|
||||
# or
|
||||
node scripts/build-macos.js
|
||||
node scripts/build-macos.mjs
|
||||
```
|
||||
|
||||
The artifacts will be produced in the `dist` folder.
|
||||
|
@@ -313,6 +313,14 @@ Dank geht an diese wunderbaren Menschen ([emoji key](https://allcontributors.org
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -315,6 +315,14 @@ Gracias a estas maravillosas personas ([emoji key](https://allcontributors.org/d
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -312,6 +312,14 @@ Terima kasih kepada mereka yang telah membantu ([emoji key](https://allcontribut
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -308,6 +308,14 @@ Grazie a queste persone meravigliose ([emoji key](https://allcontributors.org/do
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -11,17 +11,24 @@
|
||||
</a>
|
||||
</p>
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
> 👋 リモート環境の管理に困ってませんか? [WarpgateというSSH/HTTP/MySQL向けの便利な踏み台サーバー](https://github.com/warp-tech/warpgate)も作ってます。Tabbyとも相性ばっちりなので良かったらお試しください。
|
||||
|
||||
|
||||
----
|
||||
|
||||
### ダウンロード:
|
||||
|
||||
* [Latest release](https://github.com/Eugeny/tabby/releases/latest)
|
||||
* [Repositories](https://packagecloud.io/eugeny/tabby): [Debian/Ubuntu-based](https://packagecloud.io/eugeny/tabby/install#bash-deb), [RPM-based](https://packagecloud.io/eugeny/tabby/install#bash-rpm)
|
||||
* [Latest nightly build](https://nightly.link/Eugeny/tabby/workflows/build/master)
|
||||
* [最新のリリース](https://github.com/Eugeny/tabby/releases/latest)
|
||||
* [リポジトリ](https://packagecloud.io/eugeny/tabby): [Debian/Ubuntu向け](https://packagecloud.io/eugeny/tabby/install#bash-deb), [RPM向け](https://packagecloud.io/eugeny/tabby/install#bash-rpm)
|
||||
* [最新の開発ビルド版](https://nightly.link/Eugeny/tabby/workflows/build/master)
|
||||
|
||||
<br/>
|
||||
<p align="center">
|
||||
このREADMEは次の言語にも対応: <a href="./README.md">:gb: English</a> · <a href="./README.es-ES.md">:es: Spanish</a> · <a href="./README.ru-RU.md">:ru: Русский</a> · <a href="./README.ko-KR.md">:kr: 한국어</a> · <a href="./README.zh-CN.md">:cn: 简体中文</a> · <a href="./README.it-IT.md">:it: Italiano</a> · <a href="./README.de-DE.md">:de: Deutsch</a> · <a href="./README.id-ID.md">:id: Bahasa Indonesia</a> · <a href="./README.pt-BR.md">:br: Português</a>
|
||||
このREADMEは次の言語でもご覧いただけます: <a href="./README.md">:gb: English</a> · <a href="./README.es-ES.md">:es: Spanish</a> · <a href="./README.ru-RU.md">:ru: Русский</a> · <a href="./README.ko-KR.md">:kr: 한국어</a> · <a href="./README.zh-CN.md">:cn: 简体中文</a> · <a href="./README.it-IT.md">:it: Italiano</a> · <a href="./README.de-DE.md">:de: Deutsch</a> · <a href="./README.id-ID.md">:id: Bahasa Indonesia</a> · <a href="./README.pt-BR.md">:br: Português</a>
|
||||
</p>
|
||||
|
||||
----
|
||||
@@ -40,7 +47,7 @@
|
||||
* 大量の出力にも止まることはありません
|
||||
* タブキーによる補完機能にも対応したWindows上での快適なシェル (Clink使用)
|
||||
* SSHの機密性の高い情報と設定を保存する暗号化コンテナの搭載
|
||||
* SSH、SFTP、Telnetクライアントが[Webアプリ](https://tabby.sh/app)として利用可能 ([セルフホスティング](https://github.com/Eugeny/tabby-web)も可能)
|
||||
* SSH、SFTP、Telnetクライアントが[Webアプリ](https://tabby.sh/app)としても利用できます ([セルフホスティング](https://github.com/Eugeny/tabby-web)も可能)
|
||||
|
||||
# コンテンツ <!-- omit in toc -->
|
||||
|
||||
@@ -87,7 +94,7 @@
|
||||
* SSH2クライアントと接続マネージャー
|
||||
* X11とポートフォワーディング
|
||||
* 自動ジャンプサーバー管理
|
||||
* エージェント転送(PageantとWindows標準OpenSSHエージェントを含む)
|
||||
* エージェント転送(PageantとWindows標準OpenSSHエージェントを含む)
|
||||
* ログインスクリプト
|
||||
|
||||
<a name="serial"></a>
|
||||
@@ -104,7 +111,7 @@
|
||||
|
||||
# ポータブル機能
|
||||
|
||||
Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォルダを作成すれば、ポータブルアプリケーションとして実行することができます。
|
||||
Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォルダを作成すれば、ポータブルアプリとして実行することができます。
|
||||
|
||||
<a name="plugins"></a>
|
||||
|
||||
@@ -116,10 +123,10 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル
|
||||
* [title-control](https://github.com/kbjr/terminus-title-control) - タブ名の前後に文字を入れたり指定した文字の削除をすることができます
|
||||
* [quick-cmds](https://github.com/Domain/terminus-quick-cmds) - 一つもしくは複数のタブに手軽にコマンド送信することができます
|
||||
* [save-output](https://github.com/Eugeny/tabby-save-output) - ターミナルの出力をファイルに保存することができます
|
||||
* [sync-config](https://github.com/starxg/terminus-sync-config) - GistやGiteeに設定ファイルを同期することができます
|
||||
* [clippy](https://github.com/Eugeny/tabby-clippy) - いつもあなたを悩ますプラグインの作例
|
||||
* [sync-config](https://github.com/starxg/terminus-sync-config) - GistやGiteeで設定ファイルを同期することができます
|
||||
* [clippy](https://github.com/Eugeny/tabby-clippy) - プラグインの作例として、いつも厄介なあいつが出てくるプラグイン
|
||||
* [workspace-manager](https://github.com/composer404/tabby-workspace-manager) - 指定された設定からカスタマイズされたワークスペースを作成することができます
|
||||
* [search-in-browser](https://github.com/composer404/tabby-search-in-browser) - Tabby内の端末で選択したテキストを標準の既定ブラウザで開くことができます。
|
||||
* [search-in-browser](https://github.com/composer404/tabby-search-in-browser) - Tabby内の端末で選択したテキストを既定ブラウザで開くことができます。
|
||||
|
||||
<a name="themes"></a>
|
||||
|
||||
@@ -137,17 +144,21 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル
|
||||
|
||||
[**packagecloud**](https://packagecloud.io)は、Debian/RPMリポジトリのホスティングを無償で提供しています
|
||||
|
||||
[](https://keygen.sh/?via=eugene)
|
||||
|
||||
[**keygen**](https://keygen.sh/?via=eugene)は、自動リリース機能および自動更新機能のホスティングを無償で提供しています
|
||||
|
||||
<a name="contributing"></a>
|
||||
# コントリビュート
|
||||
|
||||
プルリクエストやプラグインは大歓迎です!
|
||||
|
||||
プロジェクトの構成や、ごく簡単なプラグイン開発のチュートリアルについては、[HACKING.md](https://github.com/Eugeny/tabby/blob/master/HACKING.md)及び、[API docs](https://docs.tabby.sh/)を参照してください。
|
||||
プロジェクトの構成や、非常に簡単なプラグイン開発のチュートリアルについては、[HACKING.md](https://github.com/Eugeny/tabby/blob/master/HACKING.md)および、[API docs](https://docs.tabby.sh/)を参照してください。
|
||||
|
||||
---
|
||||
<a name="contributors"></a>
|
||||
|
||||
この素晴らしい人たち([emoji key](https://allcontributors.org/docs/en/emoji-key))に感謝します:
|
||||
以下の素晴らしい方々([emoji key](https://allcontributors.org/docs/en/emoji-key))に感謝いたします:
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
@@ -312,6 +323,14 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -321,4 +340,4 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
このプロジェクトは[all-contributors](https://github.com/all-contributors/all-contributors)の仕様に準拠しています。どのような形の貢献でも歓迎します!
|
||||
このプロジェクトは[all-contributors](https://github.com/all-contributors/all-contributors)の仕様に準拠しています。どのような形の貢献でも歓迎いたします!
|
||||
|
@@ -302,6 +302,14 @@ Pull requests and plugins are welcome!
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -322,6 +322,14 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -316,6 +316,14 @@ Obrigado vai para essas pessoas maravilhosas ([emoji key](https://allcontributor
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -308,6 +308,14 @@ Pull-запросы и плагины приветствуются!
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -307,6 +307,14 @@
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -125,7 +125,11 @@ export class Window {
|
||||
})
|
||||
|
||||
this.window.on('blur', () => {
|
||||
if ((this.configStore.appearance?.dock ?? 'off') !== 'off' && this.configStore.appearance?.dockHideOnBlur) {
|
||||
if (
|
||||
(this.configStore.appearance?.dock ?? 'off') !== 'off' &&
|
||||
this.configStore.appearance?.dockHideOnBlur &&
|
||||
!BrowserWindow.getFocusedWindow()
|
||||
) {
|
||||
this.hide()
|
||||
}
|
||||
})
|
||||
|
@@ -41,7 +41,7 @@
|
||||
"serialport": "10.5.0",
|
||||
"serialport-binding-webserialapi": "^1.0.3",
|
||||
"windows-native-registry": "^3.2.1",
|
||||
"windows-process-tree": "^0.3.4"
|
||||
"windows-process-tree": "^0.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ngx-translate/core": "^14.0.0",
|
||||
|
@@ -4,4 +4,6 @@ export const PLUGIN_BLACKLIST = [
|
||||
'terminus-clickable-links', // now bundled with Tabby
|
||||
'tabby-clickable-links', // now bundled with Tabby
|
||||
'terminus-clickable-ips', // broken, functionality now bundled with Tabby
|
||||
'terminus-elastic-quick-commands', // broken and abandoned, fork of quick-commands
|
||||
'terminus-elastic-quick-cmds', // broken and abandoned, fork of quick-commands
|
||||
]
|
||||
|
@@ -27,6 +27,8 @@ const cachedBuiltinModules = {
|
||||
'@angular/compiler': require('@angular/compiler'),
|
||||
'@angular/core': require('@angular/core'),
|
||||
'@angular/forms': require('@angular/forms'),
|
||||
'@angular/localize': require('@angular/localize'),
|
||||
'@angular/localize/init': require('@angular/localize/init'),
|
||||
'@angular/platform-browser': require('@angular/platform-browser'),
|
||||
'@angular/platform-browser/animations': require('@angular/platform-browser/animations'),
|
||||
'@angular/platform-browser-dynamic': require('@angular/platform-browser-dynamic'),
|
||||
|
@@ -2257,7 +2257,7 @@ mz@^2.7.0:
|
||||
object-assign "^4.0.1"
|
||||
thenify-all "^1.0.0"
|
||||
|
||||
nan@^2.13.2, nan@^2.16.0, "nan@github:jkleinsc/nan#remove_accessor_signature":
|
||||
nan@^2.16.0, nan@^2.17.0, "nan@github:jkleinsc/nan#remove_accessor_signature":
|
||||
version "2.16.0"
|
||||
resolved "https://codeload.github.com/jkleinsc/nan/tar.gz/6a2f95a6a2209d8aa7542fb18099fd808a802059"
|
||||
|
||||
@@ -3939,12 +3939,12 @@ windows-native-registry@^3.2.1:
|
||||
dependencies:
|
||||
node-addon-api "^3.1.0"
|
||||
|
||||
windows-process-tree@^0.3.4:
|
||||
version "0.3.4"
|
||||
resolved "https://registry.yarnpkg.com/windows-process-tree/-/windows-process-tree-0.3.4.tgz#6bc4b8010129c30ff95bcd333b9f94744dd3c4fb"
|
||||
integrity sha512-rtSX73i9OnkDxSdBP9c1YBunEwheZdO/hjRwNk9uSoWqO92x0zDRGfIIK0MtUn8gZZD+2kPEVpj5MmfNl7JpJA==
|
||||
windows-process-tree@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/windows-process-tree/-/windows-process-tree-0.4.0.tgz#31ac49c5da557e628ce7e37a5800972173d3349a"
|
||||
integrity sha512-9LunDnc1WwuhyLeTAXMFX8wbActGJtDCBaiapQXFYk/nO4W4X9YxOKV5g/lQL3XX69QYxveDbjVVrdnTt1qqCQ==
|
||||
dependencies:
|
||||
nan "^2.13.2"
|
||||
nan "^2.17.0"
|
||||
|
||||
worker-farm@^1.6.0, worker-farm@^1.7.0:
|
||||
version "1.7.0"
|
||||
|
448
locale/af-ZA.po
448
locale/af-ZA.po
File diff suppressed because it is too large
Load Diff
223
locale/app.pot
223
locale/app.pot
@@ -2,7 +2,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:112
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
msgstr ""
|
||||
|
||||
@@ -31,7 +31,7 @@ msgstr ""
|
||||
msgid "Accessibility"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:20
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:27
|
||||
msgid "Acrylic background"
|
||||
msgstr ""
|
||||
|
||||
@@ -116,7 +116,7 @@ msgstr ""
|
||||
msgid "Ask a question"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:20
|
||||
msgid "Ask before closing the browser tab"
|
||||
msgstr ""
|
||||
|
||||
@@ -158,12 +158,12 @@ msgstr ""
|
||||
msgid "Available"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:28
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:35
|
||||
msgid "Background type"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:14
|
||||
#: tabby-serial/src/components/serialTab.component.ts:112
|
||||
#: tabby-serial/src/components/serialTab.component.ts:111
|
||||
#: tabby-serial/src/profiles.ts:86
|
||||
msgid "Baud rate"
|
||||
msgstr ""
|
||||
@@ -180,7 +180,7 @@ msgstr ""
|
||||
msgid "Blue"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:32
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:39
|
||||
msgid "Blur"
|
||||
msgstr ""
|
||||
|
||||
@@ -188,8 +188,8 @@ msgstr ""
|
||||
msgid "Bold font weight"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:125
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:73
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:132
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:80
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
|
||||
@@ -214,12 +214,12 @@ msgstr ""
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sftpDeleteModal.component.html:7
|
||||
#: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:32
|
||||
#: tabby-electron/src/services/updater.service.ts:134
|
||||
#: tabby-local/src/components/terminalTab.component.ts:117
|
||||
#: tabby-local/src/components/terminalTab.component.ts:116
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:117
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:79
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:99
|
||||
#: tabby-ssh/src/sftpContextMenu.ts:40
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:480
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:484
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
@@ -294,7 +294,7 @@ msgstr ""
|
||||
msgid "Close tabs to the right"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:175
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:182
|
||||
msgid "Close the window after closing the last tab"
|
||||
msgstr ""
|
||||
|
||||
@@ -327,7 +327,7 @@ msgstr ""
|
||||
msgid "Commands"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-core/src/theme.ts:20
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
|
||||
@@ -339,8 +339,8 @@ msgstr ""
|
||||
msgid "Config downloaded"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:109
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:114
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:115
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:120
|
||||
msgid "Config file"
|
||||
msgstr ""
|
||||
|
||||
@@ -361,7 +361,7 @@ msgstr ""
|
||||
msgid "Connect through a proxy server"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-core/src/index.ts:212
|
||||
#: tabby-core/src/index.ts:214
|
||||
#: tabby-core/src/services/profiles.service.ts:178
|
||||
msgid "Connect to \"%s\"..."
|
||||
msgstr ""
|
||||
@@ -371,7 +371,7 @@ msgid "Connect to a different host first and use it as a proxy"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sftpPanel.component.html:19
|
||||
#: tabby-serial/src/components/serialTab.component.ts:66
|
||||
#: tabby-serial/src/components/serialTab.component.ts:65
|
||||
#: tabby-ssh/src/components/sshTab.component.ts:143
|
||||
#: tabby-telnet/src/components/telnetTab.component.ts:72
|
||||
msgid "Connecting"
|
||||
@@ -393,10 +393,14 @@ msgstr ""
|
||||
msgid "Context menu"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:225
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:233
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:549
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:770
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:553
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:775
|
||||
#: tabby-terminal/src/tabContextMenu.ts:30
|
||||
msgid "Copied"
|
||||
msgstr ""
|
||||
@@ -439,7 +443,7 @@ msgstr ""
|
||||
msgid "Create directory"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:83
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:90
|
||||
msgid "Current"
|
||||
msgstr ""
|
||||
|
||||
@@ -491,7 +495,7 @@ msgstr ""
|
||||
msgid "Default profile settings"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:118
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:124
|
||||
msgid "Defaults"
|
||||
msgstr ""
|
||||
|
||||
@@ -572,11 +576,11 @@ msgstr ""
|
||||
msgid "Disable dynamic tab title"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:218
|
||||
msgid "Disable fluent background while dragging"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:197
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:204
|
||||
msgid "Disable GPU acceleration"
|
||||
msgstr ""
|
||||
|
||||
@@ -599,7 +603,7 @@ msgstr ""
|
||||
msgid "Display images via Sixel escape sequences"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:78
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:85
|
||||
msgid "Display on"
|
||||
msgstr ""
|
||||
|
||||
@@ -617,23 +621,23 @@ msgstr ""
|
||||
msgid "Do not remember"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:90
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:97
|
||||
msgid "Dock always on top"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:60
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:67
|
||||
msgid "Dock the terminal"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:97
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:104
|
||||
msgid "Docked terminal size"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:104
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:111
|
||||
msgid "Docked terminal space"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:57
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:64
|
||||
msgid "Docking"
|
||||
msgstr ""
|
||||
|
||||
@@ -657,7 +661,7 @@ msgstr ""
|
||||
msgid "Duplicate"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/tabContextMenu.ts:123
|
||||
#: tabby-local/src/tabContextMenu.ts:122
|
||||
msgid "Duplicate as administrator"
|
||||
msgstr ""
|
||||
|
||||
@@ -691,7 +695,7 @@ msgstr ""
|
||||
msgid "Enable automatic installation of updates when they become available."
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:204
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
|
||||
msgid "Enable fluent background option"
|
||||
msgstr ""
|
||||
|
||||
@@ -740,7 +744,7 @@ msgstr ""
|
||||
msgid "Example:"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:205
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212
|
||||
msgid "Experimental Windows 10 background style known to cause issues"
|
||||
msgstr ""
|
||||
|
||||
@@ -764,11 +768,11 @@ msgstr ""
|
||||
msgid "Filter"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:140
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:147
|
||||
msgid "Fixed"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:219
|
||||
msgid "Fluent background sometimes causes drag lag"
|
||||
msgstr ""
|
||||
|
||||
@@ -788,7 +792,7 @@ msgstr ""
|
||||
msgid "Focus all tabs at once (broadcast)"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:189
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:196
|
||||
msgid "Focus follows mouse"
|
||||
msgstr ""
|
||||
|
||||
@@ -828,7 +832,7 @@ msgstr ""
|
||||
msgid "Focus the pane on the right"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-core/src/theme.ts:42
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
|
||||
@@ -836,7 +840,7 @@ msgstr ""
|
||||
msgid "Font"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:183
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:190
|
||||
msgid "For keyboard shortcuts"
|
||||
msgstr ""
|
||||
|
||||
@@ -880,7 +884,7 @@ msgstr ""
|
||||
msgid "Frontend"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:54
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:61
|
||||
msgid "Full"
|
||||
msgstr ""
|
||||
|
||||
@@ -902,7 +906,7 @@ msgstr ""
|
||||
msgid "Get it from the Tabby Web settings window"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:22
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:29
|
||||
msgid "Gives the window a blurred transparent background"
|
||||
msgstr ""
|
||||
|
||||
@@ -918,7 +922,7 @@ msgstr ""
|
||||
msgid "Group"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:194
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:201
|
||||
msgid "Hacks"
|
||||
msgstr ""
|
||||
|
||||
@@ -935,23 +939,23 @@ msgstr ""
|
||||
msgid "Hexadecimal"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:169
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:176
|
||||
msgid "Hide tab close button"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:151
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:158
|
||||
msgid "Hide tab index"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:163
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:170
|
||||
msgid "Hide tab options button"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:111
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:118
|
||||
msgid "Hide window on focus loss"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:112
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:119
|
||||
msgid "Hides the docked terminal when you click away."
|
||||
msgstr ""
|
||||
|
||||
@@ -997,7 +1001,7 @@ msgstr ""
|
||||
msgid "Icon"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:138
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:145
|
||||
msgid "id.tab-width.dynamic"
|
||||
msgstr ""
|
||||
|
||||
@@ -1045,7 +1049,7 @@ msgstr ""
|
||||
msgid "Interactive"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:124
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:130
|
||||
msgid "Invalid syntax"
|
||||
msgstr ""
|
||||
|
||||
@@ -1075,7 +1079,7 @@ msgstr ""
|
||||
msgid "Keep Alive Interval (Milliseconds)"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:91
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:98
|
||||
msgid "Keep docked terminal always on top"
|
||||
msgstr ""
|
||||
|
||||
@@ -1095,7 +1099,7 @@ msgstr ""
|
||||
msgid "Keyboard-interactive auth"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:116
|
||||
#: tabby-local/src/components/terminalTab.component.ts:115
|
||||
msgid "Kill"
|
||||
msgstr ""
|
||||
|
||||
@@ -1121,8 +1125,8 @@ msgstr ""
|
||||
msgid "Learn how to allow Tabby to detect remote shell's working directory."
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:127
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:69
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:134
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:76
|
||||
#: tabby-core/src/tabContextMenu.ts:80
|
||||
msgid "Left"
|
||||
msgstr ""
|
||||
@@ -1186,6 +1190,7 @@ msgstr ""
|
||||
msgid "Maximize the active pane"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:93
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:70
|
||||
msgid "Minimum contrast ratio"
|
||||
msgstr ""
|
||||
@@ -1210,7 +1215,7 @@ msgstr ""
|
||||
msgid "Move to \"Ungrouped\""
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:190
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:197
|
||||
msgid "Moving the mouse over an inactive pane will cause it to activate"
|
||||
msgstr ""
|
||||
|
||||
@@ -1227,11 +1232,11 @@ msgstr ""
|
||||
msgid "Name for the new directory"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:50
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:57
|
||||
msgid "Native"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/tabContextMenu.ts:104
|
||||
#: tabby-local/src/tabContextMenu.ts:103
|
||||
msgid "New admin tab"
|
||||
msgstr ""
|
||||
|
||||
@@ -1252,7 +1257,7 @@ msgstr ""
|
||||
msgid "New profile"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/tabContextMenu.ts:31
|
||||
#: tabby-local/src/tabContextMenu.ts:30
|
||||
msgid "New profile name"
|
||||
msgstr ""
|
||||
|
||||
@@ -1265,7 +1270,7 @@ msgid "New tab: {profile}"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/buttonProvider.ts:20
|
||||
#: tabby-local/src/tabContextMenu.ts:78
|
||||
#: tabby-local/src/tabContextMenu.ts:77
|
||||
msgid "New terminal"
|
||||
msgstr ""
|
||||
|
||||
@@ -1273,11 +1278,11 @@ msgstr ""
|
||||
msgid "New window"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/services/dockMenu.service.ts:62
|
||||
#: tabby-electron/src/services/dockMenu.service.ts:62
|
||||
msgid "New Window"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/tabContextMenu.ts:88
|
||||
#: tabby-local/src/tabContextMenu.ts:87
|
||||
msgid "New with profile"
|
||||
msgstr ""
|
||||
|
||||
@@ -1323,7 +1328,7 @@ msgstr ""
|
||||
msgid "Number of lines kept in the buffer"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:65
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:72
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:137
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:60
|
||||
msgid "Off"
|
||||
@@ -1337,7 +1342,7 @@ msgstr ""
|
||||
msgid "On GitHub Discussions"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:39
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:46
|
||||
msgid "Opacity"
|
||||
msgstr ""
|
||||
|
||||
@@ -1370,11 +1375,11 @@ msgstr ""
|
||||
msgid "Orange"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/shells/macDefault.ts:25
|
||||
#: tabby-electron/src/shells/macDefault.ts:25
|
||||
msgid "OS default"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/shells/winDefault.ts:43
|
||||
#: tabby-electron/src/shells/winDefault.ts:43
|
||||
msgid "OS default ({name})"
|
||||
msgstr ""
|
||||
|
||||
@@ -1414,14 +1419,18 @@ msgstr ""
|
||||
msgid "Overwrite the local config and start syncing?"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:182
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:189
|
||||
msgid "Pane resize step"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:179
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:186
|
||||
msgid "Panes"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
msgstr ""
|
||||
@@ -1440,7 +1449,7 @@ msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:62
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:479
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:483
|
||||
#: tabby-terminal/src/tabContextMenu.ts:35
|
||||
msgid "Paste"
|
||||
msgstr ""
|
||||
@@ -1453,7 +1462,7 @@ msgstr ""
|
||||
msgid "Paste if no selection, else copy"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:486
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:490
|
||||
msgid "Paste multiple lines?"
|
||||
msgstr ""
|
||||
|
||||
@@ -1482,7 +1491,7 @@ msgstr ""
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-serial/src/components/serialTab.component.ts:71
|
||||
#: tabby-serial/src/components/serialTab.component.ts:70
|
||||
msgid "Port opened"
|
||||
msgstr ""
|
||||
|
||||
@@ -1491,7 +1500,7 @@ msgstr ""
|
||||
msgid "Ports"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-serial/src/components/serialTab.component.ts:86
|
||||
#: tabby-serial/src/components/serialTab.component.ts:85
|
||||
#: tabby-ssh/src/components/sshTab.component.ts:172
|
||||
#: tabby-telnet/src/components/telnetTab.component.ts:53
|
||||
msgid "Press any key to reconnect"
|
||||
@@ -1501,7 +1510,7 @@ msgstr ""
|
||||
msgid "Press the key now"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:21
|
||||
msgid "Prevents accidental closing"
|
||||
msgstr ""
|
||||
|
||||
@@ -1527,7 +1536,7 @@ msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:2
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:4
|
||||
#: tabby-local/src/services/dockMenu.service.ts:40
|
||||
#: tabby-electron/src/services/dockMenu.service.ts:40
|
||||
msgid "Profiles"
|
||||
msgstr ""
|
||||
|
||||
@@ -1552,7 +1561,7 @@ msgstr ""
|
||||
msgid "Puts all of Tabby's configuration into the vault"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-core/src/index.ts:211
|
||||
#: tabby-core/src/index.ts:213
|
||||
#: tabby-core/src/services/profiles.service.ts:177
|
||||
msgid "Quick connect"
|
||||
msgstr ""
|
||||
@@ -1572,7 +1581,7 @@ msgstr ""
|
||||
|
||||
#: tabby-core/src/services/profiles.service.ts:120
|
||||
#: tabby-core/src/services/profiles.service.ts:134
|
||||
#: tabby-local/src/services/dockMenu.service.ts:28
|
||||
#: tabby-electron/src/services/dockMenu.service.ts:28
|
||||
msgid "Recent"
|
||||
msgstr ""
|
||||
|
||||
@@ -1659,7 +1668,7 @@ msgstr ""
|
||||
msgid "Restart tab"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:134
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:140
|
||||
msgid "Restart the app to apply changes"
|
||||
msgstr ""
|
||||
|
||||
@@ -1671,8 +1680,8 @@ msgstr ""
|
||||
msgid "Reuse session for multiple tabs"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:129
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:71
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:136
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:78
|
||||
#: tabby-core/src/tabContextMenu.ts:78
|
||||
msgid "Right"
|
||||
msgstr ""
|
||||
@@ -1695,11 +1704,11 @@ msgstr ""
|
||||
msgid "Save a password in the keychain"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:123
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:129
|
||||
msgid "Save and apply"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/tabContextMenu.ts:28
|
||||
#: tabby-local/src/tabContextMenu.ts:27
|
||||
msgid "Save as profile"
|
||||
msgstr ""
|
||||
|
||||
@@ -1707,7 +1716,7 @@ msgstr ""
|
||||
msgid "Save layout as profile"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/tabContextMenu.ts:49
|
||||
#: tabby-local/src/tabContextMenu.ts:48
|
||||
msgid "Saved"
|
||||
msgstr ""
|
||||
|
||||
@@ -1781,7 +1790,7 @@ msgstr ""
|
||||
msgid "Select file storage"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-core/src/index.ts:223
|
||||
#: tabby-core/src/index.ts:225
|
||||
msgid "Select profile"
|
||||
msgstr ""
|
||||
|
||||
@@ -1845,7 +1854,7 @@ msgstr ""
|
||||
msgid "Shell"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:551
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:555
|
||||
msgid "Shell does not support current path detection"
|
||||
msgstr ""
|
||||
|
||||
@@ -1869,11 +1878,11 @@ msgstr ""
|
||||
msgid "Show command selector"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:126
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:132
|
||||
msgid "Show config file"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:125
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:131
|
||||
msgid "Show defaults"
|
||||
msgstr ""
|
||||
|
||||
@@ -1885,7 +1894,7 @@ msgstr ""
|
||||
msgid "Show pane labels (for rearranging)"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:157
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:164
|
||||
msgid "Show profile icon on tab"
|
||||
msgstr ""
|
||||
|
||||
@@ -1905,7 +1914,7 @@ msgstr ""
|
||||
msgid "Show Serial connections"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:145
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:152
|
||||
msgid "Show tabs in fullscreen mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -1929,8 +1938,8 @@ msgstr ""
|
||||
msgid "Slow feed"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:61
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:79
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:68
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:86
|
||||
msgid "Snaps the window to a side of the screen"
|
||||
msgstr ""
|
||||
|
||||
@@ -1956,6 +1965,10 @@ msgstr ""
|
||||
msgid "Source code"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
msgstr ""
|
||||
@@ -1998,7 +2011,7 @@ msgstr ""
|
||||
msgid "SSH password for {user}@{host}:{port}"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-core/src/theme.ts:8
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
|
||||
@@ -2093,15 +2106,15 @@ msgstr ""
|
||||
msgid "Tabby news and updates on Twitter"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:116
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:123
|
||||
msgid "Tabs"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:119
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:126
|
||||
msgid "Tabs location"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:134
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:141
|
||||
msgid "Tabs width"
|
||||
msgstr ""
|
||||
|
||||
@@ -2109,7 +2122,7 @@ msgstr ""
|
||||
msgid "Telnet session"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:200
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:204
|
||||
#: tabby-terminal/src/settings.ts:43
|
||||
msgid "Terminal"
|
||||
msgstr ""
|
||||
@@ -2146,11 +2159,11 @@ msgstr ""
|
||||
msgid "These apply to all profiles of a given type"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:52
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:59
|
||||
msgid "Thin"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:198
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:205
|
||||
msgid "Tick this if you're experiencing aliasing, ghosting or other visual issues"
|
||||
msgstr ""
|
||||
|
||||
@@ -2170,8 +2183,8 @@ msgstr ""
|
||||
msgid "Toggles the Tabby window visibility"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:123
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:67
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:130
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:74
|
||||
msgid "Top"
|
||||
msgstr ""
|
||||
|
||||
@@ -2241,8 +2254,8 @@ msgstr ""
|
||||
msgid "Use ConPTY"
|
||||
msgstr ""
|
||||
|
||||
#: tabby-local/src/shells/linuxDefault.ts:31
|
||||
#: tabby-local/src/shells/linuxDefault.ts:38
|
||||
#: tabby-electron/src/shells/linuxDefault.ts:31
|
||||
#: tabby-electron/src/shells/linuxDefault.ts:38
|
||||
msgid "User default"
|
||||
msgstr ""
|
||||
|
||||
@@ -2295,7 +2308,7 @@ msgstr ""
|
||||
msgid "Version: {version}"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:21
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:28
|
||||
msgid "Vibrancy"
|
||||
msgstr ""
|
||||
|
||||
@@ -2335,24 +2348,28 @@ msgstr ""
|
||||
msgid "When WinSCP is detected, you can launch an SCP session from the context menu."
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:46
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:53
|
||||
msgid "Whether a custom window or an OS native window should be used"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
msgid "Window"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:105
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:112
|
||||
msgid "Window dimension along the edge"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:98
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:105
|
||||
msgid "Window dimension away from the edge"
|
||||
msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:45
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:52
|
||||
msgid "Window frame"
|
||||
msgstr ""
|
||||
|
||||
|
448
locale/bg-BG.po
448
locale/bg-BG.po
File diff suppressed because it is too large
Load Diff
448
locale/da-DK.po
448
locale/da-DK.po
File diff suppressed because it is too large
Load Diff
448
locale/de-DE.po
448
locale/de-DE.po
File diff suppressed because it is too large
Load Diff
444
locale/en-GB.po
444
locale/en-GB.po
File diff suppressed because it is too large
Load Diff
448
locale/es-ES.po
448
locale/es-ES.po
File diff suppressed because it is too large
Load Diff
456
locale/fr-FR.po
456
locale/fr-FR.po
File diff suppressed because it is too large
Load Diff
448
locale/hr-HR.po
448
locale/hr-HR.po
File diff suppressed because it is too large
Load Diff
448
locale/id-ID.po
448
locale/id-ID.po
File diff suppressed because it is too large
Load Diff
448
locale/it-IT.po
448
locale/it-IT.po
File diff suppressed because it is too large
Load Diff
448
locale/ja-JP.po
448
locale/ja-JP.po
File diff suppressed because it is too large
Load Diff
450
locale/ko-KR.po
450
locale/ko-KR.po
File diff suppressed because it is too large
Load Diff
448
locale/pl-PL.po
448
locale/pl-PL.po
File diff suppressed because it is too large
Load Diff
466
locale/pt-BR.po
466
locale/pt-BR.po
File diff suppressed because it is too large
Load Diff
448
locale/pt-PT.po
448
locale/pt-PT.po
File diff suppressed because it is too large
Load Diff
462
locale/ru-RU.po
462
locale/ru-RU.po
File diff suppressed because it is too large
Load Diff
448
locale/sv-SE.po
448
locale/sv-SE.po
File diff suppressed because it is too large
Load Diff
448
locale/uk-UA.po
448
locale/uk-UA.po
File diff suppressed because it is too large
Load Diff
450
locale/zh-CN.po
450
locale/zh-CN.po
File diff suppressed because it is too large
Load Diff
450
locale/zh-TW.po
450
locale/zh-TW.po
File diff suppressed because it is too large
Load Diff
33
package.json
33
package.json
@@ -1,18 +1,19 @@
|
||||
{
|
||||
"devDependencies": {
|
||||
"@angular/animations": "^15.1.3",
|
||||
"@angular/cdk": "^15.1.3",
|
||||
"@angular/common": "^15.1.3",
|
||||
"@angular/compiler": "^15.1.3",
|
||||
"@angular/compiler-cli": "^15.1.3",
|
||||
"@angular/core": "^15.1.3",
|
||||
"@angular/forms": "^15.1.3",
|
||||
"@angular/platform-browser": "^15.1.3",
|
||||
"@angular/platform-browser-dynamic": "^15.1.3",
|
||||
"@angular/animations": "^15.2.6",
|
||||
"@angular/cdk": "^15.2.6",
|
||||
"@angular/common": "^15.2.6",
|
||||
"@angular/compiler": "^15.2.6",
|
||||
"@angular/compiler-cli": "^15.2.6",
|
||||
"@angular/core": "^15.2.6",
|
||||
"@angular/forms": "^15.2.6",
|
||||
"@angular/localize": "^15.2.9",
|
||||
"@angular/platform-browser": "^15.2.6",
|
||||
"@angular/platform-browser-dynamic": "^15.2.6",
|
||||
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
|
||||
"@fortawesome/fontawesome-free": "^6.2.0",
|
||||
"@ng-bootstrap/ng-bootstrap": "^14.0.1",
|
||||
"@ngtools/webpack": "^15.1.4",
|
||||
"@fortawesome/fontawesome-free": "^6.4.0",
|
||||
"@ng-bootstrap/ng-bootstrap": "^14.1.0",
|
||||
"@ngtools/webpack": "^15.2.5",
|
||||
"@popperjs/core": "^2.11.6",
|
||||
"@sentry/cli": "^1.74.3",
|
||||
"@sentry/electron": "^2.5.4",
|
||||
@@ -25,7 +26,7 @@
|
||||
"@types/node": "16.0.1",
|
||||
"@types/webpack-env": "^1.18.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
||||
"@typescript-eslint/parser": "^5.45.0",
|
||||
"@typescript-eslint/parser": "^5.54.1",
|
||||
"apply-loader": "2.0.0",
|
||||
"axios": "^0.27.2",
|
||||
"babel-loader": "^9.1.2",
|
||||
@@ -43,9 +44,9 @@
|
||||
"electron-installer-snap": "^5.1.0",
|
||||
"electron-notarize": "^1.2.2",
|
||||
"electron-rebuild": "^3.2.9",
|
||||
"eslint": "^8.29.0",
|
||||
"eslint": "^8.38.0",
|
||||
"eslint-import-resolver-typescript": "^3.5.2",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-import": "^2.27.5",
|
||||
"file-loader": "^6.2.0",
|
||||
"gettext-extractor": "^3.5.4",
|
||||
"graceful-fs": "^4.2.10",
|
||||
@@ -90,7 +91,7 @@
|
||||
"webpack-bundle-analyzer": "^4.7.0",
|
||||
"webpack-cli": "^5.0.1",
|
||||
"yaml-loader": "0.8.0",
|
||||
"zone.js": "^0.11.5"
|
||||
"zone.js": "^0.13.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"*/pug": "^3",
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tabby-community-color-schemes",
|
||||
"version": "1.0.189-nightly.2",
|
||||
"version": "1.0.197-nightly.1",
|
||||
"description": "Community color schemes for Tabby",
|
||||
"keywords": [
|
||||
"tabby-builtin-plugin"
|
||||
@@ -17,7 +17,7 @@
|
||||
"author": "Eugene Pankov",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@angular/core": "^9.1.9",
|
||||
"@angular/core": "^15",
|
||||
"tabby-core": "*",
|
||||
"tabby-terminal": "*"
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tabby-core",
|
||||
"version": "1.0.189-nightly.0",
|
||||
"version": "1.0.197-nightly.1",
|
||||
"description": "Tabby core",
|
||||
"keywords": [
|
||||
"tabby-builtin-plugin"
|
||||
@@ -12,6 +12,7 @@
|
||||
"watch": "webpack --progress --color --watch"
|
||||
},
|
||||
"files": [
|
||||
"dist",
|
||||
"typings"
|
||||
],
|
||||
"author": "Eugene Pankov",
|
||||
@@ -29,12 +30,12 @@
|
||||
"uuid": "^9.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/animations": "^9.1.9",
|
||||
"@angular/common": "^9.1.11",
|
||||
"@angular/core": "^9.1.9",
|
||||
"@angular/forms": "^9.1.11",
|
||||
"@angular/platform-browser": "^9.1.11",
|
||||
"@angular/platform-browser-dynamic": "^9.1.11",
|
||||
"rxjs": "^6.6.3"
|
||||
"@angular/animations": "^15",
|
||||
"@angular/common": "^15",
|
||||
"@angular/core": "^15",
|
||||
"@angular/forms": "^15",
|
||||
"@angular/platform-browser": "^15",
|
||||
"@angular/platform-browser-dynamic": "^15",
|
||||
"rxjs": "^7"
|
||||
}
|
||||
}
|
||||
|
@@ -14,6 +14,7 @@ export interface Profile {
|
||||
icon?: string
|
||||
color?: string
|
||||
disableDynamicTitle: boolean
|
||||
behaviorOnSessionEnd: 'auto'|'keep'|'reconnect'|'close'
|
||||
|
||||
weight: number
|
||||
isBuiltin: boolean
|
||||
|
@@ -27,7 +27,7 @@ export class CoreCommandProvider extends CommandProvider {
|
||||
async provide (): Promise<Command[]> {
|
||||
return [
|
||||
{
|
||||
id: 'profile-selector',
|
||||
id: 'core:profile-selector',
|
||||
locations: [CommandLocation.LeftToolbar, CommandLocation.StartPage],
|
||||
label: this.translate.instant('Profiles & connections'),
|
||||
icon: this.hostApp.platform === Platform.Web
|
||||
@@ -35,7 +35,8 @@ export class CoreCommandProvider extends CommandProvider {
|
||||
: require('./icons/profiles.svg'),
|
||||
run: async () => this.activate(),
|
||||
},
|
||||
...this.profilesService.getRecentProfiles().map(profile => ({
|
||||
...this.profilesService.getRecentProfiles().map((profile, index) => ({
|
||||
id: `core:recent-profile-${index}`,
|
||||
label: profile.name,
|
||||
locations: [CommandLocation.StartPage],
|
||||
icon: require('./icons/history.svg'),
|
||||
|
@@ -37,14 +37,12 @@ title-bar(
|
||||
|
||||
.btn-group.background
|
||||
.d-flex(
|
||||
*ngFor='let button of leftToolbarButtons',
|
||||
ngbDropdown
|
||||
*ngFor='let button of leftToolbarButtons'
|
||||
)
|
||||
button.btn.btn-secondary.btn-tab-bar(
|
||||
[title]='button.label',
|
||||
(click)='button.run && button.run()',
|
||||
[fastHtmlBind]='button.icon',
|
||||
ngbDropdownToggle,
|
||||
[fastHtmlBind]='button.icon'
|
||||
)
|
||||
|
||||
.d-flex(
|
||||
@@ -53,7 +51,7 @@ title-bar(
|
||||
#activeTransfersDropdown='ngbDropdown'
|
||||
)
|
||||
button.btn.btn-secondary.btn-tab-bar(
|
||||
*ngIf='activeTransfers.length > 0',
|
||||
[hidden]='activeTransfers.length == 0',
|
||||
title='File transfers',
|
||||
ngbDropdownToggle
|
||||
) !{require('../icons/transfers.svg')}
|
||||
@@ -67,14 +65,12 @@ title-bar(
|
||||
|
||||
.btn-group.background
|
||||
.d-flex(
|
||||
*ngFor='let button of rightToolbarButtons',
|
||||
ngbDropdown
|
||||
*ngFor='let button of rightToolbarButtons'
|
||||
)
|
||||
button.btn.btn-secondary.btn-tab-bar(
|
||||
[title]='button.label',
|
||||
(click)='button.run && button.run()',
|
||||
[fastHtmlBind]='button.icon',
|
||||
ngbDropdownToggle,
|
||||
[fastHtmlBind]='button.icon'
|
||||
)
|
||||
|
||||
button.btn.btn-secondary.btn-tab-bar.btn-update(
|
||||
|
@@ -5,7 +5,7 @@ import { BaseComponent } from './base.component'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'profile-icon',
|
||||
templateUrl:'./profileIcon.component.pug',
|
||||
templateUrl: './profileIcon.component.pug',
|
||||
styleUrls: ['./profileIcon.component.scss'],
|
||||
})
|
||||
export class ProfileIconComponent extends BaseComponent {
|
||||
|
@@ -3,7 +3,7 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
|
||||
|
||||
/** @hidden */
|
||||
@Component({
|
||||
templateUrl:'./promptModal.component.pug',
|
||||
templateUrl: './promptModal.component.pug',
|
||||
})
|
||||
export class PromptModalComponent {
|
||||
@Input() value: string
|
||||
|
@@ -5,7 +5,7 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'rename-tab-modal',
|
||||
templateUrl:'./renameTabModal.component.pug',
|
||||
templateUrl: './renameTabModal.component.pug',
|
||||
})
|
||||
export class RenameTabModalComponent {
|
||||
@Input() value: string
|
||||
|
@@ -3,7 +3,7 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
|
||||
|
||||
/** @hidden */
|
||||
@Component({
|
||||
templateUrl:'./safeModeModal.component.pug',
|
||||
templateUrl: './safeModeModal.component.pug',
|
||||
})
|
||||
export class SafeModeModalComponent {
|
||||
@Input() error: Error
|
||||
|
@@ -26,9 +26,9 @@
|
||||
*ngIf='option.description !== getOptionText(option)'
|
||||
) {{option.description}}
|
||||
.ms-auto
|
||||
.no-wrap.badge.text-bg-secondary.text-muted.ms-2(*ngIf='selectedIndex == i && canEditSelected()')
|
||||
span Backspace
|
||||
.no-wrap.badge.text-bg-secondary.ms-2(*ngIf='selectedIndex == i && canEditSelected()')
|
||||
span BACKSPACE
|
||||
i.fas.fa-pencil.ms-1
|
||||
.no-wrap.badge.text-bg-secondary.text-muted.ms-2(*ngIf='selectedIndex == i')
|
||||
span Enter
|
||||
.no-wrap.badge.text-bg-secondary.ms-2(*ngIf='selectedIndex == i')
|
||||
span ENTER
|
||||
i.fas.fa-arrow-right.ms-1
|
||||
|
@@ -7,7 +7,7 @@ import { SelectorOption } from '../api/selector'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'selector-modal',
|
||||
templateUrl:'./selectorModal.component.pug',
|
||||
templateUrl: './selectorModal.component.pug',
|
||||
styleUrls: ['./selectorModal.component.scss'],
|
||||
})
|
||||
export class SelectorModalComponent<T> {
|
||||
|
@@ -24,3 +24,7 @@
|
||||
border-radius: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
::ng-deep .no-animations split-tab > .child {
|
||||
transition: none;
|
||||
}
|
||||
|
@@ -787,7 +787,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
|
||||
}
|
||||
|
||||
get icon (): string|null {
|
||||
return this.getFocusedTab()?.icon ?? null
|
||||
return this.getFocusedTab()?.icon ?? this.getAllTabs()[0]?.icon ?? null
|
||||
}
|
||||
|
||||
set icon (icon: string|null) {
|
||||
@@ -797,7 +797,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
|
||||
}
|
||||
|
||||
get color (): string|null {
|
||||
return this.getFocusedTab()?.color ?? null
|
||||
return this.getFocusedTab()?.color ?? this.getAllTabs()[0]?.color ?? null
|
||||
}
|
||||
|
||||
set color (color: string|null) {
|
||||
|
@@ -7,7 +7,7 @@ import { Command, CommandLocation } from '../api/commands'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'start-page',
|
||||
templateUrl:'./startPage.component.pug',
|
||||
templateUrl: './startPage.component.pug',
|
||||
styleUrls: ['./startPage.component.scss'],
|
||||
})
|
||||
export class StartPageComponent {
|
||||
|
@@ -1,6 +1,7 @@
|
||||
.colorbar([style.background-color]='tab.color', *ngIf='tab.color != null')
|
||||
.progressbar([style.width]='progress + "%"', *ngIf='progress != null')
|
||||
.activity-indicator(*ngIf='tab.activity$|async')
|
||||
.current-tab-indicator
|
||||
|
||||
.index(*ngIf='!config.store.terminal.hideTabIndex && hostApp.platform === Platform.macOS', cdkDragHandle) {{index + 1}}
|
||||
.index(*ngIf='!config.store.terminal.hideTabIndex && hostApp.platform !== Platform.macOS') {{index + 1}}
|
||||
|
@@ -134,15 +134,29 @@ $tabs-height: 38px;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.activity-indicator, .current-tab-indicator {
|
||||
position: absolute;
|
||||
height: 2px;
|
||||
}
|
||||
|
||||
&.active .activity-indicator {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.activity-indicator {
|
||||
position: absolute;
|
||||
bottom: 4px;
|
||||
left: 10px;
|
||||
right: 10px;
|
||||
bottom: 4px;
|
||||
height: 2px;
|
||||
}
|
||||
|
||||
&.active .current-tab-indicator {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.current-tab-indicator {
|
||||
display: none;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
@@ -15,7 +15,7 @@ import { PlatformService } from '../api/platform'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'tab-header',
|
||||
templateUrl:'./tabHeader.component.pug',
|
||||
templateUrl: './tabHeader.component.pug',
|
||||
styleUrls: ['./tabHeader.component.scss'],
|
||||
})
|
||||
export class TabHeaderComponent extends BaseComponent {
|
||||
|
@@ -4,7 +4,7 @@ import { HostWindowService } from '../api'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'title-bar',
|
||||
templateUrl:'./titleBar.component.pug',
|
||||
templateUrl: './titleBar.component.pug',
|
||||
styleUrls: ['./titleBar.component.scss'],
|
||||
})
|
||||
export class TitleBarComponent {
|
||||
|
@@ -6,12 +6,7 @@
|
||||
.icon(*ngIf='!isDownload(transfer)') !{require('../icons/upload.svg')}
|
||||
.main
|
||||
label.no-wrap([title]='transfer.getName()') {{transfer.getName()}}
|
||||
.status(*ngIf='transfer.isComplete()')
|
||||
ngb-progressbar(type='success', [value]='100')
|
||||
.status(*ngIf='transfer.isCancelled()')
|
||||
ngb-progressbar(type='danger', [value]='100')
|
||||
.status(*ngIf='!transfer.isComplete() && !transfer.isCancelled()')
|
||||
ngb-progressbar(type='info', [value]='getProgress(transfer)')
|
||||
ngb-progressbar([type]='transfer.isComplete() ? "success" : transfer.isCancelled() ? "danger" : "info"', [value]='getProgress(transfer)')
|
||||
.metadata
|
||||
.size {{transfer.getSize()|filesize}}
|
||||
.speed(*ngIf='transfer.getSpeed()') {{transfer.getSpeed()|filesize}}/s
|
||||
|
@@ -5,7 +5,7 @@ import { FileDownload, FileTransfer, PlatformService } from '../api/platform'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'transfers-menu',
|
||||
templateUrl:'./transfersMenu.component.pug',
|
||||
templateUrl: './transfersMenu.component.pug',
|
||||
styleUrls: ['./transfersMenu.component.scss'],
|
||||
})
|
||||
export class TransfersMenuComponent {
|
||||
|
@@ -3,7 +3,7 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
|
||||
|
||||
/** @hidden */
|
||||
@Component({
|
||||
templateUrl:'./unlockVaultModal.component.pug',
|
||||
templateUrl: './unlockVaultModal.component.pug',
|
||||
})
|
||||
export class UnlockVaultModalComponent {
|
||||
passphrase: string
|
||||
|
@@ -8,7 +8,7 @@ import { LocaleService } from '../services/locale.service'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'welcome-page',
|
||||
templateUrl:'./welcomeTab.component.pug',
|
||||
templateUrl: './welcomeTab.component.pug',
|
||||
styleUrls: ['./welcomeTab.component.scss'],
|
||||
})
|
||||
export class WelcomeTabComponent extends BaseTabComponent {
|
||||
|
@@ -6,7 +6,7 @@ import { AppService } from '../services/app.service'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'window-controls',
|
||||
templateUrl:'./windowControls.component.pug',
|
||||
templateUrl: './windowControls.component.pug',
|
||||
styleUrls: ['./windowControls.component.scss'],
|
||||
})
|
||||
export class WindowControlsComponent {
|
||||
|
@@ -22,6 +22,7 @@ hotkeys:
|
||||
- 'Ctrl-Shift'
|
||||
duplicate-tab: []
|
||||
restart-tab: []
|
||||
reconnect-tab: []
|
||||
explode-tab:
|
||||
- 'Ctrl-Shift-.'
|
||||
combine-tabs:
|
||||
|
@@ -39,6 +39,7 @@ hotkeys:
|
||||
tab-10: []
|
||||
duplicate-tab: []
|
||||
restart-tab: []
|
||||
reconnect-tab: []
|
||||
explode-tab:
|
||||
- '⌘-Shift-.'
|
||||
combine-tabs:
|
||||
|
@@ -23,6 +23,7 @@ hotkeys:
|
||||
- 'Ctrl-Shift'
|
||||
duplicate-tab: []
|
||||
restart-tab: []
|
||||
reconnect-tab: []
|
||||
explode-tab:
|
||||
- 'Ctrl-Shift-.'
|
||||
combine-tabs:
|
||||
|
@@ -46,6 +46,8 @@ vault: null
|
||||
encrypted: false
|
||||
enableExperimentalFeatures: false
|
||||
pluginBlacklist: []
|
||||
commandBlacklist: []
|
||||
providerBlacklist: []
|
||||
hacks:
|
||||
disableGPU: false
|
||||
disableVibrancyWhileDragging: false
|
||||
|
@@ -19,6 +19,7 @@ export class CdkAutoDropGroup implements OnInit {
|
||||
) { }
|
||||
|
||||
ngOnInit (): void {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
CdkAutoDropGroup.groups[this.groupName] ??= new FakeDropGroup()
|
||||
CdkAutoDropGroup.groups[this.groupName]._items.add(this.cdkDropList)
|
||||
this.cdkDropList['_group'] = CdkAutoDropGroup.groups[this.groupName]
|
||||
|
@@ -5,9 +5,11 @@ import { FormsModule } from '@angular/forms'
|
||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
|
||||
import { NgxFilesizeModule } from 'ngx-filesize'
|
||||
import { DragDropModule } from '@angular/cdk/drag-drop'
|
||||
import { TranslateModule, TranslateCompiler, TranslateService } from '@ngx-translate/core'
|
||||
import { TranslateModule, TranslateCompiler, TranslateService, MissingTranslationHandler } from '@ngx-translate/core'
|
||||
import { TranslateMessageFormatCompiler, MESSAGE_FORMAT_CONFIG } from 'ngx-translate-messageformat-compiler'
|
||||
|
||||
import '@angular/localize/init'
|
||||
|
||||
import { AppRootComponent } from './components/appRoot.component'
|
||||
import { CheckboxComponent } from './components/checkbox.component'
|
||||
import { TabBodyComponent } from './components/tabBody.component'
|
||||
@@ -41,7 +43,7 @@ import { AppService } from './services/app.service'
|
||||
import { ConfigService } from './services/config.service'
|
||||
import { VaultFileProvider } from './services/vault.service'
|
||||
import { HotkeysService } from './services/hotkeys.service'
|
||||
import { LocaleService } from './services/locale.service'
|
||||
import { CustomMissingTranslationHandler, LocaleService } from './services/locale.service'
|
||||
import { CommandService } from './services/commands.service'
|
||||
|
||||
import { StandardTheme, StandardCompactTheme, PaperTheme, NewTheme } from './theme'
|
||||
@@ -99,6 +101,10 @@ const PROVIDERS = [
|
||||
provide: TranslateCompiler,
|
||||
useFactory: TranslateMessageFormatCompilerFactory,
|
||||
},
|
||||
missingTranslationHandler: {
|
||||
provide: MissingTranslationHandler,
|
||||
useClass: CustomMissingTranslationHandler,
|
||||
},
|
||||
}),
|
||||
],
|
||||
declarations: [
|
||||
@@ -189,7 +195,7 @@ export default class AppModule { // eslint-disable-line @typescript-eslint/no-ex
|
||||
}
|
||||
|
||||
if (hotkey === 'profile-selector') {
|
||||
commands.run('profile-selector', {})
|
||||
commands.run('core:profile-selector', {})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@@ -71,6 +71,7 @@ export class CommandService {
|
||||
}
|
||||
|
||||
return commands
|
||||
.filter(c => !this.config.store.commandBlacklist.includes(c.id))
|
||||
.sort((a, b) => (a.weight ?? 0) - (b.weight ?? 0))
|
||||
.map(command => {
|
||||
const run = command.run
|
||||
|
@@ -254,7 +254,9 @@ export class ConfigService {
|
||||
return services.filter(service => {
|
||||
for (const pluginName in this.servicesCache) {
|
||||
if (this.servicesCache[pluginName].includes(service.constructor)) {
|
||||
const id = `${pluginName}:${service.constructor.name}`
|
||||
return !this.store?.pluginBlacklist?.includes(pluginName)
|
||||
&& !this.store?.providerBlacklist?.includes(id)
|
||||
}
|
||||
}
|
||||
return true
|
||||
|
@@ -1,6 +1,7 @@
|
||||
import { Injectable } from '@angular/core'
|
||||
import { registerLocaleData } from '@angular/common'
|
||||
import { TranslateService } from '@ngx-translate/core'
|
||||
import { TranslateService, MissingTranslationHandler } from '@ngx-translate/core'
|
||||
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler'
|
||||
|
||||
import localeENUS from '@angular/common/locales/en'
|
||||
import localeENGB from '@angular/common/locales/en-GB'
|
||||
@@ -55,6 +56,19 @@ function flattenMessageFormatTranslation (po: any) {
|
||||
return translation
|
||||
}
|
||||
|
||||
export class CustomMissingTranslationHandler extends MissingTranslationHandler {
|
||||
compiler = new TranslateMessageFormatCompiler()
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||
handle (params: { key: string, translateService: TranslateService, interpolateParams?: Object }): any {
|
||||
const v = this.compiler.compile(params.key, params.translateService.currentLang)
|
||||
if (typeof v === 'string') {
|
||||
return v
|
||||
}
|
||||
return v(params.interpolateParams)
|
||||
}
|
||||
}
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class LocaleService {
|
||||
private logger: Logger
|
||||
|
@@ -24,6 +24,7 @@ export class ProfilesService {
|
||||
isBuiltin: false,
|
||||
isTemplate: false,
|
||||
terminalColorScheme: null,
|
||||
behaviorOnSessionEnd: 'auto',
|
||||
}
|
||||
|
||||
constructor (
|
||||
|
@@ -26,9 +26,9 @@ export class ThemesService {
|
||||
this.applyThemeVariables()
|
||||
config.changed$.subscribe(() => {
|
||||
this.applyCurrentTheme()
|
||||
this.applyThemeVariables()
|
||||
})
|
||||
})
|
||||
config.changed$.subscribe(() => this.applyThemeVariables())
|
||||
}
|
||||
|
||||
private applyThemeVariables () {
|
||||
@@ -62,9 +62,11 @@ export class ThemesService {
|
||||
// const backgroundMore =more(theme.background, 0.25).string()
|
||||
const accentIndex = 4
|
||||
const vars: Record<string, string> = {}
|
||||
const contrastPairs: string[][] = []
|
||||
|
||||
vars['--body-bg'] = background.string()
|
||||
if (this.findCurrentTheme().followsColorScheme) {
|
||||
vars['--bs-body-bg'] = background.string()
|
||||
vars['--bs-body-bg'] = theme.background
|
||||
vars['--bs-body-color'] = theme.foreground
|
||||
vars['--bs-black'] = theme.colors[0]
|
||||
vars['--bs-red'] = theme.colors[1]
|
||||
@@ -82,6 +84,8 @@ export class ThemesService {
|
||||
// vars['--bs-purple'] = theme.colors[13]
|
||||
// vars['--bs-cyan'] = theme.colors[14]
|
||||
|
||||
contrastPairs.push(['--bs-body-bg', '--bs-body-color'])
|
||||
|
||||
vars['--theme-fg-more-2'] = more(theme.foreground, 0.5).string()
|
||||
vars['--theme-fg-more'] = more(theme.foreground, 0.25).string()
|
||||
vars['--theme-fg'] = theme.foreground
|
||||
@@ -94,15 +98,21 @@ export class ThemesService {
|
||||
vars['--theme-bg-more'] = backgroundMore
|
||||
vars['--theme-bg-more-2'] = more(backgroundMore, 0.25).string()
|
||||
|
||||
contrastPairs.push(['--theme-bg', '--theme-fg'])
|
||||
contrastPairs.push(['--theme-bg-less', '--theme-fg-less'])
|
||||
contrastPairs.push(['--theme-bg-less-2', '--theme-fg-less-2'])
|
||||
contrastPairs.push(['--theme-bg-more', '--theme-fg-more'])
|
||||
contrastPairs.push(['--theme-bg-more-2', '--theme-fg-more-2'])
|
||||
|
||||
const themeColors = {
|
||||
primary: theme.colors[accentIndex],
|
||||
secondary: theme.colors[8],
|
||||
secondary: less(theme.background, 0.5).string(),
|
||||
tertiary: theme.colors[8],
|
||||
warning: theme.colors[3],
|
||||
danger: theme.colors[1],
|
||||
success: theme.colors[2],
|
||||
info: theme.colors[4],
|
||||
dark: more(theme.background, 0.5).string(),
|
||||
dark: more(theme.background, 0.75).string(),
|
||||
light: more(theme.foreground, 0.5).string(),
|
||||
link: theme.colors[8], // for .btn-link
|
||||
}
|
||||
@@ -117,6 +127,13 @@ export class ThemesService {
|
||||
vars[`--theme-${key}`] = color
|
||||
vars[`--theme-${key}-less`] = less(color, 0.25).string()
|
||||
vars[`--theme-${key}-less-2`] = less(color, 0.75).string()
|
||||
vars[`--theme-${key}-fg`] = more(color, 3).string()
|
||||
|
||||
vars[`--theme-${key}-active-bg`] = less(color, 1).string()
|
||||
vars[`--theme-${key}-active-fg`] = more(color, 1).string()
|
||||
|
||||
contrastPairs.push([`--theme-${key}`, `--theme-${key}-fg`])
|
||||
contrastPairs.push([`--theme-${key}-active-bg`, `--theme-${key}-active-fg`])
|
||||
}
|
||||
|
||||
const switchBackground = less(theme.colors[accentIndex], 0.25).string()
|
||||
@@ -125,9 +142,38 @@ export class ThemesService {
|
||||
|
||||
vars['--spaciness'] = this.config.store.appearance.spaciness
|
||||
|
||||
for (const [bg, fg] of contrastPairs) {
|
||||
const colorBg = Color(vars[bg]).hsl()
|
||||
const colorFg = Color(vars[fg]).hsl()
|
||||
const bgContrast = colorBg.contrast(colorFg)
|
||||
if (bgContrast < this.config.store.terminal.minimumContrastRatio) {
|
||||
vars[fg] = this.ensureContrast(colorFg, colorBg).string()
|
||||
}
|
||||
}
|
||||
|
||||
for (const [key, value] of Object.entries(vars)) {
|
||||
document.documentElement.style.setProperty(key, value)
|
||||
}
|
||||
|
||||
document.body.classList.toggle('no-animations', !this.config.store.accessibility.animations)
|
||||
}
|
||||
|
||||
private ensureContrast (color: Color, against: Color): Color {
|
||||
const a = this.increaseContrast(color, against, 1.1)
|
||||
const b = this.increaseContrast(color, against, 0.9)
|
||||
return a.contrast(against) > b.contrast(against) ? a : b
|
||||
}
|
||||
|
||||
private increaseContrast (color: Color, against: Color, step=1.1): Color {
|
||||
color = color.hsl()
|
||||
color.color[2] = Math.max(color.color[2], 0.01)
|
||||
while (
|
||||
(step < 1 && color.color[2] > 1 ||
|
||||
step > 1 && color.color[2] < 99) &&
|
||||
color.contrast(against) < this.config.store.terminal.minimumContrastRatio) {
|
||||
color.color[2] *= step
|
||||
}
|
||||
return color
|
||||
}
|
||||
|
||||
findTheme (name: string): Theme|null {
|
||||
|
@@ -10,7 +10,7 @@ app-root {
|
||||
|
||||
&> .content {
|
||||
.tab-bar {
|
||||
background: var(--theme-bg-more);
|
||||
background: var(--theme-bg-more-2);
|
||||
|
||||
.btn-tab-bar {
|
||||
background: transparent;
|
||||
@@ -30,6 +30,7 @@ app-root {
|
||||
border-left: 1px solid transparent;
|
||||
border-right: 1px solid transparent;
|
||||
transition: 0.125s ease-out width;
|
||||
color: var(--theme-fg-more-2);
|
||||
|
||||
.index {
|
||||
color: var(--bs-body-color);
|
||||
@@ -54,11 +55,13 @@ app-root {
|
||||
opacity: .2;
|
||||
}
|
||||
|
||||
.current-tab-indicator {
|
||||
background:var(--bs-light);
|
||||
}
|
||||
|
||||
&.active {
|
||||
// color: $black;
|
||||
background: var(--bs-body-bg);
|
||||
// border-left: 1px solid $border-color;
|
||||
// border-right: 1px solid $border-color;
|
||||
color: var(--theme-fg);
|
||||
background: var(--body-bg);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -67,7 +70,7 @@ app-root {
|
||||
}
|
||||
|
||||
tab-body {
|
||||
background: var(--bs-body-bg);
|
||||
background: var(--body-bg);
|
||||
}
|
||||
|
||||
$tab-border-radius: 5px;
|
||||
@@ -78,12 +81,15 @@ $modal-footer-border-color: transparent;
|
||||
$form-check-input-width: 1.4em;
|
||||
$form-switch-width: 2.5em;
|
||||
|
||||
$input-placeholder-color: var(--theme-fg-more-2);
|
||||
|
||||
@import '~bootstrap/scss/bootstrap.scss';
|
||||
@import "./theme.vendor.scss";
|
||||
|
||||
body {
|
||||
background: var(--body-bg);
|
||||
--bs-border-color: var(--theme-bg-more-2);
|
||||
--bs-form-control-bg: var(--theme-bg-more);
|
||||
--bs-form-control-bg: var(--theme-bg-more-2);
|
||||
--bs-emphasis-color: var(--theme-fg-less-2);
|
||||
}
|
||||
|
||||
@@ -104,8 +110,8 @@ body {
|
||||
}
|
||||
|
||||
.nav {
|
||||
--bs-nav-link-color: var(--bs-body-color);
|
||||
--bs-nav-link-hover-color: var(--theme-fg-less-2);
|
||||
--bs-nav-link-color: var(--theme-fg);
|
||||
--bs-nav-link-hover-color: var(--theme-fg-less);
|
||||
--bs-nav-link-disabled-color: var(--bs-gray);
|
||||
}
|
||||
|
||||
@@ -122,8 +128,8 @@ body {
|
||||
|
||||
.nav-pills {
|
||||
--bs-nav-pills-border-radius: #{$nav-pills-border-radius};
|
||||
--bs-nav-pills-link-active-color: var(--theme-bg-more);
|
||||
--bs-nav-pills-link-active-bg: var(--bs-primary);
|
||||
--bs-nav-pills-link-active-color: var(--theme-primary-fg);
|
||||
--bs-nav-pills-link-active-bg: var(--theme-primary);
|
||||
}
|
||||
|
||||
.nav-tabs {
|
||||
@@ -167,6 +173,13 @@ body {
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
--bs-dropdown-bg: var(--theme-bg-more);
|
||||
}
|
||||
|
||||
.progress {
|
||||
--bs-progress-height: 3px;
|
||||
}
|
||||
|
||||
tab-body {
|
||||
terminal-toolbar {
|
||||
@@ -189,20 +202,20 @@ tab-body {
|
||||
--bs-btn-hover-border-color: var(--theme-#{$color}-less);
|
||||
--bs-btn-hover-bg: var(--theme-#{$color}-less);
|
||||
|
||||
--bs-btn-active-border-color: var(--theme-#{$color}-less-2);
|
||||
--bs-btn-active-bg: var(--theme-#{$color}-less-2);
|
||||
--bs-btn-active-border-color: var(--theme-#{$color});
|
||||
--bs-btn-active-bg: var(--theme-#{$color}-active-bg);
|
||||
|
||||
--bs-btn-focus-shadow-rgb: 130, 138, 145;
|
||||
--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
|
||||
--bs-btn-color: var(--theme-#{$color}-more-2);
|
||||
--bs-btn-hover-color: var(--theme-#{$color}-more-2);
|
||||
--bs-btn-active-color: var(--theme-#{$color}-more-2);
|
||||
--bs-btn-disabled-color: var(--theme-#{$color}-more-2);
|
||||
--bs-btn-color: var(--theme-#{$color}-fg);
|
||||
--bs-btn-hover-color: var(--theme-#{$color}-fg);
|
||||
--bs-btn-active-color: var(--theme-#{$color}-active-fg);
|
||||
--bs-btn-disabled-color: var(--theme-#{$color}-fg);
|
||||
}
|
||||
|
||||
.alert-#{$color} {
|
||||
--bs-alert-bg: var(--theme-#{$color}-more-2);
|
||||
--bs-alert-bg: var(--theme-#{$color}-fg);
|
||||
--bs-alert-border-color: var(--theme-#{$color}-more);
|
||||
--bs-alert-color: var(--theme-#{$color});
|
||||
}
|
||||
@@ -388,6 +401,7 @@ ngx-colors-panel .opened {
|
||||
|
||||
.text-muted {
|
||||
opacity: .5;
|
||||
color: var(--theme-fg) !important;
|
||||
}
|
||||
|
||||
.form-switch .form-check-input {
|
||||
|
@@ -1,37 +1,29 @@
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'
|
||||
import { Injectable } from '@angular/core'
|
||||
import { TranslateService } from '@ngx-translate/core'
|
||||
import { Theme } from './api'
|
||||
|
||||
/** @hidden */
|
||||
@Injectable()
|
||||
export class StandardTheme extends Theme {
|
||||
name = this.translate.instant('Standard (legacy)')
|
||||
name = _('Standard (legacy)')
|
||||
css = require('./theme.scss')
|
||||
terminalBackground = '#222a33'
|
||||
|
||||
constructor (private translate: TranslateService) {
|
||||
super()
|
||||
}
|
||||
}
|
||||
|
||||
/** @hidden */
|
||||
@Injectable()
|
||||
export class StandardCompactTheme extends Theme {
|
||||
name = this.translate.instant('Compact (legacy)')
|
||||
name = _('Compact (legacy)')
|
||||
css = require('./theme.compact.scss')
|
||||
terminalBackground = '#222a33'
|
||||
macOSWindowButtonsInsetX = 8
|
||||
macOSWindowButtonsInsetY = 6
|
||||
|
||||
constructor (private translate: TranslateService) {
|
||||
super()
|
||||
}
|
||||
}
|
||||
|
||||
/** @hidden */
|
||||
@Injectable()
|
||||
export class PaperTheme extends Theme {
|
||||
name = 'Paper (legacy)'
|
||||
name = _('Paper (legacy)')
|
||||
css = require('./theme.paper.scss')
|
||||
terminalBackground = '#f7f1e0'
|
||||
}
|
||||
@@ -39,12 +31,8 @@ export class PaperTheme extends Theme {
|
||||
/** @hidden */
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class NewTheme extends Theme {
|
||||
name = this.translate.instant('Follow the color scheme')
|
||||
name = _('Follow the color scheme')
|
||||
css = require('./theme.new.scss')
|
||||
terminalBackground = '#f7f1e0'
|
||||
followsColorScheme = true
|
||||
|
||||
constructor (private translate: TranslateService) {
|
||||
super()
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tabby-electron",
|
||||
"version": "1.0.189-nightly.2",
|
||||
"version": "1.0.197-nightly.1",
|
||||
"description": "Electron-specific bindings",
|
||||
"keywords": [
|
||||
"tabby-builtin-plugin"
|
||||
@@ -12,19 +12,20 @@
|
||||
"watch": "webpack --progress --color --watch"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
"dist",
|
||||
"typings"
|
||||
],
|
||||
"author": "Eugene Pankov",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@angular/core": "^9.1.9",
|
||||
"@angular/core": "^15",
|
||||
"tabby-local": "*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron-promise-ipc": "^2.2.4",
|
||||
"ps-node": "^0.1.6",
|
||||
"tmp-promise": "^3.0.2",
|
||||
"hasbin": "^1.2.3",
|
||||
"which": "^3.0.0",
|
||||
"winston": "^3.3.3"
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import * as path from 'path'
|
||||
import * as fs from 'fs/promises'
|
||||
import hasbin from 'hasbin'
|
||||
import * as which from 'which'
|
||||
import { Injectable } from '@angular/core'
|
||||
import { HostAppService, Platform, ConfigService } from 'tabby-core'
|
||||
import { ElectronService } from '../services/electron.service'
|
||||
@@ -73,7 +73,7 @@ export class WindowsStockShellsProvider extends WindowsBaseShellProvider {
|
||||
|
||||
private async getPowerShellPath () {
|
||||
for (const name of ['pwsh.exe', 'powershell.exe']) {
|
||||
if (await new Promise(resolve => hasbin(name, resolve))) {
|
||||
if (await which(name, { nothrow: true })) {
|
||||
return name
|
||||
}
|
||||
}
|
||||
|
@@ -21,11 +21,6 @@ async@^3.2.3:
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
|
||||
integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
|
||||
|
||||
async@~1.5:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
|
||||
integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
@@ -209,13 +204,6 @@ has@^1.0.3:
|
||||
dependencies:
|
||||
function-bind "^1.1.1"
|
||||
|
||||
hasbin@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/hasbin/-/hasbin-1.2.3.tgz#78c5926893c80215c2b568ae1fd3fcab7a2696b0"
|
||||
integrity sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==
|
||||
dependencies:
|
||||
async "~1.5"
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
@@ -296,6 +284,11 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
|
||||
dependencies:
|
||||
has-symbols "^1.0.2"
|
||||
|
||||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
|
||||
|
||||
kuler@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
|
||||
@@ -515,6 +508,13 @@ which-boxed-primitive@^1.0.2:
|
||||
is-string "^1.0.5"
|
||||
is-symbol "^1.0.3"
|
||||
|
||||
which@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-3.0.0.tgz#a9efd016db59728758a390d23f1687b6e8f59f8e"
|
||||
integrity sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
winston-transport@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tabby-linkifier",
|
||||
"version": "1.0.189-nightly.2",
|
||||
"version": "1.0.197-nightly.1",
|
||||
"description": "Makes URLs, IPs and file paths clickable in Tabby",
|
||||
"keywords": [
|
||||
"tabby-builtin-plugin"
|
||||
@@ -12,6 +12,7 @@
|
||||
"watch": "webpack --progress --color --watch"
|
||||
},
|
||||
"files": [
|
||||
"dist",
|
||||
"typings"
|
||||
],
|
||||
"author": "Eugene Pankov",
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tabby-local",
|
||||
"version": "1.0.189-nightly.2",
|
||||
"version": "1.0.197-nightly.1",
|
||||
"description": "Tabby's local shell plugin",
|
||||
"keywords": [
|
||||
"tabby-builtin-plugin"
|
||||
@@ -12,6 +12,7 @@
|
||||
"watch": "webpack --progress --color --watch"
|
||||
},
|
||||
"files": [
|
||||
"dist",
|
||||
"typings"
|
||||
],
|
||||
"author": "Eugene Pankov",
|
||||
@@ -22,13 +23,13 @@
|
||||
"runes": "^0.4.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/animations": "^9.1.9",
|
||||
"@angular/common": "^9.1.11",
|
||||
"@angular/core": "^9.1.9",
|
||||
"@angular/forms": "^9.1.11",
|
||||
"@angular/platform-browser": "^9.1.11",
|
||||
"@ng-bootstrap/ng-bootstrap": "^6.1.0",
|
||||
"rxjs": "^6.5.5",
|
||||
"@angular/animations": "^15",
|
||||
"@angular/common": "^15",
|
||||
"@angular/core": "^15",
|
||||
"@angular/forms": "^15",
|
||||
"@angular/platform-browser": "^15",
|
||||
"@ng-bootstrap/ng-bootstrap": "^14",
|
||||
"rxjs": "^7",
|
||||
"tabby-core": "*",
|
||||
"tabby-settings": "*",
|
||||
"tabby-terminal": "*"
|
||||
|
@@ -6,7 +6,7 @@ import { SessionOptions } from '../api'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'command-line-editor',
|
||||
templateUrl:'./commandLineEditor.component.pug',
|
||||
templateUrl: './commandLineEditor.component.pug',
|
||||
})
|
||||
export class CommandLineEditorComponent {
|
||||
@Input() argvMode = false
|
||||
|
@@ -5,7 +5,7 @@ import { Subject } from 'rxjs'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'environment-editor',
|
||||
templateUrl:'./environmentEditor.component.pug',
|
||||
templateUrl: './environmentEditor.component.pug',
|
||||
styleUrls: ['./environmentEditor.component.scss'],
|
||||
})
|
||||
export class EnvironmentEditorComponent {
|
||||
|
@@ -6,7 +6,7 @@ import { PlatformService, ProfileSettingsComponent } from 'tabby-core'
|
||||
|
||||
/** @hidden */
|
||||
@Component({
|
||||
templateUrl:'./localProfileSettings.component.pug',
|
||||
templateUrl: './localProfileSettings.component.pug',
|
||||
})
|
||||
export class LocalProfileSettingsComponent implements ProfileSettingsComponent<LocalProfile> {
|
||||
profile: LocalProfile
|
||||
|
@@ -3,7 +3,7 @@ import { WIN_BUILD_CONPTY_SUPPORTED, WIN_BUILD_CONPTY_STABLE, isWindowsBuild, Co
|
||||
|
||||
/** @hidden */
|
||||
@Component({
|
||||
templateUrl:'./shellSettingsTab.component.pug',
|
||||
templateUrl: './shellSettingsTab.component.pug',
|
||||
})
|
||||
export class ShellSettingsTabComponent {
|
||||
isConPTYAvailable: boolean
|
||||
|
@@ -28,7 +28,6 @@ export class TerminalTabComponent extends BaseTerminalTabComponent<LocalProfile>
|
||||
this.sessionOptions = this.profile.options
|
||||
|
||||
this.logger = this.log.create('terminalTab')
|
||||
this.session = new Session(this.injector)
|
||||
|
||||
const isConPTY = isWindowsBuild(WIN_BUILD_CONPTY_SUPPORTED) && this.config.store.terminal.useConPTY
|
||||
|
||||
@@ -56,6 +55,9 @@ export class TerminalTabComponent extends BaseTerminalTabComponent<LocalProfile>
|
||||
}
|
||||
|
||||
initializeSession (columns: number, rows: number): void {
|
||||
|
||||
const session = new Session(this.injector)
|
||||
|
||||
if (this.profile.options.runAsAdministrator && this.uac?.isAvailable) {
|
||||
this.profile = {
|
||||
...this.profile,
|
||||
@@ -63,13 +65,13 @@ export class TerminalTabComponent extends BaseTerminalTabComponent<LocalProfile>
|
||||
}
|
||||
}
|
||||
|
||||
this.session!.start({
|
||||
session.start({
|
||||
...this.profile.options,
|
||||
width: columns,
|
||||
height: rows,
|
||||
})
|
||||
|
||||
this.attachSessionHandlers(true)
|
||||
this.setSession(session)
|
||||
this.recoveryStateChangedHint.next()
|
||||
}
|
||||
|
||||
@@ -125,4 +127,12 @@ export class TerminalTabComponent extends BaseTerminalTabComponent<LocalProfile>
|
||||
super.ngOnDestroy()
|
||||
this.session?.destroy()
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if the user explicitly exit the session.
|
||||
* Always return true for terminalTab as the session can only be ended by the user
|
||||
*/
|
||||
protected isSessionExplicitlyTerminated (): boolean {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tabby-plugin-manager",
|
||||
"version": "1.0.189-nightly.2",
|
||||
"version": "1.0.197-nightly.1",
|
||||
"description": "Tabby's plugin manager",
|
||||
"keywords": [
|
||||
"tabby-builtin-plugin"
|
||||
@@ -12,7 +12,8 @@
|
||||
"watch": "webpack --progress --color --watch"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
"dist",
|
||||
"typings"
|
||||
],
|
||||
"author": "Eugene Pankov",
|
||||
"license": "MIT",
|
||||
@@ -21,12 +22,12 @@
|
||||
"semver": "^7.1.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": "^9.1.11",
|
||||
"@angular/core": "^9.1.9",
|
||||
"@angular/forms": "^9.1.11",
|
||||
"@angular/platform-browser": "^9.1.11",
|
||||
"@ng-bootstrap/ng-bootstrap": "^6.1.0",
|
||||
"rxjs": "^6.5.5",
|
||||
"@angular/common": "^15",
|
||||
"@angular/core": "^15",
|
||||
"@angular/forms": "^15",
|
||||
"@angular/platform-browser": "^15",
|
||||
"@ng-bootstrap/ng-bootstrap": "^14",
|
||||
"rxjs": "^7",
|
||||
"tabby-core": "*",
|
||||
"tabby-settings": "*"
|
||||
}
|
||||
|
@@ -15,7 +15,7 @@ _('Search plugins')
|
||||
|
||||
/** @hidden */
|
||||
@Component({
|
||||
templateUrl:'./pluginsSettingsTab.component.pug',
|
||||
templateUrl: './pluginsSettingsTab.component.pug',
|
||||
styleUrls: ['./pluginsSettingsTab.component.scss'],
|
||||
})
|
||||
export class PluginsSettingsTabComponent {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tabby-serial",
|
||||
"version": "1.0.189-nightly.2",
|
||||
"version": "1.0.197-nightly.1",
|
||||
"description": "Serial connections for Tabby",
|
||||
"keywords": [
|
||||
"tabby-builtin-plugin"
|
||||
@@ -12,7 +12,8 @@
|
||||
"watch": "webpack --progress --color --watch"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
"dist",
|
||||
"typings"
|
||||
],
|
||||
"author": "Eugene Pankov",
|
||||
"license": "MIT",
|
||||
@@ -21,14 +22,14 @@
|
||||
"ansi-colors": "^4.1.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/animations": "^9.1.9",
|
||||
"@angular/common": "^9.1.11",
|
||||
"@angular/core": "^9.1.9",
|
||||
"@angular/forms": "^9.1.11",
|
||||
"@angular/platform-browser": "^9.1.11",
|
||||
"@angular/platform-browser-dynamic": "^9.1.11",
|
||||
"@ng-bootstrap/ng-bootstrap": "^6.2.0",
|
||||
"rxjs": "^6.6.3",
|
||||
"@angular/animations": "^15",
|
||||
"@angular/common": "^15",
|
||||
"@angular/core": "^15",
|
||||
"@angular/forms": "^15",
|
||||
"@angular/platform-browser": "^15",
|
||||
"@angular/platform-browser-dynamic": "^15",
|
||||
"@ng-bootstrap/ng-bootstrap": "^14",
|
||||
"rxjs": "^7",
|
||||
"tabby-core": "*",
|
||||
"tabby-settings": "*",
|
||||
"tabby-terminal": "*"
|
||||
|
@@ -3,7 +3,7 @@ import { SerialPortStream } from '@serialport/stream'
|
||||
import { LogService, NotificationsService } from 'tabby-core'
|
||||
import { Subject, Observable } from 'rxjs'
|
||||
import { Injector, NgZone } from '@angular/core'
|
||||
import { BaseSession, BaseTerminalProfile, LoginScriptsOptions, SessionMiddleware, StreamProcessingOptions, TerminalStreamProcessor } from 'tabby-terminal'
|
||||
import { BaseSession, BaseTerminalProfile, LoginScriptsOptions, SessionMiddleware, StreamProcessingOptions, TerminalStreamProcessor, UTF8SplitterMiddleware } from 'tabby-terminal'
|
||||
import { SerialService } from './services/serial.service'
|
||||
|
||||
export interface SerialProfile extends BaseTerminalProfile {
|
||||
@@ -64,6 +64,8 @@ export class SerialSession extends BaseSession {
|
||||
this.middleware.unshift(new SlowFeedMiddleware())
|
||||
}
|
||||
|
||||
this.middleware.push(new UTF8SplitterMiddleware())
|
||||
|
||||
this.setLoginScriptsOptions(profile.options)
|
||||
}
|
||||
|
||||
|
@@ -7,7 +7,7 @@ import { SerialService } from '../services/serial.service'
|
||||
|
||||
/** @hidden */
|
||||
@Component({
|
||||
templateUrl:'./serialProfileSettings.component.pug',
|
||||
templateUrl: './serialProfileSettings.component.pug',
|
||||
})
|
||||
export class SerialProfileSettingsComponent implements ProfileSettingsComponent<SerialProfile> {
|
||||
profile: SerialProfile
|
||||
|
@@ -2,9 +2,8 @@
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'
|
||||
import colors from 'ansi-colors'
|
||||
import { Component, Injector } from '@angular/core'
|
||||
import { first } from 'rxjs'
|
||||
import { GetRecoveryTokenOptions, Platform, SelectorService } from 'tabby-core'
|
||||
import { BaseTerminalTabComponent } from 'tabby-terminal'
|
||||
import { Platform, SelectorService } from 'tabby-core'
|
||||
import { BaseTerminalTabComponent, ConnectableTerminalTabComponent } from 'tabby-terminal'
|
||||
import { SerialSession, BAUD_RATES, SerialProfile } from '../api'
|
||||
|
||||
/** @hidden */
|
||||
@@ -14,9 +13,8 @@ import { SerialSession, BAUD_RATES, SerialProfile } from '../api'
|
||||
styleUrls: ['./serialTab.component.scss', ...BaseTerminalTabComponent.styles],
|
||||
animations: BaseTerminalTabComponent.animations,
|
||||
})
|
||||
export class SerialTabComponent extends BaseTerminalTabComponent<SerialProfile> {
|
||||
export class SerialTabComponent extends ConnectableTerminalTabComponent<SerialProfile> {
|
||||
session: SerialSession|null = null
|
||||
serialPort: any
|
||||
Platform = Platform
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
|
||||
@@ -29,8 +27,6 @@ export class SerialTabComponent extends BaseTerminalTabComponent<SerialProfile>
|
||||
}
|
||||
|
||||
ngOnInit () {
|
||||
this.logger = this.log.create('terminalTab')
|
||||
|
||||
this.subscribeUntilDestroyed(this.hotkeys.hotkey$, hotkey => {
|
||||
if (!this.hasFocus) {
|
||||
return
|
||||
@@ -48,10 +44,6 @@ export class SerialTabComponent extends BaseTerminalTabComponent<SerialProfile>
|
||||
}
|
||||
})
|
||||
|
||||
this.frontendReady$.pipe(first()).subscribe(() => {
|
||||
this.initializeSession()
|
||||
})
|
||||
|
||||
super.ngOnInit()
|
||||
|
||||
setImmediate(() => {
|
||||
@@ -60,6 +52,8 @@ export class SerialTabComponent extends BaseTerminalTabComponent<SerialProfile>
|
||||
}
|
||||
|
||||
async initializeSession () {
|
||||
super.initializeSession()
|
||||
|
||||
const session = new SerialSession(this.injector, this.profile)
|
||||
this.setSession(session)
|
||||
|
||||
@@ -82,29 +76,16 @@ export class SerialTabComponent extends BaseTerminalTabComponent<SerialProfile>
|
||||
this.write(`\r\n${colors.black.bgWhite(' Serial ')} ${msg}\r\n`)
|
||||
this.session?.resize(this.size.columns, this.size.rows)
|
||||
})
|
||||
this.attachSessionHandler(this.session!.destroyed$, () => {
|
||||
this.write(this.translate.instant(_('Press any key to reconnect')) + '\r\n')
|
||||
this.input$.pipe(first()).subscribe(() => {
|
||||
if (!this.session?.open) {
|
||||
this.reconnect()
|
||||
}
|
||||
})
|
||||
})
|
||||
super.attachSessionHandlers()
|
||||
}
|
||||
|
||||
async getRecoveryToken (options?: GetRecoveryTokenOptions): Promise<any> {
|
||||
return {
|
||||
type: 'app:serial-tab',
|
||||
profile: this.profile,
|
||||
savedState: options?.includeState && this.frontend?.saveState(),
|
||||
}
|
||||
}
|
||||
protected onSessionDestroyed (): void {
|
||||
if (this.frontend) {
|
||||
// Session was closed abruptly
|
||||
this.write('\r\n' + colors.black.bgWhite(' SERIAL ') + ` session closed\r\n`)
|
||||
|
||||
async reconnect (): Promise<void> {
|
||||
this.session?.destroy()
|
||||
await this.initializeSession()
|
||||
this.session?.releaseInitialDataBuffer()
|
||||
super.onSessionDestroyed()
|
||||
}
|
||||
}
|
||||
|
||||
async changeBaudRate () {
|
||||
@@ -114,7 +95,13 @@ export class SerialTabComponent extends BaseTerminalTabComponent<SerialProfile>
|
||||
name: x.toString(), result: x,
|
||||
})),
|
||||
)
|
||||
this.serialPort.update({ baudRate: rate })
|
||||
this.session?.serial?.update({ baudRate: rate })
|
||||
this.profile.options.baudrate = rate
|
||||
}
|
||||
|
||||
protected isSessionExplicitlyTerminated (): boolean {
|
||||
return super.isSessionExplicitlyTerminated() ||
|
||||
this.recentInputs.endsWith('close\r') ||
|
||||
this.recentInputs.endsWith('quit\r')
|
||||
}
|
||||
}
|
||||
|
@@ -36,3 +36,6 @@ import { SerialProfilesService } from './profiles'
|
||||
],
|
||||
})
|
||||
export default class SerialModule { } // eslint-disable-line @typescript-eslint/no-extraneous-class
|
||||
|
||||
export { SerialTabComponent }
|
||||
export { SerialSession } from './api'
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tabby-settings",
|
||||
"version": "1.0.189-nightly.2",
|
||||
"version": "1.0.197-nightly.1",
|
||||
"description": "Tabby terminal settings page",
|
||||
"keywords": [
|
||||
"tabby-builtin-plugin"
|
||||
@@ -12,6 +12,7 @@
|
||||
"watch": "webpack --progress --color --watch"
|
||||
},
|
||||
"files": [
|
||||
"dist",
|
||||
"typings"
|
||||
],
|
||||
"author": "Eugene Pankov",
|
||||
@@ -22,13 +23,13 @@
|
||||
"ngx-infinite-scroll": "^15"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/animations": "^9.1.9",
|
||||
"@angular/common": "^9.1.11",
|
||||
"@angular/core": "^9.1.9",
|
||||
"@angular/forms": "^9.1.11",
|
||||
"@angular/platform-browser": "^9.1.11",
|
||||
"@ng-bootstrap/ng-bootstrap": "^6.1.0",
|
||||
"rxjs": "^6.5.5",
|
||||
"@angular/animations": "^15",
|
||||
"@angular/common": "^15",
|
||||
"@angular/core": "^15",
|
||||
"@angular/forms": "^15",
|
||||
"@angular/platform-browser": "^15",
|
||||
"@ng-bootstrap/ng-bootstrap": "^14",
|
||||
"rxjs": "^7",
|
||||
"tabby-core": "*"
|
||||
}
|
||||
}
|
||||
|
@@ -8,7 +8,7 @@ import { Config, ConfigSyncService } from '../services/configSync.service'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'config-sync-settings-tab',
|
||||
templateUrl:'./configSyncSettingsTab.component.pug',
|
||||
templateUrl: './configSyncSettingsTab.component.pug',
|
||||
})
|
||||
export class ConfigSyncSettingsTabComponent extends BaseComponent {
|
||||
connectionSuccessful: boolean|null = null
|
||||
|
@@ -65,6 +65,18 @@
|
||||
.description(translate) Connection name will be used instead
|
||||
toggle([(ngModel)]='profile.disableDynamicTitle')
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title(translate) When a session ends
|
||||
.description(*ngIf='profile.behaviorOnSessionEnd == "auto"', translate) Only close the tab when session is explicitly terminated
|
||||
select.form-control(
|
||||
[(ngModel)]='profile.behaviorOnSessionEnd',
|
||||
)
|
||||
option(ngValue='auto', translate) Auto
|
||||
option(ngValue='keep', translate) Keep
|
||||
option(*ngIf='profile.type == "serial" || profile.type == "telnet" || profile.type == "ssh"', ngValue='reconnect', translate) Reconnect
|
||||
option(ngValue='close', translate) Close
|
||||
|
||||
.mb-4
|
||||
|
||||
.col-12.col-lg-8(*ngIf='this.profileProvider.settingsComponent')
|
||||
|
@@ -13,7 +13,7 @@ const iconsClassList = Object.keys(iconsData).map(
|
||||
|
||||
/** @hidden */
|
||||
@Component({
|
||||
templateUrl:'./editProfileModal.component.pug',
|
||||
templateUrl: './editProfileModal.component.pug',
|
||||
})
|
||||
export class EditProfileModalComponent<P extends Profile> {
|
||||
@Input() profile: P & ConfigProxy
|
||||
|
@@ -8,7 +8,7 @@ const INPUT_TIMEOUT = 1000
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'hotkey-input-modal',
|
||||
templateUrl:'./hotkeyInputModal.component.pug',
|
||||
templateUrl: './hotkeyInputModal.component.pug',
|
||||
styleUrls: ['./hotkeyInputModal.component.scss'],
|
||||
animations: [
|
||||
trigger('animateKey', [
|
||||
|
@@ -14,7 +14,7 @@ _('Search hotkeys')
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'hotkey-settings-tab',
|
||||
templateUrl:'./hotkeySettingsTab.component.pug',
|
||||
templateUrl: './hotkeySettingsTab.component.pug',
|
||||
})
|
||||
export class HotkeySettingsTabComponent {
|
||||
hotkeyFilter = ''
|
||||
|
@@ -7,7 +7,7 @@ import deepEqual from 'deep-equal'
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'multi-hotkey-input',
|
||||
templateUrl:'./multiHotkeyInput.component.pug',
|
||||
templateUrl: './multiHotkeyInput.component.pug',
|
||||
styleUrls: ['./multiHotkeyInput.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user