Skip to content

Add initial support for Miriway #40

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Conan-Kudo
Copy link

Miriway is a new generic compositor built on the Mir compositor library that is designed to be used as part of composable desktop environments.

@stefonarch
Copy link
Member

stefonarch commented Nov 3, 2024

Nice!
How can Miriway be compiled on Arch? I didn't find a easy way (no AUR package). Does it support wlroots (for the panel taskbar backend)?

@Conan-Kudo
Copy link
Author

It supports the required wlr- protocols, yes.

@Conan-Kudo Conan-Kudo force-pushed the miriway branch 2 times, most recently from e098447 to 6bda9f7 Compare November 3, 2024 11:55
@Conan-Kudo
Copy link
Author

And it should work alongside lxqt/lxqt-panel#2161

@stefonarch
Copy link
Member

stefonarch commented Jan 15, 2025

Looked a little bit into this, setting up snapd on arch.

  • first error I got was permission denied to execute lxqt-miriway-wrapper. IMO this shouldn't be installed to /usr/share and generally we don't want install executables for compositors here.
  • inotify-tools is a new dependency
  • miriway-shell wasn't found as it's not in my $PATH
  • now I get
[2025-01-15 10:00:28.437729] < - ERROR - > mircommon: Failed to load libraries from path: /usr/lib/x86_64-linux-gnu/mir/server-platform (error was:/usr/lib/x86_64-linux-gnu/mir/server-platform: No such file or directory)
ERROR: ./src/server/graphics/default_configuration.cpp(198): Throw in function virtual const std::vector<std::shared_ptr<mir::graphics::DisplayPlatform> >& mir::DefaultServerConfiguration::the_display_platforms()
Dynamic exception type: boost::wrapexcept<std::runtime_error>
std::exception::what: Exception while creating graphics platform
ERROR: Dynamic exception type: std::system_error
std::exception::what: /usr/lib/x86_64-linux-gnu/mir/server-platform: No such file or directory

Tried to compile Mir, but no, that's too much consuming and I stopped here.

@sfalken
Copy link

sfalken commented Jan 15, 2025

It's packaged and working fine on openSUSE Tumbleweed (mir/miriway) Just hasn't been submitted into Factory as of yet.

@Conan-Kudo
Copy link
Author

It is also packaged and available in Fedora Rawhide, and available for Fedora 41 in COPR.

@stefonarch
Copy link
Member

Oh... there are packages for something which isn't merged?
As miriway is snap-only if I understood it right I see no way how we can support it if testing isn't possible on arch with official packages, without relying on AUR.

@Conan-Kudo
Copy link
Author

I could provide patched packages for the whole thing on Fedora if it would help.

@sfalken
Copy link

sfalken commented Jan 15, 2025

It's packaged and working fine on openSUSE Tumbleweed (mir/miriway) Just hasn't been submitted into Factory as of yet.

Oh... there are packages for something which isn't merged? As miriway is snap-only if I understood it right I see no way how we can support it if testing isn't possible on arch with official packages, without relying on AUR.

Miriway and Mir can both be built and installed just fine without needing to employ the snap container mechanism

I don't know jack about building packages for arch, but I can probably have a look later today

@stefonarch
Copy link
Member

I don't know jack about building packages for arch, but I can probably have a look later today

Building isn't difficult but having them accepted and meeting the standards required is probably not that easy.

https://repology.org/project/mir/versions
https://repology.org/project/miriway/versions

@sfalken
Copy link

sfalken commented Jan 16, 2025

Here's pre-compiled wlcs, mir, and miriway for you test against:

https://download.opensuse.org/repositories/home:/sfalken:/arch_miriway/Arch/x86_64/

The wlcs and mir PKGBUILDS were taken directly from the AUR, I bashed out the miriway one. If you want to use my PKGBUILD to get it into the AUR, that's fine by me. I don't normally package for Arch, and have more than enough on my plate, that I don't really feel like figuring out how to navigate the submission processes.

PKGBUILDS that were used to build these are here: https://build.opensuse.org/project/show/home:sfalken:arch_miriway

@stefonarch
Copy link
Member

stefonarch commented Jan 16, 2025

The issue I had was mir (well, setting up snapd wasn't what I liked, removed now) -it felt like compiling kwin or theseus heating my laptop too much.

$ yay -U miriway-24.11-1-x86_64.pkg.tar.zst 
loading packages...
resolving dependencies...
warning: cannot resolve "mir", a dependency of "miriway"
:: The following package cannot be upgraded due to unresolvable dependencies:
      miriway

I don't see a package for Mir...

@stefonarch
Copy link
Member

It is also packaged and available in Fedora Rawhide, and available for Fedora 41 in COPR.

Found by chance https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/aarch64/os/Packages/l/lxqt-wayland-session-0.1.1-4.fc42.noarch.rpm
but I don't see any configurations installed:

immagine

@sfalken
Copy link

sfalken commented Jan 16, 2025

It is also packaged and available in Fedora Rawhide, and available for Fedora 41 in COPR.

Found by chance https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/aarch64/os/Packages/l/lxqt-wayland-session-0.1.1-4.fc42.noarch.rpm but I don't see any configurations installed:

immagine

Correct. On Fedora it will be lxqt-miriway-session Fedora and openSUSE don't put everything into one big package like arch does.

This is an openSUSE Tumbleweed system, but if you run dnf search lxqt | grep session on Fedora, you will see similar results:

sfalken@localhost:~> sudo zypper se lxqt | grep session
   | lxqt-hyprland-session             | Session files for LXQt-Hyprland                                | package
   | lxqt-labwc-session                | Session files and theme for labwc                              | package
i+ | lxqt-miriway-session              | Session files for LXQt-Miriway                                 | package
   | lxqt-niri-session                 | Session files for LXQT-niri                                    | package
   | lxqt-river-session                | Session files for LXQt-river                                   | package
i  | lxqt-session                      | LXQt Session Manager                                           | package
i  | lxqt-session-branding-upstream    | Upstream branding of lxqt-session                              | package
i  | lxqt-session-lang                 | Translations for package lxqt-session                          | package
   | lxqt-sway-session                 | Session files for LXQt-Sway                                    | package
   | lxqt-wayfire-session              | Session files for LXQt-wayfire                                 | package
i  | lxqt-wayland-session              | Files needed for the LXQt Wayland Session                      | package
   | lxqt-wayland-session              | Files needed for the LXQt Wayland Session                      | srcpackage
sfalken@localhost:~>                                                                                                     

@sfalken
Copy link

sfalken commented Jan 16, 2025

The issue I had was mir (well, setting up snapd wasn't what I liked, removed now) -it felt like compiling kwin or theseus heating my laptop too much.

$ yay -U miriway-24.11-1-x86_64.pkg.tar.zst 
loading packages...
resolving dependencies...
warning: cannot resolve "mir", a dependency of "miriway"
:: The following package cannot be upgraded due to unresolvable dependencies:
      miriway

I don't see a package for Mir...

Ah, hold on one moment, I forgot to enable publishing for Mir in that repo.

It's there now, if you want to try again on Archlinux.

@stefonarch
Copy link
Member

It's there now, if you want to try again on Archlinux.

Thanks, will test.

I see, so Fedora will ship similar packages as OpenSuse does: one for every compositor.

@sfalken
Copy link

sfalken commented Jan 16, 2025

It's there now, if you want to try again on Archlinux.

Thanks, will test.

I see, so Fedora will ship similar packages as OpenSuse does: one for every compositor.

Aye. I don't know that it's packaging policy exactly, but it is customary to do it like this for lots of stuff. It's got it's upsides, and it's downsides.

@stefonarch
Copy link
Member

stefonarch commented Jan 16, 2025

Ok, saw miriway now in action, thanks! At a first glance:

  • taskbar isn't working, have to look at the PR
  • multimonitor support? Looks like screen is duplicated. Is there any documentation for configuration file around?
  • F12 shortcut isn't set
  • coredump with DND in pcmanfm-qt
[2025-01-16 18:30:08.446220] < -warning- > eglstream: Failed to create EGL context: no EGL_STREAM_BIT_KHR configs supported
[2025-01-16 18:30:08.629447] < -warning- > gbm-kms: Unable to determine the current display mode.
[2025-01-16 18:30:08.629539] < -warning- > gbm-kms: Unable to determine the current display mode.
[2025-01-16 18:30:08.646619] < -warning- > gbm-kms: Ignoring attempt to set zero length gamma
[2025-01-16 18:30:08.646672] < -warning- > gbm-kms: Ignoring attempt to set zero length gamma
[2025-01-16 18:30:08.811135] < -warning- > mirserver: Cannot find app info for app with name:QEMU
[2025-01-16 18:30:08.812806] < - ERROR - > mirserver: Unable to watch directory /var/lib/snapd/desktop/applications

** (com.github.sgpthomas.hourglass-daemon:457691): CRITICAL **: 18:30:09.108: HourglassServer.vala:61: Could not aquire service name
** Message: 18:30:09.109: Another instance of GeoClue DemoAgent is running.
isPrimaryInstance
New PolkitAgentListener  0x56c3aff63400
Adding new listener  PolkitQt1::Agent::Listener(0x7ffc8b860ff0) for  0x56c3aff63400
No user preferences available. Attempting auto-detection.

 ERROR: Could not create a backend for window managment operations.
 Falling back to dummy backend. Some functions will not be available.
 

Currently tray plugin supports X11 only. Skipping.
"Can't load plugin \"tray\". Plugin can't build ILXQtPanelPlugin."
StatusNotifierProxy, services: QList()
BatteryChanged discharging: false chargeLevel: 100 actionTime: QTime(Invalid)
Inhibit got: 40
Starting idlenesswatcher
kf.idletime: Could not find any system poller plugin
qt.core.qobject.connect: QObject::connect(KAbstractIdleTimePoller, KIdleTime): invalid nullptr parameter
qt.core.qobject.connect: QObject::connect(KAbstractIdleTimePoller, KIdleTime): invalid nullptr parameter
"PowerButton" "" ""
"SuspendButton" "" ""
"HibernateButton" "" ""
[2025-01-16 18:30:15.411408] < -warning- > gbm-kms: clear_cursor: drmModeSetCursor failed (Permission denied)
[2025-01-16 18:30:15.411456] < -warning- > gbm-kms: clear_cursor: drmModeSetCursor failed (Permission denied)

@sfalken
Copy link

sfalken commented Jan 16, 2025

Let me get arch spun up in a vm and see if I can figure out any of this.

@Conan-Kudo
Copy link
Author

Some of this might be the lxqt-panel using the dummy backend instead of the wayland/wlroots backend?

@tsujan
Copy link
Member

tsujan commented Jan 16, 2025

On the contrary, a dummy backend can hide probable problems of the compositor.

@stefonarch
Copy link
Member

The taskbar is working fine when killing the panel and restarting it with

echo XDG_CURRENT_DESKTOP=wlroots 
lxqt-panel

wlroots here means the wlroots-compatible backend to load. It's not perfect, and it isn't "true" also for Hyprland and Niri.

DND compositor crash on the Desktop, from any pcmanfm-qt window or text in featherpad is not related to the backend for the panel. Compositor crashing is really bad as it takes anything with it.

@sfalken
Copy link

sfalken commented Jan 17, 2025

lxqt-panel with the patches applied from lxqt/lxqt-panel#2161
lxqt-session with the patches applied from lxqt/lxqt-session#571
lxqt-wayland-session with the patches applied from #40

are now packaged for archlinux @ https://download.opensuse.org/repositories/home:/sfalken:/arch_miriway/Arch/x86_64/

The F12 key for qterminal --drop still doesn't work, I'm talking with the miriway upstream about that (it doesn't work on Tumbleweed or Fedora either)

Multimonitor would need to be figured out in ~/.config/lxqt/miriway-shell.config as it's just a text file like most of the other available wayland compositors at present.

DND in PCManFM-Qt does indeed crash the shell on arch I haven't a clue why, it works fine on both Fedora and openSUSE with the same patches.

Miriway is still young, and what configuration instructions exist, live here: https://github.com/Miriway/Miriway/blob/main/CONFIGURING_MIRIWAY.md

@Conan-Kudo
Copy link
Author

miriway-shell.config is in ~/.config/lxqt/ not in "wayland" subdir.

This is expected, as I set the Miriway configuration namespace to lxqt for LXQt sessions. I don't see a reason it needs to go in another subdirectory when it's fairly clear what it is and what it's for.

@AlanGriffiths
Copy link

I believe the configuration is watched and reloaded as you save changes. Same for the display settings config file.

The main configuration file isn't reloaded: it requires a restart. There are some settings that it doesn't make sense to reload but we're working on making the rest reconfigurable dynamically. It will come option by option: for example, 2.20 should make input reconfiguration possible from shells but then Miriway needs to implement it.

  • Window size for some info windows truncate text (Monitor and Input Settings, notifications), didn't see issues under other compositors with those.

I wonder if the calculation of the window size is slightly off with SSDs, @AlanGriffiths?

I know @tarek-y-ismail has fixed some issues with SSDs and window sizing area, not sure if all those fixes were in 2.19. Will investigate

@AlanGriffiths
Copy link

  • The Miriway decorations don't have the window title in the titlebar

The Mir decoration code has a hard-coded list of fonts, but doesn't find any of them:

    FontPath const font_paths[]{
        FontPath{"Ubuntu-B.ttf", {
            "ubuntu-font-family",   // Ubuntu < 18.04
            "ubuntu",               // Ubuntu >= 18.04/Arch
        }},
        FontPath{"FreeSansBold.ttf", {
            "freefont",             // Debian/Ubuntu
            "gnu-free",             // Fedora/Arch
        }},
        FontPath{"DejaVuSans-Bold.ttf", {
            "dejavu",               // Ubuntu (others?)
            "",                     // Arch
        }},
        FontPath{"LiberationSans-Bold.ttf", {
            "liberation-sans",      // Fedora
            "liberation",           // Arch
        }},
    };

Clearly, this is not ideal!

The quickest resolution is to install one of these fonts, say, sudo dnf install gnu-free-sans-fonts

Another quick hack (adding a font that is available) also gets titles displaying:

        FontPath{"NotoSans[wght].ttf", {
            "google-noto-vf",      // Fedora
        }},

@AlanGriffiths
Copy link

  • The mouse cursor set in the environment isn't used over the decorations

Where in the environment are you setting the theme?

You can configure the cursor theme with the cursor-theme configuration option (I don't see that set anywhere). Otherwise, the cursor icons are taken from /usr/share/icons/default/.

@AlanGriffiths
Copy link

  • Window size for some info windows truncate text (Monitor and Input Settings, notifications), didn't see issues under other compositors with those.

Reproduced. Also with Mir/main (so there's not an existing fix). Investigating further...

@stefonarch
Copy link
Member

  • The mouse cursor set in the environment isn't used over the decorations

Where in the environment are you setting the theme?

You can configure the cursor theme with the cursor-theme configuration option (I don't see that set anywhere).

It's in lxqt-config-appearance and (git only again) in lxqt-config-input. Afaik it writes (beside session.conf) to other three files: ~/.icons/default/index.theme, .Xresources and .Xdefaults.

@Conan-Kudo
Copy link
Author

Mir should probably be picking up ~/.icons/default/ and $XDG_DATA_HOME/icons/default/ (I'm actually surprised LXQt doesn't write here) in addition to /usr/share/icons/default/.

@AlanGriffiths
Copy link

Afaik it writes (beside session.conf) to other three files: ~/.icons/default/index.theme, .Xresources and .Xdefaults.

Mir should probably be picking up ~/.icons/default/ and $XDG_DATA_HOME/icons/default/ (I'm actually surprised LXQt doesn't write here) in addition to /usr/share/icons/default/.

Poking around my install of the above .iso, I don't see anything in these locations. So I'm wondering which theme is actually used by Qt applications and where is it supplied?

You can configure the cursor theme with the cursor-theme configuration option (I don't see that set anywhere). Otherwise, the cursor icons are taken from /usr/share/icons/default/.

Sorry, this is misleading - the configuration option is optional in Mir and Miriway doesn't "opt in"

@stefonarch
Copy link
Member

stefonarch commented Feb 25, 2025

Poking around my install of the above .iso, I don't see anything in these locations. So I'm wondering which theme is actually used by Qt applications and where is it supplied?

You mean cursor theme? Here it is applied also on the title bars. Main file is ~/.config/lxqt/session.conf.

immagine

A part from truncated text the buttons have an issue too, too tiny.

@AlanGriffiths
Copy link

AlanGriffiths commented Feb 25, 2025

Curious

alan@fedora:~$ cat .Xresources
cat: .Xresources: No such file or directory
alan@fedora:~$ find .icons
find: ‘.icons’: No such file or directory
alan@fedora:~$ cat .Xdefaults
cat: .Xdefaults: No such file or directory
alan@fedora:~$ find .config/icons
find: ‘.config/icons’: No such file or directory

I don't see anything that looks like an icon theme here either:

$ cat ~/.config/lxqt/session.conf
[General]
__userfile__=true

@stefonarch
Copy link
Member

stefonarch commented Feb 25, 2025

Maybe that's an issue with the installation? I'm using a live in virtualbox, saved session, not installed. If you change cursor theme or anything theme-related those entries should be generated, in session.conf and elsewhere, as I did for the screenshot above, the default cursor was black.

@AlanGriffiths
Copy link

If you change cursor theme

OK, having changed the theme I now have:

alan@fedora:~$ cat .Xresources

Xcursor.theme: breeze_cursors
Xcursor.size: 24
alan@fedora:~$ find .icons
.icons
.icons/default
.icons/default/index.theme
alan@fedora:~$ cat .icons/default/index.theme
# Written by lxqt-config-appearance
[Icon Theme]
Name=Default
Comment=Default cursor theme
Inherits=breeze_cursors
Size=24
alan@fedora:~$ cat .Xdefaults

Xcursor.theme: breeze_cursors
Xcursor.size: 24
alan@fedora:~$ find .config/icons
find: ‘.config/icons’: No such file or directory
alan@fedora:~$ cat ~/.config/lxqt/session.conf
[General]
__userfile__=true

[Mouse]
cursor_size=24
cursor_theme=breeze_cursors

Nothing is being set initially

@AlanGriffiths
Copy link

And... Mir provides an option to follow the cursor theming, but Miriway wasn't using it.

Adding that to Miriway, it is picking up .icons/default/index.theme. It needs a theme has been set and the session restarted there a consistent icon theme on the Qt content and the SSDs. 🎉

@stefonarch
Copy link
Member

And... Mir provides an option to follow the cursor theming, but Miriway wasn't using it.

Uh, it worked here...
I checked labwc, it looks in ~/.icons/default/index.theme too.

@tsujan
Copy link
Member

tsujan commented Feb 25, 2025

I wasn't following the discussion, but this might help:

Qt gets its mouse cursor theme through its "platform plugin" — in LXQt, it's /usr/lib/qt6/plugins/platformthemes/libqtlxqt.so (/usr/lib/ may be different for some distros). LXQt writes the cursor info to ~/.config/lxqt/session.conf, and its Qt platform plugin reads it from the same file. KDE has another platform plugin and uses another way of saving/reading. In short, Qt heavily depends on the active platform plugin for such jobs. They aren't limited to the cursor theme/size but include several other properties like the icon theme, cursor flash time, double click delay, etc.

However, the cursor theme (or size) isn't limited to Qt. So, LXQt does more:

  • It saves the info to ~/.Xresources and ~/.icons/default/index.theme.
  • It also writes the info to ~/.Xdefaults, but this file is deprecated for the cursor info.
  • It does not use the EV XCURSOR_THEME, because it isn't reliable.

I just don't remember why ~/.icons/default/ was chosen instead of ~/.local/share/icons/default, because the latter seems more up-to-date. But some Wayland compositors, like labwc, seem to check both, either directly or indirectly (through wlroots?).

@AlanGriffiths
Copy link

@tsujan thanks for the background. I wasn't seeing a theme in any of the usual places until I reconfigured it. Maybe that's a setup thing?

AIUI ~/.icons/default/ was the place before ~/.local/share/icons/default and there's legacy code that doesn't know about the latter.

@stefonarch
Copy link
Member

stefonarch commented Feb 25, 2025

I wasn't seeing a theme in any of the usual places until I reconfigured it. Maybe that's a setup thing?

Some default settings are in ~/.config/lxqt/lxqt.conf.

@AlanGriffiths
Copy link

  • Window size for some info windows truncate text (Monitor and Input Settings, notifications), didn't see issues under other compositors with those.

Reproduced. Also with Mir/main (so there's not an existing fix). Investigating further...

This definitely looks like Mir does weird stuff (below): configure(488, 97, array[0]) appears to come from nowhere. That forces a resize (from 500, 127) which is likely why there's an issue.

alan@fedora:~$ WAYLAND_DEBUG=1 lxqt-config-input 2>&1 | grep -e set_window_geometry -e create_buffer -e configure -e set_destination 
[2581907.157] {Default Queue}  -> wp_viewport#32.set_destination(500, 127)
[2581907.164] {Default Queue}  -> wp_viewport#32.set_destination(500, 127)
[2581907.172] {Default Queue}  -> wp_viewport#32.set_destination(500, 127)
[2581910.874] {Default Queue} xdg_toplevel#30.configure(0, 0, array[0])
[2581910.883] {Default Queue} xdg_surface#29.configure(1029)
[2581910.904] {Default Queue}  -> wp_viewport#32.set_destination(500, 127)
[2581910.920] {Default Queue}  -> xdg_surface#29.ack_configure(1029)
[2581910.927] {Default Queue}  -> xdg_surface#29.set_window_geometry(0, 0, 500, 127)
[2581910.935] {Default Queue} zxdg_toplevel_decoration_v1#31.configure(2)
[2581910.940] {Default Queue} zxdg_toplevel_decoration_v1#31.configure(2)
[2581911.189] {Default Queue}  -> wl_shm_pool#27.create_buffer(new id wl_buffer#33, 0, 500, 127, 2000, 0)
[2581917.560] {Default Queue} xdg_toplevel#30.configure(488, 97, array[0])
[2581917.595] {Default Queue} xdg_surface#29.configure(1030)
[2581917.613] {Default Queue} xdg_toplevel#30.configure(488, 97, array[4])
[2581917.620] {Default Queue} xdg_surface#29.configure(1032)
[2581917.722] {Default Queue}  -> wp_viewport#32.set_destination(500, 127)
[2581917.822] {Default Queue}  -> wl_shm_pool#36.create_buffer(new id wl_buffer#37, 0, 500, 127, 2000, 0)
[2581918.152] {Default Queue}  -> xdg_surface#29.set_window_geometry(0, 0, 500, 127)
[2581918.230] {Default Queue}  -> wp_viewport#32.set_destination(488, 97)
[2581918.244] {Default Queue}  -> xdg_surface#29.set_window_geometry(0, 0, 488, 97)
[2581918.274] {Default Queue}  -> xdg_surface#29.ack_configure(1032)
[2581918.343] {Default Queue}  -> xdg_surface#29.set_window_geometry(0, 0, 488, 97)
[2581919.151] {Default Queue}  -> wl_shm_pool#39.create_buffer(new id wl_buffer#40, 0, 488, 97, 1952, 0)
[2581920.107] {Default Queue}  -> wl_shm_pool#35.create_buffer(new id wl_buffer#41, 0, 488, 97, 1952, 0)

@tsujan
Copy link
Member

tsujan commented Feb 25, 2025

AIUI ~/.icons/default/ was the place before ~/.local/share/icons/default and there's legacy code that doesn't know about the latter.

You're right; that should be the reason for choosing the first. Sooner or later, we might need to change that.

@AlanGriffiths
Copy link

This definitely looks like Mir does weird stuff (below): configure(488, 97, array[0]) appears to come from nowhere. That forces a resize (from 500, 127) which is likely why there's an issue.

Mir bug: for unmapped windows with size constraints, the constraints were not being adjusted for SSDs. Fixed by canonical/mir#3780

@AlanGriffiths
Copy link

AlanGriffiths commented Feb 27, 2025

Current Miriway/Mir status

Miriway

Miriway-25.02 released with the Miriway fixes related to this work:

PR Description
Miriway/Miriway#150 Add MIRIWAY_DECORATIONS=prefer-ssd to use SSDs
Miriway/Miriway#154 Pick up the cursor theme from the usual places

Mir

All fixes have landed on main. Mir-2.20 will be released over the next couple of weeks including all the Mir fixes related to this work:

PR Description
canonical/mir#3764 set MIR_ANCHOR_RECTANGLE_UNCONSTRAINED to workaround https://bugs.kde.org/show_bug.cgi?id=500520
canonical/mir#3766 Fixes crash when pcmanfm-qt does DnD
canonical/mir#3770 Fixes crash when trying to DND an app icon to quicklaunch from fancy menu
canonical/mir#3780 Unmapped windows with size constraints have the constraints adjusted correctly for SSDs
canonical/mir#3785 Now finds fonts for SSD on Fedora-42

@AlanGriffiths
Copy link

I found another issue with Mir: not expecting clients to set max_width/height to MAX_INT. Qt clients do this for some reason.

canonical/mir#3791 (will also include that in Mir 2.20)

Miriway is a new generic compositor built on the Mir compositor
library that is designed to be used as part of composable desktop
environments.
Copy link
Member

@stefonarch stefonarch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Had a look into Fedora 42. Basically it's working with some rough edges compared to the other 2 stacking compositors supported.

For panel backend detecting miriway is needed here https://github.com/lxqt/lxqt-panel/blob/3db2541f8710da2136ecef8f0531462508310481/panel/backends/wayland/wlroots/lxqtwmbackend_wlr.cpp#L669


shell-alt=Space:lxqt-runner
shell-alt=F2:lxqt-runner
shell-meta=l:lxqt-leave --lockscreen
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To add:
print:screengrab
F12:qterminal -d

elif [ "$COMPOSITOR" = "miriway" ]; then
export XDG_CURRENT_DESKTOP="LXQt:$COMPOSITOR:mir"
if [ ! -f "$XDG_CONFIG_HOME/lxqt/miriway-shell.config" ]; then
cp "$share_dir"/lxqt/wayland/miriway/miriway-shell.config "$XDG_CONFIG_HOME/lxqt/miriway-shell.config"
Copy link
Member

@stefonarch stefonarch May 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All Wayland related configs are in "$XDG_CONFIG_HOME/lxqt/wayland/

if [ ! -f "$XDG_CONFIG_HOME/lxqt/miriway-shell.config" ]; then
cp "$share_dir"/lxqt/wayland/miriway/miriway-shell.config "$XDG_CONFIG_HOME/lxqt/miriway-shell.config"
if echo "$valid_layouts" | grep -q "$trylayout"; then
echo "keymap=$trylayout" >> "$XDG_CONFIG_HOME/lxqt/miriway-shell.config"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

idem

@stefonarch
Copy link
Member

Is this wrapper still needed btw? I see that in Fedora it starts just miriway.

@Conan-Kudo
Copy link
Author

Yes, this wrapper is used on Fedora LXQt.

@sfalken
Copy link

sfalken commented May 21, 2025 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants