]> andersk Git - test.git/commitdiff
Write the OSC title to the window's title instead of the status bar.
authorJay Weisskopf <jay@jayschwa.net>
Sun, 1 Jan 2012 01:46:44 +0000 (19:46 -0600)
committerJay Weisskopf <jay@jayschwa.net>
Sun, 1 Jan 2012 12:05:16 +0000 (06:05 -0600)
Most modern browsers no longer have status bars. Additionally,
using the window's title makes it seem more like a conventional
terminal application.

demo/vt100.js
shellinabox/vt100.js
shellinabox/vt100.jspp [changed mode: 0644->0755]

index ddbdd7e84e3ba1ee88aaa9bc3ef8c420db7ea46f..317ce0c5a97714dcafb843121563ce8daa5fe5be 100644 (file)
@@ -80,7 +80,7 @@
 // #define ESignore       14
 // #define ESnonstd       15
 // #define ESpalette      16
-// #define ESstatus       17
+// #define EStitle        17
 // #define ESss2          18
 // #define ESss3          19
 
@@ -187,7 +187,7 @@ function VT100(container) {
                               this.CodePage437Map, this.DirectToFontMap ];
   this.savedValid         = [ ];
   this.respondString      = '';
-  this.statusString       = '';
+  this.titleString        = '';
   this.internalClipboard  = undefined;
   this.reset(true);
 }
