Coder Social home page Coder Social logo

wayfire-plugins-extra's People

Contributors

ammen99 avatar botiapa avatar kim-dewelski avatar kode54 avatar l3nkz avatar lilydjwg avatar marcusbritanicus avatar namorniradnug avatar sjtio avatar soreau avatar ssfdust avatar timgott avatar travankor avatar wineee avatar xaiki avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wayfire-plugins-extra's Issues

Add boolean property to lock rotation

It's very much of a hack to load/unload the autorotate plugin. It'd be nice if carbonSHELL can just change a boolean property in the config file to toggle the autorotate functionality

Release 0.7.0 fails to build with wayfire 0.7.3

Failing on Arch with:

[27/37] Compiling C++ object src/libmag.so.p/mag.cpp.o
FAILED: src/libmag.so.p/mag.cpp.o
c++ -Isrc/libmag.so.p -Isrc -I../wayfire-plugins-extra-0.7.0/src -I/usr/include/cairo -I/usr/include/lzo -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/pixman-1 -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libdrm -I/usr/include/libevdev-1.0 -I/usr/include/libxml2 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -std=c++17 -O0 -DWLR_USE_UNSTABLE -DWAYFIRE_PLUGIN -Wno-unused-parameter -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -fPIC -pthread -MD -MQ src/libmag.so.p/mag.cpp.o -MF src/libmag.so.p/mag.cpp.o.d -o src/libmag.so.p/mag.cpp.o -c ../wayfire-plugins-extra-0.7.0/src/mag.cpp
../wayfire-plugins-extra-0.7.0/src/mag.cpp: In lambda function:
../wayfire-plugins-extra-0.7.0/src/mag.cpp:178:14: error: ‘wlr_output_export_dmabuf’ was not declared in this scope; did you mean ‘wlr_output_event_damage’?
  178 |         if (!wlr_output_export_dmabuf(output->handle, &dmabuf_attribs))
      |              ^~~~~~~~~~~~~~~~~~~~~~~~
      |              wlr_output_event_damage
[32/37] Compiling C++ object src/libworkspace-names.so.p/workspace-names.cpp.o

Can not build v0.7.5 on Debian testing

Hi.
I'm trying to build plugins.
Dev packages:

$ apt list '*wayfire*-dev' '*libwf*-dev' '*libwl*-dev' '*cairo*-dev' '*libmm*-dev' --installed
Listing... Done
libcairo2-dev/testing,unstable,now 1.16.0-7 amd64 [installed,automatic]
libmm-glib-dev/testing,unstable,now 1.20.4-1 amd64 [installed]
libwf-config-dev/testing,unstable,now 0.7.1-3 amd64 [installed]
libwlroots-dev/experimental,now 0.16.2-1 amd64 [installed]
wayfire-dev/testing,unstable,now 0.7.4-2 amd64 [installed]

Preparation:

git clone https://github.com/WayfireWM/wayfire-plugins-extra.git .
git checkout v0.7.5
git submodule update --init

Building:

$ fakeroot checkinstall sh -c 'meson setup --wipe build && meson build --prefix=/usr --buildtype=release && ninja -C build && ninja -C build install'

Error:

FAILED: src/libwinzoom.so.p/window-zoom.cpp.o 
c++ -Isrc/libwinzoom.so.p -Isrc -I../src -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libdrm -I/usr/include/libevdev-1.0/ -I/usr/include/libxml2 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c++17 -O3 -DWLR_USE_UNSTABLE -DWAYFIRE_PLUGIN -Wno-unused-parameter -fPIC -pthread -MD -MQ src/libwinzoom.so.p/window-zoom.cpp.o -MF src/libwinzoom.so.p/window-zoom.cpp.o.d -o src/libwinzoom.so.p/window-zoom.cpp.o -c ../src/window-zoom.cpp
../src/window-zoom.cpp:198:33: error: could not convert ‘<lambda closure object>wayfire_winzoom::<lambda(wlr_pointer_axis_event*)>{((wayfire_winzoom*)this)}’ from ‘wayfire_winzoom::<lambda(wlr_pointer_axis_event*)>’ to ‘wf::axis_callback’ {aka ‘std::function<bool(wlr_event_pointer_axis*)>’}
  198 |     wf::axis_callback axis_cb = [=] (wlr_pointer_axis_event *ev)
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                 |
      |                                 wayfire_winzoom::<lambda(wlr_pointer_axis_event*)>
  199 |     {
      |     ~                            
  200 |         auto view = wf::get_core().get_cursor_focus_view();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  201 |         if (ev->orientation == WLR_AXIS_ORIENTATION_VERTICAL)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  202 |         {
      |         ~                        
  203 |             auto delta = (int)-std::clamp(ev->delta, -1.0, 1.0);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  204 |             return update_winzoom(view, wf::point_t{delta, delta});
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  205 |         }
      |         ~                        
  206 | 
      |                                  
  207 |         return false;
      |         ~~~~~~~~~~~~~            
  208 |     };
      |     ~                            
[30/33] Compiling C++ object src/libworkspace-names.so.p/workspace-names.cpp.o
ninja: build stopped: subcommand failed.

Background-view very unstable

Hey there,
I've been using background-view for quite a while now, but it's a bit unstable, if you are using programs that need to be restarted to apply settings.
It mostly seems to come down to wayfire crashing, when starting/stopping the background-view plugin while the background process is dead.
Please fix this, I assume that the other toggling crashes will be fixed by something like this!
Thanks!

windecor crashes wayfire on resizing ...

What happens?

With server side decorations enabled (preferred_decoration_mode = server), reducing the size (default width) so that the space for the window title (horizontal) becomes too small, immediately causes wayfire to crash ...

