mirror of
https://github.com/Eugeny/tabby.git
synced 2025-07-29 05:34:36 +00:00
Compare commits
171 Commits
all-contri
...
dependabot
Author | SHA1 | Date | |
---|---|---|---|
![]() |
00d2c26bc9 | ||
![]() |
7572f3c26f | ||
![]() |
326d8b3fb1 | ||
![]() |
9b4f1a3a0d | ||
![]() |
0d275595cf | ||
![]() |
7860c73e49 | ||
![]() |
fa9dea0f64 | ||
![]() |
0101ffddb6 | ||
![]() |
726ad23a32 | ||
![]() |
4fe2a45664 | ||
![]() |
6f8d687529 | ||
![]() |
9d05fbeb90 | ||
![]() |
299be86498 | ||
![]() |
bd337a4197 | ||
![]() |
a1cb0ff223 | ||
![]() |
ae2f3f162e | ||
![]() |
91cb9e5c63 | ||
![]() |
e2cc9b98ee | ||
![]() |
b8f2204d4f | ||
![]() |
35bca545f8 | ||
![]() |
8b89db41d2 | ||
![]() |
d36b2b21c9 | ||
![]() |
2d8a0aff61 | ||
![]() |
db916c922a | ||
![]() |
dfc438258d | ||
![]() |
6a714a746f | ||
![]() |
54284741e0 | ||
![]() |
e4b545f231 | ||
![]() |
c27566a561 | ||
![]() |
43121c33f2 | ||
![]() |
4b34f76997 | ||
![]() |
24db1cb99a | ||
![]() |
147d22f386 | ||
![]() |
c04b93c56c | ||
![]() |
ddab79d3ac | ||
![]() |
c501f541c8 | ||
![]() |
8af3c95212 | ||
![]() |
2fa612fe2c | ||
![]() |
725bc225f1 | ||
![]() |
8451848ba6 | ||
![]() |
186a4afa1c | ||
![]() |
1d1b149ea8 | ||
![]() |
b217aaf03b | ||
![]() |
c7471f737f | ||
![]() |
124d600bfd | ||
![]() |
a3f2405092 | ||
![]() |
a92f8956d4 | ||
![]() |
22fb2dbda2 | ||
![]() |
303eab2f0e | ||
![]() |
8a12e7c6d1 | ||
![]() |
821dcbff69 | ||
![]() |
44d8c3f04b | ||
![]() |
af515e01cf | ||
![]() |
aba773b546 | ||
![]() |
9ac5286017 | ||
![]() |
555c7f7b20 | ||
![]() |
3857beb46b | ||
![]() |
fcac52a844 | ||
![]() |
4736b11c62 | ||
![]() |
a128a647d9 | ||
![]() |
9638be5349 | ||
![]() |
9c863762c3 | ||
![]() |
539c213ef6 | ||
![]() |
d2bdb55c6d | ||
![]() |
4edc0be280 | ||
![]() |
f10b8c0f35 | ||
![]() |
e38b826fd6 | ||
![]() |
2f1c388a8b | ||
![]() |
e7f7d9b024 | ||
![]() |
47a6e81998 | ||
![]() |
eea3ab9c74 | ||
![]() |
0313e872fd | ||
![]() |
84422d4453 | ||
![]() |
32696cc047 | ||
![]() |
78485617e9 | ||
![]() |
56f6b88ac2 | ||
![]() |
50fac29c5e | ||
![]() |
c13effeadc | ||
![]() |
f0f0bbedf9 | ||
![]() |
897d6167a9 | ||
![]() |
a63011ca15 | ||
![]() |
eae2095787 | ||
![]() |
3efe6ce4cd | ||
![]() |
4966397fca | ||
![]() |
57da067727 | ||
![]() |
fa50c7d9fa | ||
![]() |
9a82c4c5c0 | ||
![]() |
a4136bec6e | ||
![]() |
82a262026f | ||
![]() |
6709217a86 | ||
![]() |
4bbf86a7a7 | ||
![]() |
d98fbe8b44 | ||
![]() |
3d9b15a82d | ||
![]() |
77b74ad659 | ||
![]() |
8de26cfeb8 | ||
![]() |
87a893480c | ||
![]() |
d6d6ec39c8 | ||
![]() |
1579356d54 | ||
![]() |
60a63d9c65 | ||
![]() |
5e673106e9 | ||
![]() |
27c8b920ea | ||
![]() |
bc8ac12aef | ||
![]() |
7f2340e701 | ||
![]() |
b0350b6a35 | ||
![]() |
cea5cc73ff | ||
![]() |
ad764d2f50 | ||
![]() |
1c8054ccb1 | ||
![]() |
2de56e3c9b | ||
![]() |
b75174d248 | ||
![]() |
d200f1e3ef | ||
![]() |
5c2ea50e8e | ||
![]() |
b3b1e02cfc | ||
![]() |
c77c166b26 | ||
![]() |
deee2d3ad6 | ||
![]() |
bb579303dc | ||
![]() |
6cd9db2e2b | ||
![]() |
c0853b4f7c | ||
![]() |
15c66139f9 | ||
![]() |
aceb13598a | ||
![]() |
31359a1c1e | ||
![]() |
67a3871a38 | ||
![]() |
e40449b71e | ||
![]() |
275d140afb | ||
![]() |
69ca03cbe7 | ||
![]() |
39bbb1c853 | ||
![]() |
1e1e9af027 | ||
![]() |
1656e359ac | ||
![]() |
d66b286570 | ||
![]() |
c93431d8a6 | ||
![]() |
460cd4f606 | ||
![]() |
2c8e20b9bd | ||
![]() |
2ff1141fe9 | ||
![]() |
4d83848e8d | ||
![]() |
1e9f5ca1dc | ||
![]() |
4a92fbd088 | ||
![]() |
2c0e50771f | ||
![]() |
515565b618 | ||
![]() |
285dfa31d2 | ||
![]() |
5777cf81dd | ||
![]() |
30078a78ce | ||
![]() |
534401f0e2 | ||
![]() |
2533415f25 | ||
![]() |
acc00c7eda | ||
![]() |
3146668351 | ||
![]() |
6820ffedf9 | ||
![]() |
4c55e075bd | ||
![]() |
ac596e323b | ||
![]() |
c983743b57 | ||
![]() |
e813133f12 | ||
![]() |
86cff8d98a | ||
![]() |
0c73ce847b | ||
![]() |
d45b98445f | ||
![]() |
7cc7048b40 | ||
![]() |
a64e9646e2 | ||
![]() |
c0352bceac | ||
![]() |
1d2c7ab905 | ||
![]() |
6eef2c97ee | ||
![]() |
9e4cb15c84 | ||
![]() |
ad889de139 | ||
![]() |
fcada433c9 | ||
![]() |
4d3b2d73ad | ||
![]() |
fed3c78e79 | ||
![]() |
98965585cc | ||
![]() |
3552333aed | ||
![]() |
93be096a9d | ||
![]() |
f252316c29 | ||
![]() |
a0fd091383 | ||
![]() |
21316a9655 | ||
![]() |
ca960e0849 | ||
![]() |
757995d593 | ||
![]() |
751eb18fd2 |
@@ -1184,6 +1184,42 @@
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "qyecst",
|
||||
"name": "qyecst",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/13901864?v=4",
|
||||
"profile": "https://github.com/qyecst",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "DehanLUO",
|
||||
"name": "Han",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/53093688?v=4",
|
||||
"profile": "https://github.com/DehanLUO",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "wljince007",
|
||||
"name": "wljince007",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/88243938?v=4",
|
||||
"profile": "https://github.com/wljince007",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "FeroTheFox",
|
||||
"name": "fero",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/52982404?v=4",
|
||||
"profile": "https://github.com/FeroTheFox",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
@@ -1192,5 +1228,6 @@
|
||||
"repoType": "github",
|
||||
"repoHost": "https://github.com",
|
||||
"commitConvention": "none",
|
||||
"skipCi": true
|
||||
"skipCi": true,
|
||||
"commitType": "docs"
|
||||
}
|
||||
|
202
.github/workflows/build.yml
vendored
202
.github/workflows/build.yml
vendored
@@ -11,7 +11,7 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Installing Node
|
||||
uses: actions/setup-node@v3.5.1
|
||||
uses: actions/setup-node@v3.7.0
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
@@ -47,7 +47,7 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Installing Node
|
||||
uses: actions/setup-node@v3.5.1
|
||||
uses: actions/setup-node@v3.7.0
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
@@ -86,6 +86,7 @@ jobs:
|
||||
KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
|
||||
CSC_LINK: ${{ secrets.CSC_LINK }}
|
||||
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
APPSTORE_USERNAME: ${{ secrets.APPSTORE_USERNAME }}
|
||||
APPSTORE_PASSWORD: ${{ secrets.APPSTORE_PASSWORD }}
|
||||
USE_HARD_LINKS: false
|
||||
@@ -131,7 +132,21 @@ jobs:
|
||||
needs: Lint
|
||||
strategy:
|
||||
matrix:
|
||||
build-arch: [ x64, arm64, armv7l ]
|
||||
include:
|
||||
- build-arch: x64
|
||||
arch: amd64
|
||||
- build-arch: arm64
|
||||
arch: arm64
|
||||
triplet: aarch64-linux-gnu-
|
||||
- build-arch: arm
|
||||
arch: armhf
|
||||
triplet: arm-linux-gnueabihf-
|
||||
env:
|
||||
CC: ${{matrix.triplet}}gcc
|
||||
CXX: ${{matrix.triplet}}g++
|
||||
ARCH: ${{matrix.build-arch}}
|
||||
npm_config_arch: ${{matrix.build-arch}}
|
||||
npm_config_target_arch: ${{matrix.build-arch}}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -139,35 +154,66 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up multiarch/qemu-user-static
|
||||
run: docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||
if: matrix.build-arch != 'x64'
|
||||
|
||||
- name: Install Node (x64)
|
||||
uses: actions/setup-node@v3.5.1
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@v3.7.0
|
||||
with:
|
||||
node-version: 16
|
||||
if: matrix.build-arch == 'x64'
|
||||
node-version: 18
|
||||
|
||||
- name: Install deps (x64)
|
||||
- name: Install deps (amd64)
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install libarchive-tools zsh
|
||||
|
||||
- name: Install npm_modules (amd64)
|
||||
run: |
|
||||
npm i -g yarn
|
||||
yarn --network-timeout 1000000
|
||||
if: matrix.build-arch == 'x64'
|
||||
|
||||
- name: Webpack (x64)
|
||||
run: yarn run build
|
||||
if: matrix.build-arch == 'x64'
|
||||
- name: Setup Crossbuild (${{matrix.arch}})
|
||||
run: |
|
||||
sudo apt-get update -y && sudo apt-get install schroot sbuild debootstrap -y
|
||||
sudo debootstrap --include=git,curl,gnupg,ca-certificates,crossbuild-essential-${{matrix.arch}},python-dev,python3-dev,libarchive-tools,cmake --variant=buildd --exclude=snapd --components=main,restricted,universe,multiverse --extractor=dpkg-deb bionic /build-chroot/
|
||||
echo 'deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse' | sudo tee /build-chroot/etc/apt/sources.list >/dev/null
|
||||
echo 'deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports bionic main restricted universe multiverse' | sudo tee -a /build-chroot/etc/apt/sources.list >/dev/null
|
||||
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | sudo tee /build-chroot/etc/apt/trusted.gpg.d/nodesource.gpg >/dev/null
|
||||
echo 'deb http://deb.nodesource.com/node_16.x bionic main' | sudo tee /build-chroot/etc/apt/sources.list.d/nodesource.list >/dev/null
|
||||
echo "[build-chroot]
|
||||
description=Ubuntu 18.04 Build chroot
|
||||
type=directory
|
||||
directory=/build-chroot
|
||||
root-groups=root,sudo
|
||||
profile=buildd
|
||||
personality=linux
|
||||
union-type=overlay" | sudo tee /etc/schroot/chroot.d/build-chroot.pref >/dev/null
|
||||
echo "/home /home none rw,bind 0 0" | sudo tee -a /etc/schroot/buildd/fstab >/dev/null
|
||||
|
||||
- name: Prepackage plugins (x64)
|
||||
if: matrix.build-arch != 'x64'
|
||||
|
||||
- name: Install node_modules & CrossBuild native modules for ${{matrix.arch}}
|
||||
run: |
|
||||
sudo schroot -c build-chroot -u root -- bash -c "apt-get update -y
|
||||
dpkg --add-architecture ${{matrix.arch}}
|
||||
apt-get install -y nodejs libfontconfig-dev:${{matrix.arch}} libsecret-1-dev:${{matrix.arch}} libnss3:${{matrix.arch}} libatk1.0-0:${{matrix.arch}} libatk-bridge2.0-0:${{matrix.arch}} libgdk-pixbuf2.0-0:${{matrix.arch}} libgtk-3-0:${{matrix.arch}} libgbm1:${{matrix.arch}}
|
||||
export CC=${{matrix.triplet}}gcc CXX=${{matrix.triplet}}g++ LD=${{matrix.triplet}}ld
|
||||
if [[ ${{matrix.arch}} == 'arm64' ]]; then
|
||||
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/aarch64-linux-gnu/pkgconfig/
|
||||
elif [[ ${{matrix.arch}} == 'armhf' ]]; then
|
||||
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/arm-linux-gnueabihf/pkgconfig/
|
||||
fi
|
||||
export ARCH=${{matrix.build-arch}} npm_config_arch=${{matrix.build-arch}} npm_config_target_arch=${{matrix.build-arch}}
|
||||
npm i -g yarn
|
||||
yarn --network-timeout 1000000 --arch=${{matrix.build-arch}} --target_arch=${{matrix.build-arch}}"
|
||||
if: matrix.build-arch != 'x64'
|
||||
|
||||
- name: Webpack (${{matrix.arch}})
|
||||
run: yarn run build --arch=${{matrix.build-arch}} --target_arch=${{matrix.build-arch}}
|
||||
|
||||
- name: Prepackage plugins (${{matrix.arch}})
|
||||
run: scripts/prepackage-plugins.mjs
|
||||
if: ${{matrix.build-arch == 'x64'}}
|
||||
|
||||
- name: Build packages (x64)
|
||||
- name: Build packages (${{matrix.arch}})
|
||||
run: scripts/build-linux.mjs
|
||||
if: ${{matrix.build-arch == 'x64'}}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
|
||||
@@ -178,54 +224,54 @@ jobs:
|
||||
run: zsh -c 'tar czf tabby-web.tar.gz (tabby-*|web)/dist'
|
||||
if: matrix.build-arch == 'x64'
|
||||
|
||||
- name: Install deps and Build (arm64)
|
||||
uses: docker://multiarch/ubuntu-core:arm64-bionic
|
||||
with:
|
||||
args: >
|
||||
bash -c
|
||||
"apt update && apt install curl lsb-release gnupg -y &&
|
||||
curl -fsSL https://deb.nodesource.com/setup_16.x | bash - &&
|
||||
apt install make build-essential git ruby libarchive-tools nodejs rpm libsecret-1-dev libfontconfig1-dev -y &&
|
||||
git config --global --add safe.directory /github/workspace &&
|
||||
gem install public_suffix -v 4.0.7 &&
|
||||
gem install fpm --no-document &&
|
||||
npm i -g yarn &&
|
||||
cd /github/workspace &&
|
||||
yarn --network-timeout 1000000 &&
|
||||
yarn run build &&
|
||||
scripts/prepackage-plugins.mjs &&
|
||||
USE_SYSTEM_FPM=true scripts/build-linux.mjs"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
|
||||
USE_HARD_LINKS: false
|
||||
if: matrix.build-arch == 'arm64' && github.repository == 'Eugeny/tabby' && startsWith(github.ref, 'refs/tags')
|
||||
# - name: Install deps and Build (arm64)
|
||||
# uses: docker://multiarch/ubuntu-core:arm64-bionic
|
||||
# with:
|
||||
# args: >
|
||||
# bash -c
|
||||
# "apt update && apt install curl lsb-release gnupg -y &&
|
||||
# curl -fsSL https://deb.nodesource.com/setup_16.x | bash - &&
|
||||
# apt install make build-essential git ruby libarchive-tools nodejs rpm libsecret-1-dev libfontconfig1-dev -y &&
|
||||
# git config --global --add safe.directory /github/workspace &&
|
||||
# gem install public_suffix -v 4.0.7 &&
|
||||
# gem install fpm --no-document &&
|
||||
# npm i -g yarn &&
|
||||
# cd /github/workspace &&
|
||||
# yarn --network-timeout 1000000 &&
|
||||
# yarn run build &&
|
||||
# scripts/prepackage-plugins.mjs &&
|
||||
# USE_SYSTEM_FPM=true scripts/build-linux.mjs"
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
|
||||
# USE_HARD_LINKS: false
|
||||
# if: matrix.build-arch == 'arm64' && github.repository == 'Eugeny/tabby' && startsWith(github.ref, 'refs/tags')
|
||||
|
||||
- name: Install deps and Build (armv7l)
|
||||
uses: docker://multiarch/ubuntu-core:armhf-bionic
|
||||
with:
|
||||
args: >
|
||||
bash -c
|
||||
"apt update && apt install curl lsb-release gnupg -y &&
|
||||
curl -fsSL https://deb.nodesource.com/setup_16.x | bash - &&
|
||||
apt install make build-essential git ruby libarchive-tools nodejs rpm libsecret-1-dev libfontconfig1-dev -y &&
|
||||
git config --global --add safe.directory /github/workspace &&
|
||||
gem install public_suffix -v 4.0.7 &&
|
||||
gem install fpm --no-document &&
|
||||
npm i -g yarn &&
|
||||
cd /github/workspace &&
|
||||
sed -i '/ \"electron\":/c\ \"electron\": \"17.0.0\",' package.json &&
|
||||
yarn --network-timeout 1000000 &&
|
||||
yarn run build &&
|
||||
scripts/prepackage-plugins.mjs &&
|
||||
USE_SYSTEM_FPM=true scripts/build-linux.mjs"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
|
||||
USE_HARD_LINKS: false
|
||||
if: matrix.build-arch == 'armv7l' && github.repository == 'Eugeny/tabby' && startsWith(github.ref, 'refs/tags')
|
||||
# - name: Install deps and Build (armv7l)
|
||||
# uses: docker://multiarch/ubuntu-core:armhf-bionic
|
||||
# with:
|
||||
# args: >
|
||||
# bash -c
|
||||
# "apt update && apt install curl lsb-release gnupg -y &&
|
||||
# curl -fsSL https://deb.nodesource.com/setup_16.x | bash - &&
|
||||
# apt install make build-essential git ruby libarchive-tools nodejs rpm libsecret-1-dev libfontconfig1-dev -y &&
|
||||
# git config --global --add safe.directory /github/workspace &&
|
||||
# gem install public_suffix -v 4.0.7 &&
|
||||
# gem install fpm --no-document &&
|
||||
# npm i -g yarn &&
|
||||
# cd /github/workspace &&
|
||||
# sed -i '/ \"electron\":/c\ \"electron\": \"17.0.0\",' package.json &&
|
||||
# yarn --network-timeout 1000000 &&
|
||||
# yarn run build &&
|
||||
# scripts/prepackage-plugins.mjs &&
|
||||
# USE_SYSTEM_FPM=true scripts/build-linux.mjs"
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
|
||||
# USE_HARD_LINKS: false
|
||||
# if: matrix.build-arch == 'arm' && github.repository == 'Eugeny/tabby' && startsWith(github.ref, 'refs/tags')
|
||||
|
||||
- name: Upload symbols
|
||||
- name: Upload symbols (amd64 only)
|
||||
run: |
|
||||
sudo npm install -g @sentry/cli --unsafe-perm
|
||||
./scripts/sentry-upload.mjs
|
||||
@@ -245,31 +291,37 @@ jobs:
|
||||
dir: 'dist'
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload DEB
|
||||
name: Upload AppImage (${{matrix.arch}})
|
||||
with:
|
||||
name: Linux DEB (${{matrix.build-arch}})
|
||||
name: Linux AppImage (${{matrix.arch}})
|
||||
path: dist/*.AppImage
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload DEB (${{matrix.arch}})
|
||||
with:
|
||||
name: Linux DEB (${{matrix.arch}})
|
||||
path: dist/*.deb
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload RPM
|
||||
name: Upload RPM (${{matrix.arch}})
|
||||
with:
|
||||
name: Linux RPM (${{matrix.build-arch}})
|
||||
name: Linux RPM (${{matrix.arch}})
|
||||
path: dist/*.rpm
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload Pacman Package
|
||||
name: Upload Pacman Package (${{matrix.arch}})
|
||||
with:
|
||||
name: Linux Pacman (${{matrix.build-arch}})
|
||||
name: Linux Pacman (${{matrix.arch}})
|
||||
path: dist/*.pacman
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload Linux tarball
|
||||
name: Upload Linux tarball (${{matrix.arch}})
|
||||
with:
|
||||
name: Linux tarball (${{matrix.build-arch}})
|
||||
name: Linux tarball (${{matrix.arch}})
|
||||
path: dist/*.tar.gz
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload web tarball
|
||||
name: Upload web tarball (amd64 only)
|
||||
with:
|
||||
name: Web tarball
|
||||
path: tabby-web.tar.gz
|
||||
@@ -293,7 +345,7 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Installing Node
|
||||
uses: actions/setup-node@v3.5.1
|
||||
uses: actions/setup-node@v3.7.0
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
|
2
.github/workflows/docs.yml
vendored
2
.github/workflows/docs.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Installing Node
|
||||
uses: actions/setup-node@v3.5.1
|
||||
uses: actions/setup-node@v3.7.0
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
|
@@ -17,8 +17,6 @@ First, from within the `tabby` directory install the dependencies via yarn:
|
||||
yarn
|
||||
```
|
||||
|
||||
**Note: For compiling for Linux armv7l, you need to downgrade electron to 17.0.0 in package.json present in root directory of tabby source**
|
||||
|
||||
```
|
||||
# Linux (Debian/Ubuntu here as an example)
|
||||
sudo apt install libfontconfig-dev libsecret-1-dev libarchive-tools libnss3 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm1 cmake
|
||||
|
@@ -321,6 +321,10 @@ Dank geht an diese wunderbaren Menschen ([emoji key](https://allcontributors.org
|
||||
<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>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -323,6 +323,10 @@ Gracias a estas maravillosas personas ([emoji key](https://allcontributors.org/d
|
||||
<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>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -320,6 +320,10 @@ Terima kasih kepada mereka yang telah membantu ([emoji key](https://allcontribut
|
||||
<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>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -316,6 +316,10 @@ Grazie a queste persone meravigliose ([emoji key](https://allcontributors.org/do
|
||||
<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>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -331,6 +331,10 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル
|
||||
<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>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -310,6 +310,10 @@ Pull requests and plugins are welcome!
|
||||
<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>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -16,6 +16,8 @@
|
||||
|
||||
> 👋 Managing remote environments? Check out [Warpgate, my smart SSH/HTTP/MySQL bastion server](https://github.com/warp-tech/warpgate), it works great with Tabby, you'll love it.
|
||||
|
||||
> 👋 [Tabby-web](https://github.com/Eugeny/tabby-web) is looking for sponsors. As I can't afford to host it myself any longer, I'm looking for a sponsor to cover the hosting costs. If you're interested, please [get in touch](https://twitter.com/eugeeeeny)!
|
||||
|
||||
|
||||
----
|
||||
|
||||
@@ -32,7 +34,7 @@ This README is also available in: <a href="./README.es-ES.md">:es: Spanish</a>
|
||||
|
||||
----
|
||||
|
||||
[**Tabby**](https://tabby.sh) (formerly **Terminus**) is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux
|
||||
[**Tabby**](https://tabby.sh) (formerly **Terminus**) is a highly configurable terminal emulator, SSH and serial client for Windows 10, macOS and Linux
|
||||
|
||||
* Integrated SSH and Telnet client and connection manager
|
||||
* Integrated serial terminal
|
||||
@@ -330,6 +332,10 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
||||
<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>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -324,6 +324,10 @@ Obrigado vai para essas pessoas maravilhosas ([emoji key](https://allcontributor
|
||||
<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>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -316,6 +316,10 @@ Pull-запросы и плагины приветствуются!
|
||||
<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>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -315,6 +315,10 @@
|
||||
<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>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import * as nodePTY from '@tabby-gang/node-pty'
|
||||
import * as nodePTY from 'node-pty'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import { ipcMain } from 'electron'
|
||||
import { Application } from './app'
|
||||
|
@@ -92,8 +92,11 @@ export class Window {
|
||||
if (this.configStore.appearance?.frame === 'native') {
|
||||
bwOptions.frame = true
|
||||
} else {
|
||||
if (process.platform === 'darwin') {
|
||||
bwOptions.titleBarStyle = 'hidden'
|
||||
bwOptions.titleBarStyle = 'hidden'
|
||||
if (process.platform === 'win32') {
|
||||
bwOptions.titleBarOverlay = {
|
||||
color: '#00000000',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -384,6 +387,21 @@ export class Window {
|
||||
this.setVibrancy(enabled, type)
|
||||
})
|
||||
|
||||
ipcMain.on('window-set-window-controls-color', (event, theme) => {
|
||||
if (!this.window || event.sender !== this.window.webContents) {
|
||||
return
|
||||
}
|
||||
|
||||
const symbolColor: string = theme.foreground
|
||||
|
||||
this.window.setTitleBarOverlay(
|
||||
{
|
||||
symbolColor: symbolColor,
|
||||
height: 32,
|
||||
},
|
||||
)
|
||||
})
|
||||
|
||||
ipcMain.on('window-set-title', (event, title) => {
|
||||
if (!this.window || event.sender !== this.window.webContents) {
|
||||
return
|
||||
@@ -442,7 +460,7 @@ export class Window {
|
||||
this.window.on('resize', onBoundsChange)
|
||||
|
||||
ipcMain.on('window-set-traffic-light-position', (_event, x, y) => {
|
||||
this.window.setTrafficLightPosition({ x, y })
|
||||
this.window.setWindowButtonPosition({ x, y })
|
||||
})
|
||||
|
||||
ipcMain.on('window-set-opacity', (_event, opacity) => {
|
||||
|
@@ -15,8 +15,8 @@
|
||||
"watch": "webpack --progress --color --watch"
|
||||
},
|
||||
"dependencies": {
|
||||
"@electron/remote": "2.0.8",
|
||||
"@tabby-gang/node-pty": "^0.11.0-beta.203",
|
||||
"@electron/remote": "2.0.10",
|
||||
"node-pty": "^1.0",
|
||||
"any-promise": "^1.3.0",
|
||||
"electron-config": "2.0.0",
|
||||
"electron-debug": "^3.2.0",
|
||||
@@ -32,13 +32,13 @@
|
||||
"rxjs": "^7.5.7",
|
||||
"source-map-support": "^0.5.20",
|
||||
"v8-compile-cache": "^2.3.0",
|
||||
"yargs": "^17.3.1"
|
||||
"yargs": "^17.7.2"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@tabby-gang/windows-blurbehind": "^3.0.0",
|
||||
"macos-native-processlist": "^2.1.0",
|
||||
"patch-package": "^6.5.0",
|
||||
"serialport": "10.5.0",
|
||||
"serialport": "11.0.1",
|
||||
"serialport-binding-webserialapi": "^1.0.3",
|
||||
"windows-native-registry": "^3.2.1",
|
||||
"windows-process-tree": "^0.4.0"
|
||||
@@ -46,10 +46,10 @@
|
||||
"devDependencies": {
|
||||
"@ngx-translate/core": "^14.0.0",
|
||||
"@types/mz": "2.7.4",
|
||||
"@types/node": "18.11.19",
|
||||
"atomically": "^1.7.0",
|
||||
"@types/node": "20.3.1",
|
||||
"atomically": "^2.0.2",
|
||||
"filesize": "^9",
|
||||
"ngx-filesize": "^3.0.1"
|
||||
"ngx-filesize": "^3.0.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"tabby-community-color-schemes": "*",
|
||||
|
@@ -92,12 +92,43 @@ export function initModuleLookup (userPluginsPath: string): void {
|
||||
})
|
||||
}
|
||||
|
||||
export async function findPlugins (): Promise<PluginInfo[]> {
|
||||
const paths = nodeModule.globalPaths
|
||||
let foundPlugins: PluginInfo[] = []
|
||||
const PLUGIN_PREFIX = 'tabby-'
|
||||
const LEGACY_PLUGIN_PREFIX = 'terminus-'
|
||||
|
||||
async function getCandidateLocationsInPluginDir (pluginDir: any): Promise<{ pluginDir: string, packageName: string }[]> {
|
||||
const candidateLocations: { pluginDir: string, packageName: string }[] = []
|
||||
const PREFIX = 'tabby-'
|
||||
const LEGACY_PREFIX = 'terminus-'
|
||||
|
||||
if (await fs.exists(pluginDir)) {
|
||||
const pluginNames = await fs.readdir(pluginDir)
|
||||
if (await fs.exists(path.join(pluginDir, 'package.json'))) {
|
||||
candidateLocations.push({
|
||||
pluginDir: path.dirname(pluginDir),
|
||||
packageName: path.basename(pluginDir),
|
||||
})
|
||||
}
|
||||
|
||||
const promises = []
|
||||
|
||||
for (const packageName of pluginNames) {
|
||||
if ((packageName.startsWith(PLUGIN_PREFIX) || packageName.startsWith(LEGACY_PLUGIN_PREFIX)) && !PLUGIN_BLACKLIST.includes(packageName)) {
|
||||
const pluginPath = path.join(pluginDir, packageName)
|
||||
const infoPath = path.join(pluginPath, 'package.json')
|
||||
promises.push(fs.exists(infoPath).then(result => {
|
||||
if (result) {
|
||||
candidateLocations.push({ pluginDir, packageName })
|
||||
}
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
await Promise.all(promises)
|
||||
}
|
||||
|
||||
return candidateLocations
|
||||
}
|
||||
|
||||
async function getPluginCandidateLocation (paths: any): Promise<{ pluginDir: string, packageName: string }[]> {
|
||||
const candidateLocationsPromises: Promise<{ pluginDir: string, packageName: string }[]>[] = []
|
||||
|
||||
const processedPaths = []
|
||||
|
||||
@@ -108,69 +139,84 @@ export async function findPlugins (): Promise<PluginInfo[]> {
|
||||
processedPaths.push(pluginDir)
|
||||
|
||||
pluginDir = normalizePath(pluginDir)
|
||||
if (!await fs.exists(pluginDir)) {
|
||||
continue
|
||||
}
|
||||
const pluginNames = await fs.readdir(pluginDir)
|
||||
if (await fs.exists(path.join(pluginDir, 'package.json'))) {
|
||||
candidateLocations.push({
|
||||
pluginDir: path.dirname(pluginDir),
|
||||
packageName: path.basename(pluginDir),
|
||||
})
|
||||
}
|
||||
for (const packageName of pluginNames) {
|
||||
if ((packageName.startsWith(PREFIX) || packageName.startsWith(LEGACY_PREFIX)) && !PLUGIN_BLACKLIST.includes(packageName)) {
|
||||
candidateLocations.push({ pluginDir, packageName })
|
||||
}
|
||||
}
|
||||
|
||||
candidateLocationsPromises.push(getCandidateLocationsInPluginDir(pluginDir))
|
||||
|
||||
}
|
||||
|
||||
for (const { pluginDir, packageName } of candidateLocations) {
|
||||
const pluginPath = path.join(pluginDir, packageName)
|
||||
const infoPath = path.join(pluginPath, 'package.json')
|
||||
if (!await fs.exists(infoPath)) {
|
||||
continue
|
||||
const candidateLocations: { pluginDir: string, packageName: string }[] = []
|
||||
for (const pluginCandidateLocations of await Promise.all(candidateLocationsPromises)) {
|
||||
candidateLocations.push(...pluginCandidateLocations)
|
||||
}
|
||||
|
||||
return candidateLocations
|
||||
}
|
||||
|
||||
async function parsePluginInfo (pluginDir: string, packageName: string): Promise<PluginInfo|null> {
|
||||
const pluginPath = path.join(pluginDir, packageName)
|
||||
const infoPath = path.join(pluginPath, 'package.json')
|
||||
|
||||
const name = packageName.startsWith(PLUGIN_PREFIX) ? packageName.substring(PLUGIN_PREFIX.length) : packageName.substring(LEGACY_PLUGIN_PREFIX.length)
|
||||
|
||||
try {
|
||||
const info = JSON.parse(await fs.readFile(infoPath, { encoding: 'utf-8' }))
|
||||
|
||||
if (!info.keywords || !(info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin') || info.keywords.includes('tabby-plugin') || info.keywords.includes('tabby-builtin-plugin'))) {
|
||||
return null
|
||||
}
|
||||
|
||||
const name = packageName.startsWith(PREFIX) ? packageName.substring(PREFIX.length) : packageName.substring(LEGACY_PREFIX.length)
|
||||
let author = info.author
|
||||
author = author.name || author
|
||||
|
||||
console.log(`Found ${name} in ${pluginDir}`)
|
||||
|
||||
return {
|
||||
name: name,
|
||||
packageName: packageName,
|
||||
isBuiltin: pluginDir === builtinPluginsPath,
|
||||
isLegacy: info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin'),
|
||||
version: info.version,
|
||||
description: info.description,
|
||||
author,
|
||||
path: pluginPath,
|
||||
info,
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Cannot load package info for', packageName)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
export async function findPlugins (): Promise<PluginInfo[]> {
|
||||
const paths = nodeModule.globalPaths
|
||||
let foundPlugins: PluginInfo[] = []
|
||||
|
||||
const candidateLocations: { pluginDir: string, packageName: string }[] = await getPluginCandidateLocation(paths)
|
||||
|
||||
const foundPluginsPromises: Promise<PluginInfo|null>[] = []
|
||||
for (const { pluginDir, packageName } of candidateLocations) {
|
||||
|
||||
if (builtinModules.includes(packageName) && pluginDir !== builtinPluginsPath) {
|
||||
continue
|
||||
}
|
||||
|
||||
console.log(`Found ${name} in ${pluginDir}`)
|
||||
foundPluginsPromises.push(parsePluginInfo(pluginDir, packageName))
|
||||
}
|
||||
|
||||
const existing = foundPlugins.find(x => x.name === name)
|
||||
if (existing) {
|
||||
if (existing.isLegacy) {
|
||||
console.info(`Plugin ${packageName} already exists, overriding`)
|
||||
foundPlugins = foundPlugins.filter(x => x.name !== name)
|
||||
} else {
|
||||
console.info(`Plugin ${packageName} already exists, skipping`)
|
||||
continue
|
||||
for (const pluginInfo of await Promise.all(foundPluginsPromises)) {
|
||||
if (pluginInfo) {
|
||||
const existing = foundPlugins.find(x => x.name === pluginInfo.name)
|
||||
if (existing) {
|
||||
if (existing.isLegacy) {
|
||||
console.info(`Plugin ${pluginInfo.packageName} already exists, overriding`)
|
||||
foundPlugins = foundPlugins.filter(x => x.name !== pluginInfo.name)
|
||||
} else {
|
||||
console.info(`Plugin ${pluginInfo.packageName} already exists, skipping`)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const info = JSON.parse(await fs.readFile(infoPath, { encoding: 'utf-8' }))
|
||||
if (!info.keywords || !(info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin') || info.keywords.includes('tabby-plugin') || info.keywords.includes('tabby-builtin-plugin'))) {
|
||||
continue
|
||||
}
|
||||
let author = info.author
|
||||
author = author.name || author
|
||||
foundPlugins.push({
|
||||
name: name,
|
||||
packageName: packageName,
|
||||
isBuiltin: pluginDir === builtinPluginsPath,
|
||||
isLegacy: info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin'),
|
||||
version: info.version,
|
||||
description: info.description,
|
||||
author,
|
||||
path: pluginPath,
|
||||
info,
|
||||
})
|
||||
} catch (error) {
|
||||
console.error('Cannot load package info for', packageName)
|
||||
foundPlugins.push(pluginInfo)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,26 +227,36 @@ export async function findPlugins (): Promise<PluginInfo[]> {
|
||||
|
||||
export async function loadPlugins (foundPlugins: PluginInfo[], progress: ProgressCallback): Promise<any[]> {
|
||||
const plugins: any[] = []
|
||||
progress(0, 1)
|
||||
const pluginsPromises: Promise<any>[] = []
|
||||
|
||||
let index = 0
|
||||
for (const foundPlugin of foundPlugins) {
|
||||
console.info(`Loading ${foundPlugin.name}: ${nodeRequire.resolve(foundPlugin.path)}`)
|
||||
progress(index, foundPlugins.length)
|
||||
try {
|
||||
const packageModule = nodeRequire(foundPlugin.path)
|
||||
if (foundPlugin.packageName.startsWith('tabby-')) {
|
||||
cachedBuiltinModules[foundPlugin.packageName.replace('tabby-', 'terminus-')] = packageModule
|
||||
}
|
||||
const pluginModule = packageModule.default.forRoot ? packageModule.default.forRoot() : packageModule.default
|
||||
pluginModule.pluginName = foundPlugin.name
|
||||
pluginModule.bootstrap = packageModule.bootstrap
|
||||
plugins.push(pluginModule)
|
||||
await new Promise(x => setTimeout(x, 50))
|
||||
} catch (error) {
|
||||
console.error(`Could not load ${foundPlugin.name}:`, error)
|
||||
}
|
||||
const setProgress = function () {
|
||||
index++
|
||||
progress(index, foundPlugins.length)
|
||||
}
|
||||
|
||||
progress(0, 1)
|
||||
for (const foundPlugin of foundPlugins) {
|
||||
pluginsPromises.push(new Promise(x => {
|
||||
console.info(`Loading ${foundPlugin.name}: ${nodeRequire.resolve(foundPlugin.path)}`)
|
||||
try {
|
||||
const packageModule = nodeRequire(foundPlugin.path)
|
||||
if (foundPlugin.packageName.startsWith('tabby-')) {
|
||||
cachedBuiltinModules[foundPlugin.packageName.replace('tabby-', 'terminus-')] = packageModule
|
||||
}
|
||||
const pluginModule = packageModule.default.forRoot ? packageModule.default.forRoot() : packageModule.default
|
||||
pluginModule.pluginName = foundPlugin.name
|
||||
pluginModule.bootstrap = packageModule.bootstrap
|
||||
plugins.push(pluginModule)
|
||||
} catch (error) {
|
||||
console.error(`Could not load ${foundPlugin.name}:`, error)
|
||||
}
|
||||
setProgress()
|
||||
setTimeout(x, 50)
|
||||
}))
|
||||
}
|
||||
await Promise.all(pluginsPromises)
|
||||
|
||||
progress(1, 1)
|
||||
return plugins
|
||||
}
|
||||
|
@@ -47,7 +47,7 @@ const config = {
|
||||
mz: 'commonjs mz',
|
||||
npm: 'commonjs npm',
|
||||
'node:os': 'commonjs os',
|
||||
'@tabby-gang/node-pty': 'commonjs @tabby-gang/node-pty',
|
||||
'node-pty': 'commonjs node-pty',
|
||||
path: 'commonjs path',
|
||||
util: 'commonjs util',
|
||||
'source-map-support': 'commonjs source-map-support',
|
||||
|
301
app/yarn.lock
301
app/yarn.lock
@@ -2,10 +2,10 @@
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@electron/remote@2.0.8":
|
||||
version "2.0.8"
|
||||
resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.8.tgz#85ff321f0490222993207106e2f720273bb1a5c3"
|
||||
integrity sha512-P10v3+iFCIvEPeYzTWWGwwHmqWnjoh8RYnbtZAb3RlQefy4guagzIwcWtfftABIfm6JJTNQf4WPSKWZOpLmHXw==
|
||||
"@electron/remote@2.0.10":
|
||||
version "2.0.10"
|
||||
resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.10.tgz#133e2f607b1861ac249bd78b5abd1e961feed713"
|
||||
integrity sha512-3SFKKaQXcyWgwmibud+UqJl/XlHOgLcI3fwtB9pNelPSJAcTxocOJrF6FaxBIQaj1+R05Di6xuAswZpXAW7xhA==
|
||||
|
||||
"@iarna/cli@^1.2.0":
|
||||
version "1.2.0"
|
||||
@@ -38,16 +38,16 @@
|
||||
"@serialport/bindings-interface" "^1.2.1"
|
||||
debug "^4.3.3"
|
||||
|
||||
"@serialport/bindings-cpp@10.8.0":
|
||||
version "10.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/bindings-cpp/-/bindings-cpp-10.8.0.tgz#79507b57022ac264e963e7fbf3647a3821569a20"
|
||||
integrity sha512-OMQNJz5kJblbmZN5UgJXLwi2XNtVLxSKmq5VyWuXQVsUIJD4l9UGHnLPqM5LD9u3HPZgDI5w7iYN7gxkQNZJUw==
|
||||
"@serialport/bindings-cpp@11.0.3":
|
||||
version "11.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/bindings-cpp/-/bindings-cpp-11.0.3.tgz#ab4d4826ef657e326b6c99d6b8a113d834378a93"
|
||||
integrity sha512-xgNDJ7pHHZCJMoDsEH+D8q5CV+V3RGN4/jLEG9SQ7q6kh+o03axV0l/upPHZ0HW4tTXpGgqPIGbXOTrD4RGQQA==
|
||||
dependencies:
|
||||
"@serialport/bindings-interface" "1.2.2"
|
||||
"@serialport/parser-readline" "^10.2.1"
|
||||
debug "^4.3.2"
|
||||
node-addon-api "^5.0.0"
|
||||
node-gyp-build "^4.3.0"
|
||||
"@serialport/parser-readline" "11.0.0"
|
||||
debug "4.3.4"
|
||||
node-addon-api "6.1.0"
|
||||
node-gyp-build "4.6.0"
|
||||
|
||||
"@serialport/bindings-interface@1.2.2":
|
||||
version "1.2.2"
|
||||
@@ -59,65 +59,77 @@
|
||||
resolved "https://registry.yarnpkg.com/@serialport/bindings-interface/-/bindings-interface-1.2.1.tgz#1ee80b0951ef4e4fd8a5a186621feff046aa2faf"
|
||||
integrity sha512-63Dyqz2gtryRDDckFusOYqLYhR3Hq/M4sEdbF9i/VsvDb6T+tNVgoAKUZ+FMrXXKnCSu+hYbk+MTc0XQANszxw==
|
||||
|
||||
"@serialport/parser-byte-length@10.5.0":
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-byte-length/-/parser-byte-length-10.5.0.tgz#f3d4c1c7923222df2f3d3c7c8aaaa207fe373b49"
|
||||
integrity sha512-eHhr4lHKboq1OagyaXAqkemQ1XyoqbLQC8XJbvccm95o476TmEdW5d7AElwZV28kWprPW68ZXdGF2VXCkJgS2w==
|
||||
"@serialport/parser-byte-length@11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-byte-length/-/parser-byte-length-11.0.1.tgz#26e4f3b2d66aaac0859b18a57c648d0eec78392a"
|
||||
integrity sha512-UsffR5b3NHwhjJzsWv5fZMkoq3wGNyUcRTA9jlu02w+2kMlBRJPzlPVB5szVX0VWUEqkCg+3VaU2XWuYr+uAUA==
|
||||
|
||||
"@serialport/parser-cctalk@10.5.0":
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-cctalk/-/parser-cctalk-10.5.0.tgz#0ee88db0768a361b7cfb9a394b74e480c38e1992"
|
||||
integrity sha512-Iwsdr03xmCKAiibLSr7b3w6ZUTBNiS+PwbDQXdKU/clutXjuoex83XvsOtYVcNZmwJlVNhAUbkG+FJzWwIa4DA==
|
||||
"@serialport/parser-cctalk@11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-cctalk/-/parser-cctalk-11.0.1.tgz#70c5ccc8fc5ebbe5c317005791155d3b2812efa6"
|
||||
integrity sha512-klzVQfRcC1m0SVDV2Dy9hHfwweO2/mUMUyuXK04FRkKHy5/AdETmk9KTVVVVfpDCSysvHoyQPwiDFq8ddwX3cQ==
|
||||
|
||||
"@serialport/parser-delimiter@10.5.0":
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-10.5.0.tgz#b0d93100cdfd0619d020a427d652495073f3b828"
|
||||
integrity sha512-/uR/yT3jmrcwnl2FJU/2ySvwgo5+XpksDUR4NF/nwTS5i3CcuKS+FKi/tLzy1k8F+rCx5JzpiK+koqPqOUWArA==
|
||||
"@serialport/parser-delimiter@11.0.0":
|
||||
version "11.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-11.0.0.tgz#e830c6bb49723d4446131277dc3243b502d09388"
|
||||
integrity sha512-aZLJhlRTjSmEwllLG7S4J8s8ctRAS0cbvCpO87smLvl3e4BgzbVgF6Z6zaJd3Aji2uSiYgfedCdNc4L6W+1E2g==
|
||||
|
||||
"@serialport/parser-inter-byte-timeout@10.5.0":
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-10.5.0.tgz#8665ee5e6138f794ac055e83ef2d1c3653a577c0"
|
||||
integrity sha512-WPvVlSx98HmmUF9jjK6y9mMp3Wnv6JQA0cUxLeZBgS74TibOuYG3fuUxUWGJALgAXotOYMxfXSezJ/vSnQrkhQ==
|
||||
"@serialport/parser-delimiter@11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-11.0.1.tgz#c0bcc24d8060c6b352cbe6003ebe95671ad32221"
|
||||
integrity sha512-NAsYa3OFt2xEnj/+0BRkQP2qkRNbXBPEq6uFJEdNdzcTSF+BTRXkoIRrWBq3N6koovPqW6lnbxc/iJYe5AX/2Q==
|
||||
|
||||
"@serialport/parser-packet-length@10.5.0":
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-packet-length/-/parser-packet-length-10.5.0.tgz#4c4d733bdff8cc4749f2bd750e42e66f8f478def"
|
||||
integrity sha512-jkpC/8w4/gUBRa2Teyn7URv1D7T//0lGj27/4u9AojpDVXsR6dtdcTG7b7dNirXDlOrSLvvN7aS5/GNaRlEByw==
|
||||
"@serialport/parser-inter-byte-timeout@11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-11.0.1.tgz#ed6d939eeb3bec94579fb3628dc6dcd0c9a3dd21"
|
||||
integrity sha512-PEFV9dSpW+ptH1rLhdB9KgE+rbJ/FvQiZz0mx+4jkv/Po4g3PNsEEMXfMW0aQVSFVsmitvmE0jHlhGjLv8GQEg==
|
||||
|
||||
"@serialport/parser-readline@10.5.0", "@serialport/parser-readline@^10.2.1":
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-10.5.0.tgz#df23365ae7f45679b1735deae26f72ba42802862"
|
||||
integrity sha512-0aXJknodcl94W9zSjvU+sLdXiyEG2rqjQmvBWZCr8wJZjWEtv3RgrnYiWq4i2OTOyC8C/oPK8ZjpBjQptRsoJQ==
|
||||
"@serialport/parser-packet-length@11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-packet-length/-/parser-packet-length-11.0.1.tgz#9d7982a6eeaf9a5bdfe642ceb287f171ab2965b7"
|
||||
integrity sha512-KwPu8dsAI+eN4fnUS1vVmrOpUtBK4p9L9cHhwn5ZmfcvwvZMHp/J+IEu7xH0g5aM1/8QEoaql26BQP+sZ71NQQ==
|
||||
|
||||
"@serialport/parser-readline@11.0.0":
|
||||
version "11.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-11.0.0.tgz#c2c8c88e163d2abf7c0ffddbc1845336444e3454"
|
||||
integrity sha512-rRAivhRkT3YO28WjmmG4FQX6L+KMb5/ikhyylRfzWPw0nSXy97+u07peS9CbHqaNvJkMhH1locp2H36aGMOEIA==
|
||||
dependencies:
|
||||
"@serialport/parser-delimiter" "10.5.0"
|
||||
"@serialport/parser-delimiter" "11.0.0"
|
||||
|
||||
"@serialport/parser-ready@10.5.0":
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-ready/-/parser-ready-10.5.0.tgz#1d9029f57b1abd664cb468e21bfccf7b44c6e8ea"
|
||||
integrity sha512-QIf65LTvUoxqWWHBpgYOL+soldLIIyD1bwuWelukem2yDZVWwEjR288cLQ558BgYxH4U+jLAQahhqoyN1I7BaA==
|
||||
"@serialport/parser-readline@11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-11.0.1.tgz#e85805ae803c2dc507eefa390abec6a67ceef313"
|
||||
integrity sha512-wkJ3EI733+yhbi7eBWzs/qn8+cfIBcYQjfrILPNqslAy6VlgdKw+pHoblDFmg78GN0TqGUDSWlTJ65oLEPVp5Q==
|
||||
dependencies:
|
||||
"@serialport/parser-delimiter" "11.0.1"
|
||||
|
||||
"@serialport/parser-regex@10.5.0":
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-regex/-/parser-regex-10.5.0.tgz#f98eab6e3d9bc99086269e9acf39a82db36d245f"
|
||||
integrity sha512-9jnr9+PCxRoLjtGs7uxwsFqvho+rxuJlW6ZWSB7oqfzshEZWXtTJgJRgac/RuLft4hRlrmRz5XU40i3uoL4HKw==
|
||||
"@serialport/parser-ready@11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-ready/-/parser-ready-11.0.1.tgz#bba01283a121880641e43c27193e6708fef2907c"
|
||||
integrity sha512-v/bvlgKhrNt+SVLSqlfXCO1HEinfRRMGnzqbpdVCgu2SiWIEenCLjs51JisKVYQoQFcXdP/EHZnzm7NPXHDlAg==
|
||||
|
||||
"@serialport/parser-slip-encoder@10.5.0":
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-slip-encoder/-/parser-slip-encoder-10.5.0.tgz#cb79ac0fda1fc87f049690ff7b498c787da67991"
|
||||
integrity sha512-wP8m+uXQdkWSa//3n+VvfjLthlabwd9NiG6kegf0fYweLWio8j4pJRL7t9eTh2Lbc7zdxuO0r8ducFzO0m8CQw==
|
||||
"@serialport/parser-regex@11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-regex/-/parser-regex-11.0.1.tgz#7833ca6029c8c58eb39dd6fe984756cf09d769b7"
|
||||
integrity sha512-Lf3k7qibYqZ0+/wX3UA8fRng3WtQ+UyLpjQhG1COs6OBSq5/I5tYXczfhlrbA0gHo1qzgzr2V2t7m6FoBSc81Q==
|
||||
|
||||
"@serialport/parser-spacepacket@10.5.0":
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-spacepacket/-/parser-spacepacket-10.5.0.tgz#2fc077c0ec16a9532c511ad5f2ab12d588796bc7"
|
||||
integrity sha512-BEZ/HAEMwOd8xfuJSeI/823IR/jtnThovh7ils90rXD4DPL1ZmrP4abAIEktwe42RobZjIPfA4PaVfyO0Fjfhg==
|
||||
"@serialport/parser-slip-encoder@11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-slip-encoder/-/parser-slip-encoder-11.0.1.tgz#4ba0c335627e3d1203279a5f8a4c1af0c829b7fe"
|
||||
integrity sha512-l4mXsAGzpmPO7+uqKJqtPDW643irfnGEWbiy34FoYvuOs8n0SmiMtgQZFAtvlTNQCRWE2tykF/WG6K/McJthDw==
|
||||
|
||||
"@serialport/stream@10.5.0":
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/stream/-/stream-10.5.0.tgz#cda8fb3e8d03094b0962a3d14b73adfcd591be58"
|
||||
integrity sha512-gbcUdvq9Kyv2HsnywS7QjnEB28g+6OGB5Z8TLP7X+UPpoMIWoUsoQIq5Kt0ZTgMoWn3JGM2lqwTsSHF+1qhniA==
|
||||
"@serialport/parser-spacepacket@11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/parser-spacepacket/-/parser-spacepacket-11.0.1.tgz#9e1c372f45433afb9a5dbec7b5a298c710b0455b"
|
||||
integrity sha512-Lq7fXoOsLOMo4XEt9HB31zV5LhrteXlsOy2o6r39TfRwU6x8Nou9jQMA9vW0a6yPra5zwsHIaNrA6tDOGj2Ozg==
|
||||
|
||||
"@serialport/stream@11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@serialport/stream/-/stream-11.0.1.tgz#ed40c66d517cfebf7185cd9c37ba0a08e76f88b2"
|
||||
integrity sha512-6pjyKRg8MQuvhGfg36+PF7K5eGNQcEswCSiAg1UPilqqFS8X1QnaiSCn5UFp/hCN+pAtlFjkOi0ztvtmSI7n4g==
|
||||
dependencies:
|
||||
"@serialport/bindings-interface" "1.2.2"
|
||||
debug "^4.3.2"
|
||||
debug "4.3.4"
|
||||
|
||||
"@serialport/stream@^9.0.2":
|
||||
version "9.2.4"
|
||||
@@ -126,13 +138,6 @@
|
||||
dependencies:
|
||||
debug "^4.3.2"
|
||||
|
||||
"@tabby-gang/node-pty@^0.11.0-beta.203":
|
||||
version "0.11.0-beta.204"
|
||||
resolved "https://registry.yarnpkg.com/@tabby-gang/node-pty/-/node-pty-0.11.0-beta.204.tgz#80d4393c7a233d3298f47a4755467a246b0099f9"
|
||||
integrity sha512-sNT5Z2MEkEIhToAdVAdZ/lfeQ9UgFE3h2ENlOux+WHBrl1k0BiUEIOd/jh/K3mNAGEfcZ44gNQQ50g5KXTQEmA==
|
||||
dependencies:
|
||||
nan "^2.16.0"
|
||||
|
||||
"@tabby-gang/windows-blurbehind@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@tabby-gang/windows-blurbehind/-/windows-blurbehind-3.0.0.tgz#48d409c2eb14a12c867b70de5ee4d6769ef45e8f"
|
||||
@@ -147,15 +152,10 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/node@*":
|
||||
version "18.7.23"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.23.tgz#75c580983846181ebe5f4abc40fe9dfb2d65665f"
|
||||
integrity sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==
|
||||
|
||||
"@types/node@18.11.19":
|
||||
version "18.11.19"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.19.tgz#35e26df9ec441ab99d73e99e9aca82935eea216d"
|
||||
integrity sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==
|
||||
"@types/node@*", "@types/node@20.3.1":
|
||||
version "20.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe"
|
||||
integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==
|
||||
|
||||
"@types/node@^10.12.18":
|
||||
version "10.17.60"
|
||||
@@ -327,10 +327,13 @@ asynckit@^0.4.0:
|
||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz"
|
||||
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
|
||||
|
||||
atomically@^1.7.0:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe"
|
||||
integrity sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==
|
||||
atomically@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/atomically/-/atomically-2.0.2.tgz#e5a6e8021441405b7a1c36d4587e25f7a13545f2"
|
||||
integrity sha512-Xfmb4q5QV7uqTlVdMSTtO5eF4DCHfNOdaPyKlbFShkzeNP+3lj3yjjcbdjSmEY4+pDBKJ9g26aP+ImTe88UHoQ==
|
||||
dependencies:
|
||||
stubborn-fs "^1.2.5"
|
||||
when-exit "^2.0.0"
|
||||
|
||||
aws-sign2@~0.7.0:
|
||||
version "0.7.0"
|
||||
@@ -583,13 +586,13 @@ cliui@^5.0.0:
|
||||
strip-ansi "^5.2.0"
|
||||
wrap-ansi "^5.1.0"
|
||||
|
||||
cliui@^7.0.2:
|
||||
version "7.0.4"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
|
||||
integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
|
||||
cliui@^8.0.1:
|
||||
version "8.0.1"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
|
||||
integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
|
||||
dependencies:
|
||||
string-width "^4.2.0"
|
||||
strip-ansi "^6.0.0"
|
||||
strip-ansi "^6.0.1"
|
||||
wrap-ansi "^7.0.0"
|
||||
|
||||
clone@^1.0.2:
|
||||
@@ -773,6 +776,13 @@ debug@3.1.0:
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@4.3.4, debug@^4.0.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
debug@^3.1.0:
|
||||
version "3.2.7"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
|
||||
@@ -780,13 +790,6 @@ debug@^3.1.0:
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
debug@^4.0.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
debuglog@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz"
|
||||
@@ -798,9 +801,9 @@ decamelize@^1.1.1, decamelize@^1.2.0:
|
||||
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
|
||||
|
||||
decode-uri-component@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
|
||||
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
|
||||
|
||||
decompress-response@^6.0.0:
|
||||
version "6.0.0"
|
||||
@@ -2257,7 +2260,7 @@ mz@^2.7.0:
|
||||
object-assign "^4.0.1"
|
||||
thenify-all "^1.0.0"
|
||||
|
||||
nan@^2.16.0, nan@^2.17.0, "nan@github:jkleinsc/nan#remove_accessor_signature":
|
||||
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"
|
||||
|
||||
@@ -2273,10 +2276,10 @@ native-process-working-directory@^1.0.2:
|
||||
dependencies:
|
||||
node-addon-api "^3.1.0"
|
||||
|
||||
ngx-filesize@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ngx-filesize/-/ngx-filesize-3.0.1.tgz#620933ae181a1128905404e43b26abb99accba90"
|
||||
integrity sha512-792I4fiG9EEPYjGib2+YTYAzfWIlccfy8uXNSXFFepuAntoS+eijLwnl0m7ajcQuNgbTtwEf9VmYIPN8mS3jqQ==
|
||||
ngx-filesize@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/ngx-filesize/-/ngx-filesize-3.0.2.tgz#aab5ce9ce6eaa421f0393447d9c01653f3839a2c"
|
||||
integrity sha512-0h1gzcQYeNcGzDVcQcdhKK8RCrXdIXn4foT/DcXRwoht0KL3FQemJFKZowZmXESL7cnLlETaeRSnsHuqfchoWg==
|
||||
dependencies:
|
||||
tslib "^2.3.0"
|
||||
|
||||
@@ -2304,16 +2307,16 @@ node-addon-api@3.1.0, node-addon-api@^3.0.2, node-addon-api@^3.1.0:
|
||||
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz"
|
||||
integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==
|
||||
|
||||
node-addon-api@6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76"
|
||||
integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==
|
||||
|
||||
node-addon-api@^4.0.0, node-addon-api@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
|
||||
integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==
|
||||
|
||||
node-addon-api@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.0.0.tgz#7d7e6f9ef89043befdb20c1989c905ebde18c501"
|
||||
integrity sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==
|
||||
|
||||
node-fetch-npm@^2.0.2:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4"
|
||||
@@ -2323,10 +2326,10 @@ node-fetch-npm@^2.0.2:
|
||||
json-parse-better-errors "^1.0.0"
|
||||
safe-buffer "^5.1.1"
|
||||
|
||||
node-gyp-build@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
|
||||
integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
|
||||
node-gyp-build@4.6.0:
|
||||
version "4.6.0"
|
||||
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055"
|
||||
integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==
|
||||
|
||||
node-gyp@^5.0.2, node-gyp@^5.1.0:
|
||||
version "5.1.1"
|
||||
@@ -2345,6 +2348,13 @@ node-gyp@^5.0.2, node-gyp@^5.1.0:
|
||||
tar "^4.4.12"
|
||||
which "^1.3.1"
|
||||
|
||||
node-pty@^1.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-1.0.0.tgz#7daafc0aca1c4ca3de15c61330373af4af5861fd"
|
||||
integrity sha512-wtBMWWS7dFZm/VgqElrTvtfMq4GzJ6+edFI0Y0zyzygUSZMgZdraDUMUhCIvkjhJjme15qWmbyJbtAx4ot4uZA==
|
||||
dependencies:
|
||||
nan "^2.17.0"
|
||||
|
||||
nopt@^4.0.1, nopt@^4.0.3:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
|
||||
@@ -3004,9 +3014,9 @@ qrcode-terminal@^0.12.0:
|
||||
integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==
|
||||
|
||||
qs@~6.5.2:
|
||||
version "6.5.2"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz"
|
||||
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
||||
version "6.5.3"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad"
|
||||
integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
|
||||
|
||||
query-string@^6.8.2:
|
||||
version "6.13.8"
|
||||
@@ -3292,25 +3302,25 @@ serialport-binding-webserialapi@^1.0.3:
|
||||
"@serialport/binding-abstract" "^9.0.2"
|
||||
"@serialport/stream" "^9.0.2"
|
||||
|
||||
serialport@10.5.0:
|
||||
version "10.5.0"
|
||||
resolved "https://registry.yarnpkg.com/serialport/-/serialport-10.5.0.tgz#b85f614def6e8914e5865c798b0555330903a0f8"
|
||||
integrity sha512-7OYLDsu5i6bbv3lU81pGy076xe0JwpK6b49G6RjNvGibstUqQkI+I3/X491yBGtf4gaqUdOgoU1/5KZ/XxL4dw==
|
||||
serialport@11.0.1:
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/serialport/-/serialport-11.0.1.tgz#9c7aad877d38124a938a50f89eaef22c44825eae"
|
||||
integrity sha512-j/ntDuewAkqL6g5wKjwV2RTyLBL9cpob8aRd3yLAViYApTsJoYqRleyuzst0OboNTBjBsoxQ4YKYhuYHi1XViQ==
|
||||
dependencies:
|
||||
"@serialport/binding-mock" "10.2.2"
|
||||
"@serialport/bindings-cpp" "10.8.0"
|
||||
"@serialport/parser-byte-length" "10.5.0"
|
||||
"@serialport/parser-cctalk" "10.5.0"
|
||||
"@serialport/parser-delimiter" "10.5.0"
|
||||
"@serialport/parser-inter-byte-timeout" "10.5.0"
|
||||
"@serialport/parser-packet-length" "10.5.0"
|
||||
"@serialport/parser-readline" "10.5.0"
|
||||
"@serialport/parser-ready" "10.5.0"
|
||||
"@serialport/parser-regex" "10.5.0"
|
||||
"@serialport/parser-slip-encoder" "10.5.0"
|
||||
"@serialport/parser-spacepacket" "10.5.0"
|
||||
"@serialport/stream" "10.5.0"
|
||||
debug "^4.3.3"
|
||||
"@serialport/bindings-cpp" "11.0.3"
|
||||
"@serialport/parser-byte-length" "11.0.1"
|
||||
"@serialport/parser-cctalk" "11.0.1"
|
||||
"@serialport/parser-delimiter" "11.0.1"
|
||||
"@serialport/parser-inter-byte-timeout" "11.0.1"
|
||||
"@serialport/parser-packet-length" "11.0.1"
|
||||
"@serialport/parser-readline" "11.0.1"
|
||||
"@serialport/parser-ready" "11.0.1"
|
||||
"@serialport/parser-regex" "11.0.1"
|
||||
"@serialport/parser-slip-encoder" "11.0.1"
|
||||
"@serialport/parser-spacepacket" "11.0.1"
|
||||
"@serialport/stream" "11.0.1"
|
||||
debug "4.3.4"
|
||||
|
||||
set-blocking@^2.0.0, set-blocking@~2.0.0:
|
||||
version "2.0.0"
|
||||
@@ -3609,6 +3619,11 @@ strip-json-comments@~2.0.1:
|
||||
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
|
||||
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
|
||||
|
||||
stubborn-fs@^1.2.5:
|
||||
version "1.2.5"
|
||||
resolved "https://registry.yarnpkg.com/stubborn-fs/-/stubborn-fs-1.2.5.tgz#e5e244223166921ddf66ed5e062b6b3bf285bfd2"
|
||||
integrity sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==
|
||||
|
||||
supports-color@^5.3.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
|
||||
@@ -3728,12 +3743,7 @@ tough-cookie@~2.5.0:
|
||||
psl "^1.1.28"
|
||||
punycode "^2.1.1"
|
||||
|
||||
tslib@^2.1.0:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
|
||||
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
|
||||
|
||||
tslib@^2.3.0:
|
||||
tslib@^2.1.0, tslib@^2.3.0:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
|
||||
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
|
||||
@@ -3906,6 +3916,11 @@ wcwidth@^1.0.0:
|
||||
dependencies:
|
||||
defaults "^1.0.3"
|
||||
|
||||
when-exit@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/when-exit/-/when-exit-2.1.0.tgz#0f7b5d7d5f00ea2c4b131b546c444cca2c4ffba7"
|
||||
integrity sha512-H85ulNwUBU1e6PGxkWUDgxnbohSXD++ah6Xw1VHAN7CtypcbZaC4aYjQ+C2PMVaDkURDuOinNAT+Lnz3utWXxQ==
|
||||
|
||||
which-module@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz"
|
||||
@@ -4053,10 +4068,10 @@ yargs-parser@^15.0.1:
|
||||
camelcase "^5.0.0"
|
||||
decamelize "^1.2.0"
|
||||
|
||||
yargs-parser@^21.0.0:
|
||||
version "21.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55"
|
||||
integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==
|
||||
yargs-parser@^21.1.1:
|
||||
version "21.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
|
||||
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
|
||||
|
||||
yargs-parser@^7.0.0:
|
||||
version "7.0.0"
|
||||
@@ -4082,18 +4097,18 @@ yargs@^14.2.3:
|
||||
y18n "^4.0.0"
|
||||
yargs-parser "^15.0.1"
|
||||
|
||||
yargs@^17.3.1:
|
||||
version "17.3.1"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.1.tgz#da56b28f32e2fd45aefb402ed9c26f42be4c07b9"
|
||||
integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==
|
||||
yargs@^17.7.2:
|
||||
version "17.7.2"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
|
||||
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
|
||||
dependencies:
|
||||
cliui "^7.0.2"
|
||||
cliui "^8.0.1"
|
||||
escalade "^3.1.1"
|
||||
get-caller-file "^2.0.5"
|
||||
require-directory "^2.1.1"
|
||||
string-width "^4.2.3"
|
||||
y18n "^5.0.5"
|
||||
yargs-parser "^21.0.0"
|
||||
yargs-parser "^21.1.1"
|
||||
|
||||
yargs@^8.0.2:
|
||||
version "8.0.2"
|
||||
|
@@ -1,16 +0,0 @@
|
||||
const fs = require('fs')
|
||||
const signHook = require('./afterSignHook.cjs')
|
||||
|
||||
module.exports = async function (params) {
|
||||
// notarize the app on Mac OS only.
|
||||
if (process.platform !== 'darwin' || !process.env.GITHUB_REF || !process.env.GITHUB_REF.startsWith('refs/tags/')) {
|
||||
return
|
||||
}
|
||||
console.log('afterBuild hook triggered')
|
||||
|
||||
let pkgName = fs.readdirSync('dist').find(x => x.endsWith('.pkg'))
|
||||
signHook({
|
||||
appOutDir: 'dist',
|
||||
_pathOverride: pkgName,
|
||||
})
|
||||
}
|
@@ -1,35 +0,0 @@
|
||||
// See: https://medium.com/@TwitterArchiveEraser/notarize-electron-apps-7a5f988406db
|
||||
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const notarizer = require('electron-notarize')
|
||||
|
||||
module.exports = async function (params) {
|
||||
// notarize the app on Mac OS only.
|
||||
if (process.platform !== 'darwin' || !process.env.GITHUB_REF || !process.env.GITHUB_REF.startsWith('refs/tags/')) {
|
||||
return
|
||||
}
|
||||
console.log('afterSign hook triggered', params)
|
||||
|
||||
let appId = 'org.tabby'
|
||||
|
||||
let appPath = path.join(params.appOutDir, params._pathOverride || `${params.packager.appInfo.productFilename}.app`)
|
||||
if (!fs.existsSync(appPath)) {
|
||||
throw new Error(`Cannot find application at: ${appPath}`)
|
||||
}
|
||||
|
||||
console.log(`Notarizing ${appId} found at ${appPath}`)
|
||||
|
||||
try {
|
||||
await notarizer.notarize({
|
||||
appBundleId: appId,
|
||||
appPath: appPath,
|
||||
appleId: process.env.APPSTORE_USERNAME,
|
||||
appleIdPassword: process.env.APPSTORE_PASSWORD,
|
||||
})
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
}
|
||||
|
||||
console.log(`Done notarizing ${appId}`)
|
||||
}
|
@@ -3,8 +3,6 @@ appId: org.tabby
|
||||
productName: Tabby
|
||||
compression: normal
|
||||
npmRebuild: false
|
||||
afterSign: "./build/mac/afterSignHook.cjs"
|
||||
afterAllArtifactBuild: "./build/mac/afterBuildHook.cjs"
|
||||
files:
|
||||
- '**/*'
|
||||
- dist
|
||||
|
2448
locale/cs-CZ.po
Normal file
2448
locale/cs-CZ.po
Normal file
File diff suppressed because it is too large
Load Diff
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de_DE\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -319,7 +319,7 @@ msgstr "Farbschema"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "Farben"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,7 +339,7 @@ msgstr "Befehle"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Kompakt (alte Version)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
@@ -405,7 +405,7 @@ msgstr "Kontextmenü"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "Legt den Abstand zwischen den Elementen fest"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -844,7 +844,7 @@ msgstr "Fokussiere den Bereich rechts"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "An Farbschema halten"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "Bereiche"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Paper (Vorgängerversion)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "Quellcode"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "Platzhalter"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "SSH-Passwort für {user}@{host}:{port}"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Standard (alte Version)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2126,7 +2126,7 @@ msgstr "Tab Position "
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:141
|
||||
msgid "Tabs width"
|
||||
msgstr "Tabs Breite"
|
||||
msgstr "Tab Breite"
|
||||
|
||||
#: tabby-telnet/src/profiles.ts:32
|
||||
msgid "Telnet session"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "Ob ein benutzerdefiniertes Fenster- oder das Fenster Layout des Betriebs
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "Verhindert, dass die SSH-Begrüßung angezeigt wird"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: English, United Kingdom\n"
|
||||
"Language: en_GB\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -319,7 +319,7 @@ msgstr "Colour scheme"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "Colours"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -844,7 +844,7 @@ msgstr ""
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "Follow the colour scheme"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -1431,7 +1431,7 @@ msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:189
|
||||
msgid "Pane resize step"
|
||||
msgstr "Pane resise step"
|
||||
msgstr "Pane resize step"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:186
|
||||
msgid "Panes"
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Language: es_ES\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -319,7 +319,7 @@ msgstr "Esquema de color"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "Colores"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,11 +339,11 @@ msgstr "Comandos"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Compacto (heredado)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
msgstr ""
|
||||
msgstr "Configuración eliminada"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:108
|
||||
msgid "Config downloaded"
|
||||
@@ -405,7 +405,7 @@ msgstr "Menú contextual"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "Controla la cantidad de espacio entre los elementos"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -426,7 +426,7 @@ msgstr "Copiar la ruta actual"
|
||||
|
||||
#: tabby-electron/src/sftpContextMenu.ts:29
|
||||
msgid "Copy full path"
|
||||
msgstr ""
|
||||
msgstr "Copiar ruta completa"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:97
|
||||
msgid "Copy on select"
|
||||
@@ -552,7 +552,7 @@ msgstr "Eliminar palabra anterior"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:114
|
||||
msgid "Delete the config on the remote side?"
|
||||
msgstr ""
|
||||
msgstr "¿Eliminar la configuración del lado remoto?"
|
||||
|
||||
#: tabby-settings/src/components/profilesSettingsTab.component.ts:221
|
||||
msgid "Delete the group's profiles?"
|
||||
@@ -844,7 +844,7 @@ msgstr "Central el panel de la derecha"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "Seguir el esquema de colores"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -993,7 +993,7 @@ msgstr "Teclas de acceso rápido"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
|
||||
msgid "How Tabby presents itself through environment vars"
|
||||
msgstr ""
|
||||
msgstr "Cómo Tabby se presenta a través de las variables de entorno"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
|
||||
msgid "HTTP proxy"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "Paneles"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Papel (heredado)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "Código fuente"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "Espaciado"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "Contraseña SSH para {user}@{host}:{port}"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Estándar (heredado)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2147,7 +2147,7 @@ msgstr "Campana de la terminal"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:68
|
||||
msgid "Terminal identification"
|
||||
msgstr ""
|
||||
msgstr "Identificación del Terminal"
|
||||
|
||||
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:7
|
||||
msgid "Thank you for downloading Tabby!"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "Si se debe usar una ventana personalizada o una ventana nativa del siste
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "Evitar que aparezca el mensaje de bienvenida SSH"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr_FR\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -319,7 +319,7 @@ msgstr "Schéma de couleurs"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "Couleurs"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,7 +339,7 @@ msgstr "Commandes"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Compact (hérité)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
@@ -405,7 +405,7 @@ msgstr "Menu contextuel"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "Contrôle la quantité d'espace entre les éléments"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -607,7 +607,7 @@ msgstr "Déconnecter"
|
||||
#: tabby-ssh/src/components/sshTab.component.ts:247
|
||||
#: tabby-telnet/src/components/telnetTab.component.ts:113
|
||||
msgid "Disconnect from {host}?"
|
||||
msgstr "Déconnectez de {host} ?"
|
||||
msgstr "Se déconnecter de {host}?"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:30
|
||||
msgid "Display images via Sixel escape sequences"
|
||||
@@ -844,7 +844,7 @@ msgstr "Focus sur le volet à droite"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "Suivre le schéma de couleurs"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "Panneaux"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Papier (héritage)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1694,7 +1694,7 @@ msgstr "Réutiliser la session pour plusieurs onglets"
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:78
|
||||
#: tabby-core/src/tabContextMenu.ts:78
|
||||
msgid "Right"
|
||||
msgstr "Droit"
|
||||
msgstr "Droite"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:56
|
||||
msgid "Right click"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "Code source"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "Espacement"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "Mot de passe SSH pour {user}@{host}:{port}"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Standard (hérité)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2236,7 +2236,7 @@ msgstr "Désépingler"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:81
|
||||
msgid "Up"
|
||||
msgstr "Monter"
|
||||
msgstr "Haut"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:14
|
||||
#: tabby-electron/src/services/updater.service.ts:133
|
||||
@@ -2364,7 +2364,7 @@ msgstr "Indique si une fenêtre personnalisée ou une fenêtre native de l'OS do
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "Empêchera l'affichage du message de salutation SSH"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Croatian\n"
|
||||
"Language: hr_HR\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -256,7 +256,7 @@ msgstr "Šifre"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/colorSchemeSelector.component.html:5
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
msgstr "Isprazni"
|
||||
|
||||
#: tabby-core/src/services/profiles.service.ts:133
|
||||
msgid "Clear recent profiles"
|
||||
@@ -268,7 +268,7 @@ msgstr "Isprazni terminal"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:49
|
||||
msgid "Clear terminal after connection"
|
||||
msgstr ""
|
||||
msgstr "Isprazni terminal nakon povezivanja"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:94
|
||||
msgid "Clipboard"
|
||||
@@ -319,7 +319,7 @@ msgstr "Shema boja"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "Boje"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,11 +339,11 @@ msgstr "Naredbe"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Kompaktno (zastarjelo)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
msgstr ""
|
||||
msgstr "Konfiguracija je izbrisana"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:108
|
||||
msgid "Config downloaded"
|
||||
@@ -405,7 +405,7 @@ msgstr "Kontekstni izbornik"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "Kontrolira količinu prostora između elemenata"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -426,7 +426,7 @@ msgstr "Kopiraj trenutačnu stazu"
|
||||
|
||||
#: tabby-electron/src/sftpContextMenu.ts:29
|
||||
msgid "Copy full path"
|
||||
msgstr ""
|
||||
msgstr "Kopiraj potpunu stazu"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:97
|
||||
msgid "Copy on select"
|
||||
@@ -552,7 +552,7 @@ msgstr "Izbriši prethodnu riječ"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:114
|
||||
msgid "Delete the config on the remote side?"
|
||||
msgstr ""
|
||||
msgstr "Izbrisati konfiguraciju na udaljenom uređaju?"
|
||||
|
||||
#: tabby-settings/src/components/profilesSettingsTab.component.ts:221
|
||||
msgid "Delete the group's profiles?"
|
||||
@@ -844,7 +844,7 @@ msgstr "Postavi desnu ploču kao aktivnu"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "Slijedi shemu boja"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -993,7 +993,7 @@ msgstr "Tipkovni prečaci"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
|
||||
msgid "How Tabby presents itself through environment vars"
|
||||
msgstr ""
|
||||
msgstr "Kako se Tabby predstavlja kroz različita okruženja"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
|
||||
msgid "HTTP proxy"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "Ploče"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Papir (zastarjelo)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "Izvorni kod"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "Razmak"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "SSH lozinka za {user}@{host}:{port}"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Standardno (zastarjelo)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2147,7 +2147,7 @@ msgstr "Zvono terminala"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:68
|
||||
msgid "Terminal identification"
|
||||
msgstr ""
|
||||
msgstr "Identifikacija terminala"
|
||||
|
||||
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:7
|
||||
msgid "Thank you for downloading Tabby!"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "Da li koristiti prilagođeni prozor ili izvorni prozor OS-a"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "Spriječit će pojavljivanje SSH pozdrava"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Italian\n"
|
||||
"Language: it_IT\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -319,7 +319,7 @@ msgstr "Tema del terminale"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "Colori"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,7 +339,7 @@ msgstr "Comandi"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Compatto (legacy)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
@@ -378,7 +378,7 @@ msgstr "Connessione a \"%s\"..."
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:17
|
||||
msgid "Connect to a different host first and use it as a proxy"
|
||||
msgstr "Connettersi prima a un altro host e utilizzarlo come proxy"
|
||||
msgstr "Connettiti prima ad un altro host e usalo come proxy"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sftpPanel.component.html:19
|
||||
#: tabby-serial/src/components/serialTab.component.ts:65
|
||||
@@ -405,7 +405,7 @@ msgstr "Menu contestuale"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "Controlla la quantità di spazio tra gli elementi"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -844,7 +844,7 @@ msgstr "Evidenzia il riquadro a destra"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "Segui lo schema dei colori"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "Riquadri"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Carta (legacy)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "Codice sorgente"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "Vuoto"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "Password SSH per {user}@{host}:{port}"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Standard (legacy)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "Indica se usare una cornice personalizzata o nativa del sistema operativ
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "Impedirà l'apparizione dei Greeting SSH"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Japanese\n"
|
||||
"Language: ja_JP\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -148,7 +148,7 @@ msgstr "自動"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:153
|
||||
msgid "Auto-open a terminal on app start"
|
||||
msgstr "アプリケーション起動時に新しい端末を自動で開く"
|
||||
msgstr "起動時に新しい端末を自動で開く"
|
||||
|
||||
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:13
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:53
|
||||
@@ -214,7 +214,7 @@ msgstr "ブロードキャストモードです。中断するにはクリック
|
||||
#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:50
|
||||
#: tabby-settings/src/components/profilesSettingsTab.component.ts:182
|
||||
msgid "Built-in"
|
||||
msgstr "組込み"
|
||||
msgstr "標準"
|
||||
|
||||
#: locale/tmp-html/tabby-core/src/components/renameTabModal.component.html:7
|
||||
#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:53
|
||||
@@ -319,7 +319,7 @@ msgstr "配色"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "配色"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,7 +339,7 @@ msgstr "コマンド"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "コンパクト (非推奨)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
@@ -405,7 +405,7 @@ msgstr "コンテキストメニュー"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "UI要素間の間隔を変更します"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -479,7 +479,7 @@ msgstr "カスタム"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:90
|
||||
msgid "Custom CSS"
|
||||
msgstr "カスタム CSS"
|
||||
msgstr "カスタムCSS"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:26
|
||||
msgid "Data bits"
|
||||
@@ -844,7 +844,7 @@ msgstr "右側のペインにフォーカス"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "配色設定に合わせる"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -947,7 +947,7 @@ msgstr "Tabbyの翻訳に参加する"
|
||||
#: tabby-terminal/src/components/streamProcessingSettings.component.ts:32
|
||||
#: tabby-terminal/src/components/streamProcessingSettings.component.ts:44
|
||||
msgid "Hexadecimal"
|
||||
msgstr "16進"
|
||||
msgstr "16進数"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:176
|
||||
msgid "Hide tab close button"
|
||||
@@ -1427,7 +1427,7 @@ msgstr "リモート側の設定を上書きして同期を開始しますか?
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:96
|
||||
msgid "Overwrite the local config and start syncing?"
|
||||
msgstr "ローカル設定を上書きして同期を開始しますか?"
|
||||
msgstr "これまでのローカル上の設定を上書きして、同期を開始しますか?"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:189
|
||||
msgid "Pane resize step"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "ペイン"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "ペーパー (非推奨)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1451,7 +1451,7 @@ msgstr "設定ファイルがVaultによって暗号化されている場合、
|
||||
|
||||
#: tabby-settings/src/components/vaultSettingsTab.component.ts:87
|
||||
msgid "Passphrase for a private key with hash {hash}..."
|
||||
msgstr "ハッシュ値 {hash}... の秘密鍵のパスフレーズ"
|
||||
msgstr "秘密鍵のパスフレーズ ハッシュ値 {hash}..."
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:100
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:82
|
||||
@@ -1470,7 +1470,7 @@ msgstr "クリップボードから貼り付け"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:63
|
||||
msgid "Paste if no selection, else copy"
|
||||
msgstr "テキストを選択していない場合は貼り付け、選択中はコピー"
|
||||
msgstr "通常は貼り付け、テキスト選択時のみコピー、"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:490
|
||||
msgid "Paste multiple lines?"
|
||||
@@ -1684,7 +1684,7 @@ msgstr "変更を反映するには再起動が必要です"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:159
|
||||
msgid "Restore terminal tabs on app start"
|
||||
msgstr "アプリケーション起動時に以前開いていたタブを復元する"
|
||||
msgstr "起動時に以前開いていたタブを復元する"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:147
|
||||
msgid "Reuse session for multiple tabs"
|
||||
@@ -1810,7 +1810,7 @@ msgstr "プロファイルの選択、またはアドレスを入力"
|
||||
|
||||
#: tabby-terminal/src/components/streamProcessingSettings.component.ts:33
|
||||
msgid "Send bytes by typing in hex values"
|
||||
msgstr "16進数の値を入力してバイトを送信"
|
||||
msgstr "16進数で入力したバイトを送信"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:75
|
||||
msgid "Sends data one byte at a time"
|
||||
@@ -1882,7 +1882,7 @@ msgstr "複数行を貼り付ける際に確認ボックスを表示します"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:61
|
||||
msgid "Show built-in profiles in selector"
|
||||
msgstr "セレクターに組み込みプロファイルを表示する"
|
||||
msgstr "セレクターに標準プロファイルを表示する"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:13
|
||||
msgid "Show command selector"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "ソースコード"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "UIの間隔"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2015,7 +2015,7 @@ msgstr "SSH接続"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:53
|
||||
msgid "SSH connection management is now done through the \"Profiles & connections\" tab"
|
||||
msgstr "SSH接続の管理は「プロファイルと接続」タブからできるようになりました。"
|
||||
msgstr "SSH接続の管理は「プロファイルと接続」からできるようになりました。"
|
||||
|
||||
#: tabby-settings/src/components/vaultSettingsTab.component.ts:84
|
||||
msgid "SSH password for {user}@{host}:{port}"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "{user}@{host}:{port} のSSHパスワード"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "標準 (非推奨)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2352,7 +2352,7 @@ msgstr "最新情報"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:82
|
||||
msgid "When enabled, links are only clickable while holding this key"
|
||||
msgstr "有効な場合、指定されたキーを押しながらクリックしたときだけ、リンクを開けるようにします。"
|
||||
msgstr "有効にすると、特定のキーを押しながらクリックした時だけ、リンクを開けるようにします。"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:18
|
||||
msgid "When WinSCP is detected, you can launch an SCP session from the context menu."
|
||||
@@ -2360,11 +2360,11 @@ msgstr "WinSCPが検出されると、コンテキストメニューからSCPセ
|
||||
|
||||
#: 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 "カスタムウィンドウを使用するか、OS標準のウィンドウを使用するかを選択することができます。"
|
||||
msgstr "カスタムウィンドウを使用するか、OSの標準ウィンドウを使用するかを選択できます。"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "SSH接続時のメッセージが表示されなくなります"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Korean\n"
|
||||
"Language: ko_KR\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -166,7 +166,7 @@ msgstr "자동으로 변경사항 업로드 후 매 분마다 갱신 확인"
|
||||
|
||||
#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:10
|
||||
msgid "Available"
|
||||
msgstr "유효한"
|
||||
msgstr "사용 가능"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:35
|
||||
msgid "Background type"
|
||||
@@ -319,7 +319,7 @@ msgstr "색상 구성"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "색상"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -405,7 +405,7 @@ msgstr "컨텍스트 메뉴"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "UI 요소 간 간격을 변경합니다"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -552,7 +552,7 @@ msgstr "이전 단어 삭제"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:114
|
||||
msgid "Delete the config on the remote side?"
|
||||
msgstr ""
|
||||
msgstr "리모트 설정을 삭제하시겠습니까?"
|
||||
|
||||
#: tabby-settings/src/components/profilesSettingsTab.component.ts:221
|
||||
msgid "Delete the group's profiles?"
|
||||
@@ -707,7 +707,7 @@ msgstr "업데이트 가능할 때 자동으로 설치하도록 활성"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
|
||||
msgid "Enable fluent background option"
|
||||
msgstr ""
|
||||
msgstr "fluent 배경 활성화"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:16
|
||||
msgid "Enable font ligatures"
|
||||
@@ -756,7 +756,7 @@ msgstr "예시:"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212
|
||||
msgid "Experimental Windows 10 background style known to cause issues"
|
||||
msgstr ""
|
||||
msgstr "실험 버전의 Windows 10에서 배경 스타일이 충돌할 수 있습니다"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:27
|
||||
msgid "Export"
|
||||
@@ -844,7 +844,7 @@ msgstr "오른쪽 항목 포커스"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "색상표 설정을 따릅니다"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -1435,7 +1435,7 @@ msgstr "창 크기 조절 단계"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:186
|
||||
msgid "Panes"
|
||||
msgstr ""
|
||||
msgstr "패널"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
@@ -1587,7 +1587,7 @@ msgstr "Raw 소켓 연결"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:166
|
||||
msgid "Ready Timeout (Milliseconds)"
|
||||
msgstr ""
|
||||
msgstr "타임아웃 (밀리초)"
|
||||
|
||||
#: tabby-core/src/services/profiles.service.ts:120
|
||||
#: tabby-core/src/services/profiles.service.ts:134
|
||||
@@ -1647,7 +1647,7 @@ msgstr "마지막 탭 다시 열기"
|
||||
#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:42
|
||||
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:26
|
||||
msgid "Replace"
|
||||
msgstr ""
|
||||
msgstr "덮어쓰기"
|
||||
|
||||
#: locale/tmp-html/tabby-core/src/components/startPage.component.html:11
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:21
|
||||
@@ -1724,7 +1724,7 @@ msgstr "프로필로 저장"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:148
|
||||
msgid "Save layout as profile"
|
||||
msgstr ""
|
||||
msgstr "프로파일로 레이아웃 저장"
|
||||
|
||||
#: tabby-local/src/tabContextMenu.ts:48
|
||||
msgid "Saved"
|
||||
@@ -1798,7 +1798,7 @@ msgstr "전체 선택"
|
||||
|
||||
#: tabby-core/src/services/fileProviders.service.ts:46
|
||||
msgid "Select file storage"
|
||||
msgstr ""
|
||||
msgstr "저장소에서 파일 선택"
|
||||
|
||||
#: tabby-core/src/index.ts:225
|
||||
msgid "Select profile"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "소스 코드"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "UI 간격"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2039,7 +2039,7 @@ msgstr ""
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:41
|
||||
msgid "Subscribe to updates"
|
||||
msgstr ""
|
||||
msgstr "새로운 소식 구독하기"
|
||||
|
||||
#: locale/tmp-html/tabby-local/src/components/environmentEditor.component.html:13
|
||||
msgid "Substitutions allowed."
|
||||
@@ -2051,7 +2051,7 @@ msgstr "프로필 전환"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:237
|
||||
msgid "Switch profile in the active pane"
|
||||
msgstr ""
|
||||
msgstr "활성화된 패널의 프로파일을 전환"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:7
|
||||
msgid "Switches terminal frontend implementation (experimental)"
|
||||
@@ -2114,11 +2114,11 @@ msgstr "Tabby가 플러그인과 함께 시작할 수 없으므로, 이 세션
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:41
|
||||
msgid "Tabby news and updates on Twitter"
|
||||
msgstr ""
|
||||
msgstr "Twitter에서 Tabby의 최신 정보를 받을 수 있습니다"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:123
|
||||
msgid "Tabs"
|
||||
msgstr ""
|
||||
msgstr "탭"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:126
|
||||
msgid "Tabs location"
|
||||
@@ -2183,11 +2183,11 @@ msgstr "전체화면 전환"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:37
|
||||
msgid "Toggle last tab"
|
||||
msgstr ""
|
||||
msgstr "마지막 탭 전환"
|
||||
|
||||
#: tabby-electron/src/hotkeys.ts:14
|
||||
msgid "Toggle terminal window"
|
||||
msgstr ""
|
||||
msgstr "터미널 창 전환"
|
||||
|
||||
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:27
|
||||
msgid "Toggles the Tabby window visibility"
|
||||
@@ -2254,7 +2254,7 @@ msgstr "업로드"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:46
|
||||
msgid "Upload as a new config"
|
||||
msgstr ""
|
||||
msgstr "새로운 설정으로 업로드"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:39
|
||||
msgid "Use {altKeyName} as the Meta key"
|
||||
@@ -2279,7 +2279,7 @@ msgstr "CONNECT 메서드 사용"
|
||||
|
||||
#: tabby-ssh/src/session/ssh.ts:471
|
||||
msgid "Using preset password"
|
||||
msgstr ""
|
||||
msgstr "사전 설정된 비밀번호 사용"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:9
|
||||
msgid "Vault"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "사용자 지정 창 또는 OS 기본 창 사용 여부"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "SSH 연결 시 메세지 표시하지 않음"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
@@ -2373,11 +2373,11 @@ msgstr "창"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:112
|
||||
msgid "Window dimension along the edge"
|
||||
msgstr ""
|
||||
msgstr "화면 가장자리부터 수평 너비"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:105
|
||||
msgid "Window dimension away from the edge"
|
||||
msgstr ""
|
||||
msgstr "화면 가장자리부터 수직 너비"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:52
|
||||
msgid "Window frame"
|
||||
@@ -2385,7 +2385,7 @@ msgstr "창 프레임"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:165
|
||||
msgid "Windows"
|
||||
msgstr ""
|
||||
msgstr "창"
|
||||
|
||||
#: locale/tmp-html/tabby-local/src/components/shellSettingsTab.component.html:11
|
||||
msgid "Windows 10 build 18309 or above is recommended for ConPTY"
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Polish\n"
|
||||
"Language: pl_PL\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -209,7 +209,7 @@ msgstr "Wklejanie cudzysłowu (wymaga wsparcia powłoki)"
|
||||
|
||||
#: tabby-terminal/src/services/multifocus.service.ts:19
|
||||
msgid "Broadcast mode. Click anywhere to cancel."
|
||||
msgstr ""
|
||||
msgstr "Broadcast mode. Kliknij gdziekolwiek, aby anulować."
|
||||
|
||||
#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:50
|
||||
#: tabby-settings/src/components/profilesSettingsTab.component.ts:182
|
||||
@@ -239,7 +239,7 @@ msgstr "Zmień szybkość transmisji szeregowuej (baud)"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:133
|
||||
msgid "Change tab color"
|
||||
msgstr ""
|
||||
msgstr "Zmień kolor zakładki"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:12
|
||||
msgid "Change the master passphrase"
|
||||
@@ -256,7 +256,7 @@ msgstr "Szyfry"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/colorSchemeSelector.component.html:5
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
msgstr "Wyczyść"
|
||||
|
||||
#: tabby-core/src/services/profiles.service.ts:133
|
||||
msgid "Clear recent profiles"
|
||||
@@ -268,7 +268,7 @@ msgstr "Wyczyść terminal"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:49
|
||||
msgid "Clear terminal after connection"
|
||||
msgstr ""
|
||||
msgstr "Wyczyść terminal po połączeniu"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:94
|
||||
msgid "Clipboard"
|
||||
@@ -306,7 +306,7 @@ msgstr "Zamknij karty na prawo"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:182
|
||||
msgid "Close the window after closing the last tab"
|
||||
msgstr ""
|
||||
msgstr "Zamknij okno po zamknięciu ostatniej zakładki"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:33
|
||||
#: tabby-core/src/tabContextMenu.ts:132
|
||||
@@ -319,7 +319,7 @@ msgstr "Szablon kolorów"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "Kolory"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -335,15 +335,15 @@ msgstr "Zamiast połączenia sieciowego użyto komendy stdin/stdout"
|
||||
|
||||
#: tabby-core/src/services/commands.service.ts:104
|
||||
msgid "Commands"
|
||||
msgstr ""
|
||||
msgstr "Polecenia"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Compact (legacy)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
msgstr ""
|
||||
msgstr "Konfiguracja usunięta"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:108
|
||||
msgid "Config downloaded"
|
||||
@@ -405,7 +405,7 @@ msgstr "Menu kontekstowe"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "Kontroluje ilość odstępu między elementami"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -426,7 +426,7 @@ msgstr "Skopiuj bieżącą ścieżkę"
|
||||
|
||||
#: tabby-electron/src/sftpContextMenu.ts:29
|
||||
msgid "Copy full path"
|
||||
msgstr ""
|
||||
msgstr "Kopiuj pełną ścieżkę"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:97
|
||||
msgid "Copy on select"
|
||||
@@ -552,7 +552,7 @@ msgstr "Usuń poprzednie słowo"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:114
|
||||
msgid "Delete the config on the remote side?"
|
||||
msgstr ""
|
||||
msgstr "Usunąć konfigurację po stronie zdalnej?"
|
||||
|
||||
#: tabby-settings/src/components/profilesSettingsTab.component.ts:221
|
||||
msgid "Delete the group's profiles?"
|
||||
@@ -707,7 +707,7 @@ msgstr "Włącz automatyczną instalację aktualizacji, gdy będą dostępne."
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
|
||||
msgid "Enable fluent background option"
|
||||
msgstr ""
|
||||
msgstr "Włącz opcję płynnego tła"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:16
|
||||
msgid "Enable font ligatures"
|
||||
@@ -756,7 +756,7 @@ msgstr "Przykład:"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212
|
||||
msgid "Experimental Windows 10 background style known to cause issues"
|
||||
msgstr ""
|
||||
msgstr "Eksperymentalny styl tła Windows 10 powodujący problemy"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:27
|
||||
msgid "Export"
|
||||
@@ -796,11 +796,11 @@ msgstr "Wyróżnij wszystkie panele jednocześnie (broadcast)"
|
||||
|
||||
#: tabby-terminal/src/tabContextMenu.ts:71
|
||||
msgid "Focus all tabs"
|
||||
msgstr ""
|
||||
msgstr "Podświetl wszystkie zakładki"
|
||||
|
||||
#: tabby-terminal/src/hotkeys.ts:82
|
||||
msgid "Focus all tabs at once (broadcast)"
|
||||
msgstr ""
|
||||
msgstr "Podświetl wszystkie zakładki na raz (Broadcast)"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:196
|
||||
msgid "Focus follows mouse"
|
||||
@@ -844,7 +844,7 @@ msgstr "Wyróżnij panel na prawej"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "Powiel schemat kolorów"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -993,7 +993,7 @@ msgstr "Klawisze skrótów"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
|
||||
msgid "How Tabby presents itself through environment vars"
|
||||
msgstr ""
|
||||
msgstr "W jaki sposób Tabby prezentuje się w zmiennych środowiskach"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
|
||||
msgid "HTTP proxy"
|
||||
@@ -1203,7 +1203,7 @@ msgstr "Maksymalizuj aktywny panel"
|
||||
#: 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 ""
|
||||
msgstr "Minimalny stosunek kontrastu"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:39
|
||||
msgid "Modified on {date}"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "Panele"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Papier (legacy)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1470,7 +1470,7 @@ msgstr "Wklej ze schowka"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:63
|
||||
msgid "Paste if no selection, else copy"
|
||||
msgstr ""
|
||||
msgstr "Wklej jeśli nie wybrano, w przeciwnym razie skopiuj"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:490
|
||||
msgid "Paste multiple lines?"
|
||||
@@ -1624,7 +1624,7 @@ msgstr "Zdalny"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:124
|
||||
msgid "Remove whitespace and newlines around the copied text"
|
||||
msgstr ""
|
||||
msgstr "Usuń spacje i nowe linie wokół skopiowanego tekstu"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:25
|
||||
#: tabby-core/src/tabContextMenu.ts:120
|
||||
@@ -1634,7 +1634,7 @@ msgstr "Zmień nazwę"
|
||||
#: tabby-core/src/hotkeys.ts:25
|
||||
#: tabby-core/src/tabContextMenu.ts:121
|
||||
msgid "Rename tab"
|
||||
msgstr ""
|
||||
msgstr "Zmień nazwę zakładki"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:3
|
||||
msgid "Rendering"
|
||||
@@ -1886,7 +1886,7 @@ msgstr "Pokaż wbudowane profile w selektorze"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:13
|
||||
msgid "Show command selector"
|
||||
msgstr ""
|
||||
msgstr "Pokaż selektor poleceń"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:132
|
||||
msgid "Show config file"
|
||||
@@ -1926,7 +1926,7 @@ msgstr "Pokaż połączenia szeregowe"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:152
|
||||
msgid "Show tabs in fullscreen mode"
|
||||
msgstr ""
|
||||
msgstr "Pokaż karty w trybie pełnoekranowym"
|
||||
|
||||
#: tabby-terminal/src/tabContextMenu.ts:58
|
||||
msgid "Show toolbar"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "Kod źródłowy"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "Przestrzeń"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -1989,7 +1989,7 @@ msgstr "Podziel na dół"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:85
|
||||
msgid "Split to the down"
|
||||
msgstr ""
|
||||
msgstr "Podziel na dół"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:165
|
||||
#: tabby-core/src/tabContextMenu.ts:86
|
||||
@@ -2007,7 +2007,7 @@ msgstr "Podziel na górę"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:87
|
||||
msgid "Split to the up"
|
||||
msgstr ""
|
||||
msgstr "Podziel na górę"
|
||||
|
||||
#: tabby-ssh/src/profiles.ts:81
|
||||
msgid "SSH connection"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "Hasło SSH dla {user}@{host}:{port}"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Standardowe (legacy)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2147,7 +2147,7 @@ msgstr "Dzwonek Terminalu"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:68
|
||||
msgid "Terminal identification"
|
||||
msgstr ""
|
||||
msgstr "Identyfikacja terminala"
|
||||
|
||||
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:7
|
||||
msgid "Thank you for downloading Tabby!"
|
||||
@@ -2200,7 +2200,7 @@ msgstr "Góra"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:123
|
||||
msgid "Trim whitespace and newlines"
|
||||
msgstr ""
|
||||
msgstr "Przytnij białą przestrzeń i nowe linie"
|
||||
|
||||
#: tabby-core/src/services/config.service.ts:371
|
||||
msgid "Try again"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "Użyj do wyboru niestandardowego lub natywnego wyglądu dla okna termina
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "Zapobiegnie pokazywaniu powitania SSH"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Portuguese, Brazilian\n"
|
||||
"Language: pt_BR\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -319,7 +319,7 @@ msgstr "Esquema de cores"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "Cores"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,7 +339,7 @@ msgstr "Comandos"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Compactado (legado)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
@@ -405,7 +405,7 @@ msgstr "Menu de contexto"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "Controla a quantidade de espaço entre elementos"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -611,7 +611,7 @@ msgstr "Desconectar de {host}?"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:30
|
||||
msgid "Display images via Sixel escape sequences"
|
||||
msgstr ""
|
||||
msgstr "Exibir imagens através de sequências de escape Sixel"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:85
|
||||
msgid "Display on"
|
||||
@@ -707,7 +707,7 @@ msgstr "Permite a instalação automática de atualizações quando elas estiver
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
|
||||
msgid "Enable fluent background option"
|
||||
msgstr ""
|
||||
msgstr "Habilitar opção de fundo fluente"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:16
|
||||
msgid "Enable font ligatures"
|
||||
@@ -756,7 +756,7 @@ msgstr "Exemplo:"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212
|
||||
msgid "Experimental Windows 10 background style known to cause issues"
|
||||
msgstr ""
|
||||
msgstr "Estilo experimental do Windows 10 conhecido por causar problemas"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:27
|
||||
msgid "Export"
|
||||
@@ -844,7 +844,7 @@ msgstr "Focar no painel à direita"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "Seguir o esquema de cores"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -993,7 +993,7 @@ msgstr "Teclas de atalho"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
|
||||
msgid "How Tabby presents itself through environment vars"
|
||||
msgstr ""
|
||||
msgstr "Como Tabby se apresenta através de variáveis de ambiente"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
|
||||
msgid "HTTP proxy"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "Painéis"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Papel (legado)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "Código-fonte"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "Espaçamento"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "Senha SSH para {user}@{host}:{port}"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Padrão (legado)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "Se uma janela personalizada ou uma janela nativa do sistema deve ser usa
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "Impede que a saudação por SSH apareça"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Russian\n"
|
||||
"Language: ru_RU\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -319,7 +319,7 @@ msgstr "Цветовая схема"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "Стиль"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,7 +339,7 @@ msgstr "Команды"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Компактная (legacy)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
@@ -405,7 +405,7 @@ msgstr "Контекстное меню"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "Управляет расстоянием между элементами"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -707,7 +707,7 @@ msgstr "Включить автоматическую установку обн
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
|
||||
msgid "Enable fluent background option"
|
||||
msgstr ""
|
||||
msgstr "Включить опцию свободного фона"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:16
|
||||
msgid "Enable font ligatures"
|
||||
@@ -844,7 +844,7 @@ msgstr "Фокус на панели справа"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "Следовать цветовой схеме"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -993,7 +993,7 @@ msgstr "Горячие клавиши"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
|
||||
msgid "How Tabby presents itself through environment vars"
|
||||
msgstr ""
|
||||
msgstr "Как Tabby обозначает себя в глобальных переменных"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
|
||||
msgid "HTTP proxy"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "Панели"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Бумага (legacy)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "Исходный код"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "Расстояние между элементами"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "Пароль SSH для {user}@{host}:{port}"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Стандартная (legacy)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2147,7 +2147,7 @@ msgstr "Звуковой сигнал терминала"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:68
|
||||
msgid "Terminal identification"
|
||||
msgstr ""
|
||||
msgstr "Идентификация терминала"
|
||||
|
||||
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:7
|
||||
msgid "Thank you for downloading Tabby!"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "Должно ли использоваться кастомное офо
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "Запретит отправку SSH-приветствия"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Swedish\n"
|
||||
"Language: sv_SE\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -319,7 +319,7 @@ msgstr "Färgschema"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "Färger"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,7 +339,7 @@ msgstr "Kommandon"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Kompakt (legacy)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
@@ -405,7 +405,7 @@ msgstr "Snabbmeny"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "Styr mängden utrymme mellan element"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -844,7 +844,7 @@ msgstr "Fokusera panelen till höger"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "Följ färgschemat"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "Paneler"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Papper (legacy)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "Källkod"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "Rymlighet"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "SSH-lösenord för {user}@{host}:{port}"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Standard (legacy)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "Om ett anpassat fönster eller ett OS-inbyggt fönster ska användas"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "Kommer att förhindra att SSH-hälsning visas"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Ukrainian\n"
|
||||
"Language: uk_UA\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -319,7 +319,7 @@ msgstr "Кольорова схема"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "Кольори"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,7 +339,7 @@ msgstr "Команди"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Компактний (застаріло)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
@@ -405,7 +405,7 @@ msgstr "Контекстне меню"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "Контролює відстань між елементами"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -552,7 +552,7 @@ msgstr "Видалити попереднє слово"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:114
|
||||
msgid "Delete the config on the remote side?"
|
||||
msgstr ""
|
||||
msgstr "Видалити конфіг на віддаленій стороні?"
|
||||
|
||||
#: tabby-settings/src/components/profilesSettingsTab.component.ts:221
|
||||
msgid "Delete the group's profiles?"
|
||||
@@ -844,7 +844,7 @@ msgstr "Фокус на панелі праворуч"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "Дотримуватись колірної схеми"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -993,7 +993,7 @@ msgstr "Гарячі клавіші"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
|
||||
msgid "How Tabby presents itself through environment vars"
|
||||
msgstr ""
|
||||
msgstr "Як Tabby представляє себе за допомогою змінних оточення"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
|
||||
msgid "HTTP proxy"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "Панелі"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Папір (застаріло)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "Вихідний код"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "Простір"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "Пароль SSH для {user}@{host}:{port}"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "Стандартний (застаріло)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2147,7 +2147,7 @@ msgstr "Звуковий сигнал терміналу"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:68
|
||||
msgid "Terminal identification"
|
||||
msgstr ""
|
||||
msgstr "Ідентифікація терміналу"
|
||||
|
||||
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:7
|
||||
msgid "Thank you for downloading Tabby!"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "Чи має використовуватися кастомне офор
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "Не показувати привітання SSH"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"Language: zh_CN\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -64,7 +64,7 @@ msgstr "添加…"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:84
|
||||
msgid "Additional space between lines"
|
||||
msgstr "行与行之间的空隙"
|
||||
msgstr "行间距"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:22
|
||||
#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:61
|
||||
@@ -196,7 +196,7 @@ msgstr "模糊"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:28
|
||||
msgid "Bold font weight"
|
||||
msgstr "粗体字重"
|
||||
msgstr "粗体字体粗细"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:132
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:80
|
||||
@@ -319,7 +319,7 @@ msgstr "配色方案"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "色彩"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,7 +339,7 @@ msgstr "命令"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "紧凑模式(旧版)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
@@ -405,7 +405,7 @@ msgstr "右键菜单"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "控制元素之间的间隔"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -844,7 +844,7 @@ msgstr "聚焦右方的窗格"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "依照配色方案"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -1319,7 +1319,7 @@ msgstr "一般"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:22
|
||||
msgid "Normal font weight"
|
||||
msgstr "正常字重"
|
||||
msgstr "正常字体粗细"
|
||||
|
||||
#: tabby-terminal/src/components/searchPanel.component.ts:54
|
||||
#: tabby-terminal/src/components/searchPanel.component.ts:64
|
||||
@@ -1439,7 +1439,7 @@ msgstr "窗格"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "纸张(旧版)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "源码"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "间隔"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "{user}@{host}:{port} 的 SSH 密码"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "标准模式(旧版)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "使用自定义窗口或操作系统原生窗口"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "不显示 SSH 问候语"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: tabby\n"
|
||||
"Language-Team: Chinese Traditional\n"
|
||||
"Language: zh_TW\n"
|
||||
"PO-Revision-Date: 2023-04-10 18:13\n"
|
||||
"PO-Revision-Date: 2023-06-28 08:41\n"
|
||||
|
||||
#: tabby-local/src/components/terminalTab.component.ts:111
|
||||
msgid "\"{command}\" is still running. Close?"
|
||||
@@ -319,7 +319,7 @@ msgstr "顏色機制"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
msgstr "顏色"
|
||||
|
||||
#: tabby-core/src/hotkeys.ts:73
|
||||
msgid "Combine all tabs into the current tab"
|
||||
@@ -339,7 +339,7 @@ msgstr "指令"
|
||||
|
||||
#: tabby-core/src/theme.ts:21
|
||||
msgid "Compact (legacy)"
|
||||
msgstr ""
|
||||
msgstr "緊湊 (舊版)"
|
||||
|
||||
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
|
||||
msgid "Config deleted"
|
||||
@@ -405,7 +405,7 @@ msgstr "快顯功能表"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
|
||||
msgid "Controls the amount of space between elements"
|
||||
msgstr ""
|
||||
msgstr "調整各元件之間的間距"
|
||||
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
|
||||
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
|
||||
@@ -844,7 +844,7 @@ msgstr "聚焦右邊的窗格"
|
||||
|
||||
#: tabby-core/src/theme.ts:43
|
||||
msgid "Follow the color scheme"
|
||||
msgstr ""
|
||||
msgstr "遵循色彩搭配方案"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
|
||||
msgid "Font"
|
||||
@@ -1439,7 +1439,7 @@ msgstr "窗格"
|
||||
|
||||
#: tabby-core/src/theme.ts:35
|
||||
msgid "Paper (legacy)"
|
||||
msgstr ""
|
||||
msgstr "紙張 (舊版)"
|
||||
|
||||
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
|
||||
msgid "Parity"
|
||||
@@ -1977,7 +1977,7 @@ msgstr "原始碼"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
|
||||
msgid "Spaciness"
|
||||
msgstr ""
|
||||
msgstr "空間感"
|
||||
|
||||
#: tabby-core/src/tabContextMenu.ts:75
|
||||
msgid "Split"
|
||||
@@ -2023,7 +2023,7 @@ msgstr "{user}@{host}:{port} 的 SSH 密碼"
|
||||
|
||||
#: tabby-core/src/theme.ts:9
|
||||
msgid "Standard (legacy)"
|
||||
msgstr ""
|
||||
msgstr "標準 (舊版)"
|
||||
|
||||
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
|
||||
msgid "Startup"
|
||||
@@ -2364,7 +2364,7 @@ msgstr "使用自訂視窗或是使用作業系統視窗"
|
||||
|
||||
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
|
||||
msgid "Will prevent the SSH greeting from showing up"
|
||||
msgstr ""
|
||||
msgstr "將防止顯示 SSH 問候語。"
|
||||
|
||||
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
|
||||
#: tabby-settings/src/settings.ts:30
|
||||
|
20
package.json
20
package.json
@@ -11,11 +11,12 @@
|
||||
"@angular/platform-browser": "^15.2.6",
|
||||
"@angular/platform-browser-dynamic": "^15.2.6",
|
||||
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
|
||||
"@electron/notarize": "^1.2.3",
|
||||
"@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/cli": "^2.18.1",
|
||||
"@sentry/electron": "^2.5.4",
|
||||
"@tabby-gang/to-string-loader": "^1.1.7-beta.2",
|
||||
"@types/deep-equal": "1.0.1",
|
||||
@@ -23,26 +24,25 @@
|
||||
"@types/electron-debug": "^2.1.0",
|
||||
"@types/fs-extra": "^9.0.13",
|
||||
"@types/js-yaml": "^4.0.5",
|
||||
"@types/node": "16.0.1",
|
||||
"@types/node": "20.3.1",
|
||||
"@types/webpack-env": "^1.18.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
||||
"@typescript-eslint/parser": "^5.54.1",
|
||||
"apply-loader": "2.0.0",
|
||||
"axios": "^0.27.2",
|
||||
"axios": "^1.4.0",
|
||||
"babel-loader": "^9.1.2",
|
||||
"browserify-sign": "^4.2.1",
|
||||
"clone-deep": "^4.0.1",
|
||||
"compare-versions": "^5",
|
||||
"core-js": "^3.21.1",
|
||||
"core-js": "^3.31.0",
|
||||
"core-js-pure": "^3.21.1",
|
||||
"cross-env": "7.0.3",
|
||||
"css-loader": "^6.7.3",
|
||||
"deep-equal": "2.0.5",
|
||||
"electron": "22.3.1",
|
||||
"electron": "^25.3.0",
|
||||
"electron-builder": "^24.0.0-alpha.1",
|
||||
"electron-download": "^4.1.1",
|
||||
"electron-installer-snap": "^5.1.0",
|
||||
"electron-notarize": "^1.2.2",
|
||||
"electron-rebuild": "^3.2.9",
|
||||
"eslint": "^8.38.0",
|
||||
"eslint-import-resolver-typescript": "^3.5.2",
|
||||
@@ -55,7 +55,7 @@
|
||||
"lru-cache": "^6.0.0",
|
||||
"macos-release": "^3.1.0",
|
||||
"ngx-toastr": "^16.0.2",
|
||||
"node-abi": "^3.33.0",
|
||||
"node-abi": "^3.45.0",
|
||||
"npmlog": "6.0.2",
|
||||
"npx": "^10.2.2",
|
||||
"patch-package": "^6.4.7",
|
||||
@@ -68,7 +68,7 @@
|
||||
"pug-static-loader": "2.0.0",
|
||||
"raw-loader": "4.0.2",
|
||||
"rxjs": "^7.5.7",
|
||||
"sass": "^1.58.0",
|
||||
"sass": "^1.63.4",
|
||||
"sass-loader": "^13.2.0",
|
||||
"shell-quote": "^1.7.4",
|
||||
"shelljs": "0.8.5",
|
||||
@@ -85,9 +85,9 @@
|
||||
"tslib": "^2.5.0",
|
||||
"typedoc": "^0.22.18",
|
||||
"typescript": "^4.9.5",
|
||||
"utils-decorators": "^1.10.4",
|
||||
"utils-decorators": "^2.0.6",
|
||||
"val-loader": "5.0.1",
|
||||
"webpack": "^5.75.0",
|
||||
"webpack": "^5.86.0",
|
||||
"webpack-bundle-analyzer": "^4.7.0",
|
||||
"webpack-cli": "^5.0.1",
|
||||
"yaml-loader": "0.8.0",
|
||||
|
@@ -1,15 +1,15 @@
|
||||
diff --git a/node_modules/app-builder-lib/out/appInfo.js b/node_modules/app-builder-lib/out/appInfo.js
|
||||
index 363f32c..a0434a9 100644
|
||||
index 49f6dca..0ea11f2 100644
|
||||
--- a/node_modules/app-builder-lib/out/appInfo.js
|
||||
+++ b/node_modules/app-builder-lib/out/appInfo.js
|
||||
@@ -100,9 +100,7 @@ class AppInfo {
|
||||
@@ -112,9 +112,7 @@ class AppInfo {
|
||||
return this.info.metadata.name;
|
||||
}
|
||||
get linuxPackageName() {
|
||||
- const name = this.name;
|
||||
- // https://github.com/electron-userland/electron-builder/issues/2963
|
||||
- return name.startsWith("@") ? this.sanitizedProductName : name;
|
||||
+ return 'tabby-terminal'
|
||||
+ return 'tabby-terminal';
|
||||
}
|
||||
get sanitizedName() {
|
||||
return filename_1.sanitizeFileName(this.name);
|
||||
return (0, filename_1.sanitizeFileName)(this.name);
|
@@ -9,7 +9,7 @@ process.env.ARCH = (process.env.ARCH || process.arch) === 'arm' ? 'armv7l' : pro
|
||||
|
||||
builder({
|
||||
dir: true,
|
||||
linux: ['deb', 'tar.gz', 'rpm', 'pacman'],
|
||||
linux: ['deb', 'tar.gz', 'rpm', 'pacman', 'appimage'],
|
||||
armv7l: process.env.ARCH === 'armv7l',
|
||||
arm64: process.env.ARCH === 'arm64',
|
||||
config: {
|
||||
|
@@ -13,6 +13,9 @@ if (process.env.GITHUB_HEAD_REF) {
|
||||
process.env.CSC_IDENTITY_AUTO_DISCOVERY = 'false'
|
||||
}
|
||||
|
||||
process.env.APPLE_ID ??= process.env.APPSTORE_USERNAME
|
||||
process.env.APPLE_APP_SPECIFIC_PASSWORD ??= process.env.APPSTORE_PASSWORD
|
||||
|
||||
builder({
|
||||
dir: true,
|
||||
mac: ['pkg', 'zip'],
|
||||
@@ -24,6 +27,10 @@ builder({
|
||||
},
|
||||
mac: {
|
||||
identity: !process.env.CI || process.env.CSC_LINK ? undefined : null,
|
||||
notarize: process.env.APPLE_TEAM_ID ? {
|
||||
appBundleId: 'org.tabby',
|
||||
teamId: process.env.APPLE_TEAM_ID,
|
||||
} : false,
|
||||
},
|
||||
npmRebuild: process.env.ARCH !== 'arm64',
|
||||
publish: process.env.KEYGEN_TOKEN ? [
|
||||
|
@@ -9,7 +9,7 @@ sh.exec(`${sentryCli} releases new ${vars.version}`)
|
||||
if (process.platform === 'darwin') {
|
||||
for (const path of [
|
||||
'app/node_modules/@serialport/bindings/build/Release/bindings.node',
|
||||
'app/node_modules/@tabby-gang/node-pty/build/Release/pty.node',
|
||||
'app/node_modules/node-pty/build/Release/pty.node',
|
||||
'app/node_modules/fontmanager-redux/build/Release/fontmanager.node',
|
||||
'app/node_modules/macos-native-processlist/build/Release/native.node',
|
||||
]) {
|
||||
|
@@ -3,6 +3,8 @@ import * as fs from 'fs'
|
||||
import * as semver from 'semver'
|
||||
import * as childProcess from 'child_process'
|
||||
|
||||
process.env.ARCH = ((process.env.ARCH || process.arch) === 'arm') ? 'armv7l' : process.env.ARCH || process.arch
|
||||
|
||||
import * as url from 'url'
|
||||
const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
|
||||
|
||||
@@ -58,21 +60,21 @@ export const keygenConfig = {
|
||||
win32: {
|
||||
x64: 'f481b9d6-d5da-4970-b926-f515373e986f',
|
||||
arm64: '950999b9-371c-419b-b291-938c5e4d364c',
|
||||
}[process.env.ARCH ?? process.arch],
|
||||
}[process.env.ARCH],
|
||||
darwin: {
|
||||
arm64: '98fbadee-c707-4cd6-9d99-56683595a846',
|
||||
x86_64: 'f5a48841-d5b8-4b7b-aaa7-cf5bffd36461',
|
||||
x64: 'f5a48841-d5b8-4b7b-aaa7-cf5bffd36461',
|
||||
}[process.env.ARCH ?? process.arch],
|
||||
}[process.env.ARCH],
|
||||
linux: {
|
||||
x64: '7bf45071-3031-4a26-9f2e-72604308313e',
|
||||
arm64: '39e3c736-d4d4-4fbf-a201-324b7bab0d17',
|
||||
armv7l: '50ae0a82-7f47-4fa4-b0a8-b0d575ce9409',
|
||||
armhf: '7df5aa12-04ab-4075-a0fe-93b0bbea9643',
|
||||
}[process.env.ARCH ?? process.arch],
|
||||
}[process.env.ARCH],
|
||||
}[process.platform],
|
||||
}
|
||||
|
||||
if (!keygenConfig.product) {
|
||||
throw new Error(`Unrecognized platform ${process.platform}/${process.env.ARCH ?? process.arch}`)
|
||||
throw new Error(`Unrecognized platform ${process.platform}/${process.env.ARCH}`)
|
||||
}
|
||||
|
@@ -26,7 +26,7 @@
|
||||
"messageformat": "^2.3.0",
|
||||
"mixpanel": "^0.17.0",
|
||||
"ngx-translate-messageformat-compiler": "^4.11.0",
|
||||
"readable-stream": "4.2.0",
|
||||
"readable-stream": "4.4.0",
|
||||
"uuid": "^9.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
@@ -86,14 +86,18 @@ export interface FileUploadOptions {
|
||||
multiple: boolean
|
||||
}
|
||||
|
||||
export type PlatformTheme = 'light'|'dark'
|
||||
|
||||
export abstract class PlatformService {
|
||||
supportsWindowControls = false
|
||||
|
||||
get fileTransferStarted$ (): Observable<FileTransfer> { return this.fileTransferStarted }
|
||||
get displayMetricsChanged$ (): Observable<void> { return this.displayMetricsChanged }
|
||||
get themeChanged$ (): Observable<PlatformTheme> { return this.themeChanged }
|
||||
|
||||
protected fileTransferStarted = new Subject<FileTransfer>()
|
||||
protected displayMetricsChanged = new Subject<void>()
|
||||
protected themeChanged = new Subject<PlatformTheme>()
|
||||
|
||||
abstract readClipboard (): string
|
||||
abstract setClipboard (content: ClipboardContent): void
|
||||
@@ -169,6 +173,10 @@ export abstract class PlatformService {
|
||||
throw new Error('Not implemented')
|
||||
}
|
||||
|
||||
getTheme (): PlatformTheme {
|
||||
return 'dark'
|
||||
}
|
||||
|
||||
abstract getOSRelease (): string
|
||||
abstract getAppVersion (): string
|
||||
abstract openExternal (url: string): void
|
||||
|
@@ -1,16 +1,20 @@
|
||||
title-bar(
|
||||
*ngIf='ready && !hostWindow.isFullscreen && config.store.appearance.frame == "full" && config.store.appearance.dock == "off"',
|
||||
(dblclick)='hostWindow.toggleMaximize()',
|
||||
[hideControls]='hostApp.platform !== Platform.Linux && !hostWindow.isFullscreen',
|
||||
[class.inset]='hostApp.platform == Platform.macOS && !hostWindow.isFullscreen'
|
||||
)
|
||||
|
||||
.content(
|
||||
*ngIf='ready',
|
||||
[class.tabs-on-top]='config.store.appearance.tabsLocation == "top" || config.store.appearance.tabsLocation == "left"',
|
||||
[class.tabs-on-side]='hasVerticalTabs()',
|
||||
[class.tabs-on-left]='hasVerticalTabs() && config.store.appearance.tabsLocation == "left"',
|
||||
[class.tabs-titlebar-enabled]='config.store.appearance.frame == "full"',
|
||||
[class.tabs-on-right]='hasVerticalTabs() && config.store.appearance.tabsLocation == "right"',
|
||||
)
|
||||
.tab-bar(
|
||||
*ngIf='!hostWindow.isFullscreen || config.store.appearance.tabsInFullscreen',
|
||||
[class.tab-bar-no-controls-overlay]='hostApp.platform == Platform.macOS',
|
||||
(dblclick)='hostWindow.toggleMaximize()'
|
||||
)
|
||||
.inset.background(*ngIf='hostApp.platform == Platform.macOS \
|
||||
@@ -81,9 +85,12 @@ title-bar(
|
||||
|
||||
window-controls.background(
|
||||
*ngIf='config.store.appearance.frame == "thin" \
|
||||
&& (hostApp.platform == Platform.Windows || hostApp.platform == Platform.Linux)',
|
||||
&& (hostApp.platform == Platform.Linux)',
|
||||
)
|
||||
|
||||
div.window-controls-spacer(
|
||||
*ngIf='config.store.appearance.frame == "thin" && (hostApp.platform == Platform.Windows) && (config.store.appearance.tabsLocation == "top")',
|
||||
)
|
||||
.content
|
||||
start-page.content-tab.content-tab-active(*ngIf='ready && app.tabs.length == 0')
|
||||
|
||||
|
@@ -35,17 +35,16 @@ $tab-border-radius: 4px;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
&.tabs-on-side {
|
||||
&.tabs-on-right {
|
||||
flex-direction: row-reverse;
|
||||
|
||||
&.tabs-on-top {
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
|
||||
&.tabs-on-left {
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
|
||||
.content.tabs-on-side > .tab-bar {
|
||||
.content.tabs-on-left > .tab-bar, .content.tabs-on-right > .tab-bar {
|
||||
height: 100%;
|
||||
width: var(--side-tab-width);
|
||||
overflow-y: auto;
|
||||
@@ -76,6 +75,18 @@ $tab-border-radius: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.content.tabs-on-left > .tab-bar.tab-bar-no-controls-overlay, .content.tabs-titlebar-enabled {
|
||||
.tabs {
|
||||
padding-top: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.content.tabs-on-right > .tab-bar {
|
||||
.tabs {
|
||||
// Account for WCO on Windows.
|
||||
padding-top: 36px;
|
||||
}
|
||||
}
|
||||
|
||||
.tab-bar {
|
||||
flex: none;
|
||||
@@ -125,10 +136,17 @@ $tab-border-radius: 4px;
|
||||
}
|
||||
|
||||
&.persistent {
|
||||
min-width: 72px; // 2 x 36 px height, ie 2 squares
|
||||
// min-width: 72px; // 2 x 36 px height, ie 2 squares
|
||||
// Given WCO on Windows, the min-width of the window buttons is about 138px.
|
||||
min-width: 138px;
|
||||
}
|
||||
}
|
||||
|
||||
&>.window-controls-spacer {
|
||||
min-width: 138px;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
& > .inset {
|
||||
width: calc(70px + 15px * var(--spaciness));
|
||||
height: var(--tabs-height);
|
||||
|
@@ -76,10 +76,11 @@ export class SelectorModalComponent<T> {
|
||||
{ sort: true },
|
||||
).search(f)
|
||||
|
||||
const freeOption = this.options.find(x => x.freeInputPattern)
|
||||
if (freeOption && !this.filteredOptions.includes(freeOption)) {
|
||||
this.filteredOptions.push(freeOption)
|
||||
}
|
||||
this.options.filter(x => x.freeInputPattern).forEach(freeOption => {
|
||||
if (!this.filteredOptions.includes(freeOption)) {
|
||||
this.filteredOptions.push(freeOption)
|
||||
}
|
||||
})
|
||||
}
|
||||
this.selectedIndex = Math.max(0, this.selectedIndex)
|
||||
this.selectedIndex = Math.min(this.filteredOptions.length - 1, this.selectedIndex)
|
||||
|
@@ -1,2 +1,2 @@
|
||||
.title((dblclick)='hostWindow.toggleMaximize()') Tabby
|
||||
window-controls
|
||||
window-controls(*ngIf="!hideControls")
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { Component } from '@angular/core'
|
||||
import { Component, Input } from '@angular/core'
|
||||
import { HostWindowService } from '../api'
|
||||
|
||||
/** @hidden */
|
||||
@@ -8,5 +8,7 @@ import { HostWindowService } from '../api'
|
||||
styleUrls: ['./titleBar.component.scss'],
|
||||
})
|
||||
export class TitleBarComponent {
|
||||
@Input() hideControls: boolean
|
||||
|
||||
constructor (public hostWindow: HostWindowService) { }
|
||||
}
|
||||
|
@@ -23,6 +23,7 @@ hotkeys:
|
||||
duplicate-tab: []
|
||||
restart-tab: []
|
||||
reconnect-tab: []
|
||||
disconnect-tab: []
|
||||
explode-tab:
|
||||
- 'Ctrl-Shift-.'
|
||||
combine-tabs:
|
||||
|
@@ -40,6 +40,7 @@ hotkeys:
|
||||
duplicate-tab: []
|
||||
restart-tab: []
|
||||
reconnect-tab: []
|
||||
disconnect-tab: []
|
||||
explode-tab:
|
||||
- '⌘-Shift-.'
|
||||
combine-tabs:
|
||||
|
@@ -24,6 +24,7 @@ hotkeys:
|
||||
duplicate-tab: []
|
||||
restart-tab: []
|
||||
reconnect-tab: []
|
||||
disconnect-tab: []
|
||||
explode-tab:
|
||||
- 'Ctrl-Shift-.'
|
||||
combine-tabs:
|
||||
|
@@ -11,7 +11,7 @@ appearance:
|
||||
tabsLocation: top
|
||||
tabsInFullscreen: false
|
||||
cycleTabs: true
|
||||
theme: Standard
|
||||
theme: Follow the color scheme
|
||||
frame: thin
|
||||
css: '/* * { color: blue !important; } */'
|
||||
opacity: 1.0
|
||||
@@ -48,8 +48,10 @@ enableExperimentalFeatures: false
|
||||
pluginBlacklist: []
|
||||
commandBlacklist: []
|
||||
providerBlacklist: []
|
||||
profileBlacklist: []
|
||||
hacks:
|
||||
disableGPU: false
|
||||
disableVibrancyWhileDragging: false
|
||||
enableFluentBackground: false
|
||||
language: null
|
||||
defaultQuickConnectProvider: "ssh"
|
||||
|
@@ -219,6 +219,7 @@ export default class AppModule { // eslint-disable-line @typescript-eslint/no-ex
|
||||
name: this.translate.instant('Quick connect'),
|
||||
freeInputPattern: this.translate.instant('Connect to "%s"...'),
|
||||
icon: 'fas fa-arrow-right',
|
||||
description: `(${provider.name.toUpperCase()})`,
|
||||
callback: query => {
|
||||
const p = provider.quickConnect(query)
|
||||
if (p) {
|
||||
|
@@ -15,6 +15,9 @@ const deepmerge = require('deepmerge')
|
||||
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
||||
export const configMerge = (a, b) => deepmerge(a, b, { arrayMerge: (_d, s) => s }) // eslint-disable-line @typescript-eslint/no-var-requires
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
||||
export const configMergeByDefault = (a, b) => deepmerge(a, b) // eslint-disable-line @typescript-eslint/no-var-requires
|
||||
|
||||
const LATEST_VERSION = 1
|
||||
|
||||
function isStructuralMember (v) {
|
||||
@@ -162,7 +165,7 @@ export class ConfigService {
|
||||
defaults = configMerge(provider.defaults, defaults)
|
||||
}
|
||||
return defaults
|
||||
}).reduce(configMerge)
|
||||
}).reduce(configMergeByDefault)
|
||||
}
|
||||
|
||||
getDefaults (): Record<string, any> {
|
||||
@@ -213,7 +216,9 @@ export class ConfigService {
|
||||
* Reads config YAML as string
|
||||
*/
|
||||
readRaw (): string {
|
||||
return yaml.dump(this._store)
|
||||
// Scrub undefined values
|
||||
const cleanStore = JSON.parse(JSON.stringify(this._store))
|
||||
return yaml.dump(cleanStore)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -351,6 +356,14 @@ export class ConfigService {
|
||||
delete window.localStorage.lastSerialConnection
|
||||
config.version = 3
|
||||
}
|
||||
if (config.version < 4) {
|
||||
for (const p of config.profiles ?? []) {
|
||||
if (!p.id) {
|
||||
p.id = `${p.type}:custom:${uuidv4()}`
|
||||
}
|
||||
}
|
||||
config.version = 4
|
||||
}
|
||||
}
|
||||
|
||||
private async maybeDecryptConfig (store) {
|
||||
|
@@ -178,7 +178,7 @@ export class HotkeysService {
|
||||
this._key.next(getKeyName(eventData))
|
||||
})
|
||||
|
||||
if (process.platform === 'darwin' && eventData.metaKey && eventName === 'keydown' && !['Ctrl', 'Shift', altKeyName, metaKeyName].includes(keyName)) {
|
||||
if (process.platform === 'darwin' && eventData.metaKey && eventName === 'keydown' && !['Ctrl', 'Shift', altKeyName, metaKeyName, 'Enter'].includes(keyName)) {
|
||||
// macOS will swallow non-modified keyups if Cmd is held down
|
||||
this.pushKeyEvent('keyup', nativeEvent)
|
||||
}
|
||||
|
@@ -7,6 +7,7 @@ import localeENUS from '@angular/common/locales/en'
|
||||
import localeENGB from '@angular/common/locales/en-GB'
|
||||
import localeAF from '@angular/common/locales/af'
|
||||
import localeBG from '@angular/common/locales/bg'
|
||||
import localeCS from '@angular/common/locales/cs'
|
||||
import localeDA from '@angular/common/locales/da'
|
||||
import localeDE from '@angular/common/locales/de'
|
||||
import localeES from '@angular/common/locales/es'
|
||||
@@ -31,6 +32,7 @@ registerLocaleData(localeENUS)
|
||||
registerLocaleData(localeENGB)
|
||||
registerLocaleData(localeAF)
|
||||
registerLocaleData(localeBG)
|
||||
registerLocaleData(localeCS)
|
||||
registerLocaleData(localeDA)
|
||||
registerLocaleData(localeDE)
|
||||
registerLocaleData(localeES)
|
||||
@@ -82,6 +84,10 @@ export class LocaleService {
|
||||
code: 'id-ID',
|
||||
name: 'Bahasa Indonesia',
|
||||
},
|
||||
{
|
||||
code: 'cs-CZ',
|
||||
name: 'Čeština',
|
||||
},
|
||||
{
|
||||
code: 'da-DK',
|
||||
name: 'Dansk',
|
||||
|
@@ -96,6 +96,8 @@ export class ProfilesService {
|
||||
const freeInputEquivalent = provider?.intoQuickConnectString(fullProfile) ?? undefined
|
||||
return {
|
||||
...profile,
|
||||
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
||||
group: profile.group || '',
|
||||
freeInputEquivalent,
|
||||
description: provider?.getDescription(fullProfile),
|
||||
}
|
||||
@@ -151,6 +153,8 @@ export class ProfilesService {
|
||||
|
||||
profiles = profiles.filter(x => !x.isTemplate)
|
||||
|
||||
profiles = profiles.filter(x => x.id && !this.config.store.profileBlacklist.includes(x.id))
|
||||
|
||||
options = [...options, ...profiles.map((p): SelectorOption<void> => ({
|
||||
...this.selectorOptionForProfile(p),
|
||||
weight: p.isBuiltin ? 2 : 1,
|
||||
@@ -173,17 +177,20 @@ export class ProfilesService {
|
||||
})
|
||||
} catch { }
|
||||
|
||||
if (this.getProviders().some(x => x.supportsQuickConnect)) {
|
||||
this.getProviders().filter(x => x.supportsQuickConnect).forEach(provider => {
|
||||
options.push({
|
||||
name: this.translate.instant('Quick connect'),
|
||||
freeInputPattern: this.translate.instant('Connect to "%s"...'),
|
||||
description: `(${provider.name.toUpperCase()})`,
|
||||
icon: 'fas fa-arrow-right',
|
||||
weight: provider.id !== this.config.store.defaultQuickConnectProvider ? 1 : 0,
|
||||
callback: query => {
|
||||
const profile = this.quickConnect(query)
|
||||
const profile = provider.quickConnect(query)
|
||||
resolve(profile)
|
||||
},
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
await this.selector.show(this.translate.instant('Select profile or enter an address'), options)
|
||||
} catch (err) {
|
||||
reject(err)
|
||||
|
@@ -3,6 +3,7 @@ import { Subject, Observable } from 'rxjs'
|
||||
import * as Color from 'color'
|
||||
import { ConfigService } from '../services/config.service'
|
||||
import { Theme } from '../api/theme'
|
||||
import { PlatformService } from '../api/platform'
|
||||
import { NewTheme } from '../theme'
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
@@ -17,6 +18,7 @@ export class ThemesService {
|
||||
private constructor (
|
||||
private config: ConfigService,
|
||||
private standardTheme: NewTheme,
|
||||
private platform: PlatformService,
|
||||
@Inject(Theme) private themes: Theme[],
|
||||
) {
|
||||
this.rootElementStyleBackup = document.documentElement.style.cssText
|
||||
@@ -24,6 +26,10 @@ export class ThemesService {
|
||||
config.ready$.toPromise().then(() => {
|
||||
this.applyCurrentTheme()
|
||||
this.applyThemeVariables()
|
||||
platform.themeChanged$.subscribe(() => {
|
||||
this.applyCurrentTheme()
|
||||
this.applyThemeVariables()
|
||||
})
|
||||
config.changed$.subscribe(() => {
|
||||
this.applyCurrentTheme()
|
||||
this.applyThemeVariables()
|
||||
@@ -36,7 +42,7 @@ export class ThemesService {
|
||||
document.documentElement.style.cssText = this.rootElementStyleBackup
|
||||
}
|
||||
|
||||
const theme = this.config.store.terminal.colorScheme
|
||||
const theme = this._getActiveColorScheme()
|
||||
const isDark = Color(theme.background).luminosity() < Color(theme.foreground).luminosity()
|
||||
|
||||
function more (some, factor) {
|
||||
@@ -106,8 +112,10 @@ export class ThemesService {
|
||||
|
||||
const themeColors = {
|
||||
primary: theme.colors[accentIndex],
|
||||
secondary: less(theme.background, 0.5).string(),
|
||||
tertiary: theme.colors[8],
|
||||
secondary: isDark
|
||||
? less(theme.background, 0.5).string()
|
||||
: less(theme.background, 0.125).string(),
|
||||
tertiary: more(theme.background, 0.75).string(),
|
||||
warning: theme.colors[3],
|
||||
danger: theme.colors[1],
|
||||
success: theme.colors[2],
|
||||
@@ -184,6 +192,15 @@ export class ThemesService {
|
||||
return this.findTheme(this.config.store.appearance.theme) ?? this.standardTheme
|
||||
}
|
||||
|
||||
/// @hidden
|
||||
_getActiveColorScheme (): any {
|
||||
if (this.platform.getTheme() === 'light') {
|
||||
return this.config.store.terminal.lightColorScheme
|
||||
} else {
|
||||
return this.config.store.terminal.colorScheme
|
||||
}
|
||||
}
|
||||
|
||||
applyTheme (theme: Theme): void {
|
||||
if (!this.styleElement) {
|
||||
this.styleElement = document.createElement('style')
|
||||
|
@@ -110,7 +110,7 @@ body {
|
||||
}
|
||||
|
||||
.nav {
|
||||
--bs-nav-link-color: var(--theme-fg);
|
||||
--bs-nav-link-color: var(--theme-fg-more);
|
||||
--bs-nav-link-hover-color: var(--theme-fg-less);
|
||||
--bs-nav-link-disabled-color: var(--bs-gray);
|
||||
}
|
||||
@@ -119,8 +119,8 @@ body {
|
||||
--bs-nav-tabs-border-width: 2px;
|
||||
--bs-nav-tabs-border-radius: 0;
|
||||
--bs-nav-tabs-link-hover-border-color: var(--bs-body-bg);
|
||||
--bs-nav-tabs-border-color: var(--theme-fg-less-2);
|
||||
--bs-nav-tabs-link-active-color: var(--theme-fg-less-2);
|
||||
--bs-nav-tabs-border-color: var(--theme-fg);
|
||||
--bs-nav-tabs-link-active-color: var(--theme-fg);
|
||||
|
||||
--bs-nav-tabs-link-active-bg: transparent;
|
||||
--bs-nav-tabs-link-active-border-color: transparent;
|
||||
|
@@ -7,8 +7,13 @@ export const WIN_BUILD_CONPTY_STABLE = 18309
|
||||
export const WIN_BUILD_WSL_EXE_DISTRO_FLAG = 17763
|
||||
export const WIN_BUILD_FLUENT_BG_SUPPORTED = 17063
|
||||
|
||||
export function getWindows10Build (): number|undefined {
|
||||
return process.platform === 'win32' && parseFloat(os.release()) >= 10 ? parseInt(os.release().split('.')[2]) : undefined
|
||||
}
|
||||
|
||||
export function isWindowsBuild (build: number): boolean {
|
||||
return process.platform === 'win32' && parseFloat(os.release()) >= 10 && parseInt(os.release().split('.')[2]) >= build
|
||||
const b = getWindows10Build()
|
||||
return b !== undefined && b >= build
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
||||
|
@@ -174,10 +174,10 @@ process@^0.11.10:
|
||||
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
|
||||
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
|
||||
|
||||
readable-stream@4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.2.0.tgz#a7ef523d3b39e4962b0db1a1af22777b10eeca46"
|
||||
integrity sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==
|
||||
readable-stream@4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.0.tgz#55ce132d60a988c460d75c631e9ccf6a7229b468"
|
||||
integrity sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==
|
||||
dependencies:
|
||||
abort-controller "^3.0.0"
|
||||
buffer "^6.0.3"
|
||||
|
@@ -99,6 +99,7 @@ export default class ElectronModule {
|
||||
})
|
||||
this.registerGlobalHotkey()
|
||||
this.updateVibrancy()
|
||||
this.updateWindowControlsColor()
|
||||
})
|
||||
|
||||
config.changed$.subscribe(() => {
|
||||
@@ -131,6 +132,8 @@ export default class ElectronModule {
|
||||
|
||||
config.changed$.subscribe(() => this.updateVibrancy())
|
||||
|
||||
config.changed$.subscribe(() => this.updateWindowControlsColor())
|
||||
|
||||
config.ready$.toPromise().then(() => {
|
||||
dockMenu.update()
|
||||
})
|
||||
@@ -169,6 +172,15 @@ export default class ElectronModule {
|
||||
|
||||
this.hostWindow.setOpacity(this.config.store.appearance.opacity)
|
||||
}
|
||||
|
||||
private updateWindowControlsColor () {
|
||||
// if windows and not using native frame, WCO does not exist, return.
|
||||
if (this.hostApp.platform === Platform.Windows && this.config.store.appearance.frame === 'native') {
|
||||
return
|
||||
}
|
||||
|
||||
this.electron.ipcRenderer.send('window-set-window-controls-color', this.config.store.terminal.colorScheme)
|
||||
}
|
||||
}
|
||||
|
||||
export { ElectronHostWindow, ElectronHostAppService, ElectronService }
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core'
|
||||
import { App, IpcRenderer, Shell, Dialog, Clipboard, GlobalShortcut, Screen, AutoUpdater, TouchBar, BrowserWindow, Menu, MenuItem, PowerSaveBlocker } from 'electron'
|
||||
import { App, IpcRenderer, Shell, Dialog, Clipboard, GlobalShortcut, Screen, AutoUpdater, TouchBar, BrowserWindow, Menu, MenuItem, PowerSaveBlocker, NativeTheme } from 'electron'
|
||||
import * as remote from '@electron/remote'
|
||||
|
||||
export interface MessageBoxResponse {
|
||||
@@ -20,6 +20,7 @@ export class ElectronService {
|
||||
process: any
|
||||
autoUpdater: AutoUpdater
|
||||
powerSaveBlocker: PowerSaveBlocker
|
||||
nativeTheme: NativeTheme
|
||||
TouchBar: typeof TouchBar
|
||||
BrowserWindow: typeof BrowserWindow
|
||||
Menu: typeof Menu
|
||||
@@ -43,5 +44,7 @@ export class ElectronService {
|
||||
this.BrowserWindow = remote.BrowserWindow
|
||||
this.Menu = remote.Menu
|
||||
this.MenuItem = remote.MenuItem
|
||||
this.MenuItem = remote.MenuItem
|
||||
this.nativeTheme = remote.nativeTheme
|
||||
}
|
||||
}
|
||||
|
@@ -10,6 +10,7 @@ import { ElectronService } from '../services/electron.service'
|
||||
import { ElectronHostWindow } from './hostWindow.service'
|
||||
import { ShellIntegrationService } from './shellIntegration.service'
|
||||
import { ElectronHostAppService } from './hostApp.service'
|
||||
import { PlatformTheme } from '../../../tabby-core/src/api/platform'
|
||||
const fontManager = require('fontmanager-redux') // eslint-disable-line
|
||||
|
||||
/* eslint-disable block-scoped-var */
|
||||
@@ -40,6 +41,10 @@ export class ElectronPlatformService extends PlatformService {
|
||||
electron.ipcRenderer.on('host:display-metrics-changed', () => {
|
||||
this.zone.run(() => this.displayMetricsChanged.next())
|
||||
})
|
||||
|
||||
electron.nativeTheme.on('updated', () => {
|
||||
this.zone.run(() => this.themeChanged.next(this.getTheme()))
|
||||
})
|
||||
}
|
||||
|
||||
readClipboard (): string {
|
||||
@@ -243,6 +248,14 @@ export class ElectronPlatformService extends PlatformService {
|
||||
},
|
||||
)).filePaths[0]
|
||||
}
|
||||
|
||||
getTheme (): PlatformTheme {
|
||||
if (this.electron.nativeTheme.shouldUseDarkColors) {
|
||||
return 'dark'
|
||||
} else {
|
||||
return 'light'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ElectronFileUpload extends FileUpload {
|
||||
|
@@ -509,9 +509,9 @@ which-boxed-primitive@^1.0.2:
|
||||
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==
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1"
|
||||
integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
@@ -525,10 +525,11 @@ winston-transport@^4.5.0:
|
||||
triple-beam "^1.3.0"
|
||||
|
||||
winston@^3.3.3:
|
||||
version "3.7.2"
|
||||
resolved "https://registry.yarnpkg.com/winston/-/winston-3.7.2.tgz#95b4eeddbec902b3db1424932ac634f887c400b1"
|
||||
integrity sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==
|
||||
version "3.9.0"
|
||||
resolved "https://registry.yarnpkg.com/winston/-/winston-3.9.0.tgz#2bbdeb8167a75fac6d9a0c6d002890cd908016c2"
|
||||
integrity sha512-jW51iW/X95BCW6MMtZWr2jKQBP4hV5bIDq9QrIjfDk6Q9QuxvTKEAlpUNAzP+HYHFFCeENhph16s0zEunu4uuQ==
|
||||
dependencies:
|
||||
"@colors/colors" "1.5.0"
|
||||
"@dabh/diagnostics" "^2.0.2"
|
||||
async "^3.2.3"
|
||||
is-stream "^2.0.0"
|
||||
|
@@ -130,7 +130,7 @@ export class AutoOpenTabCLIHandler extends CLIHandler {
|
||||
}
|
||||
|
||||
async handle (event: CLIEvent): Promise<boolean> {
|
||||
if (!event.secondInstance && this.config.store.terminal.autoOpen) {
|
||||
if (!event.secondInstance && this.config.store.terminal.autoOpen && !this.config.store.enableWelcomeTab) {
|
||||
this.app.ready$.subscribe(() => {
|
||||
this.terminal.openTab()
|
||||
})
|
||||
|
@@ -4,7 +4,7 @@ import { ConfigProvider, Platform } from 'tabby-core'
|
||||
export class TerminalConfigProvider extends ConfigProvider {
|
||||
defaults = {
|
||||
terminal: {
|
||||
autoOpen: false,
|
||||
autoOpen: true,
|
||||
useConPTY: true,
|
||||
environment: {},
|
||||
setComSpec: false,
|
||||
|
@@ -21,7 +21,7 @@ import { RecoveryProvider } from './recoveryProvider'
|
||||
import { ShellSettingsTabProvider } from './settings'
|
||||
import { TerminalConfigProvider } from './config'
|
||||
import { LocalTerminalHotkeyProvider } from './hotkeys'
|
||||
import { NewTabContextMenu, SaveAsProfileContextMenu } from './tabContextMenu'
|
||||
import { NewTabContextMenu } from './tabContextMenu'
|
||||
|
||||
import { AutoOpenTabCLIHandler, OpenPathCLIHandler, TerminalCLIHandler } from './cli'
|
||||
import { LocalProfilesService } from './profiles'
|
||||
@@ -47,7 +47,6 @@ import { LocalProfilesService } from './profiles'
|
||||
{ provide: ProfileProvider, useClass: LocalProfilesService, multi: true },
|
||||
|
||||
{ provide: TabContextMenuItemProvider, useClass: NewTabContextMenu, multi: true },
|
||||
{ provide: TabContextMenuItemProvider, useClass: SaveAsProfileContextMenu, multi: true },
|
||||
|
||||
{ provide: CLIHandler, useClass: TerminalCLIHandler, multi: true },
|
||||
{ provide: CLIHandler, useClass: OpenPathCLIHandler, multi: true },
|
||||
|
@@ -1,59 +1,9 @@
|
||||
import { Inject, Injectable, Optional } from '@angular/core'
|
||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
|
||||
import { ConfigService, BaseTabComponent, TabContextMenuItemProvider, NotificationsService, MenuItemOptions, ProfilesService, PromptModalComponent, TranslateService } from 'tabby-core'
|
||||
import { ConfigService, BaseTabComponent, TabContextMenuItemProvider, MenuItemOptions, ProfilesService, TranslateService } from 'tabby-core'
|
||||
import { TerminalTabComponent } from './components/terminalTab.component'
|
||||
import { TerminalService } from './services/terminal.service'
|
||||
import { LocalProfile, UACService } from './api'
|
||||
|
||||
/** @hidden */
|
||||
@Injectable()
|
||||
export class SaveAsProfileContextMenu extends TabContextMenuItemProvider {
|
||||
constructor (
|
||||
private config: ConfigService,
|
||||
private ngbModal: NgbModal,
|
||||
private notifications: NotificationsService,
|
||||
private translate: TranslateService,
|
||||
) {
|
||||
super()
|
||||
}
|
||||
|
||||
async getItems (tab: BaseTabComponent): Promise<MenuItemOptions[]> {
|
||||
if (!(tab instanceof TerminalTabComponent)) {
|
||||
return []
|
||||
}
|
||||
const terminalTab = tab
|
||||
const items: MenuItemOptions[] = [
|
||||
{
|
||||
label: this.translate.instant('Save as profile'),
|
||||
click: async () => {
|
||||
const modal = this.ngbModal.open(PromptModalComponent)
|
||||
modal.componentInstance.prompt = this.translate.instant('New profile name')
|
||||
const name = (await modal.result)?.value
|
||||
if (!name) {
|
||||
return
|
||||
}
|
||||
const profile = {
|
||||
options: {
|
||||
...terminalTab.profile.options,
|
||||
cwd: await terminalTab.session?.getWorkingDirectory() ?? terminalTab.profile.options.cwd,
|
||||
},
|
||||
name,
|
||||
type: 'local',
|
||||
}
|
||||
this.config.store.profiles = [
|
||||
...this.config.store.profiles,
|
||||
profile,
|
||||
]
|
||||
this.config.save()
|
||||
this.notifications.info(this.translate.instant('Saved'))
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
return items
|
||||
}
|
||||
}
|
||||
|
||||
/** @hidden */
|
||||
@Injectable()
|
||||
export class NewTabContextMenu extends TabContextMenuItemProvider {
|
||||
|
@@ -3,9 +3,9 @@
|
||||
|
||||
|
||||
"@types/semver@^7.1.0":
|
||||
version "7.3.9"
|
||||
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc"
|
||||
integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==
|
||||
version "7.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a"
|
||||
integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==
|
||||
|
||||
lru-cache@^6.0.0:
|
||||
version "6.0.0"
|
||||
@@ -15,9 +15,9 @@ lru-cache@^6.0.0:
|
||||
yallist "^4.0.0"
|
||||
|
||||
semver@^7.1.1:
|
||||
version "7.3.5"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
|
||||
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
|
||||
version "7.5.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec"
|
||||
integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
|
@@ -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, UTF8SplitterMiddleware } from 'tabby-terminal'
|
||||
import { BaseSession, BaseTerminalProfile, InputProcessingOptions, InputProcessor, LoginScriptsOptions, SessionMiddleware, StreamProcessingOptions, TerminalStreamProcessor, UTF8SplitterMiddleware } from 'tabby-terminal'
|
||||
import { SerialService } from './services/serial.service'
|
||||
|
||||
export interface SerialProfile extends BaseTerminalProfile {
|
||||
@@ -21,6 +21,7 @@ export interface SerialProfileOptions extends StreamProcessingOptions, LoginScri
|
||||
xoff?: boolean
|
||||
xany?: boolean
|
||||
slowSend?: boolean
|
||||
input: InputProcessingOptions,
|
||||
}
|
||||
|
||||
export const BAUD_RATES = [
|
||||
@@ -65,6 +66,7 @@ export class SerialSession extends BaseSession {
|
||||
}
|
||||
|
||||
this.middleware.push(new UTF8SplitterMiddleware())
|
||||
this.middleware.push(new InputProcessor(profile.options.input))
|
||||
|
||||
this.setLoginScriptsOptions(profile.options)
|
||||
}
|
||||
|
@@ -92,4 +92,9 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
|
||||
ng-template(ngbNavContent)
|
||||
login-scripts-settings([options]='profile.options')
|
||||
|
||||
li(ngbNavItem)
|
||||
a(ngbNavLink, translate) Input
|
||||
ng-template(ngbNavContent)
|
||||
input-processing-settings([options]='profile.options.input')
|
||||
|
||||
div([ngbNavOutlet]='nav')
|
||||
|
@@ -30,6 +30,7 @@ export class SerialProfilesService extends ProfileProvider<SerialProfile> {
|
||||
outputNewlines: null,
|
||||
scripts: [],
|
||||
slowSend: false,
|
||||
input: { backspace: 'backspace' },
|
||||
},
|
||||
}
|
||||
|
||||
|
@@ -20,7 +20,7 @@
|
||||
"devDependencies": {
|
||||
"@types/marked": "^4.0.8",
|
||||
"marked": "^4.2.12",
|
||||
"ngx-infinite-scroll": "^15"
|
||||
"ngx-infinite-scroll": "^16"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/animations": "^15",
|
||||
|
@@ -70,17 +70,47 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
|
||||
button.btn.btn-link.hover-reveal.ms-1((click)='$event.stopPropagation(); launchProfile(profile)')
|
||||
i.fas.fa-play
|
||||
|
||||
button.btn.btn-link.hover-reveal.ms-1((click)='$event.stopPropagation(); newProfile(profile)')
|
||||
i.fas.fa-copy
|
||||
.ms-1.hover-reveal(ngbDropdown, placement='bottom-right top-right auto')
|
||||
button.btn.btn-link.ms-1(
|
||||
ngbDropdownToggle,
|
||||
(click)='$event.stopPropagation()'
|
||||
)
|
||||
i.fas.fa-fw.fa-ellipsis-vertical
|
||||
div(ngbDropdownMenu)
|
||||
button.dropdown-item(
|
||||
ngbDropdownItem,
|
||||
(click)='$event.stopPropagation(); newProfile(profile)'
|
||||
)
|
||||
i.fas.fa-fw.fa-copy
|
||||
span(translate) Duplicate
|
||||
|
||||
button.btn.btn-link.hover-reveal.ms-1(
|
||||
*ngIf='!profile.isBuiltin',
|
||||
(click)='$event.stopPropagation(); deleteProfile(profile)'
|
||||
)
|
||||
i.fas.fa-trash-alt
|
||||
button.dropdown-item(
|
||||
ngbDropdownItem,
|
||||
*ngIf='profile.id && !isProfileBlacklisted(profile)',
|
||||
(click)='$event.stopPropagation(); blacklistProfile(profile)'
|
||||
)
|
||||
i.fas.fa-fw.fa-eye-slash
|
||||
span(translate) Hide
|
||||
|
||||
button.dropdown-item(
|
||||
ngbDropdownItem,
|
||||
*ngIf='profile.id && isProfileBlacklisted(profile)',
|
||||
(click)='$event.stopPropagation(); unblacklistProfile(profile)'
|
||||
)
|
||||
i.fas.fa-fw.fa-eye
|
||||
span(translate) Show
|
||||
|
||||
button.dropdown-item(
|
||||
*ngIf='!profile.isBuiltin',
|
||||
(click)='$event.stopPropagation(); deleteProfile(profile)'
|
||||
)
|
||||
i.fas.fa-fw.fa-trash-alt
|
||||
span(translate) Delete
|
||||
|
||||
.ms-1(class='badge text-bg-{{getTypeColorClass(profile)}}') {{getTypeLabel(profile)}}
|
||||
|
||||
.ms-1.text-danger.fas.fa-eye-slash(*ngIf='isProfileBlacklisted(profile)')
|
||||
|
||||
li(ngbNavItem)
|
||||
a(ngbNavLink, translate) Advanced
|
||||
ng-template(ngbNavContent)
|
||||
@@ -119,6 +149,20 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
|
||||
option(ngValue='wt', translation) Windows Terminal
|
||||
option(ngValue='cygwin', translation) Cygwin
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title(translate) Default "Connect to" type
|
||||
.description(translate) Default connection type used by quick connect feature (ex. SSH, Telnet)
|
||||
|
||||
select.form-control(
|
||||
[(ngModel)]='config.store.defaultQuickConnectProvider',
|
||||
(ngModelChange)='config.save()',
|
||||
)
|
||||
option(
|
||||
*ngFor='let provider of getQuickConnectProviders()',
|
||||
[ngValue]='provider.id'
|
||||
) {{provider.name}}
|
||||
|
||||
.form-line.content-box
|
||||
.header
|
||||
.title(translate) Default profile settings
|
||||
|
@@ -59,7 +59,8 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
|
||||
async newProfile (base?: PartialProfile<Profile>): Promise<void> {
|
||||
if (!base) {
|
||||
const profiles = [...this.templateProfiles, ...this.builtinProfiles, ...this.profiles]
|
||||
let profiles = [...this.templateProfiles, ...this.builtinProfiles, ...this.profiles]
|
||||
profiles = profiles.filter(x => !this.isProfileBlacklisted(x))
|
||||
profiles.sort((a, b) => (a.weight ?? 0) - (b.weight ?? 0))
|
||||
base = await this.selector.show(
|
||||
this.translate.instant('Select a base profile to use as a template'),
|
||||
@@ -163,10 +164,13 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
const profileGroupCollapsed = JSON.parse(window.localStorage.profileGroupCollapsed ?? '{}')
|
||||
|
||||
for (const profile of this.profiles) {
|
||||
let group = this.profileGroups.find(x => x.name === profile.group)
|
||||
// Group null, undefined and empty together
|
||||
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
||||
let group = this.profileGroups.find(x => x.name === (profile.group || ''))
|
||||
if (!group) {
|
||||
group = {
|
||||
name: profile.group,
|
||||
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
||||
name: profile.group || '',
|
||||
profiles: [],
|
||||
editable: true,
|
||||
collapsed: profileGroupCollapsed[profile.group ?? ''] ?? false,
|
||||
@@ -294,4 +298,22 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
this.config.store.profileDefaults[provider.id] = model
|
||||
await this.config.save()
|
||||
}
|
||||
|
||||
blacklistProfile (profile: PartialProfile<Profile>): void {
|
||||
this.config.store.profileBlacklist = [...this.config.store.profileBlacklist, profile.id]
|
||||
this.config.save()
|
||||
}
|
||||
|
||||
unblacklistProfile (profile: PartialProfile<Profile>): void {
|
||||
this.config.store.profileBlacklist = this.config.store.profileBlacklist.filter(x => x !== profile.id)
|
||||
this.config.save()
|
||||
}
|
||||
|
||||
isProfileBlacklisted (profile: PartialProfile<Profile>): boolean {
|
||||
return profile.id && this.config.store.profileBlacklist.includes(profile.id)
|
||||
}
|
||||
|
||||
getQuickConnectProviders (): ProfileProvider<Profile>[] {
|
||||
return this.profileProviders.filter(x => x.supportsQuickConnect)
|
||||
}
|
||||
}
|
||||
|
@@ -9,7 +9,7 @@ import { SettingsTabProvider } from '../api'
|
||||
:host {
|
||||
display: block;
|
||||
padding-bottom: 20px;
|
||||
max-width: 500px;
|
||||
max-width: 600px;
|
||||
}
|
||||
`],
|
||||
})
|
||||
|
@@ -12,10 +12,10 @@ marked@^4.2.12:
|
||||
resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.12.tgz#d69a64e21d71b06250da995dcd065c11083bebb5"
|
||||
integrity sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==
|
||||
|
||||
ngx-infinite-scroll@^15:
|
||||
version "15.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ngx-infinite-scroll/-/ngx-infinite-scroll-15.0.0.tgz#61bbf89f121a796880a4ad67fe785b406532b220"
|
||||
integrity sha512-FSP5UphRdl47vW8f/dRnPAU+napzruAKizBX2HS7MH292Ca+va6IU0J5+UQQmO5rXod2RZV7UhJ6+7g4xLfs1A==
|
||||
ngx-infinite-scroll@^16:
|
||||
version "16.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ngx-infinite-scroll/-/ngx-infinite-scroll-16.0.0.tgz#287b48898bc291a0e7c5b3344cf337d7ac82e2dd"
|
||||
integrity sha512-bzyNYd+wVlUUxcopRVr2DAa81eEc8vITtKVvb+c7R1uy8hWPTlxOEXf3L1qA4FMwTEzCQ9b37TXzlJji3qBy+A==
|
||||
dependencies:
|
||||
tslib "^2.3.0"
|
||||
|
||||
|
@@ -22,7 +22,7 @@
|
||||
"author": "Eugene Pankov",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@types/node": "16.0.1",
|
||||
"@types/node": "20.3.1",
|
||||
"@types/ssh2": "^0.5.46",
|
||||
"ansi-colors": "^4.1.1",
|
||||
"sshpk": "Eugeny/node-sshpk#c2b71d1243714d2daf0988f84c3323d180817136",
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { BaseTerminalProfile, LoginScriptsOptions } from 'tabby-terminal'
|
||||
import { BaseTerminalProfile, InputProcessingOptions, LoginScriptsOptions } from 'tabby-terminal'
|
||||
|
||||
export enum SSHAlgorithmType {
|
||||
HMAC = 'hmac',
|
||||
@@ -34,6 +34,7 @@ export interface SSHProfileOptions extends LoginScriptsOptions {
|
||||
httpProxyHost?: string
|
||||
httpProxyPort?: number
|
||||
reuseSession?: boolean
|
||||
input: InputProcessingOptions,
|
||||
}
|
||||
|
||||
export enum PortForwardType {
|
||||
|
@@ -294,4 +294,9 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
|
||||
ng-template(ngbNavContent)
|
||||
login-scripts-settings([options]='profile.options', #loginScriptsSettings)
|
||||
|
||||
li(ngbNavItem)
|
||||
a(ngbNavLink, translate) Input
|
||||
ng-template(ngbNavContent)
|
||||
input-processing-settings([options]='profile.options.input')
|
||||
|
||||
div([ngbNavOutlet]='nav')
|
||||
|
@@ -43,6 +43,7 @@ export class SSHProfilesService extends ProfileProvider<SSHProfile> {
|
||||
httpProxyHost: null,
|
||||
httpProxyPort: null,
|
||||
reuseSession: true,
|
||||
input: { backspace: 'backspace' },
|
||||
},
|
||||
}
|
||||
|
||||
|
@@ -3,7 +3,7 @@ import stripAnsi from 'strip-ansi'
|
||||
import { ClientChannel } from 'ssh2'
|
||||
import { Injector } from '@angular/core'
|
||||
import { LogService } from 'tabby-core'
|
||||
import { BaseSession, UTF8SplitterMiddleware } from 'tabby-terminal'
|
||||
import { BaseSession, UTF8SplitterMiddleware, InputProcessor } from 'tabby-terminal'
|
||||
import { SSHSession } from './ssh'
|
||||
import { SSHProfile } from '../api'
|
||||
|
||||
@@ -24,6 +24,7 @@ export class SSHShellSession extends BaseSession {
|
||||
this.setLoginScriptsOptions(this.profile.options)
|
||||
this.ssh.serviceMessage$.subscribe(m => this.serviceMessage.next(m))
|
||||
this.middleware.push(new UTF8SplitterMiddleware())
|
||||
this.middleware.push(new InputProcessor(profile.options.input))
|
||||
}
|
||||
|
||||
async start (): Promise<void> {
|
||||
|
@@ -9,10 +9,10 @@
|
||||
dependencies:
|
||||
ipv6 "*"
|
||||
|
||||
"@types/node@*", "@types/node@16.0.1":
|
||||
version "16.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.0.1.tgz#70cedfda26af7a2ca073fdcc9beb2fff4aa693f8"
|
||||
integrity sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==
|
||||
"@types/node@*", "@types/node@20.3.1":
|
||||
version "20.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe"
|
||||
integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==
|
||||
|
||||
"@types/ssh2-streams@*":
|
||||
version "0.1.8"
|
||||
@@ -34,7 +34,7 @@ ansi-colors@^4.1.1:
|
||||
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
|
||||
integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
|
||||
|
||||
ansi-regex@^6.0.0:
|
||||
ansi-regex@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
|
||||
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
|
||||
@@ -273,11 +273,11 @@ stack-trace@0.0.x:
|
||||
integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
|
||||
|
||||
strip-ansi@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.0.tgz#1dc49b980c3a4100366617adac59327eefdefcb0"
|
||||
integrity sha512-UhDTSnGF1dc0DRbUqr1aXwNoY3RgVkSWG8BrpnuFIxhP57IqbS7IRta2Gfiavds4yCxc5+fEAVVOgBZWnYkvzg==
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
|
||||
integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
|
||||
dependencies:
|
||||
ansi-regex "^6.0.0"
|
||||
ansi-regex "^6.0.1"
|
||||
|
||||
tmp-promise@^3.0.3:
|
||||
version "3.0.3"
|
||||
|
@@ -24,4 +24,9 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
|
||||
ng-template(ngbNavContent)
|
||||
login-scripts-settings([options]='profile.options')
|
||||
|
||||
li(ngbNavItem)
|
||||
a(ngbNavLink, translate) Input
|
||||
ng-template(ngbNavContent)
|
||||
input-processing-settings([options]='profile.options.input')
|
||||
|
||||
div([ngbNavOutlet]='nav')
|
||||
|
@@ -8,7 +8,7 @@ import { TelnetProfile } from './session'
|
||||
export class TelnetProfilesService extends ProfileProvider<TelnetProfile> {
|
||||
id = 'telnet'
|
||||
name = 'Telnet'
|
||||
supportsQuickConnect = false
|
||||
supportsQuickConnect = true
|
||||
settingsComponent = TelnetProfileSettingsComponent
|
||||
configDefaults = {
|
||||
options: {
|
||||
@@ -19,6 +19,7 @@ export class TelnetProfilesService extends ProfileProvider<TelnetProfile> {
|
||||
inputNewlines: null,
|
||||
outputNewlines: 'crlf',
|
||||
scripts: [],
|
||||
input: { backspace: 'backspace' },
|
||||
},
|
||||
}
|
||||
|
||||
|
@@ -3,7 +3,7 @@ import colors from 'ansi-colors'
|
||||
import stripAnsi from 'strip-ansi'
|
||||
import { Injector } from '@angular/core'
|
||||
import { LogService } from 'tabby-core'
|
||||
import { BaseSession, BaseTerminalProfile, LoginScriptsOptions, SessionMiddleware, StreamProcessingOptions, TerminalStreamProcessor } from 'tabby-terminal'
|
||||
import { BaseSession, BaseTerminalProfile, InputProcessingOptions, InputProcessor, LoginScriptsOptions, SessionMiddleware, StreamProcessingOptions, TerminalStreamProcessor } from 'tabby-terminal'
|
||||
import { Subject, Observable } from 'rxjs'
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ export interface TelnetProfile extends BaseTerminalProfile {
|
||||
export interface TelnetProfileOptions extends StreamProcessingOptions, LoginScriptsOptions {
|
||||
host: string
|
||||
port?: number
|
||||
input: InputProcessingOptions,
|
||||
}
|
||||
|
||||
enum TelnetCommands {
|
||||
@@ -66,6 +67,7 @@ export class TelnetSession extends BaseSession {
|
||||
private lastWidth = 0
|
||||
private lastHeight = 0
|
||||
private requestedOptions = new Set<number>()
|
||||
private telnetRemoteEcho = false
|
||||
|
||||
constructor (
|
||||
injector: Injector,
|
||||
@@ -74,6 +76,7 @@ export class TelnetSession extends BaseSession {
|
||||
super(injector.get(LogService).create(`telnet-${profile.options.host}-${profile.options.port}`))
|
||||
this.streamProcessor = new TerminalStreamProcessor(profile.options)
|
||||
this.middleware.push(this.streamProcessor)
|
||||
this.middleware.push(new InputProcessor(profile.options.input))
|
||||
this.setLoginScriptsOptions(profile.options)
|
||||
}
|
||||
|
||||
@@ -159,7 +162,7 @@ export class TelnetSession extends BaseSession {
|
||||
data = data.slice(3)
|
||||
this.logger.debug('<', commandName || command, optionName || option)
|
||||
|
||||
if (command === TelnetCommands.WILL || command === TelnetCommands.WONT) {
|
||||
if (command === TelnetCommands.WILL || command === TelnetCommands.WONT || command === TelnetCommands.DONT) {
|
||||
if (this.requestedOptions.has(option)) {
|
||||
this.requestedOptions.delete(option)
|
||||
continue
|
||||
@@ -172,6 +175,11 @@ export class TelnetSession extends BaseSession {
|
||||
TelnetOptions.ECHO,
|
||||
].includes(option)) {
|
||||
this.emitTelnet(TelnetCommands.DO, option)
|
||||
if (option === TelnetOptions.ECHO && this.streamProcessor.forceEcho) {
|
||||
this.telnetRemoteEcho = true
|
||||
this.streamProcessor.forceEcho = false
|
||||
this.requestOption(TelnetCommands.WONT, option)
|
||||
}
|
||||
} else {
|
||||
this.logger.debug('(!) Unhandled option')
|
||||
this.emitTelnet(TelnetCommands.DONT, option)
|
||||
@@ -182,8 +190,13 @@ export class TelnetSession extends BaseSession {
|
||||
this.emitTelnet(TelnetCommands.WILL, option)
|
||||
this.emitSize()
|
||||
} else if (option === TelnetOptions.ECHO) {
|
||||
this.streamProcessor.forceEcho = true
|
||||
this.emitTelnet(TelnetCommands.WILL, option)
|
||||
if (this.telnetRemoteEcho) {
|
||||
this.streamProcessor.forceEcho = false
|
||||
this.emitTelnet(TelnetCommands.WONT, option)
|
||||
} else {
|
||||
this.streamProcessor.forceEcho = true
|
||||
this.emitTelnet(TelnetCommands.WILL, option)
|
||||
}
|
||||
} else if (option === TelnetOptions.TERMINAL_TYPE) {
|
||||
this.emitTelnet(TelnetCommands.WILL, option)
|
||||
} else {
|
||||
@@ -197,7 +210,16 @@ export class TelnetSession extends BaseSession {
|
||||
this.emitTelnet(TelnetCommands.WONT, option)
|
||||
} else {
|
||||
this.logger.debug('(!) Unhandled option')
|
||||
this.emitTelnet(TelnetCommands.WILL, option)
|
||||
this.emitTelnet(TelnetCommands.WONT, option)
|
||||
}
|
||||
}
|
||||
if (command === TelnetCommands.WONT) {
|
||||
if (option === TelnetOptions.ECHO) {
|
||||
this.telnetRemoteEcho = false
|
||||
this.emitTelnet(TelnetCommands.DONT, option)
|
||||
} else {
|
||||
this.logger.debug('(!) Unhandled option')
|
||||
this.emitTelnet(TelnetCommands.DONT, option)
|
||||
}
|
||||
}
|
||||
if (command === TelnetCommands.SUBOPTION) {
|
||||
|
@@ -26,17 +26,17 @@
|
||||
"dataurl": "0.1.0",
|
||||
"hexer": "^1.5.0",
|
||||
"ngx-colors": "^3.4.0",
|
||||
"patch-package": "^6.5.0",
|
||||
"patch-package": "^8.0.0",
|
||||
"runes": "^0.4.2",
|
||||
"xterm": "^5.1.0",
|
||||
"xterm-addon-canvas": "^0.4.0-beta.9",
|
||||
"xterm": "^5.2.0",
|
||||
"xterm-addon-canvas": "^0.4.0",
|
||||
"xterm-addon-fit": "^0.7.0",
|
||||
"xterm-addon-image": "^0.3.1",
|
||||
"xterm-addon-image": "^0.4.1",
|
||||
"xterm-addon-ligatures": "^0.6.0",
|
||||
"xterm-addon-search": "^0.11.0",
|
||||
"xterm-addon-serialize": "^0.9.0",
|
||||
"xterm-addon-search": "^0.12.0",
|
||||
"xterm-addon-serialize": "^0.10.0",
|
||||
"xterm-addon-unicode11": "^0.5.0",
|
||||
"xterm-addon-webgl": "^0.14.0",
|
||||
"xterm-addon-webgl": "^0.15.0",
|
||||
"zmodem.js": "^0.1.9"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
@@ -1,13 +0,0 @@
|
||||
diff --git a/node_modules/xterm/src/common/CircularList.ts b/node_modules/xterm/src/common/CircularList.ts
|
||||
index 8ab80d5..622a1ef 100644
|
||||
--- a/node_modules/xterm/src/common/CircularList.ts
|
||||
+++ b/node_modules/xterm/src/common/CircularList.ts
|
||||
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
|
||||
import { ICircularList } from 'common/Types';
|
||||
-import { EventEmitter, IEvent } from 'common/EventEmitter';
|
||||
+import { EventEmitter } from 'common/EventEmitter';
|
||||
import { Disposable } from 'common/Lifecycle';
|
||||
|
||||
export interface IInsertEvent {
|
@@ -331,6 +331,10 @@ export class BaseTerminalTabComponent<P extends BaseTerminalProfile> extends Bas
|
||||
this.frontend?.focus()
|
||||
})
|
||||
|
||||
this.subscribeUntilDestroyed(this.platform.themeChanged$, () => {
|
||||
this.configure()
|
||||
})
|
||||
|
||||
const cls: new (..._) => Frontend = {
|
||||
xterm: XTermFrontend,
|
||||
'xterm-webgl': XTermWebGLFrontend,
|
||||
@@ -772,10 +776,7 @@ export class BaseTerminalTabComponent<P extends BaseTerminalProfile> extends Bas
|
||||
})
|
||||
|
||||
this.attachSessionHandler(this.session.closed$, () => {
|
||||
const behavior = this.profile.behaviorOnSessionEnd
|
||||
if (destroyOnSessionClose || behavior === 'close' || behavior === 'auto' && this.isSessionExplicitlyTerminated()) {
|
||||
this.destroy()
|
||||
}
|
||||
this.onSessionClosed(destroyOnSessionClose)
|
||||
})
|
||||
|
||||
this.attachSessionHandler(this.session.destroyed$, () => {
|
||||
@@ -788,6 +789,23 @@ export class BaseTerminalTabComponent<P extends BaseTerminalProfile> extends Bas
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Method called when session is closed.
|
||||
*/
|
||||
protected onSessionClosed (destroyOnSessionClose = false): void {
|
||||
if (destroyOnSessionClose || this.shouldTabBeDestroyedOnSessionClose()) {
|
||||
this.destroy()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if tab should be destroyed on session closed.
|
||||
*/
|
||||
protected shouldTabBeDestroyedOnSessionClose (): boolean {
|
||||
const behavior = this.profile.behaviorOnSessionEnd
|
||||
return behavior === 'close' || behavior === 'auto' && this.isSessionExplicitlyTerminated()
|
||||
}
|
||||
|
||||
/**
|
||||
* Method called when session is destroyed. Set the session to null
|
||||
*/
|
||||
|
@@ -16,13 +16,25 @@ import { GetRecoveryTokenOptions, RecoveryToken } from 'tabby-core'
|
||||
export abstract class ConnectableTerminalTabComponent<P extends BaseTerminalProfile> extends BaseTerminalTabComponent<P> {
|
||||
|
||||
protected reconnectOffered = false
|
||||
protected isDisconnectedByHand = false
|
||||
|
||||
constructor (protected injector: Injector) {
|
||||
super(injector)
|
||||
|
||||
this.subscribeUntilDestroyed(this.hotkeys.hotkey$, hotkey => {
|
||||
if (this.hasFocus && hotkey === 'reconnect-tab') {
|
||||
this.reconnect()
|
||||
if (!this.hasFocus) {
|
||||
return
|
||||
}
|
||||
|
||||
switch (hotkey) {
|
||||
case 'reconnect-tab':
|
||||
this.reconnect()
|
||||
this.notifications.notice(this.translate.instant('Reconnect'))
|
||||
break
|
||||
case 'disconnect-tab':
|
||||
this.disconnect()
|
||||
this.notifications.notice(this.translate.instant('Disconnect'))
|
||||
break
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -44,6 +56,7 @@ export abstract class ConnectableTerminalTabComponent<P extends BaseTerminalProf
|
||||
*/
|
||||
async initializeSession (): Promise<void> {
|
||||
this.reconnectOffered = false
|
||||
this.isDisconnectedByHand = false
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -53,9 +66,9 @@ export abstract class ConnectableTerminalTabComponent<P extends BaseTerminalProf
|
||||
super.onSessionDestroyed()
|
||||
|
||||
if (this.frontend) {
|
||||
if (this.profile.behaviorOnSessionEnd === 'reconnect') {
|
||||
if (this.profile.behaviorOnSessionEnd === 'reconnect' && !this.isDisconnectedByHand) {
|
||||
this.reconnect()
|
||||
} else if (this.profile.behaviorOnSessionEnd === 'keep' || this.profile.behaviorOnSessionEnd === 'auto' && !this.isSessionExplicitlyTerminated()) {
|
||||
} else if (this.profile.behaviorOnSessionEnd === 'keep' || !this.shouldTabBeDestroyedOnSessionClose()) {
|
||||
this.offerReconnection()
|
||||
}
|
||||
}
|
||||
@@ -77,6 +90,16 @@ export abstract class ConnectableTerminalTabComponent<P extends BaseTerminalProf
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if tab should be destroyed on session closed.
|
||||
*/
|
||||
protected shouldTabBeDestroyedOnSessionClose (): boolean {
|
||||
if (this.isDisconnectedByHand) {
|
||||
return false
|
||||
}
|
||||
return super.shouldTabBeDestroyedOnSessionClose()
|
||||
}
|
||||
|
||||
async getRecoveryToken (options?: GetRecoveryTokenOptions): Promise<RecoveryToken> {
|
||||
return {
|
||||
type: `app:${this.profile.type}-tab`,
|
||||
@@ -85,6 +108,11 @@ export abstract class ConnectableTerminalTabComponent<P extends BaseTerminalProf
|
||||
}
|
||||
}
|
||||
|
||||
async disconnect (): Promise<void> {
|
||||
this.isDisconnectedByHand = true
|
||||
await this.session?.destroy()
|
||||
}
|
||||
|
||||
async reconnect (): Promise<void> {
|
||||
this.session?.destroy()
|
||||
await this.initializeSession()
|
||||
|
@@ -27,9 +27,41 @@ export class DefaultColorSchemes extends TerminalColorSchemeProvider {
|
||||
'#b7fff9',
|
||||
'#ffffff',
|
||||
],
|
||||
selection: undefined,
|
||||
cursorAccent: undefined,
|
||||
}
|
||||
|
||||
static defaultLightColorScheme: TerminalColorScheme = {
|
||||
name: 'Tabby Default Light',
|
||||
foreground: '#4d4d4c',
|
||||
background: '#ffffff',
|
||||
cursor: '#4d4d4c',
|
||||
colors: [
|
||||
'#000000',
|
||||
'#c82829',
|
||||
'#718c00',
|
||||
'#eab700',
|
||||
'#4271ae',
|
||||
'#8959a8',
|
||||
'#3e999f',
|
||||
'#ffffff',
|
||||
'#000000',
|
||||
'#c82829',
|
||||
'#718c00',
|
||||
'#eab700',
|
||||
'#4271ae',
|
||||
'#8959a8',
|
||||
'#3e999f',
|
||||
'#ffffff',
|
||||
],
|
||||
selection: undefined,
|
||||
cursorAccent: undefined,
|
||||
}
|
||||
|
||||
async getSchemes (): Promise<TerminalColorScheme[]> {
|
||||
return [DefaultColorSchemes.defaultColorScheme]
|
||||
return [
|
||||
DefaultColorSchemes.defaultColorScheme,
|
||||
DefaultColorSchemes.defaultLightColorScheme,
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,116 @@
|
||||
.head
|
||||
.d-flex.align-items-center(*ngIf='!editing')
|
||||
strong.me-2(translate) Current color scheme
|
||||
span {{getCurrentSchemeName()}}
|
||||
.me-auto
|
||||
.btn-toolbar
|
||||
button.btn.btn-secondary((click)='editScheme()')
|
||||
i.fas.fa-pen
|
||||
span(translate) Edit
|
||||
.me-1
|
||||
button.btn.btn-danger(
|
||||
(click)='deleteScheme(config.store.terminal[this.configKey])',
|
||||
*ngIf='currentCustomScheme'
|
||||
)
|
||||
i.fas.fa-trash
|
||||
span(translate) Delete
|
||||
|
||||
div(*ngIf='editing')
|
||||
.mb-3
|
||||
label(translate) Name
|
||||
input.form-control(type='text', [(ngModel)]='config.store.terminal[this.configKey].name')
|
||||
|
||||
.mb-3
|
||||
color-picker(
|
||||
[(model)]='config.store.terminal[this.configKey].foreground',
|
||||
(modelChange)='config.save()',
|
||||
title='FG',
|
||||
hint='Foreground'
|
||||
)
|
||||
color-picker(
|
||||
[(model)]='config.store.terminal[this.configKey].background',
|
||||
(modelChange)='config.save()',
|
||||
title='BG',
|
||||
hint='Background'
|
||||
)
|
||||
color-picker(
|
||||
[(model)]='config.store.terminal[this.configKey].cursor',
|
||||
(modelChange)='config.save()',
|
||||
title='CU',
|
||||
hint='Cursor color'
|
||||
)
|
||||
color-picker(
|
||||
[(model)]='config.store.terminal[this.configKey].cursorAccent',
|
||||
(modelChange)='config.save()',
|
||||
title='CA',
|
||||
hint='Block cursor foreground'
|
||||
)
|
||||
color-picker(
|
||||
[(model)]='config.store.terminal[this.configKey].selection',
|
||||
(modelChange)='config.save()',
|
||||
title='SB',
|
||||
hint='Selection background'
|
||||
)
|
||||
color-picker(
|
||||
[(model)]='config.store.terminal[this.configKey].selectionForeground',
|
||||
(modelChange)='config.save()',
|
||||
title='SF',
|
||||
hint='Selection foreground'
|
||||
)
|
||||
color-picker(
|
||||
*ngFor='let _ of config.store.terminal[this.configKey].colors; let idx = index; trackBy: colorsTrackBy',
|
||||
[(model)]='config.store.terminal[this.configKey].colors[idx]',
|
||||
(modelChange)='config.save()',
|
||||
[title]='idx.toString()',
|
||||
hint='ANSI color {{idx}}'
|
||||
)
|
||||
|
||||
color-scheme-preview([scheme]='config.store.terminal[this.configKey]')
|
||||
|
||||
.btn-toolbar.d-flex.mt-2(*ngIf='editing')
|
||||
.me-auto
|
||||
button.btn.btn-primary((click)='saveScheme()')
|
||||
i.fas.fa-check
|
||||
span(translate) Save
|
||||
.me-1
|
||||
button.btn.btn-secondary((click)='cancelEditing()')
|
||||
i.fas.fa-times
|
||||
span(translate) Cancel
|
||||
|
||||
hr.mt-3.mb-4
|
||||
|
||||
.input-group.mb-3
|
||||
.input-group-text
|
||||
i.fas.fa-fw.fa-search
|
||||
input.form-control(type='search', [placeholder]='"Search color schemes"|translate', [(ngModel)]='filter')
|
||||
|
||||
.body
|
||||
.list-group.list-group-light.mb-3
|
||||
ng-container(*ngFor='let scheme of allColorSchemes')
|
||||
.list-group-item.list-group-item-action(
|
||||
[hidden]='filter && !scheme.name.toLowerCase().includes(filter.toLowerCase())',
|
||||
(click)='selectScheme(scheme)',
|
||||
[class.active]='(currentCustomScheme || currentStockScheme) === scheme'
|
||||
)
|
||||
.d-flex.w-100.align-items-center
|
||||
i.fas.fa-fw([class.fa-check]='(currentCustomScheme || currentStockScheme) === scheme')
|
||||
|
||||
.ms-2
|
||||
|
||||
.me-auto
|
||||
span {{scheme.name}}
|
||||
.badge.text-bg-info.ms-2(*ngIf='customColorSchemes.includes(scheme)', translate) Custom
|
||||
|
||||
div
|
||||
.d-flex
|
||||
.swatch(
|
||||
*ngFor='let index of colorIndexes.slice(0, 8)',
|
||||
[style.background-color]='scheme.colors[index]'
|
||||
)
|
||||
.d-flex
|
||||
.swatch(
|
||||
*ngFor='let index of colorIndexes.slice(8, 16)',
|
||||
[style.background-color]='scheme.colors[index]'
|
||||
)
|
||||
|
||||
color-scheme-preview([scheme]='scheme')
|
@@ -0,0 +1,117 @@
|
||||
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
||||
import deepEqual from 'deep-equal'
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'
|
||||
|
||||
import { Component, Inject, Input, ChangeDetectionStrategy, ChangeDetectorRef, HostBinding } from '@angular/core'
|
||||
import { ConfigService, PlatformService, TranslateService } from 'tabby-core'
|
||||
import { TerminalColorSchemeProvider } from '../api/colorSchemeProvider'
|
||||
import { TerminalColorScheme } from '../api/interfaces'
|
||||
|
||||
_('Search color schemes')
|
||||
|
||||
/** @hidden */
|
||||
@Component({
|
||||
selector: 'color-scheme-settings-for-mode',
|
||||
templateUrl: './colorSchemeSettingsForMode.component.pug',
|
||||
styleUrls: ['./colorSchemeSettingsForMode.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class ColorSchemeSettingsForModeComponent {
|
||||
@Input() configKey: 'colorScheme'|'lightColorScheme'
|
||||
|
||||
@Input() stockColorSchemes: TerminalColorScheme[] = []
|
||||
@Input() customColorSchemes: TerminalColorScheme[] = []
|
||||
@Input() allColorSchemes: TerminalColorScheme[] = []
|
||||
@Input() filter = ''
|
||||
@Input() editing = false
|
||||
colorIndexes = [...new Array(16).keys()]
|
||||
|
||||
currentStockScheme: TerminalColorScheme|null = null
|
||||
currentCustomScheme: TerminalColorScheme|null = null
|
||||
|
||||
@HostBinding('class.content-box') true
|
||||
|
||||
constructor (
|
||||
@Inject(TerminalColorSchemeProvider) private colorSchemeProviders: TerminalColorSchemeProvider[],
|
||||
private changeDetector: ChangeDetectorRef,
|
||||
private platform: PlatformService,
|
||||
private translate: TranslateService,
|
||||
public config: ConfigService,
|
||||
) { }
|
||||
|
||||
async ngOnInit () {
|
||||
this.stockColorSchemes = (await Promise.all(this.config.enabledServices(this.colorSchemeProviders).map(x => x.getSchemes()))).reduce((a, b) => a.concat(b))
|
||||
this.stockColorSchemes.sort((a, b) => a.name.localeCompare(b.name))
|
||||
this.customColorSchemes = this.config.store.terminal.customColorSchemes
|
||||
this.changeDetector.markForCheck()
|
||||
|
||||
this.update()
|
||||
}
|
||||
|
||||
ngOnChanges () {
|
||||
this.update()
|
||||
}
|
||||
|
||||
selectScheme (scheme: TerminalColorScheme) {
|
||||
this.config.store.terminal[this.configKey] = { ...scheme }
|
||||
this.config.save()
|
||||
this.cancelEditing()
|
||||
this.update()
|
||||
}
|
||||
|
||||
update () {
|
||||
this.currentCustomScheme = this.findMatchingScheme(this.config.store.terminal[this.configKey], this.customColorSchemes)
|
||||
this.currentStockScheme = this.findMatchingScheme(this.config.store.terminal[this.configKey], this.stockColorSchemes)
|
||||
this.allColorSchemes = this.customColorSchemes.concat(this.stockColorSchemes)
|
||||
this.changeDetector.markForCheck()
|
||||
}
|
||||
|
||||
editScheme () {
|
||||
this.editing = true
|
||||
}
|
||||
|
||||
saveScheme () {
|
||||
this.customColorSchemes = this.customColorSchemes.filter(x => x.name !== this.config.store.terminal[this.configKey].name)
|
||||
this.customColorSchemes.push(this.config.store.terminal[this.configKey])
|
||||
this.config.store.terminal.customColorSchemes = this.customColorSchemes
|
||||
this.config.save()
|
||||
this.cancelEditing()
|
||||
this.update()
|
||||
}
|
||||
|
||||
cancelEditing () {
|
||||
this.editing = false
|
||||
}
|
||||
|
||||
async deleteScheme (scheme: TerminalColorScheme) {
|
||||
if ((await this.platform.showMessageBox(
|
||||
{
|
||||
type: 'warning',
|
||||
message: this.translate.instant('Delete "{name}"?', scheme),
|
||||
buttons: [
|
||||
this.translate.instant('Delete'),
|
||||
this.translate.instant('Keep'),
|
||||
],
|
||||
defaultId: 1,
|
||||
cancelId: 1,
|
||||
},
|
||||
)).response === 0) {
|
||||
this.customColorSchemes = this.customColorSchemes.filter(x => x.name !== scheme.name)
|
||||
this.config.store.terminal.customColorSchemes = this.customColorSchemes
|
||||
this.config.save()
|
||||
this.update()
|
||||
}
|
||||
}
|
||||
|
||||
getCurrentSchemeName () {
|
||||
return (this.currentCustomScheme ?? this.currentStockScheme)?.name ?? 'Custom'
|
||||
}
|
||||
|
||||
findMatchingScheme (scheme: TerminalColorScheme, schemes: TerminalColorScheme[]) {
|
||||
return schemes.find(x => deepEqual(x, scheme)) ?? null
|
||||
}
|
||||
|
||||
colorsTrackBy (index) {
|
||||
return index
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user