Skip to content

Commit af44afe

Browse files
committed
Add terminalTextToSpeech.css for speech-to-text feature
1 parent ef9ccb4 commit af44afe

File tree

4 files changed

+47
-3
lines changed

4 files changed

+47
-3
lines changed

src/vs/workbench/contrib/terminal/browser/media/terminal.css

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -565,5 +565,3 @@
565565
.monaco-workbench .xterm.terminal.hide {
566566
visibility: hidden;
567567
}
568-
569-
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
.terminal-speech-to-text {
7+
background-color: var(--vscode-terminal-background, var(--vscode-panel-background));
8+
padding: 2px;
9+
border-radius: 8px;
10+
display: flex;
11+
align-items: center;
12+
white-space: nowrap;
13+
z-index: 1000;
14+
}
15+
16+
.terminal-speech-to-text.codicon.codicon-mic-filled {
17+
display: flex;
18+
align-items: center;
19+
width: 16px;
20+
height: 16px;
21+
}
22+
23+
.terminal-speech-to-text.recording.codicon.codicon-mic-filled {
24+
color: var(--vscode-activityBarBadge-background);
25+
animation: ani-terminal-speech 1s infinite;
26+
}
27+
28+
@keyframes ani-terminal-speech {
29+
0% {
30+
color: var(--vscode-terminalCursor-background);
31+
}
32+
33+
50% {
34+
color: var(--vscode-activityBarBadge-background);
35+
}
36+
37+
100% {
38+
color: var(--vscode-terminalCursor-background);
39+
}
40+
}

src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'vs/css!./media/scrollbar';
88
import 'vs/css!./media/widgets';
99
import 'vs/css!./media/xterm';
1010
import 'vs/css!./media/terminal';
11+
import 'vs/css!./media/terminalTextToSpeech';
1112
import * as nls from 'vs/nls';
1213
import { URI } from 'vs/base/common/uri';
1314
import { CommandsRegistry } from 'vs/platform/commands/common/commands';

src/vs/workbench/contrib/terminal/browser/terminalSpeechToText.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ export class TerminalSpeechToTextSession extends Disposable {
8888
}));
8989
}
9090
stop(send?: boolean): void {
91+
this._setInactive();
9192
if (send) {
9293
this._acceptTranscriptionScheduler!.cancel();
9394
this._terminalService.activeInstance?.sendText(this._input, false);
@@ -156,10 +157,14 @@ export class TerminalSpeechToTextSession extends Disposable {
156157
x: xterm.buffer.active.cursorX ?? 0,
157158
});
158159
this._decoration?.onRender((e: HTMLElement) => {
159-
e.classList.add(...ThemeIcon.asClassNameArray(Codicon.mic));
160+
e.classList.add(...ThemeIcon.asClassNameArray(Codicon.micFilled), 'terminal-speech-to-text', 'recording');
160161
e.style.transform = 'translate(-5px, -5px)';
161162
});
162163
}
164+
165+
private _setInactive(): void {
166+
this._decoration?.element?.classList.remove('recording');
167+
}
163168
}
164169

165170

0 commit comments

Comments
 (0)