This is _genius_. I have been using RegionToShare in Windows to share only a section of a widescreen monitor, but didn't have a good Mac equivalent. Now I have something that may well work _just as well_ with Windows inside Parallels (need to try that ASAP, am on the "wrong" Mac now).
Edit: A quick test shows that yes, the Windows VM sees the additional display just fine--but, alas, Parallels doesn't let me pass _just_ one physical and that virtual display to the VM, so I can't have my "personal" portrait monitor unoccupied by Windows...
I will "third" RegionToShare.. Sometimes I need to share many windows in a meeting and rather than share my entire 4k monitor, I can set up a 1080p region with RtS and put a bunch of windows in there to swap between when I'm doing my demo, and it's super useful!
It's too easy to just use OBS for this, in my opinion. Add the pipewire display capture, add a filter to crop it to a corner, stretch that container to fit the stage, open the window in the corner. Fairly simple.
It has been possible on Linux for way longer than that, Xnest dates back to when it was still XFree86 rather than Xorg. Quick googling has Xnest and Xephyr mentioned in 2012 changelogs (X11R7.7), but those aren't even "creation" changelogs. (I can't easily dig up when they were created…)
Yeah. On Wlroots or Sway, we can setup virtual displays pretty easily (swaymsg create_output, done). Run wayvnc, and both the other person and yourself connect over vnc or rdp to see what's over there.
It's not exactly the same, but as an alternative to what jauntywundrkind you can use V4L2-Loopback and OBS to create a virtual webcam and use that to share your screen. I find it really handy being able to switch between either just my cam, my desktop or both.
Yes, Wayland compositors like cage and sway can be nested too.
That said, with both the X nesting approach and the Wayland nesting approach, you'd also need to run the screencasting application itself inside the nested server, not the just the application you want to cast. If the compositor supports a way to create headless outputs (as sway and hyprland do) that is much easier.
Four spaces!? Absurd! Think of how many bytes you're wasting! In just your last code block your flooded the internet with 28 needless bytes!?!?!?!! If this keeps up soon we'll all just be downloading whitespace.
I use `xrandr --setmonitor` to create a fake monitor that only covers part of my screen. And I have some window manager setup to easily move my windows there (with awesomewm).
Personally I don't bother with a virtual display. I automatically set my display scale to 2x when I start screen sharing. I set that up with exec_before and exec_after hooks in xdg-desktop-portal-wlr[0]. In addition to turning off my notification daemon (so my email/instant message notifications don't pop up), my exec_before/exec_after scripts just run:
swaymsg output "MY-MONITOR" scale 2 # or 1 for exec_after
With that, everything puffs up big and readable when I'm screensharing and seamlessly shrinks back down when I stop screen sharing. No need to juggle windows around to different displays.
As a Linux user who generally prefers to avoid the command line for things user friendly applications should be able to do, I'll stick with OBS. That solution also works on Windows, which is extra nice.
what a briliant idea, most of my meeting i had to share my 4K screen with laptop pals and most of the time i had to zoom so they can see. now it's solved.
I like the idea! Rooting for whoever in the universe working on it! Meanwhile, I think you could actually "mimic" this by using OBS as a virtual camera and use multiple layers to selectively share windows. You can set an output video size, and scale different layers/windows individually.
Very cool. Does it require the "screen recording" indication to be up the entire time whether screen recording is happening or not? I don't see any info in the repo but I recall some previous solutions would effectively appear to be recording all the time.
EDIT: unfortunately it does. But if it's designed for screen sharing, it's probably not a big deal. Unfortunately there's no easy way to mirror on OSX without this, AFAIK. This particular issue is annoying for certain USB-C video adapters that create a virtual screen and mirror it over an arbitrary protocol.
I really like this concept. especially for the use case where I need to share my whole screen, but just want a "sandbox" of sorts to share. Typically have gotten around this with a secondary monitor that I share with, but that doesn't work when I'm on the go with my laptop. Will def be using this
On Linux, a simple solution for this particular use case is to run a VNC server inside xvfb. You get total isolation between your real desktop, and your "sandbox" - no embarrassing notifications! Of course you can't drag windows around from one to the other, but that's what a sandbox does...
With my 6480 x 3840 (three 4k screens) desktop resolution, in Zoom I just select "Share a portion of screen", and I can resize the area that gets shared to something close to a common screen size.
I have a 43” and keep my laptop screen open for when I need to share my screen. The issue is when I have to share code, because my font is huge in my editor. I could scale up and down I guess, but I really don’t like messing with stuff once I have it how I like it.
More and more I’ve gotten lazy and share my main screen. My editor is big enough for people to see, but browsers are an issue. I have less of an issue zooming those as needed.
Here is a related project I use to share selected content (usually single windows and my iPad) on a projector while teaching: https://github.com/benjones/presenterMode/
Yes. It can also do windowed mirrors of real displays. That being said, BetterDisplay is $19 USD and crams in a ton of functionality, so for those who just want a single virtual screen for screen sharing (and don't need/want anything else), DeskPad is probably the better option due to its simplicity and being free. But yeah, if you want something more advanced, BetterDisplay is great.
I have always wondered how these virtual desktops work. A cursory looks shows that this is using some undocumented APIs. How do people learn they can create a virtual desktop in this way if the knowledge to do so is hidden/obfuscated?
Does apple allow distribution of an app that use these "private" APIs?
Is anyone aware of what mechanisms are there for achieving something similar in windows?
I think the problem I have is more so that people want my font sizes to be 3x what I have them. Usually I’m presenting a spreadsheet (financial statements and such) and people ask me to zoom in. Which I can but it breaks the whole thing and throws me off because I can no longer read my document anymore and I’m trying to present it. For that reason, I evangelize that attendees use the Zoom feature on their device if it’s too small.
As I understand the issue it’s not that font is too small on my device, it’s that Teams has a tiny viewport and so it gets shrunk down. Most people aren’t doing full screen. They have a sidebar for chat and such and a top bar of other options. These don’t leave much real estate for my presentation.
Would something like this help my problem or anyone know a better solution?
- Go to System Settings and set the resolution of the virtual display to 1920x1080 (just to be a standard size/resolution and not retina, saves on resources and hassle)
- Still in System Settings, set Accessibility Zoom to render a magnified version on the virtual display:
I ended up buying a bigger monitor for screen share. For most purposes I prefer my setup with multiple 19" monitors running at 1280x1024 but it's a nightmare if someone with a higher desktop wants to share. I have found the bigger monitor nice for games also.
I am presenting SAP t-codes on a daily basis and can relate – especially for presentations I tried to show always only the most important things and use fonts like 2 or 3 times bigger, especially with monospace fonts not so easy to find good readable narrow fonts.
I often call into meetings where I am also presenting twice. Once on my phone and once from my computer. I use my computer for sharing, audio, video, etc. I use my phone to see what the other people see. Shared screens are always difficult to predict. If you have a 4K screen, it will almost always get downsampled somehow for meetings… it can be too slow otherwise.
In my experience, the problem isn’t that the font is too small on your device, but rather that you’re sharing too much screen. Even if I’m sharing a terminal window (common for me), instead of changing the font, I try to make the window smaller. This has the same effect and is much easier to control. On the viewing device, the video you send it always scaled (either for a different resolution or viewport size), so it helps to limit the size of the screen/window that you’re sharing.
Telling viewers to zoom in if they can’t read anything sounds like you’re blaming them for the problem. If you have a different device connected, you might be in a better position to find a solution on your end.
+1 to learning how to share a window, doing it fast when you’re changing windows, and reducing the size of the window. It shows that you care for the audience.
The UX for window sharing is just too crappy for this suggestion. I do this, and the single hardest part is locating the window in the list of windows to share.
Combine that with a workflow that involves 2 or more windows (e.g., switching between a terminal & a browser … or just wanting to display them both at the same time¹), and it's not really workable.
¹… and while there's no technical reason I couldn't share two windows … there's no support for it.
> - The last window is always suggested FIRST when sharing,
It most definitely isn't. (I just checked, just to humor you.)
> - Learn what to look at: Look at the appearance of your browser window before you go click Share my screen.
I'm often staring at it the window I intend to share as I'm going through the list so as to be able to find it. I don't think it's as useful as you think it is.
> Don’t pass as a boomer when you can be a Millennial!
… right …
You're probably making some assumptions about the exact OS/browser/VC SW combination that I'm using, your suggestions simply don't apply to the one I am using.
> Telling viewers to zoom in if they can’t read anything sounds like you’re blaming them for the problem
yeah I wouldn't disagree, have been ignorant to the solution on this one. It's a recent concern as I'm new to Teams and working at a company with an older demographic than I'm used to so I'm kind of new to getting this request so much tbh. When people complain about having "aging eyes" my default response has been to zoom up to 150% but beyond that I can't even use my own computer as a presentation device for myself which is a showstopper, so my initial thought was tell them to use the Zoom, it's what you do on your phone to read small text, browser to read news, etc. and honestly I zoom in when I can't read someone elses screen (I've never asked someone to increase a font size mid-presentation). Part of the problem is the content kind of requires a lot of columns of data to be visible at once. Bouncing around from YTD to MTD sections by section kind of breaks the flow of the meeting, especially because while I'm presenting they are all individually consuming the content differently (one guy only care's about Margins, one guy only cares about Expenses, etc so it helps to have a lot on the screen at once and let them zoom into what they care about)
All said, I'm definitely going to try out all the suggestions here and see if I can figure out a better solution. Thanks HN!
As someone often on the receiving end of screenshares, I cannot recommend enough that you do not maximize your shared window itself unless it's absolutely necessary. On a typical 15" laptop, 2/3 the width and ¾ the height is great. (for a 4K/5K monitor this will probably be a smaller fraction). Even assuming everyone else has eyesight on par with your own, it's wise to leave room for the chat on one side and a toolbar on the bottom. (And please never maximize a shared window on those 21:9 displays; that is so painful for everyone on a laptop. We get giant black bars at top and bottom, and your text at like 2px.)
People can zoom, yes, but it's going to require scrolling which can be distracting even if it's set to "follow pointer" -- and your pointer may be zipping all over (like, going to the toolbar when the users are looking at a row near the bottom of the screen).
I know it is a challenge to limit yourself to a small canvas -- we all love using a big screen for certain tasks -- but I believe it's going to be easier and make for a more engaging and productive session when you control both the viewport size and the scroll position at all times. One nice thing about Zoom is that it is dynamic, so if you are sharing a window and you realize you need more horizontal real-estate for a certain part of your preso, you can momentarily resize your window for that, and then go back to a more manageable size when done, with no re-sharing needed.
> As I understand the issue it’s not that font is too small on my device, it’s that Teams has a tiny viewport and so it gets shrunk down. Most people aren’t doing full screen.
AFAIK, teams literally does not have a way to put the viewport in full screen mode!
This is great; though I have less need for it day to day now.
I used to have 49" 5120x1440 display. We started with Zoom, which under Advanced would allow partial desktop sharing. I would draw a 1920x1080 box and move windows in and out of the box.
We moved to Teams and Teams only supports Window or Screen sharing. DeskPad would work great for that situation. Create a virtual display, share it and then use it on right part of the physical screen, moving windows in and out as needed.
Currently, I use 2 Studio Displays instead of the 1 Wide Screen. When I need to share screens, I press a button on Stream Deck that calls displaypacer to set the resolution on the second display to 1600x900. When done, I press the button again and it toggles the resolution back to 5K. The resolution switching is instantaneous with Apple Silicon/Studio Display making it hassle free.
That’s what changing the resolution on MacOS does. On Windows, resolution and DPI are separate settings. On MacOS they are combined into a single “resolution” and you pick from a list that makes sense for the display in question.
You pick the “effective resolution“ of the display, but the native screen resolution is always used and the DPI is changed to scale things up or down until they are scaled the same they would be on a monitor of the chosen resolution.
There are a few choices in that list, denoted by “(low resolution)” or something, which set the indicated resolution and leave scaling at 100%. Those look horrific on MacOS but they are options.
Notched MBPs can't do HD through resolution changing. (I would love to be proven wrong on this. See my other comment for hoops I jump through to get around this.)
I have an Intel MBP, so my first question is will this work on my legacy hardware? And my second question is will this act like a typical external display I connect to my MBP and set it on fire? As far as my experience goes, it's not behaving like an external display unless my CPU is occasionally pegged at 100%, fans are blasting, and my computer becomes intermittently unusable until I disconnect the display.
I used to have an Intel MB, mid 2010.
I had to disconnect the hdmi cable so it can boot, otherwise it would just blast the fan displaying the apple loading animation.
It died on 2022 when i installed an update that asked for a restart and i forgot to disconnect and went on vacation.
RIP Intel MPs. Amazing beasts.
166 comments
[ 2.9 ms ] story [ 226 ms ] threadEdit: A quick test shows that yes, the Windows VM sees the additional display just fine--but, alas, Parallels doesn't let me pass _just_ one physical and that virtual display to the VM, so I can't have my "personal" portrait monitor unoccupied by Windows...
https://github.com/tom-englert/RegionToShare
Available May 2020, https://github.com/any1/wayvnc/issues/7#issuecomment-6256611...
That said, with both the X nesting approach and the Wayland nesting approach, you'd also need to run the screencasting application itself inside the nested server, not the just the application you want to cast. If the compositor supports a way to create headless outputs (as sway and hyprland do) that is much easier.
#!/bin/bash
swaymsg create_output OUTPUT=$(swaymsg -r -t get_outputs | jq '.[].name' | grep HEADLESS | tr -d '"')
# No need to reduce res, it defualts to 1080p #swaymsg output "$OUTPUT" resolution 1280x720
wl-mirror "$OUTPUT"
swaymsg output "$OUTPUT" unplug
When I was still in X11 land I used to just use Xephyr.
Fixed:
#!/bin/bash
swaymsg create_output
OUTPUT=$(swaymsg -r -t get_outputs | jq '.[].name' | grep HEADLESS | tr -d '"')
# No need to reduce res, it defualts to 1080p
# swaymsg output "$OUTPUT" resolution 1280x720
wl-mirror "$OUTPUT"
swaymsg output "$OUTPUT" unplug
Only two spaces are needed: https://news.ycombinator.com/formatdoc
/end sarcasm[0] https://man.archlinux.org/man/extra/xdg-desktop-portal-wlr/x...
On a 4k monitor some applications have tiny text and icons, and no way adjust that I can find.
EDIT: unfortunately it does. But if it's designed for screen sharing, it's probably not a big deal. Unfortunately there's no easy way to mirror on OSX without this, AFAIK. This particular issue is annoying for certain USB-C video adapters that create a virtual screen and mirror it over an arbitrary protocol.
I’ve looked around for an app like this. But they’re all paid and the security prompts are a little scary.
More and more I’ve gotten lazy and share my main screen. My editor is big enough for people to see, but browsers are an issue. I have less of an issue zooming those as needed.
Edit: I see looking at the branches an old version was open source some years ago.
That seems to be the flagship feature of DeskPad.
I have always wondered how these virtual desktops work. A cursory looks shows that this is using some undocumented APIs. How do people learn they can create a virtual desktop in this way if the knowledge to do so is hidden/obfuscated?
Does apple allow distribution of an app that use these "private" APIs?
Is anyone aware of what mechanisms are there for achieving something similar in windows?
In the app store, sure, any other way, what can they going to do about it?
As I understand the issue it’s not that font is too small on my device, it’s that Teams has a tiny viewport and so it gets shrunk down. Most people aren’t doing full screen. They have a sidebar for chat and such and a top bar of other options. These don’t leave much real estate for my presentation.
Would something like this help my problem or anyone know a better solution?
- Start DeskPad
- Go to System Settings and set the resolution of the virtual display to 1920x1080 (just to be a standard size/resolution and not retina, saves on resources and hassle)
- Still in System Settings, set Accessibility Zoom to render a magnified version on the virtual display:
https://support.apple.com/guide/mac-help/zoom-in-on-whats-on....
- Resize the DeskPad window to be a nice little preview on the corner of your screen.
- Start your call, share the virtual display (which will be the zoomed version of what you are pointing at with your mouse)
In my experience, the problem isn’t that the font is too small on your device, but rather that you’re sharing too much screen. Even if I’m sharing a terminal window (common for me), instead of changing the font, I try to make the window smaller. This has the same effect and is much easier to control. On the viewing device, the video you send it always scaled (either for a different resolution or viewport size), so it helps to limit the size of the screen/window that you’re sharing.
Telling viewers to zoom in if they can’t read anything sounds like you’re blaming them for the problem. If you have a different device connected, you might be in a better position to find a solution on your end.
Combine that with a workflow that involves 2 or more windows (e.g., switching between a terminal & a browser … or just wanting to display them both at the same time¹), and it's not really workable.
¹… and while there's no technical reason I couldn't share two windows … there's no support for it.
- The last window is always suggested FIRST when sharing,
- Learn what to look at: Look at the appearance of your browser window before you go click Share my screen.
The second will provide a visual confirmation that you’re clicking the right button. Don’t pass as a boomer when you can be a Millennial!
It most definitely isn't. (I just checked, just to humor you.)
> - Learn what to look at: Look at the appearance of your browser window before you go click Share my screen.
I'm often staring at it the window I intend to share as I'm going through the list so as to be able to find it. I don't think it's as useful as you think it is.
> Don’t pass as a boomer when you can be a Millennial!
… right …
You're probably making some assumptions about the exact OS/browser/VC SW combination that I'm using, your suggestions simply don't apply to the one I am using.
yeah I wouldn't disagree, have been ignorant to the solution on this one. It's a recent concern as I'm new to Teams and working at a company with an older demographic than I'm used to so I'm kind of new to getting this request so much tbh. When people complain about having "aging eyes" my default response has been to zoom up to 150% but beyond that I can't even use my own computer as a presentation device for myself which is a showstopper, so my initial thought was tell them to use the Zoom, it's what you do on your phone to read small text, browser to read news, etc. and honestly I zoom in when I can't read someone elses screen (I've never asked someone to increase a font size mid-presentation). Part of the problem is the content kind of requires a lot of columns of data to be visible at once. Bouncing around from YTD to MTD sections by section kind of breaks the flow of the meeting, especially because while I'm presenting they are all individually consuming the content differently (one guy only care's about Margins, one guy only cares about Expenses, etc so it helps to have a lot on the screen at once and let them zoom into what they care about)
All said, I'm definitely going to try out all the suggestions here and see if I can figure out a better solution. Thanks HN!
People can zoom, yes, but it's going to require scrolling which can be distracting even if it's set to "follow pointer" -- and your pointer may be zipping all over (like, going to the toolbar when the users are looking at a row near the bottom of the screen).
I know it is a challenge to limit yourself to a small canvas -- we all love using a big screen for certain tasks -- but I believe it's going to be easier and make for a more engaging and productive session when you control both the viewport size and the scroll position at all times. One nice thing about Zoom is that it is dynamic, so if you are sharing a window and you realize you need more horizontal real-estate for a certain part of your preso, you can momentarily resize your window for that, and then go back to a more manageable size when done, with no re-sharing needed.
AFAIK, teams literally does not have a way to put the viewport in full screen mode!
It works well and has more features but I like having an open source alternative. Thanks
I used to have 49" 5120x1440 display. We started with Zoom, which under Advanced would allow partial desktop sharing. I would draw a 1920x1080 box and move windows in and out of the box.
We moved to Teams and Teams only supports Window or Screen sharing. DeskPad would work great for that situation. Create a virtual display, share it and then use it on right part of the physical screen, moving windows in and out as needed.
Currently, I use 2 Studio Displays instead of the 1 Wide Screen. When I need to share screens, I press a button on Stream Deck that calls displaypacer to set the resolution on the second display to 1600x900. When done, I press the button again and it toggles the resolution back to 5K. The resolution switching is instantaneous with Apple Silicon/Studio Display making it hassle free.
You pick the “effective resolution“ of the display, but the native screen resolution is always used and the DPI is changed to scale things up or down until they are scaled the same they would be on a monitor of the chosen resolution.
There are a few choices in that list, denoted by “(low resolution)” or something, which set the indicated resolution and leave scaling at 100%. Those look horrific on MacOS but they are options.
I can set my display to 1728x1080. That's HD.
I can also output my Mac to an HD TV, Projector, etc. And I have the notch on my MacBook Pro.
Do you have some other definition of HD that I'm not understanding?