Compare commits

..

409 Commits

Author SHA1 Message Date
allcontributors[bot]
44aed324cc docs: update .all-contributorsrc [skip ci] 2022-08-01 07:27:33 +00:00
allcontributors[bot]
a3fffe85f9 docs: update README.ja-JP.md [skip ci] 2022-08-01 07:27:24 +00:00
allcontributors[bot]
f1f84562c7 docs: update README.de-DE.md [skip ci] 2022-08-01 07:27:23 +00:00
allcontributors[bot]
9e31371d2d docs: update README.it-IT.md [skip ci] 2022-08-01 07:27:22 +00:00
allcontributors[bot]
6f151100ea docs: update README.ko-KR.md [skip ci] 2022-08-01 07:27:21 +00:00
allcontributors[bot]
f6095e874a docs: update README.ru-RU.md [skip ci] 2022-08-01 07:27:20 +00:00
allcontributors[bot]
731ee848d7 docs: update README.zh-CN.md [skip ci] 2022-08-01 07:27:19 +00:00
allcontributors[bot]
5b840a0f13 docs: update README.md [skip ci] 2022-08-01 07:27:18 +00:00
Eugene Pankov
0b43a6c176 Update .all-contributorsrc 2022-08-01 09:27:03 +02:00
Ikko Ashimine
eee3ae56cf Add ja-JP link 2022-08-01 09:26:31 +02:00
Ikko Ashimine
c5a8b78f61 Add ja-JP document 2022-08-01 09:26:31 +02:00
Eugene Pankov
5d6d9eb5ba added financial contributors 2022-07-31 13:01:59 +02:00
Eugene Pankov
12b834774f updated locales 2022-07-30 12:21:47 +02:00
Eugene Pankov
c43137b8f6 fixed #194 - added hotkeys to scroll the terminal 2022-07-30 00:05:44 +02:00
Eugene Pankov
5d383eea04 avoid unnecessary config writes 2022-07-30 00:03:56 +02:00
Eugene Pankov
5bbb5e9210 ssh: rsa-sha2-xxx sig support - fixes #6804 2022-07-29 23:45:22 +02:00
nishans08
f3d501f4ab Fixes grammatical errors in README.md
271: Contributions of any kind welcome! -> Contributions of any kind are welcome!

FIX #6
2022-07-28 10:44:41 +02:00
Qiming-Liu
c3abff56aa feat: hotkey-restart-tab, remove restart menu 2022-07-06 09:20:13 +02:00
Qiming-Liu
aa5970b12d feat: tab context menu 'Restart' 2022-07-06 09:20:13 +02:00
allcontributors[bot]
8be6f852fb docs: update .all-contributorsrc [skip ci] 2022-07-05 21:04:51 +02:00
allcontributors[bot]
4de602921e docs: update README.de-DE.md [skip ci] 2022-07-05 21:04:51 +02:00
allcontributors[bot]
0a97f28be3 docs: update README.it-IT.md [skip ci] 2022-07-05 21:04:51 +02:00
allcontributors[bot]
e2fc512eb2 docs: update README.ko-KR.md [skip ci] 2022-07-05 21:04:51 +02:00
allcontributors[bot]
d125c3a6c6 docs: update README.ru-RU.md [skip ci] 2022-07-05 21:04:51 +02:00
allcontributors[bot]
0199d85b67 docs: update README.zh-CN.md [skip ci] 2022-07-05 21:04:51 +02:00
allcontributors[bot]
6d7874cccc docs: update README.md [skip ci] 2022-07-05 21:04:51 +02:00
Qiming-Liu
ddfe073cf8 feat: installed plugin search bar 2022-07-05 19:54:20 +02:00
Eugene Pankov
72db81aafa Merge branch 'master' of github.com:Eugeny/tabby 2022-06-30 09:15:15 +02:00
Eugene Pankov
6749a93d49 fixed pull request checks 2022-06-30 09:15:02 +02:00
Matheus Castello
1afdb4a398 Fix tab showing activity indicator even without new data
Fix regression from 7be921592a

Signed-off-by: Matheus Castello <matheus@castello.eng.br>
2022-06-30 09:14:36 +02:00
Eugene Pankov
c75294e03a fixed #4686, fixed #6506 - font lookup on Windows 2022-06-27 10:41:30 +02:00
Eugene Pankov
918f06b86a bumped electron 2022-06-26 16:55:24 +02:00
Eugene Pankov
d8019dab2d Merge branch 'master' of github.com:Eugeny/tabby 2022-06-26 16:55:16 +02:00
Eugene
eb0b6d5220 Merge pull request #6647 from Eugeny/dependabot/npm_and_yarn/app/electron-updater-5.0.5 2022-06-26 16:24:40 +02:00
Eugene Pankov
e5cefc5f9f Update tsconfig.json 2022-06-26 16:19:16 +02:00
Eugene Pankov
84901fb9cf debounce state saving 2022-06-26 16:19:13 +02:00
Eugene
c35f780143 Merge pull request #6669 from Eugeny/all-contributors/add-joaompinto
docs: add joaompinto as a contributor for doc
2022-06-25 12:13:19 +02:00
allcontributors[bot]
4f4e616ed8 docs: update .all-contributorsrc [skip ci] 2022-06-25 09:35:46 +00:00
allcontributors[bot]
4d9458c4a2 docs: update README.de-DE.md [skip ci] 2022-06-25 09:35:45 +00:00
allcontributors[bot]
00d584666e docs: update README.it-IT.md [skip ci] 2022-06-25 09:35:44 +00:00
allcontributors[bot]
8f28d6f0f3 docs: update README.ko-KR.md [skip ci] 2022-06-25 09:35:43 +00:00
allcontributors[bot]
51e016f872 docs: update README.ru-RU.md [skip ci] 2022-06-25 09:35:42 +00:00
allcontributors[bot]
29b324e7b9 docs: update README.zh-CN.md [skip ci] 2022-06-25 09:35:41 +00:00
allcontributors[bot]
2131b488a4 docs: update README.md [skip ci] 2022-06-25 09:35:40 +00:00
Eugene
b338f22eae Merge pull request #6668 from joaompinto/master
updated windows build instructions - fixes #6589
2022-06-25 11:35:39 +02:00
João Pinto
d82d7eaec4 updated windows build instructions - fixes #6589 2022-06-25 09:33:19 +02:00
dependabot[bot]
132ceec71b Bump electron-updater from 5.0.1 to 5.0.5 in /app
Bumps [electron-updater](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-updater) from 5.0.1 to 5.0.5.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/packages/electron-updater/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits/electron-updater@5.0.5/packages/electron-updater)

