var terminalContainer = document.getElementById('terminal-container'),
- term = new Terminal({
- geometry: [95, 37]
- });
+ term = new Terminal();
+
+term.open(terminalContainer);
+term.fit();
term.prompt = function () {
term.write('\r\n> ');
}
-term.open(terminalContainer);
term.writeln('Welcome to xterm.js');
term.writeln('Just type some keys in the prompt below.');
term.writeln('');
this.normal = null;
- this.emit('resize', {terminal: this, columns: x, rows: y});
-};
+ this.emit('resize', {terminal: this, cols: x, rows: y});
+};
+
+/*
+* Fit terminal columns and rows to the dimensions of its
+* DOM element.
+*
+* Approach:
+* - Rows: Truncate the division of the terminal parent element height
+* by the terminal row height
+*
+* - Columns: Truncate the division of the terminal parent element width by
+* the terminal character width (apply display: inline at the
+* terminal row and truncate its width with the current number
+* of columns)
+*/
+Terminal.prototype.fit = function () {
+ var container = this.element.parentElement,
+ subjectRow = this.element.firstElementChild,
+ rows = parseInt(container.offsetHeight / subjectRow.offsetHeight),
+ characterWidth,
+ cols;
+
+ subjectRow.style.display = 'inline';
+ characterWidth = parseInt(subjectRow.offsetWidth / this.cols);
+ subjectRow.style.display = '';
+
+ cols = parseInt(container.offsetWidth / characterWidth);
+
+ this.resize(cols, rows);
+}
Terminal.prototype.updateRange = function(y) {
if (y < this.refreshStart) this.refreshStart = y;