diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 547bbc7..bd7cca0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,8 +7,6 @@ on: env: WLROOTS_VERSION: "0.20" - ALPINE_PACKAGES: "build-base xcb-util-wm-dev libseat-dev clang git eudev-dev mesa-dev libdrm-dev libinput-dev libxkbcommon-dev pixman-dev wayland-dev meson wayland-protocols xwayland-dev scdoc-doc hwdata libdisplay-info-dev" - ARCHLINUX_PACKAGES: "xcb-util-wm seatd git clang meson libinput libdrm mesa libxkbcommon wayland wayland-protocols xorg-server-xwayland scdoc libdisplay-info" jobs: compile: @@ -28,20 +26,20 @@ jobs: - name: Install dependencies (Alpine) if: "matrix.OS == 'alpine:edge'" - run: apk add $ALPINE_PACKAGES + run: apk add build-base xcb-util-wm-dev libseat-dev clang git eudev-dev mesa-dev libdrm-dev libinput-dev libxkbcommon-dev pixman-dev wayland-dev meson wayland-protocols xwayland-dev scdoc-doc hwdata libdisplay-info-dev - name: Install dependencies (Arch) if: "matrix.OS == 'archlinux:base-devel'" run: | pacman-key --init - pacman -Syu --noconfirm $ARCHLINUX_PACKAGES + pacman -Syu --noconfirm xcb-util-wm seatd git clang meson libinput libdrm mesa libxkbcommon wayland wayland-protocols xorg-server-xwayland scdoc libdisplay-info - name: Fetch wlroots as a subproject run: git clone https://gitlab.freedesktop.org/wlroots/wlroots.git subprojects/wlroots -b $WLROOTS_VERSION - name: Compile Cage (XWayland=${{ matrix.xwayland }}) run: | - meson setup --fatal-meson-warnings --wrap-mode=nodownload \ + meson --fatal-meson-warnings --wrap-mode=nodownload \ build-${{ matrix.CC }}-${{matrix.xwayland }} \ -Dwlroots:xwayland=${{ matrix.xwayland }} ninja -C build-${{ matrix.CC }}-${{matrix.xwayland }} @@ -55,12 +53,12 @@ jobs: - name: Install dependencies run: | pacman-key --init - pacman -Syu --noconfirm $ARCHLINUX_PACKAGES + pacman -Syu --noconfirm xcb-util-wm seatd git clang meson libinput libdrm mesa libxkbcommon wayland wayland-protocols xorg-server-xwayland scdoc hwdata libdisplay-info - name: Fetch wlroots as a subproject run: git clone https://gitlab.freedesktop.org/wlroots/wlroots.git subprojects/wlroots -b $WLROOTS_VERSION - name: Check for formatting changes run: | - meson setup --wrap-mode=nodownload build-clang-format -Dwlroots:xwayland=enabled + meson --wrap-mode=nodownload build-clang-format -Dwlroots:xwayland=enabled ninja -C build-clang-format clang-format-check scan-build: @@ -74,10 +72,10 @@ jobs: - name: Install dependencies run: | pacman-key --init - pacman -Syu --noconfirm $ARCHLINUX_PACKAGES + pacman -Syu --noconfirm xcb-util-wm seatd git clang meson libinput libdrm mesa libxkbcommon wayland wayland-protocols xorg-server-xwayland scdoc hwdata libdisplay-info - name: Fetch wlroots as a subproject run: git clone https://gitlab.freedesktop.org/wlroots/wlroots.git subprojects/wlroots -b $WLROOTS_VERSION - name: Run scan-build run: | - meson setup --wrap-mode=nodownload build-scan-build -Dwlroots:xwayland=enabled + meson --wrap-mode=nodownload build-scan-build -Dwlroots:xwayland=enabled ninja -C build-scan-build scan-build diff --git a/cage.c b/cage.c index b2523ca..d524dfd 100644 --- a/cage.c +++ b/cage.c @@ -248,7 +248,6 @@ usage(FILE *file, const char *cage) " -m last Use only the last connected output\n" " -s\t Allow VT switching\n" " -v\t Show the version number and exit\n" - " -x\t Disable XWayland\n" "\n" " Use -- when you want to pass arguments to APPLICATION\n", cage); @@ -257,10 +256,8 @@ usage(FILE *file, const char *cage) static bool parse_args(struct cg_server *server, int argc, char *argv[]) { - server->enable_xwayland = true; - int c; - while ((c = getopt(argc, argv, "dDhm:svx")) != -1) { + while ((c = getopt(argc, argv, "dDhm:sv")) != -1) { switch (c) { case 'd': server->xdg_decoration = true; @@ -284,9 +281,6 @@ parse_args(struct cg_server *server, int argc, char *argv[]) case 'v': fprintf(stdout, "Cage version " CAGE_VERSION "\n"); exit(0); - case 'x': - server->enable_xwayland = false; - break; default: usage(stderr, argv[0]); return false; @@ -568,39 +562,35 @@ main(int argc, char *argv[]) #if CAGE_HAS_XWAYLAND struct wlr_xcursor_manager *xcursor_manager = NULL; - struct wlr_xwayland *xwayland = NULL; - if (server.enable_xwayland) { - xwayland = wlr_xwayland_create(server.wl_display, compositor, true); - if (!xwayland) { - wlr_log(WLR_ERROR, "Cannot create XWayland server"); + struct wlr_xwayland *xwayland = wlr_xwayland_create(server.wl_display, compositor, true); + if (!xwayland) { + wlr_log(WLR_ERROR, "Cannot create XWayland server"); + } else { + server.new_xwayland_surface.notify = handle_xwayland_surface_new; + wl_signal_add(&xwayland->events.new_surface, &server.new_xwayland_surface); + + xcursor_manager = wlr_xcursor_manager_create(DEFAULT_XCURSOR, XCURSOR_SIZE); + if (!xcursor_manager) { + wlr_log(WLR_ERROR, "Cannot create XWayland XCursor manager"); + ret = 1; + goto end; + } + + if (setenv("DISPLAY", xwayland->display_name, true) < 0) { + wlr_log_errno(WLR_ERROR, + "Unable to set DISPLAY for XWayland. Clients may not be able to connect"); } else { - server.new_xwayland_surface.notify = handle_xwayland_surface_new; - wl_signal_add(&xwayland->events.new_surface, &server.new_xwayland_surface); + wlr_log(WLR_DEBUG, "XWayland is running on display %s", xwayland->display_name); + } - xcursor_manager = wlr_xcursor_manager_create(DEFAULT_XCURSOR, XCURSOR_SIZE); - if (!xcursor_manager) { - wlr_log(WLR_ERROR, "Cannot create XWayland XCursor manager"); - ret = 1; - goto end; - } - - if (setenv("DISPLAY", xwayland->display_name, true) < 0) { - wlr_log_errno(WLR_ERROR, - "Unable to set DISPLAY for XWayland. Clients may not be able to connect"); - } else { - wlr_log(WLR_DEBUG, "XWayland is running on display %s", xwayland->display_name); - } - - if (!wlr_xcursor_manager_load(xcursor_manager, 1)) { - wlr_log(WLR_ERROR, "Cannot load XWayland XCursor theme"); - } - struct wlr_xcursor *xcursor = - wlr_xcursor_manager_get_xcursor(xcursor_manager, DEFAULT_XCURSOR, 1); - if (xcursor) { - struct wlr_xcursor_image *image = xcursor->images[0]; - wlr_xwayland_set_cursor(xwayland, wlr_xcursor_image_get_buffer(image), image->hotspot_x, - image->hotspot_y); - } + if (!wlr_xcursor_manager_load(xcursor_manager, 1)) { + wlr_log(WLR_ERROR, "Cannot load XWayland XCursor theme"); + } + struct wlr_xcursor *xcursor = wlr_xcursor_manager_get_xcursor(xcursor_manager, DEFAULT_XCURSOR, 1); + if (xcursor) { + struct wlr_xcursor_image *image = xcursor->images[0]; + wlr_xwayland_set_cursor(xwayland, wlr_xcursor_image_get_buffer(image), image->hotspot_x, + image->hotspot_y); } } #endif diff --git a/seat.c b/seat.c index 050a097..5f659a4 100644 --- a/seat.c +++ b/seat.c @@ -816,9 +816,9 @@ seat_create(struct cg_server *server, struct wlr_backend *backend) return NULL; } - seat->seat = wlr_seat_create(server->wl_display, "default"); + seat->seat = wlr_seat_create(server->wl_display, "seat0"); if (!seat->seat) { - wlr_log(WLR_ERROR, "Cannot allocate seat"); + wlr_log(WLR_ERROR, "Cannot allocate seat0"); free(seat); return NULL; } diff --git a/server.h b/server.h index a5b7138..27f212a 100644 --- a/server.h +++ b/server.h @@ -72,7 +72,6 @@ struct cg_server { bool xdg_decoration; bool allow_vt_switch; - bool enable_xwayland; bool return_app_code; bool terminated; enum wlr_log_importance log_level;