qdesk 1.0.9 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +5 -1
- package/dist/process-utils.js +18 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4,6 +4,11 @@ import process from "node:process";
|
|
|
4
4
|
import { normalizeChord, startListening } from "./chord-utils.js";
|
|
5
5
|
import { setScreenHue } from "./screen-hue.js";
|
|
6
6
|
import { activateWindowByHandle, getActiveWindowHandleAndName, } from "./window-utils.js";
|
|
7
|
+
import { isAlreadyRunning } from "./process-utils.js";
|
|
8
|
+
if (isAlreadyRunning()) {
|
|
9
|
+
console.error("Another instance is already running. Exiting.");
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
7
12
|
// Configure this chord at the top of file.
|
|
8
13
|
const DEFAULT_ADD_CHORD = "win+ctrl+a";
|
|
9
14
|
const DEFAULT_DROP_CHORD = "win+ctrl+d";
|
|
@@ -138,7 +143,6 @@ const listener = startListening({
|
|
|
138
143
|
bindings.delete(chord);
|
|
139
144
|
}
|
|
140
145
|
else if (result === "activated") {
|
|
141
|
-
binding.name = getActiveWindowHandleAndName()?.name ?? binding.name; // warm the cache to speed up subsequent switches
|
|
142
146
|
console.log(`[switch ${chord}] Switched to "${binding.name}"`);
|
|
143
147
|
}
|
|
144
148
|
else {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import os from "os";
|
|
3
|
+
import path from "path";
|
|
4
|
+
const LOCK_FILE = path.join(os.tmpdir(), "qdesk.lock");
|
|
5
|
+
export function isAlreadyRunning() {
|
|
6
|
+
if (fs.existsSync(LOCK_FILE)) {
|
|
7
|
+
const pid = parseInt(fs.readFileSync(LOCK_FILE, "utf8").trim());
|
|
8
|
+
try {
|
|
9
|
+
process.kill(pid, 0);
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
// stale lock, fall through
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
fs.writeFileSync(LOCK_FILE, String(process.pid));
|
|
17
|
+
return false;
|
|
18
|
+
}
|