This commit is contained in:
2026-10-17 19:08:09 +07:00
parent 8b29b4f24e
commit dc0d82d88a
11 changed files with 1762 additions and 42 deletions
+13
View File
@@ -5,6 +5,8 @@ import { join } from 'node:path'
import { Readable } from 'node:stream'
import { Controller } from './controller.js'
import { parseRange } from './range.js'
import { PackageStore } from './package-store.js'
import { packageMediaResponse } from './package-media.js'
import type { HostInfo } from '../src/types/screen.js'
// Native Wayland запрещает размещение окна на выбранном дисплее по координатам.
@@ -87,9 +89,19 @@ function show(displayId: number) {
})
void output.loadURL('screen-app://app/index.html?output=1')
}
// Две копии приложения не должны одновременно менять указатели пакетов.
if (!app.requestSingleInstanceLock()) app.exit(0)
app.on('second-instance', () => {
control?.show()
control?.focus()
})
app
.whenReady()
.then(async () => {
const packages = new PackageStore(join(app.getPath('userData'), 'packages'))
await packages.initialize()
app.on('before-quit', () => packages.cancel())
session.defaultSession.setPermissionRequestHandler((_contents, _permission, callback) =>
callback(false),
)
@@ -102,6 +114,7 @@ app
'X-Content-Type-Options': 'nosniff',
}
if (url.host !== 'app' || request.method !== 'GET') return new Response(null, { status: 404 })
if (url.pathname.startsWith('/packages/')) return packageMediaResponse(packages, request)
if (url.pathname.startsWith('/media/')) {
const media =
url.pathname === '/media/audio'