2508b72062
Two problems, one feature. The gamepad/couch UI existed but you had to
already know it was there:
- On the hosts page its card only rendered when a controller was CONNECTED,
so with no pad plugged in there was no visible entry point at all -- the
only other door being a per-host overflow menu behind a "..." nobody
opens. The card now always shows, with copy that adapts to whether a pad
is present, so the feature is findable before you own the hardware.
- There was no way to start it directly. An HTPC or TV box wants the couch
interface as its first screen, not the desktop shell. "punktfunk-client
--console" now hands straight off to it (fullscreen unless --windowed),
which covers shortcuts, Steam entries, autostart and Task Scheduler.
The Start-menu tile needs its own executable: an MSIX <Application> cannot
pass arguments to a full-trust exe, so "punktfunk-client.exe --console" is
not expressible there. punktfunk-console.exe is a ~20-line hand-off to the
session binary's browse mode, staged into the package and given its own
tile ("Punktfunk Console").
Nothing new is implemented behind either door: a bare "--browse" was
already a complete standalone client (host list, discovery, PIN pairing,
settings, Wake-on-LAN, library). It just had no front door.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
83 lines
3.6 KiB
XML
83 lines
3.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
MSIX package manifest for the punktfunk Windows client (WinUI 3 via windows-reactor).
|
|
|
|
This is a TEMPLATE: packaging/pack-msix.ps1 substitutes {VERSION} (4-part numeric, e.g.
|
|
0.2.137.0) and {PUBLISHER} (must EXACTLY equal the signing cert's subject DN — default
|
|
`CN=unom` for the self-signed CI cert; a real code-signing cert just passes its own subject).
|
|
|
|
Why this packages cleanly even though the app was built "unpackaged": windows-reactor calls
|
|
MddBootstrapInitialize2 with OnPackageIdentity_NOOP (crates/libs/reactor/src/app.rs), so under
|
|
MSIX package identity the App SDK bootstrapper is a no-op and the runtime is resolved from the
|
|
<PackageDependency> below instead. The framework family + min version mirror what the runner has
|
|
installed and what reactor pins (WINDOWSAPPSDK_RELEASE_MAJORMINOR = 0x20000 = 2.0 ->
|
|
Microsoft.WindowsAppRuntime.2).
|
|
|
|
Full-trust Win32 app (EntryPoint Windows.FullTrustApplication + runFullTrust) — it owns raw D3D11,
|
|
Win32 low-level input hooks, WASAPI and SDL3, none of which fit the UWP app container.
|
|
-->
|
|
<Package
|
|
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
|
|
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
|
|
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
|
|
IgnorableNamespaces="uap rescap">
|
|
|
|
<Identity
|
|
Name="unom.Punktfunk"
|
|
Publisher="{PUBLISHER}"
|
|
Version="{VERSION}"
|
|
ProcessorArchitecture="{ARCH}" />
|
|
|
|
<Properties>
|
|
<DisplayName>Punktfunk</DisplayName>
|
|
<PublisherDisplayName>unom</PublisherDisplayName>
|
|
<Logo>Assets\StoreLogo.png</Logo>
|
|
</Properties>
|
|
|
|
<Dependencies>
|
|
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26100.0" />
|
|
<PackageDependency
|
|
Name="Microsoft.WindowsAppRuntime.2"
|
|
MinVersion="2.2.0.0"
|
|
Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
|
|
</Dependencies>
|
|
|
|
<Resources>
|
|
<Resource Language="en-us" />
|
|
</Resources>
|
|
|
|
<Applications>
|
|
<Application Id="Punktfunk" Executable="punktfunk-client.exe" EntryPoint="Windows.FullTrustApplication">
|
|
<uap:VisualElements
|
|
DisplayName="Punktfunk"
|
|
Description="Low-latency desktop and game streaming client"
|
|
BackgroundColor="transparent"
|
|
Square150x150Logo="Assets\Square150x150Logo.png"
|
|
Square44x44Logo="Assets\Square44x44Logo.png">
|
|
<uap:DefaultTile Square71x71Logo="Assets\Square71x71Logo.png" />
|
|
</uap:VisualElements>
|
|
</Application>
|
|
<!--
|
|
Second entry point: the couch/console UI, for an HTPC or a TV-attached box where the
|
|
desktop shell is the wrong first screen. Same full-trust executable, launched with
|
|
`--console`, which hands straight off to the session binary's controller-driven
|
|
browse mode (host list, pairing, settings, library) fullscreen.
|
|
-->
|
|
<Application Id="PunktfunkConsole" Executable="punktfunk-console.exe"
|
|
EntryPoint="Windows.FullTrustApplication">
|
|
<uap:VisualElements
|
|
DisplayName="Punktfunk Console"
|
|
Description="Controller-driven couch interface for TVs and HTPCs"
|
|
BackgroundColor="transparent"
|
|
Square150x150Logo="Assets\Square150x150Logo.png"
|
|
Square44x44Logo="Assets\Square44x44Logo.png">
|
|
<uap:DefaultTile Square71x71Logo="Assets\Square71x71Logo.png" />
|
|
</uap:VisualElements>
|
|
</Application>
|
|
</Applications>
|
|
|
|
<Capabilities>
|
|
<rescap:Capability Name="runFullTrust" />
|
|
</Capabilities>
|
|
</Package>
|