tuxdevices,
@tuxdevices@fosstodon.org avatar

Time to let the cat out of the bag.

I've been working on a new app to use your phones and tablets as secondary wireless "side displays" (not mirrors). This is based on , x264, APIs, and low-latency UDP streaming, and will be designed to work on both ARM and Intel, regardless of hardware acceleration support. (Testing on a )

This is still at an early stage, and will take some time to become usable. Thoughts and feedback?

Video showing a Dell XPS on the left and a Purism Librem 5 on its right. We can see the cursor opening the MirrorHall app on both devices, connecting between them through a dialog, and then using the Librem phone as a wireless display for the laptop.

anty,

@tuxdevices
I NEED THIS RIGHT NOW! 😀
No really, like 3-4 years back I was trying to do the same thing under X11 in hacky shell scripts - create a virtual screen, start the VNC server of that virtual screen and open it in VNC client on my laptop or phone, to extend the screen of my desktop. Don't remember why, but it didn't work for some reason.
With the ability to share a virtual screen under Wayland, I was thinking recently that this should be possible now.

anty,

@tuxdevices
I have an unused pine phone I would love to convert to a small heads up display of OS starts. I'll definitely be on a lookout to possibly use this app to finally achieve that 😁

tuxdevices,
@tuxdevices@fosstodon.org avatar

@anty HUD of OS starts? If it is a console log you'd like to show on it, there could be way simpler approaches to achieve it (and not requiring a mutter session to run)

kkarhan,
@kkarhan@mstdn.social avatar

@tuxdevices noice...

forteller,
@forteller@tutoteket.no avatar

@tuxdevices This is incredibly cool! Any chance of integrating it into the Gnome Network Displays tool?

tuxdevices,
@tuxdevices@fosstodon.org avatar

@forteller not really, network displays

  • uses another protocol (miracast) and aims at supporting standardized streaming to tvs/commercial things
  • is not symmetric (aka: doesn't work as a sink)
  • does not focus on virtual screens but rather on mirroring the existing ones

Basically, Network Displays is the Wireless Display feature of e.g. Windows or Macs (and I think it could be integrated in GNOME more tightly in next releases), MirrorHall (this tool) is more like Sidecar

fell,
@fell@ma.fellr.net avatar

@tuxdevices I love everything about this and I encourage you to continue working on it.

Take a look at other codecs, including 8 bits per pixel greyscale for reading text or terminals, actually. What I'm trying to say is: Explore options that do not introduce compression artifacts. The encoding and decoding should be interchangable.

That being said, it's perfectly fine to start with H.264 only. Just plan ahead a little.

tuxdevices,
@tuxdevices@fosstodon.org avatar

@fell yup, there's already a mock "codec switcher" button in the app menu but it's not functional yet

dylanvanassche,
@dylanvanassche@fosstodon.org avatar

@tuxdevices This looks amazing! I assume this also works the other way around?

EDIT: seems I'm not the only one asking :)

tuxdevices,
@tuxdevices@fosstodon.org avatar

@dylanvanassche yup, this app is entirely symmetric. If you mean input support, however, that won't be there anytime soon

dylanvanassche,
@dylanvanassche@fosstodon.org avatar

@tuxdevices ooooh amazing! A nice FOSS alternative for Chromecast or Apple's thing to share your screen!

be,
@be@floss.social avatar

@tuxdevices @dylanvanassche I understand it could be a lot of extra work and won't happen any time soon, but would input support be technically feasible with this architecture?

tuxdevices,
@tuxdevices@fosstodon.org avatar

@be @dylanvanassche in principle yes, but it needs another parallel stream "backwards", a Wayland simulated input method, and adding the logic to grab and transmit all input from the Gtk widget

dylanvanassche,
@dylanvanassche@fosstodon.org avatar

@tuxdevices @be This serves also like a good example on how to grab and export the desktop to another screen if we ever want to have Android Auto support for example.

Conan_Kudo,
@Conan_Kudo@fosstodon.org avatar

@tuxdevices Can you decouple it from Mutter? Tying it to mutter makes it not very useful for everyone else...

be,
@be@floss.social avatar

@Conan_Kudo @tuxdevices Yeah if there's a way this could work with other Wayland compositors, that would be great.

tuxdevices,
@tuxdevices@fosstodon.org avatar

@be @Conan_Kudo it can be decoupled but there's no standard API and most compositors probably support it in a bit different way. Mutter so far had a really smooth casting and virtual sink API

Conan_Kudo,
@Conan_Kudo@fosstodon.org avatar

@tuxdevices @be I don't know about other compositors, but KWin supports generating a new virtual display as part of the PipeWire screencast API.

tuxdevices,
@tuxdevices@fosstodon.org avatar

@Conan_Kudo @be then support should be quite easy! There's a (bad) dbus library with support functions for Mutter, a compatible one for KWin could be added very quickly

scientiac,
@scientiac@fosstodon.org avatar

@tuxdevices Using a phone as a secondary display huh... Does it work the other way around? Like samsung's Dex mode because that'd be very handy!

tuxdevices,
@tuxdevices@fosstodon.org avatar

@scientiac it totally works, but you'll need an external input method. So like dex

CalcProgrammer1,
@CalcProgrammer1@mastodon.social avatar

@tuxdevices This looks amazing! Being able to use any Linux powered tablet or phone as a second screen is a very useful feature. Would like to see it work over USB Ethernet to a connected phone as I figure that would be the lowest latency.

tuxdevices,
@tuxdevices@fosstodon.org avatar

@CalcProgrammer1 it should work the same over usb ethernet (also with much better bandwidth), perhaps apart from broken mDNS. That was one of the initial use cases, "plug in USB, click to share"

alex,

@tuxdevices I love this!!! Will it work if my tablet is just a Surface (x86) running Fedora Workstation?

Is there any possibility of extending the functionality to include sending pressure sensitive pen input from the tablet to the host?

I could never run (e.g.) Blender on my tablet, but it would be a fantastic input device for sculpting or drawing workflows if that was supported.

alex,

@tuxdevices If it’s not clear, I would be happy to provide some testing support for this project if x86 tablets running Linux are a target.

I don’t have any experience providing packaging support, but I’m comfortable compiling and testing code.

tuxdevices,
@tuxdevices@fosstodon.org avatar

@alex Thanks for the feedback! It would work in principle, but this tool has no input support yet, as that is very hard to re-implement on a Gtk app :|

alex,

@tuxdevices even without input capability, an extra wireless side display in my bag is never a bad thing!

I’m just glad to see somebody working on it!

tuxdevices,
@tuxdevices@fosstodon.org avatar

@alex thanks! Will post when I have a more stable product :)

