tabby-rdp 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,9 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.2
4
+
5
+ **Fixed**
6
+ - On a freshly set-up machine, GNOME desktops connected but showed nothing: PipeWire, which screen casting goes
7
+ through, hadn't been started for the user when it was installed after the user's systemd was up. The plugin now
8
+ starts it.
9
+ - Apps such as Terminal and Files took 25 seconds to open on the desktop: GNOME's portal wouldn't start without a
10
+ graphical session. The headless session now provides one, as a regular login does.
11
+ - No sound from machines without sound hardware (VMs, servers): a virtual output is added when there is none.
12
+
3
13
  ## 0.2.1
4
14
 
5
- The 0.2.0 release, published again: npm never released 0.2.0 (it stayed in a staged state), and a version number
6
- can't be reused there.
15
+ Same as 0.2.0. (npm took long enough to make 0.2.0 available that it was published again under a new version.)
7
16
 
8
17
  ## 0.2.0
9
18
 
package/README.md CHANGED
@@ -169,7 +169,7 @@ tabby-rdp ships IronRDP with a short series of patches ([ironrdp/](ironrdp)). Th
169
169
  | Keep the session when a server sends data on a channel the client declined | [Devolutions/IronRDP#2005](https://github.com/Devolutions/IronRDP/pull/2005) |
170
170
  | Fit the web component to its container, not the whole window | [Devolutions/IronRDP#2006](https://github.com/Devolutions/IronRDP/pull/2006) |
171
171
  | Set up the clipboard before signaling `ready`, so it works for apps that connect right away | [Devolutions/IronRDP#2018](https://github.com/Devolutions/IronRDP/pull/2018) |
172
- | Echo the correct size in the sound channel's Training Confirm | Next |
172
+ | Echo the correct size in the sound channel's Training Confirm | [Devolutions/IronRDP#2019](https://github.com/Devolutions/IronRDP/pull/2019) |
173
173
  | The graphics pipeline in the web client, per connection, following its resets | Planned |
174
174
  | Sound in the web client | Planned |
175
175
 
@@ -144,6 +144,9 @@ if [ -n "$SHELL_PID" ] && ! tr '\0' '\n' < /proc/$SHELL_PID/environ 2>/dev/null
144
144
  i=0; while [ $i -lt 40 ] && kill -0 "$SHELL_PID" 2>/dev/null; do sleep 0.25; i=$((i+1)); done
145
145
  SHELL_PID=
146
146
  fi
147
+ # Screen casting (and sound) goes through PipeWire. Its sockets are normally up with the user's systemd, but not
148
+ # when PipeWire was installed after that started (a lingering user on a freshly set-up server); start them.
149
+ systemctl --user start pipewire.socket pipewire-pulse.socket wireplumber.service >/dev/null 2>&1
147
150
  if [ -z "$SHELL_PID" ]; then
148
151
  # Apps from a previous headless session (marked below) outlive their display; single-instance apps
149
152
  # would then swallow new launches without showing a window. End them before starting afresh.
@@ -168,6 +171,22 @@ dbus-update-activation-environment --systemd WAYLAND_DISPLAY=${"$"}{WL:-wayland-
168
171
  XDG_CURRENT_DESKTOP=$DESK XDG_SESSION_DESKTOP=$SESS DESKTOP_SESSION=$SESS >/dev/null 2>&1
169
172
  # Mark D-Bus-activated apps as part of this session too (not in systemd's environment: user services would inherit it).
170
173
  dbus-update-activation-environment TABBY_RD_SESSION=$SESSION_VERSION >/dev/null 2>&1
174
+ # Also what gnome-session does: bring up graphical-session.target, which the GNOME portal requires. Without it the
175
+ # portal service hangs, and every GTK app waits 25 seconds for it before showing a window. Held for as long as the
176
+ # shell runs (the target can't be started directly).
177
+ if ! systemctl --user is-active -q graphical-session.target; then
178
+ systemctl --user stop tabby-graphical-session >/dev/null 2>&1
179
+ systemctl --user reset-failed tabby-graphical-session >/dev/null 2>&1
180
+ systemd-run --user --unit=tabby-graphical-session --remain-after-exit \
181
+ -p BindsTo=tabby-headless-shell.service -p After=tabby-headless-shell.service \
182
+ -p Wants=graphical-session.target -p Before=graphical-session.target true >/dev/null 2>&1
183
+ fi
184
+ # Remote sound is what plays on the default output. A machine without sound hardware (a VM, most servers) has
185
+ # none: add a virtual one, which lasts until PipeWire restarts.
186
+ if command -v pw-cli >/dev/null && ! timeout 5 pw-cli ls Node 2>/dev/null | grep -q '"Audio/Sink"'; then
187
+ timeout 5 pw-cli create-node adapter '{ factory.name=support.null-audio-sink node.name=tabby-rdp-output
188
+ node.description="Remote desktop" media.class=Audio/Sink object.linger=true audio.position=[FL FR] }' >/dev/null 2>&1
189
+ fi
171
190
  if [ $RESTART = 1 ] || ! systemctl --user is-active -q gnome-remote-desktop-headless.service; then
172
191
  systemctl --user restart gnome-remote-desktop-headless.service >/dev/null 2>&1 || fail "could not start gnome-remote-desktop-headless"
173
192
  fi
@@ -1 +1 @@
1
- {"version":3,"file":"remoteSetup.js","sourceRoot":"","sources":["../src/remoteSetup.ts"],"names":[],"mappings":";;AAmMA,oDAaC;AAhND,yBAAwB;AACxB,6BAA4B;AAS5B,kHAAkH;AAClH,yGAAyG;AACzG,2GAA2G;AAC3G,yGAAyG;AACzG,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4BvB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4DM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DAqE2C,GAAG;;;;;;;;OAQ3D,GAAG;;;;CAIT,CAAA;AAKD,IAAI,YAAY,GAAkB,IAAI,CAAA;AACtC,SAAS,MAAM;IACX,YAAY,KAAK,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAA;IAC5F,OAAO,YAAY,CAAA;AACvB,CAAC;AAED,qGAAqG;AAC9F,KAAK,UAAU,oBAAoB,CAAE,MAAoB,EAAE,IAAa,EAAE,UAA0B,QAAQ;IAC/G,MAAM,MAAM,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI;QAC9F,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;IAC9D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,GAAG,EAAE,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC;IACD,MAAM,EAAE,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChE,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACpE,CAAC"}
1
+ {"version":3,"file":"remoteSetup.js","sourceRoot":"","sources":["../src/remoteSetup.ts"],"names":[],"mappings":";;AAsNA,oDAaC;AAnOD,yBAAwB;AACxB,6BAA4B;AAS5B,kHAAkH;AAClH,yGAAyG;AACzG,2GAA2G;AAC3G,yGAAyG;AACzG,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4BvB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4DM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DAwE2C,GAAG;;;;;;;;;;;;;;;;;;;;;;;;OAwB3D,GAAG;;;;CAIT,CAAA;AAKD,IAAI,YAAY,GAAkB,IAAI,CAAA;AACtC,SAAS,MAAM;IACX,YAAY,KAAK,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAA;IAC5F,OAAO,YAAY,CAAA;AACvB,CAAC;AAED,qGAAqG;AAC9F,KAAK,UAAU,oBAAoB,CAAE,MAAoB,EAAE,IAAa,EAAE,UAA0B,QAAQ;IAC/G,MAAM,MAAM,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI;QAC9F,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;IAC9D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,GAAG,EAAE,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC;IACD,MAAM,EAAE,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChE,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACpE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tabby-rdp",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Remote desktops in Tabby's SSH tabs: Linux (GNOME) and Windows, through the SSH connection, with clipboard, files and sound. Built on IronRDP.",
5
5
  "keywords": [
6
6
  "tabby-plugin",