Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wlroots backend #2088

Merged
merged 43 commits into from
Aug 27, 2024
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
f34b691
Initial backend plugin infrastructure
gfgit Jul 9, 2024
632c551
Update licenses
gfgit Jul 9, 2024
2986803
lxqttaskbartypes.h: fix ShowOnAll desktops flag value
gfgit Jul 9, 2024
438be70
Fix backend load logic: do not load zero score backends
gfgit Jul 12, 2024
0b5ec82
LXQtPanelApplication: always find best backend at startup
gfgit Aug 17, 2024
1f2bcdc
Panel backends: pass string argument for score calculation
gfgit Aug 20, 2024
dc336df
Backends: change name scheme
gfgit Aug 20, 2024
30cf17a
LXQtPanelApplication: only consider plugins with valid names
gfgit Aug 20, 2024
1ae3ff2
LXQtPanelApplication: fix empty backend message
gfgit Aug 20, 2024
5499594
TaskBar: add experimental KWin Wayland backend
gfgit Feb 17, 2024
1a2dd53
LXQtPanel: workaround KAcceleratorManager changing button text FIXME …
gfgit Feb 17, 2024
9eaa6b0
ColorPicker: use XDG Desktop Portal on Wayland TODO
gfgit Feb 26, 2024
7305973
Hide lxqt-panel application from applications menu
gfgit Apr 9, 2024
8f68516
LXQtWMBackend_KWinWayland: announce DesktopSwitch support
gfgit Jul 12, 2024
6ab9662
LXQtWMBackend_KWinWayland: fix minimize on click not working
gfgit Aug 20, 2024
ec70062
Backend detection and Wlroots backend
marcusbritanicus Aug 22, 2024
4f09565
Fix autodetection on user choice failure
marcusbritanicus Aug 22, 2024
deaf9d5
wmbackend_kwin_wayland: Compare against kwin_wayland.
marcusbritanicus Aug 22, 2024
c464c96
Iterate through all parts of the XDG_CURRENT_DESKTOP. Add river to wl…
marcusbritanicus Aug 26, 2024
626fede
Set size policy in plugin-backlight and plugin-colorpicker (#2049)
isf63 Aug 26, 2024
9bd9b5f
Weblate commit (#2085)
LXQtBot Aug 27, 2024
d5876fe
Initial backend plugin infrastructure
gfgit Jul 9, 2024
c80576f
Update licenses
gfgit Jul 9, 2024
4ae0f1f
lxqttaskbartypes.h: fix ShowOnAll desktops flag value
gfgit Jul 9, 2024
7fa109f
Fix backend load logic: do not load zero score backends
gfgit Jul 12, 2024
e5c7c60
LXQtPanelApplication: always find best backend at startup
gfgit Aug 17, 2024
ff84dd3
Panel backends: pass string argument for score calculation
gfgit Aug 20, 2024
2133a12
Backends: change name scheme
gfgit Aug 20, 2024
7628483
LXQtPanelApplication: only consider plugins with valid names
gfgit Aug 20, 2024
7dd8aac
LXQtPanelApplication: fix empty backend message
gfgit Aug 20, 2024
7874b2d
TaskBar: add experimental KWin Wayland backend
gfgit Feb 17, 2024
cc4af7d
LXQtPanel: workaround KAcceleratorManager changing button text FIXME …
gfgit Feb 17, 2024
decff27
ColorPicker: use XDG Desktop Portal on Wayland TODO
gfgit Feb 26, 2024
00ebd6f
Hide lxqt-panel application from applications menu
gfgit Apr 9, 2024
09af6ad
LXQtWMBackend_KWinWayland: announce DesktopSwitch support
gfgit Jul 12, 2024
1ea3b73
LXQtWMBackend_KWinWayland: fix minimize on click not working
gfgit Aug 20, 2024
22ad160
Backend detection and Wlroots backend
marcusbritanicus Aug 22, 2024
2afd630
Fix autodetection on user choice failure
marcusbritanicus Aug 22, 2024
dac7ce3
wmbackend_kwin_wayland: Compare against kwin_wayland.
marcusbritanicus Aug 22, 2024
c5da9bf
Iterate through all parts of the XDG_CURRENT_DESKTOP. Add river to wl…
marcusbritanicus Aug 26, 2024
cd2eedc
Rever changes to color-picker
marcusbritanicus Aug 27, 2024
9b27c82
Pull changes from origin/master
marcusbritanicus Aug 27, 2024
9ae8005
Revert changes to color-picker, attempt 2
marcusbritanicus Aug 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions autostart/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
file(GLOB DESKTOP_FILES_IN *.desktop.in)
set(AUTOSTART_DESKTOP_FILES_IN lxqt-panel.desktop.in)

# Translations **********************************
lxqt_translate_desktop(DESKTOP_FILES
SOURCES
${DESKTOP_FILES_IN}
${AUTOSTART_DESKTOP_FILES_IN}
USE_YAML
)
add_custom_target(lxqt_panel_autostart_desktop_files ALL DEPENDS ${DESKTOP_FILES})
Expand All @@ -14,3 +14,12 @@ install(FILES
DESTINATION "${LXQT_ETC_XDG_DIR}/autostart"
COMPONENT Runtime
)

configure_file(lxqt-panel_wayland.desktop.in lxqt-panel_wayland.desktop @ONLY)

install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/lxqt-panel_wayland.desktop"
DESTINATION "/usr/share/applications"
RENAME "lxqt-panel.desktop"
COMPONENT Runtime
)
14 changes: 14 additions & 0 deletions autostart/lxqt-panel_wayland.desktop.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[Desktop Entry]
Type=Application
TryExec=lxqt-panel
NoDisplay=true

# NOTE: KWin wants absolute path here, get it from CMake install path
Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/lxqt-panel

# NOTE: adding KDE to make it work under Plasma Wayland session
OnlyShowIn=LXQt;KDE
X-LXQt-Module=true

# Make KWin recognize us as priviledged client
X-KDE-Wayland-Interfaces=org_kde_plasma_window_management
17 changes: 2 additions & 15 deletions panel/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
set(PROJECT lxqt-panel)

# TODO
# Window Manager backends
add_subdirectory(backends)

set(PRIV_HEADERS
Expand All @@ -21,12 +21,6 @@ set(PRIV_HEADERS
config/configstyling.h
config/configpluginswidget.h
config/addplugindialog.h

backends/ilxqttaskbarabstractbackend.h
backends/lxqttaskbartypes.h

backends/lxqttaskbardummybackend.h
backends/xcb/lxqttaskbarbackend_x11.h
)

# using LXQt namespace in the public headers.
Expand All @@ -35,9 +29,6 @@ set(PUB_HEADERS
pluginsettings.h
ilxqtpanelplugin.h
ilxqtpanel.h

backends/ilxqttaskbarabstractbackend.h
backends/lxqttaskbartypes.h
)

set(SOURCES
Expand All @@ -57,11 +48,6 @@ set(SOURCES
config/configstyling.cpp
config/configpluginswidget.cpp
config/addplugindialog.cpp

backends/ilxqttaskbarabstractbackend.cpp

backends/lxqttaskbardummybackend.cpp
backends/xcb/lxqttaskbarbackend_x11.cpp
)

set(UI
Expand Down Expand Up @@ -122,6 +108,7 @@ target_link_libraries(${PROJECT}
KF6::WindowSystem
LayerShellQt::Interface
${STATIC_PLUGINS}
lxqt-panel-backend-common
)

set_property(TARGET ${PROJECT} PROPERTY ENABLE_EXPORTS TRUE)
Expand Down
18 changes: 18 additions & 0 deletions panel/backends/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1 +1,19 @@
# Common interface for Window Manager abstraction backend
# This also contains dummy backend

add_library(lxqt-panel-backend-common STATIC

lxqttaskbartypes.h
ilxqtabstractwmiface.h
ilxqtabstractwmiface.cpp

lxqtdummywmbackend.h
lxqtdummywmbackend.cpp
)

target_link_libraries(lxqt-panel-backend-common
Qt6::Gui
)

add_subdirectory(wayland)
add_subdirectory(xcb)
52 changes: 52 additions & 0 deletions panel/backends/ilxqtabstractwmiface.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* https://lxqt.org
*
* Copyright: 2023 LXQt team
* Authors:
* Filippo Gentile <[email protected]>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */


#include "ilxqtabstractwmiface.h"

ILXQtAbstractWMInterface::ILXQtAbstractWMInterface(QObject *parent)
: QObject(parent)
{

}

void ILXQtAbstractWMInterface::moveApplicationToPrevNextDesktop(WId windowId, bool next)
{
int count = getWorkspacesCount();
if (count <= 1)
return;

int targetWorkspace = getWindowWorkspace(windowId) + (next ? 1 : -1);

// Wrap around
if (targetWorkspace > count)
targetWorkspace = 1; //Ids are 1-based
else if (targetWorkspace < 1)
targetWorkspace = count;

setWindowOnWorkspace(windowId, targetWorkspace);
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,48 @@
#ifndef ILXQTTASKBARABSTRACTBACKEND_H
#define ILXQTTASKBARABSTRACTBACKEND_H
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* https://lxqt.org
*
* Copyright: 2023 LXQt team
* Authors:
* Filippo Gentile <[email protected]>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */


#ifndef ILXQT_ABSTRACT_WM_INTERFACE_H
#define ILXQT_ABSTRACT_WM_INTERFACE_H

#include <QObject>

#include "../lxqtpanelglobals.h"
#include "lxqttaskbartypes.h"

class QIcon;
class QScreen;

class ILXQtTaskbarAbstractBackend : public QObject
class LXQT_PANEL_API ILXQtAbstractWMInterface : public QObject
{
Q_OBJECT

public:
explicit ILXQtTaskbarAbstractBackend(QObject *parent = nullptr);
explicit ILXQtAbstractWMInterface(QObject *parent = nullptr);

// Backend
virtual bool supportsAction(WId windowId, LXQtTaskBarBackendAction action) const = 0;
Expand Down Expand Up @@ -96,4 +125,28 @@ class ILXQtTaskbarAbstractBackend : public QObject
void activeWindowChanged(WId windowId);
};

#endif // ILXQTTASKBARABSTRACTBACKEND_H
class LXQT_PANEL_API ILXQtWMBackendLibrary
{
public:
/**
Destroys the ILXQtWMBackendLibrary object.
**/
virtual ~ILXQtWMBackendLibrary() {}

/**
Returns the score of this backend for current detected environment.
This is used to select correct backend at runtime
**/
virtual int getBackendScore(const QString& key) const = 0;

/**
Returns the root component object of the backend. When the library is finally unloaded, the root component will automatically be deleted.
**/
virtual ILXQtAbstractWMInterface* instance() const = 0;
};


Q_DECLARE_INTERFACE(ILXQtWMBackendLibrary,
"lxqt.org/Panel/WMInterface/1.0")

#endif // ILXQT_ABSTRACT_WM_INTERFACE_H
25 changes: 0 additions & 25 deletions panel/backends/ilxqttaskbarabstractbackend.cpp

This file was deleted.

Loading