@@ -3846,7 +3846,7 @@ VT100.prototype.doControl = function(ch) {
   case 0x8F: this.isEsc       = 19 /* ESss3 */;                                  break;
   case 0x9A: this.respondID();                                          break;
   case 0x9B: this.isEsc       = 2 /* ESsquare */;                               break;
-  case 0x07: if (this.isEsc != 17 /* ESstatus */) {
+  case 0x07: if (this.isEsc != 17 /* EStitle */) {
                this.beep();                                             break;
              }
              /* fall thru */
@@ -3885,7 +3885,7 @@ VT100.prototype.doControl = function(ch) {
       switch (ch) {
 /*0*/ case 0x30:
 /*1*/ case 0x31:
-/*2*/ case 0x32: this.statusString = ''; this.isEsc  = 17 /* ESstatus */;        break;
+/*2*/ case 0x32: this.isEsc   = 17 /* EStitle */; this.titleString = '';         break;
 /*P*/ case 0x50: this.npar    = 0; this.par = [ 0, 0, 0, 0, 0, 0, 0 ];
                  this.isEsc   = 16 /* ESpalette */;                              break;
 /*R*/ case 0x52: // Palette support is not implemented
@@ -4081,18 +4081,22 @@ VT100.prototype.doControl = function(ch) {
         this.translate        = this.GMap[g];
       }
       break;
-    case 17 /* ESstatus */:
+    case 17 /* EStitle */:
       if (ch == 0x07) {
-        if (this.statusString && this.statusString.charAt(0) == ';') {
-          this.statusString   = this.statusString.substr(1);
+        if (this.titleString && this.titleString.charAt(0) == ';') {
+          this.titleString    = this.titleString.substr(1);
+          if (this.titleString != '') {
+            this.titleString += ' - ';
+          }
+          this.titleString += 'Shell In A Box'
         }
         try {
-          window.status       = this.statusString;
+          window.document.title = this.titleString;
         } catch (e) {
         }
         this.isEsc            = 0 /* ESnormal */;
       } else {
-        this.statusString    += String.fromCharCode(ch);
+        this.titleString     += String.fromCharCode(ch);
       }
       break;
     case 18 /* ESss2 */:
index ddbdd7e84e3ba1ee88aaa9bc3ef8c420db7ea46f..317ce0c5a97714dcafb843121563ce8daa5fe5be 100644 (file)
@@ -80,7 +80,7 @@
 // #define ESignore       14
 // #define ESnonstd       15
 // #define ESpalette      16
-// #define ESstatus       17
+// #define EStitle        17
 // #define ESss2          18
 // #define ESss3          19
 
@@ -187,7 +187,7 @@ function VT100(container) {
                               this.CodePage437Map, this.DirectToFontMap ];
   this.savedValid         = [ ];
   this.respondString      = '';
-  this.statusString       = '';
+  this.titleString        = '';
   this.internalClipboard  = undefined;
   this.reset(true);
 }
@@ -3846,7 +3846,7 @@ VT100.prototype.doControl = function(ch) {
   case 0x8F: this.isEsc       = 19 /* ESss3 */;                                  break;
   case 0x9A: this.respondID();                                          break;
   case 0x9B: this.isEsc       = 2 /* ESsquare */;                               break;
-  case 0x07: if (this.isEsc != 17 /* ESstatus */) {
+  case 0x07: if (this.isEsc != 17 /* EStitle */) {
                this.beep();                                             break;
              }
              /* fall thru */
@@ -3885,7 +3885,7 @@ VT100.prototype.doControl = function(ch) {
       switch (ch) {
 /*0*/ case 0x30:
 /*1*/ case 0x31:
-/*2*/ case 0x32: this.statusString = ''; this.isEsc  = 17 /* ESstatus */;        break;
+/*2*/ case 0x32: this.isEsc   = 17 /* EStitle */; this.titleString = '';         break;
 /*P*/ case 0x50: this.npar    = 0; this.par = [ 0, 0, 0, 0, 0, 0, 0 ];
                  this.isEsc   = 16 /* ESpalette */;                              break;
 /*R*/ case 0x52: // Palette support is not implemented
@@ -4081,18 +4081,22 @@ VT100.prototype.doControl = function(ch) {
         this.translate        = this.GMap[g];
       }
       break;
-    case 17 /* ESstatus */:
+    case 17 /* EStitle */:
       if (ch == 0x07) {
-        if (this.statusString && this.statusString.charAt(0) == ';') {
-          this.statusString   = this.statusString.substr(1);
+        if (this.titleString && this.titleString.charAt(0) == ';') {
+          this.titleString    = this.titleString.substr(1);
+          if (this.titleString != '') {
+            this.titleString += ' - ';
+          }
+          this.titleString += 'Shell In A Box'
         }
         try {
-          window.status       = this.statusString;
+          window.document.title = this.titleString;
         } catch (e) {
         }
         this.isEsc            = 0 /* ESnormal */;
       } else {
-        this.statusString    += String.fromCharCode(ch);
+        this.titleString     += String.fromCharCode(ch);
       }
       break;
     case 18 /* ESss2 */:
old mode 100644 (file)
new mode 100755 (executable)
index c8b2744..77bb89d
@@ -80,7 +80,7 @@
 #define ESignore       14
 #define ESnonstd       15
 #define ESpalette      16
-#define ESstatus       17
+#define EStitle        17
 #define ESss2          18
 #define ESss3          19
 
@@ -187,7 +187,7 @@ function VT100(container) {
                               this.CodePage437Map, this.DirectToFontMap ];
   this.savedValid         = [ ];
   this.respondString      = '';
-  this.statusString       = '';
+  this.titleString        = '';
   this.internalClipboard  = undefined;
   this.reset(true);
 }
@@ -3846,7 +3846,7 @@ VT100.prototype.doControl = function(ch) {
   case 0x8F: this.isEsc       = ESss3;                                  break;
   case 0x9A: this.respondID();                                          break;
   case 0x9B: this.isEsc       = ESsquare;                               break;
-  case 0x07: if (this.isEsc != ESstatus) {
+  case 0x07: if (this.isEsc != EStitle) {
                this.beep();                                             break;
              }
              /* fall thru */
@@ -3885,7 +3885,7 @@ VT100.prototype.doControl = function(ch) {
       switch (ch) {
 /*0*/ case 0x30:
 /*1*/ case 0x31:
-/*2*/ case 0x32: this.statusString = ''; this.isEsc  = ESstatus;        break;
+/*2*/ case 0x32: this.isEsc   = EStitle; this.titleString = '';         break;
 /*P*/ case 0x50: this.npar    = 0; this.par = [ 0, 0, 0, 0, 0, 0, 0 ];
                  this.isEsc   = ESpalette;                              break;
 /*R*/ case 0x52: // Palette support is not implemented
@@ -4081,18 +4081,22 @@ VT100.prototype.doControl = function(ch) {
         this.translate        = this.GMap[g];
       }
       break;
-    case ESstatus:
+    case EStitle:
       if (ch == 0x07) {
-        if (this.statusString && this.statusString.charAt(0) == ';') {
-          this.statusString   = this.statusString.substr(1);
+        if (this.titleString && this.titleString.charAt(0) == ';') {
+          this.titleString    = this.titleString.substr(1);
+          if (this.titleString != '') {
+            this.titleString += ' - ';
+          }
+          this.titleString += 'Shell In A Box'
         }
         try {
-          window.status       = this.statusString;
+          window.document.title = this.titleString;
         } catch (e) {
         }
         this.isEsc            = ESnormal;
       } else {
-        this.statusString    += String.fromCharCode(ch);
+        this.titleString     += String.fromCharCode(ch);
       }
       break;
     case ESss2:
This page took 0.047885 seconds and 5 git commands to generate.