mirror of
https://github.com/lhns/steam-frame-nix.git
synced 2026-10-06 01:00:13 +02:00
Launchers: neutral examples and made-up fixtures
Examples showed specific apps as if the repository installed or configured them. - Docs, README, template and option examples: the Signal Flatpak (org.signal.Signal, sgnl:// and signalcaptcha://) and a made-up org.example.App instead of the previous chat and remote-desktop apps; no install lines (the app is installed by the user, as noted). - Portal fix: the file-dialog symptom phrased generically. - Launcher check: made-up Flatpak entries org.example.Chat (Electron, --file-forwarding @@u %U @@, an action, an SSO scheme) and org.example.Remote (Qt, -qwindowtitle %c @@u %u @@, localized keys) replace the copied ones; Firefox, gedit and Jellyfin stay.
This commit is contained in:
1 parent
3acacc6388
commit
59afc2f616
16 files changed
+122
-452
No files matched your search
+16
-18
@@ -22,12 +22,11 @@ the Frame's [two sessions](../README.md#two-sessions):
|
||||
`XDG_CURRENT_DESKTOP`. In the Steam session that is `gamescope`, which it
|
||||
doesn't know, so it falls back to `basic` (a local, unencrypted store) and
|
||||
the login made in the desktop (stored in the wallet) is gone.
|
||||
- **Flatpak permissions:** many Flatpaks may not talk to the wallet at all
|
||||
(Element), or only to `org.kde.kwalletd6` while their KF6 wallet client
|
||||
reads through the Secret Service `org.freedesktop.secrets` (KRDC: "Password
|
||||
not found").
|
||||
- **Login callbacks:** SSO logins come back through a URL scheme
|
||||
(`io.element.desktop://`, `signalcaptcha://`) opened by the portal. Unless the app
|
||||
- **Flatpak permissions:** many Flatpaks may not talk to the wallet at all,
|
||||
or only to `org.kde.kwalletd6` while their KF6 wallet client reads through
|
||||
the Secret Service `org.freedesktop.secrets` (the app finds no password).
|
||||
- **Login callbacks:** logins come back through a URL scheme (e.g.
|
||||
`signalcaptcha://`) opened by the portal. Unless the app
|
||||
is the default and a recommended handler, the portal opens an app chooser,
|
||||
which isn't shown in VR.
|
||||
|
||||
@@ -64,27 +63,26 @@ The desktop ID is the attribute name; the source is the Flatpak with that
|
||||
app ID unless `source.package` or `source.file` is set. Installing the app
|
||||
is up to you.
|
||||
|
||||
A Flatpak whose logins live in the wallet (Element, an Electron app), with
|
||||
its SSO callback schemes:
|
||||
A Flatpak whose logins live in the wallet (Signal, an Electron app), with
|
||||
its link callback schemes, and a non-Electron app:
|
||||
|
||||
```nix
|
||||
steamFrame.launchers."im.riot.Riot" = {
|
||||
steamFrame.launchers."org.signal.Signal" = {
|
||||
keyring = { enable = true; electron = true; };
|
||||
defaultFor = [ "x-scheme-handler/element" "x-scheme-handler/io.element.desktop" ];
|
||||
defaultFor = [ "x-scheme-handler/sgnl" "x-scheme-handler/signalcaptcha" ];
|
||||
};
|
||||
steamFrame.launchers."org.kde.krdc".keyring.enable = true;
|
||||
steamFrame.launchers."org.example.App".keyring.enable = true;
|
||||
```
|
||||
|
||||
A program from a Nix package, from the package's own entry
|
||||
(`share/applications/<desktop ID>.desktop`, rewritten at build time):
|
||||
A program from a Nix package (installed by you, e.g. in `home.packages`),
|
||||
from the package's own entry (`share/applications/<desktop ID>.desktop`,
|
||||
rewritten at build time):
|
||||
|
||||
```nix
|
||||
{ pkgs, ... }: {
|
||||
home.packages = [ pkgs.signal-desktop ];
|
||||
steamFrame.launchers.signal = {
|
||||
source.package = pkgs.signal-desktop;
|
||||
keyring = { enable = true; electron = true; };
|
||||
defaultFor = [ "x-scheme-handler/sgnl" "x-scheme-handler/signalcaptcha" ];
|
||||
};
|
||||
}
|
||||
```
|
||||
@@ -164,14 +162,14 @@ after an optional leading `env A=B …`. The rest (`--file-forwarding`,
|
||||
`@@u %U @@`, `%c`, action arguments) stays. `DBusActivatable=true` becomes
|
||||
`false` (otherwise the desktop would start the app over D-Bus, skipping
|
||||
Exec), `defaultFor` and `mimeTypes` are added to `MimeType=`, and
|
||||
`X-SteamFrameNix-Source=` names the source. Element's entry with
|
||||
`X-SteamFrameNix-Source=` names the source. A Flatpak's entry with
|
||||
`keyring = { enable = true; electron = true; }`:
|
||||
|
||||
```sh
|
||||
env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus \
|
||||
/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=/app/bin/element \
|
||||
/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=/app/bin/example-chat \
|
||||
--file-forwarding --talk-name=org.kde.kwalletd6 --talk-name=org.freedesktop.secrets \
|
||||
im.riot.Riot --password-store=kwallet6 @@u %U @@
|
||||
org.example.Chat --password-store=kwallet6 @@u %U @@
|
||||
```
|
||||
|
||||
`flatpak run` connects the sandbox's D-Bus proxy (and portals) to the bus in
|
||||
|
||||
+2
-2
@@ -51,8 +51,8 @@ session's `xdg-desktop-portal` at `/usr/share/xdg-desktop-portal/gamescope-porta
|
||||
which lacks `gamescope-portals.conf`: no backend, no OpenURI, so no app in
|
||||
the Steam session can open links. Its two backends (gamescope, holo) also
|
||||
have no FileChooser, so Flatpak apps fall back to a dialog inside their
|
||||
sandbox: e.g. Element's Attachments shows an empty file selector without
|
||||
your home dir.
|
||||
sandbox: a Flatpak app's file selector shows only its sandbox, not your
|
||||
home dir.
|
||||
|
||||
**What you get:** a working OpenURI portal in the Steam session and, with
|
||||
`fileChooser`, KDE's file dialog there (a normal window in VR) with access
|
||||
|
||||
Reference in new issue
Block a user