ryancoordinator,
@ryancoordinator@fosstodon.org avatar

@tuxdevices ping me when it works on Pinephone 1, I'll report some bugs :)

Natanox,
@Natanox@chaos.social avatar

@tuxdevices I had that idea some years ago, it's so cool to see this! Never made an attempt as I just came up with it based on X11 functionality, which I was already on way to move away from.

Do you think this will be somewhat easily portable to termux (or even perhaps a dedicated Android app for F-Droid)?

tuxdevices,
@tuxdevices@fosstodon.org avatar

@Natanox not sure about Termux, but "imitating" the GStreamer pipeline on Android should be quite easy. The hardest part is maintaining a client app

4censord,
@4censord@unfug.social avatar

@tuxdevices is there any way to use something like xdg-portals to not have this be gnome exclusive?

(Am not currently using gnome, and dont intend to)

4censord,
@4censord@unfug.social avatar

@tuxdevices also, Intel as x86-64, or Intel as in "will not work on a ryzen apu"

tuxdevices,
@tuxdevices@fosstodon.org avatar

@4censord There is no standardized virtual sink API sadly, and not all WMs support it. This works on all architectures (as gstreamer can fall back on software-based h264 even if no hardware support is enabled)

aral,
@aral@mastodon.ar.al avatar

@tuxdevices Nice :)

tuxdevices,
@tuxdevices@fosstodon.org avatar

@aral Thanks Aral! Honoured to have you here

guihn288,
@guihn288@beige.party avatar

@tuxdevices Who needs Apple? Just get a linux phone :blobcatgoogly:

Also, do you ever plan to make a version that works on Android (idk if it's even possible, but i want to know)

tuxdevices,
@tuxdevices@fosstodon.org avatar

@guihn288 An Android release would be possible, but require a totally different codebase sadly (e.g. for MDNS APIs, streaming and so on). If you can copy the GStreamer pipeline to an Android client, however, you can use the "Manual Connection" button to stream to it

Wikisteff,
@Wikisteff@mastodon.social avatar

@tuxdevices How can I install it on Windows?
This is genius.

tuxdevices,
@tuxdevices@fosstodon.org avatar

@Wikisteff Thanks! No Windows support planned unfortunately🐧 ❤️

amalgam_,
@amalgam_@mastodon.social avatar

@tuxdevices I love the sidecar feature on Mac which sounds like the same thing as this. Since I work a lot while traveling it’s easy to bring my iPad and use it as a second display. It does lose connection a lot though, which is a hassle. Would love to see this on Linux.

But make it easy to restart :)

tuxdevices,
@tuxdevices@fosstodon.org avatar

@amalgam_ Thanks! Restarting a stream here is simply done by toggling the "connected device" button twice (I did it this way so far when it lost connection)

gregorni,
@gregorni@fosstodon.org avatar

@tuxdevices This looks horribly cool!!

Love how it's a few pixels too large for the Librem's screen 😉️

tuxdevices,
@tuxdevices@fosstodon.org avatar

@gregorni Thanks! Don't worry, that's a stylesheet issue but any newer version will make sure to fit even on smaller screens :D

  • All
  • Subscribed
  • Moderated
  • Favorites
  • linux
  • ethstaker
  • DreamBathrooms
  • khanakhh
  • mdbf
  • InstantRegret
  • magazineikmin
  • GTA5RPClips
  • modclub
  • rosin
  • Youngstown
  • slotface
  • everett
  • kavyap
  • thenastyranch
  • JUstTest
  • ngwrru68w68
  • tacticalgear
  • cubers
  • tester
  • Durango
  • anitta
  • normalnudes
  • osvaldo12
  • cisconetworking
  • Leos
  • megavids
  • provamag3
  • lostlight
  • All magazines