[HN Gopher] DeskPad - A virtual monitor for screen sharing
___________________________________________________________________
DeskPad - A virtual monitor for screen sharing
Author : geerlingguy
Score : 473 points
Date : 2024-10-10 16:36 UTC (6 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| mcphage wrote:
| As someone with an ultrawide monitor, this seems like a really
| neat solution. Thanks for sharing it!
| rcarmo wrote:
| 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...
| rr60 wrote:
| +1 for RegionToShare on windows. It's not perfect but it has
| made sharing on a 49" monitor much much easier.
| delusional wrote:
| What an intriguing idea. I wonder if I could do something similar
| on linux by placing a second monitor on top of my current one
| with xrandr.
| sadjad wrote:
| On Linux, you can try Xephyr
| (https://www.freedesktop.org/wiki/Software/Xephyr/,
| https://wiki.archlinux.org/title/Xephyr). It's not as nice as
| DeskPad, but you can basically achieve the same thing.
| arjvik wrote:
| Xephyr runs a whole new X server - it's not as easy to drag
| and drop an application into the nested server, it has to be
| launched with DISPLAY=:1.
| nixosbestos wrote:
| 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.
| _6GoofyWizard9_ wrote:
| Very nice idea! It would be nice to be able to do the same on
| Linux and/or Windows, too!
| bitbang wrote:
| This has been possible on Linux (Wayland + pipewire) for a
| couple years now.
| neilv wrote:
| The title could clarify it's for MacOS X.
| neallindsay wrote:
| Linux users probably already have some weird workflow with X11
| virtual buffers to do this.
| jauntywundrkind wrote:
| 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.
|
| Available May 2020, https://github.com/any1/wayvnc/issues/7#i
| ssuecomment-6256611...
| moritzruth wrote:
| For Hyprland, the command is `hyprctl output create
| headless NAME`
| Devorlon wrote:
| 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.
| marcodiego wrote:
| Xnest is probably enough. I've used it for similar purposes a
| few times. Don't know the equivalent for Wayland though.
| Arnavion wrote:
| 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.
| tasn wrote:
| This is how I do it under Sway (Wayland):
|
| #!/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.
| arjvik wrote:
| Ooh, creating a headless display and then wl-mirroring it
| is incredibly smart! Have been looking for something like
| this!
| tasn wrote:
| I just realized formatting is a bit broken. :(
|
| 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
| craftkiller wrote:
| You can do code blocks on HN by prefixing your lines with
| four spaces. #!/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
| mmh0000 wrote:
| 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.
|
| Only two spaces are needed:
| https://news.ycombinator.com/formatdoc
| function trim { sed -e 's/^[[:space:]]*//' -e
| 's/[[:space:]]*$//' }
|
| /end sarcasm
| pepve wrote:
| 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).
| kristopolous wrote:
| That's a good solution. I used xnest
| craftkiller wrote:
| 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.
|
| [0] https://man.archlinux.org/man/extra/xdg-desktop-portal-
| wlr/x...
| mdeeks wrote:
| Small FYI: it's just called macOS now
| ekinertac wrote:
| 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.
| transfire wrote:
| Wouldn't it be nice if we could adjust resolution per window?
|
| On a 4k monitor some applications have tiny text and icons, and
| no way adjust that I can find.
| rcarmo wrote:
| I just went to Preferences and set the resolution of the
| virtual display to 1920x1080.
| transfire wrote:
| But doesn't that affect ALL windows?
| mmastrac wrote:
| 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.
| garysahota93 wrote:
| 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
| leptons wrote:
| 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.
| xahrepap wrote:
| I used that until we moved to Teams for all video calls. And it
| doesn't have that feature :(
|
| I've looked around for an app like this. But they're all paid
| and the security prompts are a little scary.
| imzadi wrote:
| I need this. I have a 49" monitor and sharing the screen is such
| a pita
| jeanlucas wrote:
| So neat!
| shmoogy wrote:
| Thank you for this - sharing a window makes drop downs and other
| things not work. I look forward to trying this out for a better
| solution.
| benjonesutah wrote:
| 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/
| jakelsaunders94 wrote:
| Oh lawd I've had to say 'sorry you'll have to bear with my
| ultrawide' during pairing at least 10 times in the last week. You
| are a lifesaver.
| neLrivVK wrote:
| I've been using https://github.com/waydabber/BetterDisplay for
| this purpose. Does something similar and more. Works great!
| mellosouls wrote:
| But not open source? I mean, its fine if its closed, but no
| point in linking to a github repo, and if so its not a like-
| for-like.
|
| Edit: I see looking at the branches an old version was open
| source some years ago.
| blsv wrote:
| Which feature do you use? Would like to try it as well.
| ilyagr wrote:
| I know it can create a dummy display, but can it create a
| window on the real display showing the contents of the virtual
| display?
|
| That seems to be the flagship feature of DeskPad.
| supermatt wrote:
| This looks great - really useful!
|
| 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?
| sleepybrett wrote:
| > Does apple allow distribution of an app that use these
| "private" APIs?
|
| In the app store, sure, any other way, what can they going to
| do about it?
| supermatt wrote:
| They could not notarize it, meaning users have to tackle
| bypassing the Gatekeeper?
| conductr wrote:
| 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?
| rcarmo wrote:
| OK, I have a series of steps you can follow:
|
| - 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)
| LorenPechtel wrote:
| 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.
| madhias wrote:
| 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.
| wmf wrote:
| Yeah, if you create a virtual monitor with low resolution like
| 1280x720 or 1024x768 people will be able to see what you're
| sharing.
| mbreese wrote:
| 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.
| eastbound wrote:
| +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.
| conductr wrote:
| > 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!
| jeanregisser wrote:
| Nice! I'm currently using https://www.appblit.com/screegle
|
| It works well and has more features but I like having an open
| source alternative. Thanks
| savrajsingh wrote:
| Zoom has this as a built-in feature -- you can share just a
| region you specify of your whole display. Share screen ->
| advanced -> "portion of screen"
| mathfailure wrote:
| Is it open source? Oh, no?
| mleo wrote:
| 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.
| prmoustache wrote:
| Why do change the resolution instead of the scaling?
| swijck wrote:
| Having had to order whiteboards to airbnbs for offsites, yes this
| is cool!
| jameslk wrote:
| 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.
| doubleorseven wrote:
| 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.
| sandos wrote:
| This has to have been made for MS teams, right? It is unusable if
| youre screen is too large!
| madman2k wrote:
| Nice. I'm testing it watching a YouTube video in "full screen" in
| its window, while also leaving room for a browser and email
| window on that monitor.
| albert_e wrote:
| This is an excellent use case that I also often felt the need
| for.
|
| You can remove all the YT clutter this way, have all the
| controls and keyboard shortcuts, and extensions like Video
| Speed Controller still functional while precisely controlling
| the position and size of the video. Would be great for
| following long lectures and tutorials.
|
| any good solution for this for a Windows machine?
| spaceywilly wrote:
| I use the "maximize video" chrome extension which may work
| for you. You can click on any video player and it will make
| that take up the whole browser window size. So then the video
| size == the browser window size. I use it to panel multiple
| videos around my screen (mostly for watching multiple NFL
| games at the same time).
|
| I also use Better Touch Tool which supports keyboard
| shortcuts for arranging windows, I believe there's a similar
| tool for windows. So for example if I want 4 equal sized
| windows (in each quadrant of the monitor) I can do it easily
| with keyboard shortcuts.
| thomasjv wrote:
| Just don't drag the DeskPad window to the virtual monitor
| spease wrote:
| Cool! I usually have to share window-by-window, this may come in
| handy.
| evanjrowley wrote:
| This is very useful, thank you.
| nashashmi wrote:
| Windows has a similar tool. But it's two steps.
|
| 1. Set up a new virtual monitor (see
| https://github.com/itsmikethetech/Virtual-Display-Driver)
|
| 2. See virtual monitor using google chrome desktop.
| wpm wrote:
| I've gotten away with simply firing up OBS and "screen sharing"
| the virtual camera. Has worked fine on Zoom and Slack huddles,
| with the added benefit of giving me other things that OBS can
| provide: easy recording, scenes, text, source management,
| plugins, etc. For a casual conversation it's somewhat overkill,
| but when you're doing something more serious or formal, or need
| to switch between a keynote/Powerpoint and a screen share, or a
| video capture device, it's wonderful, and actually rather easy to
| get going in.
| lolinder wrote:
| > and actually rather easy to get going in.
|
| The other day I tried installing OBS on a Mac and this was not
| my experience. I couldn't even get it to recognize the built-in
| MacBook camera, much less share a screen or a mic or...
|
| I've successfully got OBS set up on Linux in the past and
| managed to get a simple workflow running, but even that took a
| lot of fiddling to get started and I had the darndest time
| finding what I needed. The UI reminded me of GIMP--I'm sure I
| could eventually figure out how to work it and it probably
| makes complicated workflows possible in ways that simpler tools
| don't, but for a newcomer it has been overwhelming.
| ziknard wrote:
| It would be so nice if we could stop destroying the planet by
| dropping support for legacy Macs. Mine is a 2014 Air and I'll
| stop using it when it crumbles to dust.
| gechr wrote:
| After trying various solutions - including DeskPad - I came up
| with a custom cross-platform (I'm on macOS, but assume it'll work
| elsewhere) solution that worked incredibly well on my 40"
| ultrawide monitor: OBS[1].
|
| Having never used OBS before but knowing it was popular among
| streamers, I wondered if I could use it to (1) only share the
| specific applications I wanted to share and (2) share them at a
| resolution that people could actually read, without constantly
| being asked to zoom in.
|
| I first tried setting up a virtual camera and sharing via my
| video stream, but it was laggy and the quality was so poor that
| people couldn't read what I was sharing. I quickly gave up on
| that approach.
|
| Then I discovered Projectors[2]. By right-clicking on the main
| view in OBS and selecting "Windowed Projector (Preview)", it
| launches a separate window, which I can then share directly via
| Zoom, Teams, Meet, etc.
|
| Whatever I drag into the OBS view is displayed in the Windowed
| Projector (similar to DeskPad), with the added bonus that I can
| choose to blur certain applications that might be dragged in. For
| example, if I open Slack or my password manager, the entire
| window blurs until I focus back on my terminal or browser.
|
| It took a bunch of tweaking to perfect, but I'm very pleased with
| how well it works now.
|
| ---
|
| [1] https://obsproject.com/
|
| [2] https://obsproject.com/kb/power-of-projectors
| spaceisballer wrote:
| I like using FancyZones which is in the Microsoft PowerToys
| suite. That way you can snap things to a 1080p resolution part of
| your ultrawide screen. My other simple option is just open the
| laptop screen which is 1080p
___________________________________________________________________
(page generated 2024-10-10 23:00 UTC)