EE 07-03-23 23:26:38.052 - [src/main.cpp:134] Fatal error: Segmentation fault
EE 07-03-23 23:26:38.123 - #1  signal_handler(int) ../src/main.cpp:136
EE 07-03-23 23:26:38.141 - #2  __sigaction ??:?
EE 07-03-23 23:26:38.164 - #3  cairo_image_surface_get_width ??:?
EE 07-03-23 23:26:38.225 - #4  cairo_surface_upload_to_texture(_cairo_surface*, wf::simple_texture_t&) /usr/local/include/wayfire/plugins/common/cairo-util.hpp:24
EE 07-03-23 23:26:38.303 - #5  simple_decoration_node_t::update_title(int, int, double) ../subprojects/windecor/deco-subsurface.cpp:71
EE 07-03-23 23:26:38.372 - #6  simple_decoration_node_t::render_title(wf::render_target_t const&, wlr_box) ../subprojects/windecor/deco-subsurface.cpp:170
EE 07-03-23 23:26:38.427 - #7  simple_decoration_node_t::render_scissor_box(wf::render_target_t const&, wf::point_t, wlr_box const&) ../subprojects/windecor/deco-subsurface.cpp:187 (discriminator 6)
EE 07-03-23 23:26:38.465 - #8  simple_decoration_node_t::decoration_render_instance_t::render(wf::render_target_t const&, wf::region_t const&) ../subprojects/windecor/deco-subsurface.cpp:368 (discriminator 3)
EE 07-03-23 23:26:38.552 - #9  wf::scene::render_instance_t::render(wf::render_target_t const&, wf::region_t const&, std::any const&) ../src/api/wayfire/scene-render.hpp:123
EE 07-03-23 23:26:38.791 - #10 wf::scene::run_render_pass(wf::scene::render_pass_params_t const&, unsigned int) ../src/output/render-manager.cpp:1045
EE 07-03-23 23:26:38.845 - #11 wf::scene::transformer_render_instance_t<wobbly_transformer_node_t>::get_texture(float) ../src/api/wayfire/view-transform.hpp:119 (discriminator 2)
EE 07-03-23 23:26:38.917 - #12 wobbly_render_instance_t::render(wf::render_target_t const&, wf::region_t const&) ../plugins/wobbly/wobbly.cpp:893
EE 07-03-23 23:26:39.026 - #13 wf::scene::render_instance_t::render(wf::render_target_t const&, wf::region_t const&, std::any const&) ../src/api/wayfire/scene-render.hpp:123
EE 07-03-23 23:26:39.271 - #14 wf::scene::run_render_pass(wf::scene::render_pass_params_t const&, unsigned int) ../src/output/render-manager.cpp:1045
EE 07-03-23 23:26:39.500 - #15 wf::render_manager::impl::render_output() ../src/output/render-manager.cpp:893
EE 07-03-23 23:26:39.767 - #16 wf::render_manager::impl::paint() ../src/output/render-manager.cpp:957
EE 07-03-23 23:26:39.981 - #17 wf::render_manager::impl::impl(wf::output_t*)::{lambda(void*)#1}::operator()(void*) const ../src/output/render-manager.cpp:758
EE 07-03-23 23:26:40.215 - #18 void std::__invoke_impl<void, wf::render_manager::impl::impl(wf::output_t*)::{lambda(void*)#1}&, void*>(std::__invoke_other, wf::render_manager::impl::impl(wf::output_t*)::{lambda(void*)#1}&, void*&&) /usr/include/c++/12.2.1/bits/invoke.h:61
EE 07-03-23 23:26:40.454 - #19 std::enable_if<is_invocable_r_v<void, wf::render_manager::impl::impl(wf::output_t*)::{lambda(void*)#1}&, void*>, void>::type std::__invoke_r<void, wf::render_manager::impl::impl(wf::output_t*)::{lambda(void*)#1}&, void*>(wf::render_manager::impl::impl(wf::output_t*)::{lambda(void*)#1}&, void*&&) /usr/include/c++/12.2.1/bits/invoke.h:117
EE 07-03-23 23:26:40.692 - #20 std::_Function_handler<void (void*), wf::render_manager::impl::impl(wf::output_t*)::{lambda(void*)#1}>::_M_invoke(std::_Any_data const&, void*&&) /usr/include/c++/12.2.1/bits/std_function.h:291
EE 07-03-23 23:26:40.751 - #21 std::function<void (void*)>::operator()(void*) const /usr/include/c++/12.2.1/bits/std_function.h:591
EE 07-03-23 23:26:40.825 - #22 wf::wl_listener_wrapper::emit(void*) ../src/wl-listener-wrapper.tpp:59
EE 07-03-23 23:26:40.901 - #23 wf::handle_wrapped_listener(wl_listener*, void*) ../src/wl-listener-wrapper.tpp:11
EE 07-03-23 23:26:40.931 - #24 wl_signal_emit_mutable ??:?
EE 07-03-23 23:26:40.959 - #25 wl_signal_emit_mutable ??:?
EE 07-03-23 23:26:40.981 - #26 ffi_prep_go_closure ??:?
EE 07-03-23 23:26:41.007 - #27 ?? ??:0
EE 07-03-23 23:26:41.030 - #28 ffi_call ??:?
EE 07-03-23 23:26:41.052 - #29 ?? ??:0
EE 07-03-23 23:26:41.079 - #30 wl_list_remove ??:?
EE 07-03-23 23:26:41.105 - #31 wl_display_dispatch_queue_pending ??:?
EE 07-03-23 23:26:41.126 - #32 wlr_multi_backend_add ??:?
EE 07-03-23 23:26:41.146 - #33 wl_event_loop_dispatch ??:?
EE 07-03-23 23:26:41.170 - #34 wl_display_run ??:?
EE 07-03-23 23:26:41.256 - #35 main ../src/main.cpp:398
EE 07-03-23 23:26:41.282 - #36 __libc_init_first ??:?
EE 07-03-23 23:26:41.308 - #37 __libc_start_main ??:?
EE 07-03-23 23:26:41.505 - #38 _start ??:?

How to reproduce:

  1. Launch wayfire with an empty config.
  2. Disable the decor plugin (Decoration).
  3. Enable the windecor plugin (Window Decorations).
  4. Change preferred_decoration_mode (Preferred decoration mode in Core) to server.
  5. Restart wayfire to pick up on the changes.
  6. Open a new window (e.g. Terminal) and make it smaller till the title text disappears.

Provide better readme/documentation

The project should at least tell:

  • which plugins are included, a short(!) description what they offer and the original repos + author's so that one can contact them directly.
  • which plugins are submodules and how to install them
  • special dependencies, if needed

optional: where to get if not directly

Contributions to wiki/further doc, descriptions of usecases could be more encouraged, but I would propose it's better to just keep one wiki (that of wayfire itself, to keep stuff together and encourage interaction) and just link to that.

Right now it is kind of a black box, and requires unnecessary digging to use the package to full extent, or even contribute.

Fails To build on newset wayfire

output:

[14/43] Compiling C++ object src/libmag.so.p/mag.cpp.o
FAILED: src/libmag.so.p/mag.cpp.o
sccache c++ -Isrc/libmag.so.p -Isrc -I../src -I/usr/include/cairo -I/usr/include/lzo -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/pixman-1 -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libdrm -I/usr/include/libevdev-1.0 -I/usr/include/libxml2 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -std=c++17 -DWLR_USE_UNSTABLE -DWAYFIRE_PLUGIN -Wno-unused-parameter -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -fPIC -pthread -MD -MQ src/libmag.so.p/mag.cpp.o -MF src/libmag.so.p/mag.cpp.o.d -o src/libmag.so.p/mag.cpp.o -c ../src/mag.cpp
../src/mag.cpp: In lambda function:
../src/mag.cpp:176:30: error: ‘struct wlr_output’ has no member named ‘front_buffer’
  176 |         if (!output->handle->front_buffer)
      |                              ^~~~~~~~~~~~
../src/mag.cpp:184:52: error: ‘struct wlr_output’ has no member named ‘front_buffer’
  184 |         if (!wlr_buffer_get_dmabuf(output->handle->front_buffer, &dmabuf_attribs))
      |                                                    ^~~~~~~~~~~~
[30/43] Compiling C++ object src/libhinge.so.p/hinge.cpp.o
../src/hinge.cpp: In static member function ‘static void wayfire_hinge::send_message(wayfire_hinge::thread_message, int)’:
../src/hinge.cpp:107:14: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  107 |         write(write_fd, &message, 1);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
../src/hinge.cpp: In static member function ‘static int wayfire_hinge::on_pipe_update(int, uint32_t, void*)’:
../src/hinge.cpp:114:13: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  114 |         read(that->pipefd[0], &message, 1);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[31/43] Compiling C++ object src/libautorotate-iio.so.p/autorotate-iio.cpp.o
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().
    Aborting...
 -> error making: wayfire-plugins-extra-git

Hide cursor

Hide the cursor after a configurable (cursor) inactivity timeout.

And this can be ignored by views like games.

QT Styleplugin

Hey there,
I was just wondering, if a qt-style plugin provider could be added to this to add QT theming support like the people at desq did it
This would be an awesome addition to wayfire, since qt theming has always been an issue with non-kde DEs.
Thanks!

Fails to build with Wayfire 0.8.0 (2021-11-26 snapshot)

ninja: Entering directory `build'
[28/41] Compiling C++ object src/libhinge.so.p/hinge.cpp.o
../src/hinge.cpp: In static member function ‘static void wayfire_hinge::send_message(wayfire_hinge::thread_message, int)’:
../src/hinge.cpp:107:14: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  107 |         write(write_fd, &message, 1);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
../src/hinge.cpp: In static member function ‘static int wayfire_hinge::on_pipe_update(int, uint32_t, void*)’:
../src/hinge.cpp:114:13: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  114 |         read(that->pipefd[0], &message, 1);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[32/41] Compiling C++ object src/libfollow-focus.so.p/follow-focus.cpp.o
FAILED: src/libfollow-focus.so.p/follow-focus.cpp.o
ccache c++ -Isrc/libfollow-focus.so.p -Isrc -I../src -I/usr/include/cairo -I/usr/include/lzo -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libdrm -I/usr/include/libevdev-1.0 -I/usr/include/libxml2 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -std=c++17 -DWLR_USE_UNSTABLE -DWAYFIRE_PLUGIN -Wno-unused-parameter -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -fPIC -pthread -MD -MQ src/libfollow-focus.so.p/follow-focus.cpp.o -MF src/libfollow-focus.so.p/follow-focus.cpp.o.d -o src/libfollow-focus.so.p/follow-focus.cpp.o -c ../src/follow-focus.cpp
../src/follow-focus.cpp: In member function ‘virtual void follow_focus::wayfire_follow_focus::init()’:
../src/follow-focus.cpp:175:57: error: cannot convert ‘wf::signal_callback_t*’ {aka ‘std::function<void(wf::signal_data_t*)>*’} to ‘wf::signal_connection_t*’
  175 |         wf::get_core().connect_signal("pointer_motion", &pointer_motion);
      |                                                         ^~~~~~~~~~~~~~~
      |                                                         |
      |                                                         wf::signal_callback_t* {aka std::function<void(wf::signal_data_t*)>*}
In file included from /usr/include/wayfire/core.hpp:4,
                 from ../src/follow-focus.cpp:24:
/usr/include/wayfire/object.hpp:76:64: note:   initializing argument 2 of ‘void wf::signal_provider_t::connect_signal(std::string, wf::signal_connection_t*)’
   76 |     void connect_signal(std::string name, signal_connection_t *callback);
      |                                           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
../src/follow-focus.cpp: In member function ‘virtual void follow_focus::wayfire_follow_focus::fini()’:
../src/follow-focus.cpp:180:41: error: no matching function for call to ‘wf::compositor_core_t::disconnect_signal(const char [15], wf::signal_callback_t*)’
  180 |         wf::get_core().disconnect_signal("pointer_motion", &pointer_motion);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/wayfire/core.hpp:4,
                 from ../src/follow-focus.cpp:24:
/usr/include/wayfire/object.hpp:78:10: note: candidate: ‘void wf::signal_provider_t::disconnect_signal(wf::signal_connection_t*)’
   78 |     void disconnect_signal(signal_connection_t *callback);
      |          ^~~~~~~~~~~~~~~~~
/usr/include/wayfire/object.hpp:78:10: note:   candidate expects 1 argument, 2 provided
[36/41] Compiling C++ object src/libforce-fullscreen.so.p/force-fullscreen.cpp.o
FAILED: src/libforce-fullscreen.so.p/force-fullscreen.cpp.o
ccache c++ -Isrc/libforce-fullscreen.so.p -Isrc -I../src -I/usr/include/cairo -I/usr/include/lzo -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libdrm -I/usr/include/libevdev-1.0 -I/usr/include/libxml2 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -std=c++17 -DWLR_USE_UNSTABLE -DWAYFIRE_PLUGIN -Wno-unused-parameter -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -fPIC -pthread -MD -MQ src/libforce-fullscreen.so.p/force-fullscreen.cpp.o -MF src/libforce-fullscreen.so.p/force-fullscreen.cpp.o.d -o src/libforce-fullscreen.so.p/force-fullscreen.cpp.o -c ../src/force-fullscreen.cpp
../src/force-fullscreen.cpp: In member function ‘void wayfire_force_fullscreen::connect_motion_signal()’:
../src/force-fullscreen.cpp:483:57: error: cannot convert ‘wf::signal_callback_t*’ {aka ‘std::function<void(wf::signal_data_t*)>*’} to ‘wf::signal_connection_t*’
  483 |         wf::get_core().connect_signal("pointer_motion", &on_motion_event);
      |                                                         ^~~~~~~~~~~~~~~~
      |                                                         |
      |                                                         wf::signal_callback_t* {aka std::function<void(wf::signal_data_t*)>*}
In file included from /usr/include/wayfire/core.hpp:4,
                 from ../src/force-fullscreen.cpp:27:
/usr/include/wayfire/object.hpp:76:64: note:   initializing argument 2 of ‘void wf::signal_provider_t::connect_signal(std::string, wf::signal_connection_t*)’
   76 |     void connect_signal(std::string name, signal_connection_t *callback);
      |                                           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
../src/force-fullscreen.cpp: In member function ‘void wayfire_force_fullscreen::disconnect_motion_signal()’:
../src/force-fullscreen.cpp:494:41: error: no matching function for call to ‘wf::compositor_core_t::disconnect_signal(const char [15], wf::signal_callback_t*)’
  494 |         wf::get_core().disconnect_signal("pointer_motion", &on_motion_event);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/wayfire/core.hpp:4,
                 from ../src/force-fullscreen.cpp:27:
/usr/include/wayfire/object.hpp:78:10: note: candidate: ‘void wf::signal_provider_t::disconnect_signal(wf::signal_connection_t*)’
   78 |     void disconnect_signal(signal_connection_t *callback);
      |          ^~~~~~~~~~~~~~~~~
/usr/include/wayfire/object.hpp:78:10: note:   candidate expects 1 argument, 2 provided
[38/41] Compiling C++ object src/libautorotate-iio.so.p/autorotate-iio.cpp.o
FAILED: src/libautorotate-iio.so.p/autorotate-iio.cpp.o
ccache c++ -Isrc/libautorotate-iio.so.p -Isrc -I../src -I/usr/include/cairo -I/usr/include/lzo -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libdrm -I/usr/include/libevdev-1.0 -I/usr/include/libxml2 -I/usr/include/giomm-2.4 -I/usr/lib/giomm-2.4/include -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -std=c++17 -DWLR_USE_UNSTABLE -DWAYFIRE_PLUGIN -Wno-unused-parameter -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -fPIC -pthread -MD -MQ src/libautorotate-iio.so.p/autorotate-iio.cpp.o -MF src/libautorotate-iio.so.p/autorotate-iio.cpp.o.d -o src/libautorotate-iio.so.p/autorotate-iio.cpp.o -c ../src/autorotate-iio.cpp
../src/autorotate-iio.cpp: In member function ‘virtual void WayfireAutorotateIIO::init( ’:
../src/autorotate-iio.cpp:167:13: error: cannot convert ‘wf::signal_callback_t*’ {aka ‘std::function<void(wf::signal_data_t*)>*’} to ‘wf::signal_connection_t*’
  167 |             &on_input_devices_changed);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~
      |             |
      |             wf::signal_callback_t* {aka std::function<void(wf::signal_data_t*)>*}
In file included from /usr/include/wayfire/output.hpp:5,
                 from ../src/autorotate-iio.cpp:2:
/usr/include/wayfire/object.hpp:76:64: note:   initializing argument 2 of ‘void wf::signal_provider_t::connect_signal(std::string, wf::signal_connection_t*)’
   76 |     void connect_signal(std::string name, signal_connection_t *callback);
      |                                           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
../src/autorotate-iio.cpp: In member function ‘virtual void WayfireAutorotateIIO::fini( ’:
../src/autorotate-iio.cpp:257:41: error: no matching function for call to ‘wf::compositor_core_t::disconnect_signal(const char [19], wf::signal_callback_t*)’
  257 |         wf::get_core().disconnect_signal("input-device-added",
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
  258 |             &on_input_devices_changed);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/wayfire/output.hpp:5,
                 from ../src/autorotate-iio.cpp:2:
/usr/include/wayfire/object.hpp:78:10: note: candidate: ‘void wf::signal_provider_t::disconnect_signal(wf::signal_connection_t*)’
   78 |     void disconnect_signal(signal_connection_t *callback);
      |          ^~~~~~~~~~~~~~~~~
/usr/include/wayfire/object.hpp:78:10: note:   candidate expects 1 argument, 2 provided
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().
    Aborting...
error: failed to build 'wayfire-plugins-extra-git-r71.a3412ee-1':
error: packages failed to build: wayfire-plugins-extra-git-r71.a3412ee-1

Build error: 'get_snapshot'

After configuring with meson I get the following error on Fedora:

ninja: Entering directory `build'
[5/6] Compiling C++ object src/libview-shot.so.p/view-shot.cpp.o
FAILED: src/libview-shot.so.p/view-shot.cpp.o 
c++ -Isrc/libview-shot.so.p -Isrc -I../src -I/opt/vc/include -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/vcos/pthreads -I/usr/include/libdrm -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/libevdev-1.0 -I/usr/include/libxml2 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -std=c++17 -O3 -DWLR_USE_UNSTABLE -DWAYFIRE_PLUGIN -Wno-unused-parameter -fPIC -DUSE_VCHIQ_ARM -MD -MQ src/libview-shot.so.p/view-shot.cpp.o -MF src/libview-shot.so.p/view-shot.cpp.o.d -o src/libview-shot.so.p/view-shot.cpp.o -c ../src/view-shot.cpp
../src/view-shot.cpp: In lambda function:
../src/view-shot.cpp:58:59: error: ‘class wf::view_interface_t’ has no member named ‘get_snapshot’; did you mean ‘take_snapshot’?
   58 |         const wf::framebuffer_t& offscreen_buffer = view->get_snapshot();
      |                                                           ^~~~~~~~~~~~
      |                                                           take_snapshot
