tabby-rdp 0.2.7 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +72 -2
- package/README.md +182 -21
- package/dist/connectionStatus.js +140 -0
- package/dist/connectionStatus.js.map +1 -0
- package/dist/desk.js +21 -10
- package/dist/desk.js.map +1 -1
- package/dist/deskScript.js +3 -0
- package/dist/deskScript.js.map +1 -1
- package/dist/desktop.service.js +994 -53
- package/dist/desktop.service.js.map +1 -1
- package/dist/desktopForm.js +64 -19
- package/dist/desktopForm.js.map +1 -1
- package/dist/desktops.js +60 -21
- package/dist/desktops.js.map +1 -1
- package/dist/fileTransfer.js +152 -5
- package/dist/fileTransfer.js.map +1 -1
- package/dist/header.js +22 -7
- package/dist/header.js.map +1 -1
- package/dist/help.js +241 -0
- package/dist/help.js.map +1 -0
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/keyboard.js +142 -5
- package/dist/keyboard.js.map +1 -1
- package/dist/microphone.js +295 -0
- package/dist/microphone.js.map +1 -0
- package/dist/osd.js +79 -0
- package/dist/osd.js.map +1 -0
- package/dist/probe.js +33 -0
- package/dist/probe.js.map +1 -0
- package/dist/rdcleanpath.js +132 -7
- package/dist/rdcleanpath.js.map +1 -1
- package/dist/rdpFile.js +47 -0
- package/dist/rdpFile.js.map +1 -0
- package/dist/rdpProfile.js +367 -0
- package/dist/rdpProfile.js.map +1 -0
- package/dist/remoteSetup.js +90 -11
- package/dist/remoteSetup.js.map +1 -1
- package/dist/settingsPage.js +554 -0
- package/dist/settingsPage.js.map +1 -0
- package/dist/signin.js +21 -2
- package/dist/signin.js.map +1 -1
- package/dist/ssh.js +28 -0
- package/dist/ssh.js.map +1 -1
- package/dist/targets.js +148 -8
- package/dist/targets.js.map +1 -1
- package/dist/ui.js +163 -24
- package/dist/ui.js.map +1 -1
- package/dist/updates.js +123 -0
- package/dist/updates.js.map +1 -0
- package/dist/vms.js +90 -0
- package/dist/vms.js.map +1 -0
- package/dist/wake.js +124 -0
- package/dist/wake.js.map +1 -0
- package/package.json +2 -1
- package/vendor/IRONRDP-LICENSE +3 -3
- package/vendor/iron-remote-desktop-rdp.js +698 -451
- package/vendor/iron-remote-desktop.js +87 -81
- package/vendor/ironrdp_web_bg.wasm +0 -0
package/dist/fileTransfer.js
CHANGED
|
@@ -1,10 +1,105 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FileTransfer = exports.STYLE = void 0;
|
|
4
|
+
exports.clipboardPaths = clipboardPaths;
|
|
4
5
|
exports.savePath = savePath;
|
|
6
|
+
exports.uniquePath = uniquePath;
|
|
5
7
|
const fs = require("fs");
|
|
6
8
|
const os = require("os");
|
|
7
9
|
const path = require("path");
|
|
10
|
+
/** Limits for a copied folder, as for a dropped one in IronRDP. */
|
|
11
|
+
const MAX_ENTRIES = 10000;
|
|
12
|
+
const MAX_DEPTH = 20;
|
|
13
|
+
/**
|
|
14
|
+
* Files copied in Finder (Explorer, Files): their paths, from the local clipboard. Empty when it holds no files.
|
|
15
|
+
*/
|
|
16
|
+
function clipboardPaths() {
|
|
17
|
+
const { clipboard } = require('electron');
|
|
18
|
+
const read = (format) => {
|
|
19
|
+
try {
|
|
20
|
+
return clipboard.read(format) ?? '';
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return '';
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
if (process.platform === 'darwin') {
|
|
27
|
+
const plist = read('NSFilenamesPboardType');
|
|
28
|
+
const paths = [...plist.matchAll(/<string>([^<]*)<\/string>/g)].map(m => m[1]
|
|
29
|
+
.replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, "'").replace(/&/g, '&'));
|
|
30
|
+
if (paths.length) {
|
|
31
|
+
return paths;
|
|
32
|
+
}
|
|
33
|
+
const url = read('public.file-url');
|
|
34
|
+
return url.startsWith('file://') ? [decodeURIComponent(new URL(url).pathname)] : [];
|
|
35
|
+
}
|
|
36
|
+
if (process.platform === 'win32') {
|
|
37
|
+
try {
|
|
38
|
+
const name = clipboard.readBuffer('FileNameW').toString('ucs2').replace(/\0+$/, '');
|
|
39
|
+
return name ? [name] : [];
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const list = read('x-special/gnome-copied-files') || read('text/uri-list');
|
|
46
|
+
return list.split(/\r?\n/).filter(l => l.startsWith('file://')).map(l => decodeURIComponent(new URL(l).pathname));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A file on disk, for IronRDP's upload: it reads `slice(start, end)` of a file as the remote asks for each range, so
|
|
50
|
+
* only that range is read, not the whole file up front.
|
|
51
|
+
*/
|
|
52
|
+
class DiskFile {
|
|
53
|
+
constructor(file, name, size, lastModified) {
|
|
54
|
+
this.file = file;
|
|
55
|
+
this.name = name;
|
|
56
|
+
this.size = size;
|
|
57
|
+
this.lastModified = lastModified;
|
|
58
|
+
this.type = '';
|
|
59
|
+
}
|
|
60
|
+
slice(start = 0, end = this.size) {
|
|
61
|
+
const length = Math.max(0, Math.min(end, this.size) - start);
|
|
62
|
+
const buffer = Buffer.alloc(length);
|
|
63
|
+
const fd = fs.openSync(this.file, 'r');
|
|
64
|
+
try {
|
|
65
|
+
let done = 0;
|
|
66
|
+
while (done < length) {
|
|
67
|
+
const n = fs.readSync(fd, buffer, done, length - done, start + done);
|
|
68
|
+
if (!n) {
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
done += n;
|
|
72
|
+
}
|
|
73
|
+
return new Blob([buffer.subarray(0, done)]);
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
fs.closeSync(fd);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** IronRDP's DroppedFile entries for paths on disk: files, and folders with everything in them (`path`: the folder, `\`-separated). */
|
|
81
|
+
function entriesFor(paths) {
|
|
82
|
+
const entries = [];
|
|
83
|
+
const walk = (file, parent, depth) => {
|
|
84
|
+
if (entries.length >= MAX_ENTRIES || depth > MAX_DEPTH) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const stat = fs.statSync(file, { throwIfNoEntry: false });
|
|
88
|
+
const name = path.basename(file);
|
|
89
|
+
if (stat?.isFile()) {
|
|
90
|
+
entries.push({ file: new DiskFile(file, name, stat.size, stat.mtimeMs), name, size: stat.size, lastModified: stat.mtimeMs, path: parent });
|
|
91
|
+
}
|
|
92
|
+
else if (stat?.isDirectory()) {
|
|
93
|
+
entries.push({ file: null, name, size: 0, lastModified: 0, path: parent, isDirectory: true });
|
|
94
|
+
const inner = parent !== undefined ? `${parent}\\${name}` : name;
|
|
95
|
+
for (const child of fs.readdirSync(file).sort()) {
|
|
96
|
+
walk(path.join(file, child), inner, depth + 1);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
paths.forEach(p => walk(p, undefined, 0));
|
|
101
|
+
return entries;
|
|
102
|
+
}
|
|
8
103
|
exports.STYLE = `
|
|
9
104
|
.trd-toast { position: absolute; top: 12px; right: 12px; z-index: 2; max-width: min(420px, calc(100% - 24px));
|
|
10
105
|
display: flex; gap: 10px; align-items: center; padding: 8px 10px; border-radius: 6px;
|
|
@@ -30,6 +125,10 @@ class FileTransfer {
|
|
|
30
125
|
this.offered = [];
|
|
31
126
|
/** Where the last save went (for tests and "Show in Finder"). */
|
|
32
127
|
this.lastSaved = [];
|
|
128
|
+
/** The copied files offered for a paste and not pasted yet (see pasteClipboardFiles). */
|
|
129
|
+
this.pendingPaste = null;
|
|
130
|
+
/** Resolves when the remote has taken in the files last offered (its Format List Response): true if it accepted them. */
|
|
131
|
+
this.offerTaken = null;
|
|
33
132
|
this.provider = new rdp.RdpFileTransferProvider({ storageBackend: 'blob' });
|
|
34
133
|
this.provider.on('files-available', (files) => this.offer(files));
|
|
35
134
|
this.provider.on('error', (e) => {
|
|
@@ -61,20 +160,68 @@ class FileTransfer {
|
|
|
61
160
|
}, true);
|
|
62
161
|
}
|
|
63
162
|
/** Mac → remote: offers the files on the remote clipboard; the remote copies them when they're pasted. */
|
|
64
|
-
send(files) {
|
|
163
|
+
send(files, pasting = false) {
|
|
65
164
|
const count = files.filter(f => !f.isDirectory).length;
|
|
66
165
|
if (!count) {
|
|
67
|
-
return;
|
|
166
|
+
return null;
|
|
68
167
|
}
|
|
69
168
|
try {
|
|
169
|
+
// The remote answers the new clipboard before it can paste it; a paste sent sooner gets what it had.
|
|
170
|
+
this.offerTaken = new Promise(resolve => {
|
|
171
|
+
const answered = (ok) => {
|
|
172
|
+
this.provider.off('format-list-response', answered);
|
|
173
|
+
resolve(!!ok);
|
|
174
|
+
};
|
|
175
|
+
this.provider.on('format-list-response', answered);
|
|
176
|
+
});
|
|
70
177
|
const upload = this.provider.uploadFiles(files);
|
|
71
|
-
this.log(`files: offered ${count} to the remote`);
|
|
72
|
-
this.toast(`${plural(count, 'file')} ready: paste on the remote desktop (⌘V) to copy ${count === 1 ? 'it' : 'them'} there`, [], 0);
|
|
73
|
-
upload.completion.then(() => { this.log('files: pasted on the remote'); this.toast(`Copied ${plural(count, 'file')} to the remote desktop`); }, (e) => { this.log(`files: upload: ${e?.message ?? e}`); this.toast(`Copying to the remote desktop failed: ${e?.message ?? e}`); });
|
|
178
|
+
this.log(`files: offered ${count} to the remote${pasting ? ' (copied here, pasted there)' : ''}`);
|
|
179
|
+
this.toast(pasting ? `Pasting ${plural(count, 'file')}…` : `${plural(count, 'file')} ready: paste on the remote desktop (⌘V) to copy ${count === 1 ? 'it' : 'them'} there`, [], 0);
|
|
180
|
+
return upload.completion.then(() => { this.log('files: pasted on the remote'); this.toast(`Copied ${plural(count, 'file')} to the remote desktop`); }, (e) => { this.log(`files: upload: ${e?.message ?? e}`); this.toast(`Copying to the remote desktop failed: ${e?.message ?? e}`); });
|
|
74
181
|
}
|
|
75
182
|
catch (e) {
|
|
76
183
|
this.toast(`Couldn't offer the files: ${e?.message ?? e}`);
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Resolves once the remote has taken in the files just offered (true), or said no (false), or after `timeoutMs`
|
|
189
|
+
* without an answer (true: paste anyway), so that a paste sent then gets them.
|
|
190
|
+
*/
|
|
191
|
+
offerAnswered(timeoutMs = 3000) {
|
|
192
|
+
const taken = this.offerTaken;
|
|
193
|
+
return taken ? Promise.race([taken, new Promise(resolve => setTimeout(() => resolve(true), timeoutMs))]) : Promise.resolve(true);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* ⌘V (Ctrl+V) on the desktop with files copied here (Finder, Explorer, Files): offers them on the remote clipboard
|
|
197
|
+
* for that paste. True when it did, and the paste should wait a moment for the remote to see them; false when the
|
|
198
|
+
* clipboard holds no files, or these are already offered and not pasted yet.
|
|
199
|
+
*/
|
|
200
|
+
pasteClipboardFiles() {
|
|
201
|
+
const paths = clipboardPaths();
|
|
202
|
+
if (!paths.length) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
const key = paths.join('\n');
|
|
206
|
+
if (this.pendingPaste === key) {
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
let entries;
|
|
210
|
+
try {
|
|
211
|
+
entries = entriesFor(paths);
|
|
212
|
+
}
|
|
213
|
+
catch (e) {
|
|
214
|
+
this.toast(`Couldn't read the copied files: ${e?.message ?? e}`);
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
const done = this.send(entries, true);
|
|
218
|
+
if (!done) {
|
|
219
|
+
return false;
|
|
77
220
|
}
|
|
221
|
+
this.pendingPaste = key;
|
|
222
|
+
done.finally(() => { if (this.pendingPaste === key)
|
|
223
|
+
this.pendingPaste = null; });
|
|
224
|
+
return true;
|
|
78
225
|
}
|
|
79
226
|
/** Picks files on the Mac to send. */
|
|
80
227
|
async pickAndSend() {
|
package/dist/fileTransfer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileTransfer.js","sourceRoot":"","sources":["../src/fileTransfer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fileTransfer.js","sourceRoot":"","sources":["../src/fileTransfer.ts"],"names":[],"mappings":"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"}
|
package/dist/header.js
CHANGED
|
@@ -13,6 +13,8 @@ exports.HeaderControls = void 0;
|
|
|
13
13
|
const core_1 = require("@angular/core");
|
|
14
14
|
const tabby_core_1 = require("tabby-core");
|
|
15
15
|
const desktop_service_1 = require("./desktop.service");
|
|
16
|
+
const help_1 = require("./help");
|
|
17
|
+
const keyboard_1 = require("./keyboard");
|
|
16
18
|
const ssh_1 = require("./ssh");
|
|
17
19
|
const targets_1 = require("./targets");
|
|
18
20
|
const ui_1 = require("./ui");
|
|
@@ -27,12 +29,14 @@ const ICON_DISCONNECT = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 51
|
|
|
27
29
|
* sync with the active tab and the desktop state.
|
|
28
30
|
*/
|
|
29
31
|
let HeaderControls = class HeaderControls {
|
|
30
|
-
constructor(app, desktop, targets, platform, zone) {
|
|
32
|
+
constructor(app, desktop, targets, platform, keyboard, zone, help) {
|
|
31
33
|
this.app = app;
|
|
32
34
|
this.desktop = desktop;
|
|
33
35
|
this.targets = targets;
|
|
34
36
|
this.platform = platform;
|
|
37
|
+
this.keyboard = keyboard;
|
|
35
38
|
this.zone = zone;
|
|
39
|
+
this.help = help;
|
|
36
40
|
this.group = null;
|
|
37
41
|
this.scheduled = false;
|
|
38
42
|
}
|
|
@@ -63,7 +67,11 @@ let HeaderControls = class HeaderControls {
|
|
|
63
67
|
if (!pane) {
|
|
64
68
|
return;
|
|
65
69
|
}
|
|
66
|
-
await this.targets.targetOf(pane);
|
|
70
|
+
const target = await this.targets.targetOf(pane);
|
|
71
|
+
// Look for VMs on the host ahead of the menus (at most once a minute).
|
|
72
|
+
if (target) {
|
|
73
|
+
this.desktop.discoverVMs(target).catch(() => null);
|
|
74
|
+
}
|
|
67
75
|
this.schedule();
|
|
68
76
|
}
|
|
69
77
|
schedule() {
|
|
@@ -119,9 +127,12 @@ let HeaderControls = class HeaderControls {
|
|
|
119
127
|
event.preventDefault();
|
|
120
128
|
this.zone.run(() => {
|
|
121
129
|
const pane = (0, targets_1.desktopPaneOf)(this.app.activeTab);
|
|
122
|
-
const choices = pane ?
|
|
123
|
-
|
|
124
|
-
|
|
130
|
+
const choices = pane ? [
|
|
131
|
+
...(0, ui_1.desktopChoices)(this.desktop, pane, this.targets.cached(pane)?.label),
|
|
132
|
+
...(0, ui_1.desktopActions)(this.desktop, this.keyboard, pane),
|
|
133
|
+
] : [];
|
|
134
|
+
const settings = { label: 'Settings', submenu: (0, ui_1.settingsMenu)(this.desktop, pane, this.help) };
|
|
135
|
+
this.platform.popupContextMenu(choices.length ? [...choices, { type: 'separator' }, settings] : (0, ui_1.settingsMenu)(this.desktop, pane, this.help), event);
|
|
125
136
|
});
|
|
126
137
|
});
|
|
127
138
|
this.disconnectButton.title = 'Disconnect remote desktop';
|
|
@@ -144,8 +155,10 @@ let HeaderControls = class HeaderControls {
|
|
|
144
155
|
return;
|
|
145
156
|
}
|
|
146
157
|
const visible = this.desktop.isVisible(pane);
|
|
158
|
+
// None while a remote desktop tab shows its desktop: there is no console to switch to.
|
|
147
159
|
const title = (0, ui_1.toggleLabel)(this.desktop, pane);
|
|
148
|
-
|
|
160
|
+
this.toggleButton.style.display = title ? '' : 'none';
|
|
161
|
+
if (title && this.toggleButton.title !== title) {
|
|
149
162
|
this.toggleButton.title = title;
|
|
150
163
|
this.toggleButton.innerHTML = visible ? ICON_TERMINAL : ICON_DESKTOP;
|
|
151
164
|
}
|
|
@@ -159,6 +172,8 @@ exports.HeaderControls = HeaderControls = __decorate([
|
|
|
159
172
|
desktop_service_1.RemoteDesktopService,
|
|
160
173
|
targets_1.RemoteTargets,
|
|
161
174
|
tabby_core_1.PlatformService,
|
|
162
|
-
|
|
175
|
+
keyboard_1.DesktopKeyboard,
|
|
176
|
+
core_1.NgZone,
|
|
177
|
+
help_1.RemoteDesktopHelp])
|
|
163
178
|
], HeaderControls);
|
|
164
179
|
//# sourceMappingURL=header.js.map
|
package/dist/header.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sourceRoot":"","sources":["../src/header.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAkD;AAClD,2CAAyE;AACzE,uDAAwD;AACxD,+BAAgC;AAChC,uCAAwD;AACxD,
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../src/header.ts"],"names":[],"mappings":"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"}
|
package/dist/help.js
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RemoteDesktopHelp = exports.TROUBLESHOOTING = exports.SETTINGS_TAB_ID = exports.TOGGLE_HOTKEY = void 0;
|
|
13
|
+
exports.entryFor = entryFor;
|
|
14
|
+
exports.hotkeyLabel = hotkeyLabel;
|
|
15
|
+
const core_1 = require("@angular/core");
|
|
16
|
+
const rxjs_1 = require("rxjs");
|
|
17
|
+
const tabby_core_1 = require("tabby-core");
|
|
18
|
+
const tabby_settings_1 = require("tabby-settings");
|
|
19
|
+
exports.TOGGLE_HOTKEY = 'remote-desktop-toggle';
|
|
20
|
+
/** The plugin's page in Tabby's settings (see settingsPage.ts). */
|
|
21
|
+
exports.SETTINGS_TAB_ID = 'remote-desktop';
|
|
22
|
+
exports.TROUBLESHOOTING = [
|
|
23
|
+
{
|
|
24
|
+
id: 'certificate',
|
|
25
|
+
title: 'The certificate has changed',
|
|
26
|
+
match: /certificate/i,
|
|
27
|
+
body: `The first connection to a Windows or xrdp desktop remembers its certificate. When a later one differs, the
|
|
28
|
+
plugin stops before signing in, so nothing (no password) has been sent. Reinstalling the machine or renewing its
|
|
29
|
+
certificate changes it: then choose <b>Trust the new certificate</b>. If neither happened, something else is
|
|
30
|
+
answering at that address. A GNOME desktop only ever accepts the certificate the plugin made for it; a
|
|
31
|
+
different one there means another program listens on its port. Remembered certificates are listed above.`,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 'sign-in',
|
|
35
|
+
title: 'Wrong user name or password',
|
|
36
|
+
match: /sign-in|sign in|password|user name/i,
|
|
37
|
+
body: `Windows and xrdp desktops sign in with an account on that machine (<code>DOMAIN\\user</code> works). A saved
|
|
38
|
+
password that no longer works is asked for again; <b>Sign in again…</b> in the tab's menu replaces it on
|
|
39
|
+
purpose. xrdp doesn't refuse a wrong password: it shows its own login window instead. GNOME desktops never
|
|
40
|
+
ask: the plugin manages their sign-in.`,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: 'no-desktop',
|
|
44
|
+
title: 'No desktop found on a Linux host',
|
|
45
|
+
match: /GNOME|xrdp|grdctl|headless/i,
|
|
46
|
+
body: `The plugin uses GNOME Remote Desktop 46 or newer (Ubuntu 24.04, for example), with no root and no login
|
|
47
|
+
screen. For KDE, XFCE, MATE and others, install xrdp and a desktop for its sessions: on Debian and Ubuntu,
|
|
48
|
+
<code>sudo apt install xrdp xfce4</code>. A GNOME session already shared from the machine's own screen (GNOME's
|
|
49
|
+
Desktop Sharing) has to be turned off first.`,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'unreachable',
|
|
53
|
+
title: 'Can\'t reach a Windows desktop',
|
|
54
|
+
match: /refused|timed out|timeout|unreachable|ECONN|EHOST|no route|could not connect|couldn't connect/i,
|
|
55
|
+
body: `Windows needs Remote Desktop turned on (Settings › System › Remote Desktop; Pro, Enterprise or Server).
|
|
56
|
+
Behind an SSH host, the address is as that host sees it: from there, <code>nc -z <address> 3389</code>
|
|
57
|
+
should succeed. For a VM or machine that may be off, give the desktop a VM name or MAC address in its edit form
|
|
58
|
+
and it is started when opened.`,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: 'reconnecting',
|
|
62
|
+
title: 'It keeps reconnecting',
|
|
63
|
+
match: /reconnect|connection lost/i,
|
|
64
|
+
body: `After sleep or a network change the desktop reconnects by itself, with growing pauses, and waits while the
|
|
65
|
+
SSH connection is down (<b>Reconnect SSH</b> hurries that along). It stops after a few tries or on
|
|
66
|
+
<b>Stop</b>. If it drops again right after connecting, check the host's free memory and that the desktop's
|
|
67
|
+
session is still running there.`,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: 'picture',
|
|
71
|
+
title: 'The picture is blurry or slow',
|
|
72
|
+
match: /H\.264|decod|video/i,
|
|
73
|
+
body: `<b>Sharpness › Retina</b> renders at your screen's device pixels, with the remote's scale set to match. Video
|
|
74
|
+
(H.264) is used when the remote sends it: Windows does, GNOME only with a hardware encoder (VA-API or NVENC).
|
|
75
|
+
<b>Show connection status</b> shows the frame rate, the round trip and how the picture comes.`,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: 'sound',
|
|
79
|
+
title: 'No sound, or the microphone isn\'t heard',
|
|
80
|
+
body: `Sound and microphone changes apply on the next connection. xrdp needs <code>pipewire-module-xrdp</code> or
|
|
81
|
+
<code>pulseaudio-module-xrdp</code>. The microphone needs the system's permission here (macOS: System Settings ›
|
|
82
|
+
Privacy & Security › Microphone, then restart Tabby). On GNOME, apps record from "Remoteaudio Source"; on
|
|
83
|
+
Windows, the machine must allow audio recording redirection.`,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: 'nested-ssh',
|
|
87
|
+
title: 'I typed ssh to another machine in a terminal',
|
|
88
|
+
body: `In an SSH tab (or a split pane) where you typed <code>ssh</code> on to another machine, <b>Desktop</b> opens that
|
|
89
|
+
machine's desktop, going through the first one, and <code>desk</code> works there too. The first machine has to
|
|
90
|
+
log in to the other by itself for this: with a key there, or agent forwarding, as <code>ssh -o BatchMode=yes</code>
|
|
91
|
+
would. Tabby's <b>Reconnect</b> belongs to the tab: it reconnects the first machine and ends the ssh typed in it.
|
|
92
|
+
To have both desktops side by side, open the first machine's desktop in one pane, and ssh on in the other.`,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: 'extra-monitor',
|
|
96
|
+
title: 'GNOME shows an empty extra monitor',
|
|
97
|
+
body: `GNOME Remote Desktop's headless mode gives each client its own monitor: a second client for the same account
|
|
98
|
+
(another computer, or another Tabby window) gets an empty one. Use one client per account at a time.`,
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
/** The troubleshooting entry that explains a message, if one does. */
|
|
102
|
+
function entryFor(message) {
|
|
103
|
+
return exports.TROUBLESHOOTING.find(e => e.match?.test(message)) ?? null;
|
|
104
|
+
}
|
|
105
|
+
/** A hotkey as Tabby stores it ('⌘-Shift-G', or a sequence) as it reads on this platform: ⌘⇧G, Ctrl+Shift+G. */
|
|
106
|
+
function hotkeyLabel(binding) {
|
|
107
|
+
const first = Array.isArray(binding) ? binding[0] : null;
|
|
108
|
+
const strokes = Array.isArray(first) ? first : typeof first === 'string' ? [first] : [];
|
|
109
|
+
if (!strokes.length) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const mac = process.platform === 'darwin';
|
|
113
|
+
const MAC = { Shift: '⇧', Alt: '⌥', Ctrl: '⌃', Meta: '⌘', Cmd: '⌘' };
|
|
114
|
+
return strokes.map(s => s.split('-').map(k => mac ? MAC[k] ?? k : k).join(mac ? '' : '+')).join(', ');
|
|
115
|
+
}
|
|
116
|
+
const TIP_STYLE = `
|
|
117
|
+
.trd-tip { position: absolute; left: 50%; bottom: 16px; transform: translateX(-50%); z-index: 2; max-width: min(560px, 90%);
|
|
118
|
+
display: flex; gap: 12px; align-items: center; padding: 10px 12px 10px 14px; border-radius: 8px; font-size: 12px;
|
|
119
|
+
line-height: 1.5; color: #e6e6e6; background: rgba(28, 28, 30, 0.94); box-shadow: 0 4px 18px rgba(0, 0, 0, 0.45);
|
|
120
|
+
animation: trd-tip-in 0.2s ease-out; }
|
|
121
|
+
.trd-tip kbd { padding: 0 4px; border-radius: 3px; background: rgba(255, 255, 255, 0.12); color: inherit; font-size: 11px; }
|
|
122
|
+
.trd-tip-actions { display: flex; gap: 6px; flex: none; }
|
|
123
|
+
.trd-tip-actions button { font-size: 12px; padding: 2px 10px; }
|
|
124
|
+
.trd-note { z-index: 40; }
|
|
125
|
+
@keyframes trd-tip-in { from { opacity: 0; transform: translate(-50%, 6px); } }
|
|
126
|
+
`;
|
|
127
|
+
/**
|
|
128
|
+
* Help that comes to the user: the plugin's settings page, opened at a section, and one tip the first time a desktop
|
|
129
|
+
* connects. Nothing else pops up.
|
|
130
|
+
*/
|
|
131
|
+
let RemoteDesktopHelp = class RemoteDesktopHelp {
|
|
132
|
+
constructor(app, config, zone) {
|
|
133
|
+
this.app = app;
|
|
134
|
+
this.config = config;
|
|
135
|
+
this.zone = zone;
|
|
136
|
+
/** A section to show; the open settings page follows it (see settingsPage.ts). */
|
|
137
|
+
this.show$ = new rxjs_1.Subject();
|
|
138
|
+
/** For a settings page not yet made: where to scroll once it is. */
|
|
139
|
+
this.pending = null;
|
|
140
|
+
const style = document.createElement('style');
|
|
141
|
+
style.textContent = TIP_STYLE;
|
|
142
|
+
document.head.appendChild(style);
|
|
143
|
+
}
|
|
144
|
+
/** Opens Tabby's settings at the plugin's page, at `topic` (and a troubleshooting entry). */
|
|
145
|
+
open(topic = 'start', entry) {
|
|
146
|
+
this.zone.run(() => {
|
|
147
|
+
this.pending = { topic, entry };
|
|
148
|
+
this.openSettings(exports.SETTINGS_TAB_ID);
|
|
149
|
+
this.show$.next({ topic, entry });
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/** Opens Tabby's settings at one of its pages: this plugin's, or Tabby's own ('plugins', 'hotkeys', …). */
|
|
153
|
+
openSettings(page) {
|
|
154
|
+
this.zone.run(() => {
|
|
155
|
+
const tab = this.app.tabs.find(t => t instanceof tabby_settings_1.SettingsTabComponent);
|
|
156
|
+
if (tab) {
|
|
157
|
+
tab.activeTab = page;
|
|
158
|
+
this.app.selectTab(tab);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
this.app.openNewTabRaw({ type: tabby_settings_1.SettingsTabComponent, inputs: { activeTab: page } });
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/** "What does this mean?" under a message: the entry explaining it, else troubleshooting as a whole. */
|
|
166
|
+
explain(message) {
|
|
167
|
+
this.open('troubleshooting', entryFor(message)?.id);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* A note over a terminal pane, for something to read (a toast goes too fast): looks like the plugin's other notes
|
|
171
|
+
* (see fileTransfer.ts), stays until closed, replaced by the next one. `entry`: a troubleshooting entry for Help.
|
|
172
|
+
*/
|
|
173
|
+
note(container, text, entry) {
|
|
174
|
+
container.querySelector(':scope > .trd-note')?.remove();
|
|
175
|
+
if (getComputedStyle(container).position === 'static') {
|
|
176
|
+
container.style.position = 'relative';
|
|
177
|
+
}
|
|
178
|
+
const note = document.createElement('div');
|
|
179
|
+
note.className = 'trd-toast trd-note';
|
|
180
|
+
note.innerHTML = `<div class="trd-toast-text"></div>${entry ? '<button class="btn btn-secondary" data-more>Help</button>' : ''}<button class="btn btn-link" data-ok title="Dismiss">×</button>`;
|
|
181
|
+
note.querySelector('.trd-toast-text').textContent = text;
|
|
182
|
+
// Below an SSH tab's toolbar (Reconnect, SFTP…), not over it.
|
|
183
|
+
const toolbar = container.querySelector('terminal-toolbar');
|
|
184
|
+
if (toolbar?.offsetHeight) {
|
|
185
|
+
note.style.top = `${toolbar.offsetTop + toolbar.offsetHeight + 8}px`;
|
|
186
|
+
}
|
|
187
|
+
note.querySelector('[data-ok]').addEventListener('click', () => note.remove());
|
|
188
|
+
note.querySelector('[data-more]')?.addEventListener('click', () => {
|
|
189
|
+
note.remove();
|
|
190
|
+
this.open('troubleshooting', entry);
|
|
191
|
+
});
|
|
192
|
+
container.appendChild(note);
|
|
193
|
+
return note;
|
|
194
|
+
}
|
|
195
|
+
/** The desktop/console hotkey as it reads here, or null when it has none. */
|
|
196
|
+
toggleHotkey() {
|
|
197
|
+
return hotkeyLabel(this.config.store.hotkeys?.[exports.TOGGLE_HOTKEY]);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* The first time any desktop connects (and shows): what to know that isn't on screen. Once only, whether read or
|
|
201
|
+
* not; gone after a while, on Got it, or with the desktop. `hasConsole`: false in a remote desktop tab.
|
|
202
|
+
*/
|
|
203
|
+
tipOnce(overlay, hasConsole, onDone) {
|
|
204
|
+
const store = this.config.store.remoteDesktop;
|
|
205
|
+
if (!store || store.tipShown) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
store.tipShown = true;
|
|
209
|
+
this.config.save();
|
|
210
|
+
const k = (s) => `<kbd>${s}</kbd>`;
|
|
211
|
+
const mac = process.platform === 'darwin';
|
|
212
|
+
const hotkey = this.toggleHotkey();
|
|
213
|
+
const parts = [
|
|
214
|
+
hasConsole && hotkey ? `${k(hotkey)} switches back to the console.` : '',
|
|
215
|
+
mac ? `${k('⌃⌘')} with a key is the Windows key with it (${k('⌃⌘R')} for Win+R).` : '',
|
|
216
|
+
'Right-click the tab for Send keys, View only and screenshots.',
|
|
217
|
+
];
|
|
218
|
+
const tip = document.createElement('div');
|
|
219
|
+
tip.className = 'trd-tip';
|
|
220
|
+
tip.innerHTML = `<div>${parts.filter(Boolean).join(' ')}</div>
|
|
221
|
+
<div class="trd-tip-actions"><button class="btn btn-link" data-more>More tips</button><button class="btn btn-secondary" data-ok>Got it</button></div>`;
|
|
222
|
+
const close = () => {
|
|
223
|
+
clearTimeout(timer);
|
|
224
|
+
tip.remove();
|
|
225
|
+
onDone();
|
|
226
|
+
};
|
|
227
|
+
tip.querySelector('[data-ok]').addEventListener('click', close);
|
|
228
|
+
tip.querySelector('[data-more]').addEventListener('click', () => {
|
|
229
|
+
close();
|
|
230
|
+
this.open('keyboard');
|
|
231
|
+
});
|
|
232
|
+
const timer = setTimeout(() => tip.isConnected && close(), 25000);
|
|
233
|
+
overlay.appendChild(tip);
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
exports.RemoteDesktopHelp = RemoteDesktopHelp;
|
|
237
|
+
exports.RemoteDesktopHelp = RemoteDesktopHelp = __decorate([
|
|
238
|
+
(0, core_1.Injectable)({ providedIn: 'root' }),
|
|
239
|
+
__metadata("design:paramtypes", [tabby_core_1.AppService, tabby_core_1.ConfigService, core_1.NgZone])
|
|
240
|
+
], RemoteDesktopHelp);
|
|
241
|
+
//# sourceMappingURL=help.js.map
|
package/dist/help.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
|