This commit is contained in:
ICEBADGERR 2026-05-30 18:52:41 +01:00 committed by GitHub
commit aa3fe71ca4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 52 additions and 0 deletions

View File

@ -9,6 +9,9 @@ import { initDiscordRpc } from "./native/discordRpc";
import { initTray } from "./native/tray";
import { BUILD_URL, createMainWindow, mainWindow } from "./native/window";
// Added by ICEBADGERR 02/10/2026
import { detectRunningGame } from "./native/gameDetection";
// Squirrel-specific logic
// create/remove shortcuts on Windows when installing / uninstalling
// we just need to close out of the app immediately
@ -38,6 +41,9 @@ if (acquiredLock) {
// start auto update logic
updateElectronApp({ onNotifyUser });
//Variable to check the current game process that is running
let currentGame: string | null = null;
// create and configure the app when electron is ready
app.on("ready", () => {
// create window and application contexts
@ -54,6 +60,21 @@ if (acquiredLock) {
initTray();
initDiscordRpc();
//Detect game that is being played code
setInterval(async () => {
const game = await detectRunningGame();
//Only log if it is changed
if (game !== currentGame) {
currentGame = game;
if (game) {
console.log('Now Playing:', game);
} else{
console.log('Stopped Playing');
}
}
}, 5000); //Checks every 5 seconds
// Windows specific fix for notifications
if (process.platform === "win32") {
app.setAppUserModelId("chat.stoat.notifications");

View File

@ -0,0 +1,31 @@
import { exec } from 'child_process';
import { promisify } from 'util';
const execAsync = promisify(exec)
//Simple detect list
const KNOWN_GAMES: Record<string, string> = {
'steam.exe': 'Steam',
'discord.exe': 'Discord',
'code': 'VS Code (replace with actual game later)'
// Add more later
};
export async function detectRunningGame(): Promise<string | null> {
try{
//For linux
const { stdout } = await execAsync('ps aux');
const lowerOutput = stdout.toLowerCase();
for (const [processName, gameName] of Object.entries(KNOWN_GAMES)) {
if (lowerOutput.includes(processName.toLowerCase())) {
return gameName;
}
}
return null;
} catch (error) {
console.error('Error deteching game:', error);
return null;
}
}