Giter Site home page Giter Site logo

cage's Introduction

Cage: a Wayland kiosk

Cage's logo

This is Cage, a Wayland kiosk. A kiosk runs a single, maximized application.

This README is only relevant for development resources and instructions. For a description of Cage and installation instructions for end-users, please see its project page and the Wiki.

Release signatures

Releases up to version 0.1.4 are signed with 6EBC43B1. Releases from 0.1.5 onwards are signed with E88F5E48 All releases are published on GitHub.

Building and running Cage

You can build Cage with the meson build system. It requires wayland, wlroots, and xkbcommon to be installed. Optionally, install scdoc for manual pages. Note that Cage is developed against the latest tag of wlroots, in order to not constantly chase breaking changes as soon as they occur.

Simply execute the following steps to build Cage:

$ meson build
$ ninja -C build

By default, this builds a debug build. To build a release build, use meson build --buildtype=release.

Cage comes with compile-time support for XWayland. To enable this, first make sure that your version of wlroots is compiled with this option. Then, add -Dxwayland=true to the meson command above. Note that you'll need to have the XWayland binary installed on your system for this to work.

You can run Cage by running ./build/cage APPLICATION. If you run it from within an existing X11 or Wayland session, it will open in a virtual output as a window in your existing session. If you run it at a TTY, it'll run with the KMS+DRM backend. In debug mode (default build type with Meson), press Alt+Esc to quit. For more configuration options, see Configuration.

Cage is based on the annotated source of tinywl and rootston.

Bugs

For any bug, please create an issue on GitHub.

License

Please see LICENSE on GitHub.

Copyright © 2018-2020 Jente Hidskes [email protected]

cage's People

Contributors

amateurece avatar chemicalxandco avatar daemonp avatar ddevault avatar dimkr avatar emersion avatar hjdskes avatar jantatje avatar jbeich avatar joggee-fr avatar jubalh avatar kennylevinsen avatar llunacb avatar lorenz avatar matthewbauer avatar nefsen402 avatar octopuset avatar palanixyt avatar philj56 avatar primeos avatar project-repo avatar rubenbe avatar sevz17 avatar supreeeme avatar tdaniel22 avatar travankor 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cage's Issues

Segfault on SIGTERM or SIGINT

When Cage catches a SIGTERM/SIGINT, it terminates the Wayland display:

	switch (signal) {
	case SIGINT:
		/* Fallthrough */
	case SIGTERM:
		wl_display_terminate(display);
		return 0;
	default:
		return 1;
	}

This doesn't seem like the correct way to terminate, since it can lead to Cage segfaulting:

Thread 1 "cage" received signal SIGSEGV, Segmentation fault.
0x00007ffff7ef8fb0 in wlr_backend_get_renderer (backend=0x555500000000) at ../backend/backend.c:54
54		if (backend->impl->get_renderer) {
(gdb) bt
#0  0x00007ffff7ef8fb0 in wlr_backend_get_renderer (backend=0x555500000000) at ../backend/backend.c:54
#1  0x000055555555a000 in handle_output_damage_frame (listener=0x55555556e270, data=0x55555577d1b0) at ../output.c:193
#2  0x00007ffff7f4ebae in wlr_signal_emit_safe (signal=0x55555577d210, data=0x55555577d1b0) at ../util/signal.c:29
#3  0x00007ffff7f3b6ad in output_handle_frame (listener=0x55555577d2a8, data=0x55555574d0b0) at ../types/wlr_output_damage.c:50
#4  0x00007ffff7f4ebae in wlr_signal_emit_safe (signal=0x55555574d1d0, data=0x55555574d0b0) at ../util/signal.c:29
#5  0x00007ffff7f3e672 in wlr_output_send_frame (output=0x55555574d0b0) at ../types/wlr_output.c:430
#6  0x00007ffff7f0ae12 in surface_frame_callback (data=0x55555574d0b0, cb=0x55555578bd90, time=14721512) at ../backend/wayland/output.c:36
#7  0x00007ffff7a8d6d0 in ffi_call_unix64 () at /usr/lib/libffi.so.6
#8  0x00007ffff7a8d0a0 in ffi_call () at /usr/lib/libffi.so.6
#9  0x00007ffff79acf5f in  () at /usr/lib/libwayland-client.so.0
#10 0x00007ffff79a96ca in  () at /usr/lib/libwayland-client.so.0
#11 0x00007ffff79aac0c in wl_display_dispatch_queue_pending () at /usr/lib/libwayland-client.so.0
#12 0x00007ffff7f09fd1 in dispatch_events (fd=6, mask=1, data=0x555555574750) at ../backend/wayland/backend.c:37
#13 0x00007ffff7f93702 in wl_event_loop_dispatch () at /usr/lib/libwayland-server.so.0
#14 0x00007ffff7f922ac in wl_display_run () at /usr/lib/libwayland-server.so.0
#15 0x00005555555595f4 in main (argc=2, argv=0x7fffffffdf18) at ../cage.c:281

Add support for output transform

I have tried implementing this by calling wlr_output_set_transform when the output is created, but there is obviously something else missing because although the display ends up rotated, the view appears distorted and out of place. It seems that tinywl doesn't implements the missing bits either, but rootston does, and I couldn't figure out what it is.

I would be happy to send a patch with some guidance.

Mouse cursor dissapears when Cage is launched inside an X11 session

Manjaro Linux Cinnamon
cage-git r20.a9818c0
wayland 1.16.0
wlroots-git 0.2.r65.ge2c216a4
libxkbcommon 0.8.2

When running an application in my current X11 session, it loads a blank wlroots-X11 window, then the application appears to open normally.

When running it from a TTY, it loads the blank wlroots-X11 display and the application is nowhere to be seen. I tried both Firefox & Brave with the same result.

$ cage firefox
2018-12-30 17:22:08 - [render/egl.c:149] Using EGL 1.5
2018-12-30 17:22:08 - [render/egl.c:150] Supported EGL extensions: EGL_CHROMIUM_sync_control EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_NOK_texture_from_pixmap EGL_WL_bind_wayland_display 
2018-12-30 17:22:08 - [render/egl.c:151] EGL vendor: Mesa Project
2018-12-30 17:22:08 - [render/gles2/renderer.c:553] Using OpenGL ES 3.1 Mesa 18.2.6
2018-12-30 17:22:08 - [render/gles2/renderer.c:554] GL vendor: X.Org
2018-12-30 17:22:08 - [render/gles2/renderer.c:555] Supported GLES2 extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays GL_EXT_texture_filter_anisotropic GL_EXT_occlusion_query_boolean GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_EXT_texture_sRGB_decode GL_OES_EGL_image GL_OES_depth_texture GL_AMD_performance_monitor GL_OES_packed_depth_stencil GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary GL_APPLE_texture_max_level GL_EXT_discard_framebuffer GL_EXT_read_format_bgra GL_EXT_frag_depth GL_NV_fbo_color_attachments GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_array_object GL_OES_viewport_array GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_EXT_robustness GL_EXT_texture_rg GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers GL_EXT_map_buffer_range GL_KHR_debug GL_KHR_robustness GL_KHR_texture_compression_astc_ldr GL_OES_depth_texture_cube_map GL_OES_required_internalformat GL_OES_surfaceless_context GL_EXT_color_buffer_float GL_EXT_separate_shader_objects GL_EXT_shader_integer_mix GL_EXT_tessellation_point_size GL_EXT_tessellation_shader GL_EXT_base_instance GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_copy_image GL_EXT_draw_buffers_indexed GL_EXT_draw_elements_base_vertex GL_EXT_gpu_shader5 GL_EXT_polygon_offset_clamp GL_EXT_primitive_bounding_box GL_EXT_shader_io_blocks GL_EXT_texture_border_clamp GL_EXT_texture_buffer GL_EXT_texture_cube_map_array GL_EXT_texture_norm16 GL_KHR_context_flush_control GL_KHR_robust_buffer_access_behavior GL_NV_image_formats GL_OES_copy_image GL_OES_draw_buffers_indexed GL_OES_draw_elements_base_vertex GL_OES_gpu_shader5 GL_OES_primitive_bounding_box GL_OES_sample_shading GL_OES_sample_variables GL_OES_shader_io_blocks GL_OES_shader_multisample_interpolation GL_OES_tessellation_point_size GL_OES_tessellation_shader GL_OES_texture_border_clamp GL_OES_texture_buffer GL_OES_texture_cube_map_array GL_OES_texture_stencil8 GL_OES_texture_storage_multisample_2d_array GL_EXT_blend_func_extended GL_EXT_buffer_storage GL_EXT_geometry_point_size GL_EXT_geometry_shader GL_KHR_no_error GL_OES_EGL_image_external_essl3 GL_OES_geometry_point_size GL_OES_geometry_shader GL_OES_shader_image_atomic GL_EXT_clip_cull_distance GL_MESA_shader_integer_functions 
2018-12-30 17:22:08 - [types/wlr_output.c:745] Falling back to software cursor on output 'X11-1'
2018-12-30 17:22:08 - [cage.c:43] Child process created with pid 6176

###!!! [Child][MessageChannel] Error: (msgtype=0x300113,name=PContent::Msg_AsyncMessage) Channel closing: too late to send/recv, messages will be lost

Cage does not work with Firefox

Firefox Nightly (GDK_BACKEND=wayland ./build/cage firefox-nightly) output (with xcursor logs removed, they're irrelevant):

2019-01-04 19:11:32 - [backend/session/logind.c:542] Successfully loaded logind session
2019-01-04 19:11:32 - [backend/backend.c:142] Found 1 GPUs
2019-01-04 19:11:32 - [backend/drm/backend.c:151] Initializing DRM backend for /dev/dri/card0 (i915)
2019-01-04 19:11:32 - [backend/drm/drm.c:63] Using atomic DRM interface
2019-01-04 19:11:32 - [backend/drm/drm.c:156] Found 3 DRM CRTCs
2019-01-04 19:11:32 - [backend/drm/drm.c:87] Found 9 DRM planes
2019-01-04 19:11:32 - [backend/drm/drm.c:129] (3 overlay, 3 primary, 3 cursor)
2019-01-04 19:11:32 - [render/egl.c:149] Using EGL 1.4
2019-01-04 19:11:32 - [render/egl.c:150] Supported EGL extensions: EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_IMG_context_priority EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_WL_bind_wayland_display 
2019-01-04 19:11:32 - [render/egl.c:151] EGL vendor: Mesa Project
2019-01-04 19:11:32 - [render/egl.c:97] Supported dmabuf buffer formats: AR30 XR30 AB30 XB30 AR24 AB24 XR24 XB24 AR15 RG16 R8   R16  GR88 GR32 YUV9 YU11 YU12 YU16 YU24 YVU9 YV11 YV12 YV16 YV24 NV12 NV16 YUYV UYVY 
2019-01-04 19:11:32 - [render/egl.c:217] Failed to obtain a high priority context
2019-01-04 19:11:32 - [render/gles2/renderer.c:553] Using OpenGL ES 3.2 Mesa 18.3.1
2019-01-04 19:11:32 - [render/gles2/renderer.c:554] GL vendor: Intel Open Source Technology Center
2019-01-04 19:11:32 - [render/gles2/renderer.c:555] Supported GLES2 extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays GL_EXT_texture_filter_anisotropic GL_EXT_texture_compression_s3tc GL_EXT_occlusion_query_boolean GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_EXT_texture_sRGB_decode GL_OES_EGL_image GL_OES_depth_texture GL_OES_packed_depth_stencil GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary GL_APPLE_texture_max_level GL_EXT_discard_framebuffer GL_EXT_read_format_bgra GL_EXT_frag_depth GL_NV_fbo_color_attachments GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_array_object GL_OES_viewport_array GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_EXT_robustness GL_EXT_texture_rg GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers GL_EXT_map_buffer_range GL_KHR_debug GL_KHR_robustness GL_KHR_texture_compression_astc_ldr GL_OES_depth_texture_cube_map GL_OES_required_internalformat GL_OES_surfaceless_context GL_EXT_color_buffer_float GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_integer_mix GL_EXT_tessellation_point_size GL_EXT_tessellation_shader GL_INTEL_conservative_rasterization GL_INTEL_performance_query GL_ANDROID_extension_pack_es31a GL_EXT_base_instance GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_copy_image GL_EXT_draw_buffers_indexed GL_EXT_draw_elements_base_vertex GL_EXT_gpu_shader5 GL_EXT_polygon_offset_clamp GL_EXT_primitive_bounding_box GL_EXT_render_snorm GL_EXT_shader_io_blocks GL_EXT_texture_border_clamp GL_EXT_texture_buffer GL_EXT_texture_cube_map_array GL_EXT_texture_norm16 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_KHR_context_flush_control GL_KHR_robust_buffer_access_behavior GL_NV_image_formats GL_OES_copy_image GL_OES_draw_buffers_indexed GL_OES_draw_elements_base_vertex GL_OES_gpu_shader5 GL_OES_primitive_bounding_box GL_OES_sample_shading GL_OES_sample_variables GL_OES_shader_io_blocks GL_OES_shader_multisample_interpolation GL_OES_tessellation_point_size GL_OES_tessellation_shader GL_OES_texture_border_clamp GL_OES_texture_buffer GL_OES_texture_cube_map_array GL_OES_texture_stencil8 GL_OES_texture_storage_multisample_2d_array GL_OES_texture_view GL_EXT_blend_func_extended GL_EXT_buffer_storage GL_EXT_geometry_point_size GL_EXT_geometry_shader GL_EXT_shader_samples_identical GL_KHR_no_error GL_KHR_texture_compression_astc_sliced_3d GL_NV_fragment_shader_interlock GL_OES_EGL_image_external_essl3 GL_OES_geometry_point_size GL_OES_geometry_shader GL_OES_shader_image_atomic GL_EXT_clip_cull_distance GL_EXT_disjoint_timer_query GL_MESA_shader_integer_functions GL_EXT_shader_framebuffer_fetch_non_coherent GL_MESA_framebuffer_flip_y 
unable to lock lockfile /run/user/1000/wayland-0.lock, maybe another compositor is running
2019-01-04 19:11:32 - [backend/drm/drm.c:1042] Scanning DRM connectors
2019-01-04 19:11:32 - [backend/drm/drm.c:1105] Found connector 'eDP-1'
2019-01-04 19:11:32 - [backend/drm/drm.c:1141] 'eDP-1' connected
2019-01-04 19:11:32 - [backend/drm/drm.c:1143] Current CRTC: 41
2019-01-04 19:11:32 - [backend/drm/drm.c:1148] Physical size: 290x170
2019-01-04 19:11:32 - [backend/drm/drm.c:1159] Detected modes:
2019-01-04 19:11:32 - [backend/drm/drm.c:1180]   1920x1080@60020
2019-01-04 19:11:32 - [backend/drm/drm.c:1180]   1920x1080@40015
2019-01-04 19:11:32 - [backend/drm/drm.c:1105] Found connector 'DP-1'
2019-01-04 19:11:32 - [backend/drm/drm.c:1105] Found connector 'DP-2'
2019-01-04 19:11:32 - [backend/drm/drm.c:885] Reallocating CRTCs
2019-01-04 19:11:32 - [backend/drm/drm.c:897] State before reallocation:
2019-01-04 19:11:32 - [backend/drm/drm.c:907]   'eDP-1' crtc=0 state=1 desired_enabled=1
2019-01-04 19:11:32 - [backend/drm/drm.c:907]   'DP-1' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:11:32 - [backend/drm/drm.c:907]   'DP-2' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:11:32 - [backend/drm/drm.c:968] State after reallocation:
2019-01-04 19:11:32 - [backend/drm/drm.c:973]   'eDP-1' crtc=0 state=1 desired_enabled=1
2019-01-04 19:11:32 - [backend/drm/drm.c:973]   'DP-1' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:11:32 - [backend/drm/drm.c:973]   'DP-2' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:11:32 - [backend/drm/drm.c:446] Reallocating planes
2019-01-04 19:11:32 - [backend/drm/drm.c:491] Assigning plane -1 -> 33 (type 0) to CRTC 41
2019-01-04 19:11:32 - [backend/drm/drm.c:491] Assigning plane -1 -> 28 (type 1) to CRTC 41
2019-01-04 19:11:32 - [backend/drm/drm.c:491] Assigning plane -1 -> 38 (type 2) to CRTC 41
2019-01-04 19:11:32 - [backend/drm/drm.c:1255] Requesting modeset for 'eDP-1'
2019-01-04 19:11:32 - [backend/drm/drm.c:526] Modesetting 'eDP-1' with '1920x1080@60020 mHz'
2019-01-04 19:11:32 - [backend/drm/drm.c:357] Starting renderer on output 'eDP-1'
2019-01-04 19:11:32 - [GLES2] FS SIMD8 shader: 5 inst, 0 loops, 24 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 80 to 48 bytes.
2019-01-04 19:11:32 - [GLES2] FS SIMD16 shader: 5 inst, 0 loops, 34 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 80 to 48 bytes.
2019-01-04 19:11:32 - [GLES2] VS SIMD8 shader: 28 inst, 0 loops, 116 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 448 to 336 bytes.
2019-01-04 19:11:32 - [GLES2] FS SIMD16 shader: 2 inst, 0 loops, 0 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 32 to 32 bytes.
2019-01-04 19:11:32 - [backend/libinput/backend.c:55] Initializing libinput
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added Power Button [0:1]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added Video Bus [0:6]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added Power Button [0:1]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added Lid Switch [0:5]
2019-01-04 19:11:32 - [backend/libinput/switch.c:20] Created switch for device Lid Switch
2019-01-04 19:11:32 - [seat.c:324] Switch input is not implemented
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse [1133:49282]
2019-01-04 19:11:32 - [GLES2] FS SIMD8 shader: 14 inst, 0 loops, 308 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 224 to 160 bytes.
2019-01-04 19:11:32 - [GLES2] FS SIMD16 shader: 14 inst, 0 loops, 322 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 224 to 160 bytes.
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse Keyboard [1133:49282]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse Consumer Control [1133:49282]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse System Control [1133:49282]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added HP Wide Vision HD Camera: HP Wi [3034:22048]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added HDA Intel PCH Mic [0:0]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added HDA Intel PCH Headphone [0:0]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=3 [0:0]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=7 [0:0]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=8 [0:0]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=9 [0:0]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=10 [0:0]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added AT Translated Set 2 keyboard [1:1]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added SynPS/2 Synaptics TouchPad [2:7]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added HP Wireless hotkeys [0:0]
2019-01-04 19:11:32 - [backend/libinput/events.c:94] Added HP WMI hotkeys [0:0]
2019-01-04 19:11:32 - [backend/libinput/backend.c:101] libinput successfully initialized
2019-01-04 19:11:32 - [cage.c:54] Child process created with pid 3087
2019-01-04 19:11:32 - [xwayland/xwayland.c:103] WAYLAND_SOCKET=16 Xwayland :1 -rootless -terminate -listen 14 -listen 15 -wm 50
glamor: No eglstream capable devices found
2019-01-04 19:11:32 - [types/wlr_surface.c:595] New wlr_surface 0x556a6eda53c0 (res 0x556a6ed9d6c0)
2019-01-04 19:11:32 - [types/wlr_surface.c:595] New wlr_surface 0x556a6eda7bb0 (res 0x556a6ed9eb90)
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported high keycode 372 for name <I372> ignored
>                   X11 cannot support keycodes above 255.
>                   This warning only shows for the first high keycode.
Errors from xkbcomp are not fatal to the X server
2019-01-04 19:11:33 - [types/wlr_surface.c:595] New wlr_surface 0x556a6eda7ed0 (res 0x556a6eda9df0)
2019-01-04 19:11:33 - [xwayland/xwayland.c:352] sent SIGUSR1 to process 3085
2019-01-04 19:11:33 - [xwayland/xwayland.c:243] Xserver is ready
2019-01-04 19:11:33 - [xwayland/xwm.c:1483] xfixes version: 5.0
2019-01-04 19:11:33 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (924)
2019-01-04 19:11:33 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (924)
2019-01-04 19:11:33 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (2097153)
2019-01-04 19:11:33 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (2097154)
2019-01-04 19:11:33 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (2097154)
2019-01-04 19:11:33 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (2097155)
2019-01-04 19:11:33 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (924)
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported maximum keycode 374, clipping.
>                   X11 cannot support keycodes above 255.
> Warning:          Unsupported high keycode 372 for name <I372> ignored
>                   X11 cannot support keycodes above 255.
>                   This warning only shows for the first high keycode.
Errors from xkbcomp are not fatal to the X server
2019-01-04 19:11:33 - [xwayland/xwm.c:1247] unhandled X11 event: MappingNotify (34)
2019-01-04 19:11:33 - [xwayland/xwm.c:1247] unhandled X11 event: MappingNotify (34)
2019-01-04 19:11:33 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (4194306)
2019-01-04 19:11:33 - [xwayland/xwm.c:806] XCB_DESTROY_NOTIFY (4194306)
2019-01-04 19:11:33 - [xwayland/xwayland.c:206] Restarting Xwayland (lazy)
(EE) failed to read Wayland events: Broken pipe
ExceptionHandler::GenerateDump cloned child 3128
ExceptionHandler::SendContinueSignalToChild sent continue signal to child
ExceptionHandler::WaitForContinueSignal waiting for continue signal...
2019-01-04 19:11:38 - [backend/drm/drm.c:1405] Emitting destruction signal for 'eDP-1'
2019-01-04 19:11:38 - [backend/drm/drm.c:855] De-allocating CRTC 0 for output 'eDP-1'

Firefox 64.0 (./build/cage firefox) output:

2019-01-04 19:14:55 - [backend/session/logind.c:542] Successfully loaded logind session
2019-01-04 19:14:55 - [backend/backend.c:142] Found 1 GPUs
2019-01-04 19:14:55 - [backend/drm/backend.c:151] Initializing DRM backend for /dev/dri/card0 (i915)
2019-01-04 19:14:55 - [backend/drm/drm.c:63] Using atomic DRM interface
2019-01-04 19:14:55 - [backend/drm/drm.c:156] Found 3 DRM CRTCs
2019-01-04 19:14:55 - [backend/drm/drm.c:87] Found 9 DRM planes
2019-01-04 19:14:55 - [backend/drm/drm.c:129] (3 overlay, 3 primary, 3 cursor)
2019-01-04 19:14:55 - [render/egl.c:149] Using EGL 1.4
2019-01-04 19:14:55 - [render/egl.c:150] Supported EGL extensions: EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_IMG_context_priority EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_WL_bind_wayland_display 
2019-01-04 19:14:55 - [render/egl.c:151] EGL vendor: Mesa Project
2019-01-04 19:14:55 - [render/egl.c:97] Supported dmabuf buffer formats: AR30 XR30 AB30 XB30 AR24 AB24 XR24 XB24 AR15 RG16 R8   R16  GR88 GR32 YUV9 YU11 YU12 YU16 YU24 YVU9 YV11 YV12 YV16 YV24 NV12 NV16 YUYV UYVY 
2019-01-04 19:14:55 - [render/egl.c:217] Failed to obtain a high priority context
2019-01-04 19:14:55 - [render/gles2/renderer.c:553] Using OpenGL ES 3.2 Mesa 18.3.1
2019-01-04 19:14:55 - [render/gles2/renderer.c:554] GL vendor: Intel Open Source Technology Center
2019-01-04 19:14:55 - [render/gles2/renderer.c:555] Supported GLES2 extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays GL_EXT_texture_filter_anisotropic GL_EXT_texture_compression_s3tc GL_EXT_occlusion_query_boolean GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_EXT_texture_sRGB_decode GL_OES_EGL_image GL_OES_depth_texture GL_OES_packed_depth_stencil GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary GL_APPLE_texture_max_level GL_EXT_discard_framebuffer GL_EXT_read_format_bgra GL_EXT_frag_depth GL_NV_fbo_color_attachments GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_array_object GL_OES_viewport_array GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_EXT_robustness GL_EXT_texture_rg GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers GL_EXT_map_buffer_range GL_KHR_debug GL_KHR_robustness GL_KHR_texture_compression_astc_ldr GL_OES_depth_texture_cube_map GL_OES_required_internalformat GL_OES_surfaceless_context GL_EXT_color_buffer_float GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_integer_mix GL_EXT_tessellation_point_size GL_EXT_tessellation_shader GL_INTEL_conservative_rasterization GL_INTEL_performance_query GL_ANDROID_extension_pack_es31a GL_EXT_base_instance GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_copy_image GL_EXT_draw_buffers_indexed GL_EXT_draw_elements_base_vertex GL_EXT_gpu_shader5 GL_EXT_polygon_offset_clamp GL_EXT_primitive_bounding_box GL_EXT_render_snorm GL_EXT_shader_io_blocks GL_EXT_texture_border_clamp GL_EXT_texture_buffer GL_EXT_texture_cube_map_array GL_EXT_texture_norm16 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_KHR_context_flush_control GL_KHR_robust_buffer_access_behavior GL_NV_image_formats GL_OES_copy_image GL_OES_draw_buffers_indexed GL_OES_draw_elements_base_vertex GL_OES_gpu_shader5 GL_OES_primitive_bounding_box GL_OES_sample_shading GL_OES_sample_variables GL_OES_shader_io_blocks GL_OES_shader_multisample_interpolation GL_OES_tessellation_point_size GL_OES_tessellation_shader GL_OES_texture_border_clamp GL_OES_texture_buffer GL_OES_texture_cube_map_array GL_OES_texture_stencil8 GL_OES_texture_storage_multisample_2d_array GL_OES_texture_view GL_EXT_blend_func_extended GL_EXT_buffer_storage GL_EXT_geometry_point_size GL_EXT_geometry_shader GL_EXT_shader_samples_identical GL_KHR_no_error GL_KHR_texture_compression_astc_sliced_3d GL_NV_fragment_shader_interlock GL_OES_EGL_image_external_essl3 GL_OES_geometry_point_size GL_OES_geometry_shader GL_OES_shader_image_atomic GL_EXT_clip_cull_distance GL_EXT_disjoint_timer_query GL_MESA_shader_integer_functions GL_EXT_shader_framebuffer_fetch_non_coherent GL_MESA_framebuffer_flip_y 
unable to lock lockfile /run/user/1000/wayland-0.lock, maybe another compositor is running
2019-01-04 19:14:55 - [backend/drm/drm.c:1042] Scanning DRM connectors
2019-01-04 19:14:55 - [backend/drm/drm.c:1105] Found connector 'eDP-1'
2019-01-04 19:14:55 - [backend/drm/drm.c:1141] 'eDP-1' connected
2019-01-04 19:14:55 - [backend/drm/drm.c:1143] Current CRTC: 41
2019-01-04 19:14:55 - [backend/drm/drm.c:1148] Physical size: 290x170
2019-01-04 19:14:55 - [backend/drm/drm.c:1159] Detected modes:
2019-01-04 19:14:55 - [backend/drm/drm.c:1180]   1920x1080@60020
2019-01-04 19:14:55 - [backend/drm/drm.c:1180]   1920x1080@40015
2019-01-04 19:14:55 - [backend/drm/drm.c:1105] Found connector 'DP-1'
2019-01-04 19:14:55 - [backend/drm/drm.c:1105] Found connector 'DP-2'
2019-01-04 19:14:55 - [backend/drm/drm.c:885] Reallocating CRTCs
2019-01-04 19:14:55 - [backend/drm/drm.c:897] State before reallocation:
2019-01-04 19:14:55 - [backend/drm/drm.c:907]   'eDP-1' crtc=0 state=1 desired_enabled=1
2019-01-04 19:14:55 - [backend/drm/drm.c:907]   'DP-1' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:14:55 - [backend/drm/drm.c:907]   'DP-2' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:14:55 - [backend/drm/drm.c:968] State after reallocation:
2019-01-04 19:14:55 - [backend/drm/drm.c:973]   'eDP-1' crtc=0 state=1 desired_enabled=1
2019-01-04 19:14:55 - [backend/drm/drm.c:973]   'DP-1' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:14:55 - [backend/drm/drm.c:973]   'DP-2' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:14:55 - [backend/drm/drm.c:446] Reallocating planes
2019-01-04 19:14:55 - [backend/drm/drm.c:491] Assigning plane -1 -> 33 (type 0) to CRTC 41
2019-01-04 19:14:55 - [backend/drm/drm.c:491] Assigning plane -1 -> 28 (type 1) to CRTC 41
2019-01-04 19:14:55 - [backend/drm/drm.c:491] Assigning plane -1 -> 38 (type 2) to CRTC 41
2019-01-04 19:14:55 - [backend/drm/drm.c:1255] Requesting modeset for 'eDP-1'
2019-01-04 19:14:55 - [backend/drm/drm.c:526] Modesetting 'eDP-1' with '1920x1080@60020 mHz'
2019-01-04 19:14:55 - [backend/drm/drm.c:357] Starting renderer on output 'eDP-1'
2019-01-04 19:14:55 - [GLES2] FS SIMD8 shader: 5 inst, 0 loops, 24 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 80 to 48 bytes.
2019-01-04 19:14:55 - [GLES2] FS SIMD16 shader: 5 inst, 0 loops, 34 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 80 to 48 bytes.
2019-01-04 19:14:55 - [GLES2] VS SIMD8 shader: 28 inst, 0 loops, 116 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 448 to 336 bytes.
2019-01-04 19:14:55 - [GLES2] FS SIMD16 shader: 2 inst, 0 loops, 0 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 32 to 32 bytes.
2019-01-04 19:14:55 - [backend/libinput/backend.c:55] Initializing libinput
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added Power Button [0:1]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added Video Bus [0:6]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added Power Button [0:1]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added Lid Switch [0:5]
2019-01-04 19:14:55 - [backend/libinput/switch.c:20] Created switch for device Lid Switch
2019-01-04 19:14:55 - [seat.c:324] Switch input is not implemented
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse [1133:49282]
2019-01-04 19:14:55 - [GLES2] FS SIMD8 shader: 14 inst, 0 loops, 308 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 224 to 160 bytes.
2019-01-04 19:14:55 - [GLES2] FS SIMD16 shader: 14 inst, 0 loops, 322 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 224 to 160 bytes.
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse Keyboard [1133:49282]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse Consumer Control [1133:49282]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse System Control [1133:49282]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added HP Wide Vision HD Camera: HP Wi [3034:22048]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added HDA Intel PCH Mic [0:0]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added HDA Intel PCH Headphone [0:0]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=3 [0:0]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=7 [0:0]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=8 [0:0]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=9 [0:0]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=10 [0:0]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added AT Translated Set 2 keyboard [1:1]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added SynPS/2 Synaptics TouchPad [2:7]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added HP Wireless hotkeys [0:0]
2019-01-04 19:14:55 - [backend/libinput/events.c:94] Added HP WMI hotkeys [0:0]
2019-01-04 19:14:55 - [backend/libinput/backend.c:101] libinput successfully initialized
2019-01-04 19:14:55 - [cage.c:54] Child process created with pid 3231
2019-01-04 19:14:55 - [xwayland/xwayland.c:103] WAYLAND_SOCKET=16 Xwayland :1 -rootless -terminate -listen 14 -listen 15 -wm 48
glamor: No eglstream capable devices found
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported high keycode 372 for name <I372> ignored
>                   X11 cannot support keycodes above 255.
>                   This warning only shows for the first high keycode.
Errors from xkbcomp are not fatal to the X server
2019-01-04 19:14:55 - [types/wlr_surface.c:595] New wlr_surface 0x556cf9f16340 (res 0x556cf9f13bf0)
2019-01-04 19:14:55 - [xwayland/xwayland.c:352] sent SIGUSR1 to process 3229
2019-01-04 19:14:55 - [xwayland/xwayland.c:243] Xserver is ready
2019-01-04 19:14:55 - [xwayland/xwm.c:1483] xfixes version: 5.0
2019-01-04 19:14:55 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (924)
2019-01-04 19:14:55 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (924)
2019-01-04 19:14:55 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (2097153)
2019-01-04 19:14:55 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (2097154)
2019-01-04 19:14:55 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (2097154)
2019-01-04 19:14:55 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (2097155)
2019-01-04 19:14:55 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (924)
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported maximum keycode 374, clipping.
>                   X11 cannot support keycodes above 255.
> Warning:          Unsupported high keycode 372 for name <I372> ignored
>                   X11 cannot support keycodes above 255.
>                   This warning only shows for the first high keycode.
Errors from xkbcomp are not fatal to the X server
2019-01-04 19:14:55 - [xwayland/xwm.c:1247] unhandled X11 event: MappingNotify (34)
2019-01-04 19:14:55 - [xwayland/xwm.c:1247] unhandled X11 event: MappingNotify (34)
2019-01-04 19:14:55 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (924)
2019-01-04 19:14:55 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (6291457)
2019-01-04 19:14:55 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (6291457)
2019-01-04 19:14:55 - [xwayland/xwm.c:688] unhandled X11 property 34 (WM_COMMAND) for window 6291457
2019-01-04 19:14:55 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (6291457)
2019-01-04 19:14:55 - [xwayland/xwm.c:688] unhandled X11 property 36 (WM_CLIENT_MACHINE) for window 6291457
2019-01-04 19:14:55 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (6291457)
2019-01-04 19:14:55 - [xwayland/xwm.c:368] XCB_ATOM_WM_CLASS: firefox Firefox
2019-01-04 19:14:55 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (6291457)
2019-01-04 19:14:55 - [xwayland/xwm.c:688] unhandled X11 property 306 (WM_LOCALE_NAME) for window 6291457
2019-01-04 19:14:55 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (6291457)
2019-01-04 19:14:55 - [xwayland/xwm.c:456] NET_WM_PID 3231
2019-01-04 19:14:55 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (4194306)
2019-01-04 19:14:55 - [xwayland/xwm.c:806] XCB_DESTROY_NOTIFY (4194306)
2019-01-04 19:14:55 - [xwayland/xwayland.c:206] Restarting Xwayland (lazy)
(EE) failed to read Wayland events: Broken pipe
Gdk-Message: 19:15:00.815: firefox: Fatal IO error 2 (No such file or directory) on X server :1.

2019-01-04 19:15:00 - [backend/drm/drm.c:1405] Emitting destruction signal for 'eDP-1'
2019-01-04 19:15:00 - [backend/drm/drm.c:855] De-allocating CRTC 0 for output 'eDP-1'

Consider implementing xdg-decoration

I'm testing the firefox-wayland package for Fedora with Cage. It works really well. However, the GTK menu bar is shown. Is this something that can be hidden? I remember reading something about CSD being left up to the application on Wayland...

115559-2019-01-26

Minimum Requirements

Hi guys..

I've tried cage on Opensuse Tumblweed, with KDE already installed. This works as expected from a TTY console - running cage /usr/bin/epiphany works as expected.

From a minimal install however (specifically, "openSUSE Tumbleweed JeOS"), running cage /usr/bin/epiphany fails with the following error:
[cage.c :182] Unable to create the wlroots backendeviceerer"

It seems that there is a dependency missing in your code, and the rpm system therefore cant pull it in when it needs to. Any ideas as to what this might be? (I'm not good with C code)

There is a thread at https://forums.opensuse.org/showthread.php/535802-What-is-the-minimum-package-list-for-Wayland?p=2901328#post2901328

(Btw you can create your package at openSUSE's OBS and it will get built for most distros...)

Thanks in advance - Patrick

output.c.o build failure

I tried to install the cage-git aur package, but it failed to build. After installing the latest wayland-protocols and wlroots-git on Arch Linux (kernel 5.0) I tried again, but I get the same error:

ninja: Entering directory `/home/admin/.cache/yay/cage-git/src/build'
[7/9] Compiling C object 'cage@exe/xdg_shell.c.o'.
FAILED: cage@exe/xdg_shell.c.o 
ccache cc -Icage@exe -I. -I../cage -I/usr/include/libdrm -I/usr/include/pixman-1 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c11 -O3 -DWLR_USE_UNSTABLE -Wall -Wundef -Wno-unused-parameter -MD -MQ 'cage@exe/xdg_shell.c.o' -MF 'cage@exe/xdg_shell.c.o.d' -o 'cage@exe/xdg_shell.c.o' -c ../cage/xdg_shell.c
../cage/xdg_shell.c: In function ‘popup_unconstrain’:
../cage/xdg_shell.c:102:14: error: ‘struct wlr_output’ has no member named ‘lx’
   .x = output->lx - view->x,
              ^~
../cage/xdg_shell.c:103:14: error: ‘struct wlr_output’ has no member named ‘ly’
   .y = output->ly - view->y,
              ^~
[8/9] Compiling C object 'cage@exe/output.c.o'.
FAILED: cage@exe/output.c.o 
ccache cc -Icage@exe -I. -I../cage -I/usr/include/libdrm -I/usr/include/pixman-1 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c11 -O3 -DWLR_USE_UNSTABLE -Wall -Wundef -Wno-unused-parameter -MD -MQ 'cage@exe/output.c.o' -MF 'cage@exe/output.c.o.d' -o 'cage@exe/output.c.o' -c ../cage/output.c
../cage/output.c: In function ‘handle_output_damage_frame’:
../cage/output.c:204:7: error: implicit declaration of function ‘wlr_output_damage_make_current’; did you mean ‘wlr_output_damage_add_whole’? [-Werror=implicit-function-declaration]
  if (!wlr_output_damage_make_current(output->damage, &needs_swap, &damage)) {
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       wlr_output_damage_add_whole
../cage/output.c:270:7: error: implicit declaration of function ‘wlr_output_damage_swap_buffers’; did you mean ‘wlr_output_damage_add_box’? [-Werror=implicit-function-declaration]
  if (!wlr_output_damage_swap_buffers(output->damage, &now, &damage)) {
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       wlr_output_damage_add_box
cc1: all warnings being treated as errors
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().
    Aborting...

../output.c:18:10: fatal error: wlr/backend/x11.h: No such file or directory

It's weird that meson didn't whine about a missing library.

Debian GNU/Linux buster/sid
wlroots and cage master

I built wlroots normally (as suggested on their github page).

$ meson build
The Meson build system
Version: 0.49.2
Source dir: /home/bbigras/cage
Build dir: /home/bbigras/cage/build
Build type: native build
Project name: cage
Project version: 0.0.1
Native C compiler: cc (gcc 8.2.0 "cc (Debian 8.2.0-20) 8.2.0")
Build machine cpu family: x86
Build machine cpu: i686
Found pkg-config: /usr/bin/pkg-config (0.29)
Dependency wlroots found: YES 0.3.0
Dependency wayland-protocols found: YES 1.17
Dependency wayland-server found: YES 1.16.0
Dependency pixman-1 found: YES 0.36.0
Dependency xkbcommon found: YES 0.8.2
Library m found: YES
Program wayland-scanner found: YES (/usr/bin/wayland-scanner)
Configuring config.h using configuration
Message:
Cage 0.0.1

    xwayland: 0

Build targets in project: 1
Option werror is: True [default: true]
Found ninja-1.8.2 at /usr/bin/ninja
$ LANG=c ninja -C build
ninja: Entering directory `build'
[1/3] Compiling C object 'cage@exe/output.c.o'.
FAILED: cage@exe/output.c.o
cc -Icage@exe -I. -I.. -I/usr/local/include -I/usr/include/libdrm -I/usr/include/pixman-1 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c11 -g -DWLR_USE_UNSTABLE -Wall -Werror -Wundef -Wno-unused-parameter -DDEBUG  -MD -MQ 'cage@exe/output.c.o' -MF 'cage@exe/output.c.o.d' -o 'cage@exe/output.c.o' -c ../output.c
../output.c:18:10: fatal error: wlr/backend/x11.h: No such file or directory
 #include <wlr/backend/x11.h>
          ^~~~~~~~~~~~~~~~~~~
compilation terminated.
[2/3] Compiling C object 'cage@exe/xdg_shell.c.o'.
ninja: build stopped: subcommand failed.

Drop -Werror

Please drop -Werror, at least on releases.

It makes no sense to do that and of course it makes cage fails when you compile it with clang and it is doomed to fail on any compiler or warning flag you didn’t test.

Cage does not work with Google Chrome/Chromium/Brave

Chromium output (similar for Google Chrome & Brave), ./build/cage chromium:

2019-01-04 19:19:59 - [backend/session/logind.c:542] Successfully loaded logind session
2019-01-04 19:19:59 - [backend/backend.c:142] Found 1 GPUs
2019-01-04 19:19:59 - [backend/drm/backend.c:151] Initializing DRM backend for /dev/dri/card0 (i915)
2019-01-04 19:19:59 - [backend/drm/drm.c:63] Using atomic DRM interface
2019-01-04 19:19:59 - [backend/drm/drm.c:156] Found 3 DRM CRTCs
2019-01-04 19:19:59 - [backend/drm/drm.c:87] Found 9 DRM planes
2019-01-04 19:19:59 - [backend/drm/drm.c:129] (3 overlay, 3 primary, 3 cursor)
2019-01-04 19:19:59 - [render/egl.c:149] Using EGL 1.4
2019-01-04 19:19:59 - [render/egl.c:150] Supported EGL extensions: EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_IMG_context_priority EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_WL_bind_wayland_display 
2019-01-04 19:19:59 - [render/egl.c:151] EGL vendor: Mesa Project
2019-01-04 19:19:59 - [render/egl.c:97] Supported dmabuf buffer formats: AR30 XR30 AB30 XB30 AR24 AB24 XR24 XB24 AR15 RG16 R8   R16  GR88 GR32 YUV9 YU11 YU12 YU16 YU24 YVU9 YV11 YV12 YV16 YV24 NV12 NV16 YUYV UYVY 
2019-01-04 19:19:59 - [render/egl.c:217] Failed to obtain a high priority context
2019-01-04 19:19:59 - [render/gles2/renderer.c:553] Using OpenGL ES 3.2 Mesa 18.3.1
2019-01-04 19:19:59 - [render/gles2/renderer.c:554] GL vendor: Intel Open Source Technology Center
2019-01-04 19:19:59 - [render/gles2/renderer.c:555] Supported GLES2 extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays GL_EXT_texture_filter_anisotropic GL_EXT_texture_compression_s3tc GL_EXT_occlusion_query_boolean GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_EXT_texture_sRGB_decode GL_OES_EGL_image GL_OES_depth_texture GL_OES_packed_depth_stencil GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary GL_APPLE_texture_max_level GL_EXT_discard_framebuffer GL_EXT_read_format_bgra GL_EXT_frag_depth GL_NV_fbo_color_attachments GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_array_object GL_OES_viewport_array GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_EXT_robustness GL_EXT_texture_rg GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers GL_EXT_map_buffer_range GL_KHR_debug GL_KHR_robustness GL_KHR_texture_compression_astc_ldr GL_OES_depth_texture_cube_map GL_OES_required_internalformat GL_OES_surfaceless_context GL_EXT_color_buffer_float GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_integer_mix GL_EXT_tessellation_point_size GL_EXT_tessellation_shader GL_INTEL_conservative_rasterization GL_INTEL_performance_query GL_ANDROID_extension_pack_es31a GL_EXT_base_instance GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_copy_image GL_EXT_draw_buffers_indexed GL_EXT_draw_elements_base_vertex GL_EXT_gpu_shader5 GL_EXT_polygon_offset_clamp GL_EXT_primitive_bounding_box GL_EXT_render_snorm GL_EXT_shader_io_blocks GL_EXT_texture_border_clamp GL_EXT_texture_buffer GL_EXT_texture_cube_map_array GL_EXT_texture_norm16 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_KHR_context_flush_control GL_KHR_robust_buffer_access_behavior GL_NV_image_formats GL_OES_copy_image GL_OES_draw_buffers_indexed GL_OES_draw_elements_base_vertex GL_OES_gpu_shader5 GL_OES_primitive_bounding_box GL_OES_sample_shading GL_OES_sample_variables GL_OES_shader_io_blocks GL_OES_shader_multisample_interpolation GL_OES_tessellation_point_size GL_OES_tessellation_shader GL_OES_texture_border_clamp GL_OES_texture_buffer GL_OES_texture_cube_map_array GL_OES_texture_stencil8 GL_OES_texture_storage_multisample_2d_array GL_OES_texture_view GL_EXT_blend_func_extended GL_EXT_buffer_storage GL_EXT_geometry_point_size GL_EXT_geometry_shader GL_EXT_shader_samples_identical GL_KHR_no_error GL_KHR_texture_compression_astc_sliced_3d GL_NV_fragment_shader_interlock GL_OES_EGL_image_external_essl3 GL_OES_geometry_point_size GL_OES_geometry_shader GL_OES_shader_image_atomic GL_EXT_clip_cull_distance GL_EXT_disjoint_timer_query GL_MESA_shader_integer_functions GL_EXT_shader_framebuffer_fetch_non_coherent GL_MESA_framebuffer_flip_y 
unable to lock lockfile /run/user/1000/wayland-0.lock, maybe another compositor is running
2019-01-04 19:19:59 - [backend/drm/drm.c:1042] Scanning DRM connectors
2019-01-04 19:19:59 - [backend/drm/drm.c:1105] Found connector 'eDP-1'
2019-01-04 19:19:59 - [backend/drm/drm.c:1141] 'eDP-1' connected
2019-01-04 19:19:59 - [backend/drm/drm.c:1143] Current CRTC: 41
2019-01-04 19:19:59 - [backend/drm/drm.c:1148] Physical size: 290x170
2019-01-04 19:19:59 - [backend/drm/drm.c:1159] Detected modes:
2019-01-04 19:19:59 - [backend/drm/drm.c:1180]   1920x1080@60020
2019-01-04 19:19:59 - [backend/drm/drm.c:1180]   1920x1080@40015
2019-01-04 19:19:59 - [backend/drm/drm.c:1105] Found connector 'DP-1'
2019-01-04 19:19:59 - [backend/drm/drm.c:1105] Found connector 'DP-2'
2019-01-04 19:19:59 - [backend/drm/drm.c:885] Reallocating CRTCs
2019-01-04 19:19:59 - [backend/drm/drm.c:897] State before reallocation:
2019-01-04 19:19:59 - [backend/drm/drm.c:907]   'eDP-1' crtc=0 state=1 desired_enabled=1
2019-01-04 19:19:59 - [backend/drm/drm.c:907]   'DP-1' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:19:59 - [backend/drm/drm.c:907]   'DP-2' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:19:59 - [backend/drm/drm.c:968] State after reallocation:
2019-01-04 19:19:59 - [backend/drm/drm.c:973]   'eDP-1' crtc=0 state=1 desired_enabled=1
2019-01-04 19:19:59 - [backend/drm/drm.c:973]   'DP-1' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:19:59 - [backend/drm/drm.c:973]   'DP-2' crtc=-1 state=0 desired_enabled=0
2019-01-04 19:19:59 - [backend/drm/drm.c:446] Reallocating planes
2019-01-04 19:19:59 - [backend/drm/drm.c:491] Assigning plane -1 -> 33 (type 0) to CRTC 41
2019-01-04 19:19:59 - [backend/drm/drm.c:491] Assigning plane -1 -> 28 (type 1) to CRTC 41
2019-01-04 19:19:59 - [backend/drm/drm.c:491] Assigning plane -1 -> 38 (type 2) to CRTC 41
2019-01-04 19:19:59 - [backend/drm/drm.c:1255] Requesting modeset for 'eDP-1'
2019-01-04 19:19:59 - [backend/drm/drm.c:526] Modesetting 'eDP-1' with '1920x1080@60020 mHz'
2019-01-04 19:19:59 - [backend/drm/drm.c:357] Starting renderer on output 'eDP-1'
2019-01-04 19:19:59 - [GLES2] FS SIMD8 shader: 5 inst, 0 loops, 24 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 80 to 48 bytes.
2019-01-04 19:19:59 - [GLES2] FS SIMD16 shader: 5 inst, 0 loops, 34 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 80 to 48 bytes.
2019-01-04 19:19:59 - [GLES2] VS SIMD8 shader: 28 inst, 0 loops, 116 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 448 to 336 bytes.
2019-01-04 19:19:59 - [GLES2] FS SIMD16 shader: 2 inst, 0 loops, 0 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 32 to 32 bytes.
2019-01-04 19:19:59 - [backend/libinput/backend.c:55] Initializing libinput
2019-01-04 19:19:59 - [backend/libinput/events.c:94] Added Power Button [0:1]
2019-01-04 19:19:59 - [backend/libinput/events.c:94] Added Video Bus [0:6]
2019-01-04 19:19:59 - [backend/libinput/events.c:94] Added Power Button [0:1]
2019-01-04 19:19:59 - [backend/libinput/events.c:94] Added Lid Switch [0:5]
2019-01-04 19:19:59 - [backend/libinput/switch.c:20] Created switch for device Lid Switch
2019-01-04 19:19:59 - [seat.c:324] Switch input is not implemented
2019-01-04 19:19:59 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse [1133:49282]
2019-01-04 19:19:59 - [GLES2] FS SIMD8 shader: 14 inst, 0 loops, 308 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 224 to 160 bytes.
2019-01-04 19:19:59 - [GLES2] FS SIMD16 shader: 14 inst, 0 loops, 322 cycles, 0:0 spills:fills, Promoted 0 constants, compacted 224 to 160 bytes.
2019-01-04 19:19:59 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse Keyboard [1133:49282]
2019-01-04 19:19:59 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse Consumer Control [1133:49282]
2019-01-04 19:19:59 - [backend/libinput/events.c:94] Added Logitech G403 Prodigy Wired/Wireless Gaming Mouse System Control [1133:49282]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added HP Wide Vision HD Camera: HP Wi [3034:22048]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added HDA Intel PCH Mic [0:0]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added HDA Intel PCH Headphone [0:0]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=3 [0:0]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=7 [0:0]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=8 [0:0]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=9 [0:0]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added HDA Intel PCH HDMI/DP,pcm=10 [0:0]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added AT Translated Set 2 keyboard [1:1]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added SynPS/2 Synaptics TouchPad [2:7]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added HP Wireless hotkeys [0:0]
2019-01-04 19:20:00 - [backend/libinput/events.c:94] Added HP WMI hotkeys [0:0]
2019-01-04 19:20:00 - [backend/libinput/backend.c:101] libinput successfully initialized
2019-01-04 19:20:00 - [cage.c:54] Child process created with pid 3787
2019-01-04 19:20:00 - [xwayland/xwayland.c:103] WAYLAND_SOCKET=16 Xwayland :1 -rootless -terminate -listen 14 -listen 15 -wm 48
glamor: No eglstream capable devices found
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported high keycode 372 for name <I372> ignored
>                   X11 cannot support keycodes above 255.
>                   This warning only shows for the first high keycode.
Errors from xkbcomp are not fatal to the X server
2019-01-04 19:20:00 - [types/wlr_surface.c:595] New wlr_surface 0x5564cfbc7f40 (res 0x5564cfbf6e80)
2019-01-04 19:20:00 - [xwayland/xwayland.c:352] sent SIGUSR1 to process 3785
2019-01-04 19:20:00 - [xwayland/xwayland.c:243] Xserver is ready
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported maximum keycode 374, clipping.
>                   X11 cannot support keycodes above 255.
> Warning:          Unsupported high keycode 372 for name <I372> ignored
>                   X11 cannot support keycodes above 255.
>                   This warning only shows for the first high keycode.
Errors from xkbcomp are not fatal to the X server
2019-01-04 19:20:00 - [xwayland/xwm.c:1483] xfixes version: 5.0
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (924)
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (924)
2019-01-04 19:20:00 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (2097153)
2019-01-04 19:20:00 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (2097154)
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (2097154)
2019-01-04 19:20:00 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (2097155)
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (924)
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (924)
2019-01-04 19:20:00 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (4194305)
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (4194305)
2019-01-04 19:20:00 - [xwayland/xwm.c:688] unhandled X11 property 34 (WM_COMMAND) for window 4194305
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (4194305)
2019-01-04 19:20:00 - [xwayland/xwm.c:688] unhandled X11 property 36 (WM_CLIENT_MACHINE) for window 4194305
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (4194305)
2019-01-04 19:20:00 - [xwayland/xwm.c:368] XCB_ATOM_WM_CLASS: chromium Chromium
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (4194305)
2019-01-04 19:20:00 - [xwayland/xwm.c:688] unhandled X11 property 306 (WM_LOCALE_NAME) for window 4194305
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (4194305)
2019-01-04 19:20:00 - [xwayland/xwm.c:456] NET_WM_PID 3787
2019-01-04 19:20:00 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (4194307)
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (4194305)
2019-01-04 19:20:00 - [xwayland/xwm.c:418] XCB_ATOM_WM_NAME: chromium
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (4194305)
2019-01-04 19:20:00 - [xwayland/xwm.c:923] XCB_PROPERTY_NOTIFY (4194307)
2019-01-04 19:20:00 - [xwayland/xwm.c:688] unhandled X11 property 336 (_NET_WM_OPAQUE_REGION) for window 4194307
2019-01-04 19:20:00 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (12582913)
2019-01-04 19:20:00 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (8388610)
2019-01-04 19:20:00 - [xwayland/xwm.c:806] XCB_DESTROY_NOTIFY (8388610)
2019-01-04 19:20:00 - [xwayland/xwm.c:792] XCB_CREATE_NOTIFY (8388612)
2019-01-04 19:20:00 - [xwayland/xwayland.c:206] Restarting Xwayland (lazy)
(EE) failed to read Wayland events: Broken pipe
[3787:3787:0104/192000.509848:ERROR:chrome_browser_main_extra_parts_x11.cc(62)] X IO error received (X server probably went away)
2019-01-04 19:20:00 - [backend/drm/drm.c:1405] Emitting destruction signal for 'eDP-1'
2019-01-04 19:20:00 - [backend/drm/drm.c:855] De-allocating CRTC 0 for output 'eDP-1'

Optimize rendering / damage tracking

To optimize our rendering (resources & power usage), we should implement damage tracking. This tracks which parts of the screen are changing and minimizes redraws accordingly. For inspiration, we can look at rootston.

cage can't run: Atomic commit failed (modeset): Invalid argument

I have built cage and trying to run on Fedora 29 on Cubietruck. However, screen just freezes and if I kill cage via SSH, I can see following error multiple time in terminal:

[backend/drm/atomic.c:54] HDMI-A-1: Atomic commit failed (modeset): Invalid argument

ninja: build stopped: subcommand failed

I tried building on Manjaro Linux Cinnamon via makepkg:

==> Starting build()...
The Meson build system
Version: 0.48.2
Source dir: /tmp/makepkg/cage-git/src/cage-git
Build dir: /tmp/makepkg/cage-git/src/cage-git/build
Build type: native build
Project name: cage
Project version: 0.0.1
Appending CFLAGS from environment: '-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt'
Appending LDFLAGS from environment: '-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
Appending CPPFLAGS from environment: '-D_FORTIFY_SOURCE=2'
Native C compiler: cc (gcc 8.2.1 "cc (GCC) 8.2.1 20181127")
Build machine cpu family: x86_64
Build machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (1.5.4)
Dependency wlroots found: YES 0.2.0
Dependency wayland-protocols found: YES 1.17
Dependency wayland-server found: YES 1.16.0
Dependency xkbcommon found: YES 0.8.2
Program wayland-scanner found: YES (/usr/bin/wayland-scanner)
Build targets in project: 1
Option werror is: True [default: true]
Found ninja-1.8.2 at /usr/bin/ninja
ninja: Entering directory `build'
[2/3] Compiling C object 'cage@exe/cage.c.o'.
FAILED: cage@exe/cage.c.o 
cc -Icage@exe -I. -I.. -I/usr/include/libdrm -I/usr/include/pixman-1 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c11 -g -DWLR_USE_UNSTABLE -Wall -Werror -Wundef -Wno-unused-parameter -DDEBUG -march=x86-64 -mtune=generic -O2 -fstack-protector-strong -fno-plt -D_FORTIFY_SOURCE=2  -MD -MQ 'cage@exe/cage.c.o' -MF 'cage@exe/cage.c.o.d' -o 'cage@exe/cage.c.o' -c ../cage.c
../cage.c: In function ‘server_new_input’:
../cage.c:270:2: error: enumeration value ‘WLR_INPUT_DEVICE_SWITCH’ not handled in switch [-Werror=switch]
  switch (device->type) {
  ^~~~~~
cc1: all warnings being treated as errors
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().
    Aborting...

If a subprocess exits, cage segfaults

Try running cage your-terminal-emulator, then running a terminal from there. I think cage should exit only when the last window closes. Note: the desired behavior for me is that the new window take over the cage display, and the terminal emulator is no longer visible (until the new window is closed).

Cut a new release

Hi! Thanks for maintaining this great project.

With wlroots 0.6.0 giving a soname bump, this project will need another release before we can update wlroots in Arch Linux.

Unresponsive to SIGTERM.

  • Run Cage in a terminal
  • Observe that Ctrl+C has no effect

Cage should clean up and exit on SIGTERM if possible.

cannot pass arguments to target applications

cage /usr/bin/firefox works
cage /usr/bin/firefox --private does not

Am I doing something obviously dumb or can cage not pass arguments to the applications it is told to launch?

Support drag & drop with cursor images

In case the running client needs drag & drop, we need to support this. Currently, I think this may work but the cursor doesn't change to indicate something is being dragged.

Don't display cursor if there is no pointer device

Currently we always display a cursor, even if there is no pointer device available nor touch input.

Ideally, even if we have touch input (#1), we shouldn't show a cursor. We should only really show it if we have a pointer device.

../seat.c:573:14: error: ‘struct wlr_drag_icon’ has no member named ‘is_pointer’

I just rebuilt wlroots from master.

$ meson build
The Meson build system
Version: 0.49.2
Source dir: /home/bbigras/cage
Build dir: /home/bbigras/cage/build
Build type: native build
Project name: cage
Project version: 0.0.1
Native C compiler: cc (gcc 8.2.0 "cc (Debian 8.2.0-21) 8.2.0")
Build machine cpu family: x86
Build machine cpu: i686
Found pkg-config: /usr/bin/pkg-config (0.29)
Dependency wlroots found: YES 0.3.0
Dependency wayland-protocols found: YES 1.17
Dependency wayland-server found: YES 1.16.0
Dependency pixman-1 found: YES 0.36.0
Dependency xkbcommon found: YES 0.8.2
Library m found: YES
Program wayland-scanner found: YES (/usr/bin/wayland-scanner)
Configuring config.h using configuration
Message:
Cage 0.0.1

    xwayland: 0

Build targets in project: 1
Option werror is: True [default: true]
Found ninja-1.8.2 at /usr/bin/ninja
bbigras@debian:~/cage$ ninja -C build
ninja: Entering directory `build'
[4/8] Compiling C object 'cage@exe/seat.c.o'.
FAILED: cage@exe/seat.c.o
cc -Icage@exe -I. -I.. -I/usr/local/include -I/usr/include/libdrm -I/usr/include/pixman-1 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c11 -g -DWLR_USE_UNSTABLE -Wall -Wundef -Wno-unused-parameter -DDEBUG  -MD -MQ 'cage@exe/seat.c.o' -MF 'cage@exe/seat.c.o.d' -o 'cage@exe/seat.c.o' -c ../seat.c
../seat.c: In function ‘drag_icon_update_position’:
../seat.c:573:14: error: ‘struct wlr_drag_icon’ has no member named ‘is_pointer’
  if (wlr_icon->is_pointer) {
              ^~
../seat.c:578:49: error: ‘struct wlr_drag_icon’ has no member named ‘touch_id’
    wlr_seat_touch_get_point(seat->seat, wlr_icon->touch_id);
                                                 ^~
../seat.c: In function ‘seat_create’:
../seat.c:731:35: error: ‘struct <anonymous>’ has no member named ‘new_drag_icon’
  wl_signal_add(&seat->seat->events.new_drag_icon, &seat->new_drag_icon);
                                   ^
[5/8] Compiling C object 'cage@exe/output.c.o'.
ninja: build stopped: subcommand failed.

Feature request: pass cage a Wayland client file descriptor to adopt

Say I start up a Wayland client and have a file descriptor representing its connection - I want to exec into a cage instance and hand it that file descriptor.

Basically, if I run cage -c 13 (or an environment variable, or something else entirely, whatever), I'd like for cage to pass that file descriptor to wl_client_create to initialize the client - rather than executing the child itself.

When closing a dialog, the previously focused client should be focused automatically

I.e., we need something like this:

@@ -608,6 +667,17 @@ xdg_surface_destroy(struct wl_listener *listener, void *data)
        struct cg_server *server = view->server;
        bool terminate = is_fullscreen_view(view);
 
+       /* Focus the previous view if we aren't terminating. */
+       if (!terminate) {
+               struct cg_view *last = wl_container_of(view->link.prev, last, link);
+               focus_view(last);
+       }
+
        wl_list_remove(&view->link);
        free(view);

However, this crashes cage in focus_view due to seat->keyboard_state.focused_surface not being NULL but its surface being NULL.

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.