Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ OPTIONS:
-q, --exit-no-conn Exit on all clients disconnection
-B, --browser Open terminal with the default system browser
-I, --index Custom index.html path
-e, --Bell Custom Bell.mp3 path
-b, --base-path Expected base path for requests coming from a reverse proxy (eg: /mounted/here, max length: 128)
-P, --ping-interval Websocket ping interval(sec) (default: 5)
-6, --ipv6 Enable IPv6 support
Expand Down
14 changes: 13 additions & 1 deletion html/src/components/terminal/xterm/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ export class Xterm {
private reconnect = true;
private doReconnect = true;
private closeOnDisconnect = false;
private audio: HTMLAudioElement;

private writeFunc = (data: ArrayBuffer) => this.writeData(new Uint8Array(data));

Expand Down Expand Up @@ -171,7 +172,7 @@ export class Xterm {

@bind
private initListeners() {
const { terminal, fitAddon, overlayAddon, register, sendData } = this;
const { terminal, fitAddon, overlayAddon, register, sendData, Bell } = this;
register(
terminal.onTitleChange(data => {
if (data && data !== '' && !this.titleFixed) {
Expand All @@ -180,6 +181,11 @@ export class Xterm {
})
);
register(terminal.onData(data => sendData(data)));
register(
terminal.onBell(() => {
Bell();
})
);
register(terminal.onBinary(data => sendData(Uint8Array.from(data, v => v.charCodeAt(0)))));
register(
terminal.onResize(({ cols, rows }) => {
Expand All @@ -203,6 +209,11 @@ export class Xterm {
register(addEventListener(window, 'beforeunload', this.onWindowUnload));
}

@bind
public Bell() {
this.audio.play();
}

@bind
public writeData(data: string | Uint8Array) {
const { terminal, textEncoder } = this;
Expand Down Expand Up @@ -247,6 +258,7 @@ export class Xterm {
@bind
public connect() {
this.socket = new WebSocket(this.options.wsUrl, ['tty']);
this.audio = new Audio('Bell.mp3');
const { socket, register } = this;

socket.binaryType = 'arraybuffer';
Expand Down
118 changes: 118 additions & 0 deletions src/beep.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
/*----The Length of This Array is 1798 Byte.----*/
unsigned int beep_mp3_len = 1798;

unsigned char beep_mp3[] = {
0xFF,0xFB,0x90,0xC4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x58,0x69,0x6E,0x67,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,
0x05,0x00,0x00,0x07,0x06,0x00,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x65,0x65,0x65,0x65,0x65,0x65,
0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x8C,0x8C,
0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,
0x8C,0x8C,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,
0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x39,0x4C,0x41,0x4D,
0x45,0x33,0x2E,0x39,0x39,0x72,0x02,0xA5,0x00,0x00,0x00,0x00,0x2E,0x97,0x00,0x00,
0x14,0x46,0x24,0x03,0x06,0x42,0x00,0x00,0x46,0x00,0x00,0x07,0x06,0xA0,0x92,0x5E,
0xF4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0xFB,0x80,0xC4,0x00,0x00,0x09,0xB4,0x57,0x5A,0x74,0x67,0x80,0x03,0xD0,
0x34,0x27,0x47,0x37,0x60,0x02,0x00,0x03,0x3F,0xFC,0x06,0x4C,0x99,0x32,0x64,0xC9,
0x93,0x26,0x40,0x10,0x00,0x00,0x00,0x00,0x08,0x43,0xD2,0x9F,0xD1,0xE2,0x70,0xB6,
0x0F,0x40,0x39,0xC2,0x46,0x2E,0x64,0x2C,0xB9,0x9A,0x68,0x7A,0x1E,0xAF,0x56,0x2B,
0x15,0x8C,0x8F,0x1E,0x50,0x10,0x03,0x83,0xE0,0xF8,0x3F,0x50,0x21,0xEF,0xFE,0x5C,
0x3F,0xFC,0xB8,0x7E,0x9F,0x39,0xCB,0xF9,0xCE,0x03,0x7E,0x90,0xC7,0x01,0xBF,0x86,
0x39,0x7F,0x77,0x48,0x00,0x08,0x65,0x6A,0x46,0x92,0x85,0x29,0x96,0xEF,0x13,0x55,
0x78,0x32,0x25,0x79,0xE5,0xC9,0x29,0x74,0x8D,0xBA,0x24,0xED,0xBE,0xD3,0x41,0x0B,
0x10,0x4C,0x60,0xA2,0x00,0x61,0xA4,0x5F,0x01,0x8C,0x32,0x10,0x03,0x40,0x98,0x0C,
0x13,0x8C,0xB0,0x30,0x28,0x03,0x40,0xC0,0x48,0xA5,0x03,0x2D,0xA4,0x08,0x0C,0x93,
0x8C,0xA0,0x30,0x36,0x09,0x80,0xCD,0x3D,0x3B,0x03,0x73,0x44,0x98,0x06,0x87,0x60,
0x1C,0x06,0x61,0x40,0x65,0x79,0x24,0x85,0xC0,0x01,0x86,0x51,0x3C,0x06,0x0C,0x83,
0x08,0x18,0x56,0x09,0x20,0x61,0x08,0x22,0x87,0x70,0x2C,0xAC,0x36,0xF2,0x0E,0x06,
0x07,0x00,0xD8,0x7A,0x42,0x09,0x10,0x60,0x30,0x02,0x05,0x80,0xC0,0xC8,0x16,0x03,
0x03,0x60,0x90,0x02,0x00,0x68,0x18,0x0C,0x01,0x65,0x44,0x4F,0x98,0x29,0x15,0x25,
0x81,0x80,0xA0,0x22,0x03,0xC0,0x00,0x18,0x03,0x00,0x40,0x60,0x0C,0x03,0x05,0xF1,
0x06,0xE1,0x6B,0x29,0xFF,0x80,0x20,0x01,0x0E,0x48,0x2D,0x18,0x2C,0x28,0x47,0x21,
0x8A,0x42,0xDF,0x7F,0xFF,0x14,0x90,0x6A,0xE0,0xC8,0xC3,0x1A,0x20,0xA8,0x7C,0x23,
0x94,0x28,0x21,0x0B,0x7F,0xFF,0xE3,0x92,0x2E,0x51,0x5A,0x90,0xE1,0x73,0x0B,0x98,
0x86,0x8E,0x68,0xCA,0x93,0x43,0x9D,0xFF,0xFF,0xF8,0x85,0x87,0x24,0x5C,0xA2,0xB5,
0x21,0xC2,0xE6,0x17,0x31,0x0D,0x1C,0xD1,0x95,0x26,0x87,0x38,0x73,0x8A,0x24,0x57,
0xFF,0xFF,0xFF,0xF2,0xEA,0x45,0xE2,0xF2,0x08,0x01,0x22,0x89,0xFD,0x6E,0x93,0xAD,
0x12,0xE8,0xCE,0x83,0x61,0x44,0xEA,0x44,0x14,0x34,0xC0,0x00,0x00,0x84,0xFF,0xFB,
0x40,0xC4,0x0B,0x03,0xCD,0xB4,0x4F,0x18,0xDD,0x0F,0x80,0x01,0x15,0x89,0xE3,0x81,
0x4F,0xE6,0x08,0xC0,0x86,0x03,0xEC,0xC0,0xFA,0x01,0xC4,0xC0,0x13,0x02,0xD0,0xC2,
0x67,0x12,0x90,0xC5,0xD3,0x17,0x48,0xC9,0x6F,0x74,0x38,0xFD,0xE5,0x39,0xF4,0xC1,
0xCC,0x27,0xC4,0xC4,0x15,0x08,0xB0,0xC1,0x09,0x07,0x68,0xC2,0x49,0x06,0x80,0xC0,
0xBB,0x01,0x98,0xC0,0x4D,0x00,0x44,0xC0,0x70,0x01,0x7C,0xC0,0x22,0x00,0x0C,0x84,
0x01,0x42,0x20,0x02,0x57,0x32,0x97,0x1D,0x06,0x9E,0xC6,0x2D,0x46,0x9E,0xFF,0xFA,
0xE9,0xD7,0xFF,0x67,0xA7,0xFF,0xFF,0xFD,0x74,0xFF,0x4F,0xFF,0xE6,0x02,0xBE,0x19,
0x00,0x50,0xE1,0xB0,0x01,0x95,0x0E,0x06,0xC9,0x00,0x1D,0x98,0x26,0x04,0x80,0x0D,
0x86,0x07,0xE8,0x17,0x66,0x10,0x40,0x2F,0x86,0x39,0x49,0x80,0xE7,0xC2,0x58,0xB9,
0x46,0x23,0x40,0xC3,0xE6,0x0A,0x60,0x4C,0x86,0x00,0xC0,0x1D,0x26,0x00,0x58,0x0E,
0x06,0x17,0x60,0x97,0x04,0x45,0xA4,0xF3,0x23,0x81,0xDE,0xD9,0xE7,0x7F,0xFF,0xE9,
0x61,0x20,0x00,0x10,0xFF,0xFB,0x50,0xC4,0x02,0x01,0xCC,0x38,0x51,0x17,0x2D,0xFF,
0x50,0x41,0x6E,0x0A,0x22,0xC1,0x5F,0xEE,0x08,0x42,0x39,0xFC,0xFF,0xFF,0xDF,0xEB,
0x7F,0xFF,0x28,0x56,0xF2,0xDA,0x22,0x58,0xE0,0x81,0x8D,0x9F,0x9A,0x43,0x81,0xBE,
0xDA,0x98,0x18,0xC0,0x91,0x18,0x29,0x21,0x00,0x98,0x4D,0x82,0x58,0x18,0xF1,0xB9,
0x27,0x9E,0xD2,0xA8,0xEA,0x18,0xBE,0xC2,0x32,0x99,0x2D,0x40,0xE2,0x18,0x34,0x20,
0x4A,0x98,0x17,0x00,0x1C,0x1D,0xB2,0x66,0xB8,0x10,0x29,0x78,0x38,0x81,0x6B,0xD4,
0x0D,0xC8,0xA7,0xE6,0xBF,0xF5,0xFF,0x73,0xD8,0xEF,0x7F,0xFE,0xAF,0xDB,0x19,0xEA,
0x35,0x8D,0x4E,0xDE,0xC5,0x7F,0xAB,0xFA,0xD9,0x5E,0x80,0xC9,0x86,0x9A,0x02,0x80,
0xA0,0x30,0x08,0x60,0x20,0x1D,0x81,0x80,0x8C,0x80,0x61,0xB4,0xF9,0x80,0x6C,0x08,
0x31,0x80,0x9A,0x0F,0x49,0x80,0x98,0x26,0xE1,0x83,0x21,0xC9,0x29,0xAD,0xD4,0x94,
0x81,0x84,0xCC,0x27,0x61,0x97,0x08,0x0E,0x79,0x84,0x96,0x06,0x31,0x82,0x2C,0x03,
0x59,0xCC,0x9E,0x1A,0xC1,0x09,0x99,0x84,0x06,0x18,0x8D,0x01,0xAC,0xB6,0x45,0x0C,
0xE5,0xFF,0xD7,0xFA,0x4F,0xBF,0xFD,0x7F,0xEA,0xFC,0xE0,0xB2,0xBF,0xFF,0xEA,0xFF,
0x57,0xFA,0x6A,0x80,0xFF,0xFB,0x60,0xC4,0x00,0x80,0x0B,0x14,0x51,0x18,0xCA,0x7F,
0x50,0x41,0xFE,0x94,0xA5,0xF5,0xCF,0x9A,0x5B,0x01,0x02,0x00,0xFF,0xDB,0xE6,0x23,
0x3C,0x19,0x04,0x1B,0xF0,0x18,0x90,0x80,0x65,0x04,0x81,0xA7,0x20,0x07,0x01,0x19,
0x80,0xE2,0x02,0x61,0x81,0xA4,0x05,0xF9,0x83,0xCA,0x13,0x41,0x8F,0x19,0x0E,0xC9,
0xFE,0xE8,0x4B,0xC1,0x86,0xB2,0x41,0x01,0x8E,0xE8,0x19,0x49,0x83,0x4E,0x0A,0x31,
0x81,0x98,0x05,0x59,0xF1,0xC0,0x70,0x1B,0x9A,0x33,0x46,0x28,0x2A,0xEA,0x76,0x58,
0x93,0xF3,0x7F,0x5D,0xFF,0xBB,0xF9,0xEF,0xF5,0xFF,0xEE,0xFF,0xD9,0xFF,0xFF,0xFC,
0x60,0x09,0x37,0x10,0x00,0x0B,0x1B,0x00,0x0E,0xEF,0xBB,0x97,0xCA,0xDD,0xB7,0x2D,
0x15,0xCB,0xC0,0x04,0x00,0x16,0x60,0xC3,0x02,0x83,0x14,0x07,0x0C,0x4C,0x44,0x30,
0x70,0x30,0xC0,0x81,0x03,0x12,0x06,0x10,0x96,0xB1,0xCC,0x06,0x07,0x7F,0x0C,0x3A,
0x21,0x30,0x90,0x60,0xCC,0xE7,0x33,0xAC,0x4B,0x0D,0x0C,0x60,0x83,0xCC,0x1C,0x70,
0x4D,0x8C,0x03,0x50,0x19,0xD9,0x91,0x80,0x22,0x00,0x9A,0x57,0x96,0xCD,0x5D,0xA8,
0x1B,0x07,0x5D,0x8D,0x72,0x1C,0x87,0x29,0x29,0x2C,0x61,0x81,0x80,0x0E,0x00,0x0A,
0x01,0xD0,0x7D,0xB7,0x89,0xBF,0x77,0xB5,0x14,0x9B,0x01,0xB1,0x69,0x4A,0xF0,0x7D,
0x04,0x38,0x24,0xC6,0x52,0xB2,0xE2,0xE1,0xE3,0x35,0x34,0x79,0xB6,0xB6,0xF3,0xEF,
0x6A,0x76,0xD9,0x6B,0x00,0x01,0x6D,0xB6,0x30,0x1C,0x60,0x61,0xA3,0x66,0x62,0x8C,
0x6E,0xC5,0xC6,0x82,0xE2,0x65,0xA8,0x46,0xEC,0xFF,0xFB,0x80,0xC4,0x0C,0x00,0x1E,
0xD5,0x33,0x57,0xAD,0xE7,0x0D,0x99,0x83,0x8E,0x6B,0xE8,0xF4,0x8D,0x9B,0x54,0x69,
0xAF,0xA6,0x12,0x38,0x69,0x60,0x66,0xD5,0x28,0x60,0xD0,0x61,0xA7,0xC7,0x3D,0x44,
0x65,0x77,0x67,0x29,0xC7,0xB3,0xC7,0x1E,0xEA,0xDA,0xBF,0xD3,0x01,0x59,0x5C,0xF4,
0x28,0x20,0x2D,0xA7,0x1E,0x16,0xAB,0x60,0x60,0x6C,0x31,0x7A,0xAA,0x75,0xC8,0xC3,
0x59,0xBA,0xEC,0x6E,0xD0,0x2B,0x4F,0x74,0x23,0x30,0x3C,0x31,0x33,0x3E,0x74,0xE6,
0x23,0x98,0x7D,0x43,0x96,0x52,0xA4,0x83,0x5E,0x9C,0x6C,0x85,0xA2,0x12,0x84,0xE0,
0x28,0xC3,0xD3,0x28,0x80,0x70,0x32,0xD4,0x1A,0x40,0xD2,0x19,0xDE,0x23,0x00,0xD7,
0xCC,0xC8,0x24,0x39,0x43,0x8D,0x04,0x1D,0x38,0xB0,0x80,0xCC,0x10,0x8C,0xBA,0x21,
0x0B,0x0A,0x09,0x21,0x43,0x86,0x0C,0x02,0x68,0xA1,0x19,0x6C,0x12,0x39,0x28,0x0B,
0x96,0x9F,0x8A,0x85,0x00,0x69,0x90,0xB5,0x50,0x5D,0x32,0xD7,0x52,0x56,0x25,0x5A,
0xE6,0x4F,0x84,0xBF,0x64,0x4A,0xF1,0x40,0x18,0xCB,0x1E,0x50,0x46,0x16,0xDB,0x29,
0xA3,0x33,0x75,0x96,0xBB,0x00,0x72,0x59,0x3A,0xE4,0x74,0x5A,0x1B,0x0C,0x78,0x5B,
0x33,0x3B,0x92,0x48,0x61,0xF8,0xE4,0xB6,0x1F,0x88,0x4B,0xA2,0x91,0x39,0x54,0x52,
0x37,0x35,0x39,0x1B,0x99,0xA3,0x8C,0x4D,0xCF,0x4B,0x26,0xED,0x4B,0x2A,0x63,0x6E,
0xA6,0x36,0xEA,0x6E,0xF9,0x64,0x72,0x06,0x20,0x0E,0x03,0x90,0xB7,0xFD,0xF2,0x00,
0x14,0xDB,0x94,0x13,0xE4,0x19,0x71,0x4C,0x25,0xCD,0x13,0xD8,0xFB,0x43,0x57,0x27,
0x01,0x2E,0x27,0xA5,0xF0,0xA6,0x04,0x4A,0x1B,0x44,0x55,0x00,0x99,0x0A,0x46,0xC5,
0x22,0x23,0x86,0xCC,0xA2,0x0E,0x33,0x54,0x26,0xA4,0xD4,0x9A,0xBA,0xB1,0x94,0xA4,
0xD0,0x75,0x94,0x92,0x59,0x8A,0x81,0x02,0x05,0x4C,0x55,0x15,0xD8,0xD1,0x54,0x57,
0x24,0x96,0x56,0x25,0xBB,0x7B,0x26,0xAF,0xFF,0xFB,0x13,0x1C,0xCE,0xC9,0x2D,0xFF,
0xBB,0xBE,0x42,0xA8,0xA6,0x09,0x98,0xAA,0x29,0x8A,0x25,0x94,0x92,0x5A,0x4C,0x41,
0x4D,0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
0xAA,0xAA,0xAA,0xAA,0xAA,0xAA
};
Loading