Cpp-Wayfire: A modular and extensible wayland compositor

Wayfire

Version Matrix: #wayfire:matrix.org IRC: #wayfire on Libera.chat CI Packaging status License

Get started | Manual | Configuration

Wayfire is a 3D Wayland compositor, inspired by Compiz and based on wlroots.

It aims to create a customizable, extendable and lightweight environment without sacrificing its appearance.

Wayfire demos YouTube Play Button · Wayfire demos

Dependencies

Wayfire Dependencies

These are the dependencies needed for building Wayfire.

wlroots Dependencies

These are the dependencies needed for building wlroots, and should be installed before building it. They are relevant for cases when the system doesn't have a version of wlroots installed.

Session Provider (optional, recommended)

XWayland Support (optional)

X11 Backend (optional)

Installation

The easiest way to install Wayfire, wf-shell and WCM to get a functional desktop is to use the install scripts.

Alternatively, you can build from source:

meson build
ninja -C build
sudo ninja -C build install

Note: wf-config and wlroots can be built as submodules, by specifying -Duse_system_wfconfig=disabled and -Duse_system_wlroots=disabled options to meson. This is the default if they are not present on your system.

Installing wf-shell is recommended for a complete experience.

Arch Linux

wayfire and wayfire-git are available in the AUR.

yay -S wayfire
Exherbo
cave resolve -x wayfire
Fedora
dnf install wayfire
FreeBSD

Install the latest release and recommended addons with

pkg install wayfire wayfire-plugins-extra wf-shell wcm
Gentoo

Install the latest release with

emerge --ask --verbose wayfire

and to use the live version

emerge --ask --verbose "=gui-wm/wayfire-9999"
NixOS

See nixpkgs-wayland.

Ubuntu

See the build instructions from @soreau.

Void
xbps-install -S wayfire

Configuration

Copy wayfire.ini to ~/.config/wayfire.ini. Before running Wayfire, you may want to change the command to start a terminal. See the Configuration document for information on the options.

Running

Run wayfire from a TTY, or via a Wayland-compatible login manager.

Comments

  • Keyboard focus given to wrong view when coming out of
    Keyboard focus given to wrong view when coming out of "show desktop"

    Jan 8, 2022

    Describe the bug While coming out of "Show desktop" (from wm-actions plugin), wayfire gives keyboard focus to the client which last held explicit keyboard focus (see point 3, below), even if that client is on another workspace.

    To Reproduce This is quite easily reproducible - you'll need two apps (or one app with two windows) that take keyboard input.

    1. Open a terminal/editor/any window that has a keyboard cursor (may not be needed specifically needed) in workspace 1.
    2. Open another app/another window of the same app in workspace 2.
    3. Go to workspace 1, click the input field in your window - this is what I meant above by explicit keyboard focus.
    4. Switch to workspace 2. Now your second window will have cursor (keyboard) focus and will be the active view. Normally, if you start typing at this point, those keystrokes are relayed to this window no 2.
    5. Activate "Show Desktop" by pressing the key-binding, and deactivate it by pressing the key binding again.

    At this point, you'll notice that the window in the current workspace (workspace 2) is no longer set to active, and does not have keyboard focus. Type something, and what you typed will be sent to window 1 on workspace 1.

    Expected behavior View 2 on Workspace 2 (i.e. your current workspace) should be the active view, and should hold the keyboard focus.

    Wayfire version git

    bug 
    Reply
  • segfault on mirroring displays
    segfault on mirroring displays

    Jan 14, 2022

    Describe the bug

    When enabling the mirror mode, wayfire segfaults.

    I'm not sure how linearly wayfire parses the configuration file, but I made sure to configure the display being mirrored before the one displaying the mirror.

    It shouldn't make any difference but HDMI-A-1 is a capture card and not a normal display.

    I thought I could just set the position to 3840,0 to both displays to have them mirrored but this actually creates two different outputs on top of each other at the same position. You can only open windows on one, not both.

    To Reproduce

    My wayfire.ini looks like this:

    [output:DP-3]
    mode = [email protected]
    position = 0,0
    transform = normal
    scale = 1.0000
    
    [output:DP-2]
    mode = [email protected]
    position = 3840,0
    transform = normal
    scale = 1.000
    
    [output:HDMI-A-1]
    mode = mirror DP-2
    

    Expected behavior

    It should mirror the existing display correctly.

    Screenshots or stacktrace

    II 14-01-22 18:23:11.998 - [backend/drm/drm.c:1422] connector DP-2: Requesting modeset
    II 14-01-22 18:23:11.998 - [src/core/output-layout.cpp:1068] new output: DP-2 ("Acer Technologies Acer CB241HQK 0x0000F458")
    II 14-01-22 18:23:11.998 - [src/core/output-layout.cpp:428] loaded mode [email protected]
    II 14-01-22 18:23:12.007 - [backend/drm/drm.c:717] connector DP-2: Modesetting with '[email protected]'
    type equals variant: [type: string, value: toplevel]
    (!title contains variant: [type: string, value: Ulauncher])
    (type equals variant: [type: string, value: toplevel] | (type equals variant: [type: string, value: x-or] & focusable equals variant: [type: bool, value: 1]))
    type equals variant: [type: string, value: overlay]
    false
    false
    title contains variant: [type: string, value: Ulauncher]
    II 14-01-22 18:23:12.085 - [backend/drm/drm.c:1422] connector DP-3: Requesting modeset
    II 14-01-22 18:23:12.085 - [src/core/output-layout.cpp:1068] new output: DP-3 ("Acer Technologies Acer CB241HQK 0x0000F457")
    II 14-01-22 18:23:12.085 - [src/core/output-layout.cpp:428] loaded mode [email protected]
    II 14-01-22 18:23:12.085 - [src/core/output-layout.cpp:428] loaded mode [email protected]
    II 14-01-22 18:23:12.089 - [backend/drm/drm.c:717] connector DP-3: Modesetting with '[email protected]'
    type equals variant: [type: string, value: toplevel]
    (!title contains variant: [type: string, value: Ulauncher])
    (type equals variant: [type: string, value: toplevel] | (type equals variant: [type: string, value: x-or] & focusable equals variant: [type: bool, value: 1]))
    type equals variant: [type: string, value: overlay]
    false
    false
    title contains variant: [type: string, value: Ulauncher]
    II 14-01-22 18:23:12.108 - [backend/drm/drm.c:1422] connector HDMI-A-1: Requesting modeset
    II 14-01-22 18:23:12.108 - [src/core/output-layout.cpp:1068] new output: HDMI-A-1 ("Unknown HD60 S+ 0x00000000")
    II 14-01-22 18:23:12.108 - [src/core/output-layout.cpp:428] loaded mode [email protected]
    II 14-01-22 18:23:12.108 - [src/core/output-layout.cpp:428] loaded mode mirror DP-2
    II 14-01-22 18:23:12.108 - [src/core/output-layout.cpp:428] loaded mode [email protected]
    II 14-01-22 18:23:12.110 - [backend/drm/drm.c:717] connector HDMI-A-1: Modesetting with '[email protected]'
    EE 14-01-22 18:23:12.118 - [types/wlr_cursor.c:856] Cannot map device "Power Button" to output(not found in this cursor)
    EE 14-01-22 18:23:12.118 - [types/wlr_cursor.c:856] Cannot map device "Power Button" to output(not found in this cursor)
    EE 14-01-22 18:23:12.118 - [types/wlr_cursor.c:856] Cannot map device "Logitech G502" to output(not found in this cursor)
    EE 14-01-22 18:23:12.118 - [types/wlr_cursor.c:856] Cannot map device "ROCCAT ROCCAT Ryos MK FX" to output(not found in this cursor)
    EE 14-01-22 18:23:12.118 - [types/wlr_cursor.c:856] Cannot map device "ROCCAT ROCCAT Ryos MK FX Consumer Control" to output(not found in this cursor)
    EE 14-01-22 18:23:12.118 - [types/wlr_cursor.c:856] Cannot map device "ROCCAT ROCCAT Ryos MK FX System Control" to output(not found in this cursor)
    EE 14-01-22 18:23:12.118 - [types/wlr_cursor.c:856] Cannot map device "ROCCAT ROCCAT Ryos MK FX" to output(not found in this cursor)
    EE 14-01-22 18:23:12.118 - [types/wlr_cursor.c:856] Cannot map device "Blue Microphones Yeti Nano Consumer Control" to output(not found in this cursor)
    EE 14-01-22 18:23:12.118 - [types/wlr_cursor.c:856] Cannot map device "BRIO 4K Stream Edition" to output(not found in this cursor)
    EE 14-01-22 18:23:12.118 - [types/wlr_cursor.c:856] Cannot map device "BRIO 4K Stream Edition Consumer Control" to output(not found in this cursor)
    EE 14-01-22 18:23:12.118 - [types/wlr_cursor.c:856] Cannot map device "Game Capture HD60 S+: Game Capt" to output(not found in this cursor)
    EE 14-01-22 18:23:12.135 - [EGL] command: eglCreateImageKHR, error: EGL_BAD_ALLOC (0x3003), message: "dri2_create_image_khr_texture"
    EE 14-01-22 18:23:12.135 - [render/egl.c:681] eglCreateImageKHR failed
    EE 14-01-22 18:23:12.135 - [render/gles2/texture.c:271] Failed to create EGL image from DMA-BUF
    EE 14-01-22 18:23:12.135 - [src/main.cpp:132] Fatal error: Segmentation fault
    EE 14-01-22 18:23:12.164 - #1  wf::print_trace(bool) ??:?
    EE 14-01-22 18:23:12.185 - #2  __restore_rt sigaction.c:?
    EE 14-01-22 18:23:12.206 - #3  wlr_texture_is_gles2 ??:?
    EE 14-01-22 18:23:12.231 - #4  wf::texture_t::texture_t(wlr_texture*) ??:?
    EE 14-01-22 18:23:12.256 - #5  wf::output_layout_t::get_output_coords_at(wf::pointf_t, wf::pointf_t&) ??:?
    EE 14-01-22 18:23:12.281 - #6  _start ??:?
    EE 14-01-22 18:23:12.301 - #7  wlr_signal_emit_safe ??:?
    EE 14-01-22 18:23:12.321 - #8  wlr_backend_finish ??:?
    EE 14-01-22 18:23:12.341 - #9  drmHandleEvent ??:?
    EE 14-01-22 18:23:12.361 - #10 wlr_drm_connector_get_panel_orientation ??:?
    EE 14-01-22 18:23:12.381 - #11 wl_event_loop_dispatch ??:?
    EE 14-01-22 18:23:12.401 - #12 wl_display_run ??:?
    EE 14-01-22 18:23:12.426 - #13 main ??:?
    EE 14-01-22 18:23:12.449 - #14 __libc_start_main ??:?
    EE 14-01-22 18:23:12.473 - #15 _start ??:?
    

    Wayfire version

    git master

    I'm using a radeon VII and here's my wlr-randr output:

    DP-2 "Acer Technologies Acer CB241HQK 0x0000F458 (DP-2)"
      Physical size: 520x290 mm
      Enabled: yes
      Modes:
        720x400 px, 70.082001 Hz
        640x480 px, 59.939999 Hz
        640x480 px, 59.939999 Hz
        640x480 px, 60.000000 Hz
        640x480 px, 66.667000 Hz
        640x480 px, 72.808998 Hz
        640x480 px, 75.000000 Hz
        720x480 px, 59.939999 Hz
        720x480 px, 59.939999 Hz
        720x480 px, 60.000000 Hz
        720x480 px, 60.000000 Hz
        720x576 px, 50.000000 Hz
        720x576 px, 50.000000 Hz
        800x600 px, 56.250000 Hz
        800x600 px, 60.317001 Hz
        800x600 px, 72.188004 Hz
        800x600 px, 75.000000 Hz
        832x624 px, 74.551003 Hz
        1024x768 px, 60.004002 Hz
        1024x768 px, 70.069000 Hz
        1024x768 px, 75.028999 Hz
        1280x720 px, 50.000000 Hz
        1280x720 px, 59.939999 Hz
        1280x720 px, 60.000000 Hz
        1280x720 px, 60.000000 Hz
        1280x768 px, 59.869999 Hz
        1152x864 px, 75.000000 Hz
        1280x800 px, 59.810001 Hz
        1280x960 px, 60.000000 Hz
        1440x900 px, 59.887001 Hz
        1280x1024 px, 60.020000 Hz
        1280x1024 px, 75.025002 Hz
        1680x1050 px, 59.953999 Hz
        1600x1200 px, 59.997002 Hz
        1920x1080 px, 23.976000 Hz
        1920x1080 px, 24.000000 Hz
        1920x1080 px, 29.969999 Hz
        1920x1080 px, 30.000000 Hz
        1920x1080 px, 50.000000 Hz
        1920x1080 px, 59.939999 Hz
        1920x1080 px, 60.000000 Hz
        1920x1080 px, 60.000000 Hz
        1920x1200 px, 59.997002 Hz
        3840x2160 px, 23.976000 Hz
        3840x2160 px, 24.000000 Hz
        3840x2160 px, 29.969999 Hz
        3840x2160 px, 30.000000 Hz
        3840x2160 px, 30.000000 Hz
        3840x2160 px, 59.997002 Hz (preferred, current)
      Position: 3840,0
      Transform: normal
      Scale: 1.000000
    DP-3 "Acer Technologies Acer CB241HQK 0x0000F457 (DP-3)"
      Physical size: 520x290 mm
      Enabled: yes
      Modes:
        720x400 px, 70.082001 Hz
        640x480 px, 59.939999 Hz
        640x480 px, 59.939999 Hz
        640x480 px, 60.000000 Hz
        640x480 px, 66.667000 Hz
        640x480 px, 72.808998 Hz
        640x480 px, 75.000000 Hz
        720x480 px, 59.939999 Hz
        720x480 px, 59.939999 Hz
        720x480 px, 60.000000 Hz
        720x480 px, 60.000000 Hz
        720x576 px, 50.000000 Hz
        720x576 px, 50.000000 Hz
        800x600 px, 56.250000 Hz
        800x600 px, 60.317001 Hz
        800x600 px, 72.188004 Hz
        800x600 px, 75.000000 Hz
        832x624 px, 74.551003 Hz
        1024x768 px, 60.004002 Hz
        1024x768 px, 70.069000 Hz
        1024x768 px, 75.028999 Hz
        1280x720 px, 50.000000 Hz
        1280x720 px, 59.939999 Hz
        1280x720 px, 60.000000 Hz
        1280x720 px, 60.000000 Hz
        1280x768 px, 59.869999 Hz
        1152x864 px, 75.000000 Hz
        1280x800 px, 59.810001 Hz
        1280x960 px, 60.000000 Hz
        1440x900 px, 59.887001 Hz
        1280x1024 px, 60.020000 Hz
        1280x1024 px, 75.025002 Hz
        1680x1050 px, 59.953999 Hz
        1600x1200 px, 59.997002 Hz
        1920x1080 px, 23.976000 Hz
        1920x1080 px, 24.000000 Hz
        1920x1080 px, 29.969999 Hz
        1920x1080 px, 30.000000 Hz
        1920x1080 px, 50.000000 Hz
        1920x1080 px, 59.939999 Hz
        1920x1080 px, 60.000000 Hz
        1920x1080 px, 60.000000 Hz
        1920x1200 px, 59.997002 Hz
        3840x2160 px, 23.976000 Hz
        3840x2160 px, 24.000000 Hz
        3840x2160 px, 29.969999 Hz
        3840x2160 px, 30.000000 Hz
        3840x2160 px, 30.000000 Hz
        3840x2160 px, 59.997002 Hz (preferred, current)
      Position: 0,0
      Transform: normal
      Scale: 1.000000
    HDMI-A-1 "Unknown HD60 S+ 0x00000000 (HDMI-A-1)"
      Physical size: 600x340 mm
      Enabled: no
      Modes:
        720x400 px, 70.082001 Hz
        640x480 px, 59.939999 Hz
        640x480 px, 59.939999 Hz
        640x480 px, 60.000000 Hz
        640x480 px, 75.000000 Hz
        720x480 px, 59.939999 Hz
        720x480 px, 59.939999 Hz
        720x480 px, 60.000000 Hz
        720x480 px, 60.000000 Hz
        720x576 px, 50.000000 Hz
        720x576 px, 50.000000 Hz
        800x600 px, 60.317001 Hz
        800x600 px, 75.000000 Hz
        800x600 px, 119.972000 Hz
        1024x768 px, 60.004002 Hz
        1024x768 px, 70.069000 Hz
        1024x768 px, 75.028999 Hz
        1024x768 px, 119.988998 Hz
        1280x720 px, 50.000000 Hz
        1280x720 px, 59.939999 Hz
        1280x720 px, 60.000000 Hz
        1280x800 px, 60.000000 Hz
        1440x900 px, 60.000000 Hz
        1280x1024 px, 75.025002 Hz
        1280x1024 px, 119.958000 Hz
        1680x1050 px, 60.000000 Hz
        1600x1200 px, 60.000000 Hz
        1920x1080 px, 23.976000 Hz
        1920x1080 px, 24.000000 Hz
        1920x1080 px, 25.000000 Hz
        1920x1080 px, 29.969999 Hz
        1920x1080 px, 30.000000 Hz
        1920x1080 px, 50.000000 Hz
        1920x1080 px, 59.939999 Hz
        1920x1080 px, 60.000000 Hz
        1920x1200 px, 60.000000 Hz
        2560x1440 px, 59.951000 Hz
        3840x2160 px, 23.976000 Hz
        3840x2160 px, 24.000000 Hz
        3840x2160 px, 25.000000 Hz
        3840x2160 px, 29.969999 Hz
        3840x2160 px, 30.000000 Hz
        3840x2160 px, 50.000000 Hz
        3840x2160 px, 59.939999 Hz
        3840x2160 px, 60.000000 Hz
        4096x2160 px, 23.976000 Hz
        4096x2160 px, 24.000000 Hz
        3840x2160 px, 60.000000 Hz (preferred)
    
    bug 
    Reply
  • Avoid using [] which implicitly inserts.
    Avoid using [] which implicitly inserts.

    Jan 14, 2022

    [] should be avoided where possible as it causes things that look like simple lookups to actually perform insertions.

    [] replaced with explicit operators where possible.

    [] = ... assignments aren't too confusing but try_emplace() is much clearer.

    C++ magic looks very pretty but can be very dangerous.

    Reply
  • add keepabove window rule
    add keepabove window rule

    Jan 16, 2022

    I've been trying to control the Z-order of various UI elements. In particular, I've been trying to get Waybar to appear over wf-dock.

    This allows setting up a window rule as such:

    rule_1 = on created if app_id is "waybar" then keepabove
    

    This isn't quite the same as the shortcut key as it sets wf::LAYER_TOP to force the window to the top. The keypress which targets workspace windows sets wf::WORKSPACE and SUBLAYER_DOCKED_ABOVE.

    This might need a different name? E.g.

    rule_1 = on created if app_id is "waybar" then toppanel # uipanel  depanel or whatever
    
    Reply
  • Fix window position error
    Fix window position error

    Jan 17, 2022

    The window is positioned by client, but it will be placed to center by the place plugin. Set is_positioned to place plugin to avoid this issue.

    Signed-off-by: Chaojiang Luo [email protected] Change-Id: I925ced36e9750667afc3c196db98e0e050b3c0c7

    Reply
  • [Feature] Window hints!
    [Feature] Window hints!

    Jan 18, 2022

    I have been using Wayfire for a month now and I must say after hooping through many WM, this is probably the best floating WM. Thank you for the awesome project!

    This feature was inspired by Link Hints, Vimium, Easymotion. It's function pretty much the same as Scale, but when it's toggled on:

    • It show a small hints box in the bottom of each windows.
    • If the user press a key or a set of keys match the hint of a window, the user will focus to that windows.
    • If the user press Esc, the user will just focus back to the current window.
    • If the user press the [window hints] toggle key again, the user will focus on the last focused window (this make switching back and forth two windows easily).
    • The windows will be displayed in grid, group by class.

    With this feature user will no longer need to cycle windows or make 4 to 5 keypress just to switch to a specific window, instead they can just need to make 2-3 keypress which improve the speed significantly.

    enhancement 
    Reply
  • Show views' title as an overlay during scale
    Show views' title as an overlay during scale

    Jan 2, 2021

    This is an implementation for #990

    Some notes:

    • I've made this part of the title filter plugin, since I'm unsure if it makes sense to add and extra plugin and also to share code more easily; maybe the title filter plugin could be renamed to "Scale addons" or something similar?
    • The helper classes: cairo_text_t and view_overlay could be part of some common tools. This way, other plugins can re-use them to render text and to add overlays to views.
    • The view_overlay transformer is not efficient in its current form, since there is no need to copy the view's texture to a new framebuffer. I wonder if there is a way to add a transformer that renders to the latest framebuffer without copying that I missed, or if it would make sense to add this functionality?
    • I could not find an easy way so far to take output scaling into account; this should probably be fixed before merging, so any suggestion on this is welcome :)
    • Also, this would benefit from better damage tracking. For the current case, it is not really a problem, since the transformers added by scale will need to damage the whole view anyway.

    Fixes #990

    Reply
  • GIMP dialog windows misbehavior on multi-headed setup
    GIMP dialog windows misbehavior on multi-headed setup

    Oct 1, 2020

    This may be difficult to describe, but let's try. I work on a laptop with 2 external displays:

    [DP-1]
    layout = 0,0
    mode = [email protected]
    scale = 1.000000
    transform = normal
    
    [eDP-1]
    layout = 1920,0
    mode = [email protected]
    scale = 1.000000
    transform = normal
    
    [HDMI-A-1]
    layout = 3840,0
    mode = [email protected]
    scale = 1.000000
    transform = normal
    

    If I open GIMP on DP-1, it works correctly on all workspaces. The problem appears on eDP-1 and HDMI-A-1. I use the default 3x3 workspaces matrix. If I open GIMP on one of workspaces in the left column (1, 4 or 7), dialog popups are being moved to the left margin. On all other workspaces, they land somewhere off the screen. I use Waybar with the wlr/taskbar module. If I click on the button corresponding to the missing window, I'm being moved to the first left workspace in the same row.

    Sample steps to reproduce:

    • launch GIMP on a display which coordinates are not 0,0 and workspace 2, 3, 5, 6, 8 or 9;
    • open an image
    • select Image / Canvas size
    • change width or height, press Center

    The dialog popup disappears from the screen.

    Reply
  • Add scale plugin
    Add scale plugin

    Jun 9, 2020

    Fixes #449.

                                                                                                                                                                                                           
    Reply
  • Custom rendering doesn't work in some setups
    Custom rendering doesn't work in some setups

    Mar 24, 2018

    I don't know if its just my .ini file but on my setup on Debian Unstable and AMD r600g drivers I have not been able to get the desktop cube or expo to show by setting any keybinding as "activate."

    EDIT: nothing brings them up with the default, unmodified .ini file either

    Reply
  • wayfire animation issues and features.
    wayfire animation issues and features.

    Oct 6, 2019

    1.no option for window minimize and maximize, unmaximize animation example magic lamp effect for minimize. rubberband effect for maximize unmaximize. default animation is not good. 2.fire effect is invincible. 3.blur effect is unstable. 4.no window overview or activities overview like how gnome does when pressed super in gnome. or with kwin when cursor is moved to top left corner. showing all opened windows in grid. not the desktops. 5. no show desktop or minimize all option or keycombo. 6. fisheye does nothing 7. how to use matcher? 8. in desktop cube the skydome and cubemap image give by default in the wayfire package. 9 right clicking window decoration should give list of available window manger actions like quit fullscreen,output switcher etc.

    Reply
  • After Idle, all views moved to one output
    After Idle, all views moved to one output

    Nov 24, 2020

    This is with wayfire 0.6.0 from AUR on Arch. I have two monitors connected via DisplayPort, and an AMD GPU (using default Mesa drivers). Output config:

    [DP-1]
    mode = [email protected]
    layout = 0,0
    scale = 2
    
    [DP-2]
    mode = [email protected]
    layout = 1920,0
    scale = 2
    

    When the idle plugin turns my outputs off, when they turn back on after I move my mouse/press key, all the windows are moved to one monitor.

    Below is the log, but a TLDR of what happens is:

    1. I reactivate the outputs by pressing key
    2. DP-1 disconnects - this moves all windows to DP-2
    3. DP-2 disconnects - this moves all windows to NOOP-1
    4. DP-1 reconnects and is added back to Wayfire
    5. DP-2 reconnects and is added back to Wayfire
    6. All windows are moved from NOOP-1 to DP-1
    12:18:59: II 24-11-20 12:18:59.576 - [backend/drm/drm.c:811] Modesetting 'DP-1' with '[email protected]'
    12:18:59: II 24-11-20 12:18:59.592 - [backend/drm/drm.c:811] Modesetting 'DP-2' with '[email protected]'
    12:19:01: II 24-11-20 12:19:01.060 - [backend/drm/drm.c:1256] Scanning DRM connectors
    12:19:01: II 24-11-20 12:19:01.060 - [backend/drm/drm.c:1431] 'DP-1' disconnected
    12:19:01: II 24-11-20 12:19:01.060 - [backend/drm/drm.c:1621] Emitting destruction signal for 'DP-1'
    12:19:01: II 24-11-20 12:19:01.130 - [wayfire-0.6.0/src/core/output-layout.cpp:1116] remove output: DP-1
    12:19:01: EE 24-11-20 12:19:01.130 - [wayfire-0.6.0/src/core/output-layout.cpp:551] disabling output: DP-1
    12:19:01: II 24-11-20 12:19:01.131 - [wayfire-0.6.0/src/core/output-layout.cpp:177] transfer views from DP-1 -> DP-2
    12:19:01: II 24-11-20 12:19:01.221 - [backend/drm/drm.c:1256] Scanning DRM connectors
    12:19:01: II 24-11-20 12:19:01.221 - [backend/drm/drm.c:1431] 'DP-2' disconnected
    12:19:01: II 24-11-20 12:19:01.221 - [backend/drm/drm.c:1621] Emitting destruction signal for 'DP-2'
    12:19:01: II 24-11-20 12:19:01.314 - [wayfire-0.6.0/src/core/output-layout.cpp:1116] remove output: DP-2
    12:19:01: II 24-11-20 12:19:01.314 - [wayfire-0.6.0/src/core/output-layout.cpp:1062] new output: NOOP-1
    12:19:01: II 24-11-20 12:19:01.314 - [wayfire-0.6.0/src/core/output-layout.cpp:664] Couldn't find matching mode [email protected] for output NOOP-1. Trying to use custom mode(might not work)
    12:19:01: (type equals variant: [type: string, value: toplevel] | (type equals variant: [type: string, value: x-or] & focusable equals variant: [type: bool, value: 1]))
    12:19:01: type equals variant: [type: string, value: overlay]
    12:19:01: false
    12:19:01: false
    12:19:01: type equals variant: [type: string, value: toplevel]
    12:19:01: false
    12:19:01: EE 24-11-20 12:19:01.317 - [wayfire-0.6.0/src/core/output-layout.cpp:551] disabling output: DP-2
    12:19:01: II 24-11-20 12:19:01.317 - [wayfire-0.6.0/src/core/output-layout.cpp:177] transfer views from DP-2 -> NOOP-1
    12:19:01: II 24-11-20 12:19:01.975 - [backend/drm/drm.c:1256] Scanning DRM connectors
    12:19:01: II 24-11-20 12:19:01.976 - [backend/drm/drm.c:1351] 'DP-1' connected
    12:19:01: II 24-11-20 12:19:01.976 - [backend/drm/drm.c:1357] Physical size: 620x340
    12:19:01: II 24-11-20 12:19:01.976 - [backend/drm/drm.c:1375] Detected modes:
    12:19:01: II 24-11-20 12:19:01.976 - [backend/drm/drm.c:1397]   [email protected] (preferred)
    (SNIP)
    12:19:01: II 24-11-20 12:19:01.977 - [backend/drm/drm.c:1463] Requesting modeset for 'DP-1'
    12:19:01: II 24-11-20 12:19:01.977 - [wayfire-0.6.0/src/core/output-layout.cpp:1101] new output: DP-1
    12:19:01: II 24-11-20 12:19:01.977 - [backend/drm/drm.c:811] Modesetting 'DP-1' with '[email protected]'
    12:19:01: (type equals variant: [type: string, value: toplevel] | (type equals variant: [type: string, value: x-or] & focusable equals variant: [type: bool, value: 1]))
    12:19:01: type equals variant: [type: string, value: overlay]
    12:19:01: false
    12:19:01: false
    12:19:01: type equals variant: [type: string, value: toplevel]
    12:19:01: false
    12:19:02: II 24-11-20 12:19:02.134 - [backend/drm/drm.c:1256] Scanning DRM connectors
    12:19:02: II 24-11-20 12:19:02.135 - [backend/drm/drm.c:1351] 'DP-2' connected
    12:19:02: II 24-11-20 12:19:02.135 - [backend/drm/drm.c:1357] Physical size: 620x340
    12:19:02: II 24-11-20 12:19:02.135 - [backend/drm/drm.c:1375] Detected modes:
    12:19:02: II 24-11-20 12:19:02.135 - [backend/drm/drm.c:1397]   [email protected] (preferred)
    (SNIP)
    12:19:02: II 24-11-20 12:19:02.136 - [backend/drm/drm.c:1463] Requesting modeset for 'DP-2'
    12:19:02: II 24-11-20 12:19:02.136 - [wayfire-0.6.0/src/core/output-layout.cpp:1101] new output: DP-2
    12:19:02: II 24-11-20 12:19:02.136 - [backend/drm/drm.c:811] Modesetting 'DP-2' with '[email protected]'
    12:19:02: (type equals variant: [type: string, value: toplevel] | (type equals variant: [type: string, value: x-or] & focusable equals variant: [type: bool, value: 1]))
    12:19:02: type equals variant: [type: string, value: overlay]
    12:19:02: false
    12:19:02: false
    12:19:02: type equals variant: [type: string, value: toplevel]
    12:19:02: false
    12:19:03: II 24-11-20 12:19:03.162 - [wayfire-0.6.0/src/core/output-layout.cpp:1091] remove output: NOOP-1
    12:19:03: EE 24-11-20 12:19:03.162 - [wayfire-0.6.0/src/core/output-layout.cpp:551] disabling output: NOOP-1
    12:19:03: II 24-11-20 12:19:03.162 - [wayfire-0.6.0/src/core/output-layout.cpp:177] transfer views from NOOP-1 -> DP-1
    
    bug 
    Reply