diff --git a/src/backends/x11/standalone/x11_platform.cpp b/src/backends/x11/standalone/x11_platform.cpp
index 86fcd0e136..91d2165f9f 100644
--- a/src/backends/x11/standalone/x11_platform.cpp
+++ b/src/backends/x11/standalone/x11_platform.cpp
@@ -207,16 +207,14 @@ bool X11StandalonePlatform::requiresCompositing() const
bool X11StandalonePlatform::openGLCompositingIsBroken() const
{
- const QString unsafeKey(QLatin1String("OpenGLIsUnsafe") + (kwinApp()->isX11MultiHead() ? QString::number(kwinApp()->x11ScreenNumber()) : QString()));
- return KConfigGroup(kwinApp()->config(), "Compositing").readEntry(unsafeKey, false);
+ return KConfigGroup(kwinApp()->config(), "Compositing").readEntry(QLatin1String("OpenGLIsUnsafe"), false);
}
QString X11StandalonePlatform::compositingNotPossibleReason() const
{
// first off, check whether we figured that we'll crash on detection because of a buggy driver
KConfigGroup gl_workaround_group(kwinApp()->config(), "Compositing");
- const QString unsafeKey(QLatin1String("OpenGLIsUnsafe") + (kwinApp()->isX11MultiHead() ? QString::number(kwinApp()->x11ScreenNumber()) : QString()));
- if (gl_workaround_group.readEntry("Backend", "OpenGL") == QLatin1String("OpenGL") && gl_workaround_group.readEntry(unsafeKey, false)) {
+ if (gl_workaround_group.readEntry("Backend", "OpenGL") == QLatin1String("OpenGL") && gl_workaround_group.readEntry(QLatin1String("OpenGLIsUnsafe"), false)) {
return i18n("OpenGL compositing (the default) has crashed KWin in the past.
"
"This was most likely due to a driver bug."
"
If you think that you have meanwhile upgraded to a stable driver,
"
@@ -236,10 +234,9 @@ bool X11StandalonePlatform::compositingPossible() const
{
// first off, check whether we figured that we'll crash on detection because of a buggy driver
KConfigGroup gl_workaround_group(kwinApp()->config(), "Compositing");
- const QString unsafeKey(QLatin1String("OpenGLIsUnsafe") + (kwinApp()->isX11MultiHead() ? QString::number(kwinApp()->x11ScreenNumber()) : QString()));
- if (gl_workaround_group.readEntry("Backend", "OpenGL") == QLatin1String("OpenGL") && gl_workaround_group.readEntry(unsafeKey, false)) {
+ if (gl_workaround_group.readEntry("Backend", "OpenGL") == QLatin1String("OpenGL") && gl_workaround_group.readEntry(QLatin1String("OpenGLIsUnsafe"), false)) {
qCWarning(KWIN_X11STANDALONE) << "Compositing disabled: video driver seems unstable. If you think it's a false positive, please remove "
- << unsafeKey << " from [Compositing] in kwinrc and restart kwin.";
+ << "OpenGLIsUnsafe from [Compositing] in kwinrc and restart kwin.";
return false;
}
@@ -270,11 +267,10 @@ bool X11StandalonePlatform::hasGlx()
void X11StandalonePlatform::createOpenGLSafePoint(OpenGLSafePoint safePoint)
{
- const QString unsafeKey(QLatin1String("OpenGLIsUnsafe") + (kwinApp()->isX11MultiHead() ? QString::number(kwinApp()->x11ScreenNumber()) : QString()));
auto group = KConfigGroup(kwinApp()->config(), "Compositing");
switch (safePoint) {
case OpenGLSafePoint::PreInit:
- group.writeEntry(unsafeKey, true);
+ group.writeEntry(QLatin1String("OpenGLIsUnsafe"), true);
group.sync();
// Deliberately continue with PreFrame
Q_FALLTHROUGH();
@@ -293,9 +289,8 @@ void X11StandalonePlatform::createOpenGLSafePoint(OpenGLSafePoint safePoint)
connect(
m_openGLFreezeProtection, &QTimer::timeout, m_openGLFreezeProtection,
[configName] {
- const QString unsafeKey(QLatin1String("OpenGLIsUnsafe") + (kwinApp()->isX11MultiHead() ? QString::number(kwinApp()->x11ScreenNumber()) : QString()));
auto group = KConfigGroup(KSharedConfig::openConfig(configName), "Compositing");
- group.writeEntry(unsafeKey, true);
+ group.writeEntry(QLatin1String("OpenGLIsUnsafe"), true);
group.sync();
KCrash::setDrKonqiEnabled(false);
qFatal("Freeze in OpenGL initialization detected");
@@ -307,7 +302,7 @@ void X11StandalonePlatform::createOpenGLSafePoint(OpenGLSafePoint safePoint)
}
break;
case OpenGLSafePoint::PostInit:
- group.writeEntry(unsafeKey, false);
+ group.writeEntry(QLatin1String("OpenGLIsUnsafe"), false);
group.sync();
// Deliberately continue with PostFrame
Q_FALLTHROUGH();
diff --git a/src/composite.cpp b/src/composite.cpp
index 5cbe992075..c572c3b8f2 100644
--- a/src/composite.cpp
+++ b/src/composite.cpp
@@ -70,11 +70,6 @@ Q_DECLARE_METATYPE(KWin::X11Compositor::SuspendReason)
namespace KWin
{
-// See main.cpp:
-extern int screen_number;
-
-extern bool is_multihead;
-
Compositor *Compositor::s_compositor = nullptr;
Compositor *Compositor::self()
{
diff --git a/src/dbusinterface.cpp b/src/dbusinterface.cpp
index 3256d29aaa..f55c910890 100644
--- a/src/dbusinterface.cpp
+++ b/src/dbusinterface.cpp
@@ -46,10 +46,6 @@ DBusInterface::DBusInterface(QObject *parent)
QDBusConnection dbus = QDBusConnection::sessionBus();
dbus.registerObject(QStringLiteral("/KWin"), this);
- const QByteArray dBusSuffix = qgetenv("KWIN_DBUS_SERVICE_SUFFIX");
- if (!dBusSuffix.isNull()) {
- m_serviceName = m_serviceName + QLatin1Char('.') + dBusSuffix;
- }
dbus.registerService(m_serviceName);
dbus.connect(QString(), QStringLiteral("/KWin"), QStringLiteral("org.kde.KWin"), QStringLiteral("reloadConfig"),
Workspace::self(), SLOT(slotReloadConfig()));
diff --git a/src/main.cpp b/src/main.cpp
index 852dc7dc60..c98443bb5d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -64,20 +64,9 @@ Options *options;
Atoms *atoms;
int screen_number = -1;
-bool is_multihead = false;
int Application::crashes = 0;
-bool Application::isX11MultiHead()
-{
- return is_multihead;
-}
-
-void Application::setX11MultiHead(bool multiHead)
-{
- is_multihead = multiHead;
-}
-
void Application::setX11ScreenNumber(int screenNumber)
{
screen_number = screenNumber;
diff --git a/src/main.h b/src/main.h
index 981e3fe011..1d47d73d38 100644
--- a/src/main.h
+++ b/src/main.h
@@ -157,14 +157,6 @@ public:
* Sets the X11 screen number of this KWin instance to @p screenNumber.
*/
static void setX11ScreenNumber(int screenNumber);
- /**
- * @returns whether this is a multi head setup on X11.
- */
- static bool isX11MultiHead();
- /**
- * Sets whether this is a multi head setup on X11.
- */
- static void setX11MultiHead(bool multiHead);
/**
* @returns the X11 root window.
diff --git a/src/main_x11.cpp b/src/main_x11.cpp
index fb87efca8c..5119a49fe0 100644
--- a/src/main_x11.cpp
+++ b/src/main_x11.cpp
@@ -355,64 +355,6 @@ int main(int argc, char *argv[])
KWin::Application::setupMalloc();
KWin::Application::setupLocalizedString();
- int primaryScreen = 0;
- xcb_connection_t *c = xcb_connect(nullptr, &primaryScreen);
- if (!c || xcb_connection_has_error(c)) {
- fprintf(stderr, "%s: FATAL ERROR while trying to open display %s\n",
- argv[0], qgetenv("DISPLAY").constData());
- exit(1);
- }
-
- const int number_of_screens = xcb_setup_roots_length(xcb_get_setup(c));
- xcb_disconnect(c);
- c = nullptr;
-
- // multi head
- auto isMultiHead = []() -> bool {
- QByteArray multiHead = qgetenv("KDE_MULTIHEAD");
- if (!multiHead.isEmpty()) {
- return (multiHead.toLower() == "true");
- }
- return true;
- };
- if (number_of_screens != 1 && isMultiHead()) {
- KWin::Application::setX11MultiHead(true);
- KWin::Application::setX11ScreenNumber(primaryScreen);
- int pos; // Temporarily needed to reconstruct DISPLAY var if multi-head
- QByteArray display_name = qgetenv("DISPLAY");
-
- if ((pos = display_name.lastIndexOf('.')) != -1) {
- display_name.remove(pos, 10); // 10 is enough to be sure we removed ".s"
- }
-
- for (int i = 0; i < number_of_screens; i++) {
- // If execution doesn't pass by here, then kwin
- // acts exactly as previously
- if (i != KWin::Application::x11ScreenNumber() && fork() == 0) {
- KWin::Application::setX11ScreenNumber(i);
- QByteArray dBusSuffix = qgetenv("KWIN_DBUS_SERVICE_SUFFIX");
- if (!dBusSuffix.isNull()) {
- dBusSuffix.append(".");
- }
- dBusSuffix.append(QByteArrayLiteral("head-")).append(QByteArray::number(i));
- qputenv("KWIN_DBUS_SERVICE_SUFFIX", dBusSuffix);
- // Break here because we are the child process, we don't
- // want to fork() anymore
- break;
- }
- }
- // In the next statement, display_name shouldn't contain a screen
- // number. If it had it, it was removed at the "pos" check
- const QString envir = QStringLiteral("DISPLAY=%1.%2")
- .arg(display_name.data())
- .arg(KWin::Application::x11ScreenNumber());
-
- if (putenv(strdup(envir.toLatin1().constData()))) {
- fprintf(stderr, "%s: WARNING: unable to set DISPLAY environment variable\n", argv[0]);
- perror("putenv()");
- }
- }
-
if (signal(SIGTERM, KWin::sighandler) == SIG_IGN) {
signal(SIGTERM, SIG_IGN);
}
diff --git a/src/tabbox/tabbox.cpp b/src/tabbox/tabbox.cpp
index ac2a04308f..548f40a43f 100644
--- a/src/tabbox/tabbox.cpp
+++ b/src/tabbox/tabbox.cpp
@@ -1036,7 +1036,7 @@ static bool areModKeysDepressed(const QKeySequence &seq)
void TabBox::navigatingThroughWindows(bool forward, const QKeySequence &shortcut, TabBoxMode mode)
{
- if (!m_ready || isGrabbed() || !Workspace::self()->isOnCurrentHead()) {
+ if (!m_ready || isGrabbed()) {
return;
}
if (!options->focusPolicyIsReasonable()) {
@@ -1098,7 +1098,7 @@ void TabBox::slotWalkBackThroughCurrentAppWindowsAlternative()
void TabBox::slotWalkThroughDesktops()
{
- if (!m_ready || isGrabbed() || !Workspace::self()->isOnCurrentHead()) {
+ if (!m_ready || isGrabbed()) {
return;
}
if (areModKeysDepressed(m_cutWalkThroughDesktops)) {
@@ -1112,7 +1112,7 @@ void TabBox::slotWalkThroughDesktops()
void TabBox::slotWalkBackThroughDesktops()
{
- if (!m_ready || isGrabbed() || !Workspace::self()->isOnCurrentHead()) {
+ if (!m_ready || isGrabbed()) {
return;
}
if (areModKeysDepressed(m_cutWalkThroughDesktopsReverse)) {
@@ -1126,7 +1126,7 @@ void TabBox::slotWalkBackThroughDesktops()
void TabBox::slotWalkThroughDesktopList()
{
- if (!m_ready || isGrabbed() || !Workspace::self()->isOnCurrentHead()) {
+ if (!m_ready || isGrabbed()) {
return;
}
if (areModKeysDepressed(m_cutWalkThroughDesktopList)) {
@@ -1140,7 +1140,7 @@ void TabBox::slotWalkThroughDesktopList()
void TabBox::slotWalkBackThroughDesktopList()
{
- if (!m_ready || isGrabbed() || !Workspace::self()->isOnCurrentHead()) {
+ if (!m_ready || isGrabbed()) {
return;
}
if (areModKeysDepressed(m_cutWalkThroughDesktopListReverse)) {
diff --git a/src/workspace.cpp b/src/workspace.cpp
index 03f205a652..985c58e069 100644
--- a/src/workspace.cpp
+++ b/src/workspace.cpp
@@ -66,9 +66,6 @@
namespace KWin
{
-extern int screen_number;
-extern bool is_multihead;
-
X11EventFilterContainer::X11EventFilterContainer(X11EventFilter *filter)
: m_filter(filter)
{
@@ -1295,34 +1292,6 @@ void Workspace::sendWindowToDesktop(Window *window, int desk, bool dont_activate
updateClientArea();
}
-/**
- * checks whether the X Window with the input focus is on our X11 screen
- * if the window cannot be determined or inspected, resturn depends on whether there's actually
- * more than one screen
- *
- * this is NOT in any way related to XRandR multiscreen
- *
- */
-extern bool is_multihead; // main.cpp
-bool Workspace::isOnCurrentHead()
-{
- if (!is_multihead) {
- return true;
- }
-
- Xcb::CurrentInput currentInput;
- if (currentInput.window() == XCB_WINDOW_NONE) {
- return !is_multihead;
- }
-
- Xcb::WindowGeometry geometry(currentInput.window());
- if (geometry.isNull()) { // should not happen
- return !is_multihead;
- }
-
- return kwinApp()->x11RootWindow() == geometry->root;
-}
-
void Workspace::sendWindowToOutput(Window *window, Output *output)
{
window->sendToOutput(output);
@@ -1560,13 +1529,6 @@ QString Workspace::supportInformation() const
}
support.append(QStringLiteral("\nScreens\n"));
support.append(QStringLiteral("=======\n"));
- support.append(QStringLiteral("Multi-Head: "));
- if (is_multihead) {
- support.append(QStringLiteral("yes\n"));
- support.append(QStringLiteral("Head: %1\n").arg(screen_number));
- } else {
- support.append(QStringLiteral("no\n"));
- }
support.append(QStringLiteral("Active screen follows mouse: "));
if (options->activeMouseScreen()) {
support.append(QStringLiteral(" yes\n"));
@@ -2238,11 +2200,6 @@ QRectF Workspace::clientArea(clientAreaOption opt, const Output *output, const V
QRectF workArea;
QRectF screenArea;
- const Output *effectiveOutput = output;
- if (is_multihead) {
- effectiveOutput = xineramaIndexToOutput(screen_number);
- }
-
if (auto desktopIt = m_screenAreas.constFind(desktop); desktopIt != m_screenAreas.constEnd()) {
if (auto outputIt = desktopIt->constFind(output); outputIt != desktopIt->constEnd()) {
screenArea = *outputIt;
@@ -2250,12 +2207,12 @@ QRectF Workspace::clientArea(clientAreaOption opt, const Output *output, const V
}
if (screenArea.isNull()) { // screens may be missing during KWin initialization or screen config changes
- screenArea = effectiveOutput->geometry();
+ screenArea = output->geometry();
}
workArea = m_workAreas.value(desktop);
if (workArea.isNull()) {
- workArea = is_multihead ? effectiveOutput->geometry() : m_geometry;
+ workArea = m_geometry;
}
switch (opt) {
@@ -2266,9 +2223,9 @@ QRectF Workspace::clientArea(clientAreaOption opt, const Output *output, const V
case FullScreenArea:
case MovementArea:
case ScreenArea:
- return effectiveOutput->geometry();
+ return output->geometry();
case WorkArea:
- return is_multihead ? screenArea : workArea;
+ return workArea;
case FullArea:
return m_geometry;
default:
diff --git a/src/workspace.h b/src/workspace.h
index 9f9b4a6d17..573d2365de 100644
--- a/src/workspace.h
+++ b/src/workspace.h
@@ -268,7 +268,6 @@ private:
// Unsorted
public:
- bool isOnCurrentHead();
// True when performing Workspace::updateClientArea().
// The calls below are valid only in that case.
bool inUpdateClientArea() const;