From a0fac8a8db6985b06c567a60125a57fffdcb7e0b Mon Sep 17 00:00:00 2001 From: Jay Weisskopf Date: Sat, 31 Dec 2011 19:46:44 -0600 Subject: [PATCH] Write the OSC title to the window's title instead of the status bar. 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 | 22 +++++++++++++--------- shellinabox/vt100.js | 22 +++++++++++++--------- shellinabox/vt100.jspp | 22 +++++++++++++--------- 3 files changed, 39 insertions(+), 27 deletions(-) mode change 100644 => 100755 shellinabox/vt100.jspp diff --git a/demo/vt100.js b/demo/vt100.js index ddbdd7e..317ce0c 100644 --- a/demo/vt100.js +++ b/demo/vt100.js @@ -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 */: diff --git a/shellinabox/vt100.js b/shellinabox/vt100.js index ddbdd7e..317ce0c 100644 --- a/shellinabox/vt100.js +++ b/shellinabox/vt100.js @@ -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 */: diff --git a/shellinabox/vt100.jspp b/shellinabox/vt100.jspp old mode 100644 new mode 100755 index c8b2744..77bb89d --- a/shellinabox/vt100.jspp +++ b/shellinabox/vt100.jspp @@ -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: