liri-archive / wayland Goto Github PK
View Code? Open in Web Editor NEW:book: Wayland client and server extensions
License: GNU Lesser General Public License v3.0
:book: Wayland client and server extensions
License: GNU Lesser General Public License v3.0
This is very useful for our portal.
There are still users of both v1 and v2 so we have to implement both.
See:
Add this protocol for low overhead screencast.
Automatically set position and size of layer surfaces.
Once the plan outlined in shell#204 is implemented, we no longer need the part of the liri_shell interface that deals with cursors.
Emit a signal when the UI has finished and the desktop is ready to be revealed.
Version 2 allows clients to change layer.
See: swaywm/wlr-protocols@98efe0b
Example implementation:
swaywm/wlroots@1724261
Update foreign toplevel.
Add a custom protocol to drive the lock screen for an external screenlocker.
Hi,
I have an issue while trying to build this library (for packaging into Alpine Linux).
It looks like some files are missing:
[ 27%] Building CXX object src/waylandclient/CMakeFiles/WaylandClient.dir/lirishell.cpp.o
In file included from /home/markand/dev/alpine/aports/testing/liri-wayland/src/wayland-140f3831d2a089b8605a5f5805c6639582e06369/src/wayl
andclient/liricolorpicker.cpp:5:
/home/markand/dev/alpine/aports/testing/liri-wayland/src/wayland-140f3831d2a089b8605a5f5805c6639582e06369/src/waylandclient/liricolorpic
ker_p.h:11:10: fatal error: LiriWaylandClient/private/qwayland-liri-color-picker.h: No such file or directory
11 | #include <LiriWaylandClient/private/qwayland-liri-color-picker.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [src/waylandclient/CMakeFiles/WaylandClient.dir/build.make:234: src/waylandclient/CMakeFiles/WaylandClient.dir/liricolorpic
ker.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
I'm using Alpine Linux (aarch64) 3.14 and currently trying to build the last git version.
The file seems to exist there though:
./src/waylandclient/qwayland-liri-color-picker.h
Implement this protocol in a separate task manager.
Update layer shell implementation to revision 3.
Update to version 4.
Move the client protocol from liri-shell
Shortcut
only works on the compositor. A client like shell helper cannot bind to a shortcut.
We need an interface that lets a liri_shell client to register a shortcut to the compositor and get notified when it's activated.
add #include <QVector>
in
desktop/wayland/src/waylandclient/liricolorpicker_p.h
build ok
Thread 1 "liri-shell" received signal SIGSEGV, Segmentation fault.
0x00007f21683ea54c in QWaylandSurface::resource() const () from /lib64/libQt5WaylandCompositor.so.5
(gdb) bt
#0 0x00007f21683ea54c in QWaylandSurface::resource() const () at /lib64/libQt5WaylandCompositor.so.5
#1 0x00007f21670942c9 in LiriDecoration::surfaceResource() const (this=0x260de50) at ../desktop/wayland/src/waylandserver/liridecoration.cpp:193
#2 LiriDecorationManager::unregisterDecoration(LiriDecoration*) (this=<optimized out>, decoration=0x260de50) at ../desktop/wayland/src/waylandserver/liridecoration.cpp:103
#3 LiriDecorationPrivate::liri_decoration_destroy_resource(QtWaylandServer::liri_decoration::Resource*) (this=0x2d7cfb0, resource=<optimized out>) at ../desktop/wayland/src/waylandserver/liridecoration.cpp:135
#4 0x00007f21670a79cb in QtWaylandServer::liri_decoration::destroy_func(wl_resource*) (client_resource=<optimized out>) at desktop/wayland/src/waylandserver/qwayland-server-liri-decoration.cpp:321
#5 0x00007f216705997f in destroy_resource () at /lib64/libwayland-server.so.0
#6 0x00007f216705a013 in wl_client_destroy () at /lib64/libwayland-server.so.0
#7 0x00007f216705a44b in wl_client_connection_data () at /lib64/libwayland-server.so.0
#8 0x00007f2167059ac2 in wl_event_loop_dispatch () at /lib64/libwayland-server.so.0
#9 0x00007f21683e91d7 in QWaylandCompositor::processWaylandEvents() () at /lib64/libQt5WaylandCompositor.so.5
#10 0x00007f21688153c0 in void doActivate<false>(QObject*, int, void**) () at /lib64/libQt5Core.so.5
#11 0x00007f21688326c8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#12 0x00007f21687e457b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#13 0x00007f21687ec1b4 in QCoreApplication::exec() () at /lib64/libQt5Core.so.5
#14 0x000000000041639b in main(int, char**) (argc=1, argv=<optimized out>) at ../desktop/shell/src/compositor/main.cpp:223
Rename protocol
XdgPopup can be used as a parent for WlrLayerSurfaceV1 surfaces.
This means we have to implement the bare minimum stuff from xdg-shell in order to create popups.
We are sharing OSD responsability between compositor and shell helper, so we need to add a new interface to liri-shell to let them communicate.
See lirios/shell#185
The compositor can ask the client to create the shutdown dialog when the power key is pressed, while the client can ask the compositor to quit.
It seems that it detects Wayland as 0.0.0 oddly. I didn't check each revision, but I can build 89303e9eb2c1809bc8619e75088b14897700e974
...I can't build the latest commit from the develop
branch, as I get the below output running cmake -Wno-dev .. -DCMAKE_INSTALL_PREFIX=$INSTALLDIR -DCMAKE_PREFIX_PATH=$INSTALLDIR -DCMAKE_BUILD_TYPE=RELEASE
-- Found Wayland_Server: /opt/lib/i386-linux-gnu/libwayland-server.so (found version "1.17.90")
-- Could NOT find Wayland: Found unsuitable version "0.0.0", but required is at least "1.15" (found /opt/lib/i386-linux-gnu/libwayland-client.so;/opt/lib/i386-linux-gnu/libwayland-server.so)
-- Found WaylandProtocols: //opt/share/wayland-protocols (found suitable version "1.18", minimum required is "1.15")
-- Found QtWaylandScanner: /opt/bin/qtwaylandscanner
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Found Wayland_Cursor: /opt/lib/i386-linux-gnu/libwayland-cursor.so (found version "1.17.90")
-- Found Wayland_Egl: /opt/lib/i386-linux-gnu/libwayland-egl.so (found version "18.1.0")
-- Found Wayland: /opt/lib/i386-linux-gnu/libwayland-client.so;/opt/lib/i386-linux-gnu/libwayland-server.so;/opt/lib/i386-linux-gnu/libwayland-cursor.so;/opt/lib/i386-linux-gnu/libwayland-egl.so (found version "0.0.0")
CMake Error at tests/auto/server/CMakeLists.txt:44 (target_link_options):
Unknown CMake command "target_link_options".
-- Configuring incomplete, errors occurred!
See also "/srcbuild/lirios-wayland/build/CMakeFiles/CMakeOutput.log".
PackagePrepareBuild finished in 1 seconds
Implement this protocol: https://github.com/swaywm/wlr-protocols/blob/master/unstable/wlr-input-inhibitor-unstable-v1.xml
Replace the Wayland protocol implementation on the client side with a layer shell interface for the shell integration, see lirios/qtintegration#3
Going forward we want to move some parts of the UI out of process.
We want to use the layer shell protocol for that.
https://github.com/swaywm/wlr-protocols/blob/master/unstable/wlr-layer-shell-unstable-v1.xml
Recently (for Qt 5.14) I made the server-side implementation of xdg-output.
We can't use that since we still require Qt 5.12, but I don't want to wait so much.
Copy the code here.
The screenshot protocol has a method to pick a pixel of the screen and return the color.
We need a custom Wayland protocol that is restricted to a trusted client.
Only one client can bind the interface at a time.
Prior art:
Implement wlroots output management protocol.
When the QML component is completed, find the shell from the parent (unless it's already specified).
This way we don't have to
Create a protocol to implement a modal behavior for layer shell modal dialogs.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.