The startx manpage states: To determine the server to run, startx first looks for a file called .xserverrc in the user's home directory... The actual behavior of startx seems to be rather different from this. I created ~/.xserverrc, containing this command line: exec /usr/bin/X -retro -nolisten tcp vt7 "$@" (in addition to the shebang line), and set it to chmod +x. X still starts on the original vt. If startx could be made to behave as documented (NOT simply documented to behave how it does), it would be nice. I have SysV init, *not* systemd, so I'm not concerned about logind getting confused.