Files
Frametop--frametop/input-settings/ft-input-settings
T
DeeJanuzandClaude Opus 5.5 279301bf93 Input Settings: host commands on the host's user bus
Opened in the Frametop desktop, the app has that session's private bus
(dbus-run-session), and host() passed it to distrobox-host-exec. On it
`systemctl --user` on the host can't find the user manager, so the Voice
switch failed with "Failed to connect to user scope bus via local
transport: No such file or directory" and the page couldn't tell
whether voice was on. host() now runs its commands with the host's own
/run/user/UID/bus; the app keeps the session bus for itself.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 08:18:39 -06:00

18 lines
1.0 KiB
Bash
Executable File

#!/bin/bash
# Launch Frametop Input Settings from a Plasma session on the Frame host.
# The app runs in Frametop's container (PySide6 and Kirigami come from Fedora there).
# podman needs the real XDG_RUNTIME_DIR and the real user bus (to reach systemd for
# the container's cgroup; the Frametop session runs on a private bus from
# dbus-run-session). The session's Wayland socket and bus go to the app itself; its
# commands on the host (host() in ft_input_settings.py) use the real user bus again.
here=$(cd "$(dirname "$(readlink -f "$0")")" && pwd)
wl=${WAYLAND_DISPLAY:-wayland-0}
case $wl in /*) ;; *) wl="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/$wl" ;; esac
session_bus=${DBUS_SESSION_BUS_ADDRESS:-}
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus
exec "$here/../scripts/in-box" env WAYLAND_DISPLAY="$wl" DISPLAY="${DISPLAY:-}" \
XAUTHORITY="${XAUTHORITY:-}" DBUS_SESSION_BUS_ADDRESS="$session_bus" \
QT_QPA_PLATFORM="wayland;xcb" \
python3 "$here/ft_input_settings.py" "$@"