repositories / dotfiles
dotfiles
bugabingas dorkfiles
owned by admin
quickshell/nuguland/test-fixtures/ui/niri-integration-proxy.mjs
Raw// Outputs-only controlled server. The QML subscription and actions never use it.
import assert from 'node:assert/strict';
import { readFileSync, realpathSync, lstatSync } from 'node:fs';
import { createConnection, createServer } from 'node:net';
import { dirname, join } from 'node:path';
assert.equal(process.env.NUGULAND_UI_SANDBOX, '1');
assert.equal(process.env.HOME, '/home/test');
const [socket, native, modeFile] = process.argv.slice(2);
const runtime = realpathSync(process.env.XDG_RUNTIME_DIR);
assert.equal(dirname(socket), runtime);
assert.equal(dirname(realpathSync(native)), runtime);
assert(lstatSync(native).isSocket());
assert.equal(modeFile, join(runtime, 'niri-integration-outputs.json'));
createServer({ allowHalfOpen: true }, client => {
let request = '';
client.on('error', error => { throw error; });
function first(chunk) {
request += chunk;
assert(request.length < 65536);
if (!request.includes('\n')) return;
client.removeListener('data', first);
const name = JSON.parse(request.trim());
// niri msg requests Version when an output query is rejected.
assert(['Outputs', 'Version'].includes(name));
const mode = JSON.parse(readFileSync(modeFile, 'utf8'));
if (name === 'Outputs' && mode !== null) {
client.end(JSON.stringify(mode) + '\n');
return;
}
let reply = '';
const upstream = createConnection(native, () => upstream.end(request));
upstream.on('error', error => { throw error; });
upstream.on('data', chunk => {
reply += chunk;
assert(reply.length < 1024 * 1024);
if (reply.includes('\n')) {
JSON.parse(reply.trim());
client.end(reply);
upstream.destroy();
}
});
}
client.on('data', first);
}).listen(socket, () => console.log('output fixture ready'));