ninja: build stopped: subcommand failed.

Drag and drop focus doesn't allow keyboard

Describe the bug
Changing focus with drag and drop does not send keyboard input to the view.

To Reproduce
Steps to reproduce the behavior:

  1. Drop a url into a terminal (terminal takes focus)
  2. Type something
  3. Terminal has no input

I also have focus-follow with raise_on_top = false

Expected behavior
If a view is focused after drag and drop, then the view should receive keyboard events.

Wayfire version
0.6.0

Disabling input depending on hinge angle

I wrote a plugin which disables all input sources except touch when the angle of the hinge exceeds a certain value. Is this something you're interested in adding to this repository?

Background view borked

Hey there,
I just checked, and was able to confirm, that the background-view plugin is no longer working. The binary entered into the text field is not executed. The logs didn't tell me about any errors.
Can you reproduce this?
I'm on 0.8.0-eaf81e30 (Nov 30 2022, branch 'fix-refocus-logic')
Thanks!

Background-view doesn't promise what it's name says

The plugins name induces that an application can be shown in background, not closable, without decorations, not shown in scale and so on, but I didn't manage to show anything else than mpv and here DND from thunar or pcmanfm-qt do not work.

[background-view]
command = strawberry
app_id = strawberry

Tested also with lximage-qt, pcmanfm-qt, vlc, thunar and maybe some others - a normal toplevel window is always opened at session start.

As it shows mpv it should at least show others too.

[Feature] Themeable window decorations

The decoration plugin provides window decoration. Making window decorations theme-able would be sweet, so I'm opening this issue in case anyone is interested.

Background-view does nothing

Hey there,
I just wanted to set up background view for use with linux-wallpaperengine, but it turns out, that it refuses to do anything when toggled, even with the default mpv settings and just a file selected. I remember that it was working at some point, but I accidently exited mpv with my quit keybind, followed by wayfire crashing.
I am running wayfire-git r2199.94f15048-1 and wayfire-plugins-extra-git r148.bcadd22-1 installed from the AUR.
Why is this happening? Is it a known issue which has an easy solution?
Thanks!

does not compile

Hey there,
I just tried rebuilding wayfire-plugins-extra-git against my new wayfire version to see if it was causing issues and I got the following errors:
wf-git.log

Is there anything you can do about that?
Thanks!

Lua plugins

Hey there,
I just thought of a feature to make plugin development more accessible: Support for plugins written in Lua.
I would really welcome such a feature!
Thanks

Subcommand failed on compilation