---
updated-dependencies:
- dependency-name: electron-updater
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-22 04:02:24 +00:00
Eugene
a7cba2be28 Update build.yml 2022-06-18 21:11:07 +02:00
Eugene
2b601c7470 Update build-macos.js 2022-06-18 16:04:51 +02:00
Eugene Pankov
1a1381a64a avoid unnecessary touchbar updates 2022-06-18 12:40:22 +02:00
Eugene Pankov
78cd2a0794 display split tab spanners below the maximized pane 2022-06-18 11:27:30 +02:00
Eugene Pankov
7be921592a fixed "notify on activity" not working for the currently active tab 2022-06-18 11:26:09 +02:00
Eugene Pankov
53f3962640 limit max text shown in paste warning 2022-06-18 11:08:50 +02:00
Eugene Pankov
1c8de05065 added support for Ctrl-/ and Ctrl-@ - fixes #6235, fixes #3382, fixes #3053 2022-06-18 10:42:54 +02:00
Eugene Pankov
a24c1c489b added support for Ctrl-/ - fixes #6235, fixes #3382 2022-06-18 10:40:31 +02:00
Eugene Pankov
85d0b47511 added missing string 2022-06-16 18:34:44 +02:00
Eugene Pankov
f469c91786 locale updates 2022-06-15 22:50:47 +02:00
Eugene Pankov
485cd0ef53 updated locales, added Indonesian and UK English 2022-06-15 22:49:46 +02:00
Eugene Pankov
ce351117a5 use atomically instead of write-file-atomic 2022-06-15 21:30:03 +02:00
Eugene Pankov
ef49aa213e use write-file-atomic for config saving 2022-06-15 20:56:47 +02:00
Eugene Pankov
8d5dffcca1 optimized animations 2022-06-15 20:02:00 +02:00
Eugene Pankov
5087e7de25 optimized flow control 2022-06-15 20:01:53 +02:00
Eugene Pankov
52dd0db5f6 bumped macos-release - fixes #6564 - startup on macOS Ventura 2022-06-10 09:21:20 +02:00
Eugene Pankov
9ed6c138f8 revert updates back to Github 2022-06-02 20:15:30 +02:00
Eugene Pankov
7437aaffcf fixed startup event oder - fixes #6511 2022-05-30 23:27:01 +02:00
Eugene Pankov
b3df681753 fixed event listener order 2022-05-28 13:56:49 +02:00
Eugene Pankov
524ccd06f3 autofocus window 2022-05-28 13:15:13 +02:00
Eugene Pankov
8c4c07c39b synchronize config saves between windows 2022-05-28 12:35:32 +02:00
Eugene Pankov
296188c45e cli: allow directly opening script and .command files - fixes #6406, fixes #6018 2022-05-27 20:05:40 +02:00
Eugene Pankov
509ae8d32e fixed spinner handling - fixes #6489, fixes #6476, fixes #3383 2022-05-27 14:44:49 +02:00
Eugene Pankov
f160353abe sixel graphics support - fixes #6032 2022-05-27 13:34:18 +02:00
Eugeny
02fb0db9de Merge pull request #6493 from bdr99/patch-1
Hide description in selector modal if it's the same as the title
2022-05-26 03:43:18 -07:00
Brandon Rothweiler
0a0ec35b84 Hide description in selector model if it's the same as the title 2022-05-24 22:58:02 -04:00
Eugene Pankov
fbcb165708 bumped xterm 2022-05-22 20:39:36 -07:00
Eugene Pankov
643efb13a7 bumped xterm 2022-05-21 22:25:00 -07:00
Eugene Pankov
5a2f14746f fixed #6428 2022-05-21 21:33:08 -07:00
Eugene Pankov
fdf9004323 fixed #6430 2022-05-21 21:22:26 -07:00
Eugene Pankov
12aa28e766 allow customizing selection foreground color 2022-05-21 20:34:19 -07:00
Eugene Pankov
1fb67e1730 serial: fixed unnecessary spinner - fixes #6449 2022-05-21 20:03:32 -07:00
Eugene Pankov
5f0520def9 macOS: accept first mouse click - fixes #6464 2022-05-21 19:51:11 -07:00
Eugene Pankov
1aa45ddcdf use npms.io API to load plugins 2022-05-21 19:48:27 -07:00
Eugene Pankov
cfa6c104cd ui tweak 2022-05-21 19:42:57 -07:00
Eugene Pankov
3bb9acfb98 more prominent active search result highlighting 2022-05-21 19:32:10 -07:00
Eugene Pankov
50c585e14c Merge branch 'master' of github.com:Eugeny/tabby 2022-05-21 19:29:35 -07:00
Eugene Pankov
de8afc1e7a fixed overview ruler alignment 2022-05-21 19:29:31 -07:00
Eugeny
eea02eed2a Merge pull request #6302 from Eugeny/dependabot/npm_and_yarn/axios-0.27.2 2022-05-22 04:26:07 +02:00
Eugene Pankov
40f57a9709 bumped xterm 2022-05-21 19:25:21 -07:00
Eugene Pankov
f2809927c2 lint 2022-05-21 19:25:17 -07:00
Eugeny
f27afebd82 Merge pull request #6131 from Eugeny/dependabot/npm_and_yarn/typedoc-0.22.15 2022-05-22 04:24:03 +02:00
Eugeny
78b4b28480 Merge pull request #6459 from Eugeny/dependabot/npm_and_yarn/tabby-terminal/xterm-addon-webgl-0.12.0-beta.36 2022-05-22 04:23:17 +02:00
Eugeny
76562a23ae Merge pull request #6451 from Eugeny/dependabot/npm_and_yarn/tabby-terminal/xterm-addon-search-0.9.0-beta.37 2022-05-22 04:23:13 +02:00
Eugeny
37a88ea3c4 Merge pull request #6458 from Eugeny/dependabot/npm_and_yarn/webpack-5.72.1 2022-05-22 04:23:08 +02:00
Eugeny
4d89b1853f Merge pull request #6433 from Eugeny/dependabot/github_actions/actions/setup-node-3.2.0 2022-05-22 04:22:47 +02:00
Eugeny
67a05dfb39 Merge pull request #6423 from Eugeny/dependabot/npm_and_yarn/tabby-terminal/xterm-addon-fit-0.6.0-beta.9 2022-05-22 04:22:28 +02:00
Eugeny
3e207f7ed2 Merge pull request #6092 from Eugeny/dependabot/npm_and_yarn/tabby-electron/winston-3.7.2 2022-05-22 04:20:00 +02:00
Eugeny
d3bc36d9a1 Merge pull request #6091 from Eugeny/dependabot/npm_and_yarn/graceful-fs-4.2.10 2022-05-22 04:19:46 +02:00
Eugeny
0a69f54851 Merge pull request #6225 from Eugeny/dependabot/npm_and_yarn/npmlog-6.0.2 2022-05-22 04:19:36 +02:00
Eugeny
8b3448c72d Merge pull request #6209 from Eugeny/dependabot/npm_and_yarn/node-abi-3.15.0 2022-05-22 04:19:20 +02:00
Eugeny
66b84418b4 Merge pull request #6472 from Jai-JAP/patch-2 2022-05-22 04:18:39 +02:00
Eugene Pankov
1834ba25e0 bumped electron-builder 2022-05-21 19:18:26 -07:00
Eugene Pankov
740c77374e improved flow control for more speed - fixes #6394 2022-05-21 19:08:23 -07:00
Eugeny
50e9399ee1 Merge pull request #6473 from Eugeny/all-contributors/add-attet 2022-05-21 02:40:14 +02:00
allcontributors[bot]
30d38e530e docs: update .all-contributorsrc [skip ci] 2022-05-21 00:32:25 +00:00
allcontributors[bot]
6e5504c96c docs: update README.de-DE.md [skip ci] 2022-05-21 00:32:24 +00:00
allcontributors[bot]
85e0eabc76 docs: update README.it-IT.md [skip ci] 2022-05-21 00:32:23 +00:00
allcontributors[bot]
f83c1fddb4 docs: update README.ko-KR.md [skip ci] 2022-05-21 00:32:22 +00:00
allcontributors[bot]
f35a9b594f docs: update README.ru-RU.md [skip ci] 2022-05-21 00:32:21 +00:00
allcontributors[bot]
e8769b2e9e docs: update README.zh-CN.md [skip ci] 2022-05-21 00:32:20 +00:00
allcontributors[bot]
24f81ba070 docs: update README.md [skip ci] 2022-05-21 00:32:19 +00:00
Eugeny
a96a9ea5e5 Merge pull request #6465 from attet/panenav 2022-05-21 02:32:07 +02:00
Atte Timonen
a98050b1cd Implement 'focus follows mouse' for pane navigation 2022-05-20 09:01:23 +02:00
Atte Timonen
8ee1d0076b Implement hotkeys for navigating to a specific pane 2022-05-20 09:01:10 +02:00
Jai A P
f47931e763 Delete builder-util+23.0.8.patch
As this is merged upstream in 23.0.9
2022-05-20 10:55:04 +05:30
dependabot[bot]
8539663056 Bump xterm-addon-webgl in /tabby-terminal
Bumps [xterm-addon-webgl](https://github.com/xtermjs/xterm.js) from 0.12.0-beta.29 to 0.12.0-beta.36.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

---
updated-dependencies:
- dependency-name: xterm-addon-webgl
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-19 04:14:10 +00:00
dependabot[bot]
33fca7c176 Bump webpack from 5.72.0 to 5.72.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.72.0 to 5.72.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.72.0...v5.72.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-19 04:03:16 +00:00
Eugeny
c80ad41521 Merge pull request #6310 from Eugeny/dependabot/npm_and_yarn/ejs-3.1.7
Bump ejs from 3.1.6 to 3.1.7
2022-05-19 04:04:50 +02:00
Eugeny
9ef4fc3195 Merge pull request #6282 from Eugeny/dependabot/github_actions/github/codeql-action-2 2022-05-19 04:01:41 +02:00
Eugene Pankov
a37f2f0eee Merge branch 'master' of github.com:Eugeny/tabby 2022-05-18 12:42:10 -07:00
Eugene Pankov
ff0c2a72df bumped electron - fixes #6454 2022-05-18 12:41:34 -07:00
Eugeny
ef920c4bac Merge pull request #6414 from LiangchengJ/fetch 2022-05-18 21:00:08 +02:00
dependabot[bot]
224f83a283 Bump xterm-addon-search in /tabby-terminal
Bumps [xterm-addon-search](https://github.com/xtermjs/xterm.js) from 0.9.0-beta.25 to 0.9.0-beta.37.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

---
updated-dependencies:
- dependency-name: xterm-addon-search
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-18 04:14:07 +00:00
Eugene Pankov
f1d91162c3 set --no-sandbox when relaunching on Linux 2022-05-17 00:05:10 -07:00
Eugene Pankov
63fd01ae26 locale: removed unused string 2022-05-16 23:48:20 -07:00
Eugene Pankov
d6bdccf66e locale updates, added Ukrainian 2022-05-16 23:45:36 -07:00
dependabot[bot]
ead2414c48 Bump actions/setup-node from 3.0.0 to 3.2.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.0.0 to 3.2.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3.0.0...v3.2.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-17 04:12:32 +00:00
dependabot[bot]
ef18541531 Bump xterm-addon-fit in /tabby-terminal
Bumps [xterm-addon-fit](https://github.com/xtermjs/xterm.js) from 0.6.0-beta.8 to 0.6.0-beta.9.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

---
updated-dependencies:
- dependency-name: xterm-addon-fit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-16 04:18:25 +00:00
Liangcheng Juves
7e0b9ecb56 Update official icon for kali profile
Icon from https://www.kali.org/images/kali-logo.svg
2022-05-15 15:13:13 +08:00
Liangcheng Juves
e537b61edd Add icon for oracle wsl profiles 2022-05-15 15:03:17 +08:00
Liangcheng Juves
175016bb1a Add icon for openEuler profile 2022-05-15 15:02:55 +08:00
Liangcheng Juves
9f4c12ba96 Add icon for AlmaLinux-8 profile 2022-05-15 15:02:12 +08:00
Liangcheng Juves
6dc14e0fd5 Add icon for Ubuntu-22.04 profile 2022-05-15 15:01:29 +08:00
Liangcheng Juves
b154d87865 Update official icon for powershell profiles
Icon from https://docs.microsoft.com/zh-CN/powershell/
2022-05-15 14:56:51 +08:00
Liangcheng Juves
0aa7e53a78 Update official icon for git bash profile
Icon from https://github.com/git-for-windows/git-for-windows.github.io/blob/main/img/gwindows_logo.svg
2022-05-15 14:54:23 +08:00
Liangcheng Juves
272918bff6 Change name Git-Bash to Git Bash 2022-05-15 14:51:23 +08:00
Liangcheng Juves
7cddcee951 Fix the problem that the Developer Prompt for VS 2022 profile could not be loaded 2022-05-15 14:49:23 +08:00
Liangcheng Juves
fa2bbe39c4 Different versions of vs profile use different icon to differentiate 2022-05-15 14:48:58 +08:00
Liangcheng Juves
a5fb726206 Use linux icon by default when no WSL profile icon is found 2022-05-15 14:41:13 +08:00
Liangcheng Juves
ec22c00ba5 Switch to more classic linux icon
Icon from https://upload.wikimedia.org/wikipedia/commons/archive/3/35/20120923174402!Tux.svg
2022-05-15 02:00:11 +08:00
Eugene Pankov
052d771748 lint 2022-05-09 22:05:47 -07:00
Eugene Pankov
c1bd2a720d fixed #6349 - enable xterm flow control 2022-05-09 21:50:06 -07:00
Eugene Pankov
5f4a7c4d39 fixed #6373 - allow disabling dynamic title on saved layouts 2022-05-09 20:54:23 -07:00
Eugene Pankov
96cd676109 fixed #5922 - the combine-tabs hotkey on Windows 2022-05-09 20:49:17 -07:00
Eugene Pankov
19a73264be fixed SFTP directory detection - fixes #6360, fixes #6260 2022-05-09 20:48:58 -07:00
Eugene Pankov
8e7f69cb58 fixed scrollbar dragging - fixes #6359 2022-05-09 20:41:11 -07:00
Eugeny
563cc49c3c Merge pull request #6345 from calvinweb/patch-1 2022-05-04 02:23:30 +02:00
calvinweb
3851353e80 Fix a translate mistake 2022-05-03 15:08:53 +08:00
Eugene Pankov
7032bff827 Update profiles.ts 2022-04-30 12:02:57 -07:00
Eugene Pankov
271955e9d4 added missing strings 2022-04-30 11:36:50 -07:00
Eugene Pankov
a29539af69 Update docs.yml 2022-04-30 11:35:07 -07:00
Eugene Pankov
4c242fdca4 fixed serial port name encoding - fixes #6200 2022-04-30 20:16:51 +02:00
Eugene Pankov
80b44500c4 settings: fixed font autocomplete - fixes #6298, fixes #6298 2022-04-30 10:50:41 -07:00
Eugene Pankov
5433cc6136 bump xterm search addon 2022-04-30 10:28:18 -07:00
Eugene Pankov
9d88ed6371 limit search panel width 2022-04-30 10:28:12 -07:00
Eugene Pankov
12362231cf ssh: show CWD detection tip more prominently 2022-04-30 10:10:10 -07:00
Eugene Pankov
a31cacf4ee focus the next tab after closing a tab - fixes #6325 2022-04-30 09:58:20 -07:00
Eugene Pankov
3e2f93c226 autorebuild native modules 2022-04-30 09:49:40 -07:00
Eugeny
a434220ff0 Merge pull request #6309 from Eugeny/all-contributors/add-LiangchengJ 2022-04-28 22:13:37 +02:00
dependabot[bot]
9be970614a Bump ejs from 3.1.6 to 3.1.7
Bumps [ejs](https://github.com/mde/ejs) from 3.1.6 to 3.1.7.
- [Release notes](https://github.com/mde/ejs/releases)
- [Changelog](https://github.com/mde/ejs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mde/ejs/compare/v3.1.6...v3.1.7)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-28 20:12:32 +00:00
Eugeny
a629092985 Merge pull request #6299 from Eugeny/dependabot/npm_and_yarn/ssh2-1.10.0 2022-04-28 22:11:14 +02:00
allcontributors[bot]
8808593b00 docs: update .all-contributorsrc [skip ci] 2022-04-28 20:10:55 +00:00
allcontributors[bot]
a78fe7a9a8 docs: update README.de-DE.md [skip ci] 2022-04-28 20:10:55 +00:00
allcontributors[bot]
9faf3ccd1d docs: update README.it-IT.md [skip ci] 2022-04-28 20:10:53 +00:00
allcontributors[bot]
75a7707965 docs: update README.ko-KR.md [skip ci] 2022-04-28 20:10:52 +00:00
allcontributors[bot]
5714fc85d3 docs: update README.ru-RU.md [skip ci] 2022-04-28 20:10:52 +00:00
allcontributors[bot]
7668f4beea docs: update README.zh-CN.md [skip ci] 2022-04-28 20:10:51 +00:00
Eugeny
7b41cb0936 Merge pull request #6308 from LiangchengJ/fetch 2022-04-28 22:10:50 +02:00
allcontributors[bot]
fee18c4f8b docs: update README.md [skip ci] 2022-04-28 20:10:49 +00:00
Liangcheng Juves
716ce018fb Add icon for docker profiles 2022-04-28 22:49:25 +08:00
dependabot[bot]
8107b96563 Bump axios from 0.26.1 to 0.27.2
Bumps [axios](https://github.com/axios/axios) from 0.26.1 to 0.27.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.26.1...v0.27.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-28 04:06:26 +00:00
dependabot[bot]
d7146eb523 Bump ssh2 from 1.9.0 to 1.10.0
Bumps [ssh2](https://github.com/mscdex/ssh2) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/mscdex/ssh2/releases)
- [Commits](https://github.com/mscdex/ssh2/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: ssh2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-28 04:05:10 +00:00
dependabot[bot]
62b94bff2f Bump github/codeql-action from 1 to 2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-26 04:17:53 +00:00
Eugeny
f653fe9c85 Merge pull request #6276 from Jai-JAP/master
Fix armv7l builds
2022-04-25 13:51:54 +02:00
Jai A P
ae82e568dd Merge branch 'Eugeny:master' into master 2022-04-25 16:00:42 +05:30
Jai A P
2ba4036275 Rename builder-util+23.0.3.patch to builder-util+23.0.8.patch 2022-04-25 15:58:58 +05:30
Jai A P
43d389a1ef Merge pull request #1 from Jai-JAP/176-fix
176 fix
2022-04-25 15:58:31 +05:30
Jai A P
c7a72da0ab Add files via upload 2022-04-25 15:07:49 +05:30
Jai A P
66fad228fc Update build-native.js 2022-04-25 11:20:35 +05:30
Jai A P
5e217cf654 Update build-linux.js 2022-04-25 11:19:30 +05:30
Eugeny
28b227bca4 Merge pull request #6226 from Eugeny/dependabot/npm_and_yarn/electron-18.1.0 2022-04-24 10:34:48 +02:00
Eugene Pankov
d2b0fae9ed added @hisamafahri 2022-04-24 10:33:17 +02:00
Eugeny
4299236c4d Merge pull request #6262 from hisamafahri/master 2022-04-24 10:31:55 +02:00
Jai A P
2af4714d66 Update build-linux.js 2022-04-24 11:49:46 +05:30
Hisam Fahri
389e05c832 feat(hotkey): add the delete entire line hotkey 2022-04-24 11:57:59 +07:00
Eugeny
500a42c1f7 Merge pull request #6258 from MagicLike/master
A bit more polishing
2022-04-23 22:38:24 +02:00
MagicLike
fceb1da62f A bit more polishing
Added dots between the language links, inspired by anuraghazra/github-readme-stats
2022-04-23 21:32:08 +02:00
Jai A P
8dba1bf5cd Update build-linux.js 2022-04-23 14:06:29 +05:30
Jai A P
7c5e136c31 Update build-native.js 2022-04-23 14:05:44 +05:30
Eugene Pankov
4c9fb9a3d4 added @magiclike for doc 2022-04-23 10:00:22 +02:00
Eugeny
a6e5f004a8 Merge pull request #6251 from MagicLike/master 2022-04-22 23:08:29 +02:00
MagicLike
5b845dae45 Added README.de-DE.md 2022-04-22 23:06:47 +02:00
MagicLike
dc037bc918 Merge branch 'Eugeny:master' into master 2022-04-22 22:41:54 +02:00
MagicLike
13fe3ef1ec Translated, linked & polished
- README translated into german
- Added some spaces in the README
- Linked the READMEs together, except ko-KR
- Changed "Inglese" to "English" in it-IT
- Removed link to zh-CN in zh-CN
- Added flags in the READMEs, except for ko-KR
2022-04-22 22:39:40 +02:00
Eugeny
c4544256e1 Merge pull request #6244 from Eugeny/all-contributors/add-woodmeal
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-04-22 09:50:47 +02:00
woodmeal
25f5cf04ea Adding env handlement for ssh profile sessions (#6242) 2022-04-22 09:50:35 +02:00
allcontributors[bot]
36a63e771f docs: update .all-contributorsrc [skip ci] 2022-04-22 07:50:32 +00:00
allcontributors[bot]
fd809d7d85 docs: update README.it-IT.md [skip ci] 2022-04-22 07:50:31 +00:00
allcontributors[bot]
81fe06a9f6 docs: update README.ko-KR.md [skip ci] 2022-04-22 07:50:30 +00:00
allcontributors[bot]
e3d6b5f3d7 docs: update README.ru-RU.md [skip ci] 2022-04-22 07:50:29 +00:00
allcontributors[bot]
4e3caa7409 docs: update README.zh-CN.md [skip ci] 2022-04-22 07:50:28 +00:00
allcontributors[bot]
7b6ce3aeba docs: update README.md [skip ci] 2022-04-22 07:50:27 +00:00
dependabot[bot]
fdf66b7b22 Bump electron from 18.0.4 to 18.1.0
Bumps [electron](https://github.com/electron/electron) from 18.0.4 to 18.1.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v18.0.4...v18.1.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-21 04:05:23 +00:00
dependabot[bot]
42867818da Bump npmlog from 6.0.0 to 6.0.2
Bumps [npmlog](https://github.com/npm/npmlog) from 6.0.0 to 6.0.2.
- [Release notes](https://github.com/npm/npmlog/releases)
- [Changelog](https://github.com/npm/npmlog/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/npmlog/compare/v6.0.0...v6.0.2)

---
updated-dependencies:
- dependency-name: npmlog
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-21 04:04:55 +00:00
Eugeny
58f2c3d081 Merge pull request #6220 from Eugeny/all-contributors/add-Ox0400 2022-04-20 14:20:47 +02:00
allcontributors[bot]
1c011b6fe3 docs: update .all-contributorsrc [skip ci] 2022-04-20 12:20:39 +00:00
allcontributors[bot]
88c2a9996b docs: update README.it-IT.md [skip ci] 2022-04-20 12:20:39 +00:00
allcontributors[bot]
b68213e278 docs: update README.ko-KR.md [skip ci] 2022-04-20 12:20:37 +00:00
allcontributors[bot]
6bb8deacb7 docs: update README.ru-RU.md [skip ci] 2022-04-20 12:20:36 +00:00
allcontributors[bot]
5dc3eecb74 docs: update README.zh-CN.md [skip ci] 2022-04-20 12:20:36 +00:00
allcontributors[bot]
531b658405 docs: update README.md [skip ci] 2022-04-20 12:20:35 +00:00
Eugeny
a710819615 Merge pull request #6218 from Ox0400/master 2022-04-20 14:20:34 +02:00
zhipeng
ca441b6f83 fix import lowcase host from ssh/config 2022-04-20 19:34:06 +08:00
Eugene Pankov
b6d0bd2d43 fixed search - fixes #6197 2022-04-20 09:37:43 +02:00
Eugeny
3cce468bf3 Merge pull request #6117 from Eugeny/dependabot/npm_and_yarn/webpack-5.72.0 2022-04-20 09:02:49 +02:00
Eugeny
22d1119c33 Merge pull request #6213 from Eugeny/dependabot/npm_and_yarn/tabby-terminal/xterm-addon-webgl-0.12.0-beta.28 2022-04-20 09:02:18 +02:00
Eugeny
ddbfc700e5 Merge pull request #6212 from Eugeny/dependabot/npm_and_yarn/tabby-terminal/xterm-addon-search-0.9.0-beta.21 2022-04-20 09:02:10 +02:00
dependabot[bot]
93081162fe Bump xterm-addon-webgl in /tabby-terminal
Bumps [xterm-addon-webgl](https://github.com/xtermjs/xterm.js) from 0.12.0-beta.27 to 0.12.0-beta.28.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

---
updated-dependencies:
- dependency-name: xterm-addon-webgl
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-20 04:19:56 +00:00
dependabot[bot]
4fb158d2a1 Bump xterm-addon-search in /tabby-terminal
Bumps [xterm-addon-search](https://github.com/xtermjs/xterm.js) from 0.9.0-beta.18 to 0.9.0-beta.21.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

---
updated-dependencies:
- dependency-name: xterm-addon-search
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-20 04:19:47 +00:00
dependabot[bot]
0bbb11131d Bump node-abi from 3.8.0 to 3.15.0
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 3.8.0 to 3.15.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Changelog](https://github.com/electron/node-abi/blob/main/.releaserc.json)
- [Commits](https://github.com/lgeiger/node-abi/compare/v3.8.0...v3.15.0)

---
updated-dependencies:
- dependency-name: node-abi
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-20 04:03:55 +00:00
Eugene Pankov
4a82294741 fixed ARM macOS builds - fixes #6201 2022-04-19 13:31:50 +02:00
Eugene Pankov
9a08bf8782 Update updater.service.ts 2022-04-19 12:30:24 +02:00
Eugene Pankov
2e83b450a9 Update updater.service.ts 2022-04-19 11:28:32 +02:00
dependabot[bot]
c540f1a813 Bump typedoc from 0.22.13 to 0.22.15
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.22.13 to 0.22.15.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.22.13...v0.22.15)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-19 08:55:09 +00:00
dependabot[bot]
450a0f3980 Bump graceful-fs from 4.2.9 to 4.2.10
Bumps [graceful-fs](https://github.com/isaacs/node-graceful-fs) from 4.2.9 to 4.2.10.
- [Release notes](https://github.com/isaacs/node-graceful-fs/releases)
- [Commits](https://github.com/isaacs/node-graceful-fs/compare/v4.2.9...v4.2.10)

---
updated-dependencies:
- dependency-name: graceful-fs
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-19 08:54:59 +00:00
dependabot[bot]
b97d3e30fb Bump webpack from 5.70.0 to 5.72.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.70.0 to 5.72.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.70.0...v5.72.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-19 08:54:28 +00:00
Eugene Pankov
12486584f0 use s3 for updates 2022-04-19 10:50:31 +02:00
Eugeny
90168323c8 Merge pull request #6083 from Eugeny/dependabot/npm_and_yarn/ssh2-1.9.0 2022-04-19 01:07:12 +02:00
Eugeny
e1d86810e3 Merge pull request #6101 from Eugeny/dependabot/npm_and_yarn/app/macos-native-processlist-2.1.0 2022-04-19 01:07:01 +02:00
Eugeny
7be713495e Merge pull request #6129 from Eugeny/dependabot/npm_and_yarn/app/electron-updater-5.0.1 2022-04-19 01:05:57 +02:00
Eugeny
27ed3b0444 Merge pull request #6171 from Eugeny/dependabot/npm_and_yarn/electron-18.0.4 2022-04-19 01:03:07 +02:00
Eugene Pankov
5d2db6d85c fixed windows release arm64 builds 2022-04-18 23:24:48 +02:00
Eugene Pankov
ba7571248c Update app.ts 2022-04-15 21:30:03 +02:00
Eugene Pankov
763bb2c7aa macOS: open a new window if none are open when called from CLI - fixes #6031 2022-04-15 20:04:30 +02:00
Eugene Pankov
3d841eb97c added "new window" to macOS dock menu - fixes #6037 2022-04-15 19:52:07 +02:00
Eugene Pankov
7016688170 allow directly editing items from the profile selector - fixes #6039 2022-04-15 19:45:30 +02:00
Eugene Pankov
358a7563f6 ssh: use correct profile's login scripts - fixes #6064 2022-04-15 19:15:27 +02:00
Eugene Pankov
9c6acf99d0 ssh: allow SOCKS proxy-side DNS resolving - fixes #6100 2022-04-15 19:03:21 +02:00
Eugene Pankov
eaf4ed9855 expose the drawBoldTextInBrightColors option - fixes #3149 2022-04-15 18:55:00 +02:00
Eugene Pankov
4a33936e7d Merge branch 'master' of github.com:Eugeny/tabby 2022-04-15 18:54:59 +02:00
Eugene Pankov
903b7d70f9 alllow changing font weight for normal and bold text - fixes #3129, fixes #3400, fixes #5444, fixes #3045, fixes #6099 2022-04-15 18:47:55 +02:00
Eugeny
143f5edcb3 Merge pull request #6175 from 2ykwang/fix-small-typo
Fix small typo
2022-04-15 16:27:57 +02:00
Youngkwang Yang
0ee0f98462 Fix typo 2022-04-15 22:59:24 +09:00
Eugene Pankov
b330c428e6 updated locales, added Korean 2022-04-15 12:43:07 +02:00
Eugeny
61810da810 Merge pull request #6106 from Jai-JAP/master 2022-04-15 12:32:55 +02:00
Eugene Pankov
1e85acb99e fixed tab header animations, allow disabling animations globally #6147 2022-04-15 12:27:48 +02:00
Eugene Pankov
38c1fafeee Update theme.scss 2022-04-15 12:25:36 +02:00
Eugene Pankov
5e75d88f1d better color scheme preview examples - fixes #6090 2022-04-15 11:37:41 +02:00
Eugene Pankov
4fe4ae8b9b fixed color scheme editing - fixes #5742 2022-04-15 11:23:55 +02:00
dependabot[bot]
23040aa217 Bump electron from 18.0.1 to 18.0.4
Bumps [electron](https://github.com/electron/electron) from 18.0.1 to 18.0.4.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v18.0.1...v18.0.4)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-15 04:04:40 +00:00
Eugene Pankov
14cf0a574e Merge branch 'master' of github.com:Eugeny/tabby 2022-04-12 18:47:08 +02:00
Eugene Pankov
50887af27f updated locales 2022-04-12 18:46:47 +02:00
Eugeny
3dca21394f Merge pull request #6146 from Eugeny/all-contributors/add-ChristianBingman 2022-04-12 18:38:29 +02:00
allcontributors[bot]
109f38b7cc docs: update .all-contributorsrc [skip ci] 2022-04-12 16:37:07 +00:00
allcontributors[bot]
ecc5f6d1de docs: update README.it-IT.md [skip ci] 2022-04-12 16:37:06 +00:00
allcontributors[bot]
ead3a30cf0 docs: update README.ko-KR.md [skip ci] 2022-04-12 16:37:05 +00:00
allcontributors[bot]
facc1f1dff docs: update README.ru-RU.md [skip ci] 2022-04-12 16:37:04 +00:00
allcontributors[bot]
74dc6002d1 docs: update README.zh-CN.md [skip ci] 2022-04-12 16:37:03 +00:00
allcontributors[bot]
cc67774108 docs: update README.md [skip ci] 2022-04-12 16:37:02 +00:00
Eugeny
5c04c11132 Merge pull request #6140 from ChristianBingman/pane-resizing-with-hotkeys 2022-04-12 18:36:04 +02:00
Eugene Pankov
be72cd59cc renamed setting, cleanup 2022-04-12 18:35:44 +02:00
christianbingman
4cf9eda55f Allows the user to resize panes using hotkeys
Changes:
- Adds 4 hotkeys for resizing panes horizontally and vertically
- Updates the config files (default not set)
- Updates the window settings to allow the user to modify the pane
  resize increments
2022-04-11 19:44:24 -05:00
dependabot[bot]
db866fbacf Bump electron-updater from 4.6.5 to 5.0.1 in /app
Bumps [electron-updater](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-updater) from 4.6.5 to 5.0.1.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/packages/electron-updater/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits/electron-updater@5.0.1/packages/electron-updater)

---
updated-dependencies:
- dependency-name: electron-updater
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-11 04:01:43 +00:00
Jai A P
086c4e68e6 Update build-linux.js 2022-04-10 17:32:08 +05:30
Jai A P
e303621fc5 Update build-native.js 2022-04-10 17:30:29 +05:30
Jai A P
579b60236b Update build-native.js 2022-04-09 23:08:56 +05:30
Jai A P
31f549f5bb Update build.yml 2022-04-09 22:38:39 +05:30
Jai A P
f18c58360d Update build-native.js 2022-04-06 17:01:13 +05:30
Jai A P
3287f410b7 Update build.yml 2022-04-06 17:00:35 +05:30
Jai A P
1a37ba224d Update build-native.js 2022-04-06 16:35:38 +05:30
Jai A P
49934aea5d Update build.yml 2022-04-06 16:34:28 +05:30
dependabot[bot]
da3143fab8 Bump macos-native-processlist from 2.0.0 to 2.1.0 in /app
Bumps [macos-native-processlist](https://github.com/Eugeny/macos-native-processlist) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/Eugeny/macos-native-processlist/releases)
- [Commits](https://github.com/Eugeny/macos-native-processlist/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: macos-native-processlist
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-06 04:01:35 +00:00
Eugene Pankov
95ae4b84a6 fixed windows x64 build 2022-04-05 09:39:52 +02:00
Eugene Pankov
f85294e603 fixed disableVibrancyWhileDragging check 2022-04-05 09:21:04 +02:00
dependabot[bot]
7807c5e1c8 Bump winston from 3.6.0 to 3.7.2 in /tabby-electron
Bumps [winston](https://github.com/winstonjs/winston) from 3.6.0 to 3.7.2.
- [Release notes](https://github.com/winstonjs/winston/releases)
- [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md)
- [Commits](https://github.com/winstonjs/winston/commits)

---
updated-dependencies:
- dependency-name: winston
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-05 04:17:20 +00:00
Eugene Pankov
a2975f5234 added @TimaGribanov for translations 2022-04-04 13:22:41 +02:00
Eugeny
e049d38cef Merge pull request #6087 from Eugeny/all-contributors/add-TimaGribanov 2022-04-04 12:41:34 +02:00
allcontributors[bot]
84a58de57f docs: update .all-contributorsrc [skip ci] 2022-04-04 10:41:27 +00:00
allcontributors[bot]
b519afc42c docs: update README.it-IT.md [skip ci] 2022-04-04 10:41:26 +00:00
allcontributors[bot]
49aade155b docs: update README.ko-KR.md [skip ci] 2022-04-04 10:41:25 +00:00
allcontributors[bot]
240fc57435 docs: update README.ru-RU.md [skip ci] 2022-04-04 10:41:24 +00:00
allcontributors[bot]
cf7b344fb1 docs: update README.zh-CN.md [skip ci] 2022-04-04 10:41:23 +00:00
allcontributors[bot]
c6e5a951f8 docs: update README.md [skip ci] 2022-04-04 10:41:22 +00:00
Eugeny
de861ad98e Merge pull request #6086 from TimaGribanov/patch-1 2022-04-04 12:41:15 +02:00
Timofey Gribanov
068abec8d8 Update README.ru-RU.md
Added Italian button. Changed language links' texts to the own name in a target language.
2022-04-04 13:38:54 +03:00
dependabot[bot]
5abe2e6376 Bump ssh2 from 1.8.0 to 1.9.0
Bumps [ssh2](https://github.com/mscdex/ssh2) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/mscdex/ssh2/releases)
- [Commits](https://github.com/mscdex/ssh2/compare/v1.8.0...v1.9.0)

---
updated-dependencies:
- dependency-name: ssh2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-04 04:05:05 +00:00
Eugene Pankov
98d3b824c4 fixed macOS alt-n and alt-shift-letter handling - fixes #4815, fixes #6029 2022-04-03 17:58:15 +02:00
Eugeny
f3cd986f2b Merge pull request #6060 from Eugeny/dependabot/npm_and_yarn/sentry/cli-1.74.3 2022-04-03 16:13:24 +02:00
Eugene Pankov
6d734ab7c6 Update xtermFrontend.ts 2022-04-03 16:12:23 +02:00
Eugene Pankov
4aa824d725 search improvements, added highlighting - fixes #5940, fixes #5032, fixes #5152 2022-04-03 15:19:22 +02:00
Eugene Pankov
cfa29acb5a search improvements, added decorators 2022-04-03 14:31:36 +02:00
Eugene Pankov
cfa1fd38de bumped xterm 2022-04-03 14:31:07 +02:00
Eugene Pankov
595b92366b rename ssh2 patch 2022-04-03 14:30:44 +02:00
dependabot[bot]
bb59f3a2ef Bump @sentry/cli from 1.73.0 to 1.74.3
Bumps [@sentry/cli](https://github.com/getsentry/sentry-cli) from 1.73.0 to 1.74.3.
- [Release notes](https://github.com/getsentry/sentry-cli/releases)
- [Changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-cli/compare/1.73.0...1.74.3)

---
updated-dependencies:
- dependency-name: "@sentry/cli"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-03 12:10:25 +00:00
Eugene Pankov
a9a0ea3a42 Update icons.json 2022-04-03 14:07:50 +02:00
Eugene Pankov
79cb1f1d9c Merge branch 'master' of github.com:Eugeny/tabby 2022-04-03 14:06:22 +02:00
Eugeny
3a16a118e7 Merge pull request #6015 from Eugeny/dependabot/npm_and_yarn/ssh2-1.8.0 2022-04-03 14:05:52 +02:00
Eugeny
b16210f561 Merge pull request #5993 from Eugeny/dependabot/npm_and_yarn/fortawesome/fontawesome-free-6.1.1 2022-04-03 14:05:45 +02:00
Eugeny
6aafbfc288 Merge pull request #6058 from Eugeny/dependabot/npm_and_yarn/app/windows-process-tree-0.3.3 2022-04-03 14:05:38 +02:00
Eugeny
41aaac6a23 Merge pull request #6059 from Eugeny/dependabot/npm_and_yarn/electron-18.0.1 2022-04-03 14:04:43 +02:00
Eugene Pankov
911e72c398 option to force plain-text copying - fixes #5050 2022-04-03 13:57:40 +02:00
Eugene Pankov
8e00761b0c don't filter out non-monospace fonts - fixes #5544 2022-04-02 18:12:56 +02:00
Eugene Pankov
4dadba7f80 fixed fallback font embedding (powerline icons) - fixes #6071, fixes #3346, fixes #5189 2022-04-02 18:06:35 +02:00
Eugene Pankov
94b3212afb msys2: set correct starting directory - fixes #6079 2022-04-02 17:46:34 +02:00
Eugene Pankov
3a012878d0 Merge branch 'master' of github.com:Eugeny/tabby 2022-04-01 12:51:59 +02:00
Eugene Pankov
bc89774fbc added missing strings 2022-04-01 12:51:53 +02:00
dependabot[bot]
40c3a5427a Bump electron from 17.3.0 to 18.0.1
Bumps [electron](https://github.com/electron/electron) from 17.3.0 to 18.0.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v17.3.0...v18.0.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-31 04:05:38 +00:00
dependabot[bot]
79b518e17e Bump windows-process-tree from 0.3.2 to 0.3.3 in /app
Bumps [windows-process-tree](https://github.com/Microsoft/vscode-windows-process-tree) from 0.3.2 to 0.3.3.
- [Release notes](https://github.com/Microsoft/vscode-windows-process-tree/releases)
- [Commits](https://github.com/Microsoft/vscode-windows-process-tree/compare/0.3.2...0.3.3)

---
updated-dependencies:
- dependency-name: windows-process-tree
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-31 04:01:48 +00:00
Eugeny
89bbd6669b Merge pull request #6049 from boonkerz/sftp 2022-03-30 19:18:17 +02:00
Thomas Peterson
d1532f64a0 Merge remote-tracking branch 'origin' into sftp 2022-03-30 19:00:42 +02:00
Eugene Pankov
f7e51c298d Merge branch 'master' of github.com:Eugeny/tabby 2022-03-30 14:20:10 +02:00
Eugene Pankov
a9bcc0b206 sftp: fixed folder refresh after uploading 2022-03-30 14:20:06 +02:00
Thomas Peterson
45eebf47f3 Fixing Lang Typo 2022-03-30 14:01:01 +02:00
Thomas Peterson
a4600890c3 Fixing Lang Typo 2022-03-30 13:59:56 +02:00
Thomas Peterson
54aa027764 Fixing the modal dialog and some architecture issues :) 2022-03-30 13:57:54 +02:00
boonkerz
8904209bb5 Update tabby-ssh/src/components/sftpCreateDirectoryModal.component.pug
Co-authored-by: Eugeny <x@null.page>
2022-03-30 09:10:22 +02:00
boonkerz
d710c5d3fa Update tabby-ssh/src/sftpContextMenu.ts
Co-authored-by: Eugeny <x@null.page>
2022-03-30 09:10:16 +02:00
Thomas Peterson
e2a74a2f6e Fix Typings 2022-03-29 18:43:32 +02:00
Thomas Peterson
e223effe98 SFTP Feature: implement Create Folder 2022-03-29 18:26:57 +02:00
Eugeny
4b02d61f3f Merge pull request #6048 from Eugeny/all-contributors/add-artu-ole 2022-03-29 16:35:50 +02:00
allcontributors[bot]
9b8ae6d6be docs: update .all-contributorsrc [skip ci] 2022-03-29 14:35:43 +00:00
allcontributors[bot]
c9e8e54fe3 docs: update README.it-IT.md [skip ci] 2022-03-29 14:35:42 +00:00
allcontributors[bot]
004a04640d docs: update README.ko-KR.md [skip ci] 2022-03-29 14:35:41 +00:00
allcontributors[bot]
e71ac85ec3 docs: update README.ru-RU.md [skip ci] 2022-03-29 14:35:40 +00:00
allcontributors[bot]
ed2d1a1606 docs: update README.zh-CN.md [skip ci] 2022-03-29 14:35:39 +00:00
allcontributors[bot]
edc9656fd2 docs: update README.md [skip ci] 2022-03-29 14:35:38 +00:00
Eugeny
65ef8cde5a Merge pull request #6046 from artu-ole/master 2022-03-29 16:35:18 +02:00
Artur
6e09931952 Preserve profile groups collapse state.
use local storage rather than config store
Remove config save and toggleGroupCollapse not to be async
2022-03-29 15:24:58 +03:00
dependabot[bot]
4e8cb70fe0 Bump ssh2 from 1.7.0 to 1.8.0
Bumps [ssh2](https://github.com/mscdex/ssh2) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/mscdex/ssh2/releases)
- [Commits](https://github.com/mscdex/ssh2/compare/v1.7.0...v1.8.0)

---
updated-dependencies:
- dependency-name: ssh2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-29 12:11:04 +00:00
Eugeny
40cf2bde9b Merge pull request #6047 from Eugeny/dependabot/npm_and_yarn/app/minimist-1.2.6 2022-03-29 14:07:26 +02:00
Eugeny
21b70b3ee5 Merge pull request #6043 from Eugeny/dependabot/npm_and_yarn/tabby-ssh/types/ssh2-0.5.52 2022-03-29 14:07:17 +02:00
Eugeny
2f4318e1f4 Merge pull request #6041 from Eugeny/dependabot/npm_and_yarn/electron-17.3.0 2022-03-29 14:07:09 +02:00
Eugeny
c75c5aae14 Merge pull request #6025 from Eugeny/dependabot/npm_and_yarn/plist-3.0.5 2022-03-29 14:06:42 +02:00
Eugeny
c39d79c1c6 Merge pull request #5969 from Eugeny/dependabot/npm_and_yarn/sortablejs-1.15.0 2022-03-29 14:06:30 +02:00
dependabot[bot]
418df22da4 Bump minimist from 1.2.5 to 1.2.6 in /app
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-29 12:00:13 +00:00
Eugeny
2f66dc3bb0 Merge pull request #6020 from Eugeny/dependabot/npm_and_yarn/tabby-web-demo/minimist-1.2.6 2022-03-29 13:59:46 +02:00
Eugeny
2a192af169 Merge pull request #6021 from Eugeny/dependabot/npm_and_yarn/web/minimist-1.2.6 2022-03-29 13:59:37 +02:00
Eugeny
a1f269f8ac Merge pull request #6022 from Eugeny/dependabot/npm_and_yarn/tabby-core/minimist-1.2.6 2022-03-29 13:59:32 +02:00
Eugeny
c1386349ea Merge pull request #6023 from Eugeny/dependabot/npm_and_yarn/tabby-terminal/minimist-1.2.6 2022-03-29 13:59:27 +02:00
Eugeny
80443b073c Merge pull request #6024 from Eugeny/dependabot/npm_and_yarn/minimist-1.2.6 2022-03-29 13:59:20 +02:00
dependabot[bot]
591f0eb445 Bump @types/ssh2 from 0.5.51 to 0.5.52 in /tabby-ssh
Bumps [@types/ssh2](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ssh2) from 0.5.51 to 0.5.52.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ssh2)

---
updated-dependencies:
- dependency-name: "@types/ssh2"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-29 04:18:53 +00:00
dependabot[bot]
b2333d5c7c Bump electron from 17.2.0 to 17.3.0
Bumps [electron](https://github.com/electron/electron) from 17.2.0 to 17.3.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v17.2.0...v17.3.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-29 04:04:11 +00:00
Eugeny
a5282eaf8c Merge pull request #6006 from Eugeny/dependabot/npm_and_yarn/electron-17.2.0 2022-03-26 23:09:40 +01:00
Eugeny
5a5b73a636 Merge pull request #6014 from Eugeny/dependabot/npm_and_yarn/electron-notarize-1.2.1 2022-03-26 23:08:25 +01:00
Eugeny
f406de1873 Merge pull request #6028 from Eugeny/all-contributors/add-ysc3839 2022-03-26 23:08:16 +01:00
allcontributors[bot]
7744b28561 docs: update .all-contributorsrc [skip ci] 2022-03-26 22:07:56 +00:00
allcontributors[bot]
a32ec15d30 docs: update README.it-IT.md [skip ci] 2022-03-26 22:07:55 +00:00
allcontributors[bot]
88c8a4667a docs: update README.ko-KR.md [skip ci] 2022-03-26 22:07:54 +00:00
allcontributors[bot]
a9d6a968d5 docs: update README.ru-RU.md [skip ci] 2022-03-26 22:07:53 +00:00
Eugeny
018355ce44 Merge pull request #6027 from ysc3839/fix-win7-crash 2022-03-26 23:07:52 +01:00
allcontributors[bot]
47a837b109 docs: update README.zh-CN.md [skip ci] 2022-03-26 22:07:52 +00:00
allcontributors[bot]
116c144576 docs: update README.md [skip ci] 2022-03-26 22:07:51 +00:00
Richard Yu
aedad13f48 fix crash on Windows 7 2022-03-27 04:19:22 +08:00
dependabot[bot]
b9abe4f2ca Bump plist from 3.0.4 to 3.0.5
Bumps [plist](https://github.com/TooTallNate/node-plist) from 3.0.4 to 3.0.5.
- [Release notes](https://github.com/TooTallNate/node-plist/releases)
- [Changelog](https://github.com/TooTallNate/plist.js/blob/master/History.md)
- [Commits](https://github.com/TooTallNate/node-plist/commits)

---
updated-dependencies:
- dependency-name: plist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-26 10:48:12 +00:00
dependabot[bot]
d1e85dc870 Bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-26 10:48:09 +00:00
dependabot[bot]
2f0ebf9a61 Bump minimist from 1.2.5 to 1.2.6 in /tabby-terminal
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-26 10:48:04 +00:00
dependabot[bot]
ac36627392 Bump minimist from 1.2.5 to 1.2.6 in /tabby-core
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-26 10:48:03 +00:00
dependabot[bot]
fab5feb29d Bump minimist from 1.2.5 to 1.2.6 in /web
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-26 10:48:01 +00:00
Eugeny
69ddd2fc9f Merge pull request #6019 from Eugeny/all-contributors/add-Jai-JAP 2022-03-26 11:48:01 +01:00
dependabot[bot]
3e7f4dd6dc Bump minimist from 1.2.5 to 1.2.6 in /tabby-web-demo
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-26 10:48:00 +00:00
allcontributors[bot]
296be13b40 docs: update .all-contributorsrc [skip ci] 2022-03-26 10:47:52 +00:00
allcontributors[bot]
2d7398c623 docs: update README.it-IT.md [skip ci] 2022-03-26 10:47:51 +00:00
allcontributors[bot]
add55d014e docs: update README.ko-KR.md [skip ci] 2022-03-26 10:47:50 +00:00
allcontributors[bot]
0c8c2d3e95 docs: update README.ru-RU.md [skip ci] 2022-03-26 10:47:49 +00:00
allcontributors[bot]
9b07ab053a docs: update README.zh-CN.md [skip ci] 2022-03-26 10:47:48 +00:00
allcontributors[bot]
f447658c62 docs: update README.md [skip ci] 2022-03-26 10:47:47 +00:00
Eugeny
40e0bcce17 Merge pull request #5907 from Jai-JAP/master 2022-03-26 11:47:30 +01:00
Jai A P
48c06fc26e Update build-linux.js 2022-03-25 19:28:02 +05:30
Jai A P
360b75693b Update build-native.js 2022-03-25 19:27:36 +05:30
Jai A P
579c0e9aa5 Update HACKING.md 2022-03-25 17:05:54 +05:30
Jai A P
5a66a64f87 Update build-native.js 2022-03-25 16:26:37 +05:30
Jai A P
ead2dbc208 Update build-native.js 2022-03-25 16:25:39 +05:30
Jai A P
37ba06b65c Update build-linux.js 2022-03-25 16:25:06 +05:30
Jai A P
b2c611f9a6 Update build-native.js 2022-03-25 16:21:58 +05:30
Jai A P
eb6bf288cc Update build.yml 2022-03-25 16:19:20 +05:30
Jai A P
0f35b3bcfa Update build.yml 2022-03-25 16:16:57 +05:30
Jai A P
86effd748f Merge branch 'Eugeny:master' into master 2022-03-25 16:11:53 +05:30
dependabot[bot]
98f19e1ada Bump electron-notarize from 1.1.1 to 1.2.1
Bumps [electron-notarize](https://github.com/electron/electron-notarize) from 1.1.1 to 1.2.1.
- [Release notes](https://github.com/electron/electron-notarize/releases)
- [Changelog](https://github.com/electron/electron-notarize/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-notarize/compare/v1.1.1...v1.2.1)

---
updated-dependencies:
- dependency-name: electron-notarize
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-25 04:05:49 +00:00
dependabot[bot]
9ac7a67d74 Bump electron from 17.1.2 to 17.2.0
Bumps [electron](https://github.com/electron/electron) from 17.1.2 to 17.2.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v17.1.2...v17.2.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-24 04:11:22 +00:00
dependabot[bot]
adac51c71d Bump @fortawesome/fontawesome-free from 6.0.0 to 6.1.1
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 6.0.0 to 6.1.1.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.0.0...6.1.1)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-free"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-23 04:03:55 +00:00
Eugene Pankov
aee6ae907d added missing strings to .pot 2022-03-22 15:28:55 +01:00
Eugene Pankov
75c911b5e4 locale update, added Portuguese (Brazil) and missing strings 2022-03-22 15:25:41 +01:00
Eugene Pankov
8ec419f8e5 fixed duplicate default hotkeys 2022-03-22 11:28:17 +01:00
jai-jap
2229d54b33 Revert "Delete build.yml"
This reverts commit 332c5c0b5e.
2022-03-21 15:50:26 +05:30
jai-jap
8c0d681345 Revert "Delete docs.yml"
This reverts commit f18c1f6d3a.
2022-03-21 15:50:14 +05:30
Jai A P
541c264384 Merge branch 'Eugeny:master' into master 2022-03-21 15:39:01 +05:30
Jai A P
f18c1f6d3a Delete docs.yml 2022-03-21 15:33:23 +05:30
Jai A P
332c5c0b5e Delete build.yml 2022-03-21 15:33:13 +05:30
Jai A P
4aca0fdf09 Update build-native.js 2022-03-21 12:09:24 +05:30
Jai A P
26f93f7ac5 Update build-linux.js 2022-03-21 12:08:52 +05:30
dependabot[bot]
237cb5b26c Bump sortablejs from 1.14.0 to 1.15.0
Bumps [sortablejs](https://github.com/SortableJS/Sortable) from 1.14.0 to 1.15.0.
- [Release notes](https://github.com/SortableJS/Sortable/releases)
- [Commits](https://github.com/SortableJS/Sortable/compare/1.14.0...1.15.0)

---
updated-dependencies:
- dependency-name: sortablejs
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-21 04:04:56 +00:00
Jai A P
f2f0953b24 Fix windows 2022-03-09 22:04:29 +05:30
Jai A P
39fbf467de Update build.yml 2022-03-09 21:32:28 +05:30
Jai A P
d6bcdbde78 Fixes 2022-03-09 21:27:29 +05:30
Jai A P
38f8a7cfef Update build.yml 2022-03-09 17:18:07 +05:30
Jai A P
b27f5c2145 Revert last change 2022-03-09 12:37:16 +05:30
Jai A P
c3e4031aab Update build-linux.js 2022-03-09 12:36:10 +05:30
Jai A P
8c96788b00 Merge branch 'Eugeny:master' into master 2022-03-09 11:52:59 +05:30
Jai A P
725edd53cb Update build-windows.js 2022-03-09 11:19:04 +05:30
Jai A P
1b31187201 Update build.yml 2022-03-09 11:17:02 +05:30
Jai A P
b5506cff61 Update build-linux.js 2022-03-09 10:35:37 +05:30
Jai A P
5c325a347c Update build.yml 2022-03-08 23:15:58 +05:30
Jai A P
b70a193dbd Update build.yml 2022-03-08 22:58:11 +05:30
Jai A P
e2d4ef58c4 Update build.yml 2022-03-08 22:45:46 +05:30
Jai A P
d35c03d083 Update build.yml 2022-03-08 22:35:56 +05:30
Jai A P
c533e6c8fd Update electron-builder.yml 2022-03-08 22:31:13 +05:30
Jai-JAP
690a632f96 Add windows arm64 2022-03-08 21:53:59 +05:30
Jai-JAP
d8bec496ee Fix Linux pacman uploads 2022-03-08 21:43:09 +05:30
Jai-JAP
ea38943905 Fixes 2022-03-08 21:14:19 +05:30
Jai-JAP
90bd8b424f Manual run 2022-03-08 21:11:08 +05:30
Jai-JAP
a874a5e4d5 Add Linux armv7l and arm64 support 2022-03-08 20:59:59 +05:30
157 changed files with 19730 additions and 3462 deletions

View File

@@ -4,7 +4,9 @@
"README.zh-CN.md",
"README.ru-RU.md",
"README.ko-KR.md",
"README.it-IT.md"
"README.it-IT.md",
"README.de-DE.md",
"README.ja-JP.md"
],
"imageSize": 100,
"commit": false,
@@ -655,6 +657,232 @@
"contributions": [
"code"
]
},
{
"login": "Jai-JAP",
"name": "Jai A P",
"avatar_url": "https://avatars.githubusercontent.com/u/78354625?v=4",
"profile": "https://github.com/Jai-JAP",
"contributions": [
"platform"
]
},
{
"login": "ysc3839",
"name": "Richard Yu",
"avatar_url": "https://avatars.githubusercontent.com/u/12028138?v=4",
"profile": "https://blog.ysc3839.com",
"contributions": [
"code"
]
},
{
"login": "artu-ole",
"name": "artu-ole",
"avatar_url": "https://avatars.githubusercontent.com/u/15938416?v=4",
"profile": "https://github.com/artu-ole",
"contributions": [
"code"
]
},
{
"login": "TimaGribanov",
"name": "Timofey Gribanov",
"avatar_url": "https://avatars.githubusercontent.com/u/48593815?v=4",
"profile": "https://timagribanov.github.io/",
"contributions": [
"doc",
"translation"
]
},
{
"login": "ChristianBingman",
"name": "Christian Bingman",
"avatar_url": "https://avatars.githubusercontent.com/u/42191425?v=4",
"profile": "https://git.christianbingman.com",
"contributions": [
"code"
]
},
{
"login": "Ox0400",
"name": "zhipeng",
"avatar_url": "https://avatars.githubusercontent.com/u/5310853?v=4",
"profile": "http://zhangzhipeng2023.cn/",
"contributions": [
"code"
]
},
{
"login": "woodmeal",
"name": "woodmeal",
"avatar_url": "https://avatars.githubusercontent.com/u/104011197?v=4",
"profile": "https://github.com/woodmeal",
"contributions": [
"code"
]
},
{
"login": "MagicLike",
"name": "MagicLike",
"avatar_url": "https://avatars.githubusercontent.com/u/82117109?v=4",
"profile": "https://magiclike.codeberg.page/",
"contributions": [
"doc"
]
},
{
"login": "hisamafahri",
"name": "Hisam Fahri",
"avatar_url": "https://avatars.githubusercontent.com/u/65691613?v=4",
"profile": "https://github.com/hisamafahri",
"contributions": [
"code"
]
},
{
"login": "LiangchengJ",
"name": "Liangcheng Juves",
"avatar_url": "https://avatars.githubusercontent.com/u/48881023?v=4",
"profile": "https://liangchengj.com",
"contributions": [
"code"
]
},
{
"login": "attet",
"name": "Atte Timonen",
"avatar_url": "https://avatars.githubusercontent.com/u/1911416?v=4",
"profile": "https://github.com/attet",
"contributions": [
"code"
]
},
{
"login": "joaompinto",
"name": "João Pinto",
"avatar_url": "https://avatars.githubusercontent.com/u/1143125?v=4",
"profile": "https://www.linkedin.com/in/joaolmpinto/",
"contributions": [
"doc"
]
},
{
"login": "Qiming-Liu",
"name": "Alan",
"avatar_url": "https://avatars.githubusercontent.com/u/68600416?v=4",
"profile": "https://github.com/Qiming-Liu",
"contributions": [
"code"
]
},
{
"login": "74th",
"name": "Atsushi Morimoto",
"avatar_url": "https://avatars.githubusercontent.com/u/1060011?v=4",
"profile": "https://74th.tech/",
"contributions": [
"financial"
]
},
{
"login": "aarles",
"name": "Arles",
"avatar_url": "https://avatars.githubusercontent.com/u/5369096?v=4",
"profile": "https://arles.red/",
"contributions": [
"financial"
]
},
{
"login": "six2dez",
"name": "six2dez",
"avatar_url": "https://avatars.githubusercontent.com/u/24670991?v=4",
"profile": "https://pentestbook.six2dez.com/",
"contributions": [
"financial"
]
},
{
"login": "CandiceJoy",
"name": "Candice",
"avatar_url": "https://avatars.githubusercontent.com/u/8854890?v=4",
"profile": "https://github.com/CandiceJoy",
"contributions": [
"financial"
]
},
{
"login": "kingrowen",
"name": "Rowen Willabus",
"avatar_url": "https://avatars.githubusercontent.com/u/13178700?v=4",
"profile": "https://github.com/kingrowen",
"contributions": [
"financial"
]
},
{
"login": "HengY1Sky",
"name": "HengY1Coding✨",
"avatar_url": "https://avatars.githubusercontent.com/u/98681454?v=4",
"profile": "https://hengy1.top/",
"contributions": [
"financial"
]
},
{
"login": "FrancisHG",
"name": "Francis Gelderloos",
"avatar_url": "https://avatars.githubusercontent.com/u/1611626?v=4",
"profile": "https://github.com/FrancisHG",
"contributions": [
"financial"
]
},
{
"login": "astromasoud",
"name": "astromasoud",
"avatar_url": "https://avatars.githubusercontent.com/u/18737721?v=4",
"profile": "https://github.com/astromasoud",
"contributions": [
"financial"
]
},
{
"login": "Spirit55555",
"name": "Anders G. Jørgensen",
"avatar_url": "https://avatars.githubusercontent.com/u/2357565?v=4",
"profile": "https://spirit55555.dk/",
"contributions": [
"financial"
]
},
{
"login": "djradon",
"name": "Dave Richardson",
"avatar_url": "https://avatars.githubusercontent.com/u/5224156?v=4",
"profile": "https://github.com/djradon",
"contributions": [
"financial"
]
},
{
"login": "tpberntsen",
"name": "Thomas Peter Berntsen",
"avatar_url": "https://avatars.githubusercontent.com/u/922318?v=4",
"profile": "https://twitter.com/tpberntsen",
"contributions": [
"financial"
]
},
{
"login": "eltociear",
"name": "Ikko Ashimine",
"avatar_url": "https://avatars.githubusercontent.com/u/22633385?v=4",
"profile": "https://bandism.net/",
"contributions": [
"doc"
]
}
],
"contributorsPerLine": 7,

View File

@@ -11,7 +11,7 @@ jobs:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v3.0.0
uses: actions/setup-node@v3.2.0
with:
node-version: 16
@@ -38,7 +38,8 @@ jobs:
include:
- arch: x86_64
- arch: arm64
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v3
@@ -46,25 +47,18 @@ jobs:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v3.0.0
uses: actions/setup-node@v3.2.0
with:
node-version: 16
- name: Install deps
run: |
sudo npm i -g yarn@1.22.1
cd app
yarn --network-timeout 1000000
cd ..
rm app/node_modules/.yarn-integrity
yarn --network-timeout 1000000
- name: Build native deps
run: scripts/build-native.js
env:
ARCH: ${{matrix.arch}}
- name: Build native deps
- name: Fix cross build
run: |
rm -rf app/node_modules/cpu-features
rm -rf app/node_modules/ssh2/crypto/build
@@ -139,7 +133,7 @@ jobs:
fetch-depth: 0
- name: Install Node
uses: actions/setup-node@v3.0.0
uses: actions/setup-node@v3.2.0
with:
node-version: 16
@@ -148,14 +142,7 @@ jobs:
sudo apt-get update
sudo apt-get install libarchive-tools zsh
npm i -g yarn@1.19.1
cd app
yarn --network-timeout 1000000
cd ..
rm app/node_modules/.yarn-integrity
yarn --network-timeout 1000000
- name: Build native deps
run: scripts/build-native.js
- name: Webpack
run: yarn run build
@@ -199,8 +186,6 @@ jobs:
mv dist/*.rpm artifact-rpm/ || true
mkdir artifact-pacman
mv dist/*.pacman artifact-pacman/ || true
mkdir artifact-snap
mv dist/*.snap artifact-snap/ || true
mkdir artifact-tar.gz
mv dist/*.tar.gz artifact-tar.gz/ || true
mkdir artifact-web
@@ -209,31 +194,25 @@ jobs:
- uses: actions/upload-artifact@master
name: Upload DEB
with:
name: Linux DEB
name: Linux DEB (x86_64)
path: artifact-deb
- uses: actions/upload-artifact@master
name: Upload RPM
with:
name: Linux RPM
name: Linux RPM (x86_64)
path: artifact-rpm
- uses: actions/upload-artifact@master
name: Upload Pacman Package
with:
name: Linux Pacman
name: Linux Pacman (x86_64)
path: artifact-pacman
- uses: actions/upload-artifact@master
name: Upload Snap
with:
name: Linux Snap
path: artifact-snap
- uses: actions/upload-artifact@master
name: Upload Linux tarball
with:
name: Linux tarball
name: Linux tarball (x86_64)
path: artifact-tar.gz
- uses: actions/upload-artifact@master
@@ -242,9 +221,16 @@ jobs:
name: Web tarball
path: artifact-web
Windows-Build:
runs-on: windows-2022
needs: Lint
strategy:
matrix:
include:
- arch: x64
- arch: arm64
fail-fast: false
steps:
- name: Checkout
@@ -253,7 +239,7 @@ jobs:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v3.0.0
uses: actions/setup-node@v3.2.0
with:
node-version: 16
@@ -267,14 +253,16 @@ jobs:
run: |
npm i -g yarn@1.19.1
yarn --network-timeout 1000000
node scripts/build-native.js
yarn run build
node scripts/prepackage-plugins.js
env:
ARCH: ${{matrix.arch}}
- name: Build and sign packages
run: node scripts/build-windows.js
if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
env:
ARCH: ${{matrix.arch}}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
@@ -283,6 +271,8 @@ jobs:
- name: Build packages without signing
run: node scripts/build-windows.js
if: "!(github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
env:
ARCH: ${{matrix.arch}}
- name: Upload symbols
run: |
@@ -296,18 +286,18 @@ jobs:
- name: Package artifacts
run: |
mkdir artifact-setup
mv dist/*-setup.exe artifact-setup/
mv dist/*-setup-*.exe artifact-setup/
mkdir artifact-portable
mv dist/*-portable.zip artifact-portable/
mv dist/*-portable-*.zip artifact-portable/
- uses: actions/upload-artifact@master
name: Upload installer
with:
name: Windows installer
name: Windows installer (${{matrix.arch}})
path: artifact-setup
- uses: actions/upload-artifact@master
name: Upload portable build
with:
name: Windows portable build
name: Windows portable build (${{matrix.arch}})
path: artifact-portable

View File

@@ -42,7 +42,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -53,7 +53,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -67,4 +67,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v2

View File

@@ -12,9 +12,9 @@ jobs:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v3.0.0
uses: actions/setup-node@v3.2.0
with:
node-version: 14
node-version: 16
- name: Build
run: |

View File

@@ -4,28 +4,26 @@ Tabby is an Electron app, with the frontend written in Typescript with the help
# Getting started
First of all, clone this repository. You'll also need Node.js 14 or newer and Yarn.
First of all, clone this repository. You'll also need Node.js 15 or newer and Yarn.
First, install the dependencies:
```
# macOS:
yarn
./scripts/build-native.js
```
**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
yarn
./scripts/build-native.js
```
```
# Windows:
npm -g install windows-build-tools
yarn
node scripts\build-native.js
```
Now, check if your build is working:

288
README.de-DE.md Normal file
View File

@@ -0,0 +1,288 @@
[![](docs/readme.png)](https://tabby.sh)
<p align="center">
<a href="https://github.com/Eugeny/tabby/releases/latest"><img alt="Alle GitHub Releases" src="https://img.shields.io/github/downloads/eugeny/tabby/total.svg?label=DOWNLOADS&logo=github&style=for-the-badge"></a> <a href="https://nightly.link/Eugeny/tabby/workflows/build/master"><img src="https://shields.io/badge/-Nightly%20Builds-orange?logo=hackthebox&logoColor=fff&style=for-the-badge"/></a> <a href="https://matrix.to/#/#tabby-general:matrix.org"><img alt="Matrix" src="https://img.shields.io/matrix/tabby-general:matrix.org?logo=matrix&style=for-the-badge&color=magenta"></a> &nbsp <a href="https://translate.tabby.sh/"><img alt="Übersetzen" src="https://shields.io/badge/Übersetzen-UI-white?logo=googletranslate&style=for-the-badge&color=white&logoColor=fff"></a> <a href="https://twitter.com/eugeeeeny"><img alt="Twitter" src="https://shields.io/badge/Abonnieren-Nachrichten-blue?logo=twitter&style=for-the-badge&color=blue"></a>
</p>
<p align="center">
<a href="https://ko-fi.com/J3J8KWTF">
<img src="https://cdn.ko-fi.com/cdn/kofi3.png?v=2" width="150">
</a>
</p>
----
### Downloads:
* [Neueste Version](https://github.com/Eugeny/tabby/releases/latest)
* [Repositories](https://packagecloud.io/eugeny/tabby): [Debian/Ubuntu-basiert](https://packagecloud.io/eugeny/tabby/install#bash-deb), [RPM-basiert](https://packagecloud.io/eugeny/tabby/install#bash-rpm)
* [Neueste nightly Version](https://nightly.link/Eugeny/tabby/workflows/build/master)
<br/>
<p align="center">
Diese README ist auch verfügbar in: <a href="./README.md">:gb: English</a> · <a href="./README.ru-RU.md">:ru: Русский</a> · <a href="./README.ko-KR.md">:kr: 한국어</a> · <a href="./README.zh-CN.md">:cn: 简体中文</a> · <a href="./README.it-IT.md">:it: Italiano</a> · <a href="./README.ja-JP.md">:jp: 日本語</a>
</p>
----
[**Tabby**](https://tabby.sh) (ehemals **Terminus**) ist ein äußerst konfigurierbarer Terminalemulator, SSH- und serieller Client für Windows, macOS und Linux
* Integrierter SSH- und Telnet-Client und Verbindungsmanager
* Integriertes serielles Terminal
* Theming und Farbschemata
* Vollständig konfigurierbare Tastenkombinationen und Multi-Akkord-Tastenkombinationen
* Geteilte Fenster
* Merkt sich deine Tabs
* Unterstützung für PowerShell (und PS Core), WSL, Git-Bash, Cygwin, MSYS2, Cmder und CMD
* Direkte Dateiübertragung von/zu SSH-Sitzungen über Zmodem
* Vollständige Unicode-Unterstützung, einschließlich Zeichen mit doppelter Breite
* Kein Abbruch bei schnell ablaufenden Ausgaben
* Richtiges Shell-Erlebnis unter Windows, einschließlich Tabulator-Vervollständigung (über Clink)
* Integrierter verschlüsselter Container für SSH-Secrets und Konfiguration
* SSH-, SFTP- und Telnet-Client verfügbar als [Web-App](https://tabby.sh/app) (auch [selbstgehostet](https://github.com/Eugeny/tabby-web)).
# Inhaltsverzeichnis <!-- omit in toc -->
- [Was Tabby ist und was nicht](#what-tabby-is-and-isnt)
- [Terminal-Funktionen](#terminal-features)
- [SSH Client](#ssh-client)
- [Serielles Terminal](#serial-terminal)
- [Portabel](#portable)
- [Plugins](#plugins)
- [Themen](#themes)
- [Beitragen](#contributing)
<a name="about"></a>
# Was Tabby ist und was nicht
**Tabby ist** eine Alternative zu Windows Standard-Terminal (conhost), PowerShell ISE, PuTTY, macOS Terminal.app und iTerm
**Tabby ist weder** eine neue Shell noch ein MinGW- oder Cygwin-Ersatz. Sie ist auch nicht gerade sparsam - wenn die RAM-Nutzung von Bedeutung ist, solltest Du [Conemu](https://conemu.github.io) oder [Alacritty](https://github.com/jwilm/alacritty) in Betracht ziehen.
<a name="terminal"></a>
# Terminal-Funktionen
![](docs/readme-terminal.png)
* Ein V220-Terminal + verschiedene Erweiterungen
* Mehrere verschachtelte, geteilte Fenster
* Tabs auf jeder Seite des Fensters
* Optional andockbares Fenster mit einem globalen Spawn-Hotkey ("Quake-Konsole")
* Fortschrittserkennung
* Benachrichtigung bei Prozessabschluss
* Einfügen in Klammern, mehrzeilige Einfügewarnungen
* Schriftart-Ligaturen
* Benutzerdefinierte Shell-Profile
* Optionales RMB-Einfügen und Kopieren bei Auswahl (PuTTY-Stil)
<a name="ssh"></a>
# SSH Client
![](docs/readme-ssh.png)
* SSH2-Client mit einem Verbindungsmanager
* X11 und Portweiterleitung
* Automatisches Jump-Host-Management
* Agent-Weiterleitung (inkl. Pageant und Windows-eigenem OpenSSH-Agent)
* Anmeldeskripte
<a name="serial"></a>
# Serielles Terminal
* Gespeicherte Verbindungen
* Unterstützung von Readline-Eingaben
* Optionale hexadezimale Byte-für-Byte-Eingabe und Hexdump-Ausgabe
* Newline-Konvertierung
* Automatische Wiederverbindung
<a name="portable"></a>
# Portabel
Tabby läuft als portable Anwendung unter Windows, wenn Sie einen `data`-Ordner am selben Ort erstellen, an dem sich auch `Tabby.exe` befindet.
<a name="plugins"></a>
# Plugins
Plugins und Themen können direkt aus der Ansicht "Einstellungen" in Tabby installiert werden.
* [docker](https://github.com/Eugeny/tabby-docker) - Verbindung zu Docker-Containern
* [title-control](https://github.com/kbjr/terminus-title-control) - ermöglicht die Änderung des Titels der Terminal-Tabs durch Angabe eines Präfixes, Suffixes und/oder zu entfernender Strings
* [quick-cmds](https://github.com/Domain/terminus-quick-cmds) - schnelles Senden von Befehlen an eine oder alle Terminal-Tabs
* [save-output](https://github.com/Eugeny/tabby-save-output) - speichert Terminalausgaben in einer Datei
* [sync-config](https://github.com/starxg/terminus-sync-config) - synchronisiert die Konfiguration mit Gist oder Gitee
* [clippy](https://github.com/Eugeny/tabby-clippy) - ein Beispiel-Plugin, das einen die ganze Zeit nervt
* [workspace-manager](https://github.com/composer404/tabby-workspace-manager) - ermöglicht das Erstellen eigener Workspace-Profile auf Basis der angegebenen Konfiguration
* [search-in-browser](https://github.com/composer404/tabby-search-in-browser) - öffnet den Standard-Systembrowser mit einem Text, der aus dem Tabby Tab ausgewählt wurde
<a name="themes"></a>
# Themen
* [hype](https://github.com/Eugeny/tabby-theme-hype) - ein von Hyper inspiriertes Thema
* [relaxed](https://github.com/Relaxed-Theme/relaxed-terminal-themes#terminus) - das entspannte Thema für Tabby
* [gruvbox](https://github.com/porkloin/terminus-theme-gruvbox)
* [windows10](https://www.npmjs.com/package/terminus-theme-windows10)
* [altair](https://github.com/yxuko/terminus-altair)
# Sponsoren <!-- omit in toc -->
[![](https://assets-production.packagecloud.io/assets/packagecloud-logo-light-scaled-26ce8e96060fddf74afbd4445e63ba35590d4aaa56edc98495bb390ef3cae0ae.png)](https://packagecloud.io)
[**packagecloud**](https://packagecloud.io) bietet kostenloses Debian/RPM-Repository-Hosting an
<a name="contributing"></a>
# Beitragen
Pull Requests und Plugins sind willkommen!
Siehe [HACKING.md](https://github.com/Eugeny/tabby/blob/master/HACKING.md) und [API docs](https://docs.tabby.sh/) für Informationen über den Aufbau des Projekts und ein sehr kurzes Tutorial zur Plugin-Entwicklung.
---
<a name="contributors"></a>
Dank geht an diese wunderbaren Menschen ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="http://www.russellmyers.com"><img src="https://avatars2.githubusercontent.com/u/184085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Russell Myers</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mezner" title="Code">💻</a></td>
<td align="center"><a href="http://www.morwire.com"><img src="https://avatars1.githubusercontent.com/u/3991658?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Austin Warren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ehwarren" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Drachenkaetzchen"><img src="https://avatars1.githubusercontent.com/u/162974?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Felicia Hummel</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Drachenkaetzchen" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/mikemaccana"><img src="https://avatars2.githubusercontent.com/u/172594?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mike MacCana</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mikemaccana" title="Tests">⚠️</a> <a href="#design-mikemaccana" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/yxuko"><img src="https://avatars1.githubusercontent.com/u/1786317?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yacine Kanzari</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=yxuko" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/BBJip"><img src="https://avatars2.githubusercontent.com/u/32908927?v=4?s=100" width="100px;" alt=""/><br /><sub><b>BBJip</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=BBJip" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Futagirl"><img src="https://avatars2.githubusercontent.com/u/33533958?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Futagirl</b></sub></a><br /><a href="#design-Futagirl" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://www.levrik.io"><img src="https://avatars3.githubusercontent.com/u/9491603?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Levin Rickert</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=levrik" title="Code">💻</a></td>
<td align="center"><a href="https://kwonoj.github.io"><img src="https://avatars2.githubusercontent.com/u/1210596?v=4?s=100" width="100px;" alt=""/><br /><sub><b>OJ Kwon</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=kwonoj" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Domain"><img src="https://avatars2.githubusercontent.com/u/903197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>domain</b></sub></a><br /><a href="#plugin-Domain" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/Eugeny/tabby/commits?author=Domain" title="Code">💻</a></td>
<td align="center"><a href="http://www.jbrumond.me"><img src="https://avatars1.githubusercontent.com/u/195127?v=4?s=100" width="100px;" alt=""/><br /><sub><b>James Brumond</b></sub></a><br /><a href="#plugin-kbjr" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="http://www.growingwiththeweb.com"><img src="https://avatars0.githubusercontent.com/u/2193314?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Daniel Imms</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Tyriar" title="Code">💻</a> <a href="#plugin-Tyriar" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/Eugeny/tabby/commits?author=Tyriar" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/baflo"><img src="https://avatars2.githubusercontent.com/u/834350?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Florian Bachmann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=baflo" title="Code">💻</a></td>
<td align="center"><a href="http://michael-kuehnel.de"><img src="https://avatars2.githubusercontent.com/u/441011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Kühnel</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mischah" title="Code">💻</a> <a href="#design-mischah" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/NieLeben"><img src="https://avatars3.githubusercontent.com/u/47182955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tilmann Meyer</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=NieLeben" title="Code">💻</a></td>
<td align="center"><a href="http://www.jubeat.net"><img src="https://avatars3.githubusercontent.com/u/11289158?v=4?s=100" width="100px;" alt=""/><br /><sub><b>PM Extra</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/issues?q=author%3APMExtra" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://jjuhas.keybase.pub//"><img src="https://avatars1.githubusercontent.com/u/6438760?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jonathan</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=IgnusG" title="Code">💻</a></td>
<td align="center"><a href="https://hans-koch.me"><img src="https://avatars0.githubusercontent.com/u/1093709?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hans Koch</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hammster" title="Code">💻</a></td>
<td align="center"><a href="http://thepuzzlemaker.info"><img src="https://avatars3.githubusercontent.com/u/12666617?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dak Smyth</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ThePuzzlemaker" title="Code">💻</a></td>
<td align="center"><a href="http://yfwz100.github.io"><img src="https://avatars2.githubusercontent.com/u/983211?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Wang Zhi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=yfwz100" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/jack1142"><img src="https://avatars0.githubusercontent.com/u/6032823?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jack1142</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=jack1142" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/hdougie"><img src="https://avatars1.githubusercontent.com/u/450799?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Howie Douglas</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hdougie" title="Code">💻</a></td>
<td align="center"><a href="https://chriskaczor.com"><img src="https://avatars2.githubusercontent.com/u/180906?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chris Kaczor</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ckaczor" title="Code">💻</a></td>
<td align="center"><a href="https://www.boxmein.net"><img src="https://avatars1.githubusercontent.com/u/358714?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Johannes Kadak</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=boxmein" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/LeSeulArtichaut"><img src="https://avatars1.githubusercontent.com/u/38361244?v=4?s=100" width="100px;" alt=""/><br /><sub><b>LeSeulArtichaut</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=LeSeulArtichaut" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/CyrilTaylor"><img src="https://avatars0.githubusercontent.com/u/12631466?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cyril Taylor</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=CyrilTaylor" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/nstefanou"><img src="https://avatars3.githubusercontent.com/u/51129173?v=4?s=100" width="100px;" alt=""/><br /><sub><b>nstefanou</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nstefanou" title="Code">💻</a> <a href="#plugin-nstefanou" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="https://github.com/orin220444"><img src="https://avatars3.githubusercontent.com/u/30747229?v=4?s=100" width="100px;" alt=""/><br /><sub><b>orin220444</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=orin220444" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Goobles"><img src="https://avatars3.githubusercontent.com/u/8776771?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gobius Dolhain</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Goobles" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/3l0w"><img src="https://avatars2.githubusercontent.com/u/37798980?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gwilherm Folliot</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=3l0w" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Dimitory"><img src="https://avatars0.githubusercontent.com/u/475955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dmitry Pronin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=dimitory" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/JonathanBeverley"><img src="https://avatars1.githubusercontent.com/u/20328966?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jonathan Beverley</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=JonathanBeverley" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/zend"><img src="https://avatars1.githubusercontent.com/u/25160?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Zenghai Liang</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=zend" title="Code">💻</a></td>
<td align="center"><a href="https://about.me/matishadow"><img src="https://avatars0.githubusercontent.com/u/9083085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mateusz Tracz</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=matishadow" title="Code">💻</a></td>
<td align="center"><a href="https://zergpool.com"><img src="https://avatars3.githubusercontent.com/u/36234677?v=4?s=100" width="100px;" alt=""/><br /><sub><b>pinpin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=pinpins" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/TakuroOnoda"><img src="https://avatars0.githubusercontent.com/u/1407926?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Takuro Onoda</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TakuroOnoda" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/frauhottelmann"><img src="https://avatars2.githubusercontent.com/u/902705?v=4?s=100" width="100px;" alt=""/><br /><sub><b>frauhottelmann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=frauhottelmann" title="Code">💻</a></td>
<td align="center"><a href="http://patalong.pl"><img src="https://avatars.githubusercontent.com/u/29167842?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Piotr Patalong</b></sub></a><br /><a href="#design-VectorKappa" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/clarkwang"><img src="https://avatars.githubusercontent.com/u/157076?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Clark Wang</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=clarkwang" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/iamchating"><img src="https://avatars.githubusercontent.com/u/7088153?v=4?s=100" width="100px;" alt=""/><br /><sub><b>iamchating</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=iamchating" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/starxg"><img src="https://avatars.githubusercontent.com/u/34997494?v=4?s=100" width="100px;" alt=""/><br /><sub><b>starxg</b></sub></a><br /><a href="#plugin-starxg" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="http://hashnote.net/"><img src="https://avatars.githubusercontent.com/u/546312?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alisue</b></sub></a><br /><a href="#design-lambdalisue" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ydcool"><img src="https://avatars.githubusercontent.com/u/5668295?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dominic Yin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ydcool" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/bdr99"><img src="https://avatars.githubusercontent.com/u/2292715?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brandon Rothweiler</b></sub></a><br /><a href="#design-bdr99" title="Design">🎨</a></td>
<td align="center"><a href="https://git.io/JnP49"><img src="https://avatars.githubusercontent.com/u/63876444?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Logic Machine</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=logicmachine123" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/cypherbits"><img src="https://avatars.githubusercontent.com/u/10424900?v=4?s=100" width="100px;" alt=""/><br /><sub><b>cypherbits</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=cypherbits" title="Documentation">📖</a></td>
<td align="center"><a href="https://modulolotus.net"><img src="https://avatars.githubusercontent.com/u/946421?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matthew Davidson</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=KingMob" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/al-wi"><img src="https://avatars.githubusercontent.com/u/11092199?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexander Wiedemann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=al-wi" title="Code">💻</a></td>
<td align="center"><a href="https://www.notion.so/3d45c6bd2cbd4f938873a4bd12e23375"><img src="https://avatars.githubusercontent.com/u/59506394?v=4?s=100" width="100px;" alt=""/><br /><sub><b>장보연</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=BoYeonJang" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Me1onRind"><img src="https://avatars.githubusercontent.com/u/19531270?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zZ</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Me1onRind" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/tainoNZ"><img src="https://avatars.githubusercontent.com/u/49261322?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Aaron Davison</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=tainoNZ" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/composer404"><img src="https://avatars.githubusercontent.com/u/58251560?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Przemyslaw Kozik</b></sub></a><br /><a href="#design-composer404" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/highfredo"><img src="https://avatars.githubusercontent.com/u/5951524?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alfredo Arellano de la Fuente</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=highfredo" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/NessunKim"><img src="https://avatars.githubusercontent.com/u/12974079?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MH Kim</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=NessunKim" title="Code">💻</a></td>
<td align="center"><a href="https://discord.gg/4c5EVTBhtp"><img src="https://avatars.githubusercontent.com/u/40345645?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Marmota</b></sub></a><br /><a href="#design-jaimeadf" title="Design">🎨</a></td>
<td align="center"><a href="https://ares.zone"><img src="https://avatars.githubusercontent.com/u/40336192?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ares Andrew</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TENX-S" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://usual.io/"><img src="https://avatars.githubusercontent.com/u/780052?v=4?s=100" width="100px;" alt=""/><br /><sub><b>George Korsnick</b></sub></a><br /><a href="#financial-gkor" title="Financial">💵</a></td>
<td align="center"><a href="https://about.me/ulu"><img src="https://avatars.githubusercontent.com/u/872764?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Artem Smirnov</b></sub></a><br /><a href="#financial-uluhonolulu" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/nevotheless"><img src="https://avatars.githubusercontent.com/u/779797?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tim Kopplow</b></sub></a><br /><a href="#financial-nevotheless" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/mrthock"><img src="https://avatars.githubusercontent.com/u/88901709?v=4?s=100" width="100px;" alt=""/><br /><sub><b>mrthock</b></sub></a><br /><a href="#financial-mrthock" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/lrottach"><img src="https://avatars.githubusercontent.com/u/50323692?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lukas Rottach</b></sub></a><br /><a href="#financial-lrottach" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/boonkerz"><img src="https://avatars.githubusercontent.com/u/277321?v=4?s=100" width="100px;" alt=""/><br /><sub><b>boonkerz</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=boonkerz" title="Code">💻</a> <a href="#translation-boonkerz" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/milotype"><img src="https://avatars.githubusercontent.com/u/43657314?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Milo Ivir</b></sub></a><br /><a href="#translation-milotype" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/JasonCubic"><img src="https://avatars.githubusercontent.com/u/8921015?v=4?s=100" width="100px;" alt=""/><br /><sub><b>JasonCubic</b></sub></a><br /><a href="#design-JasonCubic" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/MaxWaldorf"><img src="https://avatars.githubusercontent.com/u/15877853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MaxWaldorf</b></sub></a><br /><a href="#infra-MaxWaldorf" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
<td align="center"><a href="https://github.com/mwz"><img src="https://avatars.githubusercontent.com/u/1190768?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Wizner</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mwz" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/mgrulich"><img src="https://avatars.githubusercontent.com/u/781036?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Martin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mgrulich" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/piersandro"><img src="https://avatars.githubusercontent.com/u/19996309?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Piersandro Guerrera</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=piersandro" title="Documentation">📖</a> <a href="#translation-piersandro" title="Translation">🌍</a></td>
<td align="center"><a href="http://pingbase.cn"><img src="https://avatars.githubusercontent.com/u/19320096?v=4?s=100" width="100px;" alt=""/><br /><sub><b>X-0x01</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=X-0x01" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Allenator"><img src="https://avatars.githubusercontent.com/u/11794943?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Allenator</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Allenator" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="http://microhobby.com.br/blog"><img src="https://avatars.githubusercontent.com/u/2633321?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matheus Castello</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=microhobby" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Jai-JAP"><img src="https://avatars.githubusercontent.com/u/78354625?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jai A P</b></sub></a><br /><a href="#platform-Jai-JAP" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://blog.ysc3839.com"><img src="https://avatars.githubusercontent.com/u/12028138?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Richard Yu</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ysc3839" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/artu-ole"><img src="https://avatars.githubusercontent.com/u/15938416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>artu-ole</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=artu-ole" title="Code">💻</a></td>
<td align="center"><a href="https://timagribanov.github.io/"><img src="https://avatars.githubusercontent.com/u/48593815?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Timofey Gribanov</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TimaGribanov" title="Documentation">📖</a> <a href="#translation-TimaGribanov" title="Translation">🌍</a></td>
<td align="center"><a href="https://git.christianbingman.com"><img src="https://avatars.githubusercontent.com/u/42191425?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christian Bingman</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ChristianBingman" title="Code">💻</a></td>
<td align="center"><a href="http://zhangzhipeng2023.cn/"><img src="https://avatars.githubusercontent.com/u/5310853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zhipeng</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Ox0400" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/woodmeal"><img src="https://avatars.githubusercontent.com/u/104011197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>woodmeal</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=woodmeal" title="Code">💻</a></td>
<td align="center"><a href="https://magiclike.codeberg.page/"><img src="https://avatars.githubusercontent.com/u/82117109?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MagicLike</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=MagicLike" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/hisamafahri"><img src="https://avatars.githubusercontent.com/u/65691613?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hisam Fahri</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hisamafahri" title="Code">💻</a></td>
<td align="center"><a href="https://liangchengj.com"><img src="https://avatars.githubusercontent.com/u/48881023?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Liangcheng Juves</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=LiangchengJ" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/attet"><img src="https://avatars.githubusercontent.com/u/1911416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atte Timonen</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=attet" title="Code">💻</a></td>
<td align="center"><a href="https://www.linkedin.com/in/joaolmpinto/"><img src="https://avatars.githubusercontent.com/u/1143125?v=4?s=100" width="100px;" alt=""/><br /><sub><b>João Pinto</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=joaompinto" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Qiming-Liu"><img src="https://avatars.githubusercontent.com/u/68600416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alan</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Qiming-Liu" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://74th.tech/"><img src="https://avatars.githubusercontent.com/u/1060011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atsushi Morimoto</b></sub></a><br /><a href="#financial-74th" title="Financial">💵</a></td>
<td align="center"><a href="https://arles.red/"><img src="https://avatars.githubusercontent.com/u/5369096?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Arles</b></sub></a><br /><a href="#financial-aarles" title="Financial">💵</a></td>
<td align="center"><a href="https://pentestbook.six2dez.com/"><img src="https://avatars.githubusercontent.com/u/24670991?v=4?s=100" width="100px;" alt=""/><br /><sub><b>six2dez</b></sub></a><br /><a href="#financial-six2dez" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/CandiceJoy"><img src="https://avatars.githubusercontent.com/u/8854890?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Candice</b></sub></a><br /><a href="#financial-CandiceJoy" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/kingrowen"><img src="https://avatars.githubusercontent.com/u/13178700?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rowen Willabus</b></sub></a><br /><a href="#financial-kingrowen" title="Financial">💵</a></td>
<td align="center"><a href="https://hengy1.top/"><img src="https://avatars.githubusercontent.com/u/98681454?v=4?s=100" width="100px;" alt=""/><br /><sub><b>HengY1Coding✨</b></sub></a><br /><a href="#financial-HengY1Sky" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/FrancisHG"><img src="https://avatars.githubusercontent.com/u/1611626?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Francis Gelderloos</b></sub></a><br /><a href="#financial-FrancisHG" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/astromasoud"><img src="https://avatars.githubusercontent.com/u/18737721?v=4?s=100" width="100px;" alt=""/><br /><sub><b>astromasoud</b></sub></a><br /><a href="#financial-astromasoud" title="Financial">💵</a></td>
<td align="center"><a href="https://spirit55555.dk/"><img src="https://avatars.githubusercontent.com/u/2357565?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anders G. Jørgensen</b></sub></a><br /><a href="#financial-Spirit55555" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/djradon"><img src="https://avatars.githubusercontent.com/u/5224156?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dave Richardson</b></sub></a><br /><a href="#financial-djradon" title="Financial">💵</a></td>
<td align="center"><a href="https://twitter.com/tpberntsen"><img src="https://avatars.githubusercontent.com/u/922318?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Thomas Peter Berntsen</b></sub></a><br /><a href="#financial-tpberntsen" title="Financial">💵</a></td>
<td align="center"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=eltociear" title="Documentation">📖</a></td>
</tr>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
Dieses Projekt folgt der [all-contributors](https://github.com/all-contributors/all-contributors) Spezifikation. Beiträge jeglicher Art sind willkommen!

View File

@@ -21,7 +21,7 @@
<br/>
<p align="center">
Questo README è disponibile anche in: <a href="./README.md">Inglese</a> <a href="./README.ru-RU.md">Русский</a> <a href="./README.ko-KR.md">한국어</a> <a href="./README.zh-CN.md">简体中文</a>
Questo README è disponibile anche in: <a href="./README.md">:gb: English</a> · <a href="./README.ru-RU.md">:ru: Русский</a> · <a href="./README.ko-KR.md">:kr: 한국어</a> · <a href="./README.zh-CN.md">:cn: 简体中文</a> · <a href="./README.de-DE.md">:de: Deutsch</a> · <a href="./README.ja-JP.md">:jp: 日本語</a>
----
@@ -241,6 +241,37 @@ Grazie a queste persone meravigliose ([emoji key](https://allcontributors.org/do
</tr>
<tr>
<td align="center"><a href="http://microhobby.com.br/blog"><img src="https://avatars.githubusercontent.com/u/2633321?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matheus Castello</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=microhobby" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Jai-JAP"><img src="https://avatars.githubusercontent.com/u/78354625?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jai A P</b></sub></a><br /><a href="#platform-Jai-JAP" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://blog.ysc3839.com"><img src="https://avatars.githubusercontent.com/u/12028138?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Richard Yu</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ysc3839" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/artu-ole"><img src="https://avatars.githubusercontent.com/u/15938416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>artu-ole</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=artu-ole" title="Code">💻</a></td>
<td align="center"><a href="https://timagribanov.github.io/"><img src="https://avatars.githubusercontent.com/u/48593815?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Timofey Gribanov</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TimaGribanov" title="Documentation">📖</a> <a href="#translation-TimaGribanov" title="Translation">🌍</a></td>
<td align="center"><a href="https://git.christianbingman.com"><img src="https://avatars.githubusercontent.com/u/42191425?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christian Bingman</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ChristianBingman" title="Code">💻</a></td>
<td align="center"><a href="http://zhangzhipeng2023.cn/"><img src="https://avatars.githubusercontent.com/u/5310853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zhipeng</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Ox0400" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/woodmeal"><img src="https://avatars.githubusercontent.com/u/104011197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>woodmeal</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=woodmeal" title="Code">💻</a></td>
<td align="center"><a href="https://magiclike.codeberg.page/"><img src="https://avatars.githubusercontent.com/u/82117109?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MagicLike</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=MagicLike" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/hisamafahri"><img src="https://avatars.githubusercontent.com/u/65691613?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hisam Fahri</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hisamafahri" title="Code">💻</a></td>
<td align="center"><a href="https://liangchengj.com"><img src="https://avatars.githubusercontent.com/u/48881023?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Liangcheng Juves</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=LiangchengJ" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/attet"><img src="https://avatars.githubusercontent.com/u/1911416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atte Timonen</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=attet" title="Code">💻</a></td>
<td align="center"><a href="https://www.linkedin.com/in/joaolmpinto/"><img src="https://avatars.githubusercontent.com/u/1143125?v=4?s=100" width="100px;" alt=""/><br /><sub><b>João Pinto</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=joaompinto" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Qiming-Liu"><img src="https://avatars.githubusercontent.com/u/68600416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alan</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Qiming-Liu" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://74th.tech/"><img src="https://avatars.githubusercontent.com/u/1060011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atsushi Morimoto</b></sub></a><br /><a href="#financial-74th" title="Financial">💵</a></td>
<td align="center"><a href="https://arles.red/"><img src="https://avatars.githubusercontent.com/u/5369096?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Arles</b></sub></a><br /><a href="#financial-aarles" title="Financial">💵</a></td>
<td align="center"><a href="https://pentestbook.six2dez.com/"><img src="https://avatars.githubusercontent.com/u/24670991?v=4?s=100" width="100px;" alt=""/><br /><sub><b>six2dez</b></sub></a><br /><a href="#financial-six2dez" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/CandiceJoy"><img src="https://avatars.githubusercontent.com/u/8854890?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Candice</b></sub></a><br /><a href="#financial-CandiceJoy" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/kingrowen"><img src="https://avatars.githubusercontent.com/u/13178700?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rowen Willabus</b></sub></a><br /><a href="#financial-kingrowen" title="Financial">💵</a></td>
<td align="center"><a href="https://hengy1.top/"><img src="https://avatars.githubusercontent.com/u/98681454?v=4?s=100" width="100px;" alt=""/><br /><sub><b>HengY1Coding✨</b></sub></a><br /><a href="#financial-HengY1Sky" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/FrancisHG"><img src="https://avatars.githubusercontent.com/u/1611626?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Francis Gelderloos</b></sub></a><br /><a href="#financial-FrancisHG" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/astromasoud"><img src="https://avatars.githubusercontent.com/u/18737721?v=4?s=100" width="100px;" alt=""/><br /><sub><b>astromasoud</b></sub></a><br /><a href="#financial-astromasoud" title="Financial">💵</a></td>
<td align="center"><a href="https://spirit55555.dk/"><img src="https://avatars.githubusercontent.com/u/2357565?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anders G. Jørgensen</b></sub></a><br /><a href="#financial-Spirit55555" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/djradon"><img src="https://avatars.githubusercontent.com/u/5224156?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dave Richardson</b></sub></a><br /><a href="#financial-djradon" title="Financial">💵</a></td>
<td align="center"><a href="https://twitter.com/tpberntsen"><img src="https://avatars.githubusercontent.com/u/922318?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Thomas Peter Berntsen</b></sub></a><br /><a href="#financial-tpberntsen" title="Financial">💵</a></td>
<td align="center"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=eltociear" title="Documentation">📖</a></td>
</tr>
</table>

287
README.ja-JP.md Normal file
View File

@@ -0,0 +1,287 @@
[![](docs/readme.png)](https://tabby.sh)
<p align="center">
<a href="https://github.com/Eugeny/tabby/releases/latest"><img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/eugeny/tabby/total.svg?label=DOWNLOADS&logo=github&style=for-the-badge"></a> &nbsp; <a href="https://nightly.link/Eugeny/tabby/workflows/build/master"><img src="https://shields.io/badge/-Nightly%20Builds-orange?logo=hackthebox&logoColor=fff&style=for-the-badge"/></a> &nbsp; <a href="https://matrix.to/#/#tabby-general:matrix.org"><img alt="Matrix" src="https://img.shields.io/matrix/tabby-general:matrix.org?logo=matrix&style=for-the-badge&color=magenta"></a> &nbsp <a href="https://translate.tabby.sh/"><img alt="Translate" src="https://shields.io/badge/Translate-UI-white?logo=googletranslate&style=for-the-badge&color=white&logoColor=fff"></a> &nbsp; <a href="https://twitter.com/eugeeeeny"><img alt="Twitter" src="https://shields.io/badge/Subscribe-News-blue?logo=twitter&style=for-the-badge&color=blue"></a>
</p>
<p align="center">
<a href="https://ko-fi.com/J3J8KWTF">
<img src="https://cdn.ko-fi.com/cdn/kofi3.png?v=2" width="150">
</a>
</p>
----
### ダウンロード:
* [Latest release](https://github.com/Eugeny/tabby/releases/latest)
* [Repositories](https://packagecloud.io/eugeny/tabby): [Debian/Ubuntu-based](https://packagecloud.io/eugeny/tabby/install#bash-deb), [RPM-based](https://packagecloud.io/eugeny/tabby/install#bash-rpm)
* [Latest nightly build](https://nightly.link/Eugeny/tabby/workflows/build/master)
<br/>
<p align="center">
このREADMEは次の言語でも使用可能です: <a href="./README.md">:gb: English</a> · <a href="./README.ru-RU.md">:ru: Русский</a> · <a href="./README.ko-KR.md">:kr: 한국어</a> · <a href="./README.zh-CN.md">:cn: 简体中文</a> · <a href="./README.it-IT.md">:it: Italiano</a> · <a href="./README.de-DE.md">:de: Deutsch</a>
</p>
----
[**Tabby**](https://tabby.sh)(以前は**Terminus**と呼ばれていた)は、Windows、macOS、Linux用の高度に設定可能なターミナル・エミュレータ、SSH、シリアルクライアントです
* SSH、Telnetクライアントとコネクションマネージャーの統合
* 統合されたシリアルターミナル
* テーピングとカラースキーム
* 完全に設定可能なショートカットとマルチコード・ショートカット
* スプリットペイン
* タブの記憶
* PowerShellおよびPS Core、WSL、Git-Bash、Cygwin、MSYS2、Cmder、CMDのサポート
* Zmodemを介したSSHセッションへの直接ファイル転送
* 全角文字を含むユニコードのフルサポート
* 高速に流れる出力で詰まることがない
* タブ補完を含むWindowsでの適切なシェル体験 (Clink経由)
* SSHの秘密と設定のための統合された暗号化コンテナ
* SSH、SFTP、Telnetクライアントが[Webアプリ](https://tabby.sh/app)として利用可能([セルフホスティング](https://github.com/Eugeny/tabby-web)も可能)。
# コンテンツ <!-- omit in toc -->
- [Tabbyとは](#Tabbbyとは)
- [ターミナルの機能](#ターミナルの機能)
- [SSHクライアント](#SSHクライアント)
- [シリアルターミナル](#シリアルターミナル)
- [ポータブル](#ポータブル)
- [プラグイン](#プラグイン)
- [テーマ](#テーマ)
- [コントリビュート](#コントリビュート)
<a name="about"></a>
# Tabbbyとは
* **Tabbyは**Windows 標準のターミナルconhost、PowerShell ISE、PuTTY、macOSのTerminal.appおよびiTermの代替となるものです
* **Tabbyは**は新しいシェルでも**なければ**、MinGWやCygwinの置き換えでも**ありません**。また、軽量でも**ありません**。もしRAMの使用量が重要であれば、[Conemu](https://conemu.github.io)や[Alacritty](https://github.com/jwilm/alacritty)を検討してください
<a name="terminal"></a>
# ターミナルの機能
![](docs/readme-terminal.png)
* V220ターミナル各種拡張機能
* 複数のネストされたスプリットペイン
* ウィンドウのどの側にもタブがある
* グローバルスポーンホットキー("Quake console")を持つオプションのドッキング自在なウィンドウ
* 進行状況の検出
* プロセス完了時の通知
* 括弧付きペースト、複数行のペースト警告
* フォントの合字
* カスタムシェルプロファイル
* オプションのRMBペーストとコピーオンセレクト(PuTTYスタイル)
<a name="ssh"></a>
# SSHクライアント
![](docs/readme-ssh.png)
* SSH2クライアントとコネクションマネージャ
* X11とポートフォワーディング
* 自動ジャンプホスト管理
* エージェント転送(PageantとWindowsネイティブOpenSSHエージェントを含む)
* ログインスクリプト
<a name="serial"></a>
# シリアルターミナル
* 保存されたコネクション
* リードライン入力のサポート
* オプションの16進バイト入力およびhexdump出力
* 改行コードの変換
* 自動再接続
<a name="portable"></a>
# ポータブル
Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォルダを作成すれば、ポータブルアプリとして実行されます。
<a name="plugins"></a>
# プラグイン
プラグインやテーマは、Tabby内の設定ビューから直接インストールすることができます。
* [docker](https://github.com/Eugeny/tabby-docker) - Dockerコンテナへ接続する
* [title-control](https://github.com/kbjr/terminus-title-control) - ターミナルタブのタイトルを、プレフィックス、サフィックス、削除する文字列を指定して変更可能にする
* [quick-cmds](https://github.com/Domain/terminus-quick-cmds) - 1つまたはすべてのターミナルタブに素早くコマンドを送信する
* [save-output](https://github.com/Eugeny/tabby-save-output) - ターミナルの出力をファイルに記録する
* [sync-config](https://github.com/starxg/terminus-sync-config) - GistまたはGiteeにコンフィグを同期する
* [clippy](https://github.com/Eugeny/tabby-clippy) - いつも悩まされるプラグインの例
* [workspace-manager](https://github.com/composer404/tabby-workspace-manager) - 与えられた設定に基づき、カスタムワークスペースプロファイルを作成可能にする
* [search-in-browser](https://github.com/composer404/tabby-search-in-browser) - デフォルトのシステムブラウザを開き、Tabbyのタブから選択されたテキストを表示する
<a name="themes"></a>
# テーマ
* [hype](https://github.com/Eugeny/tabby-theme-hype) - Hyperをイメージしたテーマ
* [relaxed](https://github.com/Relaxed-Theme/relaxed-terminal-themes#terminus) - TabbyのためのRelaxedテーマ
* [gruvbox](https://github.com/porkloin/terminus-theme-gruvbox)
* [windows10](https://www.npmjs.com/package/terminus-theme-windows10)
* [altair](https://github.com/yxuko/terminus-altair)
# スポンサー <!-- omit in toc -->
[![](https://assets-production.packagecloud.io/assets/packagecloud-logo-light-scaled-26ce8e96060fddf74afbd4445e63ba35590d4aaa56edc98495bb390ef3cae0ae.png)](https://packagecloud.io)
[**packagecloud**](https://packagecloud.io)は、Debian/RPMリポジトリのホスティングを無償で提供しています
<a name="contributing"></a>
# コントリビュート
プルリクエストやプラグインを歓迎します!
プロジェクトの構成や、ごく簡単なプラグイン開発のチュートリアルについては、[HACKING.md](https://github.com/Eugeny/tabby/blob/master/HACKING.md)及び、[API docs](https://docs.tabby.sh/)を参照してください。
---
<a name="contributors"></a>
この素晴らしい人たち([emoji key](https://allcontributors.org/docs/en/emoji-key))に感謝します:
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="http://www.russellmyers.com"><img src="https://avatars2.githubusercontent.com/u/184085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Russell Myers</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mezner" title="Code">💻</a></td>
<td align="center"><a href="http://www.morwire.com"><img src="https://avatars1.githubusercontent.com/u/3991658?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Austin Warren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ehwarren" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Drachenkaetzchen"><img src="https://avatars1.githubusercontent.com/u/162974?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Felicia Hummel</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Drachenkaetzchen" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/mikemaccana"><img src="https://avatars2.githubusercontent.com/u/172594?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mike MacCana</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mikemaccana" title="Tests">⚠️</a> <a href="#design-mikemaccana" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/yxuko"><img src="https://avatars1.githubusercontent.com/u/1786317?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yacine Kanzari</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=yxuko" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/BBJip"><img src="https://avatars2.githubusercontent.com/u/32908927?v=4?s=100" width="100px;" alt=""/><br /><sub><b>BBJip</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=BBJip" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Futagirl"><img src="https://avatars2.githubusercontent.com/u/33533958?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Futagirl</b></sub></a><br /><a href="#design-Futagirl" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://www.levrik.io"><img src="https://avatars3.githubusercontent.com/u/9491603?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Levin Rickert</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=levrik" title="Code">💻</a></td>
<td align="center"><a href="https://kwonoj.github.io"><img src="https://avatars2.githubusercontent.com/u/1210596?v=4?s=100" width="100px;" alt=""/><br /><sub><b>OJ Kwon</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=kwonoj" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Domain"><img src="https://avatars2.githubusercontent.com/u/903197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>domain</b></sub></a><br /><a href="#plugin-Domain" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/Eugeny/tabby/commits?author=Domain" title="Code">💻</a></td>
<td align="center"><a href="http://www.jbrumond.me"><img src="https://avatars1.githubusercontent.com/u/195127?v=4?s=100" width="100px;" alt=""/><br /><sub><b>James Brumond</b></sub></a><br /><a href="#plugin-kbjr" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="http://www.growingwiththeweb.com"><img src="https://avatars0.githubusercontent.com/u/2193314?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Daniel Imms</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Tyriar" title="Code">💻</a> <a href="#plugin-Tyriar" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/Eugeny/tabby/commits?author=Tyriar" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/baflo"><img src="https://avatars2.githubusercontent.com/u/834350?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Florian Bachmann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=baflo" title="Code">💻</a></td>
<td align="center"><a href="http://michael-kuehnel.de"><img src="https://avatars2.githubusercontent.com/u/441011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Kühnel</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mischah" title="Code">💻</a> <a href="#design-mischah" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/NieLeben"><img src="https://avatars3.githubusercontent.com/u/47182955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tilmann Meyer</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=NieLeben" title="Code">💻</a></td>
<td align="center"><a href="http://www.jubeat.net"><img src="https://avatars3.githubusercontent.com/u/11289158?v=4?s=100" width="100px;" alt=""/><br /><sub><b>PM Extra</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/issues?q=author%3APMExtra" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://jjuhas.keybase.pub//"><img src="https://avatars1.githubusercontent.com/u/6438760?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jonathan</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=IgnusG" title="Code">💻</a></td>
<td align="center"><a href="https://hans-koch.me"><img src="https://avatars0.githubusercontent.com/u/1093709?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hans Koch</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hammster" title="Code">💻</a></td>
<td align="center"><a href="http://thepuzzlemaker.info"><img src="https://avatars3.githubusercontent.com/u/12666617?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dak Smyth</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ThePuzzlemaker" title="Code">💻</a></td>
<td align="center"><a href="http://yfwz100.github.io"><img src="https://avatars2.githubusercontent.com/u/983211?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Wang Zhi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=yfwz100" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/jack1142"><img src="https://avatars0.githubusercontent.com/u/6032823?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jack1142</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=jack1142" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/hdougie"><img src="https://avatars1.githubusercontent.com/u/450799?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Howie Douglas</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hdougie" title="Code">💻</a></td>
<td align="center"><a href="https://chriskaczor.com"><img src="https://avatars2.githubusercontent.com/u/180906?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chris Kaczor</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ckaczor" title="Code">💻</a></td>
<td align="center"><a href="https://www.boxmein.net"><img src="https://avatars1.githubusercontent.com/u/358714?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Johannes Kadak</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=boxmein" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/LeSeulArtichaut"><img src="https://avatars1.githubusercontent.com/u/38361244?v=4?s=100" width="100px;" alt=""/><br /><sub><b>LeSeulArtichaut</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=LeSeulArtichaut" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/CyrilTaylor"><img src="https://avatars0.githubusercontent.com/u/12631466?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cyril Taylor</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=CyrilTaylor" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/nstefanou"><img src="https://avatars3.githubusercontent.com/u/51129173?v=4?s=100" width="100px;" alt=""/><br /><sub><b>nstefanou</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nstefanou" title="Code">💻</a> <a href="#plugin-nstefanou" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="https://github.com/orin220444"><img src="https://avatars3.githubusercontent.com/u/30747229?v=4?s=100" width="100px;" alt=""/><br /><sub><b>orin220444</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=orin220444" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Goobles"><img src="https://avatars3.githubusercontent.com/u/8776771?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gobius Dolhain</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Goobles" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/3l0w"><img src="https://avatars2.githubusercontent.com/u/37798980?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gwilherm Folliot</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=3l0w" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Dimitory"><img src="https://avatars0.githubusercontent.com/u/475955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dmitry Pronin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=dimitory" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/JonathanBeverley"><img src="https://avatars1.githubusercontent.com/u/20328966?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jonathan Beverley</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=JonathanBeverley" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/zend"><img src="https://avatars1.githubusercontent.com/u/25160?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Zenghai Liang</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=zend" title="Code">💻</a></td>
<td align="center"><a href="https://about.me/matishadow"><img src="https://avatars0.githubusercontent.com/u/9083085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mateusz Tracz</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=matishadow" title="Code">💻</a></td>
<td align="center"><a href="https://zergpool.com"><img src="https://avatars3.githubusercontent.com/u/36234677?v=4?s=100" width="100px;" alt=""/><br /><sub><b>pinpin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=pinpins" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/TakuroOnoda"><img src="https://avatars0.githubusercontent.com/u/1407926?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Takuro Onoda</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TakuroOnoda" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/frauhottelmann"><img src="https://avatars2.githubusercontent.com/u/902705?v=4?s=100" width="100px;" alt=""/><br /><sub><b>frauhottelmann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=frauhottelmann" title="Code">💻</a></td>
<td align="center"><a href="http://patalong.pl"><img src="https://avatars.githubusercontent.com/u/29167842?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Piotr Patalong</b></sub></a><br /><a href="#design-VectorKappa" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/clarkwang"><img src="https://avatars.githubusercontent.com/u/157076?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Clark Wang</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=clarkwang" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/iamchating"><img src="https://avatars.githubusercontent.com/u/7088153?v=4?s=100" width="100px;" alt=""/><br /><sub><b>iamchating</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=iamchating" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/starxg"><img src="https://avatars.githubusercontent.com/u/34997494?v=4?s=100" width="100px;" alt=""/><br /><sub><b>starxg</b></sub></a><br /><a href="#plugin-starxg" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="http://hashnote.net/"><img src="https://avatars.githubusercontent.com/u/546312?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alisue</b></sub></a><br /><a href="#design-lambdalisue" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ydcool"><img src="https://avatars.githubusercontent.com/u/5668295?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dominic Yin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ydcool" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/bdr99"><img src="https://avatars.githubusercontent.com/u/2292715?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brandon Rothweiler</b></sub></a><br /><a href="#design-bdr99" title="Design">🎨</a></td>
<td align="center"><a href="https://git.io/JnP49"><img src="https://avatars.githubusercontent.com/u/63876444?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Logic Machine</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=logicmachine123" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/cypherbits"><img src="https://avatars.githubusercontent.com/u/10424900?v=4?s=100" width="100px;" alt=""/><br /><sub><b>cypherbits</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=cypherbits" title="Documentation">📖</a></td>
<td align="center"><a href="https://modulolotus.net"><img src="https://avatars.githubusercontent.com/u/946421?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matthew Davidson</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=KingMob" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/al-wi"><img src="https://avatars.githubusercontent.com/u/11092199?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexander Wiedemann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=al-wi" title="Code">💻</a></td>
<td align="center"><a href="https://www.notion.so/3d45c6bd2cbd4f938873a4bd12e23375"><img src="https://avatars.githubusercontent.com/u/59506394?v=4?s=100" width="100px;" alt=""/><br /><sub><b>장보연</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=BoYeonJang" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Me1onRind"><img src="https://avatars.githubusercontent.com/u/19531270?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zZ</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Me1onRind" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/tainoNZ"><img src="https://avatars.githubusercontent.com/u/49261322?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Aaron Davison</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=tainoNZ" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/composer404"><img src="https://avatars.githubusercontent.com/u/58251560?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Przemyslaw Kozik</b></sub></a><br /><a href="#design-composer404" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/highfredo"><img src="https://avatars.githubusercontent.com/u/5951524?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alfredo Arellano de la Fuente</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=highfredo" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/NessunKim"><img src="https://avatars.githubusercontent.com/u/12974079?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MH Kim</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=NessunKim" title="Code">💻</a></td>
<td align="center"><a href="https://discord.gg/4c5EVTBhtp"><img src="https://avatars.githubusercontent.com/u/40345645?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Marmota</b></sub></a><br /><a href="#design-jaimeadf" title="Design">🎨</a></td>
<td align="center"><a href="https://ares.zone"><img src="https://avatars.githubusercontent.com/u/40336192?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ares Andrew</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TENX-S" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://usual.io/"><img src="https://avatars.githubusercontent.com/u/780052?v=4?s=100" width="100px;" alt=""/><br /><sub><b>George Korsnick</b></sub></a><br /><a href="#financial-gkor" title="Financial">💵</a></td>
<td align="center"><a href="https://about.me/ulu"><img src="https://avatars.githubusercontent.com/u/872764?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Artem Smirnov</b></sub></a><br /><a href="#financial-uluhonolulu" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/nevotheless"><img src="https://avatars.githubusercontent.com/u/779797?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tim Kopplow</b></sub></a><br /><a href="#financial-nevotheless" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/mrthock"><img src="https://avatars.githubusercontent.com/u/88901709?v=4?s=100" width="100px;" alt=""/><br /><sub><b>mrthock</b></sub></a><br /><a href="#financial-mrthock" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/lrottach"><img src="https://avatars.githubusercontent.com/u/50323692?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lukas Rottach</b></sub></a><br /><a href="#financial-lrottach" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/boonkerz"><img src="https://avatars.githubusercontent.com/u/277321?v=4?s=100" width="100px;" alt=""/><br /><sub><b>boonkerz</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=boonkerz" title="Code">💻</a> <a href="#translation-boonkerz" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/milotype"><img src="https://avatars.githubusercontent.com/u/43657314?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Milo Ivir</b></sub></a><br /><a href="#translation-milotype" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/JasonCubic"><img src="https://avatars.githubusercontent.com/u/8921015?v=4?s=100" width="100px;" alt=""/><br /><sub><b>JasonCubic</b></sub></a><br /><a href="#design-JasonCubic" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/MaxWaldorf"><img src="https://avatars.githubusercontent.com/u/15877853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MaxWaldorf</b></sub></a><br /><a href="#infra-MaxWaldorf" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
<td align="center"><a href="https://github.com/mwz"><img src="https://avatars.githubusercontent.com/u/1190768?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Wizner</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mwz" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/mgrulich"><img src="https://avatars.githubusercontent.com/u/781036?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Martin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mgrulich" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/piersandro"><img src="https://avatars.githubusercontent.com/u/19996309?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Piersandro Guerrera</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=piersandro" title="Documentation">📖</a> <a href="#translation-piersandro" title="Translation">🌍</a></td>
<td align="center"><a href="http://pingbase.cn"><img src="https://avatars.githubusercontent.com/u/19320096?v=4?s=100" width="100px;" alt=""/><br /><sub><b>X-0x01</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=X-0x01" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Allenator"><img src="https://avatars.githubusercontent.com/u/11794943?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Allenator</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Allenator" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="http://microhobby.com.br/blog"><img src="https://avatars.githubusercontent.com/u/2633321?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matheus Castello</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=microhobby" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Jai-JAP"><img src="https://avatars.githubusercontent.com/u/78354625?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jai A P</b></sub></a><br /><a href="#platform-Jai-JAP" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://blog.ysc3839.com"><img src="https://avatars.githubusercontent.com/u/12028138?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Richard Yu</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ysc3839" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/artu-ole"><img src="https://avatars.githubusercontent.com/u/15938416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>artu-ole</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=artu-ole" title="Code">💻</a></td>
<td align="center"><a href="https://timagribanov.github.io/"><img src="https://avatars.githubusercontent.com/u/48593815?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Timofey Gribanov</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TimaGribanov" title="Documentation">📖</a> <a href="#translation-TimaGribanov" title="Translation">🌍</a></td>
<td align="center"><a href="https://git.christianbingman.com"><img src="https://avatars.githubusercontent.com/u/42191425?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christian Bingman</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ChristianBingman" title="Code">💻</a></td>
<td align="center"><a href="http://zhangzhipeng2023.cn/"><img src="https://avatars.githubusercontent.com/u/5310853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zhipeng</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Ox0400" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/woodmeal"><img src="https://avatars.githubusercontent.com/u/104011197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>woodmeal</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=woodmeal" title="Code">💻</a></td>
<td align="center"><a href="https://magiclike.codeberg.page/"><img src="https://avatars.githubusercontent.com/u/82117109?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MagicLike</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=MagicLike" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/hisamafahri"><img src="https://avatars.githubusercontent.com/u/65691613?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hisam Fahri</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hisamafahri" title="Code">💻</a></td>
<td align="center"><a href="https://liangchengj.com"><img src="https://avatars.githubusercontent.com/u/48881023?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Liangcheng Juves</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=LiangchengJ" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/attet"><img src="https://avatars.githubusercontent.com/u/1911416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atte Timonen</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=attet" title="Code">💻</a></td>
<td align="center"><a href="https://www.linkedin.com/in/joaolmpinto/"><img src="https://avatars.githubusercontent.com/u/1143125?v=4?s=100" width="100px;" alt=""/><br /><sub><b>João Pinto</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=joaompinto" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Qiming-Liu"><img src="https://avatars.githubusercontent.com/u/68600416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alan</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Qiming-Liu" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://74th.tech/"><img src="https://avatars.githubusercontent.com/u/1060011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atsushi Morimoto</b></sub></a><br /><a href="#financial-74th" title="Financial">💵</a></td>
<td align="center"><a href="https://arles.red/"><img src="https://avatars.githubusercontent.com/u/5369096?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Arles</b></sub></a><br /><a href="#financial-aarles" title="Financial">💵</a></td>
<td align="center"><a href="https://pentestbook.six2dez.com/"><img src="https://avatars.githubusercontent.com/u/24670991?v=4?s=100" width="100px;" alt=""/><br /><sub><b>six2dez</b></sub></a><br /><a href="#financial-six2dez" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/CandiceJoy"><img src="https://avatars.githubusercontent.com/u/8854890?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Candice</b></sub></a><br /><a href="#financial-CandiceJoy" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/kingrowen"><img src="https://avatars.githubusercontent.com/u/13178700?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rowen Willabus</b></sub></a><br /><a href="#financial-kingrowen" title="Financial">💵</a></td>
<td align="center"><a href="https://hengy1.top/"><img src="https://avatars.githubusercontent.com/u/98681454?v=4?s=100" width="100px;" alt=""/><br /><sub><b>HengY1Coding✨</b></sub></a><br /><a href="#financial-HengY1Sky" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/FrancisHG"><img src="https://avatars.githubusercontent.com/u/1611626?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Francis Gelderloos</b></sub></a><br /><a href="#financial-FrancisHG" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/astromasoud"><img src="https://avatars.githubusercontent.com/u/18737721?v=4?s=100" width="100px;" alt=""/><br /><sub><b>astromasoud</b></sub></a><br /><a href="#financial-astromasoud" title="Financial">💵</a></td>
<td align="center"><a href="https://spirit55555.dk/"><img src="https://avatars.githubusercontent.com/u/2357565?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anders G. Jørgensen</b></sub></a><br /><a href="#financial-Spirit55555" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/djradon"><img src="https://avatars.githubusercontent.com/u/5224156?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dave Richardson</b></sub></a><br /><a href="#financial-djradon" title="Financial">💵</a></td>
<td align="center"><a href="https://twitter.com/tpberntsen"><img src="https://avatars.githubusercontent.com/u/922318?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Thomas Peter Berntsen</b></sub></a><br /><a href="#financial-tpberntsen" title="Financial">💵</a></td>
<td align="center"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=eltociear" title="Documentation">📖</a></td>
</tr>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
このプロジェクトは[all-contributors](https://github.com/all-contributors/all-contributors)の仕様に準拠しています。どのような種類の貢献でも歓迎します!

View File

@@ -235,6 +235,37 @@ Pull requests and plugins are welcome!
</tr>
<tr>
<td align="center"><a href="http://microhobby.com.br/blog"><img src="https://avatars.githubusercontent.com/u/2633321?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matheus Castello</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=microhobby" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Jai-JAP"><img src="https://avatars.githubusercontent.com/u/78354625?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jai A P</b></sub></a><br /><a href="#platform-Jai-JAP" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://blog.ysc3839.com"><img src="https://avatars.githubusercontent.com/u/12028138?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Richard Yu</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ysc3839" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/artu-ole"><img src="https://avatars.githubusercontent.com/u/15938416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>artu-ole</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=artu-ole" title="Code">💻</a></td>
<td align="center"><a href="https://timagribanov.github.io/"><img src="https://avatars.githubusercontent.com/u/48593815?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Timofey Gribanov</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TimaGribanov" title="Documentation">📖</a> <a href="#translation-TimaGribanov" title="Translation">🌍</a></td>
<td align="center"><a href="https://git.christianbingman.com"><img src="https://avatars.githubusercontent.com/u/42191425?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christian Bingman</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ChristianBingman" title="Code">💻</a></td>
<td align="center"><a href="http://zhangzhipeng2023.cn/"><img src="https://avatars.githubusercontent.com/u/5310853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zhipeng</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Ox0400" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/woodmeal"><img src="https://avatars.githubusercontent.com/u/104011197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>woodmeal</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=woodmeal" title="Code">💻</a></td>
<td align="center"><a href="https://magiclike.codeberg.page/"><img src="https://avatars.githubusercontent.com/u/82117109?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MagicLike</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=MagicLike" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/hisamafahri"><img src="https://avatars.githubusercontent.com/u/65691613?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hisam Fahri</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hisamafahri" title="Code">💻</a></td>
<td align="center"><a href="https://liangchengj.com"><img src="https://avatars.githubusercontent.com/u/48881023?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Liangcheng Juves</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=LiangchengJ" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/attet"><img src="https://avatars.githubusercontent.com/u/1911416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atte Timonen</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=attet" title="Code">💻</a></td>
<td align="center"><a href="https://www.linkedin.com/in/joaolmpinto/"><img src="https://avatars.githubusercontent.com/u/1143125?v=4?s=100" width="100px;" alt=""/><br /><sub><b>João Pinto</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=joaompinto" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Qiming-Liu"><img src="https://avatars.githubusercontent.com/u/68600416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alan</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Qiming-Liu" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://74th.tech/"><img src="https://avatars.githubusercontent.com/u/1060011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atsushi Morimoto</b></sub></a><br /><a href="#financial-74th" title="Financial">💵</a></td>
<td align="center"><a href="https://arles.red/"><img src="https://avatars.githubusercontent.com/u/5369096?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Arles</b></sub></a><br /><a href="#financial-aarles" title="Financial">💵</a></td>
<td align="center"><a href="https://pentestbook.six2dez.com/"><img src="https://avatars.githubusercontent.com/u/24670991?v=4?s=100" width="100px;" alt=""/><br /><sub><b>six2dez</b></sub></a><br /><a href="#financial-six2dez" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/CandiceJoy"><img src="https://avatars.githubusercontent.com/u/8854890?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Candice</b></sub></a><br /><a href="#financial-CandiceJoy" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/kingrowen"><img src="https://avatars.githubusercontent.com/u/13178700?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rowen Willabus</b></sub></a><br /><a href="#financial-kingrowen" title="Financial">💵</a></td>
<td align="center"><a href="https://hengy1.top/"><img src="https://avatars.githubusercontent.com/u/98681454?v=4?s=100" width="100px;" alt=""/><br /><sub><b>HengY1Coding✨</b></sub></a><br /><a href="#financial-HengY1Sky" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/FrancisHG"><img src="https://avatars.githubusercontent.com/u/1611626?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Francis Gelderloos</b></sub></a><br /><a href="#financial-FrancisHG" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/astromasoud"><img src="https://avatars.githubusercontent.com/u/18737721?v=4?s=100" width="100px;" alt=""/><br /><sub><b>astromasoud</b></sub></a><br /><a href="#financial-astromasoud" title="Financial">💵</a></td>
<td align="center"><a href="https://spirit55555.dk/"><img src="https://avatars.githubusercontent.com/u/2357565?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anders G. Jørgensen</b></sub></a><br /><a href="#financial-Spirit55555" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/djradon"><img src="https://avatars.githubusercontent.com/u/5224156?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dave Richardson</b></sub></a><br /><a href="#financial-djradon" title="Financial">💵</a></td>
<td align="center"><a href="https://twitter.com/tpberntsen"><img src="https://avatars.githubusercontent.com/u/922318?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Thomas Peter Berntsen</b></sub></a><br /><a href="#financial-tpberntsen" title="Financial">💵</a></td>
<td align="center"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=eltociear" title="Documentation">📖</a></td>
</tr>
</table>

View File

@@ -21,7 +21,7 @@
<br/>
<p align="center">
This README is also available in: <a href="./README.ru-RU.md">Русский</a> <a href="./README.ko-KR.md">한국어</a> <a href="./README.zh-CN.md">简体中文</a> <a href="./README.it-IT.md">Italiano</a>
This README is also available in: <a href="./README.ru-RU.md">:ru: Русский</a> · <a href="./README.ko-KR.md">:kr: 한국어</a> · <a href="./README.zh-CN.md">:cn: 简体中文</a> · <a href="./README.it-IT.md">:it: Italiano</a> · <a href="./README.de-DE.md">:de: Deutsch</a> · <a href="./README.ja-JP.md">:jp: 日本語</a>
</p>
----
@@ -79,6 +79,7 @@ This README is also available in: <a href="./README.ru-RU.md">Русский</a>
* Optional RMB paste and copy-on select (PuTTY style)
<a name="ssh"></a>
# SSH Client
![](docs/readme-ssh.png)
@@ -90,6 +91,7 @@ This README is also available in: <a href="./README.ru-RU.md">Русский</a>
* Login scripts
<a name="serial"></a>
# Serial Terminal
* Saved connections
@@ -99,11 +101,13 @@ This README is also available in: <a href="./README.ru-RU.md">Русский</a>
* Automatic reconnection
<a name="portable"></a>
# Portable
Tabby will run as a portable app on Windows, if you create a `data` folder in the same location where `Tabby.exe` lives.
<a name="plugins"></a>
# Plugins
Plugins and themes can be installed directly from the Settings view inside Tabby.
@@ -118,6 +122,7 @@ Plugins and themes can be installed directly from the Settings view inside Tabby
* [search-in-browser](https://github.com/composer404/tabby-search-in-browser) - opens default system browser with a text selected from the Tabby's tab
<a name="themes"></a>
# Themes
* [hype](https://github.com/Eugeny/tabby-theme-hype) - a Hyper inspired theme
@@ -240,6 +245,37 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
</tr>
<tr>
<td align="center"><a href="http://microhobby.com.br/blog"><img src="https://avatars.githubusercontent.com/u/2633321?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matheus Castello</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=microhobby" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Jai-JAP"><img src="https://avatars.githubusercontent.com/u/78354625?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jai A P</b></sub></a><br /><a href="#platform-Jai-JAP" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://blog.ysc3839.com"><img src="https://avatars.githubusercontent.com/u/12028138?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Richard Yu</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ysc3839" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/artu-ole"><img src="https://avatars.githubusercontent.com/u/15938416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>artu-ole</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=artu-ole" title="Code">💻</a></td>
<td align="center"><a href="https://timagribanov.github.io/"><img src="https://avatars.githubusercontent.com/u/48593815?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Timofey Gribanov</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TimaGribanov" title="Documentation">📖</a> <a href="#translation-TimaGribanov" title="Translation">🌍</a></td>
<td align="center"><a href="https://git.christianbingman.com"><img src="https://avatars.githubusercontent.com/u/42191425?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christian Bingman</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ChristianBingman" title="Code">💻</a></td>
<td align="center"><a href="http://zhangzhipeng2023.cn/"><img src="https://avatars.githubusercontent.com/u/5310853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zhipeng</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Ox0400" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/woodmeal"><img src="https://avatars.githubusercontent.com/u/104011197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>woodmeal</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=woodmeal" title="Code">💻</a></td>
<td align="center"><a href="https://magiclike.codeberg.page/"><img src="https://avatars.githubusercontent.com/u/82117109?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MagicLike</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=MagicLike" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/hisamafahri"><img src="https://avatars.githubusercontent.com/u/65691613?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hisam Fahri</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hisamafahri" title="Code">💻</a></td>
<td align="center"><a href="https://liangchengj.com"><img src="https://avatars.githubusercontent.com/u/48881023?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Liangcheng Juves</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=LiangchengJ" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/attet"><img src="https://avatars.githubusercontent.com/u/1911416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atte Timonen</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=attet" title="Code">💻</a></td>
<td align="center"><a href="https://www.linkedin.com/in/joaolmpinto/"><img src="https://avatars.githubusercontent.com/u/1143125?v=4?s=100" width="100px;" alt=""/><br /><sub><b>João Pinto</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=joaompinto" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Qiming-Liu"><img src="https://avatars.githubusercontent.com/u/68600416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alan</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Qiming-Liu" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://74th.tech/"><img src="https://avatars.githubusercontent.com/u/1060011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atsushi Morimoto</b></sub></a><br /><a href="#financial-74th" title="Financial">💵</a></td>
<td align="center"><a href="https://arles.red/"><img src="https://avatars.githubusercontent.com/u/5369096?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Arles</b></sub></a><br /><a href="#financial-aarles" title="Financial">💵</a></td>
<td align="center"><a href="https://pentestbook.six2dez.com/"><img src="https://avatars.githubusercontent.com/u/24670991?v=4?s=100" width="100px;" alt=""/><br /><sub><b>six2dez</b></sub></a><br /><a href="#financial-six2dez" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/CandiceJoy"><img src="https://avatars.githubusercontent.com/u/8854890?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Candice</b></sub></a><br /><a href="#financial-CandiceJoy" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/kingrowen"><img src="https://avatars.githubusercontent.com/u/13178700?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rowen Willabus</b></sub></a><br /><a href="#financial-kingrowen" title="Financial">💵</a></td>
<td align="center"><a href="https://hengy1.top/"><img src="https://avatars.githubusercontent.com/u/98681454?v=4?s=100" width="100px;" alt=""/><br /><sub><b>HengY1Coding✨</b></sub></a><br /><a href="#financial-HengY1Sky" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/FrancisHG"><img src="https://avatars.githubusercontent.com/u/1611626?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Francis Gelderloos</b></sub></a><br /><a href="#financial-FrancisHG" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/astromasoud"><img src="https://avatars.githubusercontent.com/u/18737721?v=4?s=100" width="100px;" alt=""/><br /><sub><b>astromasoud</b></sub></a><br /><a href="#financial-astromasoud" title="Financial">💵</a></td>
<td align="center"><a href="https://spirit55555.dk/"><img src="https://avatars.githubusercontent.com/u/2357565?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anders G. Jørgensen</b></sub></a><br /><a href="#financial-Spirit55555" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/djradon"><img src="https://avatars.githubusercontent.com/u/5224156?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dave Richardson</b></sub></a><br /><a href="#financial-djradon" title="Financial">💵</a></td>
<td align="center"><a href="https://twitter.com/tpberntsen"><img src="https://avatars.githubusercontent.com/u/922318?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Thomas Peter Berntsen</b></sub></a><br /><a href="#financial-tpberntsen" title="Financial">💵</a></td>
<td align="center"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=eltociear" title="Documentation">📖</a></td>
</tr>
</table>
@@ -248,4 +284,4 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind are welcome!

View File

@@ -21,7 +21,7 @@
<br/>
<p align="center">
Этот README также доступен на: <a href="./README.md">Английском</a> <a href="./README.ko-KR.md">Корейском</a> <a href="./README.zh-CN.md">Китайском</a>
Этот README также доступен на: <a href="./README.md">:gb: English</a> · <a href="./README.ko-KR.md">:kr: 한국어</a> · <a href="./README.zh-CN.md">:cn: 简体中文</a> · <a href="./README.it-IT.md">:it: Italiano</a> · <a href="./README.de-DE.md">:de: Deutsch</a> · <a href="./README.ja-JP.md">:jp: 日本語</a>
</p>
----
@@ -241,6 +241,37 @@ Pull-запросы и плагины приветствуются!
</tr>
<tr>
<td align="center"><a href="http://microhobby.com.br/blog"><img src="https://avatars.githubusercontent.com/u/2633321?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matheus Castello</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=microhobby" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Jai-JAP"><img src="https://avatars.githubusercontent.com/u/78354625?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jai A P</b></sub></a><br /><a href="#platform-Jai-JAP" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://blog.ysc3839.com"><img src="https://avatars.githubusercontent.com/u/12028138?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Richard Yu</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ysc3839" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/artu-ole"><img src="https://avatars.githubusercontent.com/u/15938416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>artu-ole</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=artu-ole" title="Code">💻</a></td>
<td align="center"><a href="https://timagribanov.github.io/"><img src="https://avatars.githubusercontent.com/u/48593815?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Timofey Gribanov</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TimaGribanov" title="Documentation">📖</a> <a href="#translation-TimaGribanov" title="Translation">🌍</a></td>
<td align="center"><a href="https://git.christianbingman.com"><img src="https://avatars.githubusercontent.com/u/42191425?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christian Bingman</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ChristianBingman" title="Code">💻</a></td>
<td align="center"><a href="http://zhangzhipeng2023.cn/"><img src="https://avatars.githubusercontent.com/u/5310853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zhipeng</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Ox0400" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/woodmeal"><img src="https://avatars.githubusercontent.com/u/104011197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>woodmeal</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=woodmeal" title="Code">💻</a></td>
<td align="center"><a href="https://magiclike.codeberg.page/"><img src="https://avatars.githubusercontent.com/u/82117109?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MagicLike</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=MagicLike" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/hisamafahri"><img src="https://avatars.githubusercontent.com/u/65691613?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hisam Fahri</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hisamafahri" title="Code">💻</a></td>
<td align="center"><a href="https://liangchengj.com"><img src="https://avatars.githubusercontent.com/u/48881023?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Liangcheng Juves</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=LiangchengJ" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/attet"><img src="https://avatars.githubusercontent.com/u/1911416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atte Timonen</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=attet" title="Code">💻</a></td>
<td align="center"><a href="https://www.linkedin.com/in/joaolmpinto/"><img src="https://avatars.githubusercontent.com/u/1143125?v=4?s=100" width="100px;" alt=""/><br /><sub><b>João Pinto</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=joaompinto" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Qiming-Liu"><img src="https://avatars.githubusercontent.com/u/68600416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alan</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Qiming-Liu" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://74th.tech/"><img src="https://avatars.githubusercontent.com/u/1060011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atsushi Morimoto</b></sub></a><br /><a href="#financial-74th" title="Financial">💵</a></td>
<td align="center"><a href="https://arles.red/"><img src="https://avatars.githubusercontent.com/u/5369096?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Arles</b></sub></a><br /><a href="#financial-aarles" title="Financial">💵</a></td>
<td align="center"><a href="https://pentestbook.six2dez.com/"><img src="https://avatars.githubusercontent.com/u/24670991?v=4?s=100" width="100px;" alt=""/><br /><sub><b>six2dez</b></sub></a><br /><a href="#financial-six2dez" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/CandiceJoy"><img src="https://avatars.githubusercontent.com/u/8854890?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Candice</b></sub></a><br /><a href="#financial-CandiceJoy" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/kingrowen"><img src="https://avatars.githubusercontent.com/u/13178700?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rowen Willabus</b></sub></a><br /><a href="#financial-kingrowen" title="Financial">💵</a></td>
<td align="center"><a href="https://hengy1.top/"><img src="https://avatars.githubusercontent.com/u/98681454?v=4?s=100" width="100px;" alt=""/><br /><sub><b>HengY1Coding✨</b></sub></a><br /><a href="#financial-HengY1Sky" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/FrancisHG"><img src="https://avatars.githubusercontent.com/u/1611626?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Francis Gelderloos</b></sub></a><br /><a href="#financial-FrancisHG" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/astromasoud"><img src="https://avatars.githubusercontent.com/u/18737721?v=4?s=100" width="100px;" alt=""/><br /><sub><b>astromasoud</b></sub></a><br /><a href="#financial-astromasoud" title="Financial">💵</a></td>
<td align="center"><a href="https://spirit55555.dk/"><img src="https://avatars.githubusercontent.com/u/2357565?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anders G. Jørgensen</b></sub></a><br /><a href="#financial-Spirit55555" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/djradon"><img src="https://avatars.githubusercontent.com/u/5224156?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dave Richardson</b></sub></a><br /><a href="#financial-djradon" title="Financial">💵</a></td>
<td align="center"><a href="https://twitter.com/tpberntsen"><img src="https://avatars.githubusercontent.com/u/922318?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Thomas Peter Berntsen</b></sub></a><br /><a href="#financial-tpberntsen" title="Financial">💵</a></td>
<td align="center"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=eltociear" title="Documentation">📖</a></td>
</tr>
</table>

View File

@@ -21,7 +21,7 @@
<br/>
<p align="center">
本 README 还适用于以下语言: <a href="./README.ru-RU.md">Русский</a> <a href="./README.ko-KR.md">한국어</a> <a href="./README.zh-CN.md">简体中文</a>
本 README 还适用于以下语言: <a href="./README.md">:gb: English</a> · <a href="./README.ru-RU.md">:ru: Русский</a> · <a href="./README.ko-KR.md">:kr: 한국어</a> · <a href="./README.it-IT.md">:it: Italiano</a> · <a href="./README.de-DE.md">:de: Deutsch</a> · <a href="./README.ja-JP.md">:jp: 日本語</a>
</p>
----
@@ -44,7 +44,7 @@
# 目录 <!-- omit in toc -->
- [Tabby的正确用途](#tabby的正确用途)
- [Tabby是什么](#tabby是什么)
- [终端特性](#终端特性)
- [SSH 客户端](#ssh-客户端)
- [串行终端](#串行终端)
@@ -55,7 +55,7 @@
<a name="about"></a>
# Tabby的正确用途
# Tabby是什么
* **Tabby 是** Windows 标准终端 (conhost)、PowerShell ISE、PuTTY、macOS Terminal.app 和 iTerm 的替代品
@@ -240,6 +240,37 @@
</tr>
<tr>
<td align="center"><a href="http://microhobby.com.br/blog"><img src="https://avatars.githubusercontent.com/u/2633321?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matheus Castello</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=microhobby" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Jai-JAP"><img src="https://avatars.githubusercontent.com/u/78354625?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jai A P</b></sub></a><br /><a href="#platform-Jai-JAP" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://blog.ysc3839.com"><img src="https://avatars.githubusercontent.com/u/12028138?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Richard Yu</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ysc3839" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/artu-ole"><img src="https://avatars.githubusercontent.com/u/15938416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>artu-ole</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=artu-ole" title="Code">💻</a></td>
<td align="center"><a href="https://timagribanov.github.io/"><img src="https://avatars.githubusercontent.com/u/48593815?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Timofey Gribanov</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TimaGribanov" title="Documentation">📖</a> <a href="#translation-TimaGribanov" title="Translation">🌍</a></td>
<td align="center"><a href="https://git.christianbingman.com"><img src="https://avatars.githubusercontent.com/u/42191425?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christian Bingman</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ChristianBingman" title="Code">💻</a></td>
<td align="center"><a href="http://zhangzhipeng2023.cn/"><img src="https://avatars.githubusercontent.com/u/5310853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zhipeng</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Ox0400" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/woodmeal"><img src="https://avatars.githubusercontent.com/u/104011197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>woodmeal</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=woodmeal" title="Code">💻</a></td>
<td align="center"><a href="https://magiclike.codeberg.page/"><img src="https://avatars.githubusercontent.com/u/82117109?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MagicLike</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=MagicLike" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/hisamafahri"><img src="https://avatars.githubusercontent.com/u/65691613?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hisam Fahri</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hisamafahri" title="Code">💻</a></td>
<td align="center"><a href="https://liangchengj.com"><img src="https://avatars.githubusercontent.com/u/48881023?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Liangcheng Juves</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=LiangchengJ" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/attet"><img src="https://avatars.githubusercontent.com/u/1911416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atte Timonen</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=attet" title="Code">💻</a></td>
<td align="center"><a href="https://www.linkedin.com/in/joaolmpinto/"><img src="https://avatars.githubusercontent.com/u/1143125?v=4?s=100" width="100px;" alt=""/><br /><sub><b>João Pinto</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=joaompinto" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Qiming-Liu"><img src="https://avatars.githubusercontent.com/u/68600416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alan</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Qiming-Liu" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://74th.tech/"><img src="https://avatars.githubusercontent.com/u/1060011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Atsushi Morimoto</b></sub></a><br /><a href="#financial-74th" title="Financial">💵</a></td>
<td align="center"><a href="https://arles.red/"><img src="https://avatars.githubusercontent.com/u/5369096?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Arles</b></sub></a><br /><a href="#financial-aarles" title="Financial">💵</a></td>
<td align="center"><a href="https://pentestbook.six2dez.com/"><img src="https://avatars.githubusercontent.com/u/24670991?v=4?s=100" width="100px;" alt=""/><br /><sub><b>six2dez</b></sub></a><br /><a href="#financial-six2dez" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/CandiceJoy"><img src="https://avatars.githubusercontent.com/u/8854890?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Candice</b></sub></a><br /><a href="#financial-CandiceJoy" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/kingrowen"><img src="https://avatars.githubusercontent.com/u/13178700?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rowen Willabus</b></sub></a><br /><a href="#financial-kingrowen" title="Financial">💵</a></td>
<td align="center"><a href="https://hengy1.top/"><img src="https://avatars.githubusercontent.com/u/98681454?v=4?s=100" width="100px;" alt=""/><br /><sub><b>HengY1Coding✨</b></sub></a><br /><a href="#financial-HengY1Sky" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/FrancisHG"><img src="https://avatars.githubusercontent.com/u/1611626?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Francis Gelderloos</b></sub></a><br /><a href="#financial-FrancisHG" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/astromasoud"><img src="https://avatars.githubusercontent.com/u/18737721?v=4?s=100" width="100px;" alt=""/><br /><sub><b>astromasoud</b></sub></a><br /><a href="#financial-astromasoud" title="Financial">💵</a></td>
<td align="center"><a href="https://spirit55555.dk/"><img src="https://avatars.githubusercontent.com/u/2357565?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anders G. Jørgensen</b></sub></a><br /><a href="#financial-Spirit55555" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/djradon"><img src="https://avatars.githubusercontent.com/u/5224156?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dave Richardson</b></sub></a><br /><a href="#financial-djradon" title="Financial">💵</a></td>
<td align="center"><a href="https://twitter.com/tpberntsen"><img src="https://avatars.githubusercontent.com/u/922318?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Thomas Peter Berntsen</b></sub></a><br /><a href="#financial-tpberntsen" title="Financial">💵</a></td>
<td align="center"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=eltociear" title="Documentation">📖</a></td>
</tr>
</table>

View File

@@ -1,4 +1,4 @@
import { app, ipcMain, Menu, Tray, shell, screen, globalShortcut, MenuItemConstructorOptions } from 'electron'
import { app, ipcMain, Menu, Tray, shell, screen, globalShortcut, MenuItemConstructorOptions, WebContents } from 'electron'
import promiseIpc from 'electron-promise-ipc'
import * as remote from '@electron/remote/main'
import { exec } from 'mz/child_process'
@@ -6,7 +6,7 @@ import * as path from 'path'
import * as fs from 'fs'
import { Subject, throttleTime } from 'rxjs'
import { loadConfig } from './config'
import { saveConfig } from './config'
import { Window, WindowOptions } from './window'
import { pluginManager } from './pluginManager'
import { PTYManager } from './pty'
@@ -23,17 +23,17 @@ export class Application {
private windows: Window[] = []
private globalHotkey$ = new Subject<void>()
private quitRequested = false
private configStore: any
userPluginsPath: string
constructor () {
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
constructor (private configStore: any) {
remote.initialize()
this.useBuiltinGraphics()
this.ptyManager.init(this)
ipcMain.on('app:config-change', (_event, config) => {
this.broadcast('host:config-change', config)
this.configStore = config
ipcMain.on('app:save-config', async (event, config) => {
await saveConfig(config)
this.broadcastExcept('host:config-change', event.sender, config)
})
ipcMain.on('app:register-global-hotkey', (_event, specs) => {
@@ -63,7 +63,6 @@ export class Application {
}
})
this.configStore = loadConfig()
if (process.platform === 'linux') {
app.commandLine.appendSwitch('no-sandbox')
if (((this.configStore.appearance || {}).opacity || 1) !== 1) {
@@ -111,7 +110,7 @@ export class Application {
}
async newWindow (options?: WindowOptions): Promise<Window> {
const window = new Window(this, options)
const window = new Window(this, this.configStore, options)
this.windows.push(window)
if (this.windows.length === 1){
window.makeMain()
@@ -168,6 +167,14 @@ export class Application {
}
}
broadcastExcept (event: string, except: WebContents, ...args: any[]): void {
for (const window of this.windows) {
if (window.webContents.id === except.id) {
window.send(event, ...args)
}
}
}
async send (event: string, ...args: any[]): Promise<void> {
if (!this.hasWindows()) {
await this.newWindow()
@@ -218,7 +225,10 @@ export class Application {
}
}
handleSecondInstance (argv: string[], cwd: string): void {
async handleSecondInstance (argv: string[], cwd: string): Promise<void> {
if (!this.windows.length) {
await this.newWindow()
}
this.presentAllWindows()
this.windows[this.windows.length - 1].passCliArguments(argv, cwd, true)
}

View File

@@ -1,7 +1,9 @@
import * as fs from 'fs'
import * as fs from 'mz/fs'
import * as path from 'path'
import * as yaml from 'js-yaml'
import { app } from 'electron'
import { writeFile } from 'atomically'
export function migrateConfig (): void {
const configPath = path.join(app.getPath('userData'), 'config.yaml')
@@ -24,3 +26,10 @@ export function loadConfig (): any {
return {}
}
}
const configPath = path.join(app.getPath('userData'), 'config.yaml')
export async function saveConfig (content: string): Promise<void> {
await writeFile(configPath, content, { encoding: 'utf8' })
await writeFile(configPath + '.backup', content, { encoding: 'utf8' })
}

View File

@@ -3,45 +3,39 @@ import './portable'
import 'source-map-support/register'
import './sentry'
import './lru'
import { app, ipcMain, Menu } from 'electron'
import { app, ipcMain, Menu, dialog } from 'electron'
import { parseArgs } from './cli'
import { Application } from './app'
import electronDebug = require('electron-debug')
import { loadConfig } from './config'
if (!process.env.TABBY_PLUGINS) {
process.env.TABBY_PLUGINS = ''
}
const application = new Application()
const argv = parseArgs(process.argv, process.cwd())
// eslint-disable-next-line @typescript-eslint/init-declarations
let configStore: any
try {
configStore = loadConfig()
} catch (err) {
dialog.showErrorBox('Could not read config', err.message)
app.exit(1)
}
const application = new Application(configStore)
ipcMain.on('app:new-window', () => {
application.newWindow()
})
app.on('activate', () => {
if (!application.hasWindows()) {
application.newWindow()
} else {
application.focus()
}
})
process.on('uncaughtException' as any, err => {
console.log(err)
application.broadcast('uncaughtException', err)
})
app.on('second-instance', (_event, argv, cwd) => {
application.handleSecondInstance(argv, cwd)
})
const argv = parseArgs(process.argv, process.cwd())
if (!app.requestSingleInstanceLock()) {
app.quit()
app.exit(0)
}
if (argv.d) {
electronDebug({
isEnabled: true,
@@ -50,6 +44,23 @@ if (argv.d) {
})
}
app.on('activate', async () => {
if (!application.hasWindows()) {
application.newWindow()
} else {
application.focus()
}
})
app.on('second-instance', async (_event, newArgv, cwd) => {
application.handleSecondInstance(newArgv, cwd)
})
if (!app.requestSingleInstanceLock()) {
app.quit()
app.exit(0)
}
app.on('ready', async () => {
if (process.platform === 'darwin') {
app.dock.setMenu(Menu.buildFromTemplate([
@@ -61,9 +72,11 @@ app.on('ready', async () => {
},
]))
}
application.init()
const window = await application.newWindow({ hidden: argv.hidden })
await window.ready
window.passCliArguments(process.argv, process.cwd(), false)
window.focus()
})

View File

@@ -1,7 +1,7 @@
import * as glasstron from 'glasstron'
import { Subject, Observable, debounceTime } from 'rxjs'
import { BrowserWindow, app, ipcMain, Rectangle, Menu, screen, BrowserWindowConstructorOptions, TouchBar, nativeImage } from 'electron'
import { BrowserWindow, app, ipcMain, Rectangle, Menu, screen, BrowserWindowConstructorOptions, TouchBar, nativeImage, WebContents } from 'electron'
import ElectronConfig = require('electron-config')
import { enable as enableRemote } from '@electron/remote/main'
import * as os from 'os'
@@ -11,7 +11,6 @@ import { compare as compareVersions } from 'compare-versions'
import type { Application } from './app'
import { parseArgs } from './cli'
import { loadConfig } from './config'
let DwmEnableBlurBehindWindow: any = null
if (process.platform === 'win32') {
@@ -27,13 +26,14 @@ abstract class GlasstronWindow extends BrowserWindow {
abstract setBlur (_: boolean)
}
const macOSVibrancyType = process.platform === 'darwin' ? compareVersions(macOSRelease().version, '10.14', '>=') ? 'under-window' : 'dark' : null
const macOSVibrancyType = process.platform === 'darwin' ? compareVersions(macOSRelease().version || '0.0', '10.14', '>=') ? 'under-window' : 'dark' : null
const activityIcon = nativeImage.createFromPath(`${app.getAppPath()}/assets/activity.png`)
export class Window {
ready: Promise<void>
isMainWindow = false
webContents: WebContents
private visible = new Subject<boolean>()
private closed = new Subject<void>()
private window?: GlasstronWindow
@@ -42,7 +42,6 @@ export class Window {
private closing = false
private lastVibrancy: { enabled: boolean, type?: string } | null = null
private disableVibrancyWhileDragging = false
private configStore: any
private touchBarControl: any
private isFluentVibrancy = false
private dockHidden = false
@@ -50,9 +49,8 @@ export class Window {
get visible$ (): Observable<boolean> { return this.visible }
get closed$ (): Observable<void> { return this.closed }
constructor (private application: Application, options?: WindowOptions) {
this.configStore = loadConfig()
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
constructor (private application: Application, private configStore: any, options?: WindowOptions) {
options = options ?? {}
this.windowConfig = new ElectronConfig({ name: 'window' })
@@ -75,6 +73,7 @@ export class Window {
frame: false,
show: false,
backgroundColor: '#00000000',
acceptFirstMouse: true,
}
if (this.windowBounds) {
@@ -104,6 +103,8 @@ export class Window {
this.window = new glasstron.BrowserWindow(bwOptions)
}
this.webContents = this.window.webContents
this.window.once('ready-to-show', () => {
if (process.platform === 'darwin') {
this.window.setVibrancy(macOSVibrancyType)
@@ -182,7 +183,7 @@ export class Window {
console.error('Failed to set window blur', error)
}
} else {
DwmEnableBlurBehindWindow(this.window, enabled)
DwmEnableBlurBehindWindow(this.window.getNativeWindowHandle(), enabled)
}
} else if (process.platform === 'linux') {
this.window.setBackgroundColor(enabled ? '#00000000' : '#131d27')
@@ -415,7 +416,7 @@ export class Window {
this.window.webContents.on('new-window', event => event.preventDefault())
ipcMain.on('window-set-disable-vibrancy-while-dragging', (_event, value) => {
this.disableVibrancyWhileDragging = value && this.configStore.hacks.disableVibrancyWhileDragging
this.disableVibrancyWhileDragging = value && this.configStore.hacks?.disableVibrancyWhileDragging
})
let moveEndedTimeout: any = null

View File

@@ -21,7 +21,7 @@
"electron-config": "2.0.0",
"electron-debug": "^3.2.0",
"electron-promise-ipc": "^2.2.4",
"electron-updater": "^4.6.5",
"electron-updater": "^5.0.5",
"fontmanager-redux": "1.1.0",
"glasstron": "0.1.1",
"js-yaml": "4.1.0",
@@ -36,15 +36,16 @@
},
"optionalDependencies": {
"@tabby-gang/windows-blurbehind": "^3.0.0",
"macos-native-processlist": "^2.0.0",
"macos-native-processlist": "^2.1.0",
"serialport": "10.4.0",
"serialport-binding-webserialapi": "^1.0.3",
"windows-native-registry": "^3.2.1",
"windows-process-tree": "^0.3.2"
"windows-process-tree": "^0.3.3"
},
"devDependencies": {
"@types/mz": "2.7.4",
"@types/node": "16.0.1",
"atomically": "^1.7.0",
"ngx-filesize": "^2.0.16",
"patch-package": "^6.4.7"
},

View File

@@ -0,0 +1,327 @@
diff --git a/node_modules/@serialport/bindings-cpp/src/serialport_win.cpp b/node_modules/@serialport/bindings-cpp/src/serialport_win.cpp
index b11c07f..910023e 100644
--- a/node_modules/@serialport/bindings-cpp/src/serialport_win.cpp
+++ b/node_modules/@serialport/bindings-cpp/src/serialport_win.cpp
@@ -10,6 +10,7 @@
#include <initguid.h>
#include <devpkey.h>
#include <devguid.h>
+#include <wchar.h>
#pragma comment(lib, "setupapi.lib")
#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))
@@ -25,6 +26,29 @@ typedef BOOL (WINAPI *CancelIoExType)(HANDLE hFile, LPOVERLAPPED lpOverlapped);
std::list<int> g_closingHandles;
+void ErrorCodeToString(const wchar_t* prefix, int errorCode, wchar_t *errorStr) {
+ switch (errorCode) {
+ case ERROR_FILE_NOT_FOUND:
+ _snwprintf_s(errorStr, ERROR_STRING_SIZE, _TRUNCATE, L"%ls: File not found", prefix);
+ break;
+ case ERROR_INVALID_HANDLE:
+ _snwprintf_s(errorStr, ERROR_STRING_SIZE, _TRUNCATE, L"%ls: Invalid handle", prefix);
+ break;
+ case ERROR_ACCESS_DENIED:
+ _snwprintf_s(errorStr, ERROR_STRING_SIZE, _TRUNCATE, L"%ls: Access denied", prefix);
+ break;
+ case ERROR_OPERATION_ABORTED:
+ _snwprintf_s(errorStr, ERROR_STRING_SIZE, _TRUNCATE, L"%ls: Operation aborted", prefix);
+ break;
+ case ERROR_INVALID_PARAMETER:
+ _snwprintf_s(errorStr, ERROR_STRING_SIZE, _TRUNCATE, L"%ls: The parameter is incorrect %d", prefix, errorCode);
+ break;
+ default:
+ _snwprintf_s(errorStr, ERROR_STRING_SIZE, _TRUNCATE, L"%ls: Unknown error code %d", prefix, errorCode);
+ break;
+ }
+}
+
void ErrorCodeToString(const char* prefix, int errorCode, char *errorStr) {
switch (errorCode) {
case ERROR_FILE_NOT_FOUND:
@@ -608,9 +632,9 @@ void CloseBaton::Execute() {
}
}
-char *copySubstring(char *someString, int n) {
- char *new_ = reinterpret_cast<char*>(malloc(sizeof(char)*n + 1));
- strncpy_s(new_, n + 1, someString, n);
+wchar_t *copySubstring(wchar_t *someString, int n) {
+ wchar_t *new_ = reinterpret_cast<wchar_t*>(malloc(sizeof(wchar_t)*n + 1));
+ wcsncpy_s(new_, n + 1, someString, n);
new_[n] = '\0';
return new_;
}
@@ -625,7 +649,7 @@ Napi::Value List(const Napi::CallbackInfo& info) {
Napi::Function callback = info[0].As<Napi::Function>();
ListBaton* baton = new ListBaton(callback);
- snprintf(baton->errorString, sizeof(baton->errorString), "");
+ _snwprintf(baton->errorString, sizeof(baton->errorString), L"");
baton->Queue();
return env.Undefined();
@@ -633,20 +657,20 @@ Napi::Value List(const Napi::CallbackInfo& info) {
// It's possible that the s/n is a construct and not the s/n of the parent USB
// composite device. This performs some convoluted registry lookups to fetch the USB s/n.
-void getSerialNumber(const char *vid,
- const char *pid,
+void getSerialNumber(const wchar_t *vid,
+ const wchar_t *pid,
const HDEVINFO hDevInfo,
SP_DEVINFO_DATA deviceInfoData,
const unsigned int maxSerialNumberLength,
- char* serialNumber) {
- _snprintf_s(serialNumber, maxSerialNumberLength, _TRUNCATE, "");
+ wchar_t* serialNumber) {
+ _snwprintf_s(serialNumber, maxSerialNumberLength, _TRUNCATE, L"");
if (vid == NULL || pid == NULL) {
return;
}
DWORD dwSize;
WCHAR szWUuidBuffer[MAX_BUFFER_SIZE];
- WCHAR containerUuid[MAX_BUFFER_SIZE];
+ WCHAR wantedUuid[MAX_BUFFER_SIZE];
// Fetch the "Container ID" for this device node. In USB context, this "Container
@@ -683,7 +707,7 @@ void getSerialNumber(const char *vid,
// Given the UUID bytes, build up a (widechar) string from it. There's some mangling
// going on.
- StringFromGUID2((REFGUID)szWUuidBuffer, containerUuid, ARRAY_SIZE(containerUuid));
+ StringFromGUID2((REFGUID)szWUuidBuffer, wantedUuid, ARRAY_SIZE(wantedUuid));
} else {
// Container UUID could not be fetched, return empty serial number.
return;
@@ -693,21 +717,15 @@ void getSerialNumber(const char *vid,
// This means they're non-removable, and are not handled (yet).
// Maybe they should inherit the s/n from somewhere else.
- // Sanitize input - for whatever reason, StringFromGUID2() returns a WCHAR* but
- // the comparisons later need a plain old char*, in lowercase ASCII.
- char wantedUuid[MAX_BUFFER_SIZE];
- _snprintf_s(wantedUuid, MAX_BUFFER_SIZE, _TRUNCATE, "%ws", containerUuid);
- strlwr(wantedUuid);
-
// Iterate through all the USB devices with the given VendorID/ProductID
HKEY vendorProductHKey;
DWORD retCode;
- char hkeyPath[MAX_BUFFER_SIZE];
+ wchar_t hkeyPath[MAX_BUFFER_SIZE];
- _snprintf_s(hkeyPath, MAX_BUFFER_SIZE, _TRUNCATE, "SYSTEM\\CurrentControlSet\\Enum\\USB\\VID_%s&PID_%s", vid, pid);
+ _snwprintf_s(hkeyPath, MAX_BUFFER_SIZE, _TRUNCATE, L"SYSTEM\\CurrentControlSet\\Enum\\USB\\VID_%s&PID_%s", vid, pid);
- retCode = RegOpenKeyEx(
+ retCode = RegOpenKeyExW(
HKEY_LOCAL_MACHINE,
hkeyPath,
0,
@@ -739,9 +757,9 @@ void getSerialNumber(const char *vid,
// Each of the subkeys here is the serial number of a USB device with the
// given VendorId/ProductId. Now fetch the string for the S/N.
DWORD serialNumberLength = maxSerialNumberLength;
- retCode = RegEnumKeyEx(vendorProductHKey,
+ retCode = RegEnumKeyExW(vendorProductHKey,
i,
- serialNumber,
+ reinterpret_cast<LPWSTR>(serialNumber),
&serialNumberLength,
NULL,
NULL,
@@ -751,21 +769,21 @@ void getSerialNumber(const char *vid,
if (retCode == ERROR_SUCCESS) {
// Lookup info for VID_(vendorId)&PID_(productId)\(serialnumber)
- _snprintf_s(hkeyPath, MAX_BUFFER_SIZE, _TRUNCATE,
- "SYSTEM\\CurrentControlSet\\Enum\\USB\\VID_%s&PID_%s\\%s",
+ _snwprintf_s(hkeyPath, MAX_BUFFER_SIZE, _TRUNCATE,
+ L"SYSTEM\\CurrentControlSet\\Enum\\USB\\VID_%ls&PID_%ls\\%ls",
vid, pid, serialNumber);
HKEY deviceHKey;
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, hkeyPath, 0, KEY_READ, &deviceHKey) == ERROR_SUCCESS) {
- char readUuid[MAX_BUFFER_SIZE];
+ if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, hkeyPath, 0, KEY_READ, &deviceHKey) == ERROR_SUCCESS) {
+ wchar_t readUuid[MAX_BUFFER_SIZE];
DWORD readSize = sizeof(readUuid);
// Query VID_(vendorId)&PID_(productId)\(serialnumber)\ContainerID
- retCode = RegQueryValueEx(deviceHKey, "ContainerID", NULL, NULL, (LPBYTE)&readUuid, &readSize);
+ retCode = RegQueryValueExW(deviceHKey, L"ContainerID", NULL, NULL, (LPBYTE)&readUuid, &readSize);
if (retCode == ERROR_SUCCESS) {
readUuid[readSize] = '\0';
- if (strcmp(wantedUuid, readUuid) == 0) {
+ if (wcscmp(wantedUuid, readUuid) == 0) {
// The ContainerID UUIDs match, return now that serialNumber has
// the right value.
RegCloseKey(deviceHKey);
@@ -783,7 +801,7 @@ void getSerialNumber(const char *vid,
RegCloseKey(vendorProductHKey);
}
- _snprintf_s(serialNumber, maxSerialNumberLength, _TRUNCATE, "");
+ _snwprintf_s(serialNumber, maxSerialNumberLength, _TRUNCATE, L"");
return;
}
@@ -795,15 +813,15 @@ void ListBaton::Execute() {
int memberIndex = 0;
DWORD dwSize, dwPropertyRegDataType;
- char szBuffer[MAX_BUFFER_SIZE];
- char *pnpId;
- char *vendorId;
- char *productId;
- char *name;
- char *manufacturer;
- char *locationId;
- char *friendlyName;
- char serialNumber[MAX_REGISTRY_KEY_SIZE];
+ wchar_t szBuffer[MAX_BUFFER_SIZE];
+ wchar_t *pnpId;
+ wchar_t *vendorId;
+ wchar_t *productId;
+ wchar_t *name;
+ wchar_t *manufacturer;
+ wchar_t *locationId;
+ wchar_t *friendlyName;
+ wchar_t serialNumber[MAX_REGISTRY_KEY_SIZE];
bool isCom;
while (true) {
isCom = false;
@@ -814,7 +832,6 @@ void ListBaton::Execute() {
manufacturer = NULL;
locationId = NULL;
friendlyName = NULL;
- isCom = false;
ZeroMemory(&deviceInfoData, sizeof(SP_DEVINFO_DATA));
deviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
@@ -826,16 +843,16 @@ void ListBaton::Execute() {
}
dwSize = sizeof(szBuffer);
- SetupDiGetDeviceInstanceId(hDevInfo, &deviceInfoData, szBuffer, dwSize, &dwSize);
+ SetupDiGetDeviceInstanceIdW(hDevInfo, &deviceInfoData, reinterpret_cast<PWSTR>(szBuffer), dwSize, &dwSize);
szBuffer[dwSize] = '\0';
- pnpId = strdup(szBuffer);
+ pnpId = wcsdup(szBuffer);
- vendorId = strstr(szBuffer, "VID_");
+ vendorId = wcsstr(szBuffer, L"VID_");
if (vendorId) {
vendorId += 4;
vendorId = copySubstring(vendorId, 4);
}
- productId = strstr(szBuffer, "PID_");
+ productId = wcsstr(szBuffer, L"PID_");
if (productId) {
productId += 4;
productId = copySubstring(productId, 4);
@@ -843,32 +860,29 @@ void ListBaton::Execute() {
getSerialNumber(vendorId, productId, hDevInfo, deviceInfoData, MAX_REGISTRY_KEY_SIZE, serialNumber);
- if (SetupDiGetDeviceRegistryProperty(hDevInfo, &deviceInfoData,
+ if (SetupDiGetDeviceRegistryPropertyW(hDevInfo, &deviceInfoData,
SPDRP_LOCATION_INFORMATION, &dwPropertyRegDataType,
- reinterpret_cast<BYTE*>(szBuffer),
- sizeof(szBuffer), &dwSize)) {
- locationId = strdup(szBuffer);
+ reinterpret_cast<PBYTE>(szBuffer), sizeof(szBuffer), &dwSize)) {
+ locationId = wcsdup(szBuffer);
}
- if (SetupDiGetDeviceRegistryProperty(hDevInfo, &deviceInfoData,
+ if (SetupDiGetDeviceRegistryPropertyW(hDevInfo, &deviceInfoData,
SPDRP_FRIENDLYNAME, &dwPropertyRegDataType,
- reinterpret_cast<BYTE*>(szBuffer),
- sizeof(szBuffer), &dwSize)) {
- friendlyName = strdup(szBuffer);
+ reinterpret_cast<PBYTE>(szBuffer), sizeof(szBuffer), &dwSize)) {
+ friendlyName = wcsdup(szBuffer);
}
- if (SetupDiGetDeviceRegistryProperty(hDevInfo, &deviceInfoData,
+ if (SetupDiGetDeviceRegistryPropertyW(hDevInfo, &deviceInfoData,
SPDRP_MFG, &dwPropertyRegDataType,
- reinterpret_cast<BYTE*>(szBuffer),
- sizeof(szBuffer), &dwSize)) {
- manufacturer = strdup(szBuffer);
+ reinterpret_cast<PBYTE>(szBuffer), sizeof(szBuffer), &dwSize)) {
+ manufacturer = wcsdup(szBuffer);
}
HKEY hkey = SetupDiOpenDevRegKey(hDevInfo, &deviceInfoData, DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ);
if (hkey != INVALID_HANDLE_VALUE) {
dwSize = sizeof(szBuffer);
- if (RegQueryValueEx(hkey, "PortName", NULL, NULL, (LPBYTE)&szBuffer, &dwSize) == ERROR_SUCCESS) {
+ if (RegQueryValueExW(hkey, L"PortName", NULL, NULL, (LPBYTE)&szBuffer, &dwSize) == ERROR_SUCCESS) {
+ name = wcsdup(szBuffer);
szBuffer[dwSize] = '\0';
- name = strdup(szBuffer);
- isCom = strstr(szBuffer, "COM") != NULL;
+ isCom = wcsstr(szBuffer, L"COM") != NULL;
}
}
if (isCom) {
@@ -916,6 +930,16 @@ void setIfNotEmpty(Napi::Object item, std::string key, const char *value) {
}
}
+void setIfNotEmpty(Napi::Object item, std::string key, const wchar_t *value) {
+ Napi::Env env = item.Env();
+ Napi::String v8key = Napi::String::New(env, key);
+ if (wcslen(value) > 0) {
+ (item).Set(v8key, Napi::String::New(env, (const char16_t*) value));
+ } else {
+ (item).Set(v8key, env.Undefined());
+ }
+}
+
void FlushBaton::Execute() {
DWORD purge_all = PURGE_RXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR;
if (!PurgeComm(int2handle(fd), purge_all)) {
diff --git a/node_modules/@serialport/bindings-cpp/src/serialport_win.h b/node_modules/@serialport/bindings-cpp/src/serialport_win.h
index f3e3c32..739b5dd 100644
--- a/node_modules/@serialport/bindings-cpp/src/serialport_win.h
+++ b/node_modules/@serialport/bindings-cpp/src/serialport_win.h
@@ -47,23 +47,24 @@ Napi::Value Read(const Napi::CallbackInfo& info);
Napi::Value List(const Napi::CallbackInfo& info);
void setIfNotEmpty(Napi::Object item, std::string key, const char *value);
+void setIfNotEmpty(Napi::Object item, std::string key, const wchar_t *value);
struct ListResultItem {
- std::string path;
- std::string manufacturer;
- std::string serialNumber;
- std::string pnpId;
- std::string locationId;
- std::string friendlyName;
- std::string vendorId;
- std::string productId;
+ std::wstring path;
+ std::wstring manufacturer;
+ std::wstring serialNumber;
+ std::wstring pnpId;
+ std::wstring locationId;
+ std::wstring friendlyName;
+ std::wstring vendorId;
+ std::wstring productId;
};
struct ListBaton : public Napi::AsyncWorker {
ListBaton(Napi::Function& callback) : Napi::AsyncWorker(callback, "node-serialport:ListBaton"),
errorString() {}
std::list<ListResultItem*> results;
- char errorString[ERROR_STRING_SIZE];
+ wchar_t errorString[ERROR_STRING_SIZE];
void Execute() override;
void OnOK() override {

View File

@@ -28,7 +28,11 @@ export function getRootModule (plugins: any[]) {
@NgModule({
imports,
bootstrap,
}) class RootModule { } // eslint-disable-line @typescript-eslint/no-extraneous-class
}) class RootModule {
ngDoBootstrap () {
(window as any)['requestAnimationFrame'] = window[window['Zone'].__symbol__('requestAnimationFrame')]
}
}
return RootModule
}

View File

@@ -310,6 +310,11 @@ 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==
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz"
@@ -404,12 +409,12 @@ buffer@^5.5.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
builder-util-runtime@8.9.2:
version "8.9.2"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz#a9669ae5b5dcabfe411ded26678e7ae997246c28"
integrity sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A==
builder-util-runtime@9.0.2:
version "9.0.2"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.0.2.tgz#dc54f8581bbcf1e0428da4483fa46d09524be857"
integrity sha512-xF55W/8mgfT6+sMbX0TeiJkTusA5GMOzckM4rajN4KirFcUIuLTH8oEaTYmM86YwVCZaTwa/7GyFhauXaEICwA==
dependencies:
debug "^4.3.2"
debug "^4.3.4"
sax "^1.2.4"
builtins@^1.0.3:
@@ -757,6 +762,13 @@ debug@^4.0.1, debug@^4.3.2, debug@^4.3.3:
dependencies:
ms "2.1.2"
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"
@@ -916,19 +928,20 @@ electron-promise-ipc@^2.2.4:
serialize-error "^5.0.0"
uuid "^3.0.1"
electron-updater@^4.6.5:
version "4.6.5"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.6.5.tgz#e9a75458bbfd6bb41a58a829839e150ad2eb2d3d"
integrity sha512-kdTly8O9mSZfm9fslc1mnCY+mYOeaYRy7ERa2Fed240u01BKll3aiupzkd07qKw69KvhBSzuHroIW3mF0D8DWA==
electron-updater@^5.0.5:
version "5.0.5"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-5.0.5.tgz#efc025a1777fc0a9c6f9f20ef70037b727e989fb"
integrity sha512-YcKEI9zpU+c0sNXTpjw3UpzP8Pfuuwo70T42oLYm0hHc0dy41ih51oENlhxgooa2+uzzpXhoCOyrpG+w6CB0Pw==
dependencies:
"@types/semver" "^7.3.6"
builder-util-runtime "8.9.2"
builder-util-runtime "9.0.2"
fs-extra "^10.0.0"
js-yaml "^4.1.0"
lazy-val "^1.0.5"
lodash.escaperegexp "^4.1.2"
lodash.isequal "^4.5.0"
semver "^7.3.5"
typed-emitter "^2.1.0"
emoji-regex@^7.0.1:
version "7.0.3"
@@ -2052,12 +2065,12 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
macos-native-processlist@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/macos-native-processlist/-/macos-native-processlist-2.0.0.tgz"
integrity sha512-ciW1n2jL+9f7+9xijMMVmVzRbpVlKjzMFmgpNricm5QKfkUTMEa1suR0pc9pQRrLea4sJtbLo0u+izzHDvkpIA==
macos-native-processlist@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/macos-native-processlist/-/macos-native-processlist-2.1.0.tgz#3ebfc0391083331bfa20acef01a45abd45b554dd"
integrity sha512-qXsNLedPaF7/vo26gOS6HyNvI8Oko5PgvezBsWwXkCFXQdU9+JOFDQvvRZ4WoPgUUkiV7a4PK7xbbkf8X6d/cQ==
dependencies:
node-addon-api "3.0.0"
node-addon-api "3.1.0"
make-dir@^1.0.0:
version "1.3.0"
@@ -2133,9 +2146,9 @@ minimatch@^3.0.4:
brace-expansion "^1.1.7"
minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
version "1.2.5"
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
minipass@^2.3.5, minipass@^2.6.0, minipass@^2.9.0:
version "2.9.0"
@@ -2265,12 +2278,7 @@ node-abi@^3.3.0:
dependencies:
semver "^7.3.5"
node-addon-api@3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz"
integrity sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==
node-addon-api@^3.0.2, node-addon-api@^3.1.0:
node-addon-api@3.1.0, node-addon-api@^3.0.2, node-addon-api@^3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz"
integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==
@@ -3196,7 +3204,7 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
rxjs@^7.5.5:
rxjs@^7.5.2, rxjs@^7.5.5:
version "7.5.5"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f"
integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==
@@ -3708,6 +3716,13 @@ type-fest@^0.8.0:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
typed-emitter@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/typed-emitter/-/typed-emitter-2.1.0.tgz#ca78e3d8ef1476f228f548d62e04e3d4d3fd77fb"
integrity sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==
optionalDependencies:
rxjs "^7.5.2"
typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
@@ -3885,10 +3900,10 @@ windows-native-registry@^3.2.1:
dependencies:
node-addon-api "^3.1.0"
windows-process-tree@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/windows-process-tree/-/windows-process-tree-0.3.2.tgz#8c39f39e7707e09fd74638a7ef644b5f389096d3"
integrity sha512-x8Y4KOV8tUhhPiO0TH7wOMTZ677rw7VEwq+dTuHHiLTClkrNXWSY3XzP6ez3fs2Cab4FajrtmiqRs0jTMZHfyw==
windows-process-tree@^0.3.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/windows-process-tree/-/windows-process-tree-0.3.3.tgz#7c178815f02bf4cfbcac1f93b2f3a3cc10bc9245"
integrity sha512-rkiAMP0AS27xikFyn7i4gPbOK16UdjY8X/C6eo37CnfNLqTvK2eEaT+Dh0e5xnvmlsi0lEKd60O+4ajzfDkq7A==
dependencies:
nan "^2.13.2"

View File

@@ -1,28 +0,0 @@
os: Visual Studio 2017
platform:
- x64
environment:
nodejs_version: "14"
version: "{build}"
install:
- ps: Install-Product node $env:nodejs_version $env:platform
- yarn
- node scripts/build-native.js
build_script:
- yarn run build
- node scripts/prepackage-plugins.js
- node scripts/build-windows.js
artifacts:
- path: 'dist\*.exe'
cache:
- node_modules
- "*\\node_modules"
- "%USERPROFILE%\\.electron"
- "%LOCALAPPDATA%\\Yarn"

View File

@@ -39,11 +39,11 @@ publish:
win:
icon: "./build/windows/icon.ico"
artifactName: tabby-${version}-portable.${ext}
artifactName: tabby-${version}-portable-${env.ARCH}.${ext}
rfc3161TimeStampServer: http://timestamp.sectigo.com
nsis:
oneClick: false
artifactName: tabby-${version}-setup.${ext}
artifactName: tabby-${version}-setup-${env.ARCH}.${ext}
installerIcon: "./build/windows/icon.ico"
allowToChangeInstallationDirectory: true
shortcutName: Tabby Terminal
@@ -68,7 +68,7 @@ mac:
linux:
category: "Utility;TerminalEmulator;System"
icon: "./build/icons"
artifactName: tabby-${version}-linux.${ext}
artifactName: tabby-${version}-linux-${env.ARCH}.${ext}
executableArgs:
- "--no-sandbox"
desktop:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2315
locale/en-GB.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2315
locale/id-ID.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2315
locale/ko-KR.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2315
locale/pt-BR.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2315
locale/uk-UA.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,14 +4,15 @@
"@angular/cdk": "^12.2.9",
"@angular/common": "^12.0.0",
"@angular/compiler": "^12.0.0",
"@angular/compiler-cli": "^12.0.0",
"@angular/core": "^12.0.0",
"@angular/forms": "^12.0.0",
"@angular/platform-browser": "^12.0.0",
"@angular/platform-browser-dynamic": "^12.0.0",
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
"@fortawesome/fontawesome-free": "^6.0.0",
"@fortawesome/fontawesome-free": "^6.1.1",
"@ng-bootstrap/ng-bootstrap": "^10.0.0",
"@sentry/cli": "^1.73.0",
"@sentry/cli": "^1.74.3",
"@sentry/electron": "^2.5.4",
"@tabby-gang/to-string-loader": "^1.1.7-beta.2",
"@types/deep-equal": "1.0.1",
@@ -25,7 +26,7 @@
"@typescript-eslint/eslint-plugin": "^4.33.0",
"@typescript-eslint/parser": "^4.33.0",
"apply-loader": "2.0.0",
"axios": "^0.26.1",
"axios": "^0.27.2",
"browserify-sign": "^4.2.1",
"clone-deep": "^4.0.1",
"compare-versions": "^4",
@@ -34,26 +35,25 @@
"cross-env": "7.0.3",
"css-loader": "^6.7.1",
"deep-equal": "2.0.5",
"electron": "17.1.2",
"electron-builder": "^22.14.13",
"electron": "19.0.6",
"electron-builder": "^23.0.9",
"electron-download": "^4.1.1",
"electron-installer-snap": "^5.1.0",
"electron-notarize": "^1.1.1",
"electron-notarize": "^1.2.1",
"electron-rebuild": "^3.2.7",
"eslint": "^7.32.0",
"file-loader": "^6.2.0",
"gettext-extractor": "^3.5.4",
"graceful-fs": "^4.2.9",
"graceful-fs": "^4.2.10",
"html-loader": "3.1.0",
"json-loader": "^0.5.7",
"thenby": "^1.3.4",
"lru-cache": "^6.0.0",
"macos-release": "^3.0.1",
"macos-release": "^3.1.0",
"ngx-sortablejs": "^11.1.0",
"ngx-toastr": "^14.0.0",
"node-abi": "^3.8.0",
"node-abi": "^3.15.0",
"node-sass": "^7.0.1",
"npmlog": "6.0.0",
"npmlog": "6.0.2",
"npx": "^10.2.2",
"patch-package": "^6.4.7",
"po-gettext-loader": "^1.0.0",
@@ -68,20 +68,21 @@
"shell-quote": "^1.7.3",
"shelljs": "0.8.5",
"slugify": "^1.6.5",
"sortablejs": "^1.14.0",
"sortablejs": "^1.15.0",
"source-code-pro": "^2.38.0",
"source-map-loader": "^3.0.1",
"source-sans-pro": "3.6.0",
"ssh2": "^1.7.0",
"ssh2": "Eugeny/ssh2#22735cecf1d9c118b2b8af1c2f80fe5b04996fe1",
"style-loader": "^3.3.1",
"svg-inline-loader": "^0.8.2",
"thenby": "^1.3.4",
"ts-loader": "^9.2.8",
"tslib": "^2.3.1",
"typedoc": "^0.22.13",
"typedoc": "^0.22.15",
"typescript": "^4.3.5",
"utils-decorators": "^1.10.4",
"val-loader": "4.0.0",
"webpack": "^5.70.0",
"webpack": "^5.72.1",
"webpack-bundle-analyzer": "^4.5.0",
"webpack-cli": "^4.9.2",
"yaml-loader": "0.6.0",
@@ -97,12 +98,12 @@
"build": "npm run build:typings && node scripts/build-modules.js",
"build:typings": "node scripts/build-typings.js",
"watch": "cross-env TABBY_DEV=1 webpack --progress --color --watch",
"start": "cross-env TABBY_DEV=1 electron app --debug --inspect",
"start": "cross-env TABBY_DEV=1 electron app -d --inspect",
"start:prod": "electron app --debug",
"prod": "cross-env TABBY_DEV=1 electron app",
"docs": "node scripts/build-docs.js",
"lint": "eslint --ext ts */src */lib",
"postinstall": "patch-package && node ./scripts/install-deps.js",
"postinstall": "patch-package && node ./scripts/install-deps.js && node ./scripts/build-native.js",
"i18n:pull": "crowdin pull --skip-untranslated-strings",
"i18n:extract": "node scripts/i18n-extract.js",
"i18n:push": "crowdin push"

View File

@@ -1,16 +1,25 @@
#!/usr/bin/env node
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
const builder = require('electron-builder').build
const vars = require('./vars')
const isTag = (process.env.GITHUB_REF || '').startsWith('refs/tags/')
process.env.ARCH = (process.env.ARCH || process.arch) === 'arm' ? 'armv7l' : process.env.ARCH || process.arch
builder({
dir: true,
linux: ['deb', 'tar.gz', 'rpm', 'pacman'],
armv7l: process.env.ARCH === 'armv7l',
arm64: process.env.ARCH === 'arm64',
config: {
extraMetadata: {
version: vars.version,
},
publish: {
provider: 'github',
channel: `latest-${process.arch}`,
},
},
publish: isTag ? 'always' : 'onTag',
publish: isTag ? 'always' : 'onTagOrDraft',
}).catch(() => process.exit(1))

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env node
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
const builder = require('electron-builder').build
const vars = require('./vars')
@@ -24,8 +25,12 @@ builder({
identity: !process.env.CI || process.env.CSC_LINK ? undefined : null,
},
npmRebuild: process.env.ARCH !== 'arm64',
publish: process.env.GH_TOKEN ? {
provider: 'github',
channel: `latest-${process.env.ARCH}`,
} : undefined,
},
publish: isTag ? 'always' : 'onTag',
publish: isTag ? 'always' : 'onTagOrDraft',
}).catch(e => {
console.error(e)
process.exit(1)

View File

@@ -3,12 +3,18 @@ const rebuild = require('electron-rebuild').default
const path = require('path')
const vars = require('./vars')
if (process.platform === 'win32' || process.platform === 'linux') {
process.env.ARCH = ((process.env.ARCH || process.arch) === 'arm') ? 'armv7l' : process.env.ARCH || process.arch
} else {
process.env.ARCH ??= process.arch
}
let lifecycles = []
for (let dir of ['app', 'tabby-core', 'tabby-local', 'tabby-ssh', 'tabby-terminal']) {
const build = rebuild({
buildPath: path.resolve(__dirname, '../' + dir),
electronVersion: vars.electronVersion,
arch: process.env.ARCH ?? process.arch,
arch: process.env.ARCH,
force: true,
})
build.catch(e => {

View File

@@ -1,17 +1,24 @@
#!/usr/bin/env node
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
const builder = require('electron-builder').build
const vars = require('./vars')
const isTag = (process.env.GITHUB_REF || process.env.BUILD_SOURCEBRANCH || '').startsWith('refs/tags/')
const isCI = !!process.env.GITHUB_REF
process.env.ARCH = process.env.ARCH || process.arch
builder({
dir: true,
win: ['nsis', 'zip'],
arm64: process.env.ARCH === 'arm64',
config: {
extraMetadata: {
version: vars.version,
},
publish: process.env.GH_TOKEN ? {
provider: 'github',
channel: `latest-${process.arch}`,
} : undefined,
},
publish: isTag ? 'always' : 'onTag',
publish: isTag ? 'always' : 'onTagOrDraft',
}).catch(() => process.exit(1))

View File

@@ -19,7 +19,6 @@ parts:
- libfontconfig-dev
override-build: |
yarn
./scripts/build-native.js
yarn run build
./scripts/build-linux.js
mkdir -p $SNAPCRAFT_PART_INSTALL/opt/tabby || true

View File

@@ -38,12 +38,6 @@ export abstract class HostAppService {
abstract newWindow (): void
/**
* Notifies other windows of config file changes
*/
// eslint-disable-next-line @typescript-eslint/no-empty-function
broadcastConfigChange (_configStore: Record<string, any>): void { }
// eslint-disable-next-line @typescript-eslint/no-empty-function
emitReady (): void { }

View File

@@ -56,5 +56,9 @@ export abstract class ProfileProvider<P extends Profile> {
return null
}
intoQuickConnectString (profile: P): string|null {
return null
}
deleteProfile (profile: P): void { }
}

View File

@@ -5,6 +5,7 @@ export interface SelectorOption<T> {
result?: T
icon?: string
freeInputPattern?: string
freeInputEquivalent?: string
color?: string
weight?: number
callback?: (string?) => void

View File

@@ -26,7 +26,7 @@ title-bar(
[tab]='tab',
[active]='tab == app.activeTab',
@animateTab,
[@.disabled]='hasVerticalTabs()',
[@.disabled]='hasVerticalTabs() || !config.store.accessibility.animations',
(click)='app.selectTab(tab)',
[class.fully-draggable]='hostApp.platform != Platform.macOS',
[class.drag-region]='hostApp.platform == Platform.macOS && !(app.tabDragActive$|async)',

View File

@@ -25,8 +25,8 @@ import { AppService, FileTransfer, HostWindowService, PlatformService, ToolbarBu
animations: [
trigger('animateTab', [
state('in', style({
'flex-basis': '200px',
width: '200px',
'flex-basis': 'auto',
width: 'auto',
})),
transition(':enter', [
style({
@@ -34,14 +34,14 @@ import { AppService, FileTransfer, HostWindowService, PlatformService, ToolbarBu
width: '1px',
}),
animate('250ms ease-in-out', style({
'flex-basis': '200px',
width: '200px',
'flex-basis': 'auto',
width: 'auto',
})),
]),
transition(':leave', [
style({
'flex-basis': '200px',
width: '200px',
'flex-basis': 'auto',
width: 'auto',
}),
animate('250ms ease-in-out', style({
'flex-basis': '1px',
@@ -112,6 +112,10 @@ export class AppRootComponent {
if (hotkey === 'duplicate-tab') {
this.app.duplicateTab(this.app.activeTab)
}
if (hotkey === 'restart-tab') {
this.app.duplicateTab(this.app.activeTab)
this.app.closeTab(this.app.activeTab, true)
}
if (hotkey === 'explode-tab' && this.app.activeTab instanceof SplitTabComponent) {
this.app.explodeTab(this.app.activeTab)
}

View File

@@ -22,5 +22,13 @@
[color]='option.color'
)
.title.mr-2 {{getOptionText(option)}}
.description.no-wrap.text-muted {{option.description}}
.no-wrap.badge.badge-secondary.text-muted.ml-auto(*ngIf='selectedIndex == i') Enter
.description.no-wrap.text-muted(
*ngIf='option.description !== getOptionText(option)'
) {{option.description}}
.ml-auto
.no-wrap.badge.badge-secondary.text-muted.ml-2(*ngIf='selectedIndex == i && canEditSelected()')
span Backspace
i.fas.fa-pencil.ml-1
.no-wrap.badge.badge-secondary.text-muted.ml-2(*ngIf='selectedIndex == i')
span Enter
i.fas.fa-arrow-right.ml-1

View File

@@ -27,7 +27,7 @@ export class SelectorModalComponent<T> {
this.hasGroups = this.options.some(x => x.group)
}
@HostListener('keyup', ['$event']) onKeyUp (event: KeyboardEvent): void {
@HostListener('keydown', ['$event']) onKeyUp (event: KeyboardEvent): void {
if (event.key === 'ArrowUp') {
this.selectedIndex--
event.preventDefault()
@@ -42,6 +42,10 @@ export class SelectorModalComponent<T> {
if (event.key === 'Escape') {
this.close()
}
if (event.key === 'Backspace' && this.canEditSelected()) {
this.filter = this.filteredOptions[this.selectedIndex].freeInputEquivalent!
this.onFilterChange()
}
this.selectedIndex = (this.selectedIndex + this.filteredOptions.length) % this.filteredOptions.length
Array.from(this.itemChildren)[this.selectedIndex]?.nativeElement.scrollIntoView({
@@ -85,6 +89,10 @@ export class SelectorModalComponent<T> {
this.modalInstance.close(option.result)
}
canEditSelected (): boolean {
return !this.filter && !!this.filteredOptions[this.selectedIndex].freeInputEquivalent && this.options.some(x => x.freeInputPattern)
}
close (): void {
this.modalInstance.dismiss()
}

View File

@@ -18,7 +18,7 @@
}
&.maximized {
z-index: 2;
z-index: 6;
box-shadow: rgba(0, 0, 0, 0.25) 0px 0px 30px;
backdrop-filter: blur(10px);
border-radius: 10px;

View File

@@ -5,9 +5,11 @@ import { TabRecoveryProvider, RecoveryToken } from '../api/tabRecovery'
import { TabsService, NewTabParameters } from '../services/tabs.service'
import { HotkeysService } from '../services/hotkeys.service'
import { TabRecoveryService } from '../services/tabRecovery.service'
import { ConfigService } from '../api'
export type SplitOrientation = 'v' | 'h'
export type SplitDirection = 'r' | 't' | 'b' | 'l'
export type ResizeDirection = 'v' | 'h' | 'dv' | 'dh'
/**
* Describes a horizontal or vertical split row or column
@@ -209,6 +211,11 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
/** @hidden */
_allFocusMode = false
/**
* Disables display of dynamic window/tab title provided by the shell
*/
disableDynamicTitle = false
/** @hidden */
private focusedTab: BaseTabComponent|null = null
private maximizedTab: BaseTabComponent|null = null
@@ -250,6 +257,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
private hotkeys: HotkeysService,
private tabsService: TabsService,
private tabRecovery: TabRecoveryService,
private config: ConfigService,
) {
super()
this.root = new SplitContainer()
@@ -303,6 +311,33 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
case 'pane-nav-next':
this.navigateLinear(1)
break
case 'pane-nav-1':
this.navigateSpecific(0)
break
case 'pane-nav-2':
this.navigateSpecific(1)
break
case 'pane-nav-3':
this.navigateSpecific(2)
break
case 'pane-nav-4':
this.navigateSpecific(3)
break
case 'pane-nav-5':
this.navigateSpecific(4)
break
case 'pane-nav-6':
this.navigateSpecific(5)
break
case 'pane-nav-7':
this.navigateSpecific(6)
break
case 'pane-nav-8':
this.navigateSpecific(7)
break
case 'pane-nav-9':
this.navigateSpecific(8)
break
case 'pane-maximize':
if (this.maximizedTab) {
this.maximize(null)
@@ -313,6 +348,18 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
case 'close-pane':
this.removeTab(this.focusedTab)
break
case 'pane-increase-vertical':
this.resizePane('v')
break
case 'pane-decrease-vertical':
this.resizePane('dv')
break
case 'pane-increase-horizontal':
this.resizePane('h')
break
case 'pane-decrease-horizontal':
this.resizePane('dh')
break
}
})
}
@@ -504,6 +551,75 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
this.updateTitle()
}
/**
* Changes the size of the focused pane in the given direction
*/
resizePane (direction: ResizeDirection): void {
const resizeStep = this.config.store.terminal.paneResizeStep
// The direction of the resize pane, vertically or horizontally
let directionvh: SplitOrientation = 'h'
const isDecreasing: boolean = direction === 'dv' || direction === 'dh'
if (direction === 'dh') {
directionvh = 'h'
}
if (direction === 'dv') {
directionvh = 'v'
}
if (direction === 'h') {
directionvh = 'h'
}
if (direction === 'v') {
directionvh = 'v'
}
if (!this.focusedTab) {
console.debug('No currently focused tab')
return
}
let currentContainer: BaseTabComponent | SplitContainer = this.focusedTab
let child: BaseTabComponent | SplitContainer | null = this.focusedTab
let curSplitOrientation: SplitOrientation | null = null
// Find the first split that is in the orientations that the user chooses to change
while (curSplitOrientation !== directionvh) {
const parentContainer = this.getParentOf(currentContainer)
if (!parentContainer) {
return
}
child = currentContainer
currentContainer = parentContainer
if (currentContainer instanceof SplitContainer) {
curSplitOrientation = currentContainer.orientation
}
}
if (!(currentContainer instanceof SplitContainer)) {
return
}
// Determine which index in the ratios refers to the child that will be modified
const currentChildIndex = currentContainer.children.indexOf(child)
let updatedRatio = 0
if (isDecreasing) {
updatedRatio = currentContainer.ratios[currentChildIndex] - resizeStep
if (updatedRatio < 0) {
return
}
} else {
updatedRatio = currentContainer.ratios[currentChildIndex] + resizeStep
if (updatedRatio > 1) {
return
}
}
currentContainer.ratios[currentChildIndex] = updatedRatio
this.layout()
}
/**
* Moves focus in the given direction
*/
@@ -555,6 +671,15 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
this.focus(target)
}
navigateSpecific (target: number): void {
const all = this.getAllTabs()
if (target >= all.length) {
return
}
this.focus(all[target])
}
async splitTab (tab: BaseTabComponent, dir: SplitDirection): Promise<BaseTabComponent|null> {
const newTab = await this.tabsService.duplicate(tab)
if (newTab) {
@@ -664,6 +789,9 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
}
private updateTitle (): void {
if (this.disableDynamicTitle) {
return
}
this.setTitle([...new Set(this.getAllTabs().map(x => x.title))].join(' | '))
}
@@ -671,6 +799,9 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
const ref = tab.insertIntoContainer(this.viewContainer)
this.viewRefs.set(tab, ref)
tab.addEventListenerUntilDestroyed(ref.rootNodes[0], 'click', () => this.focus(tab))
if (this.config.store.terminal.focusFollowsMouse) {
tab.addEventListenerUntilDestroyed(ref.rootNodes[0], 'mousemove', () => this.focus(tab))
}
tab.subscribeUntilDestroyed(tab.titleChange$, () => this.updateTitle())
tab.subscribeUntilDestroyed(tab.activity$, a => a ? this.displayActivity() : this.clearActivity())

View File

@@ -4,7 +4,7 @@ hotkeys:
close-tab:
- 'Ctrl-Shift-W'
reopen-tab:
- 'Ctrl-Shift-T'
- 'Ctrl-Shift-Z'
toggle-last-tab: []
rename-tab:
- 'Ctrl-Shift-R'
@@ -21,6 +21,7 @@ hotkeys:
rearrange-panes:
- 'Ctrl-Shift'
duplicate-tab: []
restart-tab: []
explode-tab:
- 'Ctrl-Shift-.'
combine-tabs:
@@ -56,7 +57,7 @@ hotkeys:
tab-19: []
tab-20: []
split-right:
- 'Ctrl-Shift-E'
- 'Ctrl-Shift-S'
split-bottom:
- 'Ctrl-Shift-D'
split-left: []
@@ -73,10 +74,23 @@ hotkeys:
- 'Ctrl-Alt-['
pane-nav-next:
- 'Ctrl-Alt-]'
pane-nav-1: []
pane-nav-2: []
pane-nav-3: []
pane-nav-4: []
pane-nav-5: []
pane-nav-6: []
pane-nav-7: []
pane-nav-8: []
pane-nav-9: []
pane-maximize:
- 'Ctrl-Alt-Enter'
pane-increase-vertical: []
pane-decrease-vertical: []
pane-increase-horizontal: []
pane-decrease-horizontal: []
close-pane: []
switch-profile:
- 'Ctrl-Alt-T'
profile-selector:
- 'Ctrl-Shift-T'
- 'Ctrl-Shift-E'

View File

@@ -39,6 +39,7 @@ hotkeys:
tab-10:
- '⌘-0'
duplicate-tab: []
restart-tab: []
explode-tab:
- '⌘-Shift-.'
combine-tabs:
@@ -71,10 +72,23 @@ hotkeys:
- '⌘-⌥-['
pane-nav-next:
- '⌘-⌥-]'
pane-nav-1: []
pane-nav-2: []
pane-nav-3: []
pane-nav-4: []
pane-nav-5: []
pane-nav-6: []
pane-nav-7: []
pane-nav-8: []
pane-nav-9: []
pane-maximize:
- '⌘-⌥-Enter'
close-pane:
- '⌘-Shift-W'
pane-increase-vertical: []
pane-decrease-vertical: []
pane-increase-horizontal: []
pane-decrease-horizontal: []
profile-selector:
- '⌘-E'
switch-profile:

View File

@@ -5,7 +5,7 @@ hotkeys:
close-tab:
- 'Ctrl-Shift-W'
reopen-tab:
- 'Ctrl-Shift-T'
- 'Ctrl-Shift-Z'
toggle-last-tab: []
rename-tab:
- 'Ctrl-Shift-R'
@@ -22,9 +22,10 @@ hotkeys:
rearrange-panes:
- 'Ctrl-Shift'
duplicate-tab: []
restart-tab: []
explode-tab:
- 'Ctrl-Shift-.'
combine-tab:
combine-tabs:
- 'Ctrl-Shift-,'
tab-1:
- 'Alt-1'
@@ -57,7 +58,7 @@ hotkeys:
tab-19: []
tab-20: []
split-right:
- 'Ctrl-Shift-E'
- 'Ctrl-Shift-S'
split-bottom:
- 'Ctrl-Shift-D'
split-left: []
@@ -74,10 +75,23 @@ hotkeys:
- 'Ctrl-Alt-['
pane-nav-next:
- 'Ctrl-Alt-]'
pane-nav-1: []
pane-nav-2: []
pane-nav-3: []
pane-nav-4: []
pane-nav-5: []
pane-nav-6: []
pane-nav-7: []
pane-nav-8: []
pane-nav-9: []
pane-maximize:
- 'Ctrl-Alt-Enter'
close-pane: []
pane-increase-vertical: []
pane-decrease-vertical: []
pane-increase-horizontal: []
pane-decrease-horizontal: []
switch-profile:
- 'Ctrl-Alt-T'
profile-selector:
- 'Ctrl-Shift-T'
- 'Ctrl-Shift-E'

View File

@@ -1,3 +1,5 @@
accessibility:
animations: true
appearance:
dock: off
dockScreen: current
@@ -17,6 +19,8 @@ appearance:
terminal:
showBuiltinProfiles: true
showRecentProfiles: 3
paneResizeStep: 0.1
focusFollowsMouse: false
hotkeys:
profile:
__nonStructural: true

View File

@@ -56,6 +56,10 @@ export class AppHotkeyProvider extends HotkeyProvider {
id: 'duplicate-tab',
name: this.translate.instant('Duplicate tab'),
},
{
id: 'restart-tab',
name: this.translate.instant('Restart tab'),
},
{
id: 'explode-tab',
name: this.translate.instant('Turn current tab\'s panes into separate tabs'),
@@ -188,6 +192,42 @@ export class AppHotkeyProvider extends HotkeyProvider {
id: 'pane-nav-next',
name: this.translate.instant('Focus next pane'),
},
{
id: 'pane-nav-1',
name: this.translate.instant('Focus pane {number}', { number: 1 }),
},
{
id: 'pane-nav-2',
name: this.translate.instant('Focus pane {number}', { number: 2 }),
},
{
id: 'pane-nav-3',
name: this.translate.instant('Focus pane {number}', { number: 3 }),
},
{
id: 'pane-nav-4',
name: this.translate.instant('Focus pane {number}', { number: 4 }),
},
{
id: 'pane-nav-5',
name: this.translate.instant('Focus pane {number}', { number: 5 }),
},
{
id: 'pane-nav-6',
name: this.translate.instant('Focus pane {number}', { number: 6 }),
},
{
id: 'pane-nav-7',
name: this.translate.instant('Focus pane {number}', { number: 7 }),
},
{
id: 'pane-nav-8',
name: this.translate.instant('Focus pane {number}', { number: 8 }),
},
{
id: 'pane-nav-9',
name: this.translate.instant('Focus pane {number}', { number: 9 }),
},
{
id: 'switch-profile',
name: this.translate.instant('Switch profile in the active pane'),
@@ -196,6 +236,22 @@ export class AppHotkeyProvider extends HotkeyProvider {
id: 'close-pane',
name: this.translate.instant('Close focused pane'),
},
{
id: 'pane-increase-vertical',
name: this.translate.instant('Increase vertical split size'),
},
{
id: 'pane-decrease-vertical',
name: this.translate.instant('Decrease vertical split size'),
},
{
id: 'pane-increase-horizontal',
name: this.translate.instant('Increase horizontal split size'),
},
{
id: 'pane-decrease-horizontal',
name: this.translate.instant('Decrease horizontal split size'),
},
]
constructor (

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'
import slugify from 'slugify'
import { v4 as uuidv4 } from 'uuid'
import { Injectable } from '@angular/core'
import { TranslateService } from '@ngx-translate/core'
import { ConfigService, NewTabParameters, PartialProfile, Profile, ProfileProvider } from './api'
import { SplitTabComponent, SplitTabRecoveryProvider } from './components/splitTab.component'
@@ -16,7 +16,7 @@ export interface SplitLayoutProfile extends Profile {
@Injectable({ providedIn: 'root' })
export class SplitLayoutProfilesService extends ProfileProvider<SplitLayoutProfile> {
id = 'split-layout'
name = this.translate.instant('Saved layout')
name = _('Saved layout')
configDefaults = {
options: {
recoveryToken: null,
@@ -26,7 +26,6 @@ export class SplitLayoutProfilesService extends ProfileProvider<SplitLayoutProfi
constructor (
private splitTabRecoveryProvider: SplitTabRecoveryProvider,
private config: ConfigService,
private translate: TranslateService,
) {
super()
}
@@ -39,7 +38,7 @@ export class SplitLayoutProfilesService extends ProfileProvider<SplitLayoutProfi
return this.splitTabRecoveryProvider.recover(profile.options.recoveryToken)
}
getDescription (_: SplitLayoutProfile): string {
getDescription (): string {
return ''
}

View File

@@ -1,4 +1,4 @@
import { Observable, Subject, AsyncSubject, takeUntil } from 'rxjs'
import { Observable, Subject, AsyncSubject, takeUntil, debounceTime } from 'rxjs'
import { Injectable, Inject } from '@angular/core'
import { BaseTabComponent } from '../components/baseTab.component'
@@ -58,6 +58,7 @@ export class AppService {
private tabClosed = new Subject<BaseTabComponent>()
private tabDragActive = new Subject<BaseTabComponent|null>()
private ready = new AsyncSubject<void>()
private recoveryStateChangedHint = new Subject<void>()
private completionObservers = new Map<BaseTabComponent, CompletionObserver>()
@@ -82,11 +83,16 @@ export class AppService {
@Inject(BOOTSTRAP_DATA) private bootstrapData: BootstrapData,
) {
this.tabsChanged$.subscribe(() => {
this.recoveryStateChangedHint.next()
})
setInterval(() => {
this.recoveryStateChangedHint.next()
}, 30000)
this.recoveryStateChangedHint.pipe(debounceTime(1000)).subscribe(() => {
this.tabRecovery.saveTabs(this.tabs)
})
setInterval(() => {
this.tabRecovery.saveTabs(this.tabs)
}, 30000)
config.ready$.toPromise().then(async () => {
if (this.bootstrapData.isMainWindow) {
@@ -117,7 +123,7 @@ export class AppService {
if (this.bootstrapData.isMainWindow) {
tab.recoveryStateChangedHint$.subscribe(() => {
this.tabRecovery.saveTabs(this.tabs)
this.recoveryStateChangedHint.next()
})
}
@@ -144,7 +150,7 @@ export class AppService {
}
removeTab (tab: BaseTabComponent): void {
const newIndex = Math.max(0, this.tabs.indexOf(tab) - 1)
const newIndex = Math.min(this.tabs.length - 2, this.tabs.indexOf(tab))
this.tabs = this.tabs.filter((x) => x !== tab)
if (tab === this._activeTab) {
this.selectTab(this.tabs[newIndex])

View File

@@ -205,7 +205,6 @@ export class ConfigService {
cleanStore = await this.maybeEncryptConfig(cleanStore)
await this.platform.saveConfig(yaml.dump(cleanStore))
this.emitChange()
this.hostApp.broadcastConfigChange(JSON.parse(JSON.stringify(this.store)))
}
/**

View File

@@ -35,6 +35,10 @@ export class HomeBaseService {
this.platform.openExternal('https://twitter.com/eugeeeeny')
}
openTranslations (): void {
this.platform.openExternal('https://translate.tabby.sh/project/tabby')
}
reportBug (): void {
let body = `Version: ${this.appVersion}\n`
body += `Platform: ${this.hostApp.platform} ${process.arch} ${this.platform.getOSRelease()}\n`

View File

@@ -2,36 +2,44 @@ import { Injectable } from '@angular/core'
import { registerLocaleData } from '@angular/common'
import { TranslateService } from '@ngx-translate/core'
import localeEN from '@angular/common/locales/en'
import localeENUS from '@angular/common/locales/en'
import localeENGB from '@angular/common/locales/en-GB'
import localeBG from '@angular/common/locales/bg'
import localeDA from '@angular/common/locales/da'
import localeDE from '@angular/common/locales/de'
import localeES from '@angular/common/locales/es'
import localeFR from '@angular/common/locales/fr'
import localeHR from '@angular/common/locales/hr'
import localeID from '@angular/common/locales/id'
import localeIT from '@angular/common/locales/it'
import localeJA from '@angular/common/locales/ja'
import localeKO from '@angular/common/locales/ko'
import localePL from '@angular/common/locales/pl'
import localePT from '@angular/common/locales/pt'
import localeRU from '@angular/common/locales/ru'
import localeUK from '@angular/common/locales/uk'
import localeZH from '@angular/common/locales/zh'
import { Observable, Subject } from 'rxjs'
import { distinctUntilChanged } from 'rxjs/operators'
import { ConfigService } from './config.service'
import { LogService, Logger } from './log.service'
registerLocaleData(localeEN)
registerLocaleData(localeENUS)
registerLocaleData(localeENGB)
registerLocaleData(localeBG)
registerLocaleData(localeDA)
registerLocaleData(localeDE)
registerLocaleData(localeES)
registerLocaleData(localeFR)
registerLocaleData(localeHR)
registerLocaleData(localeID)
registerLocaleData(localeIT)
registerLocaleData(localeJA)
registerLocaleData(localeKO)
registerLocaleData(localePL)
registerLocaleData(localePT)
registerLocaleData(localeRU)
registerLocaleData(localeUK)
registerLocaleData(localeZH)
function flattenMessageFormatTranslation (po: any) {
@@ -66,6 +74,10 @@ export class LocaleService {
private logger: Logger
static allLanguages = [
{
code: 'id-ID',
name: 'Bahasa Indonesia',
},
{
code: 'da-DK',
name: 'Dansk',
@@ -74,9 +86,13 @@ export class LocaleService {
code: 'de-DE',
name: 'Deutsch',
},
{
code: 'en-GB',
name: 'English (UK)',
},
{
code: 'en-US',
name: 'English',
name: 'English (US)',
},
{
code: 'es-ES',
@@ -102,6 +118,10 @@ export class LocaleService {
code: 'pt-PT',
name: 'Português',
},
{
code: 'pt-BR',
name: 'Português do Brasil',
},
{
code: 'bg-BG',
name: 'Български',
@@ -110,10 +130,18 @@ export class LocaleService {
code: 'ru-RU',
name: 'Русский',
},
{
code: 'uk-UA',
name: 'Українська',
},
{
code: 'ja-JP',
name: '日本語',
},
{
code: 'ko-KR',
name: '한국어',
},
{
code: 'zh-CN',
name: '中文(简体)',
@@ -143,6 +171,12 @@ export class LocaleService {
config.ready$.subscribe(() => {
this.refresh()
})
const d = new Date()
if (d.getMonth() === 3 && d.getDate() === 1) {
LocaleService.allLanguages.find(x => x.code === 'en-US')!.name = 'English (simplified)'
LocaleService.allLanguages.find(x => x.code === 'en-GB')!.name = 'English (traditional)'
}
}
refresh (): void {

View File

@@ -90,9 +90,12 @@ export class ProfilesService {
selectorOptionForProfile <P extends Profile, T> (profile: PartialProfile<P>): SelectorOption<T> {
const fullProfile = this.getConfigProxyForProfile(profile)
const provider = this.providerForProfile(fullProfile)
const freeInputEquivalent = provider?.intoQuickConnectString(fullProfile) ?? undefined
return {
...profile,
description: this.providerForProfile(fullProfile)?.getDescription(fullProfile),
freeInputEquivalent,
description: provider?.getDescription(fullProfile),
}
}
@@ -112,7 +115,7 @@ export class ProfilesService {
group: this.translate.instant('Recent'),
icon: 'fas fa-history',
color: p.color,
weight: -1,
weight: -2,
callback: async () => {
if (p.id) {
p = (await this.getProfiles()).find(x => x.id === p.id) ?? p

View File

@@ -201,6 +201,8 @@ export class TaskCompletionContextMenu extends TabContextMenuItemProvider {
type: 'checkbox',
checked: !!extTab.__outputNotificationSubscription,
click: () => {
tab.clearActivity()
if (extTab.__outputNotificationSubscription) {
extTab.__outputNotificationSubscription.unsubscribe()
extTab.__outputNotificationSubscription = null

View File

@@ -32,10 +32,6 @@ app-root {
background: rgba(0,0,0,.65);
}
&.no-tabs {
background: rgba(0,0,0,.5);
}
&> .content {
.tab-bar {
.btn-tab-bar {
@@ -304,6 +300,10 @@ checkbox i.on {
search-panel {
background: #131d27 !important;
input {
border-radius: 0 !important;
}
}
@@ -398,7 +398,7 @@ ngx-colors-panel .opened {
background: $body-bg !important;
button {
color: $body-color;
color: $body-color !important;
}
.button svg {

View File

@@ -90,9 +90,9 @@ messageformat@^2.3.0:
messageformat-parser "^4.1.2"
minimist@^1.2.0:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
mixpanel@^0.13.0:
version "0.13.0"

View File

@@ -58,11 +58,8 @@ export class ElectronHostAppService extends HostAppService {
this.electron.ipcRenderer.send('app:new-window')
}
/**
* Notifies other windows of config file changes
*/
broadcastConfigChange (configStore: Record<string, any>): void {
this.electron.ipcRenderer.send('app:config-change', configStore)
saveConfig (data: string): void {
this.electron.ipcRenderer.send('app:save-config', data)
}
emitReady (): void {
@@ -74,7 +71,11 @@ export class ElectronHostAppService extends HostAppService {
if (isPortable) {
this.electron.app.relaunch({ execPath: process.env.PORTABLE_EXECUTABLE_FILE })
} else {
this.electron.app.relaunch()
let args: string[] = []
if (this.platform === Platform.Linux) {
args = ['--no-sandbox']
}
this.electron.app.relaunch({ args })
}
this.electron.app.exit()
}

View File

@@ -1,17 +1,15 @@
import * as path from 'path'
import * as fs from 'fs/promises'
import * as gracefulFS from 'graceful-fs'
import * as fsSync from 'fs'
import * as os from 'os'
import { v4 as uuidv4 } from 'uuid'
import { promisify } from 'util'
import promiseIpc, { RendererProcessType } from 'electron-promise-ipc'
import { execFile } from 'mz/child_process'
import { Injectable, NgZone } from '@angular/core'
import { PlatformService, ClipboardContent, HostAppService, Platform, MenuItemOptions, MessageBoxOptions, MessageBoxResult, FileUpload, FileDownload, FileUploadOptions, wrapPromise, TranslateService } from 'tabby-core'
import { PlatformService, ClipboardContent, Platform, MenuItemOptions, MessageBoxOptions, MessageBoxResult, FileUpload, FileDownload, FileUploadOptions, wrapPromise, TranslateService } from 'tabby-core'
import { ElectronService } from '../services/electron.service'
import { ElectronHostWindow } from './hostWindow.service'
import { ShellIntegrationService } from './shellIntegration.service'
import { ElectronHostAppService } from './hostApp.service'
const fontManager = require('fontmanager-redux') // eslint-disable-line
/* eslint-disable block-scoped-var */
@@ -27,10 +25,9 @@ try {
export class ElectronPlatformService extends PlatformService {
supportsWindowControls = true
private configPath: string
private _configSaveInProgress = Promise.resolve()
constructor (
private hostApp: HostAppService,
private hostApp: ElectronHostAppService,
private hostWindow: ElectronHostWindow,
private electron: ElectronService,
private zone: NgZone,
@@ -112,18 +109,7 @@ export class ElectronPlatformService extends PlatformService {
}
async saveConfig (content: string): Promise<void> {
try {
await this._configSaveInProgress
} catch { }
this._configSaveInProgress = this._saveConfigInternal(content)
await this._configSaveInProgress
}
async _saveConfigInternal (content: string): Promise<void> {
const tempPath = this.configPath + '.new.' + uuidv4().toString()
await fs.writeFile(tempPath, content, 'utf8')
await fs.writeFile(this.configPath + '.backup', content, 'utf8')
await promisify(gracefulFS.rename)(tempPath, this.configPath)
this.hostApp.saveConfig(content)
}
getConfigPath (): string|null {
@@ -152,7 +138,7 @@ export class ElectronPlatformService extends PlatformService {
async listFonts (): Promise<string[]> {
if (this.hostApp.platform === Platform.Windows || this.hostApp.platform === Platform.macOS) {
let fonts = await new Promise<any[]>((resolve) => fontManager.findFonts({ monospace: true }, resolve))
let fonts = await new Promise<any[]>(resolve => fontManager.getAvailableFonts(resolve))
fonts = fonts.map(x => x.family.trim())
return fonts
}

View File

@@ -1,5 +1,5 @@
import deepEqual from 'deep-equal'
import { Subject, distinctUntilChanged } from 'rxjs'
import { Subject, distinctUntilChanged, map } from 'rxjs'
import { ipcRenderer } from 'electron'
import { Injectable, NgZone } from '@angular/core'
import { AppService, HostAppService, Platform } from 'tabby-core'
@@ -22,7 +22,10 @@ export class TouchbarService {
app.tabOpened$.subscribe(tab => {
tab.titleChange$.subscribe(() => this.update())
tab.activity$.subscribe(() => this.update())
tab.activity$.pipe(
map(x => !x || tab === app.activeTab),
distinctUntilChanged(),
).subscribe(() => this.update())
})
ipcRenderer.on('touchbar-selection', (_event, index) => this.zone.run(() => {

View File

@@ -59,6 +59,7 @@ export class ElectronUpdaterService extends UpdaterService {
provider: 'github',
repo: 'tabby',
owner: 'eugeny',
channel: `latest-${process.arch}`,
})
this.autoUpdater.checkForUpdates()
} catch (e) {

View File

@@ -3,7 +3,7 @@ import * as path from 'path'
import * as fs from 'fs'
import { Subject, debounceTime, debounce } from 'rxjs'
import { Injectable } from '@angular/core'
import { MenuItemOptions } from 'tabby-core'
import { MenuItemOptions, TranslateService } from 'tabby-core'
import { SFTPFile, SFTPPanelComponent, SFTPContextMenuItemProvider, SFTPSession } from 'tabby-ssh'
import { ElectronPlatformService } from './services/platform.service'
@@ -14,6 +14,7 @@ export class EditSFTPContextMenu extends SFTPContextMenuItemProvider {
weight = 0
constructor (
private translate: TranslateService,
private platform: ElectronPlatformService,
) {
super()
@@ -26,7 +27,7 @@ export class EditSFTPContextMenu extends SFTPContextMenuItemProvider {
return [
{
click: () => this.edit(item, panel.sftp),
label: 'Edit locally',
label: this.translate.instant('Edit locally'),
},
]
}

View File

@@ -26,7 +26,7 @@ export class OpenSSHImporter extends SSHProfileImporter {
if (line.trim().startsWith('#') || !line.trim()) {
continue
}
if (line.startsWith('Host ')) {
if (line.toLowerCase().startsWith('host ')) {
if (currentProfile) {
results.push(currentProfile)
}

View File

@@ -494,9 +494,9 @@ winston-transport@^4.5.0:
triple-beam "^1.3.0"
winston@^3.3.3:
version "3.6.0"
resolved "https://registry.yarnpkg.com/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6"
integrity sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w==
version "3.7.2"
resolved "https://registry.yarnpkg.com/winston/-/winston-3.7.2.tgz#95b4eeddbec902b3db1424932ac634f887c400b1"
integrity sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==
dependencies:
"@dabh/diagnostics" "^2.0.2"
async "^3.2.3"

View File

@@ -13,6 +13,8 @@ export interface Shell {
*/
fsBase?: string
cwd?: string
/**
* SVG icon
*/

View File

@@ -1,7 +1,7 @@
import * as path from 'path'
import * as fs from 'mz/fs'
import { Injectable } from '@angular/core'
import { CLIHandler, CLIEvent, AppService, ConfigService, HostWindowService } from 'tabby-core'
import { CLIHandler, CLIEvent, AppService, ConfigService, HostWindowService, ProfilesService, NotificationsService } from 'tabby-core'
import { TerminalService } from './services/terminal.service'
@Injectable()
@@ -63,7 +63,9 @@ export class OpenPathCLIHandler extends CLIHandler {
constructor (
private terminal: TerminalService,
private profiles: ProfilesService,
private hostWindow: HostWindowService,
private notifications: NotificationsService,
) {
super()
}
@@ -72,12 +74,44 @@ export class OpenPathCLIHandler extends CLIHandler {
const op = event.argv._[0]
const opAsPath = op ? path.resolve(event.cwd, op) : null
const profile = await this.terminal.getDefaultProfile()
if (opAsPath && (await fs.lstat(opAsPath)).isDirectory()) {
this.terminal.openTab(undefined, opAsPath)
this.terminal.openTab(profile, opAsPath)
this.hostWindow.bringToFront()
return true
}
if (opAsPath && await fs.exists(opAsPath)) {
if (opAsPath.endsWith('.sh') || opAsPath.endsWith('.command')) {
profile.options!.pauseAfterExit = true
profile.options?.args?.push(opAsPath)
this.terminal.openTab(profile)
this.hostWindow.bringToFront()
return true
} else if (opAsPath.endsWith('.bat')) {
const psProfile = (await this.profiles.getProfiles()).find(x => x.id === 'cmd')
if (psProfile) {
psProfile.options!.pauseAfterExit = true
psProfile.options?.args?.push(opAsPath)
this.terminal.openTab(psProfile)
this.hostWindow.bringToFront()
return true
}
} else if (opAsPath.endsWith('.ps1')) {
const cmdProfile = (await this.profiles.getProfiles()).find(x => x.id === 'powershell')
if (cmdProfile) {
cmdProfile.options!.pauseAfterExit = true
cmdProfile.options?.args?.push(opAsPath)
this.terminal.openTab(cmdProfile)
this.hostWindow.bringToFront()
return true
}
} else {
this.notifications.error('Cannot handle scripts of this type')
}
}
return false
}
}

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 61.028 59.731" xmlns="http://www.w3.org/2000/svg"><style>.st1{fill:#86da2f}.st2{fill:#24c2ff}.st3{fill:#ffcb12}.st4{fill:#0069da}.st5{fill:#ff4649}</style><path class="st1" d="M56.114 33.731c2.6-.2 4.7 1.5 4.9 4.1.2 2.7-1.7 4.9-4.3 5.1-2.5.2-4.7-1.7-4.9-4.2-.2-2.7 1.6-4.7 4.3-5z"/><path class="st2" d="M24.514 55.031c0-2.6 2-4.6 4.4-4.6s4.7 2.2 4.7 4.7c0 2.4-2 4.5-4.3 4.6-2.9 0-4.8-1.8-4.8-4.7z"/><path class="st3" d="M31.614 25.831c-.4.2-.6-.1-.7-.4-3.7-6.9-2.6-15.6 3.9-20.8 1.7-1.4 4.9-1.7 6.3-.3.6.5.7 1.1.8 1.8.2 1.5.5 3 1.5 4.2 1.1 1.3 2.5 1.8 4.1 1.7 1.4 0 2.8-.2 3.7 1.4.5.9.3 4.4-.5 5.1-.4.3-.7.1-1 0-2.3-.9-4.7-.9-7.1-.5-.8.1-1.2-.1-1.2-1-.1-1.5-.4-2.9-1.2-4.2-1.5-2.7-4.3-2.8-6.1-.3-1.5 2-1.9 4.4-2.3 6.8-.4 2.1-.3 4.3-.2 6.5 0 0-.1 0 0 0z"/><path class="st1" d="M34.114 27.331c-.2-.3-.1-.6.2-.8 5.7-5.2 14.2-6.2 20.8-1.1 1.7 1.4 2.8 4.3 1.9 6-.4.7-.9 1-1.5 1.2-1.4.6-2.7 1.2-3.6 2.5s-1.1 2.8-.7 4.4c.3 1.3.8 2.7-.5 3.9-.7.7-4.1 1.3-5 .7-.4-.3-.3-.6-.2-1 .3-2.5-.3-4.8-1.2-7-.3-.8-.2-1.2.6-1.4 1.4-.4 2.7-1.1 3.7-2.1 2.2-2.1 1.7-4.8-1.2-6-2.3-1-4.7-.8-7-.6-2.2.1-4.3.7-6.3 1.3z"/><path class="st2" d="M32.814 29.931c.3-.3.5-.2.8 0 6.6 4 10 11.9 7 19.6-.8 2-3.4 4-5.3 3.5-.8-.2-1.2-.6-1.6-1.1-.9-1.2-1.9-2.3-3.4-2.8-1.6-.5-3-.2-4.4.6-1.2.7-2.4 1.6-3.9.7-.9-.5-2.4-3.6-2.1-4.6.2-.4.6-.4 1-.4 2.5-.4 4.5-1.6 6.4-3.2.6-.5 1.1-.5 1.6.2.8 1.2 1.8 2.2 3.1 2.9 2.6 1.5 5.1.2 5.4-2.8.3-2.5-.6-4.7-1.4-6.9-.9-2-2-3.9-3.2-5.7z"/><path class="st4" d="M29.614 30.531c-.4 2-1.3 3.9-2.5 5.6-3.6 5.4-8.8 7.6-15.2 7-2.3-.2-4.2-2.1-4.4-4-.1-.8.1-1.4.6-2 .7-.9 1.3-1.7 1.6-2.8.6-2.2-.2-4-1.8-5.6-2.2-2.2-1.9-4.2.7-5.8.3-.2.7-.4 1.1-.6.6-.3 1.1-.3 1.3.4.9 2.3 2.7 4 4.7 5.4.7.6.7 1 .1 1.7-1.2 1.3-1.9 2.9-2 4.7-.2 2.2 1.1 3.6 3.3 3.6 1.4 0 2.7-.5 3.9-1.1 3.1-1.6 5.5-3.9 7.8-6.3.3-.1.4-.3.8-.2z"/><path class="st5" d="M13.214 9.531c.2 0 .7.1 1.2.2 3.7.7 6-.6 7.2-4.1.8-2.3 2.5-3 4.7-1.8.1 0 .1.1.2.1 2.3 1.3 2.3 1.5.9 3.5-1.2 1.6-1.8 3.4-2.1 5.3-.2 1.1-.6 1.3-1.6.9-1.6-.6-3.3-.6-5 0-1.9.6-2.7 2.3-2.1 4.2.8 2.5 3 3.6 4.9 4.9s4.1 2 6.2 2.9c.3.1.8.1.7.6-.1.3-.5.3-.9.3-4.5.2-8.8-.5-12.3-3.5-3.3-2.7-5.7-6-5.3-10.6.3-1.5 1.4-2.6 3.3-2.9z"/><path class="st4" d="M5.014 37.631c-2.4.3-4.8-1.7-5-4.2-.2-2.4 1.8-4.8 4.1-5 2.6-.3 5 1.5 5.2 3.9.1 2.3-1.4 5.1-4.3 5.3z"/><path class="st3" d="M47.014 2.031c2.5-.2 4.9 1.8 5.1 4.3.2 2.4-1.8 4.7-4.2 4.9-2.6.2-4.9-1.7-5.1-4.2s1.6-4.8 4.2-5z"/><path class="st5" d="M20.914 3.931c.3 2.6-1.5 4.8-4.2 5.2-2.3.3-4.7-1.6-5-3.8-.3-2.9 1.3-5 4-5.3 2.5-.3 4.9 1.6 5.2 3.9z"/></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="-5.724 -43.601 714.54 512.74" xmlns="http://www.w3.org/2000/svg"><g fill="#0091e2"><path d="M701.77 149.96c-1.938-1.539-20.029-15.199-58.181-15.199a185.562 185.562 0 00-30.061 2.584c-7.384-50.612-49.228-75.288-51.104-76.395l-10.245-5.908-6.738 9.723a137.318 137.318 0 00-18.214 42.582c-6.831 28.891-2.677 56.027 11.999 79.226-17.722 9.876-46.151 12.307-51.904 12.522H16.642c-12.294.017-22.27 9.952-22.337 22.245a338.726 338.726 0 0020.614 120.95c16.214 42.521 40.336 73.842 71.719 93.01 35.167 21.537 92.302 33.844 157.07 33.844a468.88 468.88 0 0087.226-7.907 364.663 364.663 0 00113.84-41.352 312.969 312.969 0 0077.688-63.596c37.29-42.213 59.505-89.226 76.026-131.01h6.584c40.828 0 65.935-16.338 79.78-30.029a87.08 87.08 0 0021.045-31.167l2.923-8.553z"/><path d="M60.271 185.31h63.073a5.507 5.507 0 005.507-5.507v-56.182a5.507 5.507 0 00-5.476-5.538H60.271a5.507 5.507 0 00-5.507 5.507V179.802a5.507 5.507 0 005.507 5.508M147.19 185.31h63.073a5.507 5.507 0 005.507-5.507v-56.182a5.507 5.507 0 00-5.477-5.538h-63.104a5.537 5.537 0 00-5.538 5.538v56.181a5.54 5.54 0 005.539 5.508M235.43 185.31h63.073a5.507 5.507 0 005.507-5.507v-56.182a5.507 5.507 0 00-5.477-5.538h-63.104a5.507 5.507 0 00-5.507 5.507V179.802a5.51 5.51 0 005.508 5.508M322.62 185.31h63.073a5.537 5.537 0 005.538-5.507v-56.182a5.537 5.537 0 00-5.538-5.538H322.62a5.507 5.507 0 00-5.507 5.507V179.802a5.508 5.508 0 005.507 5.508M147.19 104.48h63.073a5.539 5.539 0 005.507-5.538V42.761a5.507 5.507 0 00-5.507-5.507H147.19a5.538 5.538 0 00-5.538 5.507v56.181a5.568 5.568 0 005.538 5.538M235.43 104.48h63.073a5.539 5.539 0 005.507-5.538V42.761a5.507 5.507 0 00-5.507-5.507H235.43a5.507 5.507 0 00-5.507 5.507v56.181a5.539 5.539 0 005.507 5.538M322.62 104.48h63.073a5.568 5.568 0 005.538-5.538V42.761a5.537 5.537 0 00-5.538-5.507H322.62a5.507 5.507 0 00-5.507 5.507v56.181a5.539 5.539 0 005.507 5.538M322.62 23.626h63.073a5.538 5.538 0 005.538-5.507v-56.213a5.537 5.537 0 00-5.538-5.507H322.62a5.506 5.506 0 00-5.507 5.507v56.212a5.508 5.508 0 005.507 5.508M410.59 185.31h63.073a5.537 5.537 0 005.538-5.507v-56.182a5.537 5.537 0 00-5.538-5.538H410.59a5.508 5.508 0 00-5.507 5.507V179.802a5.508 5.508 0 005.507 5.508"/></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="svg-inline--fa fa-git-alt fa-w-14 fa-3x" data-icon="git-alt" data-prefix="fab" focusable="false" role="img" viewBox="0 0 448 512"><path fill="#f05033" stroke="none" stroke-width="1" d="M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 113.925 113.923"><defs><clipPath id="aaaaaaaa"><path d="M0 0h2183.73v912H0V0z"/></clipPath><clipPath id="bbbbbbbb"><path d="M230.892 51.977L181.15 2.238a7.336 7.336 0 00-10.375 0l-10.328 10.33 13.102 13.102c3.046-1.028 6.537-.339 8.964 2.089a8.72 8.72 0 012.07 9.02l12.627 12.627c3.055-1.053 6.58-.373 9.02 2.07a8.727 8.727 0 010 12.346 8.729 8.729 0 01-12.349 0 8.734 8.734 0 01-1.9-9.494L180.204 42.55v30.99a8.806 8.806 0 012.309 1.652c3.41 3.409 3.41 8.933 0 12.347-3.411 3.41-8.938 3.41-12.346 0-3.41-3.414-3.41-8.938 0-12.347a8.735 8.735 0 012.859-1.905V42.009a8.636 8.636 0 01-2.859-1.905 8.728 8.728 0 01-1.88-9.544L155.37 17.642l-34.106 34.105a7.339 7.339 0 000 10.378l49.742 49.74a7.338 7.338 0 0010.376 0l49.509-49.51a7.341 7.341 0 000-10.378" fill="#f03c2e"/></clipPath></defs><g transform="translate(-119.116 -.075)" clip-path="url(#bbbbbbbb)"><path d="M230.435-10.813l-49.742-49.739a7.336 7.336 0 00-10.374 0l-49.51 49.51a7.339 7.339 0 000 10.378l49.741 49.738a7.338 7.338 0 0010.376 0l49.51-49.508a7.341 7.341 0 000-10.379" fill="#ff8080"/><path d="M293.393 51.928L243.65 2.188a7.336 7.336 0 00-10.375 0c-16.502 16.505-33.006 33.007-49.51 49.51a7.339 7.339 0 000 10.378l49.742 49.739a7.338 7.338 0 0010.376 0l49.509-49.509a7.341 7.341 0 000-10.378" fill="#8dd35f"/><path d="M167.436 51.52L117.693 1.783a7.336 7.336 0 00-10.374 0l-49.51 49.509a7.339 7.339 0 000 10.378l49.741 49.74a7.338 7.338 0 0010.376-.001l49.51-49.508a7.341 7.341 0 000-10.38" fill="#80b3ff"/><path d="M230.13 114.117l-49.743-49.739a7.336 7.336 0 00-10.374 0l-49.51 49.51a7.339 7.339 0 000 10.378l49.741 49.738a7.338 7.338 0 0010.376 0l49.51-49.508a7.341 7.341 0 000-10.379" fill="#ffe680"/></g></svg>

Before

Width:  |  Height:  |  Size: 718 B

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<svg version="1" viewBox="0 0 459.36 233.64" xmlns="http://www.w3.org/2000/svg"><path d="M448.2.54c-1.708-.456-3.412-.54-5.177-.54H15.093C8.67.05 3.033 4.105.898 10.144c-.697 1.963-.9 3.95-.9 6.01v202.42c.238 8.434 6.837 15.012 15.194 15.033 17.519.023 53.594-.063 53.594-.063l-.064-15.665h-52.62c-.279-1.683-.208-199.78.064-200.69 1.612-.225 425.79-.144 426.72.074.257 1.528.182 199.65-.098 200.69H88.048v15.667s1.384 0 2.018.023h354.25a15.182 15.182 0 0014.147-10.038c.697-1.908.898-3.875.898-5.886v-202.8c-.134-6.7-4.693-12.585-11.143-14.365zM88.06 174.55v-40.512c0-.914.257-1.556 1.003-2.135 3.129-2.474 6.216-5.019 9.303-7.545.308-.228.608-.432.992-.712.333.43.613.783.872 1.17 5.248 7.572 10.5 15.136 15.746 22.696 6.436 9.313 12.883 18.583 19.306 27.852.356.538.684.946 1.475.946 6.762-.023 13.519-.023 20.273-.023.223 0 .453-.074.81-.155-14.956-21.781-29.85-43.412-44.79-65.174 3.005-3.49 5.913-6.847 8.817-10.288 2.912-3.37 5.814-6.75 8.721-10.142 2.903-3.384 5.785-6.774 8.696-10.161 2.904-3.395 5.813-6.783 8.685-10.168a1556.02 1556.02 0 008.827-10.347h-1.704c-6.12 0-12.237.037-18.358-.023-1.125 0-1.835.326-2.578 1.2a41266 41266 0 01-45.178 53.398c-.2.228-.46.432-.894.832V70.965c0-3.666.063-7.343 0-11.012H69.175v116.15c1.501.264 17.926.21 18.94-.063v-1.477zm100.96 1.682c.152-.44.326-.818.459-1.227 3.055-8.681 6.114-17.348 9.178-26.037a136.3 136.3 0 001.478-4.203c.182-.585.48-.892 1.098-.817.2.023.432 0 .635 0h43.136c3.9 10.803 7.772 21.529 11.63 32.255h20.192a186785 186785 0 01-43.549-116.77h-20.649c-.132.254-.23.44-.282.614-14.377 38.55-28.737 77.119-43.11 115.66-.062.063-.062.182-.062.256v.124c0 .05.063.074.074.132h19.734zm17.457-50.036c3.977-11.515 8.01-22.98 11.885-34.526 1.555-4.64 2.727-9.427 4.05-14.16.113-.358.183-.718.334-1.257.2.305.356.491.41.692 3.159 11.794 7.477 23.237 11.398 34.807 1.63 4.814 3.316 9.599 4.974 14.415.126.431.251.862.404 1.395H206.05c.152-.502.28-.934.426-1.365zm102.24-57.278c0-3.008.11-5.988-.087-8.967h-18.675c-.315 1.452-.238 115.33.063 116.29h68.021v-16.18h-32.812c-2.758 0-5.538.023-8.284 0-2.707-.023-5.403.1-8.21-.063V68.94zm81.201-8.251c0-.18 0-.33-.063-.518 0-.05-.062-.063-.062-.099 0-.023-.075-.063-.075-.063h-18.74v116.22h18.839c.063-.195.11-.3.11-.43V60.667z" clip-rule="evenodd" fill="#367bf0" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 205 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 80.14 56.1" xmlns="http://www.w3.org/2000/svg"><defs><style>.cls-2{fill:#002fa7}</style></defs><g data-name="图层 2"><g data-name="图层 1"><path class="cls-2" d="M75.101 9.097c-4.08-1.06-9-.05-11.16 2.28s-.92 5.49 3.27 6.82c4.39 1.4 9.92.3 12.07-2.42s.08-5.53-4.18-6.68zM48.941 40.017a12.32 12.32 0 00-13.77 2.64c-3.54 3.79-3.15 9.12 1.26 11.87 4.68 2.93 11.67 1.64 15.18-2.82a7.39 7.39 0 00-2.67-11.69zM57.421 4.527a12.49 12.49 0 00-6.13.12 11.3 11.3 0 01-4.76-.14 3.68 3.68 0 01-2.66-1.92 1.58 1.58 0 00-.1-.43v-.06a3.38 3.38 0 00-2.45-1.72.61.61 0 00-.13 0 10.14 10.14 0 00-4.78-.17c-3.55.66-6.15 2.71-5.81 4.58a10.21 10.21 0 01-.06 1 4.34 4.34 0 01-1.79 2.46 8.39 8.39 0 01-3.2 1.69 14.83 14.83 0 01-2 .26 19.55 19.55 0 00-2.81.17 5.75 5.75 0 00-3.17 1.59 3.78 3.78 0 00-.88 3 5.5 5.5 0 01.06 1.29 5.55 5.55 0 01-2.37 3.67 12.93 12.93 0 01-5.41 2.49 13.54 13.54 0 00-5.87 2.6c-3.38 2.64-4.16 6.12-1.53 7.76 1.54 1 3.89 1.06 6.29.41a8 8 0 015.15.72 4.42 4.42 0 011.78 1.81 3.24 3.24 0 01.32 1 4.12 4.12 0 01.07.78 4.91 4.91 0 002.25 5.21c3.57 2.22 9.6 1.06 13.14-2.55 3.38-3.45 3-7.63-.64-9.39a10.13 10.13 0 00-6.91-.37 8.66 8.66 0 01-5.24-.66 3.54 3.54 0 01-2.14-3.24 6.83 6.83 0 01.42-1.64 9.92 9.92 0 012.16-3.13 9.55 9.55 0 014.44-2.36c.68-.18 1.79-.41 2-.43a10.64 10.64 0 014.93.41c1.41.57 2.45 1.5 2.54 2.66a4.47 4.47 0 002.8 4 11.61 11.61 0 0011.84-2.37c2.7-2.76 1.8-6-1.78-7.24a11.39 11.39 0 00-6.5-.08 10 10 0 01-5-.35c-1.46-.55-2.42-1.44-2.47-2.48a5.59 5.59 0 011.77-3.87 11.79 11.79 0 013.91-2 12.63 12.63 0 011.85-.43 11.79 11.79 0 014.69.19c1.4.42 2.68 1.19 2.72 2 .06 1.1 1.15 2.41 3.13 3 3.55 1.14 8.47.13 10.77-2.21s1.05-4.72-2.44-5.63z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 31.4 19.8" xmlns="http://www.w3.org/2000/svg"><path d="M9.9 19.8C4.4 19.8 0 15.4 0 9.9S4.4 0 9.9 0h11.6c5.5 0 9.9 4.4 9.9 9.9s-4.4 9.9-9.9 9.9H9.9m11.3-3.5c3.6 0 6.4-2.9 6.4-6.4 0-3.6-2.9-6.4-6.4-6.4h-11c-3.6 0-6.4 2.9-6.4 6.4s2.9 6.4 6.4 6.4h11" fill="#c74634"/></svg>

After

Width:  |  Height:  |  Size: 287 B

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="svg-inline--fa fa-terminal fa-w-20 fa-2x" data-icon="terminal" data-prefix="fas" focusable="false" role="img" viewBox="0 0 640 512"><path fill="#ef4eff" stroke="none" stroke-width="1" d="M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z"/></svg>
<svg viewBox="0 0 120 90.001" xmlns="http://www.w3.org/2000/svg"><linearGradient id="1652546273" x1="95.267" x2="26.7" y1="91.926" y2="30.68" gradientTransform="translate(-4.002 -19)" gradientUnits="userSpaceOnUse"><stop stop-color="#A9C8FF" offset="0"/><stop stop-color="#C7E6FF" offset="1"/></linearGradient><path d="M5.03 90c-1.632 0-3.045-.638-3.977-1.798-.952-1.185-1.28-2.814-.896-4.47L18.143 5.821C18.897 2.557 22.06 0 25.347 0h89.623c1.634 0 3.047.638 3.978 1.798.952 1.184 1.279 2.814.896 4.47l-17.986 77.911c-.753 3.264-3.917 5.822-7.203 5.822H5.03z" clip-rule="evenodd" fill="url(#1652546273)" fill-rule="evenodd" opacity=".8"/><g transform="translate(-4.002 -19)"><linearGradient id="1652546298" x1="26.585" x2="93.585" y1="30.778" y2="90.278" gradientUnits="userSpaceOnUse"><stop stop-color="#2D4664" offset="0"/><stop stop-color="#29405B" offset=".169"/><stop stop-color="#1E2F43" offset=".445"/><stop stop-color="#0C131B" offset=".79"/><stop offset="1"/></linearGradient><path d="M118.5 20H29.634c-2.769 0-5.53 2.259-6.168 5.045l-17.834 77.91C4.995 105.742 6.722 108 9.491 108h88.865c2.769 0 5.53-2.258 6.168-5.045l17.834-77.911c.638-2.785-1.09-5.044-3.858-5.044z" clip-rule="evenodd" fill="url(#1652546298)" fill-rule="evenodd"/></g><g clip-rule="evenodd" fill-rule="evenodd"><path d="M60.163 68.558h21.613c2.513 0 4.55 2.125 4.55 4.746s-2.037 4.747-4.55 4.747H60.163c-2.513 0-4.55-2.125-4.55-4.747 0-2.621 2.037-4.746 4.55-4.746zM74.182 47.455c-.372.749-1.144 1.575-2.509 2.534L31.56 78.798c-2.19 1.591-5.334 1.001-7.021-1.319s-1.28-5.49.91-7.082l36.173-26.194v-.538L38.894 19.487c-1.854-1.972-1.661-5.161.431-7.124 2.092-1.962 5.29-1.954 7.144.018L73.74 41.393c1.548 1.647 1.663 4.141.442 6.062z" fill="#2c5591"/><path d="M73.182 46.455c-.372.749-1.144 1.575-2.509 2.534L30.56 77.798c-2.19 1.591-5.334 1.001-7.021-1.319s-1.28-5.49.91-7.082l36.173-26.194v-.538L37.894 18.487c-1.854-1.972-1.661-5.161.431-7.124 2.092-1.962 5.29-1.954 7.144.018L72.74 40.393c1.548 1.647 1.663 4.141.442 6.062zM59.548 68h21.613c2.513 0 4.55 2.015 4.55 4.5s-2.037 4.5-4.55 4.5H59.548c-2.513 0-4.55-2.015-4.55-4.5s2.037-4.5 4.55-4.5z" fill="#fff"/></g></svg>

Before

Width:  |  Height:  |  Size: 664 B

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="svg-inline--fa fa-terminal fa-w-20 fa-2x" data-icon="terminal" data-prefix="fas" focusable="false" role="img" viewBox="0 0 640 512"><path fill="#0ff" stroke="none" stroke-width="1" d="M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z"/></svg>
<svg viewBox="0 0 118.99 90.001" xmlns="http://www.w3.org/2000/svg"><linearGradient id="1652546342" x1="95.123" x2="26.855" y1="91.805" y2="30.825" gradientTransform="translate(-4.503 -19)" gradientUnits="userSpaceOnUse"><stop stop-color="#5391FE" offset="0"/><stop stop-color="#3E6DBF" offset="1"/></linearGradient><path d="M4.988 90c-1.62 0-3.021-.638-3.944-1.798-.944-1.185-1.268-2.814-.89-4.47L17.99 5.821C18.736 2.557 21.873 0 25.13 0h88.866c1.62 0 3.02.638 3.945 1.798.944 1.184 1.268 2.814.889 4.47l-17.834 77.911c-.747 3.264-3.884 5.822-7.143 5.822H4.988z" clip-rule="evenodd" fill="url(#1652546342)" fill-rule="evenodd"/><linearGradient id="1652546328" x1="26.178" x2="93.748" y1="30.015" y2="90.738" gradientTransform="translate(-4.503 -19)" gradientUnits="userSpaceOnUse"><stop stop-color="#5391FE" offset="0"/><stop stop-color="#3E6DBF" offset="1"/></linearGradient><g clip-rule="evenodd" fill-rule="evenodd"><path d="M25.131 1h88.866c2.769 0 4.496 2.259 3.858 5.045l-17.834 77.911c-.638 2.786-3.399 5.045-6.168 5.045H4.988c-2.769 0-4.496-2.258-3.858-5.045L18.964 6.045C19.601 3.259 22.363 1 25.131 1z" fill="url(#1652546328)"/><path d="M59.662 68.558h21.613c2.513 0 4.55 2.125 4.55 4.746s-2.037 4.747-4.55 4.747H59.662c-2.513 0-4.55-2.125-4.55-4.747 0-2.621 2.037-4.746 4.55-4.746zM73.681 47.455c-.372.749-1.144 1.575-2.509 2.534L31.059 78.798c-2.19 1.591-5.334 1.001-7.021-1.319s-1.28-5.49.91-7.082l36.173-26.194v-.538L38.393 19.487c-1.854-1.972-1.661-5.161.431-7.124 2.092-1.962 5.29-1.954 7.144.018l27.271 29.012c1.548 1.647 1.663 4.141.442 6.062z" fill="#2c5591"/><path d="M72.681 46.455c-.372.749-1.144 1.575-2.509 2.534L30.059 77.798c-2.19 1.591-5.334 1.001-7.021-1.319s-1.28-5.49.91-7.082l36.173-26.194v-.538L37.393 18.487c-1.854-1.972-1.661-5.161.431-7.124 2.092-1.962 5.29-1.954 7.144.018l27.271 29.012c1.548 1.647 1.663 4.141.442 6.062zM59.047 68H80.66c2.513 0 4.55 2.015 4.55 4.5S83.173 77 80.66 77H59.047c-2.513 0-4.55-2.015-4.55-4.5s2.037-4.5 4.55-4.5z" fill="#fff"/></g></svg>

Before

Width:  |  Height:  |  Size: 660 B

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -1 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 96 95.51"><defs><style>.a{fill:#fff;}.a,.h{fill-rule:evenodd;}.b{mask:url(#a);}.c{fill:#52218a;}.d{fill:#6c33af;}.e{fill:#854cc7;}.f{fill:#b179f1;}.g{opacity:0.25;}.h{fill:url(#b);}</style><mask id="a" x="0" y="0" width="96" height="95.51" maskUnits="userSpaceOnUse"><g transform="translate(0 -0.25)"><path class="a" d="M68.89,95.6a6,6,0,0,0,3.93-.44L92.6,85.65A6,6,0,0,0,96,80.24V15.76a6,6,0,0,0-3.4-5.41L72.82.84A6,6,0,0,0,68.34.55,6,6,0,0,0,66,2L34.12,37.26,15.5,22l-1.63-1.4a4,4,0,0,0-3.61-.83,2.55,2.55,0,0,0-.53.18L2.46,23A4,4,0,0,0,0,26.37c0,.1,0,.2,0,.3V69.33c0,.1,0,.2,0,.3A4,4,0,0,0,2.46,73l7.27,3a2.55,2.55,0,0,0,.53.18,4,4,0,0,0,3.61-.83L15.5,74,34.12,58.74,66,94A6,6,0,0,0,68.89,95.6ZM72,27.68,47.21,48,72,68.32ZM12,34.27,24.41,48,12,61.73Z"></path></g></mask><linearGradient id="b" x1="48" y1="97.75" x2="48" y2="2.25" gradientTransform="matrix(1, 0, 0, -1, 0, 98)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff"></stop><stop offset="1" stop-color="#fff" stop-opacity="0"></stop></linearGradient></defs><title>BrandVisualStudioWin2019</title><g class="b"><path class="c" d="M13.87,75.4a4,4,0,0,1-4.14.65L2.46,73A4,4,0,0,1,0,69.33V26.67A4,4,0,0,1,2.46,23l7.27-3a4,4,0,0,1,4.14.65L15.5,22A2.21,2.21,0,0,0,12,23.8V72.2A2.21,2.21,0,0,0,15.5,74Z" transform="translate(0 -0.25)"></path><path class="d" d="M2.46,73A4,4,0,0,1,0,69.33V69a2.31,2.31,0,0,0,4,1.55L66,2A6,6,0,0,1,72.82.84L92.6,10.36A6,6,0,0,1,96,15.77V16a3.79,3.79,0,0,0-6.19-2.93L15.5,74l-1.63,1.4a4,4,0,0,1-4.14.65Z" transform="translate(0 -0.25)"></path><path class="e" d="M2.46,23A4,4,0,0,0,0,26.67V27a2.31,2.31,0,0,1,4-1.55L66,94a6,6,0,0,0,6.82,1.16L92.6,85.64A6,6,0,0,0,96,80.23V80a3.79,3.79,0,0,1-6.19,2.93L15.5,22l-1.63-1.4A4,4,0,0,0,9.73,20Z" transform="translate(0 -0.25)"></path><path class="f" d="M72.82,95.16A6,6,0,0,1,66,94a3.52,3.52,0,0,0,6-2.49v-87A3.52,3.52,0,0,0,66,2,6,6,0,0,1,72.82.84L92.6,10.35A6,6,0,0,1,96,15.76V80.24a6,6,0,0,1-3.4,5.41Z" transform="translate(0 -0.25)"></path><g class="g"><path class="h" d="M68.89,95.6a6,6,0,0,0,3.93-.44L92.6,85.65A6,6,0,0,0,96,80.24V15.76a6,6,0,0,0-3.4-5.41L72.82.84A6,6,0,0,0,68.34.55,6,6,0,0,0,66,2L34.12,37.26,15.5,22l-1.63-1.4a4,4,0,0,0-3.61-.83,2.55,2.55,0,0,0-.53.18L2.46,23A4,4,0,0,0,0,26.37c0,.1,0,.2,0,.3V69.33c0,.1,0,.2,0,.3A4,4,0,0,0,2.46,73l7.27,3a2.55,2.55,0,0,0,.53.18,4,4,0,0,0,3.61-.83L15.5,74,34.12,58.74,66,94A6,6,0,0,0,68.89,95.6ZM72,27.68,47.21,48,72,68.32ZM12,34.27,24.41,48,12,61.73Z" transform="translate(0 -0.25)"></path></g></g></svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1 @@
<svg width="57.04" height="57.04" color-interpolation-filters="sRGB" viewBox="0 0 42.78 42.78" xmlns="http://www.w3.org/2000/svg" fill="none" fill-rule="evenodd" font-size="12" overflow="visible" stroke-linecap="square" stroke-miterlimit="3"><g transform="translate(-1.5 -1.5)"><g transform="translate(1.5 -1.5)"><path d="M32.08 3v36.74L0 34.97l32.08 10.81 10.7-4.45V7.45zM11.02 23.58l9.83 9.72 5.88-2.5V11.74l-5.88-2.5-9.83 9.72-5.91-4.46-2.44.82v11.9l2.44.82zm9.83-7.41v10.2l-6.76-5.1zM5.11 17.73l3.58 3.54-3.58 3.54z" fill="#5c2d91"/></g></g></svg>

After

Width:  |  Height:  |  Size: 551 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 96 95.503" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="1652546395" x1="48" x2="48" y1="97.75" y2="2.25" gradientTransform="matrix(1 0 0 -1 0 98)" gradientUnits="userSpaceOnUse"><stop stop-color="#fff" offset="0"/><stop stop-color="#fff" stop-opacity="0" offset="1"/></linearGradient><mask id="1652546356" x="0" y="0" width="96" height="95.51" maskUnits="userSpaceOnUse"><path transform="translate(0 -.25)" d="M68.89 95.6a6 6 0 003.93-.44l19.78-9.51a6 6 0 003.4-5.41V15.76a6 6 0 00-3.4-5.41L72.82.84a6 6 0 00-4.48-.29A6 6 0 0066 2L34.12 37.26 15.5 22l-1.63-1.4a4 4 0 00-3.61-.83 2.55 2.55 0 00-.53.18L2.46 23A4 4 0 000 26.37v43.26A4 4 0 002.46 73l7.27 3a2.55 2.55 0 00.53.18 4 4 0 003.61-.83L15.5 74l18.62-15.26L66 94a6 6 0 002.89 1.6zM72 27.68L47.21 48 72 68.32zm-60 6.59L24.41 48 12 61.73z" fill="#fff" fill-rule="evenodd"/></mask></defs><g transform="translate(0 .002)" mask="url(#1652546356)"><path d="M13.87 75.15a4 4 0 01-4.14.65l-7.27-3.05A4 4 0 010 69.08V26.42a4 4 0 012.46-3.67l7.27-3a4 4 0 014.14.65l1.63 1.35a2.21 2.21 0 00-3.5 1.8v48.4a2.21 2.21 0 003.5 1.8z" fill="#52218a"/><path d="M2.46 72.75A4 4 0 010 69.08v-.33a2.31 2.31 0 004 1.55L66 1.75A6 6 0 0172.82.59l19.78 9.52a6 6 0 013.4 5.41v.23a3.79 3.79 0 00-6.19-2.93L15.5 73.75l-1.63 1.4a4 4 0 01-4.14.65z" fill="#6c33af"/><path d="M2.46 22.75A4 4 0 000 26.42v.33a2.31 2.31 0 014-1.55l62 68.55a6 6 0 006.82 1.16l19.78-9.52a6 6 0 003.4-5.41v-.23a3.79 3.79 0 01-6.19 2.93L15.5 21.75l-1.63-1.4a4 4 0 00-4.14-.6z" fill="#854cc7"/><path d="M72.82 94.91A6 6 0 0166 93.75a3.52 3.52 0 006-2.49v-87a3.52 3.52 0 00-6-2.51A6 6 0 0172.82.59L92.6 10.1a6 6 0 013.4 5.41v64.48a6 6 0 01-3.4 5.41z" fill="#b179f1"/><path transform="translate(0 -.25)" d="M68.89 95.6a6 6 0 003.93-.44l19.78-9.51a6 6 0 003.4-5.41V15.76a6 6 0 00-3.4-5.41L72.82.84a6 6 0 00-4.48-.29A6 6 0 0066 2L34.12 37.26 15.5 22l-1.63-1.4a4 4 0 00-3.61-.83 2.55 2.55 0 00-.53.18L2.46 23A4 4 0 000 26.37v43.26A4 4 0 002.46 73l7.27 3a2.55 2.55 0 00.53.18 4 4 0 003.61-.83L15.5 74l18.62-15.26L66 94a6 6 0 002.89 1.6zM72 27.68L47.21 48 72 68.32zm-60 6.59L24.41 48 12 61.73z" fill="url(#1652546395)" fill-rule="evenodd" opacity=".25"/></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -1,6 +1,7 @@
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'
import deepClone from 'clone-deep'
import { Injectable, Inject } from '@angular/core'
import { ProfileProvider, NewTabParameters, ConfigService, SplitTabComponent, AppService, PartialProfile, TranslateService } from 'tabby-core'
import { ProfileProvider, NewTabParameters, ConfigService, SplitTabComponent, AppService, PartialProfile } from 'tabby-core'
import { TerminalTabComponent } from './components/terminalTab.component'
import { LocalProfileSettingsComponent } from './components/localProfileSettings.component'
import { ShellProvider, Shell, SessionOptions, LocalProfile } from './api'
@@ -8,7 +9,7 @@ import { ShellProvider, Shell, SessionOptions, LocalProfile } from './api'
@Injectable({ providedIn: 'root' })
export class LocalProfilesService extends ProfileProvider<LocalProfile> {
id = 'local'
name = this.translate.instant('Local terminal')
name = _('Local terminal')
settingsComponent = LocalProfileSettingsComponent
configDefaults = {
options: {
@@ -29,7 +30,6 @@ export class LocalProfilesService extends ProfileProvider<LocalProfile> {
constructor (
private app: AppService,
private config: ConfigService,
private translate: TranslateService,
@Inject(ShellProvider) private shellProviders: ShellProvider[],
) {
super()
@@ -80,6 +80,7 @@ export class LocalProfilesService extends ProfileProvider<LocalProfile> {
command: shell.command,
args: shell.args ?? [],
env: shell.env,
cwd: shell.cwd,
}
}

View File

@@ -51,12 +51,18 @@ export class DockMenuService {
}
if (this.hostApp.platform === Platform.macOS) {
this.electron.app.dock.setMenu(this.electron.Menu.buildFromTemplate(
[...this.profilesService.getRecentProfiles(), ...profiles].map(profile => ({
label: profile.name,
click: () => this.zone.run(async () => {
this.profilesService.openNewTabForProfile(profile)
}),
})),
[
...[...this.profilesService.getRecentProfiles(), ...profiles].map(profile => ({
label: profile.name,
click: () => this.zone.run(async () => {
this.profilesService.openNewTabForProfile(profile)
}),
})),
{
label: this.translate.instant('New Window'),
click: () => this.zone.run(() => this.hostApp.newWindow()),
},
],
))
}
}

View File

@@ -47,7 +47,8 @@ export class TerminalService {
this.logger.info(`Starting profile ${fullProfile.name}`, fullProfile)
const options = {
...fullProfile.options,
pauseAfterExit: pause,
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
pauseAfterExit: fullProfile.options.pauseAfterExit || pause,
cwd: cwd ?? undefined,
}

View File

@@ -36,7 +36,7 @@ export class GitBashShellProvider extends ShellProvider {
return [{
id: 'git-bash',
name: 'Git-Bash',
name: 'Git Bash',
command: path.join(gitBashPath, 'bin', 'bash.exe'),
args: ['--login', '-i'],
icon: require('../icons/git-bash.svg'),

View File

@@ -26,6 +26,13 @@ export class MSYS2ShellProvider extends ShellProvider {
return []
}
let homePath: string|undefined = path.resolve(msys2Path, 'home', process.env.USERNAME!)
try {
await fs.access(msys2Path)
} catch {
homePath = undefined
}
const environments = ['msys', 'mingw64', 'clang64', 'ucrt64']
return environments.map(e => ({
@@ -35,6 +42,7 @@ export class MSYS2ShellProvider extends ShellProvider {
args: ['-defterm', '-here', '-no-start', '-' + e],
icon: require('../icons/msys2.svg'),
env: {},
cwd: homePath,
}))
}
}

View File

@@ -5,6 +5,14 @@ import { HostAppService, Platform } from 'tabby-core'
import { ShellProvider, Shell } from '../api'
/* eslint-disable quote-props */
const vsIconMap: Record<string, string> = {
'2017': require('../icons/vs2017.svg'),
'2019': require('../icons/vs2019.svg'),
'2022': require('../icons/vs2022.svg'),
}
/* eslint-enable quote-props */
/** @hidden */
@Injectable()
export class VSDevToolsProvider extends ShellProvider {
@@ -19,30 +27,32 @@ export class VSDevToolsProvider extends ShellProvider {
return []
}
const parentPath = path.join(process.env['programfiles(x86)'] ?? 'C:\\Program Files (x86', 'Microsoft Visual Studio')
try {
await fs.stat(parentPath)
} catch {
return []
}
const x86ParentPath = path.join(process.env['programfiles(x86)'] ?? 'C:\\Program Files (x86)', 'Microsoft Visual Studio')
const x64ParentPath = path.join(process.env['programfiles'] ?? 'C:\\Program Files', 'Microsoft Visual Studio')
const result: Shell[] = []
for (const version of await fs.readdir(parentPath)) {
const bat = path.join(parentPath, version, 'Community\\Common7\\Tools\\VsDevCmd.bat')
for (const parentPath of [x86ParentPath, x64ParentPath]) {
try {
await fs.stat(bat)
} catch {
continue
await fs.stat(parentPath)
for (const version of await fs.readdir(parentPath)) {
const bat = path.join(parentPath, version, 'Community\\Common7\\Tools\\VsDevCmd.bat')
try {
await fs.stat(bat)
} catch {
continue
}
result.push({
id: `vs-cmd-${version}`,
name: `Developer Prompt for VS ${version}`,
command: 'cmd.exe',
args: ['/k', bat],
icon: vsIconMap[version],
env: {},
})
}
} catch (_) {
// Ignore
}
result.push({
id: `vs-cmd-${version}`,
name: `Developer Prompt for VS ${version}`,
command: 'cmd.exe',
args: ['/k', bat],
icon: require('../icons/vs.svg'),
env: {},
})
}
return result

Some files were not shown because too many files have changed in this diff Show More