For those with similar problems: I have found a workaround that is for the moment acceptable for me:
- Download and install displayplacer here: https://github.com/jakehilborn/displayplacer
- Run "displayplacer list" to get a lot of information about your screen(s) and resolution(s). Ideally run it while only one monitor is connected. The last line is of interest:
Code:
displayplacer "id:some-random-guid-for-my-monitor res:2560x1080 hz:75 color_depth:8 enabled:true scaling:off origin:(0,0) degree:0"
- Copy this line (which will set your screen to your current settings) and create a shell script in /usr/local/bin (e.g. vi /usr/local/bin/fixblackscreen.sh)
- Paste the copied line into the script twice. Change something (valid) in the first line (resolution, refresh rate) so the display mode gets switched. My script (switching to 60Hz and then back to 75Hz) looks something like this:
Code:
#!/bin/zsh
displayplacer "id:some-random-guid-for-my-monitor res:2560x1080 hz:60 color_depth:8 enabled:true scaling:off origin:(0,0) degree:0"
displayplacer "id:some-random-guid-for-my-monitor res:2560x1080 hz:75 color_depth:8 enabled:true scaling:off origin:(0,0) degree:0"
- Make the script executable (chmod...) and test-run it. Your screen should "flicker"
- Now create a global shortcut to execute this script (so you can trigger it when your screen is black...) I did this with iCanHazShortcut (https://icanhazapps.d7.wtf/shortcut) which was very easy.
The idea is to have a script change your display settings which forces the graphics card to re-initialize and have this script bound to a global shortcut.
If your screen is black now all you have to do is press your shortcut and it will revive the display.