mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-11 11:01:07 +00:00
For driving the desktop from a debugger: a script dropped there runs once inside the session. Off unless the marker exists.
54 lines
2.9 KiB
Plaintext
54 lines
2.9 KiB
Plaintext
# What the desktop is made of, started once labwc is up. Everything logs into the session log.
|
|
# With ~/.droiddeck-desktop-debug present, the panel and the file manager also log what they
|
|
# say to the compositor about their windows (shell, layer, output), capped so it stays readable.
|
|
run() {
|
|
local tag=$1; shift
|
|
if [ -f "$HOME/.droiddeck-desktop-debug" ]; then
|
|
# Everything it says goes to ~/.cache/droiddeck/<tag>.log; the window-related protocol
|
|
# traffic also goes into the session log, capped.
|
|
mkdir -p "$HOME/.cache/droiddeck"
|
|
WAYLAND_DEBUG=1 "$@" 2>&1 | tee "$HOME/.cache/droiddeck/$tag.log" | awk -v t="[$tag]" '!/^\[[0-9:.]+\] +\{/ || (c<120 && /layer_s|xdg_toplevel|fullscreen|wl_output|xdg_output|configure\(/) {print t, $0; c++; fflush()}' &
|
|
else
|
|
"$@" 2>&1 | sed "s/^/[$tag] /" &
|
|
fi
|
|
}
|
|
# The output at the app's real size, in case rc.xml's mode did not take.
|
|
[ -n "${BL_WIDTH:-}" ] && wlr-randr --output WL-1 --custom-mode "${BL_WIDTH}x${BL_HEIGHT}" 2>&1 | sed 's/^/[wlr-randr] /'
|
|
# In debug runs, ground truth on the network from inside the session: name lookup, then a
|
|
# fetch over IPv4 and over IPv6, so a browser's "no internet" can be placed.
|
|
if [ -f "$HOME/.droiddeck-desktop-debug" ]; then
|
|
(
|
|
echo "[net] getent: $(getent hosts example.com 2>&1 | head -2 | tr '\n' ' ')"
|
|
for f in 4 6; do
|
|
echo "[net] curl -$f: $(curl -$f -sS -m 8 -o /dev/null -w '%{http_code} %{remote_ip}' https://example.com 2>&1)"
|
|
done
|
|
) &
|
|
fi
|
|
# In debug runs Firefox (started from the panel or the menu, so it inherits this) writes its
|
|
# own network log: name lookups, connects, HTTP transactions, the link/offline decisions.
|
|
if [ -f "$HOME/.droiddeck-desktop-debug" ]; then
|
|
mkdir -p "$HOME/.cache/droiddeck"
|
|
export MOZ_LOG="nsHttp:3,nsSocketTransport:3,nsHostResolver:4,NetworkLinkService:5,NetworkConnectivityService:5,nsIOService:5"
|
|
export MOZ_LOG_FILE="$HOME/.cache/droiddeck/firefox-net.log"
|
|
fi
|
|
swaybg -m fill -i /usr/share/backgrounds/steamdeck.png &
|
|
# Desktop icons (pcmanfm-qt manages the desktop surface) and the panel with the app menu.
|
|
run pcmanfm-qt pcmanfm-qt --desktop --profile lxqt
|
|
run lxqt-panel lxqt-panel
|
|
/usr/lib/xdg-desktop-portal-wlr >/dev/null 2>&1 &
|
|
# Remote runs, for driving the desktop from a debugger: with ~/.droiddeck-remote-run present (only
|
|
# the app or root can create it), each script dropped into ~/.cache/droiddeck/run/ is run once,
|
|
# inside the session with its environment, its output tagged into the desktop log.
|
|
if [ -f "$HOME/.droiddeck-remote-run" ]; then
|
|
mkdir -p "$HOME/.cache/droiddeck/run"
|
|
(
|
|
while sleep 1; do
|
|
for f in "$HOME"/.cache/droiddeck/run/*.sh; do
|
|
[ -f "$f" ] || continue
|
|
mv -f "$f" "$f.running" || continue
|
|
( echo "[run] $(basename "$f") started"; bash "$f.running" 2>&1 | sed "s/^/[run] /"; echo "[run] $(basename "$f") exited"; rm -f "$f.running" ) &
|
|
done
|
|
done
|
|
) &
|
|
fi
|