diff --git a/src/linecomps.tsx b/src/linecomps.tsx
index 8df7e9de..8e682064 100644
--- a/src/linecomps.tsx
+++ b/src/linecomps.tsx
@@ -593,16 +593,20 @@ class Prompt extends React.Component<{rptr : RemotePtrType, festate : FeStateTyp
isRoot = true;
}
}
- let colorClass = (isRoot ? "color-red" : "color-green");
+ let remoteColorClass = (isRoot ? "color-red" : "color-green");
if (remote && remote.remoteopts && remote.remoteopts.color) {
- colorClass = "color-" + remote.remoteopts.color;
+ remoteColorClass = "color-" + remote.remoteopts.color;
}
// TESTING cwd shortening with triple colon character
// if (cwd.startsWith("~/work/gopath/src/github.com/scripthaus-dev")) {
// cwd = cwd.replace("~/work/gopath/src/github.com/scripthaus-dev", "\u22EEscripthaus-dev");
// }
+ let remoteTitle : string = null;
+ if (remote && remote.remotecanonicalname) {
+ remoteTitle = "connected to " + remote.remotecanonicalname;
+ }
return (
- [{remoteStr}] {cwd} {isRoot ? "#" : "$"}
+ [{remoteStr}] {cwd} {isRoot ? "#" : "$"}
);
}
}
diff --git a/src/main.tsx b/src/main.tsx
index 9aa30187..6c1b692d 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -1587,6 +1587,11 @@ class CmdInput extends React.Component<{}, {}> {
inputModel.openHistory();
}
}
+
+ @boundMethod
+ clickConnectRemote(remoteId : string) : void {
+ GlobalCommandRunner.connectRemote(remoteId);
+ }
render() {
let model = GlobalModel;
@@ -1627,6 +1632,12 @@ class CmdInput extends React.Component<{}, {}> {
+
+
+ WARNING:
[{GlobalModel.resolveRemoteIdToFullRef(remote.remoteid)}] is {remote.status}
+
this.clickConnectRemote(remote.remoteid)}>connect now
+
+
@@ -2475,7 +2486,7 @@ function getConnVal(r : RemoteType) : number {
if (r.status == "connected") {
return 1;
}
- if (r.status == "init" || r.status == "disconnected") {
+ if (r.status == "disconnected") {
return 2;
}
if (r.status == "error") {
diff --git a/src/model.ts b/src/model.ts
index 2dedbc98..5a79adb1 100644
--- a/src/model.ts
+++ b/src/model.ts
@@ -356,10 +356,11 @@ class Screen {
let oldSelectedLine = this.selectedLine.get();
let oldFocusType = this.focusType.get();
this.selectedLine.set(data.selectedline);
+ this.curRemote.set(data.curremote);
this.focusType.set(data.focustype);
this.refocusLine(data, oldFocusType, oldSelectedLine);
this.shareMode.set(data.sharemode);
- this.webShareOpts.set(data.webshreopts);
+ this.webShareOpts.set(data.webshareopts);
// do not update anchorLine/anchorOffset (only stored)
})();
}
@@ -3199,6 +3200,17 @@ class Model {
}
return remote.remotecanonicalname;
}
+
+ resolveRemoteIdToFullRef(remoteId : string) {
+ let remote = this.getRemote(remoteId)
+ if (remote == null) {
+ return "[unknown]";
+ }
+ if (!isBlank(remote.remotealias)) {
+ return remote.remotealias + " (" + remote.remotecanonicalname + ")";
+ }
+ return remote.remotecanonicalname;
+ }
}
class CommandRunner {
diff --git a/src/sh2.less b/src/sh2.less
index e2d9fc8c..80675932 100644
--- a/src/sh2.less
+++ b/src/sh2.less
@@ -1845,6 +1845,22 @@ body .xterm .xterm-viewport {
max-height: max(300px, 70%);
}
+ .remote-status-warning {
+ display: flex;
+ flex-direction: row;
+ color: @term-yellow;
+ align-items: center;
+ font-size: 14px;
+
+ .button {
+ margin-left: 10px;
+ }
+
+ .remote-name {
+ .mono-font(14px)
+ }
+ }
+
.input-minmax-control {
position: absolute;
top: 5px;
@@ -2268,7 +2284,7 @@ input[type=checkbox] {
color: @term-bright-red;
}
-#main .term-prompt {
+#main .term-prompt-remote {
color: @term-bright-green;
&.color-green {
@@ -2304,6 +2320,14 @@ input[type=checkbox] {
}
}
+#main .term-prompt-cwd {
+ color: @term-bright-green;
+}
+
+#main .term-prompt-end {
+ color: @term-bright-blue;
+}
+
#main .screen-tabs .screen-tab {
&.color-green {
color: @tab-black-text;
diff --git a/src/types.ts b/src/types.ts
index 0451d69c..f2712c98 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -4,6 +4,7 @@ import * as mobx from "mobx";
type ShareModeType = "local" | "web";
type FocusTypeStrs = "input"|"cmd"|"cmd-fg";
type HistoryTypeStrs = "global" | "session" | "screen";
+type RemoteStatusTypeStrs = "connected" | "connecting" | "disconnected" | "error";
type OV = mobx.IObservableValue;
@@ -83,7 +84,7 @@ type RemoteType = {
remotealias : string,
remotecanonicalname : string,
remotevars : Record,
- status : string,
+ status : RemoteStatusTypeStrs,
errorstr : string,
installstatus : string,
installerrorstr : string,
@@ -481,4 +482,4 @@ type HistorySearchParams = {
type RenderModeType = "normal" | "collapsed";
-export type {SessionDataType, LineType, RemoteType, RemoteStateType, RemoteInstanceType, HistoryItem, CmdRemoteStateType, FeCmdPacketType, TermOptsType, CmdStartPacketType, CmdDataType, ScreenDataType, ScreenOptsType, PtyDataUpdateType, ModelUpdateType, UpdateMessage, InfoType, CmdLineUpdateType, RemotePtrType, UIContextType, HistoryInfoType, HistoryQueryOpts, WatchScreenPacketType, TermWinSize, FeInputPacketType, RemoteInputPacketType, RemoteEditType, FeStateType, ContextMenuOpts, RendererContext, WindowSize, RendererModel, PtyDataType, BookmarkType, ClientDataType, PlaybookType, PlaybookEntryType, HistoryViewDataType, RenderModeType, AlertMessageType, HistorySearchParams, ScreenLinesType, FocusTypeStrs, HistoryTypeStrs, RendererOpts, RendererPluginType, SimpleBlobRendererComponent, RendererModelContainerApi, RendererModelInitializeParams, RendererOptsUpdate, ClientMigrationInfo, WebShareOpts};
+export type {SessionDataType, LineType, RemoteType, RemoteStateType, RemoteInstanceType, HistoryItem, CmdRemoteStateType, FeCmdPacketType, TermOptsType, CmdStartPacketType, CmdDataType, ScreenDataType, ScreenOptsType, PtyDataUpdateType, ModelUpdateType, UpdateMessage, InfoType, CmdLineUpdateType, RemotePtrType, UIContextType, HistoryInfoType, HistoryQueryOpts, WatchScreenPacketType, TermWinSize, FeInputPacketType, RemoteInputPacketType, RemoteEditType, FeStateType, ContextMenuOpts, RendererContext, WindowSize, RendererModel, PtyDataType, BookmarkType, ClientDataType, PlaybookType, PlaybookEntryType, HistoryViewDataType, RenderModeType, AlertMessageType, HistorySearchParams, ScreenLinesType, FocusTypeStrs, HistoryTypeStrs, RendererOpts, RendererPluginType, SimpleBlobRendererComponent, RendererModelContainerApi, RendererModelInitializeParams, RendererOptsUpdate, ClientMigrationInfo, WebShareOpts, RemoteStatusTypeStrs};