Under FreeBSD (or kFreeBSD for that matter) there is, like with Linux, some code to switch back to the VT from which the X server was launched. It’s at hw/xfree86/os-support/bsd/bsd_init.c:683:
if (initialVT != -1)
ioctl(xf86Info.consoleFd, VT_ACTIVATE, initialVT);
This code is useful when you start X from a console, but it becomes obnoxious when run from a display manager, causing unwanted and uncontrolled VT switches when you change users.
Under Linux it can be disabled using the -novtswitch option, but it is not implemented with FreeBSD. It would be nice to be able to rely on a sane VT switching behavior on FreeBSD too (and I guess that would fix the other BSDs as well).
Patch crafted against 1.10.2rc1, tested on a GNU/kFreeBSD VM, sent to xorg-devel@ for review:
| Subject: [PATCH] bsd: Add support for -novtswitch.
Looks like we failed to close this bug when the patches landed: