diff --git a/src/electron/ipc/ipcHandler.ts b/src/electron/ipc/ipcHandler.ts index a2c6ae8..e79000c 100644 --- a/src/electron/ipc/ipcHandler.ts +++ b/src/electron/ipc/ipcHandler.ts @@ -4,6 +4,7 @@ import { getToken, saveToken, clearToken } from '../utils/tokenHelper.js'; import { getActiveApp, handleLogin, takeScreenshot } from '../utils/utilityFunctions.js'; import api from '../api/axiosClient.js'; import { getMainWindow } from '../main.js'; +import { exec } from 'child_process'; ipcMain.handle('get-token', async (_, TOKEN_KEY: "ACCESS_TOKEN" | "REFRESH_TOKEN") => { return await getToken(TOKEN_KEY); @@ -61,4 +62,23 @@ ipcMain.handle('resize-window', (event, width: number, height: number) => { if (mainWindow && !mainWindow.isDestroyed()) { mainWindow.setSize(width, height); } +}); + +ipcMain.handle('get-running-apps', async () => { + return new Promise((resolve, reject) => { + exec('tasklist', (err, stdout) => { + if (err) return reject(err); + + const lines = stdout.split('\n').slice(3); // skip headers + const apps = lines + .map(line => line.trim().split(/\s+/)) + .filter(parts => parts.length > 1) + .map(parts => ({ + name: parts[0], + pid: parts[1], + })); + + resolve(apps); + }); + }); }); \ No newline at end of file diff --git a/src/electron/preload.cts b/src/electron/preload.cts index 2ad094f..a2272b2 100644 --- a/src/electron/preload.cts +++ b/src/electron/preload.cts @@ -10,6 +10,7 @@ contextBridge.exposeInMainWorld('electron', { getActiveAppDetails: () => ipcRenderer.invoke('get-active-app'), toggleCloseBtn: (shouldEnable: boolean) => ipcRenderer.invoke('toggle-close-btn', shouldEnable), resizeWindow: (width: number, height: number) => ipcRenderer.invoke('resize-window', width, height), + getRunningApps: () => ipcRenderer.invoke('get-running-apps'), } satisfies Window['electron']); // function ipcInvoke( diff --git a/src/ui/pages/Dashboard.tsx b/src/ui/pages/Dashboard.tsx index 87cac09..537b808 100644 --- a/src/ui/pages/Dashboard.tsx +++ b/src/ui/pages/Dashboard.tsx @@ -104,27 +104,35 @@ const Dashboard: React.FC = () => { > Screenshot Test - - - + {/* Widgets */} @@ -204,10 +212,10 @@ const Dashboard: React.FC = () => { Status:{" "} {selectedData?.isPaused @@ -264,8 +272,8 @@ const Dashboard: React.FC = () => {