Skip to content

Commit

Permalink
Auto kill / restart steam working on linux
Browse files Browse the repository at this point in the history
  • Loading branch information
cbartondock committed Jun 10, 2024
1 parent 31a2a40 commit fbcd52a
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions src/lib/helpers/steam/stop-start-steam.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { AppSettings } from "../../../models";
import { LoggerService } from "../../../renderer/services";

const checkDelay = 500;
const timeout = 10000;
const timeout = 20000;

interface ActAndCheck {
commands: {
Expand Down Expand Up @@ -33,16 +33,17 @@ async function actAndCheck(data: ActAndCheck) {
proc.stdout.on('data', (procData) => {
messages.push(`${data.messages.prefix}: ${procData.toString('utf8')}`)
})
proc.stderr.on('data', (data) => {
reject(data.toString('utf8'))
proc.stderr.on('data', (procErr) => {
messages.push(`${data.messages.prefix} (Error): ${procErr.toString('utf8')}`)
})
proc.on('close', () => {
let elapsed = 0;
const interval: NodeJS.Timer = setInterval(() => {
let interval: NodeJS.Timer = setInterval(() => {
const check = execSync(data.commands.check, {shell: data.shell}).toString().trim()
if(check == data.checkOutput){
setTimeout(()=> {
clearTimeout(interval)
if(check == data.checkOutput) {
clearTimeout(interval);
let delay = setTimeout(()=> {
clearTimeout(delay);
messages.push(data.messages.success.interpolate({elapsed: elapsed + data.safetyDelay}))
resolve({acted: true, messages: messages});

Expand Down Expand Up @@ -81,10 +82,12 @@ export async function stopSteam() {
data.shell = 'powershell'
} else if (os.type() == 'Linux') {
data.commands = {
action: `killall steam`,
check: `echo "True"`
action: `kill -15 $(pidof steam)`,
check: `levelfile=$(ls -t "$HOME/.steam/steam/config/htmlcache/Local Storage/leveldb"/*.ldb | head -1);
pid=$(fuser "$levelfile");
if [ -z $pid ]; then echo "True"; else echo "False"; fi;`
}
data.shell = '/bin/sh'
data.shell = '/bin/sh';
}
return await actAndCheck(data);
}
Expand Down Expand Up @@ -112,24 +115,28 @@ export async function startSteam() {
data.shell = 'powershell';
} else if (os.type() == 'Linux') {
data.commands = {
action: `start steam`,
check: `echo "True"`
action: `2>/dev/null 1>&2 steam &`,
check: `pid="$(pidof steam)"; if [ ! -z $pid ]; then echo "True"; else echo "False"; fi;`
}
data.shell = '/bin/sh'
}
return await actAndCheck(data)
}

export async function performSteamlessTask(appSettings: AppSettings, loggerService: LoggerService, task: () => Promise<void>) {
if(os.type() == 'Darwin') {
loggerService.info('Not attempting to kill Steam on Mac OS.');
await task(); return;
}
let stop: { acted: boolean, messages: string[] };
if(appSettings.autoKillSteam) {
loggerService.info('Attempting to kill Steam', {invokeAlert: true, alertTimeout: 3000})
loggerService.info('Attempting to kill Steam.', {invokeAlert: true, alertTimeout: 3000})
stop = await stopSteam();
for(let message of stop.messages) { loggerService.info(message) }
}
await task();
if(appSettings.autoRestartSteam && stop.acted) {
loggerService.info('Attempting to restart Steam', {invokeAlert: true, alertTimeout: 3000})
loggerService.info('Attempting to restart Steam.', {invokeAlert: true, alertTimeout: 3000})
const start = await startSteam();
for(let message of start.messages) { loggerService.info(message) }
}
Expand Down

0 comments on commit fbcd52a

Please sign in to comment.