Comments (17)
Thank you for your report. I'll test with other Wayland compositors.
from flutter-embedded-linux.
Out of curiosity, is there a requirement for the wayland app to have references to a particular shell protocol?
Your understanding is correct. The implementation is not good. Actually, the Wayland app doesn't use shell protocols, but has referenced it. Therefore, I'm going to refactor source files.
(cc @Mai-Matsuura)
from flutter-embedded-linux.
@HidenoriMatsubayashi , can see the wayland-client now works with Plasma Mobile, Plasma Wayland and Wayfire 🔥
I can setup a few other images with different wayland sessions like Phosh, Gnome and so on if you would like some additional testing.
Should the ticket be closed?
from flutter-embedded-linux.
@HidenoriMatsubayashi , should I close the ticket?
The embedder is no longer bound to weston's shell protocols and the switch from wl_shell
to xdg_shell
has ensured compatibility with multiple environments. The only exception being GlacierUX which could be because the project is rather old (or the image I've used hasn't gotten that far). With every new or maintained Wayland environment, there was no issue.
from flutter-embedded-linux.
Thank you so much! Your help is very helpful for us. I'll close this issue and update README later.
from flutter-embedded-linux.
@HidenoriMatsubayashi , small update on GlacierUX compatibility:
- @neochapay has updated the libraries to
xdg_shell
removing the block from the side of GlacierUX - With the the new image, the flutter wayland client works as expected: https://pastebin.com/3P3i3d6V
- Here is a small video showing
flutter-client
running on GlacierUX: https://youtu.be/JRcDmSuby6s
from flutter-embedded-linux.
Thank you so much. I've updated README.
from flutter-embedded-linux.
Out of curiosity, is there a requirement for the wayland app to have references to a particular shell protocol?
I'm reading the following article from Lup Yuen Lee which is packed with interesting information: https://lupyuen.github.io/pinetime-rust-mynewt/articles/wayland
Following the article and taking a look in the LVGL repo, I can't find any specific bindings to a particular shell protocol.
from flutter-embedded-linux.
@psstoyanov I'm using Ubuntu 20.04 desktop. Can I install Plasma Wayland or Wayfire? Do they work on X11?
from flutter-embedded-linux.
@HidenoriMatsubayashi , I don't know what is the state of Plasma Wayland with Ubuntu 20.04 and aarch64. Hopefully it is in good condition?
Yes, you can start the wayland sessions from X11 environment.
If you go with Plasma Wayland - you can find the instructions on starting the session in their docs.
I would go with Sway or Wayfire as they are "easy" to handle if the distro repositories have broken or problematic builds with Plasma or Gnome. They are also significantly smaller (even building locally doesn't take unreasonable amount of time).
Both Sway (tiling) and Wayfire (stacking) require a configuration file or you will be presented with an empty view. You can keep those minimal with pretty much defining just shortcut to launch your preferred/installed terminal.
You can also disable Xwayland on Sway/ Wayfire easily though I don't know if this will be useful to you.
Reference to the Xwayland flag for Wayfire here.
The example Wayfire configuration file provided in their repo: https://github.com/WayfireWM/wayfire/blob/master/wayfire.ini
This is my wayfire configuration file - there is plenty in it as I use it as my main DE on the PinebookPro.
Cage is tiny but I don't know if it will be flexible enough to use for this experiment - it is meant as a kios (though it could be a potential alternative to the weston-shell)
Note:
- The new sessions should show up in your greeter. Using Ubuntu, I guess that would be GDM. It should pick up the new entries if you decide to go the route with logging in directly into a Wayland session.
from flutter-embedded-linux.
Thank you! I'll try that.
from flutter-embedded-linux.
Forgot to mention something. Unlike Plasma Wayland, Sway and Wayfire are not full fledged desktop environments but compositors. The chances of breaking your test device setup are significantly smaller if go with one of them.
When I was experimenting with Gnome and Plasma side-by-side on the PinebookPro, I had to be extra careful about keeping them separate or some of the packages that handle the same functionality could cause hard to recover situations. Some references from the Manjaro's documentation on installing Desktop Environments here
Wayfire has lived alongside Plasma on my PinebookPro without causing conflicts for more than a year now.
Note:
Both Sway and Wayfire use wlroots but they can be compiled with different versions with potential conflict when both are installed on the same system. It would be easier to go with just one of those instead of both.
from flutter-embedded-linux.
Thank you for your help! Yes, I'm glad if you would do some additional testing. After that, I'll update README to add a tested Wayland compositors list.
from flutter-embedded-linux.
@HidenoriMatsubayashi , had the chance to check Lomiri and Phosh tonight. Both run with the Wayland client without a problem.
Those 2 are in addition to Plasma Wayland, Plasma Mobile and Wayfire.
It's partially a guess but there will be some surprises with the display scaling setups on different DEs 😄
I'm sure Phosh runs with 200% scaling by default and it looks like Plasma Mobile does the same.
Switching to Lomiri, it mimicked 100% scaling on Phosh which would appear in similar size as the window visible on this image.
The desktop environment scaling on the device isn't connected to the embedder per-se but it could be good to know.
Tomorrow, I will load Gnome on one of the devices. If I can, I will try to take a look at SailfishOS or NemoMobile for the PinePhone.
Update:
- Using Gnome
3.38
with Wayland backed works as expected as well with the wayland client. Note: Whether the gnome wayland session will be used by default, depends on the distribution.
Update 2:
- Used Cage and the wayland client behaved as expected.
- If you launch Cage from TTY, in debug mode (default build type with Meson), press
Alt+Esc to quit. - When I launched cage in nested session from within Plasma-Wayland, there was error present when moving the mouse. This looks to be specific behaviour to Cage and not the embedder.
- If you launch Cage from TTY, in debug mode (default build type with Meson), press
Update 3:
- Attempted to use GlacierUX and this has been the only one I couldn't start. It produced the following error:
[ERROR][linuxes_window_wayland.cc(660)] Xdg-shell is invalid
- I'm not familiar enough with the Mer project and GlacierUX to know for sure but it looks like the missing item is on the side of the environment and not the embedder.
from flutter-embedded-linux.
List of confirmed working environments with the Wayland client:
- Gnome with Wayland backend enabled - consult with your distribution on how to enable
- Phosh - Wayland shell for mobile devices like the Librem5 and PinePhone
- Plasma Wayland - a Wayland version of Plasma desktop environment
- Plasma Mobile - open-source user interface for phones using KDE Frameworks
- Lomiri - Environment used mostly by Ubuntu Touch for mobile devices maintained by UBports Community. Formely known as Unity8. Desktop port of the environment is in the works.
- Sway - tiling Wayland compositor/ maintainers of wlroots project
- Wayfire - stacking Wayland compositor inspired by Compiz and based on wlroots
- Cage - Wayland kiosk. Runs a single maximized application. Supported Wayland protocols by Cage can be found here
- The factorytest software image for the PinePhone is using Cage
Known incompatible Wayland environment at the moment:
from flutter-embedded-linux.
Update towards GlacierUX:
- It was using the deprecated
wl_shell
implementation - https://git.sailfishos.org/neochapay/lipstick/blob/nemo/src/compositor/lipstickcompositor.h#L23 - For the specific image that I've used, the developer is making similar jump to
xdg_shell
: https://github.com/neochapay/lipstick-1- It's extremely likely that an updated image for the PinePhone with those changes to GlacierUX will function as well
from flutter-embedded-linux.
Thank you for your information.
from flutter-embedded-linux.
Related Issues (20)
- Add FlutterEngineNotifyDisplayUpdate support HOT 2
- Debug - Can only start Dart VM service, not observatory HOT 1
- Support DRM-GBM Backend for IMX GPU Vivante 6 Driver HOT 4
- Atomic Modeset fails HOT 8
- waylnd: [FATAL:flutter/shell/common/display_manager.cc(32)] Check failed: displays_.empty(). HOT 14
- DRM mode on raspberry pi 4b Error: Couldn't find file "symbols/US" in include paths HOT 3
- "text_scaling_factor" should default to 1 if unset HOT 1
- Internal CI for Engine artifacts doesn't work HOT 2
- xdg_wm_base@11: error 4: xdg_surface buffer (1280 x 720) is larger than the configured fullscreen state (1024 x 600) HOT 3
- Missing calls to "registerWith()" in generated dart_plugin_registrant.dart HOT 1
- Missing calls to "registerWith()" in generated dart_plugin_registrant.dart HOT 16
- Does this project run without systemd? HOT 1
- Disconnecting mouse that is hovering over button on wayland client results in Segmentation fault HOT 4
- how to measure flutter performance on embedded device HOT 4
- Support multiple wl_seats for remote desktop sharing HOT 3
- Turning the display OFF/ON swaps the width and height of the application HOT 9
- Dart VM: Wrong full snapshot version, expected XXX, found YYY HOT 2
- Incorrect snapshot architecture HOT 7
- App crashes when non-ASCII characters are sent from input method
- Consider replace systemd with libuv? HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flutter-embedded-linux.