In my experience, disabling monitors/displays is just not worth it; I'll have to spend too much time getting everything set back up correctly afterward, and that's really inconvenient and annoying.
The solution that I've landed on is Xephyr; Xephyr runs a second X11 server inside a new window, so when I need to get on a call where I'll have to share my screen, I simply:
- Launch a new Xephyr display.
- Close Slack.
- Open Slack on the Xephyr display.
- Open whatever else I'll need to share in the Xephyr display, typically a web browser or a terminal.
- Get on the Slack call and share my "screen".
Some small details:
- You'll need to open Xephyr with the resolution that you want; given window decorations and such, you may need to play around with this a bit. Once you find out what works, put it in a script.
- In order to resize windows in Xephyr, it'll need to be running a window manager. I struggled to get any "startx"-related things working, but I found that "twm" worked well enough for my purposes.
- Some applications, such as Chrome, won't open on two displays at the same time. I just open a different browser in my Xephyr display (for example, I use "google-chrome" normally and "chromium-browser" in Xephyr), but you can also run Chrome using a different profile directory and it'll run in the other display.
Install Xephyr and TWM:
sudo apt install xserver-xephyr twm
Run Zephyr, Slack, and Chromium:
# Launch Xephyr and create display ":1".
Xephyr -ac -noreset -screen 1920x1000 :1 &
# Start a window manager in Xephyr.
DISPLAY=:1 twm &>/dev/null &
# Open Slack in Xephyr.
DISPLAY=:1 slack &>/dev/null &
# Open Chromium in Xephyr.
DISPLAY=:1 chromium-browser &>/dev/null &
It's kind of dirty, but it works extremely well, and I don't have to worry about messing with my monitor setup when I need to give a presentation.
Edit: an earlier version of this post used "Xephyr -bc -ac -noreset -screen 1920x1000 :1 &" for the Xephyr command; I can't get this to work with "-bc" anymore; I must have copied the wrong command when I published the post.