chore: add config option for experimental backend

This commit is contained in:
Mikhail Zolotukhin 2022-03-27 21:39:18 +03:00 committed by Genda
parent fc944db965
commit 410a2d2181
7 changed files with 30 additions and 9 deletions

View File

@ -177,6 +177,11 @@
<label>Put new window as master</label>
<default>false</default>
</entry>
<entry name="experimentalBackend" type="Bool">
<label>Enable Experimental Backend</label>
<default>false</default>
</entry>
</group>
<group name="Plugins">

View File

@ -13,6 +13,7 @@
#include <memory>
#include "config.hpp"
#include "engine/engine.hpp"
#include "logger.hpp"
#include "plasma-api/client.hpp"
@ -21,17 +22,20 @@
namespace Bismuth
{
Controller::Controller(PlasmaApi::Api &api, Engine &engine)
Controller::Controller(PlasmaApi::Api &api, Engine &engine, const Bismuth::Config &config)
: m_plasmaApi(api)
, m_proxy()
, m_engine(engine)
, m_config(config)
{
bindEvents();
// TODO: Bind shortcuts
loadExistingWindows();
if (m_config.experimentalBackend()) {
loadExistingWindows();
m_engine.arrangeWindowsOnVisibleSurfaces();
m_engine.arrangeWindowsOnVisibleSurfaces();
}
}
void Controller::bindEvents()
@ -88,7 +92,7 @@ void Controller::registerAction(const Action &data)
void Controller::onCurrentSurfaceChanged()
{
if (m_proxy) {
if (m_proxy && !m_config.experimentalBackend()) {
auto ctl = m_proxy->jsController();
auto func = ctl.property("onCurrentSurfaceChanged");
func.callWithInstance(ctl);
@ -97,7 +101,7 @@ void Controller::onCurrentSurfaceChanged()
void Controller::onSurfaceUpdate()
{
if (m_proxy) {
if (m_proxy && !m_config.experimentalBackend()) {
auto ctl = m_proxy->jsController();
auto func = ctl.property("onSurfaceUpdate");
func.callWithInstance(ctl);
@ -106,7 +110,9 @@ void Controller::onSurfaceUpdate()
void Controller::onClientAdded(PlasmaApi::Client client)
{
m_engine.addWindow(client);
if (m_config.experimentalBackend()) {
m_engine.addWindow(client);
}
}
void Controller::onClientRemoved(PlasmaApi::Client)

View File

@ -11,6 +11,7 @@
#include <memory>
#include <vector>
#include "config.hpp"
#include "engine/engine.hpp"
#include "plasma-api/api.hpp"
#include "plasma-api/client.hpp"
@ -33,7 +34,7 @@ class Controller : public QObject
{
Q_OBJECT
public:
Controller(PlasmaApi::Api &, Engine &);
Controller(PlasmaApi::Api &, Engine &, const Bismuth::Config &);
void bindEvents();
void loadExistingWindows();
@ -57,6 +58,7 @@ private:
PlasmaApi::Api &m_plasmaApi;
TSProxy *m_proxy;
Engine &m_engine;
const Config &m_config;
};
}

View File

@ -45,7 +45,7 @@ void Core::init()
m_qmlEngine = qmlEngine(this);
m_plasmaApi = std::make_unique<PlasmaApi::Api>(m_qmlEngine);
m_engine = std::make_unique<Bismuth::Engine>(*m_plasmaApi);
m_controller = std::make_unique<Bismuth::Controller>(*m_plasmaApi, *m_engine);
m_controller = std::make_unique<Bismuth::Controller>(*m_plasmaApi, *m_engine, *m_config);
m_tsProxy = std::make_unique<TSProxy>(m_qmlEngine, *m_controller, *m_plasmaApi, *m_config);
m_controller->setProxy(m_tsProxy.get());
}

View File

@ -56,6 +56,7 @@ QJSValue TSProxy::jsConfig()
setProp("maximizeSoleTile", m_config.maximizeSoleTile());
setProp("monocleMinimizeRest", m_config.monocleMinimizeRest());
setProp("untileByDragging", m_config.untileByDragging());
setProp("experimentalBackend", m_config.experimentalBackend());
setProp("keepFloatAbove", m_config.keepFloatAbove());
setProp("noTileBorder", m_config.noTileBorder());

View File

@ -4,6 +4,8 @@
// SPDX-License-Identifier: MIT
export interface Config {
experimentalBackend: boolean;
//#region Layout
layoutOrder: string[];
monocleMaximize: boolean;

View File

@ -15,8 +15,13 @@ export function init(
qmlObjects: Bismuth.Qml.Main,
kwinScriptingApi: KWin.Api,
proxy: TSProxy
): Controller {
): Controller | null {
const config = proxy.jsConfig();
if (config.experimentalBackend) {
return null;
}
const logger = new LogImpl(proxy);
const controller = new ControllerImpl(