ninja -C build && sudo ninja -C build install
ninja: Entering directory `build'
[8/43] Compiling C++ object s...iew-shot.so.p/view-shot.cpp.o
FAILED: src/libview-shot.so.p/view-shot.cpp.o
ccache c++ -Isrc/libview-shot.so.p -Isrc -I../src -I/usr/include/cairo -I/usr/include/lzo -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/pixman-1 -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libdrm -I/usr/include/libevdev-1.0 -I/usr/include/libxml2 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -std=c++17 -O3 -DWLR_USE_UNSTABLE -DWAYFIRE_PLUGIN -Wno-unused-parameter -fPIC -pthread -MD -MQ src/libview-shot.so.p/view-shot.cpp.o -MF src/libview-shot.so.p/view-shot.cpp.o.d -o src/libview-shot.so.p/view-shot.cpp.o -c ../src/view-shot.cpp
../src/view-shot.cpp: In instantiation of ‘wayfire_view_shot::<lambda(auto:1)> [with auto:1 = wf::activator_data_t]’:
/usr/include/c++/12.2.0/type_traits:2565:26:   required by substitution of ‘template<class _Fn, class ... _Args> static std::__result_of_success<decltype (declval<_Fn>()((declval<_Args>)()...)), std::__invoke_other> std::__result_of_other_impl::_S_test(int) [with _Fn = wayfire_view_shot::<lambda(auto:1)>&; _Args = {const wf::activator_data_t&}]’
/usr/include/c++/12.2.0/type_traits:2576:55:   required from  struct std::__result_of_impl<false, false, wayfire_view_shot::<lambda(auto:1)>&, const wf::activator_data_t&>’
/usr/include/c++/12.2.0/bits/std_function.h:348:9:   recursively required by substitution of ‘template<class _Result, class _Ret> struct std::__is_invocable_impl<_Result, _Ret, false, std::__void_t<typename _CTp::type> > [with _Result = std::__invoke_result<wayfire_view_shot::<lambda(auto:1)>&, const wf::activator_data_t&>; _Ret = bool]’
/usr/include/c++/12.2.0/bits/std_function.h:348:9:   required from ‘struct std::function<bool(const wf::activator_data_t&)>::_Callable<wayfire_view_shot::<lambda(auto:1)>, wayfire_view_shot::<lambda(auto:1)>, std::__invoke_result<wayfire_view_shot::<lambda(auto:1)>&, const wf::activator_data_t&> >’
/usr/include/c++/12.2.0/bits/std_function.h:353:8:   required by substitution of ‘template<class _Res, class ... _ArgTypes> template<class _Cond, class _Tp> using _Requires = std::__enable_if_t<_Cond::value, _Tp> [with _Cond = std::function<bool(const wf::activator_data_t&)>::_Callable<wayfire_view_shot::<lambda(auto:1)>, wayfire_view_shot::<lambda(auto:1)>, std::__invoke_result<wayfire_view_shot::<lambda(auto:1)>&, const wf::activator_data_t&> >; _Tp = void; _Res = bool; _ArgTypes = {const wf::activator_data_t&}]’
/usr/include/c++/12.2.0/bits/std_function.h:434:9:   required by substitution of ‘template<class _Functor, class _Constraints> std::function<bool(const wf::activator_data_t&)>::function(_Functor&&) [with _Functor = wayfire_view_shot::<lambda(auto:1)>; _Constraints = <missing>]’
../src/view-shot.cpp:107:5:   required from here
../src/view-shot.cpp:77:72: error: invalid initialization of reference of type ‘const wf::framebuffer_t&’ from expression of type ‘void’
   77 |         const wf::framebuffer_t& offscreen_buffer = view->take_snapshot();
      |                                                     ~~~~~~~~~~~~~~~~~~~^~
[21/43] Compiling C++ object ...iio.so.p/autorotate-iio.cpp.o
ninja: build stopped: subcommand failed.

Currently using Artix LInux with Kernel 5.19-zen

Rule: Do not steal focus on showing this window

Is it possible to implement such a rule? Or does it already exist (I have the stable version of Wayfire with some patches from git)?

Since apps can't control the activation of their windows under Wayland (without having Wayland codes), such a rule seems like a must to me, not less important than rules for positioning, making sticky, etc.

Release

How soon are you planning to release? I am building wayfire packages for openSUSE, only this package was left without release, without release they do not want to accept it in the repository

wayfire-plugins-extra doesn't install in NixOS/Nixpkgs

Hello, people!

I am Anderson Torres, a Nixpkgs developer. I am trying to package wayfire-plugins-extra to nixpkgs, but it is not working.

A small background about Nixpkgs:
  • Nix is a functional programming language tailored for package and systems management. Nix is also the name of the interpreter that receives Nix expressions and outputs software packages.

    • Being a functional programming language, it treats packages in a peculiar manner, in a similar way Haskell treats values: packages are built via functions that don't have side effects. In particular, once a package is installed, it can't be modified.
      In traditional package managers, all packages are scattered in a same root tree, /. On the other hand, Nix installs each package in a dedicated read-only directory inside /nix/store.
      An example: firefox is installed at
      /nix/store/gv4rgr1p1dq5s4hx7ald6a7kli6p3xrz-firefox-85.0/ (that hash part of the directory name encodes the dependency tree of Firefox).
      This way, it is ensured that Firefox can' t be modified once it is installed.
  • Nixpkgs is a (large!) set of Nix expressions that build many softwares, from compilers and assemblers to entire desktop environments like KDE and GNOME.

  • NixOS is a Linux distro built with a specifically tailored set of Nix expressions that build an entire OS environment, from bootloader and kernel to userland programs and desktop environments. Think on it as a large Nix expression that outputs an entire Linux distro.

TL;DR - Nixpkgs doesn' t allow modifications on an already installed package.

I think this is the reason why I can't install wayfire-plugins-extra. The last log lines show this:

Installation output:

wayfire-plugins-extra> [0/1] Installing files.
wayfire-plugins-extra> Installing src/libannotate.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libautorotate-iio.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libbackground-view.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libbench.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libcrosshair.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libfollow-focus.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libforce-fullscreen.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libglib-main-loop.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libjoin-views.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libkeycolor.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libmag.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libshowrepaint.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libwater.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libwinzoom.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing src/libworkspace-names.so to /nix/store/2qc95nl93ws2ijyl936jmawg43w4m9jb-wayfire-plugins-extra-0.7.0/lib/wayfire
wayfire-plugins-extra> Installing /build/wayfire-plugins-extra-0.7.0/metadata/annotate.xml to /nix/store/4sc2544i02gx19w9wp26sjgh0fbr8mp8-wayfire-0.7.0/share/wayfire/metadata
wayfire-plugins-extra> Traceback (most recent call last):
wayfire-plugins-extra>   File "/nix/store/sm3v40fwgs85f23vq250wdfl6l54xkm2-meson-0.56.0/lib/python3.8/site-packages/mesonbuild/mesonmain.py", line 140, in run
wayfire-plugins-extra>     return options.run_func(options)
wayfire-plugins-extra>   File "/nix/store/sm3v40fwgs85f23vq250wdfl6l54xkm2-meson-0.56.0/lib/python3.8/site-packages/mesonbuild/minstall.py", line 554, in run
wayfire-plugins-extra>     installer.do_install(datafilename)
wayfire-plugins-extra>   File "/nix/store/sm3v40fwgs85f23vq250wdfl6l54xkm2-meson-0.56.0/lib/python3.8/site-packages/mesonbuild/minstall.py", line 375, in do_install
wayfire-plugins-extra>     self.install_data(d)
wayfire-plugins-extra>   File "/nix/store/sm3v40fwgs85f23vq250wdfl6l54xkm2-meson-0.56.0/lib/python3.8/site-packages/mesonbuild/minstall.py", line 406, in install_data
wayfire-plugins-extra>     if self.do_copyfile(fullfilename, outfilename, makedirs=(d.dirmaker, outdir)):
wayfire-plugins-extra>   File "/nix/store/sm3v40fwgs85f23vq250wdfl6l54xkm2-meson-0.56.0/lib/python3.8/site-packages/mesonbuild/minstall.py", line 278, in do_copyfile
wayfire-plugins-extra>     shutil.copy2(from_file, to_file)
wayfire-plugins-extra>   File "/nix/store/wkw6fsjasr7jbbrlakxxpbiapa8hws42-python3-3.8.7/lib/python3.8/shutil.py", line 435, in copy2
wayfire-plugins-extra>     copyfile(src, dst, follow_symlinks=follow_symlinks)
wayfire-plugins-extra>   File "/nix/store/wkw6fsjasr7jbbrlakxxpbiapa8hws42-python3-3.8.7/lib/python3.8/shutil.py", line 264, in copyfile
wayfire-plugins-extra>     with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
wayfire-plugins-extra> PermissionError: [Errno 13] Permission denied: '/nix/store/4sc2544i02gx19w9wp26sjgh0fbr8mp8-wayfire-0.7.0/share/wayfire/metadata/annotate.xml'
wayfire-plugins-extra> FAILED: meson-install
wayfire-plugins-extra> /nix/store/sm3v40fwgs85f23vq250wdfl6l54xkm2-meson-0.56.0/bin/meson install --no-rebuild
wayfire-plugins-extra> ninja: build stopped: subcommand failed.
error: --- Error ----------------------------------------------------------- nix
builder for '/nix/store/rz8v2vfxp7snsbiz2wci03lqk2ajxymk-wayfire-plugins-extra-0.7.0.drv' failed with exit code 1

Highlight the line below:

Installing /build/wayfire-plugins-extra-0.7.0/metadata/annotate.xml to /nix/store/4sc2544i02gx19w9wp26sjgh0fbr8mp8-wayfire-0.7.0/share/wayfire/metadata

This line causes an error, because, as I said, Nixpkgs doesn't allow modification of an already installed package (namely, wayfire).

P.S.: this is the offending file:

install_data('annotate.xml', install_dir: wayfire.get_variable(pkgconfig: 'metadatadir'))

I have zero experience with Meson (indeed I am studying it right now), but these lines clearly try to install tfiles in specific wayfire directories, and it violates the separation enforced by Nix.

issue while building

iio@sha/autorotate-iio.cpp.o' -c ../src/autorotate-iio.cpp
../src/autorotate-iio.cpp:9:10: fatal error: plugin.hpp: No such file or directory
    9 | #include <plugin.hpp>
      |          ^~~~~~~~~~~~
compilation terminated.
[14/18] Compiling C++ object 'src/network-keyboard/6aa8b68@@wf-nk-client@exe/client.cpp.o'.
[15/18] Compiling C++ object 'src/network-keyboard/6aa8b68@@wf-nk-server@exe/server.cpp.o'.
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().
    Aborting...

Add option to background-view to make window unfocusable

When using mpv with background-view, an accidental misclick can move the video player off center, and restarting background-view is the only way to recenter it. Mpv also responds to keybinds, which can be slightly annoying at times. Similar issues might be the case with other programs that can be run with background-view.

[follow-focus] Focus does not follow the pointer between workspaces on different displays

If I move the pointer from one display to another, where the current workspace contains no window, the focus stays at the previous workspace / display.

Example:

  1. I'm writing this message in workspace 1 on DP-1
  2. I'm moving the pointer to WS 1 on eDP-1
  3. I'm pressing <super> KEY_T

Alacritty opens over the browser window on DP-1.

It seems that pointing a workspace is not enough. A window must be pointed for focus to change - or the workspace needs to be clicked. Could it be improved?

Wayfire crash

Wayfire crashes with swaybg and DPMS

How to reproduce

  1. Start wayfire session via wayfire-session from VT
  2. Open wcm, in Background View plugin set Command to swaybg -m fill -i and File to an image with size/aspect ratio different than the output / screen (may or may not matter)
  3. In Idle plugin set DPMS timeout and DPMS screensaver
  4. Let DPMS kick in and settle for 20 seconds or so
  5. After Screen went into power save hit Enter key
  6. Wayfire session crashes and returns to the VT. It seems this needs to be repeated once to trigger the crash.

Here's a similar way to reproduce the same error:

  1. Start wayfire via wayfire-session from VT
  2. Keep Background View plugin enabled (works OK when plugin is disabled)
  3. Switch monitor off - switch monitor on - switch monitor off - switch monitor on again
  4. After 2nd cycle Wayfire crashes and returns to the VT.

Expected behavior
Wayfire should not crash regardless of third party applications' (swaybg) behavior

Wayfire version
0.7.0 and 0.7.1 releases, tested with both wlroots 0.12 and 0.13

EE 01-05-21 18:53:38.620 - [src/core/output-layout.cpp:467] disabling output: DP-1
II 01-05-21 18:53:38.620 - [src/core/output-layout.cpp:140] transfer views from DP-1 -> NOOP-1
EE 01-05-21 18:53:38.621 - [src/main.cpp:141] Fatal error: Segmentation fault
EE 01-05-21 18:53:38.679 - WayfireWM/wayfire#1  signal_handler(int) ../src/main.cpp:143
EE 01-05-21 18:53:38.687 - WayfireWM/wayfire#2  killpg ??:?
EE 01-05-21 18:53:38.738 - WayfireWM/wayfire#3  std::__uniq_ptr_impl<wf::touch_interface_t, std::default_delete<wf::touch_interface_t> >::_M_ptr() const /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/unique_ptr.h:173
EE 01-05-21 18:53:38.788 - WayfireWM/wayfire#4  std::unique_ptr<wf::touch_interface_t, std::default_delete<wf::touch_interface_t> >::get() const /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/unique_ptr.h:422
EE 01-05-21 18:53:38.838 - WayfireWM/wayfire#5  std::unique_ptr<wf::touch_interface_t, std::default_delete<wf::touch_interface_t> >::operator->() const /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/unique_ptr.h:417
EE 01-05-21 18:53:38.889 - WayfireWM/wayfire#6  wf::compositor_core_impl_t::add_touch_gesture(nonstd::observer_ptr<wf::touch::gesture_t>) ../src/core/core.cpp:481
EE 01-05-21 18:53:38.900 - WayfireWM/wayfire#7  wayfire_background_view::fini() ../src/background-view.cpp:199
EE 01-05-21 18:53:38.948 - WayfireWM/wayfire#8  plugin_manager::destroy_plugin(std::unique_ptr<wf::plugin_interface_t, std::default_delete<wf::plugin_interface_t> >&) ../src/output/plugin-loader.cpp:67
EE 01-05-21 18:53:38.996 - WayfireWM/wayfire#9  plugin_manager::deinit_plugins(bool) ../src/output/plugin-loader.cpp:42
EE 01-05-21 18:53:39.046 - WayfireWM/wayfire#10 plugin_manager::~plugin_manager() ../src/output/plugin-loader.cpp:51
EE 01-05-21 18:53:39.098 - WayfireWM/wayfire#11 std::default_delete<plugin_manager>::operator()(plugin_manager*) const /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/unique_ptr.h:85 (discriminator 1)
EE 01-05-21 18:53:39.151 - WayfireWM/wayfire#12 std::__uniq_ptr_impl<plugin_manager, std::default_delete<plugin_manager> >::reset(plugin_manager*) /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/unique_ptr.h:183
EE 01-05-21 18:53:39.207 - WayfireWM/wayfire#13 std::unique_ptr<plugin_manager, std::default_delete<plugin_manager> >::reset(plugin_manager*) /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/unique_ptr.h:457
EE 01-05-21 18:53:39.265 - WayfireWM/wayfire#14 wf::output_impl_t::~output_impl_t() ../src/output/output.cpp:142
EE 01-05-21 18:53:39.323 - WayfireWM/wayfire#15 wf::output_impl_t::~output_impl_t() ../src/output/output.cpp:143
EE 01-05-21 18:53:39.372 - WayfireWM/wayfire#16 std::default_delete<wf::output_impl_t>::operator()(wf::output_impl_t*) const /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/unique_ptr.h:86
EE 01-05-21 18:53:39.421 - WayfireWM/wayfire#17 std::__uniq_ptr_impl<wf::output_impl_t, std::default_delete<wf::output_impl_t> >::reset(wf::output_impl_t*) /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/unique_ptr.h:183
EE 01-05-21 18:53:39.476 - WayfireWM/wayfire#18 std::unique_ptr<wf::output_impl_t, std::default_delete<wf::output_impl_t> >::reset(wf::output_impl_t*) /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/unique_ptr.h:457
EE 01-05-21 18:53:39.529 - WayfireWM/wayfire#19 std::unique_ptr<wf::output_impl_t, std::default_delete<wf::output_impl_t> >::operator=(decltype(nullptr)) /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/unique_ptr.h:398
EE 01-05-21 18:53:39.583 - WayfireWM/wayfire#20 wf::output_layout_output_t::destroy_wayfire_output() ../src/core/output-layout.cpp:470 (discriminator 4)
EE 01-05-21 18:53:39.637 - WayfireWM/wayfire#21 wf::output_layout_output_t::apply_state(wf::output_state_t const&) ../src/core/output-layout.cpp:793
EE 01-05-21 18:53:39.693 - WayfireWM/wayfire#22 wf::output_layout_t::impl::apply_configuration(std::map<wlr_output*, wf::output_state_t, std::less<wlr_output*>, std::allocator<std::pair<wlr_output* const, wf::output_state_t> > > const&) ../src/core/output-layout.cpp:1307
EE 01-05-21 18:53:39.745 - WayfireWM/wayfire#23 wf::output_layout_t::impl::remove_output(wlr_output*) ../src/core/output-layout.cpp:1041
EE 01-05-21 18:53:39.795 - WayfireWM/wayfire#24 wf::output_layout_t::impl::add_output(wlr_output*)::{lambda(void*)#1}::operator()(void*) const ../src/core/output-layout.cpp:1026
EE 01-05-21 18:53:39.847 - WayfireWM/wayfire#25 void std::__invoke_impl<void, wf::output_layout_t::impl::add_output(wlr_output*)::{lambda(void*)#1}&, void*>(std::__invoke_other, wf::output_layout_t::impl::add_output(wlr_output*)::{lambda(void*)#1}&, void*&&) /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/invoke.h:60
EE 01-05-21 18:53:39.898 - WayfireWM/wayfire#26 ...) /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/invoke.h:116
EE 01-05-21 18:53:39.948 - WayfireWM/wayfire#27 std::_Function_handler<void (void*), wf::output_layout_t::impl::add_output(wlr_output*)::{lambda(void*)#1}>::_M_invoke(std::_Any_data const&, void*&&) /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/std_function.h:292
EE 01-05-21 18:53:39.988 - WayfireWM/wayfire#28 std::function<void (void*)>::operator()(void*) const /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/std_function.h:622
EE 01-05-21 18:53:40.030 - WayfireWM/wayfire#29 wf::wl_listener_wrapper::emit(void*) ../src/util.cpp:524
EE 01-05-21 18:53:40.067 - WayfireWM/wayfire#30 handle_wrapped_listener(wl_listener*, void*) ../src/util.cpp:460
EE 01-05-21 18:53:40.083 - WayfireWM/wayfire#31 wlr_signal_emit_safe ../subprojects/wlroots/util/signal.c:22
EE 01-05-21 18:53:40.099 - WayfireWM/wayfire#32 wlr_output_destroy ../subprojects/wlroots/types/wlr_output.c:384
EE 01-05-21 18:53:40.111 - WayfireWM/wayfire#33 disconnect_drm_connector ../subprojects/wlroots/backend/drm/drm.c:1568
EE 01-05-21 18:53:40.122 - WayfireWM/wayfire#34 scan_drm_connectors ../subprojects/wlroots/backend/drm/drm.c:1407
EE 01-05-21 18:53:40.133 - WayfireWM/wayfire#35 handle_dev_change ../subprojects/wlroots/backend/drm/backend.c:132
EE 01-05-21 18:53:40.146 - WayfireWM/wayfire#36 wlr_signal_emit_safe ../subprojects/wlroots/util/signal.c:22
EE 01-05-21 18:53:40.157 - WayfireWM/wayfire#37 udev_event ../subprojects/wlroots/backend/session/session.c:90
EE 01-05-21 18:53:40.165 - WayfireWM/wayfire#38 wl_event_loop_dispatch ??:?
EE 01-05-21 18:53:40.172 - WayfireWM/wayfire#39 wl_display_run ??:?
EE 01-05-21 18:53:40.211 - WayfireWM/wayfire#40 main ../src/main.cpp:315
EE 01-05-21 18:53:40.220 - WayfireWM/wayfire#41 __libc_start_main ??:?
EE 01-05-21 18:53:40.266 - WayfireWM/wayfire#42 _start ??:?

Wayfire crashes when editing config.ini non-atomically and plugins annotate or workspace-names are enabled

Describe the bug
Wayfire crashes when editing config.ini with nano and saving, or overwriting with cp (but works with cp; nano; mv, seems to be due to a non-atomic update).

To Reproduce

  1. Enable plug-ins annotate or workspace-names
  2. nano ~/.config/wayfire.ini
  3. Press Ctrl+O
  4. wayfire crashes, returns to SDDM

To circumvent:

cp ~/.config/wayfire.ini ~/.config/wayfire.ini2
nano ~/.config/wayfire.ini2
mv ~/.config/wayfire.ini2 ~/.config/wayfire.ini

Expected behavior

Detect when file isn't modified anymore and reload it then (kinda impossible on Linux? There's always a risk to load the file only partially if the editor somehow takes a lot of time to write the file).

Screenshots or stacktrace
wayfire-nano-crash.log

Wayfire version

git latest commit (reinstalled just now to test)

force ungrab cursor plugin

Hey there,
I just had a (For me at least) very useful idea: A plugin with a keybind to force ungrab the cursor.
I'm suggesting this because some games grab the cursor. If they end up freezing or crashing without the window closing, you end up not being able to use your cursor until that window closes.
Do you think this is useful? Are there already features like this?
Thanks!

Scale plugin makes Wayfire crash on the current master version

The error output:

terminate called after throwing an instance of 'std::runtime_error'
 what():  Bad option type: scale/interact
EE 25-11-22 03:55:36.819 - [src/main.cpp:134] Fatal error: Fatal error(SIGABRT)
EE 25-11-22 03:55:36.840 - #1  signal_handler(int) main.cpp:?
EE 25-11-22 03:55:36.852 - #2  __sigaction ??:?
EE 25-11-22 03:55:36.866 - #3  pthread_key_delete ??:?
EE 25-11-22 03:55:36.881 - #4  gsignal ??:?
EE 25-11-22 03:55:36.896 - #5  abort ??:?
EE 25-11-22 03:55:36.921 - #6  __gnu_cxx::__verbose_terminate_handler() /usr/src/debug/gcc/libstdc++-v3/libsupc++/vterminate.cc:75
EE 25-11-22 03:55:36.944 - #7  __cxxabiv1::__terminate(void (*)()) /usr/src/debug/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:48
EE 25-11-22 03:55:36.977 - #8  std::terminate() ??:?
EE 25-11-22 03:55:37.010 - #9  __cxa_throw ??:?
EE 25-11-22 03:55:37.023 - #10 scale_show_title_t::update_title_overlay_mouse() [clone .cold] scale-title-overlay.cpp:?
EE 25-11-22 03:55:37.037 - #11 scale_show_title_t::update_title_overlay_opt() ??:?
EE 25-11-22 03:55:37.055 - #12 wf::signal_connection_t::emit(wf::signal_data_t*) ??:?
EE 25-11-22 03:55:37.073 - #13 wf::signal_provider_t::emit_signal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wf::signal_data_t*) ??:?
EE 25-11-22 03:55:37.086 - #14 wayfire_scale::layout_slots(std::vector<nonstd::observer_ptr<wf::view_interface_t>, std::allocator<nonstd::observer_ptr<wf::view_interface_t> > >) ??:?
EE 25-11-22 03:55:37.100 - #15 wayfire_scale::activate() ??:?
EE 25-11-22 03:55:37.112 - #16 std::_Function_handler<bool (wf::activator_data_t const&), wayfire_scale::toggle_cb::{lambda(auto:1)#1}>::_M_invoke(std::_Any_data const&, wf::activator_data_t const&) ??:?
EE 25-11-22 03:55:37.128 - #17 std::_Function_handler<void (unsigned int), wf::hotspot_manager_t::update_hotspots(std::vector<std::unique_ptr<wf::output_binding_t<wf::activatorbinding_t, std::function<bool (wf::activator_data_t const&)> >, std::default_delete<wf::output_binding_t<wf::activatorbinding_t, std::function<bool (wf::activator_data_t const&)> > > >, std::allocator<std::unique_ptr<wf::output_binding_t<wf::activatorbinding_t, std::function<bool (wf::activator_data_t const&)> >, std::default_delete<wf::output_binding_t<wf::activatorbinding_t, std::function<bool (wf::activator_data_t const&)> > > > > > const&)::{lambda(unsigned int)#1}>::_M_invoke(std::_Any_data const&, unsigned int&&) hotspot-manager.cpp:?
EE 25-11-22 03:55:37.145 - #18 std::_Function_handler<bool (), wf::hotspot_instance_t::process_input_motion(wf::point_t)::{lambda()#1}>::_M_invoke(std::_Any_data const&) hotspot-manager.cpp:?
EE 25-11-22 03:55:37.164 - #19 wf::hotspot_instance_t::process_input_motion(wf::point_t) ??:?
EE 25-11-22 03:55:37.183 - #20 wf::signal_connection_t::emit(wf::signal_data_t*) ??:?
EE 25-11-22 03:55:37.201 - #21 wf::signal_provider_t::emit_signal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wf::signal_data_t*) ??:?
EE 25-11-22 03:55:37.221 - #22 wf::input_event_processing_mode_t emit_device_event_signal<wlr_pointer_motion_event>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wlr_pointer_motion_event*) ??:?
EE 25-11-22 03:55:37.240 - #23 std::_Function_handler<void (void*), wf::cursor_t::setup_listeners()::{lambda(void*)#3}>::_M_invoke(std::_Any_data const&, void*&&) cursor.cpp:?
EE 25-11-22 03:55:37.258 - #24 wf::handle_wrapped_listener(wl_listener*, void*) util.cpp:?
EE 25-11-22 03:55:37.271 - #25 wl_signal_emit_mutable ??:?
EE 25-11-22 03:55:37.285 - #26 wl_signal_emit_mutable ??:?
EE 25-11-22 03:55:37.298 - #27 relative_pointer_handle_relative_motion pointer.c:?
EE 25-11-22 03:55:37.311 - #28 ffi_prep_go_closure ??:?
EE 25-11-22 03:55:37.326 - #29 ?? ??:0
EE 25-11-22 03:55:37.338 - #30 ffi_call ??:?
EE 25-11-22 03:55:37.350 - #31 ?? ??:0
EE 25-11-22 03:55:37.364 - #32 wl_list_remove ??:?
EE 25-11-22 03:55:37.377 - #33 wl_display_dispatch_queue_pending ??:?
EE 25-11-22 03:55:37.390 - #34 dispatch_events backend.c:?
EE 25-11-22 03:55:37.403 - #35 wl_event_loop_dispatch ??:?
EE 25-11-22 03:55:37.416 - #36 wl_display_run ??:?
EE 25-11-22 03:55:37.433 - #37 main ??:?
EE 25-11-22 03:55:37.449 - #38 __libc_init_first ??:?
EE 25-11-22 03:55:37.462 - #39 __libc_start_main ??:?
EE 25-11-22 03:55:37.482 - #40 _start ../sysdeps/x86_64/start.S:117
(EE) failed to read Wayland events: Broken pipe

XKill Alternative

Hey there,
I really enjoyed using xKill, when I was on kde, but now on wayfire, this is no longer available. I would be really happy, if this could be ported to and integrated into wayfire!
Thanks!

Integer scaling

I play a lot of old games. The windows of these old games are beyond tiny on any sufficiently modern display. Some allow changing the window size, but doing so while keeping the aspect ratio is hard (I used xdotool previously for this), and often they end up with filtering (blur) when ideally there would be none (if it's a pixellated game.)

Since wayland doesn't have a lot of the limitations of X11 with how windows are handled (it's all just composited layers), integer scaling via a transform should be possible.

To be clear, I'm not talking about resizing the window. I'm talking about applying a transformation to render the window larger, preferably with configurable filtering.

(I tried to implement a plugin myself by adding a transformer, but it's crashy and I have no idea how to properly handle damage with this, so I'm opening an issue instead. Also, despite the title, this has nothing to do with the scale plugin.)

[Feature] Tag windows to multiple named workspaces

So instead of moving a window to a particular workspace, you tag it with the workspace's name and it appears on all the workspaces it's tagged to.

This naturally implies named workspaces.

Windows could be tagged by calling a program that would tag the focused window.

Allow settting workspace name on the fly, reveal workspace names in expo.

Feature request:

I would like to be able to set the current workspace name on the fly. That is, hit a magic key combo which displays an input field in which I can type a string.

The rationale for this is that I typically work with separate 'topics' in each workspace. Some of these topics are highly dynamic in nature:

  • debug networking issue at location X
  • debug networking issue at location Y
  • configure gear for location Z
  • create report 99 for issue at ZZ
  • create script for generic task TT
  • update database for application AA

and so on. During the day, it is hard to keep track of what I currently do in which workspace. Being able to assign these workspace-names on the fly and then reveal all of them with expo would make for a slightly less frantic behavior when switching between tasks.

Thank you very much for wayfire.

V7 branch does not compile

Hey there,
I am having trouble compiling the v7 branch, I always just get this error:

FAILED: src/libmag.so.p/mag.cpp.o
../src/mag.cpp: In lambda function:
../src/mag.cpp:178:14: error: ‘wlr_output_export_dmabuf’ was not declared in this scope; did you mean ‘wlr_output_event_damage’?
  178 |         if (!wlr_output_export_dmabuf(output->handle, &dmabuf_attribs))
      |              ^~~~~~~~~~~~~~~~~~~~~~~~
      |              wlr_output_event_damage
[28/37] Compiling C++ object src/libworkspace-names.so.p/workspace-names.cpp.o
ninja: build stopped: subcommand failed.

I can't build master because I got some packages depending on wayfire, wayfire-git doesn't seem to be an option for those (I installed wayfire from the arch repos)
Are you able to fix this, or is that a problem on my side?
Thanks!

Build error with latest commit

../src/autorotate-iio.cpp:75:5: error: could not convert ‘<lambda closure object>WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>{((WayfireAutorotateIIO*)this)}’ from ‘WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>’ to ‘activator_callback’ {aka ‘std::function<bool(wf_activator_source, unsigned int)>’}
   75 |     };
      |     ^
      |     |
      |     WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>
../src/autorotate-iio.cpp:78:5: error: could not convert ‘<lambda closure object>WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>{((WayfireAutorotateIIO*)this)}’ from ‘WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>’ to ‘activator_callback’ {aka ‘std::function<bool(wf_activator_source, unsigned int)>’}
   78 |     };
      |     ^
      |     |
      |     WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>
../src/autorotate-iio.cpp:81:5: error: could not convert ‘<lambda closure object>WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>{((WayfireAutorotateIIO*)this)}’ from ‘WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>’ to ‘activator_callback’ {aka ‘std::function<bool(wf_activator_source, unsigned int)>’}
   81 |     };
      |     ^
      |     |
      |     WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>
../src/autorotate-iio.cpp:84:5: error: could not convert ‘<lambda closure object>WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>{((WayfireAutorotateIIO*)this)}’ from ‘WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>’ to ‘activator_callback’ {aka ‘std::function<bool(wf_activator_source, unsigned int)>’}
   84 |     };
      |     ^
      |     |
      |     WayfireAutorotateIIO::<lambda(wf_activator_source, int32_t)>

Fails to build with 2021-11-14 snapshot

Regressed by wlroots@76bab68. From error log:

src/mag.cpp:178:14: error: use of undeclared identifier 'wlr_output_export_dmabuf'; did you mean 'wlr_output_event_damage'?
        if (!wlr_output_export_dmabuf(output->handle, &dmabuf_attribs))
             ^
/usr/include/wlr/types/wlr_output.h:195:8: note: 'wlr_output_event_damage' declared here
struct wlr_output_event_damage {
       ^

fails to build on gentoo...

after editing wayfire::gentoo from 0.7.2 to 0.7.3::local-repo to allow wlroots-0.15.x,
wayfire-plugins-extra build returns:

[32/43] x86_64-pc-linux-gnu-g++ -Isrc/libview-shot.so.p -Isrc -I../wayfire-plugins-extra-9999/src -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/lib64/libffi/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/uuid -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libdrm -I/usr/include/elogind -I/usr/include/libevdev-1.0 -I/usr/include/libxml2 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -std=c++17 -DWLR_USE_UNSTABLE -DWAYFIRE_PLUGIN -Wno-unused-parameter -march=skylake -O2 -pipe -Wa,-mbranches-within-32B-boundaries -fPIC -pthread -MD -MQ src/libview-shot.so.p/view-shot.cpp.o -MF src/libview-shot.so.p/view-shot.cpp.o.d -o src/libview-shot.so.p/view-shot.cpp.o -c ../wayfire-plugins-extra-9999/src/view-shot.cpp
FAILED: src/libview-shot.so.p/view-shot.cpp.o 
x86_64-pc-linux-gnu-g++ -Isrc/libview-shot.so.p -Isrc -I../wayfire-plugins-extra-9999/src -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/lib64/libffi/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/uuid -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libdrm -I/usr/include/elogind -I/usr/include/libevdev-1.0 -I/usr/include/libxml2 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -std=c++17 -DWLR_USE_UNSTABLE -DWAYFIRE_PLUGIN -Wno-unused-parameter -march=skylake -O2 -pipe -Wa,-mbranches-within-32B-boundaries -fPIC -pthread -MD -MQ src/libview-shot.so.p/view-shot.cpp.o -MF src/libview-shot.so.p/view-shot.cpp.o.d -o src/libview-shot.so.p/view-shot.cpp.o -c ../wayfire-plugins-extra-9999/src/view-shot.cpp
../wayfire-plugins-extra-9999/src/view-shot.cpp: In instantiation of 'wayfire_view_shot::<lambda(auto:1)> [with auto:1 = wf::activator_data_t]':
/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.1/include/g++-v11/type_traits:2536:26:   required by substitution of 'template<class _Fn, class ... _Args> static std::__result_of_success<decltype (declval<_Fn>()((declval<_Args>)()...)), std::__invoke_other> std::__result_of_other_impl::_S_test(int) [with _Fn = wayfire_view_shot::<lambda(auto:1)>&; _Args = {const wf::activator_data_t&}]'
/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.1/include/g++-v11/type_traits:2547:55:   required from 'struct std::__result_of_impl<false, false, wayfire_view_shot::<lambda(auto:1)>&, const wf::activator_data_t&>'
/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.1/include/g++-v11/bits/std_function.h:348:9:   recursively required by substitution of 'template<class _Result, class _Ret> struct std::__is_invocable_impl<_Result, _Ret, false, std::__void_t<typename _CTp::type> > [with _Result = std::__invoke_result<wayfire_view_shot::<lambda(auto:1)>&, const wf::activator_data_t&>; _Ret = bool]'
/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.1/include/g++-v11/bits/std_function.h:348:9:   required from 'struct std::function<bool(const wf::activator_data_t&)>::_Callable<wayfire_view_shot::<lambda(auto:1)>, wayfire_view_shot::<lambda(auto:1)>, std::__invoke_result<wayfire_view_shot::<lambda(auto:1)>&, const wf::activator_data_t&> >'
/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.1/include/g++-v11/bits/std_function.h:353:8:   required by substitution of 'template<class _Res, class ... _ArgTypes> template<class _Cond, class _Tp> using _Requires = std::__enable_if_t<_Cond::value, _Tp> [with _Cond = std::function<bool(const wf::activator_data_t&)>::_Callable<wayfire_view_shot::<lambda(auto:1)>, wayfire_view_shot::<lambda(auto:1)>, std::__invoke_result<wayfire_view_shot::<lambda(auto:1)>&, const wf::activator_data_t&> >; _Tp = void; _Res = bool; _ArgTypes = {const wf::activator_data_t&}]'
/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.1/include/g++-v11/bits/std_function.h:434:9:   required by substitution of 'template<class _Functor, class _Constraints> std::function<bool(const wf::activator_data_t&)>::function(_Functor&&) [with _Functor = wayfire_view_shot::<lambda(auto:1)>; _Constraints = <missing>]'
../wayfire-plugins-extra-9999/src/view-shot.cpp:77:5:   required from here
../wayfire-plugins-extra-9999/src/view-shot.cpp:56:72: error: invalid initialization of reference of type 'const wf::framebuffer_t&' from expression of type 'void'
   56 |         const wf::framebuffer_t& offscreen_buffer = view->take_snapshot();
      |                                                     ~~~~~~~~~~~~~~~~~~~^~
[33/43] x86_64-pc-linux-gnu-g++ -Isrc/libwater.so.p -Isrc -I../wayfire-plugins-extra-9999/src -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/lib64/libffi/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/uuid -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libdrm -I/usr/include/elogind -I/usr/include/libevdev-1.0 -I/usr/include/libxml2 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -std=c++17 -DWLR_USE_UNSTABLE -DWAYFIRE_PLUGIN -Wno-unused-parameter -march=skylake -O2 -pipe -Wa,-mbranches-within-32B-boundaries -fPIC -pthread -MD -MQ src/libwater.so.p/water.cpp.o -MF src/libwater.so.p/water.cpp.o.d -o src/libwater.so.p/water.cpp.o -c ../wayfire-plugins-extra-9999/src/water.cpp

gcc-11.3.0 here, vulkan deactivated everywhere.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.