moonlight-stream / moonlight-ios

GameStream client for iOS/tvOS
GNU General Public License v3.0
1.04k stars 261 forks source link

Adding External Screen Support [Feature Request #11] #411

Open mattrussell7 opened 4 years ago

mattrussell7 commented 4 years ago

Added External Screen Support for all iOS devices whether through HDMI Out via Lightning/USB-C or Airplay Screen Mirroring.

Feature Request #11 discusses this.

tristan-k commented 3 years ago

Will this be merged anytime soon?

jasonmp85 commented 3 years ago

What does this need to be merged? I hate playing in pillarbox on my TV, which is pretty much my main use case for this app

tristan-k commented 2 years ago

Still waiting for this one. Steam Link already does this albeit with black bars due to the aspect ratio of iPads.

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

jasonmp85 commented 2 years ago

Ping to keep from closing.

marinobantli commented 2 years ago

Hello, I started working on this and got it to work for now. However, I've never coded in objective C before and there is some potential to optimize or better ways to solve it for sure.

For now, when you connect an external Display, it will automatically move the stream to the external screen in its native resolution and the iPad only shows a black screen (or the statistics overlay if you enabled it). If you unplug the monitor, it will move to the iPad screen again.

However, at the moment, i don't get it to work above 60Hz...

tristan-k commented 2 years ago

@marinobantli Do you have a IPA binary available for testing?

jasonmp85 commented 2 years ago

I've no Obj-C experience either, but give me an app and what I can do to get logs or debugging or whatever and I'll gladly help out.

ReclusiveRychuRychu commented 2 years ago

Hello, I started working on this and got it to work for now. However, I've never coded in objective C before and there is some potential to optimize or better ways to solve it for sure.

For now, when you connect an external Display, it will automatically move the stream to the external screen in its native resolution and the iPad only shows a black screen (or the statistics overlay if you enabled it). If you unplug the monitor, it will move to the iPad screen again.

However, at the moment, i don't get it to work above 60Hz...

This sounds amazing! and exactly what Moonlight needs. Can any devs implement this?

marinobantli commented 2 years ago

Sorry for the silence, as of now, the external screen works, but I can't get mouse scrolling and keyboard inputs to work on the external screen. Controller input works however.

I would like to implement a little "dashboard" which is displayed on the iPads screen whenever an external display is connected to be able to change the external resolution.

ReclusiveRychuRychu commented 2 years ago

Sorry for the silence, as of now, the external screen works, but I can't get mouse scrolling and keyboard inputs to work on the external screen. Controller input works however.

I would like to implement a little "dashboard" which is displayed on the iPads screen whenever an external display is connected to be able to change the external resolution.

No apologies necessary! You're solving the final piece of the puzzle for my ideal set up! As a controller user this sounds like all I'd need, but obviously making sure everything works properly is important, and the added dashboard sounds like a lovely QoL improvement.

I'd love to see @cgutman help you with this and get it implemented in the next version!

jasonmp85 commented 2 years ago

To be clear, I need to take this branch, build it, and try it out?

gsaker commented 1 year ago

I would also love this feature to be added. Any updates?

perroboc commented 1 year ago

Ping! Just because I think this is a must 🙂

marinobantli commented 1 year ago

I will try to work on it again in a few weeks… I’m absolutely new to Objective-C and what i have written so far will probably be obsolete / cleaner to code in the upcoming ipadOS 16 due to the new Stage Manager.

beitincapital commented 1 year ago

Hello - just wondering if anyone has made progress on this request? The feature would be an amazing addition to the iOS app.

git-nerd commented 1 year ago

It would be great if this feature did not depend on stage manager, because there are ipads that don’t all run stage manager (like ipad mini).

patroza commented 10 months ago

here's an updated fork that works https://github.com/patroza/moonlight-ios/pull/1/files

stage manager solutions are not useful for me because I dont have a pointing device like mouse connected to change the window to full screen on the external display. the external display is even just xreal air glasses. so this solution is great as it functions similar to Apple TV, Netflix and steam link.

jeff08568 commented 10 months ago

Can I use your fork or do we have to wait for merge

patroza commented 10 months ago

Can I use your fork or do we have to wait for merge

Feel free

jeff08568 commented 10 months ago

Can confirm it’s working as expected. However when I locked my screen I noticed the image becomes static/stopped moving? Is this an iOS limitation?

patroza commented 10 months ago

Can confirm it’s working as expected. However when I locked my screen I noticed the image becomes static/stopped moving? Is this an iOS limitation?

Think so but unsure; how is the behavior with Netflix or TV app? Or Steam link

jeff08568 commented 10 months ago

Can confirm it’s working as expected. However when I locked my screen I noticed the image becomes static/stopped moving? Is this an iOS limitation?

Think so but unsure; how is the behavior with Netflix or TV app? Or Steam link

I’ve tested Netflix, Plex and nPlayer, they all seem to work fine with screen off. Not sure about steam link though, will test tomorrow

Edit: I’ve tested Steam link, it behaves exactly as your forked version. Not sure how apps like Netflix got around this, although I doubt you can send any controller signal to iOS with the screen locked.

patroza commented 10 months ago

I’ve tested Netflix, Plex and nPlayer, they all seem to work fine with screen off. Not sure about steam link though, will test tomorrow

Edit: I’ve tested Steam link, it behaves exactly as your forked version. Not sure how apps like Netflix got around this, although I doubt you can send any controller signal to iOS with the screen locked.

nice find! yea in my case I use controllers connected to my pc, so for me that would be fine. but I imagine for most other people it will be important.

mikicof commented 7 months ago

I'm very interested having this, can we go on with the PR?

amirlpro commented 2 months ago

Please prioritize this PR

yichengchen commented 1 month ago

any progress on this?I try merge the pr with the master branch and it works. If there are any necessary change need to do before merge, I am willing to help.