I see a few people sharing incorrect details in the comments so I figured I'd echo some details.
'hyprctl output create headless'
This creates a headless monitor. You can verify this with:
'hyprctl monitors'
You will see something akin to the following (please do know I have 2 other monitors, internal (eDP-1), and an external (DP-1):
Monitor HEADLESS-2 (ID 2):
[email protected] at 3840x0
description:
make:
model:
serial:
active workspace: 3 (3)
special workspace: 0 ()
reserved: 0 54 0 0
scale: 2.00
transform: 0
focused: no
dpmsStatus: 1
vrr: false
solitary: 0
activelyTearing: false
directScanoutTo: 0
disabled: false
currentFormat: XRGB8888
mirrorOf: none
availableModes: [email protected]
For switching to the various monitors (eDP-1, DP-1, HEADLESS-2) I either script or bind some keyboard combinations to switch back and forth.
My host is an Archlinux on Hyprland using Wayvnc. My client is on my work laptop W11 using RealVNC. In terminal to switch I run:
'wayvncctl output-set {Monitor Name}'
For example:
'wayvncctl output-set HEADLESS-2'
This switches me to the headless monitor that does not display on my internal or external monitor. In hyprland.conf if you prefer to bind things, you can do something similar to the following config lines:
# switch monitors via wayvnc/realvnc
bind = SUPER, COMMA , exec, sh -c "wayvncctl output-set eDP-1"
bind = SUPER, PERIOD , exec, sh -c "wayvncctl output-set DP-1"
bind = SUPER, SLASH , exec, sh -c "wayvncctl output-set HEADLESS-2"
This allows me to easily use mod+, or mod+. to go back and forth between internal and external and then mod+/ for headless.
At the time of this writing, here is my package detail for hyprland:
→ pacman -Qi hyprland
Name : hyprland
Version : 0.47.2-2
Description : a highly customizable dynamic tiling Wayland compositor
Architecture : x86_64