Skip to content

Commit 725147c

Browse files
committed
update: request permissions
1 parent 5b511f3 commit 725147c

File tree

3 files changed

+83
-53
lines changed

3 files changed

+83
-53
lines changed

.vscodeignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
.vscode/**
22
.vscode-test/**
33
src/**
4+
!src/webview.html
5+
!src/webview.css
6+
!src/webview.js
47
.gitignore
58
.yarnrc
69
vsc-extension-quickstart.md

package.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"displayName": "System Performance",
55
"description": "Real-time system performance monitoring with animated CPU, memory, and resource usage graphs in VSCode",
66
"version": "0.0.2",
7+
"icon": "icon.png",
78
"keywords": [
89
"system",
910
"performance",
@@ -19,6 +20,12 @@
1920
"engines": {
2021
"vscode": "^1.102.0"
2122
},
23+
"capabilities": {
24+
"untrustedWorkspaces": {
25+
"supported": false,
26+
"description": "This extension requires system access to monitor performance metrics."
27+
}
28+
},
2229
"categories": [
2330
"Other",
2431
"Visualization",
@@ -132,7 +139,7 @@
132139
"lint": "eslint src",
133140
"test": "npm run compile && node ./out/test/e2e/runTests.js",
134141
"test:e2e": "npm run compile && node ./out/test/e2e/runTests.js",
135-
"package": "vsce package --no-dependencies",
142+
"package": "vsce package",
136143
"generate-changelog": "github_changelog_generator -u bubablue -p dynamic-import-references -t $GITHUB_TOKEN"
137144
},
138145
"devDependencies": {

src/extension.ts

Lines changed: 72 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -9,71 +9,91 @@ let statusBarManager: StatusBarManager;
99
let systemMonitor: SystemMonitor;
1010
let provider: SystemResourcesProvider;
1111

12+
async function requestSystemPermissions(): Promise<boolean> {
13+
const result = await vscode.window.showInformationMessage(
14+
"System Performance Extension needs access to system resources (CPU, memory, network) to provide monitoring functionality. Grant access?",
15+
{ modal: true },
16+
"Grant Access",
17+
"Deny"
18+
);
19+
20+
return result === "Grant Access";
21+
}
22+
1223
export function activate(context: vscode.ExtensionContext) {
13-
provider = new SystemResourcesProvider(context.extensionUri);
14-
statusBarManager = new StatusBarManager();
15-
systemMonitor = new SystemMonitor(statusBarManager, provider);
24+
requestSystemPermissions().then((granted) => {
25+
if (!granted) {
26+
vscode.window.showErrorMessage(
27+
"System Performance Extension requires system access permissions to monitor CPU, memory, and network usage. Please restart VS Code and grant permissions when prompted."
28+
);
29+
return;
30+
}
1631

17-
context.subscriptions.push(
18-
vscode.window.registerWebviewViewProvider(
19-
SystemResourcesProvider.viewType,
20-
provider
21-
)
22-
);
32+
provider = new SystemResourcesProvider(context.extensionUri);
33+
statusBarManager = new StatusBarManager();
34+
systemMonitor = new SystemMonitor(statusBarManager, provider);
2335

24-
statusBarItems = statusBarManager.createStatusBarItems();
25-
systemMonitor.startSystemMonitoring(statusBarItems);
36+
context.subscriptions.push(
37+
vscode.window.registerWebviewViewProvider(
38+
SystemResourcesProvider.viewType,
39+
provider
40+
)
41+
);
2642

27-
const showGraphDisposable = vscode.commands.registerCommand(
28-
"system-performance.showGraph",
29-
() => {
30-
vscode.commands.executeCommand("systemResourcesView.focus");
31-
}
32-
);
43+
statusBarItems = statusBarManager.createStatusBarItems();
44+
systemMonitor.startSystemMonitoring(statusBarItems);
3345

34-
const toggleGraphDisposable = vscode.commands.registerCommand(
35-
"system-performance.toggleGraph",
36-
() => {
37-
vscode.commands.executeCommand("systemResourcesView.focus");
38-
}
39-
);
46+
const showGraphDisposable = vscode.commands.registerCommand(
47+
"system-performance.showGraph",
48+
() => {
49+
vscode.commands.executeCommand("systemResourcesView.focus");
50+
}
51+
);
4052

41-
const refreshDisposable = vscode.commands.registerCommand(
42-
"system-performance.refresh",
43-
() => {
44-
if (statusBarItems) {
45-
systemMonitor.startSystemMonitoring(statusBarItems);
53+
const toggleGraphDisposable = vscode.commands.registerCommand(
54+
"system-performance.toggleGraph",
55+
() => {
56+
vscode.commands.executeCommand("systemResourcesView.focus");
4657
}
47-
}
48-
);
58+
);
4959

50-
const toggleMonitoringDisposable = vscode.commands.registerCommand(
51-
"system-performance.toggleMonitoring",
52-
() => {
53-
if (statusBarItems) {
54-
systemMonitor.toggleMonitoring(statusBarItems);
60+
const refreshDisposable = vscode.commands.registerCommand(
61+
"system-performance.refresh",
62+
() => {
63+
if (statusBarItems) {
64+
systemMonitor.startSystemMonitoring(statusBarItems);
65+
}
5566
}
56-
}
57-
);
67+
);
5868

59-
context.subscriptions.push(
60-
showGraphDisposable,
61-
toggleGraphDisposable,
62-
refreshDisposable,
63-
toggleMonitoringDisposable
64-
);
69+
const toggleMonitoringDisposable = vscode.commands.registerCommand(
70+
"system-performance.toggleMonitoring",
71+
() => {
72+
if (statusBarItems) {
73+
systemMonitor.toggleMonitoring(statusBarItems);
74+
}
75+
}
76+
);
6577

66-
if (statusBarItems) {
6778
context.subscriptions.push(
68-
statusBarItems.cpu,
69-
statusBarItems.memory,
70-
statusBarItems.vscodeCpu,
71-
statusBarItems.vscodeMemory,
72-
statusBarItems.network,
73-
statusBarItems.disk,
74-
statusBarItems.uptime
79+
showGraphDisposable,
80+
toggleGraphDisposable,
81+
refreshDisposable,
82+
toggleMonitoringDisposable
7583
);
76-
}
84+
85+
if (statusBarItems) {
86+
context.subscriptions.push(
87+
statusBarItems.cpu,
88+
statusBarItems.memory,
89+
statusBarItems.vscodeCpu,
90+
statusBarItems.vscodeMemory,
91+
statusBarItems.network,
92+
statusBarItems.disk,
93+
statusBarItems.uptime
94+
);
95+
}
96+
});
7797
}
7898

7999
export function deactivate() {

0 commit comments

Comments
 (0)