Index: src/common/VirtualTerminal.cpp
--- src/common/VirtualTerminal.cpp.orig
+++ src/common/VirtualTerminal.cpp
@@ -29,6 +29,15 @@
 #include <signal.h>
 #ifdef __FreeBSD__
 #include <sys/consio.h>
+#elif __OpenBSD__
+#include <dev/wscons/wsconsio.h>
+#include <dev/wscons/wsdisplay_usl_io.h>
+#ifndef SIGRTMAX
+#define SIGRTMAX 126
+#endif
+#ifndef KDGETMODE
+#define KDGETMODE 0x4B3B  /* get current mode */
+#endif
 #else
 #include <linux/vt.h>
 #include <linux/kd.h>
@@ -58,6 +67,23 @@ namespace SDDM {
             }
             return vtActive;
         }
+#elif __OpenBSD__
+        const char *defaultVtPath = "/dev/ttyC0";
+
+        QString path(int vt) {
+            char c = (vt <= 10 ? '0' : 'a') + (vt - 1);
+            return QStringLiteral("/dev/ttyC0");
+        }
+
+        int getVtActive(int fd) {
+            int vtActive = 0;
+            if (ioctl(fd, VT_GETACTIVE, &vtActive) < 0) {
+                qCritical() << "Failed to get current VT:" << strerror(errno);
+                return -1;
+            }
+            return vtActive;
+        }
+    // TODO
 #else
         const char *defaultVtPath = "/dev/tty0";
 
@@ -156,6 +182,7 @@ out:
 
         int currentVt()
         {
+            return 0;
             int fd = open(defaultVtPath, O_RDWR | O_NOCTTY);
             if (fd < 0) {
                 qCritical() << "Failed to open VT master:" << strerror(errno);
@@ -170,6 +197,7 @@ out:
 
 
         int setUpNewVt() {
+            return 0;
             // open VT master
             int fd = open(defaultVtPath, O_RDWR | O_NOCTTY);
             if (fd < 0) {
