From d7a789d556fb7a3fda3dca23766806104a28cefe Mon Sep 17 00:00:00 2001 From: project-repo Date: Sun, 24 Jul 2022 21:14:09 +0200 Subject: [PATCH 01/33] Prepare 1.9.1 release - Fix Issue 35 in Bugs.md --- Bugs.md | 8 ++++++++ Hashes.md | 15 +++++++++++++++ keybinding.c | 3 +++ man/cagebreak-config.5.md | 2 +- man/cagebreak.1.md | 2 +- meson.build | 22 +++++++++++----------- 6 files changed, 39 insertions(+), 13 deletions(-) diff --git a/Bugs.md b/Bugs.md index 2c909fe..517c471 100644 --- a/Bugs.md +++ b/Bugs.md @@ -628,3 +628,11 @@ wlroots-0.15.1 Cagebreak crashed when a touch device was removed due to a call to `wl_list_remove` on a pointer which was never initialized. +## Issue 35 + + * github issue number: N/A + * Fixed: 1.9.1 + +Cagebreak 1.9.0 broke the nextscreen and prevscreen functionality. +This issue was not present in earlier releases. + diff --git a/Hashes.md b/Hashes.md index abffe85..1620c13 100644 --- a/Hashes.md +++ b/Hashes.md @@ -1,5 +1,20 @@ # Hashes +1.9.1 cagebreak + + * sha 256: c247ff69f0eaabab5326b54a230add89c384ed957c53df80b4b0c1f22497d4f1 + * sha 512: 02145f9afe378fa5d29002b754e515ca0ab7314478582b5cd8ddbc95cafe15a421aeb5288da1ab9bb4c91241e73b3fb4023699742b5a452de82d42507a5d7af5 + +1.9.1 cagebreak.1 + + * sha 256: f9c1ee94c0788b98f1e8d93433a0e39d4265ed5c8107e964648da11c60c995ed + * sha 512: 1d39748c42a56852ce21aa5ea872160da0810d0539901f6c307b141d4c2545c52a7de98d924e4e45827dafa8cb76b483abf5e02403e6536f69d2144575d3dfdb + +1.9.1 cagebreak-config.5 + + * sha 256: 2b0d5655e01942cb5130a95c7209e32c1ce3f44411f2a3294a160d6a2232bef4 + * sha 512: c13a92e091e56aad099c12c4bf652943bf43dad5aace61677af992331a2700d3d2f433cd2a674cbc2cc080e971169516973835c44416de555a85b5aae9da9a9d + 1.9.0 cagebreak * sha 256: 91096b4c558970666c5ef1ebd5c16301fbb40b52b34a73589f18a14c48edf5c1 diff --git a/keybinding.c b/keybinding.c index 5207d24..395705e 100644 --- a/keybinding.c +++ b/keybinding.c @@ -950,6 +950,9 @@ run_action(enum keybinding_action action, struct cg_server *server, case KEYBINDING_CYCLE_TILES: keybinding_cycle_tiles(server, data.b); break; + case KEYBINDING_CYCLE_OUTPUT: + keybinding_cycle_outputs(server, data.b); + break; case KEYBINDING_SWITCH_WORKSPACE: keybinding_switch_ws(server, data.u); break; diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index b931db4..541e713 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -1,4 +1,4 @@ -cagebreak-config(5) "Version 1.9.0" "Cagebreak Manual" +cagebreak-config(5) "Version 1.9.1" "Cagebreak Manual" # NAME diff --git a/man/cagebreak.1.md b/man/cagebreak.1.md index fd6584c..7ef7963 100644 --- a/man/cagebreak.1.md +++ b/man/cagebreak.1.md @@ -1,4 +1,4 @@ -cagebreak(1) "Version 1.9.0" "Cagebreak Manual" +cagebreak(1) "Version 1.9.1" "Cagebreak Manual" # NAME diff --git a/meson.build b/meson.build index b4c7dfd..172741f 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('cagebreak', 'c', - version: '1.9.0', + version: '1.9.1', license: 'MIT', default_options: [ 'c_std=c11', @@ -204,18 +204,18 @@ cagebreak_dependencies_dict = { reproducible_build_versions = { 'server_protos': '-1', 'wayland_server': '1.19.0', - 'wayland_client': '1.20.0', - 'wayland_cursor': '1.20.0', + 'wayland_client': '1.21.0', + 'wayland_cursor': '1.21.0', 'wlroots': '0.15.1', - 'xkbcommon': '1.4.0', + 'xkbcommon': '1.4.1', 'fontconfig': '2.14.0', - 'libinput': '1.20.1', + 'libinput': '1.21.0', 'libevdev': '1.12.1', - 'libudev': '250', + 'libudev': '251', 'pixman': '0.40.0', - 'pango': '1.50.7', + 'pango': '1.50.8', 'cairo': '1.17.6', - 'pangocairo': '1.50.7', + 'pangocairo': '1.50.8', 'math': '-1' } @@ -241,7 +241,7 @@ foreach name, dep : cagebreak_dependencies_dict endforeach reproducible_build_compiler = 'gcc' -reproducible_build_compiler_version = '11.2.0' +reproducible_build_compiler_version = '12.1.0' if cc.get_id() != reproducible_build_compiler warning('The compiler "' + cc.get_id() + '" differs from the one used to generate to binary specified in the README section "Reproducible Builds" (' + reproducible_build_compiler + ').') @@ -270,7 +270,7 @@ if get_option('man-pages') output : 'cagebreak.1', input : 'man/cagebreak.1.md', capture : true, - command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1650564686 ; @0@ < @INPUT@'.format(scdoc.path())], + command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1658688233 ; @0@ < @INPUT@'.format(scdoc.path())], install: true, install_dir: mandir1 ) @@ -279,7 +279,7 @@ if get_option('man-pages') output : 'cagebreak-config.5', input : 'man/cagebreak-config.5.md', capture : true, - command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1650564686 ; @0@ < @INPUT@'.format(scdoc.path())], + command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1658688233 ; @0@ < @INPUT@'.format(scdoc.path())], install: true, install_dir: mandir5 ) From d6ce3d66bbc928ce75a0797eeb1a1544cdcc9509 Mon Sep 17 00:00:00 2001 From: project-repo Date: Fri, 29 Jul 2022 21:23:04 +0200 Subject: [PATCH 02/33] Fix configure_message command --- cagebreak.c | 14 +++++++++++++- keybinding.c | 33 +++++++++++++++++++++++++++++++++ message.c | 17 ++++++++++------- server.h | 2 ++ 4 files changed, 58 insertions(+), 8 deletions(-) diff --git a/cagebreak.c b/cagebreak.c index 00712f9..97f4f91 100644 --- a/cagebreak.c +++ b/cagebreak.c @@ -297,7 +297,18 @@ main(int argc, char *argv[]) { } server.nws = 1; - server.message_timeout = 2; + server.message_config.fg_color[0] = 0.0; + server.message_config.fg_color[1] = 0.0; + server.message_config.fg_color[2] = 0.0; + server.message_config.fg_color[3] = 1.0; + + server.message_config.bg_color[0] = 0.9; + server.message_config.bg_color[1] = 0.85; + server.message_config.bg_color[2] = 0.85; + server.message_config.bg_color[3] = 1.0; + + server.message_config.display_time = 2; + server.message_config.font = strdup("pango:Monospace 10"); event_loop = wl_display_get_event_loop(server.wl_display); sigint_source = @@ -626,6 +637,7 @@ end: wlr_output_layout_destroy(server.output_layout); free(server.input); + free(server.message_config.font); pango_cairo_font_map_set_default(NULL); cairo_debug_reset_static_data(); FcFini(); diff --git a/keybinding.c b/keybinding.c index 395705e..2c39b65 100644 --- a/keybinding.c +++ b/keybinding.c @@ -76,6 +76,12 @@ keybinding_free(struct keybinding *keybinding, bool recursive) { free(keybinding->data.i_cfg->mapped_to_output); } free(keybinding->data.o_cfg); + break; + case KEYBINDING_CONFIGURE_MESSAGE: + if(keybinding->data.m_cfg->font != NULL) { + free(keybinding->data.m_cfg->font); + } + break; default: break; } @@ -910,6 +916,30 @@ keybinding_configure_input(struct cg_server *server, cg_input_apply_config(cfg, server); } +void +keybinding_configure_message(struct cg_server *server, + struct cg_message_config *config) { + if(config->font != NULL) { + free(server->message_config.font); + server->message_config.font = strdup(config->font); + } + if(config->display_time != -1) { + server->message_config.display_time = config->display_time; + } + if(config->bg_color[0] != -1) { + server->message_config.bg_color[0] = config->bg_color[0]; + server->message_config.bg_color[1] = config->bg_color[1]; + server->message_config.bg_color[2] = config->bg_color[2]; + server->message_config.bg_color[3] = config->bg_color[3]; + } + if(config->fg_color[0] != -1) { + server->message_config.fg_color[0] = config->fg_color[0]; + server->message_config.fg_color[1] = config->fg_color[1]; + server->message_config.fg_color[2] = config->fg_color[2]; + server->message_config.fg_color[3] = config->fg_color[3]; + } +} + void keybinding_configure_input_dev(struct cg_server *server, struct cg_input_config *cfg) {} @@ -1051,6 +1081,9 @@ run_action(enum keybinding_action action, struct cg_server *server, case KEYBINDING_CONFIGURE_OUTPUT: keybinding_configure_output(server, data.o_cfg); break; + case KEYBINDING_CONFIGURE_MESSAGE: + keybinding_configure_message(server, data.m_cfg); + break; case KEYBINDING_CONFIGURE_INPUT: keybinding_configure_input(server, data.i_cfg); break; diff --git a/message.c b/message.c index 0bcb5f1..9e600bb 100644 --- a/message.c +++ b/message.c @@ -35,7 +35,6 @@ struct wlr_texture * create_message_texture(const char *string, const struct cg_output *output) { const int WIDTH_PADDING = 8; const int HEIGHT_PADDING = 2; - const char *font = "pango:Monospace 10"; struct wlr_texture *texture; double scale = output->wlr_output->scale; @@ -60,7 +59,8 @@ create_message_texture(const char *string, const struct cg_output *output) { cairo_font_options_set_subpixel_order( fo, to_cairo_subpixel_order(output->wlr_output->subpixel)); cairo_set_font_options(c, fo); - get_text_size(c, font, &width, &height, NULL, scale, "%s", string); + get_text_size(c, output->server->message_config.font, &width, &height, NULL, + scale, "%s", string); width += 2 * WIDTH_PADDING; height += 2 * HEIGHT_PADDING; cairo_surface_destroy(dummy_surface); @@ -72,16 +72,19 @@ create_message_texture(const char *string, const struct cg_output *output) { cairo_set_antialias(cairo, CAIRO_ANTIALIAS_BEST); cairo_set_font_options(cairo, fo); cairo_font_options_destroy(fo); - cairo_set_source_rgba(cairo, 0.9, 0.85, 0.85, 1.0); + float *bg_col = output->server->message_config.bg_color; + cairo_set_source_rgba(cairo, bg_col[0], bg_col[1], bg_col[2], bg_col[3]); cairo_paint(cairo); PangoContext *pango = pango_cairo_create_context(cairo); - cairo_set_source_rgba(cairo, 0, 0, 0, 1); + float *fg_col = output->server->message_config.fg_color; + cairo_set_source_rgba(cairo, fg_col[0], fg_col[1], fg_col[2], fg_col[3]); cairo_set_line_width(cairo, 2); cairo_rectangle(cairo, 0, 0, width, height); cairo_stroke(cairo); cairo_move_to(cairo, WIDTH_PADDING, HEIGHT_PADDING); - pango_printf(cairo, font, scale, "%s", string); + pango_printf(cairo, output->server->message_config.font, scale, "%s", + string); cairo_surface_flush(surface); unsigned char *data = cairo_image_surface_get_data(surface); @@ -175,7 +178,7 @@ message_printf(struct cg_output *output, const char *fmt, ...) { message_set_output(output, buffer, box, CG_MESSAGE_TOP_RIGHT); free(buffer); - alarm(output->server->message_timeout); + alarm(output->server->message_config.display_time); } #if CG_HAS_FANALYZE #pragma GCC diagnostic pop @@ -194,7 +197,7 @@ message_printf_pos(struct cg_output *output, struct wlr_box *position, message_set_output(output, buffer, position, align); free(buffer); - alarm(output->server->message_timeout); + alarm(output->server->message_config.display_time); } void diff --git a/server.h b/server.h index 092f7bf..a5139f6 100644 --- a/server.h +++ b/server.h @@ -3,6 +3,7 @@ #include "config.h" #include "ipc_server.h" +#include "message.h" #include #include @@ -44,6 +45,7 @@ struct cg_server { struct keybinding_list *keybindings; struct wl_list output_config; struct wl_list input_config; + struct cg_message_config message_config; enum wl_output_transform output_transform; From 86f62ac2f8c9923a0d5778e821d0d3be5417aeb3 Mon Sep 17 00:00:00 2001 From: project-repo Date: Fri, 29 Jul 2022 21:31:44 +0200 Subject: [PATCH 03/33] Fix screen and movetoscreen commands --- keybinding.c | 107 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 90 insertions(+), 17 deletions(-) diff --git a/keybinding.c b/keybinding.c index 2c39b65..ec83acc 100644 --- a/keybinding.c +++ b/keybinding.c @@ -600,23 +600,8 @@ into_process(const char *command) { } void -keybinding_cycle_outputs(struct cg_server *server, bool reverse) { - if(reverse) { - server->curr_output = wl_container_of(server->curr_output->link.prev, - server->curr_output, link); - } else { - server->curr_output = wl_container_of(server->curr_output->link.next, - server->curr_output, link); - } - if(&server->curr_output->link == &server->outputs) { - if(reverse) { - server->curr_output = wl_container_of( - server->curr_output->link.prev, server->curr_output, link); - } else { - server->curr_output = wl_container_of( - server->curr_output->link.next, server->curr_output, link); - } - } +set_output(struct cg_server *server, struct cg_output *output) { + server->curr_output = output; seat_set_focus( server->seat, server->curr_output->workspaces[server->curr_output->curr_workspace] @@ -624,6 +609,26 @@ keybinding_cycle_outputs(struct cg_server *server, bool reverse) { message_printf(server->curr_output, "Current Output"); } +void +keybinding_cycle_outputs(struct cg_server *server, bool reverse) { + struct cg_output *output = NULL; + if(reverse) { + output = wl_container_of(server->curr_output->link.prev, + server->curr_output, link); + } else { + output = wl_container_of(server->curr_output->link.next, + server->curr_output, link); + } + if(&output->link == &server->outputs) { + if(reverse) { + output = wl_container_of(output->link.prev, output, link); + } else { + output = wl_container_of(output->link.next, output, link); + } + } + set_output(server, output); +} + /* Cycle through views, whereby the workspace does not change */ void keybinding_cycle_views(struct cg_server *server, bool reverse) { @@ -843,6 +848,49 @@ keybinding_set_background(struct cg_server *server, float *bg) { server->bg_color[2] = bg[2]; } +void +keybinding_switch_output(struct cg_server *server, int output) { + struct cg_output *it; + int count = 1; + wl_list_for_each(it, &server->outputs, link) { + if(count == output) { + set_output(server, it); + return; + } + ++count; + } + message_printf(server->curr_output, "Output %d does not exist", output); + return; +} + +void +keybinding_move_view_to_output(struct cg_server *server, int output_num) { + struct cg_view *view = + server->curr_output->workspaces[server->curr_output->curr_workspace] + ->focused_tile->view; + if(view != NULL) { + wl_list_remove(&view->link); + server->curr_output->workspaces[server->curr_output->curr_workspace] + ->focused_tile->view = NULL; + keybinding_cycle_views(server, false); + if(server->curr_output->workspaces[server->curr_output->curr_workspace] + ->focused_tile->view == NULL) { + seat_set_focus(server->seat, NULL); + } + } + keybinding_switch_output(server, output_num); + if(view != NULL) { + struct cg_workspace *ws = + server->curr_output + ->workspaces[server->curr_output->curr_workspace]; + view->workspace = ws; + wl_list_insert(&ws->views, &view->link); + ws->focused_tile->view = view; + view_maximize(view, ws->focused_tile); + seat_set_focus(server->seat, view); + } +} + void keybinding_move_view_to_workspace(struct cg_server *server, uint32_t ws) { struct cg_view *view = @@ -871,6 +919,23 @@ keybinding_move_view_to_workspace(struct cg_server *server, uint32_t ws) { } } +void +merge_config(struct cg_output_config *config_new, + struct cg_output_config *config_old) { + if(config_new->status == OUTPUT_DEFAULT) { + config_new->status = config_old->status; + } + if(config_new->pos.x == -1) { + config_new->pos = config_old->pos; + } + if(config_new->refresh_rate == 0) { + config_new->refresh_rate = config_old->refresh_rate; + } + if(config_new->priority == -1) { + config_new->priority = config_old->priority; + } +} + void keybinding_configure_output(struct cg_server *server, struct cg_output_config *cfg) { @@ -889,6 +954,7 @@ keybinding_configure_output(struct cg_server *server, wl_list_for_each_safe(it, tmp, &server->output_config, link) { if(strcmp(config->output_name, it->output_name) == 0) { wl_list_remove(&it->link); + merge_config(config, it); free(it->output_name); free(it); } @@ -986,6 +1052,9 @@ run_action(enum keybinding_action action, struct cg_server *server, case KEYBINDING_SWITCH_WORKSPACE: keybinding_switch_ws(server, data.u); break; + case KEYBINDING_SWITCH_OUTPUT: + keybinding_switch_output(server, data.u); + break; case KEYBINDING_SWITCH_MODE: server->seat->mode = data.u; break; @@ -1014,6 +1083,10 @@ run_action(enum keybinding_action action, struct cg_server *server, keybinding_move_view_to_workspace(server, data.u); break; } + case KEYBINDING_MOVE_VIEW_TO_OUTPUT: { + keybinding_move_view_to_output(server, data.u); + break; + } case KEYBINDING_SWAP_LEFT: { swap_tile_left( server->curr_output->workspaces[server->curr_output->curr_workspace] From ce4ba7296ae56da20b81cfa9819bd6274159b3e6 Mon Sep 17 00:00:00 2001 From: project-repo Date: Fri, 29 Jul 2022 21:00:00 +0200 Subject: [PATCH 04/33] Fix reproducible hash --- Hashes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hashes.md b/Hashes.md index 1620c13..85f0de9 100644 --- a/Hashes.md +++ b/Hashes.md @@ -3,7 +3,7 @@ 1.9.1 cagebreak * sha 256: c247ff69f0eaabab5326b54a230add89c384ed957c53df80b4b0c1f22497d4f1 - * sha 512: 02145f9afe378fa5d29002b754e515ca0ab7314478582b5cd8ddbc95cafe15a421aeb5288da1ab9bb4c91241e73b3fb4023699742b5a452de82d42507a5d7af5 + * sha 512: c75bdce30f7a9d64c78f2dcfa4a0c676e258976dc902e1a627765fa93d27d3de6496b520fcd51884d1ee0f4927f052fb3fbfd6e0c2d4b5a7881fdfef5aac097d 1.9.1 cagebreak.1 From db91f2953db8c60317463b945f7fd5ffc4aeb0f5 Mon Sep 17 00:00:00 2001 From: project-repo Date: Fri, 29 Jul 2022 21:14:17 +0200 Subject: [PATCH 05/33] Rename old sigs --- ...-config.5.sig => 1.9.0-cagebreak-config.5.sig} | Bin signatures/1.9.0-cagebreak.1.sig | Bin 0 -> 566 bytes signatures/1.9.0.sig | Bin 0 -> 566 bytes 3 files changed, 0 insertions(+), 0 deletions(-) rename signatures/{cagebreak-config.5.sig => 1.9.0-cagebreak-config.5.sig} (100%) create mode 100644 signatures/1.9.0-cagebreak.1.sig create mode 100644 signatures/1.9.0.sig diff --git a/signatures/cagebreak-config.5.sig b/signatures/1.9.0-cagebreak-config.5.sig similarity index 100% rename from signatures/cagebreak-config.5.sig rename to signatures/1.9.0-cagebreak-config.5.sig diff --git a/signatures/1.9.0-cagebreak.1.sig b/signatures/1.9.0-cagebreak.1.sig new file mode 100644 index 0000000000000000000000000000000000000000..47ba7f2978d4cfa6d59e5b25d8e340db574ad9ef GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j+_E$ufVhrCX*AwCnJ$3ujQV~JG-0%BpPe*g*z5TM6H zgo=}DIUWoz{7hfGwj z^imey0J@ey-HnU+B@C^oa-Ib0cEc4X%ehZ(a2a_vs23Y_k3lCVFk{MGsxw>qMvjWt zRDDJP;fxyhvo+2LrGo`xb-~fRB{I>mUl;lw!y;n<-D%{_>@RgJO(~P-@P}4E>)1c? zBtl!)Kzq55_Gb4?)o@(YjfVr@Mr>^)azcSCeaV34$NfO!AF=9pvR%+_wdk@8%mw;$ z=u_9NpuLBE2J0hv<4BIY4TUx3as)h4-eVr;vq7{%DNML|$D0Ii-8;17x_#TyM=BK? zPz`O`y}Y#QX9t@YxtIJh*M=^Xt+^uZ1j?Wi`N`I0rVLX!K+ykoCyBfWv}fV~c!Z*V z@eNWSR{CACsW6`TSjmP-8>e#vHh8A>rRyfhvA#IVeC8-r62C27bbVL&1A>rszmJ1)If? zx)<_hI(xdUgSHKi+2oj7bLWd14Ry)Dxl0Q6a}*ykRohKejfqufwkluKOkIs=F^dK) z(xGR7HVsYvD_98Ti4<(0n98&j0ex#xY%DqS%%E+FD|YOcUY3i)f<^at+w@s$xcxM- ET8sA(CjbBd literal 0 HcmV?d00001 diff --git a/signatures/1.9.0.sig b/signatures/1.9.0.sig new file mode 100644 index 0000000000000000000000000000000000000000..2cc14a8392a06e2f4bee8076cd2bd3acdee2f4cc GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j+_E$ufVhrCX*AwCnJ$3ujQV~JG-0%BpPd;kgw5TM6H zgo6OjSbm&_ZEJ$$GagLEuabvlKYurs-dCP z#3oIYm2Oi?{pu1ZF{He;gxqi@kqjd%|G3QZ>3@Su%n~0l%d#3a{ckK9_K0WjWfPAo zNkknL(M{;s?|M55Zd zW+nlT^h+U-g9YKl2?|kQrMea*2@zxm+<=NDnI~D=obs&(((46JW6TfX%W!R40dn0M z1VnSD9d`RJzY)dZuKUv)>h_&ZLNWeJV2*b-Hp$qj5~{~N!;h{G-CT&b@|1#s8oxAP z^PDV3tXr>ju?9Yf-$rPOgG)x5l?Q8%ncMRxa@} zsZUn+m@#F3baYgr#wwd+>S)gm`y7V>e&`8IYafPMo;jl9?x4+M1#Qrlh6{?Ii&$zi z=E{C}c0!`SQ5s9Vyq%1}8_@_ANb&Xk8+QE1@YTdJ(iRM3sX Ev3HpTg#Z8m literal 0 HcmV?d00001 From f7401e591a1fefdc7ca50659a4fed943c20685e1 Mon Sep 17 00:00:00 2001 From: project-repo Date: Fri, 29 Jul 2022 21:43:58 +0200 Subject: [PATCH 06/33] Add signatures --- signatures/cagebreak.1.sig | Bin 566 -> 0 bytes signatures/cagebreak.sig | Bin 566 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 signatures/cagebreak.1.sig delete mode 100644 signatures/cagebreak.sig diff --git a/signatures/cagebreak.1.sig b/signatures/cagebreak.1.sig deleted file mode 100644 index 47ba7f2978d4cfa6d59e5b25d8e340db574ad9ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmV-60?GY}0y6{v0SEvc79j+_E$ufVhrCX*AwCnJ$3ujQV~JG-0%BpPe*g*z5TM6H zgo=}DIUWoz{7hfGwj z^imey0J@ey-HnU+B@C^oa-Ib0cEc4X%ehZ(a2a_vs23Y_k3lCVFk{MGsxw>qMvjWt zRDDJP;fxyhvo+2LrGo`xb-~fRB{I>mUl;lw!y;n<-D%{_>@RgJO(~P-@P}4E>)1c? zBtl!)Kzq55_Gb4?)o@(YjfVr@Mr>^)azcSCeaV34$NfO!AF=9pvR%+_wdk@8%mw;$ z=u_9NpuLBE2J0hv<4BIY4TUx3as)h4-eVr;vq7{%DNML|$D0Ii-8;17x_#TyM=BK? zPz`O`y}Y#QX9t@YxtIJh*M=^Xt+^uZ1j?Wi`N`I0rVLX!K+ykoCyBfWv}fV~c!Z*V z@eNWSR{CACsW6`TSjmP-8>e#vHh8A>rRyfhvA#IVeC8-r62C27bbVL&1A>rszmJ1)If? zx)<_hI(xdUgSHKi+2oj7bLWd14Ry)Dxl0Q6a}*ykRohKejfqufwkluKOkIs=F^dK) z(xGR7HVsYvD_98Ti4<(0n98&j0ex#xY%DqS%%E+FD|YOcUY3i)f<^at+w@s$xcxM- ET8sA(CjbBd diff --git a/signatures/cagebreak.sig b/signatures/cagebreak.sig deleted file mode 100644 index 2cc14a8392a06e2f4bee8076cd2bd3acdee2f4cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmV-60?GY}0y6{v0SEvc79j+_E$ufVhrCX*AwCnJ$3ujQV~JG-0%BpPd;kgw5TM6H zgo6OjSbm&_ZEJ$$GagLEuabvlKYurs-dCP z#3oIYm2Oi?{pu1ZF{He;gxqi@kqjd%|G3QZ>3@Su%n~0l%d#3a{ckK9_K0WjWfPAo zNkknL(M{;s?|M55Zd zW+nlT^h+U-g9YKl2?|kQrMea*2@zxm+<=NDnI~D=obs&(((46JW6TfX%W!R40dn0M z1VnSD9d`RJzY)dZuKUv)>h_&ZLNWeJV2*b-Hp$qj5~{~N!;h{G-CT&b@|1#s8oxAP z^PDV3tXr>ju?9Yf-$rPOgG)x5l?Q8%ncMRxa@} zsZUn+m@#F3baYgr#wwd+>S)gm`y7V>e&`8IYafPMo;jl9?x4+M1#Qrlh6{?Ii&$zi z=E{C}c0!`SQ5s9Vyq%1}8_@_ANb&Xk8+QE1@YTdJ(iRM3sX Ev3HpTg#Z8m From 51614d23b8423618aa40d6f29008c18c86b6842f Mon Sep 17 00:00:00 2001 From: project-repo Date: Fri, 29 Jul 2022 21:52:13 +0200 Subject: [PATCH 07/33] Remove Hashes --- Hashes.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Hashes.md b/Hashes.md index 85f0de9..672fc39 100644 --- a/Hashes.md +++ b/Hashes.md @@ -1,19 +1,5 @@ # Hashes -1.9.1 cagebreak - - * sha 256: c247ff69f0eaabab5326b54a230add89c384ed957c53df80b4b0c1f22497d4f1 - * sha 512: c75bdce30f7a9d64c78f2dcfa4a0c676e258976dc902e1a627765fa93d27d3de6496b520fcd51884d1ee0f4927f052fb3fbfd6e0c2d4b5a7881fdfef5aac097d - -1.9.1 cagebreak.1 - - * sha 256: f9c1ee94c0788b98f1e8d93433a0e39d4265ed5c8107e964648da11c60c995ed - * sha 512: 1d39748c42a56852ce21aa5ea872160da0810d0539901f6c307b141d4c2545c52a7de98d924e4e45827dafa8cb76b483abf5e02403e6536f69d2144575d3dfdb - -1.9.1 cagebreak-config.5 - - * sha 256: 2b0d5655e01942cb5130a95c7209e32c1ce3f44411f2a3294a160d6a2232bef4 - * sha 512: c13a92e091e56aad099c12c4bf652943bf43dad5aace61677af992331a2700d3d2f433cd2a674cbc2cc080e971169516973835c44416de555a85b5aae9da9a9d 1.9.0 cagebreak From e20b24204baef15d0d0d1dde0f32479b731202cb Mon Sep 17 00:00:00 2001 From: project-repo Date: Fri, 29 Jul 2022 21:53:13 +0200 Subject: [PATCH 08/33] Add Issues to Bugs.md --- Bugs.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Bugs.md b/Bugs.md index 517c471..822f3f6 100644 --- a/Bugs.md +++ b/Bugs.md @@ -636,3 +636,19 @@ Cagebreak crashed when a touch device was removed due to a call to Cagebreak 1.9.0 broke the nextscreen and prevscreen functionality. This issue was not present in earlier releases. +## Issue 36 + + * github issue number: N/A + * Fixed: 1.9.1 + +Cagebreak 1.9.0 broke the configure_message functionality. +This issue was not present in earlier releases. + +## Issue 37 + + * github issue number: N/A + * Fixed: 1.9.1 + +Cagebreak 1.9.0 broke the screen/movetoscreen functionality. +This issue was not present in earlier releases. + From 11425addefc6955bcfc951fba42a5af7e4bee601 Mon Sep 17 00:00:00 2001 From: project-repo Date: Fri, 29 Jul 2022 21:56:49 +0200 Subject: [PATCH 09/33] Add signatures --- signatures/cagebreak-config.5.sig | Bin 0 -> 566 bytes signatures/cagebreak.1.sig | Bin 0 -> 566 bytes signatures/cagebreak.sig | Bin 0 -> 566 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 signatures/cagebreak-config.5.sig create mode 100644 signatures/cagebreak.1.sig create mode 100644 signatures/cagebreak.sig diff --git a/signatures/cagebreak-config.5.sig b/signatures/cagebreak-config.5.sig new file mode 100644 index 0000000000000000000000000000000000000000..7349ebcab4fa32168646d48f892bcd5596a3192f GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j+_E$ufVhrCX*AwCnJ$3ujQV~JG-0%GJlF#rk)5TM6H zgo9>tYPA>a(B~!^>{#QM`;&Ks#9hY(iZU4k8V6+u7a|13x%(-a?xh zLZT+17sI6;Yl3Skve`me;ImzqMO%Nfz*_*j=t~S|@K%n0#0NbXgkj#=x5*t~E*td> zNsM2jL{#={Bdk~eU_)i&_fvD~)?ev)>^6K7LzObD45@&;A})&qQ@XPnzCINxvO<-* zySrj>7^!e`*Lhscg7zUkdY|RmIVN4{I&Y1nI3Z&s9wXm-)?w`T$TD7wS9-*n2Ih8f z7n87;Q?0k}@?xs0ERWIHqsFuyTyY*{aUC%woI;%z)|TCJTe)&s2`moz3V$2xSc%j7 zvnbt(W;`v}rVnBu2lRdjuw69ser;oE0!icWuHt>9l)6xjE$X=uzfI6;iT{2}M8AY& zN8^@X)bFtcg{lXgR8lKqAEmGmuW==XG;gd&N@P^`3QO02-OK2kOH|?%qrzo)?b=h- zLh29(45Y1EW*LgG2ZUJRpB;GzT&+AoDqtJK&?b#Fz!dA3T=Q*~6g{~PAu|j%4q>qt zPQv)iwo%o;{K47J($(o$abbd_zvjg|)+SN8uc~J{bP<+f7PT!o81aUMd)X(zx~6zV EzrwKw%m4rY literal 0 HcmV?d00001 diff --git a/signatures/cagebreak.1.sig b/signatures/cagebreak.1.sig new file mode 100644 index 0000000000000000000000000000000000000000..e0a399bb986388fd35276fee09dbbf5ccac80832 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j+_E$ufVhrCX*AwCnJ$3ujQV~JG-0%GJlIRFX?5TM6H zgo|>`7|>GzW7G(eSg*~ zfTkz5Du3Oxjr6A1SZMx6YqzyeL8>)${n*zq2@$+z+J;KQM4^NB5B3)kO z>RmD9m{g=l-qrqVTr{j0XbFR{36~j$KY4j1xz41Oo2Vj~id<#<^pP=9l77((z>Y}f z+Nlu;%gUVse4ClfeV!n)#wmm|emr9DTr%OD;}Dvw8xOoAOJF9LFR%^=fB^LWYSLm@ z7qV{#W4*=i8c$wEVN;|H6Xg7@17m+ztOd1C-(Gr?7qs#$<$N;tVtSq_R4^uk*y;#v EW5~}ALjV8( literal 0 HcmV?d00001 diff --git a/signatures/cagebreak.sig b/signatures/cagebreak.sig new file mode 100644 index 0000000000000000000000000000000000000000..1813ed2426494a05f625ea4b7e3ab605ed4f8601 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j+_E$ufVhrCX*AwCnJ$3ujQV~JG-0%GJlH2?|;5TM6H zgo9ROudEg(73sF&{gAji%Mu!6xkWxIWi z-X<6Kgywn!hlTI#HRgK1`mwQd$H+9}mG=U&vNudZ*V%%pxZlNm488bpS@LB`3Iwz5 zQfkURVaPvFZA7GjUH&*>tqqgYtYQ0R1yz8m6XN(Oav;*5?Hp@THH2QuS*CNSqsVA~rE25)((-C@m%&1q>FB6Hq+*7!hLQ7L-+aLe)L5=S@ z$}y!zJmcmxsze_~47z#*o3tIBtDYb{+^mM!!_Dn;NVQi9%kp2?o0 z;h~`W_|OhSJ+%VWaWW;tck(^G zYhYe|dhWE0y_I%{W=xhBVuv;ixd=11gw)#^XtEH=c<`aXy*w(q)v5d$L(FlsEnd%m_B1OJ9|G zY+G(nU5L4jyR49Qq0+4q-T5>j0WD1rAO@3Vl5v+30OlLqNij*hoj~ECUMrZkGFI}X E$89nRGynhq literal 0 HcmV?d00001 From 645a51ad101b0a135eb7bf8501be9e9ab32609f8 Mon Sep 17 00:00:00 2001 From: project-repo Date: Fri, 29 Jul 2022 21:59:49 +0200 Subject: [PATCH 10/33] Add new Hashes --- Hashes.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Hashes.md b/Hashes.md index 672fc39..97d6217 100644 --- a/Hashes.md +++ b/Hashes.md @@ -1,5 +1,19 @@ # Hashes +1.9.1 cagebreak + + * sha 256: 262c67170eb2a39174d40f97d940707029dca0b2b613b514a1cca29152a12665 + * sha 512: bbd962eaf90441338a67215fc7ac0a717b8cb7bd93ce7ef7ed446aa1df9f4e44026994cc1172e6245e5cd4b9c588150ed9c894941069c5c132c9e2009523c241 + +1.9.1 cagebreak.1 + + * sha 256: f9c1ee94c0788b98f1e8d93433a0e39d4265ed5c8107e964648da11c60c995ed + * sha 512: 1d39748c42a56852ce21aa5ea872160da0810d0539901f6c307b141d4c2545c52a7de98d924e4e45827dafa8cb76b483abf5e02403e6536f69d2144575d3dfdb + +1.9.1 cagebreak-config.5 + + * sha 256: 2b0d5655e01942cb5130a95c7209e32c1ce3f44411f2a3294a160d6a2232bef4 + * sha 512: c13a92e091e56aad099c12c4bf652943bf43dad5aace61677af992331a2700d3d2f433cd2a674cbc2cc080e971169516973835c44416de555a85b5aae9da9a9d 1.9.0 cagebreak From c693ba56e8a2ee4d6e918881149e213b4714a657 Mon Sep 17 00:00:00 2001 From: project-repo Date: Sun, 3 Dec 2023 20:19:42 +0100 Subject: [PATCH 11/33] Update to wlroots 0.17 --- cagebreak.c | 27 +++++++++++---------------- fuzz/fuzz-lib.c | 9 ++++----- idle_inhibit_v1.c | 4 ++-- keybinding.c | 21 ++++++++------------- meson.build | 2 +- message.c | 1 - output.c | 36 +++++++++--------------------------- output.h | 2 +- seat.c | 44 +++++++++++++++++++++----------------------- server.h | 4 +++- view.c | 1 - view.h | 4 ++++ workspace.c | 3 --- xdg_shell.c | 17 +++++++++++------ xwayland.c | 39 ++++++++++++++++++++++++++++++--------- xwayland.h | 2 ++ 16 files changed, 107 insertions(+), 109 deletions(-) diff --git a/cagebreak.c b/cagebreak.c index 4437331..fda54ba 100644 --- a/cagebreak.c +++ b/cagebreak.c @@ -26,8 +26,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -368,7 +368,7 @@ main(int argc, char *argv[]) { wl_event_loop_add_signal(event_loop, SIGPIPE, handle_signal, &server); server.event_loop = event_loop; - backend = wlr_backend_autocreate(server.wl_display); + backend = wlr_backend_autocreate(server.wl_display,&server.session); if(!backend) { wlr_log(WLR_ERROR, "Unable to create the wlroots backend"); ret = 1; @@ -428,9 +428,9 @@ main(int argc, char *argv[]) { ret = 1; goto end; } - wlr_scene_attach_output_layout(server.scene, server.output_layout); + server.scene_output_layout=wlr_scene_attach_output_layout(server.scene, server.output_layout); - compositor = wlr_compositor_create(server.wl_display, server.renderer); + compositor = wlr_compositor_create(server.wl_display,6,server.renderer); if(!compositor) { wlr_log(WLR_ERROR, "Unable to create the wlroots compositor"); ret = 1; @@ -474,14 +474,8 @@ main(int argc, char *argv[]) { goto end; } - server.idle = wlr_idle_create(server.wl_display); - if(!server.idle) { - wlr_log(WLR_ERROR, "Unable to create the idle tracker"); - ret = 1; - goto end; - } - server.idle_inhibit_v1 = wlr_idle_inhibit_v1_create(server.wl_display); + server.idle = wlr_idle_notifier_v1_create(server.wl_display); if(!server.idle_inhibit_v1) { wlr_log(WLR_ERROR, "Cannot create the idle inhibitor"); ret = 1; @@ -687,6 +681,12 @@ main(int argc, char *argv[]) { wl_display_run(server.wl_display); +#if CG_HAS_XWAYLAND + if(server.xwayland != NULL) { + wlr_xwayland_destroy(server.xwayland); + } +#endif + wl_display_destroy_clients(server.wl_display); end: @@ -734,11 +734,6 @@ end: if(server.seat != NULL) { seat_destroy(server.seat); } -#if CG_HAS_XWAYLAND - if(server.xwayland != NULL) { - wlr_xwayland_destroy(server.xwayland); - } -#endif if(sigint_source != NULL) { wl_event_source_remove(sigint_source); diff --git a/fuzz/fuzz-lib.c b/fuzz/fuzz-lib.c index d331880..661eac6 100644 --- a/fuzz/fuzz-lib.c +++ b/fuzz/fuzz-lib.c @@ -25,10 +25,9 @@ #include #include #include -#include #include +#include #include -#include #include #include #include @@ -271,9 +270,9 @@ LLVMFuzzerInitialize(int *argc, char ***argv) { ret = 1; goto end; } - wlr_scene_attach_output_layout(server.scene, server.output_layout); + server.scene_output_layout=wlr_scene_attach_output_layout(server.scene, server.output_layout); - compositor = wlr_compositor_create(server.wl_display, server.renderer); + compositor = wlr_compositor_create(server.wl_display, 5,server.renderer); if(!compositor) { wlr_log(WLR_ERROR, "Unable to create the wlroots compositor"); ret = 1; @@ -310,7 +309,7 @@ LLVMFuzzerInitialize(int *argc, char ***argv) { goto end; } - server.idle = wlr_idle_create(server.wl_display); + server.idle = wlr_idle_notifier_v1_create(server.wl_display); if(!server.idle) { wlr_log(WLR_ERROR, "Unable to create the idle tracker"); ret = 1; diff --git a/idle_inhibit_v1.c b/idle_inhibit_v1.c index b4f91f9..019d47b 100644 --- a/idle_inhibit_v1.c +++ b/idle_inhibit_v1.c @@ -2,8 +2,8 @@ // SPDX-License-Identifier: MIT #include -#include #include +#include #include "idle_inhibit_v1.h" #include "server.h" @@ -24,7 +24,7 @@ idle_inhibit_v1_check_active(struct cg_server *server) { /* As of right now, this does not check whether the inhibitor * is visible or not.*/ bool inhibited = !wl_list_empty(&server->inhibitors); - wlr_idle_set_enabled(server->idle, NULL, !inhibited); + wlr_idle_notifier_v1_set_inhibited(server->idle, inhibited); } #if CG_HAS_FANALYZE #pragma GCC diagnostic pop diff --git a/keybinding.c b/keybinding.c index eaf2ae7..221ca8b 100644 --- a/keybinding.c +++ b/keybinding.c @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include @@ -506,11 +505,10 @@ keybinding_workspace_fullscreen(struct cg_server *server) { // Switch to a differerent virtual terminal static int -keybinding_switch_vt(struct wlr_backend *backend, unsigned int vt) { - if(wlr_backend_is_multi(backend)) { - struct wlr_session *session = wlr_backend_get_session(backend); - if(session) { - wlr_session_change_vt(session, vt); +keybinding_switch_vt(struct cg_server *server, unsigned int vt) { + if(wlr_backend_is_multi(server->backend)) { + if(server->session) { + wlr_session_change_vt(server->session, vt); } return 0; } @@ -1627,11 +1625,10 @@ void set_cursor(bool enabled, struct cg_seat *seat) { if(enabled == true) { seat->enable_cursor = true; - wlr_xcursor_manager_set_cursor_image(seat->xcursor_manager, - DEFAULT_XCURSOR, seat->cursor); + wlr_cursor_set_xcursor(seat->cursor,seat->xcursor_manager, DEFAULT_XCURSOR); } else { seat->enable_cursor = false; - wlr_cursor_set_image(seat->cursor, NULL, 0, 0, 0, 0, 0, 0); + wlr_cursor_unset_image(seat->cursor); } } @@ -1645,7 +1642,7 @@ run_action(enum keybinding_action action, struct cg_server *server, server->running = false; break; case KEYBINDING_CHANGE_TTY: - return keybinding_switch_vt(server->backend, data.u); + return keybinding_switch_vt(server, data.u); case KEYBINDING_CURSOR: set_cursor(data.i, server->seat); break; @@ -1688,9 +1685,7 @@ run_action(enum keybinding_action action, struct cg_server *server, if(data.u != server->seat->default_mode) { wlr_seat_pointer_notify_clear_focus(server->seat->seat); if(server->seat->enable_cursor == true) { - wlr_xcursor_manager_set_cursor_image( - server->seat->xcursor_manager, "dot_box_mask", - server->seat->cursor); + wlr_cursor_set_xcursor(server->seat->cursor,server->seat->xcursor_manager, "dot_box_mask"); } } server->seat->mode = data.u; diff --git a/meson.build b/meson.build index fb83017..fa6b02d 100644 --- a/meson.build +++ b/meson.build @@ -55,7 +55,7 @@ if is_freebsd ) endif -wlroots = dependency('wlroots', version: ['>=0.16.1', '< 0.17.0']) +wlroots = dependency('wlroots', version: ['>=0.16.1', '< 0.18.0']) wayland_protos = dependency('wayland-protocols', version: '>=1.14') wayland_server = dependency('wayland-server') wayland_cursor = dependency('wayland-cursor') diff --git a/message.c b/message.c index 74b1d0a..d74b8cf 100644 --- a/message.c +++ b/message.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include diff --git a/output.c b/output.c index 506f5bd..74fb0a1 100644 --- a/output.c +++ b/output.c @@ -17,12 +17,12 @@ #include #include #include -#include #include #include #include #include #include +#include #if CG_HAS_XWAYLAND #include #endif @@ -42,7 +42,7 @@ void output_clear(struct cg_output *output) { struct cg_server *server = output->server; - wlr_output_layout_remove(server->output_layout, output->wlr_output); + wlr_scene_output_destroy(output->scene_output); if(server->running && server->curr_output == output && wl_list_length(&server->outputs) > 1) { @@ -118,7 +118,6 @@ output_destroy(struct cg_output *output) { int outp_num = output_get_num(output); wl_list_remove(&output->destroy.link); - wl_list_remove(&output->mode.link); wl_list_remove(&output->commit.link); wl_list_remove(&output->frame.link); @@ -166,7 +165,7 @@ handle_output_frame(struct wl_listener *listener, void *data) { if(scene_output == NULL) { return; } - wlr_scene_output_commit(scene_output); + wlr_scene_output_commit(scene_output,NULL); struct timespec now = {0}; clock_gettime(CLOCK_MONOTONIC, &now); @@ -439,8 +438,8 @@ handle_output_commit(struct wl_listener *listener, void *data) { return; } - if(event->committed & - (WLR_OUTPUT_STATE_TRANSFORM | WLR_OUTPUT_STATE_SCALE)) { + if(event->state->committed & + (WLR_OUTPUT_STATE_TRANSFORM | WLR_OUTPUT_STATE_SCALE | WLR_OUTPUT_STATE_MODE)) { struct cg_view *view; wl_list_for_each( view, &output->workspaces[output->curr_workspace]->views, link) { @@ -451,23 +450,6 @@ handle_output_commit(struct wl_listener *listener, void *data) { } } -static void -handle_output_mode(struct wl_listener *listener, void *data) { - struct cg_output *output = wl_container_of(listener, output, mode); - - if(!output->wlr_output->enabled || output->workspaces == NULL) { - return; - } - - struct cg_view *view; - wl_list_for_each(view, &output->workspaces[output->curr_workspace]->views, - link) { - if(view_is_visible(view)) { - view_maximize(view, view->tile); - } - } -} - void output_make_workspace_fullscreen(struct cg_output *output, int ws) { struct cg_server *server = output->server; @@ -517,6 +499,7 @@ handle_new_output(struct wl_listener *listener, void *data) { } struct cg_output *output = calloc(1, sizeof(struct cg_output)); + output->scene_output=wlr_scene_output_create(server->scene,wlr_output); if(!output) { wlr_log(WLR_ERROR, "Failed to allocate output"); return; @@ -568,8 +551,8 @@ handle_new_output(struct wl_listener *listener, void *data) { if(server->curr_output == NULL) { server->curr_output = output; } - wlr_xcursor_manager_set_cursor_image(server->seat->xcursor_manager, - DEFAULT_XCURSOR, server->seat->cursor); + wlr_cursor_set_xcursor(server->seat->cursor, server->seat->xcursor_manager, + DEFAULT_XCURSOR); wlr_cursor_warp(server->seat->cursor, NULL, 0, 0); output->destroy.notify = handle_output_destroy; @@ -578,8 +561,7 @@ handle_new_output(struct wl_listener *listener, void *data) { wl_signal_add(&wlr_output->events.frame, &output->frame); output->commit.notify = handle_output_commit; wl_signal_add(&wlr_output->events.commit, &output->commit); - output->mode.notify = handle_output_mode; - wl_signal_add(&wlr_output->events.mode, &output->mode); + ipc_send_event(server, "{\"event_name\":\"new_output\",\"output\":\"%s\",\"output_" "id\":%d,\"priority\":%d}", diff --git a/output.h b/output.h index 90cd615..c1d4853 100644 --- a/output.h +++ b/output.h @@ -16,8 +16,8 @@ struct cg_output { struct cg_server *server; struct wlr_output *wlr_output; struct wlr_scene_rect *bg; + struct wlr_scene_output *scene_output; - struct wl_listener mode; struct wl_listener commit; struct wl_listener destroy; struct wl_listener frame; diff --git a/seat.c b/seat.c index 1c88f49..b6dbc47 100644 --- a/seat.c +++ b/seat.c @@ -14,13 +14,13 @@ #include #include #include -#include #include #include #include #include #include #include +#include #include #if CG_HAS_XWAYLAND #include @@ -59,10 +59,9 @@ update_capabilities(const struct cg_seat *seat) { /* Hide cursor if the seat doesn't have pointer capability. */ if(((caps & WL_SEAT_CAPABILITY_POINTER) == 0) || seat->enable_cursor == false) { - wlr_cursor_set_image(seat->cursor, NULL, 0, 0, 0, 0, 0, 0); + wlr_cursor_unset_image(seat->cursor); } else { - wlr_xcursor_manager_set_cursor_image(seat->xcursor_manager, - DEFAULT_XCURSOR, seat->cursor); + wlr_cursor_set_xcursor(seat->cursor, seat->xcursor_manager, DEFAULT_XCURSOR); } } @@ -169,7 +168,7 @@ handle_modifier_event(struct wlr_input_device *device, struct cg_seat *seat) { wlr_seat_set_keyboard(seat->seat, keyboard); wlr_seat_keyboard_notify_modifiers(seat->seat, &keyboard->modifiers); - wlr_idle_notify_activity(seat->server->idle, seat->seat); + wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat); } void @@ -205,12 +204,11 @@ handle_command_key_bindings(struct cg_server *server, xkb_keysym_t sym, &server->scene->tree.node, server->seat->cursor->x, server->seat->cursor->y, &sx, &sy); if(server->seat->enable_cursor) { - wlr_xcursor_manager_set_cursor_image(server->seat->xcursor_manager, - "left_ptr", - server->seat->cursor); + wlr_cursor_set_xcursor(server->seat->cursor, server->seat->xcursor_manager, + "left_ptr"); if(node && node->type == WLR_SCENE_NODE_BUFFER) { struct wlr_scene_surface *scene_surface = - wlr_scene_surface_from_buffer( + wlr_scene_surface_try_from_buffer( wlr_scene_buffer_from_node(node)); if(scene_surface != NULL) { surface = scene_surface->surface; @@ -239,7 +237,7 @@ handle_command_key_bindings(struct cg_server *server, xkb_keysym_t sym, } message_clear(group->seat->server->curr_output); run_action((*keybinding)->action, server, (*keybinding)->data); - wlr_idle_notify_activity(server->idle, server->seat->seat); + wlr_idle_notifier_v1_notify_activity(server->idle, server->seat->seat); return true; } else if(mode != 0) { run_action(KEYBINDING_NOOP, server, (union keybinding_params){NULL}); @@ -312,7 +310,7 @@ handle_key_event(struct cg_keyboard_group *group, struct cg_seat *seat, event->keycode, event->state); } - wlr_idle_notify_activity(seat->server->idle, seat->seat); + wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat); } static void @@ -589,7 +587,7 @@ handle_touch_down(struct wl_listener *listener, void *data) { uint32_t serial = 0; if(node && node->type == WLR_SCENE_NODE_BUFFER) { struct wlr_scene_surface *scene_surface = - wlr_scene_surface_from_buffer(wlr_scene_buffer_from_node(node)); + wlr_scene_surface_try_from_buffer(wlr_scene_buffer_from_node(node)); if(scene_surface != NULL) { serial = wlr_seat_touch_notify_down( seat->seat, scene_surface->surface, event->time_msec, @@ -603,7 +601,7 @@ handle_touch_down(struct wl_listener *listener, void *data) { seat->touch_ly = ly; } - wlr_idle_notify_activity(seat->server->idle, seat->seat); + wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat); } static void @@ -616,7 +614,7 @@ handle_touch_up(struct wl_listener *listener, void *data) { } wlr_seat_touch_notify_up(seat->seat, event->time_msec, event->touch_id); - wlr_idle_notify_activity(seat->server->idle, seat->seat); + wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat); } static void @@ -638,7 +636,7 @@ handle_touch_motion(struct wl_listener *listener, void *data) { if(node && node->type == WLR_SCENE_NODE_BUFFER) { struct wlr_scene_surface *scene_surface = - wlr_scene_surface_from_buffer(wlr_scene_buffer_from_node(node)); + wlr_scene_surface_try_from_buffer(wlr_scene_buffer_from_node(node)); if(scene_surface != NULL) { wlr_seat_touch_point_focus(seat->seat, scene_surface->surface, @@ -657,7 +655,7 @@ handle_touch_motion(struct wl_listener *listener, void *data) { seat->touch_ly = ly; } - wlr_idle_notify_activity(seat->server->idle, seat->seat); + wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat); } static void @@ -665,7 +663,7 @@ handle_cursor_frame(struct wl_listener *listener, void *_data) { struct cg_seat *seat = wl_container_of(listener, seat, cursor_frame); wlr_seat_pointer_notify_frame(seat->seat); - wlr_idle_notify_activity(seat->server->idle, seat->seat); + wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat); } static void @@ -676,7 +674,7 @@ handle_cursor_axis(struct wl_listener *listener, void *data) { wlr_seat_pointer_notify_axis(seat->seat, event->time_msec, event->orientation, event->delta, event->delta_discrete, event->source); - wlr_idle_notify_activity(seat->server->idle, seat->seat); + wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat); } static void @@ -686,7 +684,7 @@ handle_cursor_button(struct wl_listener *listener, void *data) { wlr_seat_pointer_notify_button(seat->seat, event->time_msec, event->button, event->state); - wlr_idle_notify_activity(seat->server->idle, seat->seat); + wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat); } static void @@ -701,7 +699,7 @@ process_cursor_motion(struct cg_seat *seat, uint32_t time) { if(node && node->type == WLR_SCENE_NODE_BUFFER) { struct wlr_scene_surface *scene_surface = - wlr_scene_surface_from_buffer(wlr_scene_buffer_from_node(node)); + wlr_scene_surface_try_from_buffer(wlr_scene_buffer_from_node(node)); if(scene_surface != NULL) { surface = scene_surface->surface; if(surface != NULL) { @@ -722,7 +720,7 @@ process_cursor_motion(struct cg_seat *seat, uint32_t time) { drag_icon_update_position(drag_icon); } - wlr_idle_notify_activity(seat->server->idle, seat->seat); + wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat); /* Check if cursor switched tile */ struct wlr_output *c_outp = wlr_output_layout_output_at( @@ -772,7 +770,7 @@ handle_cursor_motion_absolute(struct wl_listener *listener, void *data) { wlr_cursor_warp_absolute(seat->cursor, &event->pointer->base, event->x, event->y); process_cursor_motion(seat, event->time_msec); - wlr_idle_notify_activity(seat->server->idle, seat->seat); + wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat); } static void @@ -783,7 +781,7 @@ handle_cursor_motion(struct wl_listener *listener, void *data) { wlr_cursor_move(seat->cursor, &event->pointer->base, event->delta_x, event->delta_y); process_cursor_motion(seat, event->time_msec); - wlr_idle_notify_activity(seat->server->idle, seat->seat); + wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat); } static void diff --git a/server.h b/server.h index 9f6eca6..0c067ec 100644 --- a/server.h +++ b/server.h @@ -26,17 +26,19 @@ struct cg_server { struct cg_seat *seat; struct cg_input_manager *input; struct wlr_backend *backend; - struct wlr_idle *idle; + struct wlr_idle_notifier_v1 *idle; struct wlr_idle_inhibit_manager_v1 *idle_inhibit_v1; struct wl_listener new_idle_inhibitor_v1; struct wl_list inhibitors; struct wlr_output_layout *output_layout; + struct wlr_scene_output_layout *scene_output_layout; struct wl_list disabled_outputs; struct wl_list outputs; struct cg_output *curr_output; struct wl_listener new_output; struct wl_list output_priorities; + struct wlr_session *session; struct wlr_renderer *renderer; struct wlr_allocator *allocator; diff --git a/view.c b/view.c index 99e2e7c..69ee5fe 100644 --- a/view.c +++ b/view.c @@ -8,7 +8,6 @@ #include #include #include -#include #include #include #include diff --git a/view.h b/view.h index a3b61ed..b9ec0a1 100644 --- a/view.h +++ b/view.h @@ -28,6 +28,10 @@ struct cg_view { struct cg_tile *tile; struct wlr_scene_tree *scene_tree; + struct wl_listener destroy; + struct wl_listener unmap; + struct wl_listener map; + /* The view has a position in output coordinates. */ int ox, oy; diff --git a/workspace.c b/workspace.c index 1dff244..3f84c6f 100644 --- a/workspace.c +++ b/workspace.c @@ -107,9 +107,6 @@ workspace_free_tiles(struct cg_workspace *workspace) { workspace->focused_tile) { workspace->output->server->seat->cursor_tile = NULL; } - if(workspace->focused_tile == workspace->server->seat->cursor_tile) { - workspace->server->seat->cursor_tile = NULL; - } struct cg_tile *next = workspace->focused_tile->next; free(workspace->focused_tile); workspace->focused_tile = next; diff --git a/xdg_shell.c b/xdg_shell.c index afa3352..3956bf5 100644 --- a/xdg_shell.c +++ b/xdg_shell.c @@ -23,12 +23,14 @@ static struct cg_view * popup_get_view(struct wlr_xdg_popup *popup) { while(true) { - if(popup->parent == NULL || - !wlr_surface_is_xdg_surface(popup->parent)) { + if(popup->parent == NULL) { return NULL; } struct wlr_xdg_surface *xdg_surface = - wlr_xdg_surface_from_wlr_surface(popup->parent); + wlr_xdg_surface_try_from_wlr_surface(popup->parent); + if(xdg_surface == NULL) { + return NULL; + } switch(xdg_surface->role) { case WLR_XDG_SURFACE_ROLE_TOPLEVEL: return xdg_surface->data; @@ -244,9 +246,9 @@ handle_xdg_shell_surface_new(struct wl_listener *listener, void *data) { xdg_shell_view->xdg_surface = xdg_surface; xdg_shell_view->map.notify = handle_xdg_shell_surface_map; - wl_signal_add(&xdg_surface->events.map, &xdg_shell_view->map); + wl_signal_add(&xdg_surface->surface->events.map, &xdg_shell_view->map); xdg_shell_view->unmap.notify = handle_xdg_shell_surface_unmap; - wl_signal_add(&xdg_surface->events.unmap, &xdg_shell_view->unmap); + wl_signal_add(&xdg_surface->surface->events.unmap, &xdg_shell_view->unmap); xdg_shell_view->destroy.notify = handle_xdg_shell_surface_destroy; wl_signal_add(&xdg_surface->events.destroy, &xdg_shell_view->destroy); xdg_shell_view->request_fullscreen.notify = @@ -265,7 +267,10 @@ handle_xdg_shell_surface_new(struct wl_listener *listener, void *data) { struct wlr_scene_tree *parent_scene_tree = NULL; struct wlr_xdg_surface *parent = - wlr_xdg_surface_from_wlr_surface(popup->parent); + wlr_xdg_surface_try_from_wlr_surface(popup->parent); + if(parent == NULL) { + return; + } switch(parent->role) { case WLR_XDG_SURFACE_ROLE_TOPLEVEL:; parent_scene_tree = view->scene_tree; diff --git a/xwayland.c b/xwayland.c index ece9e5a..785b22e 100644 --- a/xwayland.c +++ b/xwayland.c @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include @@ -42,8 +41,12 @@ xwayland_view_should_manage(const struct cg_view *view) { static pid_t get_pid(const struct cg_view *view) { struct wlr_xwayland_surface *surf = - wlr_xwayland_surface_from_wlr_surface(view->wlr_surface); - return surf->pid; + wlr_xwayland_surface_try_from_wlr_surface(view->wlr_surface); + if(surf==NULL) { + return -1; + } else { + return surf->pid; + } } static char * @@ -154,8 +157,6 @@ handle_xwayland_surface_destroy(struct wl_listener *listener, void *_data) { wl_container_of(listener, xwayland_view, destroy); struct cg_view *view = &xwayland_view->view; - wl_list_remove(&xwayland_view->map.link); - wl_list_remove(&xwayland_view->unmap.link); wl_list_remove(&xwayland_view->destroy.link); wl_list_remove(&xwayland_view->request_fullscreen.link); xwayland_view->xwayland_surface = NULL; @@ -173,6 +174,26 @@ static const struct cg_view_impl xwayland_view_impl = { .destroy = destroy, }; +static void +handle_xwayland_surface_associate(struct wl_listener *listener, void *data) { + struct cg_xwayland_view *xwayland_view = + wl_container_of(listener, xwayland_view, associate); + struct wlr_xwayland_surface *xsurface = + xwayland_view->xwayland_surface; + wl_signal_add(&xsurface->surface->events.unmap, &xwayland_view->unmap); + xwayland_view->unmap.notify = handle_xwayland_surface_unmap; + wl_signal_add(&xsurface->surface->events.map, &xwayland_view->map); + xwayland_view->map.notify = handle_xwayland_surface_map; +} + +static void +handle_xwayland_surface_dissociate(struct wl_listener *listener, void *data) { + struct cg_xwayland_view *xwayland_view = + wl_container_of(listener, xwayland_view, dissociate); + wl_list_remove(&xwayland_view->map.link); + wl_list_remove(&xwayland_view->unmap.link); +} + void handle_xwayland_surface_new(struct wl_listener *listener, void *data) { struct cg_server *server = @@ -190,10 +211,10 @@ handle_xwayland_surface_new(struct wl_listener *listener, void *data) { server); xwayland_view->xwayland_surface = xwayland_surface; - xwayland_view->map.notify = handle_xwayland_surface_map; - wl_signal_add(&xwayland_surface->events.map, &xwayland_view->map); - xwayland_view->unmap.notify = handle_xwayland_surface_unmap; - wl_signal_add(&xwayland_surface->events.unmap, &xwayland_view->unmap); + xwayland_view->associate.notify = handle_xwayland_surface_associate; + wl_signal_add(&xwayland_surface->events.associate, &xwayland_view->associate); + xwayland_view->dissociate.notify = handle_xwayland_surface_dissociate; + wl_signal_add(&xwayland_surface->events.dissociate, &xwayland_view->dissociate); xwayland_view->destroy.notify = handle_xwayland_surface_destroy; wl_signal_add(&xwayland_surface->events.destroy, &xwayland_view->destroy); xwayland_view->request_fullscreen.notify = diff --git a/xwayland.h b/xwayland.h index 71a0b7a..79c265a 100644 --- a/xwayland.h +++ b/xwayland.h @@ -13,6 +13,8 @@ struct cg_xwayland_view { struct wl_listener destroy; struct wl_listener unmap; struct wl_listener map; + struct wl_listener associate; + struct wl_listener dissociate; struct wl_listener request_fullscreen; }; From 0a0d67e80240f004dfe60fc7b6a2a0d8afbb4450 Mon Sep 17 00:00:00 2001 From: project-repo Date: Mon, 4 Dec 2023 10:03:01 +0100 Subject: [PATCH 12/33] Add 2.2.2 adaptions - README improvements - SECURITY.md improvements - updated dependencies in meson.build --- README.md | 49 ++++++++++++++++++++----------------------------- SECURITY.md | 33 +++++++++++++++------------------ meson.build | 16 ++++++++-------- 3 files changed, 43 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index 1781cc3..09d5f84 100644 --- a/README.md +++ b/README.md @@ -9,25 +9,21 @@ based on [Cage](https://github.com/Hjdskes/cage) and inspired by [ratpoison](htt ### Purpose -The goal of this project is to provide a successor to ratpoison for Wayland. +This project provides a successor to ratpoison for Wayland. However, this is no reimplementation of ratpoison. #### New Features, Bugs and Contact Information -Should you want to know if a feature will be implemented, file a bug or -get in touch, [open an issue](https://github.com/project-repo/cagebreak/issues/new) +You can [open an issue](https://github.com/project-repo/cagebreak/issues/new) or write an e-mail (See [SECURITY.md](SECURITY.md) for details.). -The Roadmap section outlines what is planned for the future. +The Roadmap section outlines our plans. #### Compatibility & Development Distribution Cagebreak supports [Arch Linux](https://archlinux.org/) and uses the libraries -(and software versions) as they are obtained through [pacman](https://wiki.archlinux.org/title/Pacman) -at the time of release. Any other use is out of scope. - -Most other setups probably work with a bit of luck. We -make no guarantees. +and versions from extra and core at the time of release. +Most other setups work with a bit of luck. ### Quick Installation @@ -42,17 +38,12 @@ details on getting started and the documentation for everything else. ### Documentation - * the rest of this file - * the man pages: - * [cagebreak](man/cagebreak.1.md) - * [configuration](man/cagebreak-config.5.md) - * [socket](man/cagebreak-socket.7.md) - * the [FAQ](FAQ.md) - * [SECURITY.md](SECURITY.md) + * the man pages: [cagebreak](man/cagebreak.1.md), [configuration](man/cagebreak-config.5.md) & [socket](man/cagebreak-socket.7.md) + * the [README](README.md), [FAQ](FAQ.md) & [SECURITY.md](SECURITY.md) #### What's new? -See the [Changelog](Changelog.md). +Check the [Changelog](Changelog.md). ### Uninstallation @@ -60,9 +51,9 @@ See the [Changelog](Changelog.md). ### Contributing - * Just [open an issue](https://github.com/project-repo/cagebreak/issues/new) and state your idea. - We will consider the proposal and get back to you. - * Don't open a pull request. We might not accept your code and + * [Open an issue](https://github.com/project-repo/cagebreak/issues/new) and state your idea. + We will get back to you. + * Ask before you open a pull request. We might not accept your code and it would be sad to waste the effort. * Respect the [Code of Conduct](CODE_OF_CONDUCT.md) (To date, we never had to intervene - Keep it that way!) @@ -208,16 +199,16 @@ as a source of inspiration and explanations for certain particularities. ## Contributing * Read this document. - * Just [open an issue](https://github.com/project-repo/cagebreak/issues/new) and state your feature request. - We will consider the proposal and get back to you. - * Don't open a pull request without asking first. We might not accept your + * [Open an issue](https://github.com/project-repo/cagebreak/issues/new) and state your feature request. + We will get back to you. + * Ask before opening a pull request. We might not accept your code and it would be sad to waste the effort. * Respect the [Code of Conduct](CODE_OF_CONDUCT.md) (To date, we never had to intervene - Please keep it that way!) ### Good First Contributions - * Reviewing the project is always welcome. + * Reviews are always welcome. * Read the code. * Read the documentation. * Test whether the documentation matches the code. @@ -225,12 +216,12 @@ as a source of inspiration and explanations for certain particularities. * Compile the code. * Ideas on improving the testing and quality assurance are particularly welcome. - * If you want, you can share your cagebreak scripts and we might include them - in the repository provided you agree to release them under MIT and we agree - with the use case and coding style. - * Iff you are happy with Cagebreak and use Arch Linux, you may vote for + * You can share your cagebreak scripts and we might include them with Cagebreak + provided you agree to release them under MIT and we agree with the + use case and coding style. + * If you are happy with Cagebreak under Arch Linux, you may vote for [Cagebreak in the AUR](https://aur.archlinux.org/packages/cagebreak). - * The points above still apply. + * The points from the Contributing section above still apply. ### Philosophy diff --git a/SECURITY.md b/SECURITY.md index 2f33197..a55a2b4 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -51,11 +51,10 @@ public key or provide the fingerprint and directions to obtain the key. ## Threat Model -Cagebreak is a wayland compositor run by the user of the system -and thus has access to whichever resources this user has access to. -Cagebreak can restrict other programs in no way, because this would hamper -usability (consider a web browser unable to write a downloaded file to disk -for instance). +Cagebreak is a wayland compositor run by a user and has access to +the resources the user has access to. +Cagebreak cannot restrict other programs (consider a web browser +unable to write a downloaded file for instance). There is no transmission of information by cagebreak other than to the screens, ipc and potentially other documented local channels. @@ -63,38 +62,36 @@ screens, ipc and potentially other documented local channels. ### STRIDE Threat List This is not a thorough analysis, just an overview of the ways in which cagebreak -has (no) attack surface. Please reference the man pages for details but especially -the -e and --bs options. +has (no) attack surface. Please reference the man pages (especially options -e and --bs ). #### Spoofing -Not applicable - Using Cagebreak already requires a login as a user. +Not applicable - Cagebreak is executed after user login. #### Tampering -Not applicable - Cagebreak must allow system manipulation for user software. +Not applicable - Cagebreak allows system manipulation for user software. #### Repudiation Not applicable - There are no prohibited operations (See Tampering above.). -While cagebreak does send events over documented channels there is no logging -activated by default, though, of course, this can be changed by the user -by logging socket output (if enabled) for example. +Cagebreak sends events over documented channels. There is no logging +activated by default - this can be changed by logging the socket (if enabled) for example. #### Information Disclosure -Not applicable - Information disclosure over documented channels is a feature -and any software run by the user may exfiltrate any data the user has access to. +Not applicable - Information disclosure over documented channels is a feature. +Any user software may exfiltrate any data the user has access to. #### Denial of Service -Not applicable - Cagebreak offers functionality to terminate itself, which is -available to all user software over the socket if the socket is enabled. +Not applicable - Cagebreak offers functionality to terminate itself. This is +available to user software over the socket (if enabled). #### Elevation of Privilege -Software may gain arbitrary code execution rights if it has access to the -Cagebreak socket. Privilege escalation to root is unlikely since privileges +Software may gain arbitrary code execution if it has access to the +socket (if enabled). Privilege escalation to root is unlikely since privileges are dropped before any user input is accepted. ## GPG Keys of the Cagebreak Repository diff --git a/meson.build b/meson.build index fa6b02d..6a8203e 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,7 @@ project( 'cagebreak', 'c', -version : '2.2.1', +version : '2.2.2', license : 'MIT', default_options : ['c_std=c11', 'warning_level=3'] ) @@ -55,7 +55,7 @@ if is_freebsd ) endif -wlroots = dependency('wlroots', version: ['>=0.16.1', '< 0.18.0']) +wlroots = dependency('wlroots', version: ['>=0.16.1', '< 0.17.1']) wayland_protos = dependency('wayland-protocols', version: '>=1.14') wayland_server = dependency('wayland-server') wayland_cursor = dependency('wayland-cursor') @@ -204,15 +204,15 @@ reproducible_build_versions = { 'wayland_server': '1.19.0', 'wayland_client': '1.22.0', 'wayland_cursor': '1.22.0', - 'wlroots': '0.16.2', - 'xkbcommon': '1.5.0', + 'wlroots': '0.17.0', + 'xkbcommon': '1.6.0', 'fontconfig': '2.14.2', - 'libinput': '1.23.0', + 'libinput': '1.24.0', 'libevdev': '1.13.1', 'libudev': '254', - 'pango': '1.50.14', - 'cairo': '1.17.8', - 'pangocairo': '1.50.14', + 'pango': '1.51.0', + 'cairo': '1.18.0', + 'pangocairo': '1.51.0', 'math': '-1' } From 10cf8c5def03ac5c847bd722bfb8b51d5774d8ae Mon Sep 17 00:00:00 2001 From: project-repo Date: Mon, 4 Dec 2023 10:04:57 +0100 Subject: [PATCH 13/33] Run set-version script --- README.md | 2 +- man/cagebreak-config.5.md | 2 +- man/cagebreak-socket.7.md | 2 +- man/cagebreak.1.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 09d5f84..f2fd64d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Cagebreak: A Wayland Tiling Compositor -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6532/badge)](https://bestpractices.coreinfrastructure.org/projects/6532) [![Packaging status](https://repology.org/badge/tiny-repos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) [![AUR package](https://repology.org/badge/version-for-repo/aur/cagebreak.svg?minversion=2.2.1)](https://repology.org/project/cagebreak/versions) +[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6532/badge)](https://bestpractices.coreinfrastructure.org/projects/6532) [![Packaging status](https://repology.org/badge/tiny-repos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) [![AUR package](https://repology.org/badge/version-for-repo/aur/cagebreak.svg?minversion=2.2.2)](https://repology.org/project/cagebreak/versions) ## Quick Introduction diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index f894d04..c04c757 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -1,4 +1,4 @@ -cagebreak-config(5) "Version 2.2.1" "Cagebreak Manual" +cagebreak-config(5) "Version 2.2.2" "Cagebreak Manual" # NAME diff --git a/man/cagebreak-socket.7.md b/man/cagebreak-socket.7.md index 210a4f9..d61e498 100644 --- a/man/cagebreak-socket.7.md +++ b/man/cagebreak-socket.7.md @@ -1,4 +1,4 @@ -cagebreak-socket(7) "Version 2.2.1" "Cagebreak Manual" +cagebreak-socket(7) "Version 2.2.2" "Cagebreak Manual" # NAME diff --git a/man/cagebreak.1.md b/man/cagebreak.1.md index d99a87a..7e0c421 100644 --- a/man/cagebreak.1.md +++ b/man/cagebreak.1.md @@ -1,4 +1,4 @@ -cagebreak(1) "Version 2.2.1" "Cagebreak Manual" +cagebreak(1) "Version 2.2.2" "Cagebreak Manual" # NAME From bc1748cdd3bb3208860ca44985a2af15a4dc480f Mon Sep 17 00:00:00 2001 From: project-repo Date: Mon, 4 Dec 2023 10:08:00 +0100 Subject: [PATCH 14/33] Adjust epoch --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 6a8203e..e28557e 100644 --- a/meson.build +++ b/meson.build @@ -260,7 +260,7 @@ install_data('LICENSE', install_dir : '/usr/share/licenses/' + meson.project_nam if get_option('man-pages') scdoc = find_program('scdoc') - secssinceepoch = 1692353837 + secssinceepoch = 1701680868 shcommand = 'export SOURCE_DATE_EPOCH=' + secssinceepoch.to_string() + ' ; @0@ < @INPUT@'.format(scdoc.path()) sh = find_program('sh') mandir1 = join_paths(get_option('mandir'), 'man1') From 70d8041c5fa6b5d9f6f4aef20728abb91daae4df Mon Sep 17 00:00:00 2001 From: project-repo Date: Mon, 4 Dec 2023 10:22:34 +0100 Subject: [PATCH 15/33] Apply clang-format --- cagebreak.c | 7 ++++--- fuzz/fuzz-lib.c | 5 +++-- keybinding.c | 7 +++++-- output.c | 11 ++++++----- seat.c | 9 +++++---- xdg_shell.c | 3 ++- xwayland.c | 15 ++++++++------- 7 files changed, 33 insertions(+), 24 deletions(-) diff --git a/cagebreak.c b/cagebreak.c index fda54ba..66afdf3 100644 --- a/cagebreak.c +++ b/cagebreak.c @@ -368,7 +368,7 @@ main(int argc, char *argv[]) { wl_event_loop_add_signal(event_loop, SIGPIPE, handle_signal, &server); server.event_loop = event_loop; - backend = wlr_backend_autocreate(server.wl_display,&server.session); + backend = wlr_backend_autocreate(server.wl_display, &server.session); if(!backend) { wlr_log(WLR_ERROR, "Unable to create the wlroots backend"); ret = 1; @@ -428,9 +428,10 @@ main(int argc, char *argv[]) { ret = 1; goto end; } - server.scene_output_layout=wlr_scene_attach_output_layout(server.scene, server.output_layout); + server.scene_output_layout = + wlr_scene_attach_output_layout(server.scene, server.output_layout); - compositor = wlr_compositor_create(server.wl_display,6,server.renderer); + compositor = wlr_compositor_create(server.wl_display, 6, server.renderer); if(!compositor) { wlr_log(WLR_ERROR, "Unable to create the wlroots compositor"); ret = 1; diff --git a/fuzz/fuzz-lib.c b/fuzz/fuzz-lib.c index 661eac6..650d8a8 100644 --- a/fuzz/fuzz-lib.c +++ b/fuzz/fuzz-lib.c @@ -270,9 +270,10 @@ LLVMFuzzerInitialize(int *argc, char ***argv) { ret = 1; goto end; } - server.scene_output_layout=wlr_scene_attach_output_layout(server.scene, server.output_layout); + server.scene_output_layout = + wlr_scene_attach_output_layout(server.scene, server.output_layout); - compositor = wlr_compositor_create(server.wl_display, 5,server.renderer); + compositor = wlr_compositor_create(server.wl_display, 5, server.renderer); if(!compositor) { wlr_log(WLR_ERROR, "Unable to create the wlroots compositor"); ret = 1; diff --git a/keybinding.c b/keybinding.c index 221ca8b..6da0cc6 100644 --- a/keybinding.c +++ b/keybinding.c @@ -1625,7 +1625,8 @@ void set_cursor(bool enabled, struct cg_seat *seat) { if(enabled == true) { seat->enable_cursor = true; - wlr_cursor_set_xcursor(seat->cursor,seat->xcursor_manager, DEFAULT_XCURSOR); + wlr_cursor_set_xcursor(seat->cursor, seat->xcursor_manager, + DEFAULT_XCURSOR); } else { seat->enable_cursor = false; wlr_cursor_unset_image(seat->cursor); @@ -1685,7 +1686,9 @@ run_action(enum keybinding_action action, struct cg_server *server, if(data.u != server->seat->default_mode) { wlr_seat_pointer_notify_clear_focus(server->seat->seat); if(server->seat->enable_cursor == true) { - wlr_cursor_set_xcursor(server->seat->cursor,server->seat->xcursor_manager, "dot_box_mask"); + wlr_cursor_set_xcursor(server->seat->cursor, + server->seat->xcursor_manager, + "dot_box_mask"); } } server->seat->mode = data.u; diff --git a/output.c b/output.c index 74fb0a1..d4fef70 100644 --- a/output.c +++ b/output.c @@ -15,6 +15,7 @@ #include #endif #include +#include #include #include #include @@ -22,7 +23,6 @@ #include #include #include -#include #if CG_HAS_XWAYLAND #include #endif @@ -165,7 +165,7 @@ handle_output_frame(struct wl_listener *listener, void *data) { if(scene_output == NULL) { return; } - wlr_scene_output_commit(scene_output,NULL); + wlr_scene_output_commit(scene_output, NULL); struct timespec now = {0}; clock_gettime(CLOCK_MONOTONIC, &now); @@ -439,7 +439,8 @@ handle_output_commit(struct wl_listener *listener, void *data) { } if(event->state->committed & - (WLR_OUTPUT_STATE_TRANSFORM | WLR_OUTPUT_STATE_SCALE | WLR_OUTPUT_STATE_MODE)) { + (WLR_OUTPUT_STATE_TRANSFORM | WLR_OUTPUT_STATE_SCALE | + WLR_OUTPUT_STATE_MODE)) { struct cg_view *view; wl_list_for_each( view, &output->workspaces[output->curr_workspace]->views, link) { @@ -499,7 +500,7 @@ handle_new_output(struct wl_listener *listener, void *data) { } struct cg_output *output = calloc(1, sizeof(struct cg_output)); - output->scene_output=wlr_scene_output_create(server->scene,wlr_output); + output->scene_output = wlr_scene_output_create(server->scene, wlr_output); if(!output) { wlr_log(WLR_ERROR, "Failed to allocate output"); return; @@ -552,7 +553,7 @@ handle_new_output(struct wl_listener *listener, void *data) { server->curr_output = output; } wlr_cursor_set_xcursor(server->seat->cursor, server->seat->xcursor_manager, - DEFAULT_XCURSOR); + DEFAULT_XCURSOR); wlr_cursor_warp(server->seat->cursor, NULL, 0, 0); output->destroy.notify = handle_output_destroy; diff --git a/seat.c b/seat.c index b6dbc47..1a12c0d 100644 --- a/seat.c +++ b/seat.c @@ -14,13 +14,13 @@ #include #include #include +#include #include #include #include #include #include #include -#include #include #if CG_HAS_XWAYLAND #include @@ -61,7 +61,8 @@ update_capabilities(const struct cg_seat *seat) { seat->enable_cursor == false) { wlr_cursor_unset_image(seat->cursor); } else { - wlr_cursor_set_xcursor(seat->cursor, seat->xcursor_manager, DEFAULT_XCURSOR); + wlr_cursor_set_xcursor(seat->cursor, seat->xcursor_manager, + DEFAULT_XCURSOR); } } @@ -204,8 +205,8 @@ handle_command_key_bindings(struct cg_server *server, xkb_keysym_t sym, &server->scene->tree.node, server->seat->cursor->x, server->seat->cursor->y, &sx, &sy); if(server->seat->enable_cursor) { - wlr_cursor_set_xcursor(server->seat->cursor, server->seat->xcursor_manager, - "left_ptr"); + wlr_cursor_set_xcursor(server->seat->cursor, + server->seat->xcursor_manager, "left_ptr"); if(node && node->type == WLR_SCENE_NODE_BUFFER) { struct wlr_scene_surface *scene_surface = wlr_scene_surface_try_from_buffer( diff --git a/xdg_shell.c b/xdg_shell.c index 3956bf5..79f322f 100644 --- a/xdg_shell.c +++ b/xdg_shell.c @@ -248,7 +248,8 @@ handle_xdg_shell_surface_new(struct wl_listener *listener, void *data) { xdg_shell_view->map.notify = handle_xdg_shell_surface_map; wl_signal_add(&xdg_surface->surface->events.map, &xdg_shell_view->map); xdg_shell_view->unmap.notify = handle_xdg_shell_surface_unmap; - wl_signal_add(&xdg_surface->surface->events.unmap, &xdg_shell_view->unmap); + wl_signal_add(&xdg_surface->surface->events.unmap, + &xdg_shell_view->unmap); xdg_shell_view->destroy.notify = handle_xdg_shell_surface_destroy; wl_signal_add(&xdg_surface->events.destroy, &xdg_shell_view->destroy); xdg_shell_view->request_fullscreen.notify = diff --git a/xwayland.c b/xwayland.c index 785b22e..21cc2ba 100644 --- a/xwayland.c +++ b/xwayland.c @@ -42,7 +42,7 @@ static pid_t get_pid(const struct cg_view *view) { struct wlr_xwayland_surface *surf = wlr_xwayland_surface_try_from_wlr_surface(view->wlr_surface); - if(surf==NULL) { + if(surf == NULL) { return -1; } else { return surf->pid; @@ -177,9 +177,8 @@ static const struct cg_view_impl xwayland_view_impl = { static void handle_xwayland_surface_associate(struct wl_listener *listener, void *data) { struct cg_xwayland_view *xwayland_view = - wl_container_of(listener, xwayland_view, associate); - struct wlr_xwayland_surface *xsurface = - xwayland_view->xwayland_surface; + wl_container_of(listener, xwayland_view, associate); + struct wlr_xwayland_surface *xsurface = xwayland_view->xwayland_surface; wl_signal_add(&xsurface->surface->events.unmap, &xwayland_view->unmap); xwayland_view->unmap.notify = handle_xwayland_surface_unmap; wl_signal_add(&xsurface->surface->events.map, &xwayland_view->map); @@ -189,7 +188,7 @@ handle_xwayland_surface_associate(struct wl_listener *listener, void *data) { static void handle_xwayland_surface_dissociate(struct wl_listener *listener, void *data) { struct cg_xwayland_view *xwayland_view = - wl_container_of(listener, xwayland_view, dissociate); + wl_container_of(listener, xwayland_view, dissociate); wl_list_remove(&xwayland_view->map.link); wl_list_remove(&xwayland_view->unmap.link); } @@ -212,9 +211,11 @@ handle_xwayland_surface_new(struct wl_listener *listener, void *data) { xwayland_view->xwayland_surface = xwayland_surface; xwayland_view->associate.notify = handle_xwayland_surface_associate; - wl_signal_add(&xwayland_surface->events.associate, &xwayland_view->associate); + wl_signal_add(&xwayland_surface->events.associate, + &xwayland_view->associate); xwayland_view->dissociate.notify = handle_xwayland_surface_dissociate; - wl_signal_add(&xwayland_surface->events.dissociate, &xwayland_view->dissociate); + wl_signal_add(&xwayland_surface->events.dissociate, + &xwayland_view->dissociate); xwayland_view->destroy.notify = handle_xwayland_surface_destroy; wl_signal_add(&xwayland_surface->events.destroy, &xwayland_view->destroy); xwayland_view->request_fullscreen.notify = From 2923b810901e20c16cd7a6b0f8d87d3d1db1b8d0 Mon Sep 17 00:00:00 2001 From: project-repo Date: Mon, 4 Dec 2023 10:39:47 +0100 Subject: [PATCH 16/33] Fix use-after-free on exit --- seat.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/seat.c b/seat.c index 1a12c0d..80206e9 100644 --- a/seat.c +++ b/seat.c @@ -748,7 +748,8 @@ process_cursor_motion(struct cg_seat *seat, uint32_t time) { break; } } - if(seat->cursor_tile != NULL && seat->cursor_tile != c_tile) { + if(seat->cursor_tile != NULL && seat->cursor_tile != c_tile && + seat->server->running) { ipc_send_event(seat->server, "{\"event_name\":\"cursor_switch_tile\",\"old_output\":" "\"%s\",\"old_output_id\":%d," From c6a2d5b0cba8037defd3c068eccf16e4e2fb1d29 Mon Sep 17 00:00:00 2001 From: project-repo Date: Mon, 4 Dec 2023 11:24:04 +0100 Subject: [PATCH 17/33] Update Hashes --- Hashes.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Hashes.md b/Hashes.md index 240925f..ace89e4 100644 --- a/Hashes.md +++ b/Hashes.md @@ -1,5 +1,25 @@ # Hashes +2.2.2 cagebreak + + * sha 256: 98e0dfe870a7242fdf7c6fb1a5c520cfe7d1154b3f139560da6cb86b2430b2a0 + * sha 512: c335f8f6e226203e797e232caead74db9b1e7f24d5edf80dd99a0c00c5f4e81351a5ddcad4f601a12618ebed5c62be547462c4f06ae4ccb6a622a869ee8741ec + +2.2.2 cagebreak.1 + + * sha 256: c655fff018377b5ee541854ee428559ba4c5080d44f87247fe608f18651b0764 + * sha 512: 7cbef17cbe3c59cde21466d6c76e1a34ffce748d2d9011a77bd7703f605b737e344cabaad1e3a599316321481524cb860b2533ab6bef2e7714c00b2641fe962c + +2.2.2 cagebreak-config.5 + + * sha 256: b799e0252d7224befc92bdd143d00dc3f42a38e39f510f3ace575b03f293a788 + * sha 512: 3778db9ff07429efb74b4b07476193844698e07ea91a742aac078391ba38fb07987dc61ba312c30b6eb04ad2d847ee552826e7a09be8dc572be5626c27059df3 + +2.2.2 cagebreak-socket.7 + + * sha 256: dd10359fd1840909bb817858668e67bdd433f367b0ed199328e4b29c99529322 + * sha 512: 67f8c39864472c9b2396946a943ce249297b1b9fc5e452a4051f0512fd61b4a22906e1a16aee1c2bf6cacb3b9cd7a11da19c5d760c192020402008eab379eee1 + 2.2.1 cagebreak * sha 256: 96469a78eeaddf9476c82e0ab8a0e35a95b3119bf83633a54feb8f3f5780df2f From 6edcdf103cee2403e8aeb25aacdea55a149b59ac Mon Sep 17 00:00:00 2001 From: project-repo Date: Mon, 4 Dec 2023 11:24:24 +0100 Subject: [PATCH 18/33] Add a few non-auto checks --- release-non-auto-checks/Bugs.md | 4 ++-- release-non-auto-checks/acknowledge-contributors | 4 ++-- release-non-auto-checks/changelog-major-minor | 4 ++-- release-non-auto-checks/internal-wiki | 4 ++-- release-non-auto-checks/reproducibility-checked | 4 ++-- release-non-auto-checks/security-to-man-page-info-transfer | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/release-non-auto-checks/Bugs.md b/release-non-auto-checks/Bugs.md index d340262..9388d0a 100644 --- a/release-non-auto-checks/Bugs.md +++ b/release-non-auto-checks/Bugs.md @@ -1,2 +1,2 @@ -2.2.1 -2023-08-21 +2.2.2 +2023-12-04 diff --git a/release-non-auto-checks/acknowledge-contributors b/release-non-auto-checks/acknowledge-contributors index d340262..9388d0a 100644 --- a/release-non-auto-checks/acknowledge-contributors +++ b/release-non-auto-checks/acknowledge-contributors @@ -1,2 +1,2 @@ -2.2.1 -2023-08-21 +2.2.2 +2023-12-04 diff --git a/release-non-auto-checks/changelog-major-minor b/release-non-auto-checks/changelog-major-minor index d340262..9388d0a 100644 --- a/release-non-auto-checks/changelog-major-minor +++ b/release-non-auto-checks/changelog-major-minor @@ -1,2 +1,2 @@ -2.2.1 -2023-08-21 +2.2.2 +2023-12-04 diff --git a/release-non-auto-checks/internal-wiki b/release-non-auto-checks/internal-wiki index d340262..9388d0a 100644 --- a/release-non-auto-checks/internal-wiki +++ b/release-non-auto-checks/internal-wiki @@ -1,2 +1,2 @@ -2.2.1 -2023-08-21 +2.2.2 +2023-12-04 diff --git a/release-non-auto-checks/reproducibility-checked b/release-non-auto-checks/reproducibility-checked index d340262..69c6593 100644 --- a/release-non-auto-checks/reproducibility-checked +++ b/release-non-auto-checks/reproducibility-checked @@ -1,2 +1,2 @@ -2.2.1 -2023-08-21 +2.2.2 +2023-12-01 diff --git a/release-non-auto-checks/security-to-man-page-info-transfer b/release-non-auto-checks/security-to-man-page-info-transfer index d340262..9388d0a 100644 --- a/release-non-auto-checks/security-to-man-page-info-transfer +++ b/release-non-auto-checks/security-to-man-page-info-transfer @@ -1,2 +1,2 @@ -2.2.1 -2023-08-21 +2.2.2 +2023-12-04 From 90682bfa32c44492fcf6241976725c99bf13cebe Mon Sep 17 00:00:00 2001 From: project-repo Date: Mon, 4 Dec 2023 11:59:37 +0100 Subject: [PATCH 19/33] Add release prep - signatures - non-auto-checks --- release-non-auto-checks/FAQ.md | 4 ++-- release-non-auto-checks/SECURITY.md | 4 ++-- release-non-auto-checks/WLR_XDG_VERSION | 4 ++-- release-non-auto-checks/release-note | 4 ++-- release-non-auto-checks/reproducibility-checked | 2 +- signatures/2.2.1-cagebreak-config.5.sig | Bin 0 -> 566 bytes signatures/2.2.1-cagebreak-socket.7.sig | Bin 0 -> 566 bytes signatures/2.2.1-cagebreak.1.sig | Bin 0 -> 566 bytes signatures/2.2.1-cagebreak.sig | Bin 0 -> 566 bytes signatures/cagebreak-config.5.sig | Bin 566 -> 566 bytes signatures/cagebreak-socket.7.sig | Bin 566 -> 566 bytes signatures/cagebreak.1.sig | Bin 566 -> 566 bytes signatures/cagebreak.sig | Bin 566 -> 566 bytes 13 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 signatures/2.2.1-cagebreak-config.5.sig create mode 100644 signatures/2.2.1-cagebreak-socket.7.sig create mode 100644 signatures/2.2.1-cagebreak.1.sig create mode 100644 signatures/2.2.1-cagebreak.sig diff --git a/release-non-auto-checks/FAQ.md b/release-non-auto-checks/FAQ.md index d340262..9388d0a 100644 --- a/release-non-auto-checks/FAQ.md +++ b/release-non-auto-checks/FAQ.md @@ -1,2 +1,2 @@ -2.2.1 -2023-08-21 +2.2.2 +2023-12-04 diff --git a/release-non-auto-checks/SECURITY.md b/release-non-auto-checks/SECURITY.md index d340262..9388d0a 100644 --- a/release-non-auto-checks/SECURITY.md +++ b/release-non-auto-checks/SECURITY.md @@ -1,2 +1,2 @@ -2.2.1 -2023-08-21 +2.2.2 +2023-12-04 diff --git a/release-non-auto-checks/WLR_XDG_VERSION b/release-non-auto-checks/WLR_XDG_VERSION index d340262..9388d0a 100644 --- a/release-non-auto-checks/WLR_XDG_VERSION +++ b/release-non-auto-checks/WLR_XDG_VERSION @@ -1,2 +1,2 @@ -2.2.1 -2023-08-21 +2.2.2 +2023-12-04 diff --git a/release-non-auto-checks/release-note b/release-non-auto-checks/release-note index d340262..9388d0a 100644 --- a/release-non-auto-checks/release-note +++ b/release-non-auto-checks/release-note @@ -1,2 +1,2 @@ -2.2.1 -2023-08-21 +2.2.2 +2023-12-04 diff --git a/release-non-auto-checks/reproducibility-checked b/release-non-auto-checks/reproducibility-checked index 69c6593..9388d0a 100644 --- a/release-non-auto-checks/reproducibility-checked +++ b/release-non-auto-checks/reproducibility-checked @@ -1,2 +1,2 @@ 2.2.2 -2023-12-01 +2023-12-04 diff --git a/signatures/2.2.1-cagebreak-config.5.sig b/signatures/2.2.1-cagebreak-config.5.sig new file mode 100644 index 0000000000000000000000000000000000000000..4a959e13f13ef5987a24bbb6bc8c7c921738b108 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%YHX-2e&+5J?I6 zOsG4!XQo~c{So||y?|0?M)3u$CcFzF)_LZS7Pymc>5n`Ri!1#cUhO4VUuudz^%-%h zwJ)E8oVzp~{~R2H%V8C~W$3TAx;v0NVmnaz2@|gODF=%M4k9HzfgT0J%nc*ATOvuk z!^W^{qu(kzt+?JcqCkFrso8HuoOP2<1#A5qGZ7Fyw!1{(`!ufUYC+kNvDIJSvudkx zt1zJ{B-`}bP?t`+m!QeZ;R?u7m+ju=9J((NIsU48Dyjsa0^mzL5!)<|({8*RHb3c6 zK}5h3978c|e=VzESOfzCVw^D#1ZD2WXbDL-^YW#P^Bx1BQ8*$87o4V>w5G#o^@jiO z)GdC+b4SbUUd`E;Tz%?J;z>FbK~eWc=%q#}As&+aQm!7l) z$Fd^(t8!#twP8d?1;7`hEe3hq+RHp6G_?qSgxy-8KK=nL%CaSjkeA=mWs|NL9Gn-h EAUQ`3sQ>@~ literal 0 HcmV?d00001 diff --git a/signatures/2.2.1-cagebreak-socket.7.sig b/signatures/2.2.1-cagebreak-socket.7.sig new file mode 100644 index 0000000000000000000000000000000000000000..c2006c13f278568e1f3dcf9c7987f024611c72d6 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%YHX-2e&+5J?I6 zOsG4!XGNqC0Hz9+wC;n0Gi?5@lJY#U^YIRf{|^*8eRtER7;$M0Qb${|8_~tEj))HH z=dd5<`J0kI!Ij%qLvdD_CVl}Rb&js>7+`G$243s*U-wVAgR7{w%0~6-t?7tf3~ahutq3?# zjl|Nnk6uqbhtavYDi!lu$o9qCCdpvf5e(nAVQASsYYp!dEvwi^ee0|PipH{?HXchI z&c75I{w!>=As-Gp;ayjxe&fU)RRjI54>%e7bw_zVx|J=FTFg8d3^+Q)Ofxvn{X9{` zT7~)InN|+RCKblN&hD9P$4FzYL2+kR|KR^ww6mxNAL11jcslAvV-&73!Pr0I1<$lL z)ObUzLz35 zip~M0*p34ZhN?t4s}T>e3mOIDU>T>LC!DVU+Ui#>i8A1$#w3!`u0#r%c;oC~Eh}Y5 zt1J7s=?e<2{yaxgO)t-w_0Fy9B2%x9x=Rh#YFZVD<7AoN_@0;v zOGEK1#gotcETyjpIyp)bKrl1*pxP71ME^Emzz)_#TuEZF7f1Me_x+EZG5{AqR#UAT EKn)iNFaQ7m literal 0 HcmV?d00001 diff --git a/signatures/2.2.1-cagebreak.1.sig b/signatures/2.2.1-cagebreak.1.sig new file mode 100644 index 0000000000000000000000000000000000000000..cdbd7812f165dad1f19ea2b2b9181f53b4825f6f GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%YHX-2e&+5J?I6 zOsG4!XQlBF0Erx3YeY2@5K4l&J*~(huos~pT;6m~#SOJViF|eoCy;;jHjy zl64=uqIcd~)dw3^bjE)7*84}rS-@%%JEj@|uRxA&@B{s(Hv%B0vKLM!-a-2X_zll^ zC!tN`TGxcas0q4$69%gMMqiorHm3FvqUqff^os?^mZVNCS|Vjw(;()AR}Ue5)N#*T zY%wX6f0=6{uqA|=)gBh&JnryQRnF!A(1q?uV7;nZLz!OoZx99ADYs$M(Dv$KxR$|? zuA8V)y(;<1HAUW~j|}*Ld65^fTX}+#N#b=17R#3Z-$DA?e`RK1|Ol)RKy6n_G z<99;!K)q#7lBTggtU8V;yg8Y)pB5YPi4u^+@o=(}rj+l)g{LA6?GmC650m}u_^3ZC zI48;Ea8hF%R2oLfSt{)Il7!jvvGl~)*x=r1zWWTrLR-A$D$vn(8ppR$z`|@*t zdlat~vmxysYApsx)#+>|Qsg0oi)#=i*XRd-{NmC|E78#B>-kRju~Df3AqB)adYaVMaV0QXM>4W1aF{Y4d zW1W@fidlyGUbSc*L+%C|Yr2}$p2)+`)Nu5o(i)#}_j^qf{vW{edYxOxs=x;H&KCvS z+*qq!d`%&AIv{T>A`ls(1OIGZ(ZC5q$Hv+#Oi#Be8|tO(6W_*>g<>m!%ghD;=9!0K z(3N=YHgS$tFUnUAzno+B<&FctvxoC*0G+<`Xoe!pP$F)LEBUut|8P0NE-ppQOYB3a zkOQR*pRyWf9g&I#%kSX;y7E`I>2j4qxt)_aM95c3M)_~buX#*$TCx>WE+&y==Ic^D z2P1jjq%}y$o;~|=o%249x0{WCwq!-o&*BYiqS-I+Hg={^|yMxhAMp#(r@TjP?IuP_3~Vk zdnB5WIxqxUM(1WfPPO#7agQOnJf*P+$lX&SlL}tj@{w|5hnD8j1_}>gi_nUBiv*Ac z1*oj{31I(2Wq%~EkUwErc1mnnLAbJe;0-8ACY7zE^ouZE$yA3d&;{&y6jl@o-a@7g zNO9A&W^oX28CD`};&`U3e2pnGZCyobS!bPflc4?q!XkQcpq9v*k3!X}oSxa|m9SBy zBLDxKoO%w0WJcI@`P`hHf2t44z%nA1ZEre9Q`2>L(|=;MyDvs;ZC}Hhw+rIJL2{(} zzT%?eQDqpytUf&f4k*err?qLMkuyxyq~Yv#`mJik@q@E{4%MtIWr%0~yEg=q!rA=> zaXGR~n77M0^g0bM1qdG$2fU#ftYD<&!x7l4TSBMS)5zVv&&j&j)Skqst%&j>rE}pz hL4_pcau|GV0%E3Ogq#{tp%vU9^+DsLs{GR9^L1@G3Ag|N delta 543 zcmV+)0^t3&1hxc_B7bDxh1~!O2@pvM_)MrfxM!wb5B(ARo4tTiW=8P^ttPw+A=Y{3 zj~2L-Zt0Ia5Q{7Q9A51uSYK+2KJ^)Ks-sK#+ zFA+KZs(LD_1fT-oOFR+VERNG|yc{+^=}|#Mz!DroF>HS=t6*3J0|H{4F%JY~?#E~e zNjLNIrHu0)1Am}VI3foZoTi(!ro(9UhX3%?Eq=vwN6YM9&Dob+edCG*%D(WNNE7%RntaZt&JyZoYs5|CYcGg;@(U`!+{r>dM(bQm!7l)$Fd^(t8!#twP8d?1;7`hEe3hq+RHp6 hG_?qSgc#jgpg#TqEXuMaijbGz(q)sb7#y4zupnI`2VMXG diff --git a/signatures/cagebreak-socket.7.sig b/signatures/cagebreak-socket.7.sig index c2006c13f278568e1f3dcf9c7987f024611c72d6..e46522fc40240c6f9b09db2bf27cfdd64bf76e96 100644 GIT binary patch delta 543 zcmV+)0^t3&1hxc_B7bFVu;Ks;2@pvM_)MrfxM%5#5CF-V!k0qVjS%xt1huT9r$2|3 zT$OuJ5cNENS_}C*d%QA-RB)snkED!%WW&up)p^F4HAv@XGGT{qPFsNAOkaxAC8MHV z;}HhfrUw;N7}gg@R}aAiGAB4B~qjQqjZtHD2aj+DBFz zT*e1-{P2J6*MDn$O;sNot(7}%dvsB)o&2*_^PkwxXu0yB0uHGJaE?CU7L*hu3=LD^ z<(=;%>%*QKN($bD)Jrl$oZ=^iw<#gfIzK=`2Po7Sofu#vDDqcYUdxPi-44B%ZXFoK zN~`c^VRsrnJ1^5VJ2Mr#Vx!ew<6mX@GCkRzpsg-5nSY@Vv^6E$u=xb|YNZIX5ZuXZ zY?6uBJypXYor5KI29?U?pk>oIb(2T0QQA9?3u67W|3Pd}fK>dfuQ4h8{-iQGo*$t{ z0u0{UFgf%A4!l9rH>ARW27GtA3hL>D`AdT~eNf~Q+eU>-5Pp}@Z3~eMNv}-71@`j& hN+Kd&R~UgX)(X>?Jk`_L^D&m?5#cM!Y|GY}pE3?Y04o3h delta 543 zcmV+)0^t3&1hxc_B7bDxh1~!O2@pvM_)MrfxMxMA5CEnMm9*}IgEMUYu9EURvGef` zivJH3I(>K3rx*uf^=J}hFKf#sTRzq=CnI?V#Aa#ze?HFKf z1qNR0^k4T+xP@R%f(t$#u|?pS&y}!mcJKcka!XaDE?fsH4}Ym)&}dV){(T|WFk{Le zi#4mz5e({B!-&d8_3EwZh+YhAx>~IWI8lwn(zcIYPd$gxxw$G8^IFLE#oH#yVAv51 z-?w3C**$9w?-VVo*hhWqtOJV1vYj>_OC8R?6dL|4Y_cIA4m#moSEPR9#2r-w{jLu< z8T)ldc|N+8Eq{?(%sd$kI6B2lGdRxuJW<42h56!{Ru0D|6~@2L?wM@INMo)+ac5Tl z;Qv{)v#16i;uRKnI_gGa6s|JC*gxV0&$Kqwcv0__j)!R)R!uz-LsxNug{HfE1G<+# z2laUQ&0o{do+;>ItsAJ@p9MObx?L5%mm)Wc&H<&^j(-CVhN?t4s}T>e3mOIDU>T>L zC!DVU+Ui#>i8A1$#w3!`u0#r%c;oC~Eh}Y5t1J7s=?e<2{yaxg zO)t-w_0Fy9B2%x9x=Rh#YFZVD<7AoN_@0;vOGEK1#gotcETyjpIyp)bKrl1*pxP71 hME^Emz!(nJL|jQ?u@^`9d-wg1oiYFyKvq+&8$dKf0p$Py diff --git a/signatures/cagebreak.1.sig b/signatures/cagebreak.1.sig index cdbd7812f165dad1f19ea2b2b9181f53b4825f6f..36b2c99c6362034807b3beb0c00a4aa236f3e13e 100644 GIT binary patch delta 543 zcmV+)0^t3&1hxc_B7bFVu;Ks;2@pvM_)MrfxMy_!5CEu?Eyqc}+97z+9jwQ zG=?LB$)6xBq7;qYA0~VSn6jb_lUO(zai%}KYRCd%Xl}Berhmt=pR++@jmz%?k?{l+ zT*06xQw|*Ip89!#w5>}VDxd|u!7n2{C~*hHwg_$7a;EMr`WYcpT%iyr*qo=zKi#J;Q7C@!BwGfOK4j1rq`p#pN}{qk{EmxMlF=*dVeF{0D21#XMOOGOW~@cLINRpP7->NaYty+7Fv-uZ!+?oMe0=$Y8rBN zddQajRrfPRIIdYixy*N*BNSCMX6v3weE^7+81)$5WmP-AUe=ew?=SkKgY#54DXFsr9?geAE{Tr7h0)KRsgm=2G$gXhc&3wH+jmVOg zDTITrvk?Ecfs zA6(vaL^uk~@9cE}3Oq$N?|w?G(&4P|XOeXvyP|jATh#{}R&>UG_tyJI#aX~=5<8|E z0k1%gZtw&BrZ)m0rm`1KCf-5&1^5lmcqgGvS4H+!H}+-s8PKt`N=g!-ldNW_<(tl7qMG;f|5z* zWBgi8SkM0)Gk>f1WD70H7~DgH3AGz5dknk2DJZT?Wuq>}t}#mBw{0Z^S4mhgA|(Kq zBWgk!J)5Pb9_`OojcvU()J(%aR|PDRUTpMO*8(mS$}*ND9~?t_&a_J@hr_H>P~TZD zLSp0Uy}KoBKZYWGRK|!AzUO zXO6-GxLPb|bb>2aB?Z$n>OGI_-0wnx3=va{Ygfn7TLvTdMt|L`3F)$9xMtwVGVe58 zLXnuq@3qN;`^1S8nmLY+FB7K?nR|y>50A$t_?V_r2lbje>Bo)a3IwlF0YBAoc}(EZ zI@03L-%yr3hXZ0cSJoH>SuW05KtZ;vZ{q@-JOA@2cG+-+3P9#@ zkns_jd?UPV5Py%+%sj~Ha~N*-|GQeRyKgdU4LhShXpYzL*c(?P$nb-YKI-=-MPbP8 zUxKoXXL$$fi8xFog4m{Oq|)Dq6wGAcOx?SUeWCClm&gZfL2)W$byv2G9nf>`cMDiP zmmlCQ8McuVD4oO)7*bOAS7%@S?>fGNsTbkw?gGiZOMfy=m~h?Ol_pt6b!a08qW7{` z8oBb#l1cngsaRgFFXKY}2t@I4!@$_2uy#(&n#EOT2&33>w_GZ6K%ERqS;&h0pUp}C zMb21sc@@Z~-r|$cL+Exh he5i+X!5C#`Ms3!3%fN+%`%r9;(fyl8TXlczjIq?=4Q&7b delta 543 zcmV+)0^t3&1hxc_B7bDxh1~!O2@pvM_)MrfxMxDM5B?_x%`G}Ha!4I!oL^tb=Qq^@ zWQf(Fy*H-gQ&yaT?a4gMHK31Y`up;8e|r?K6|*7j9%?NHNY&|VCQ{@fgo|qsCD-T& zfBfRoN-NRO=j-`S__0x`0U^w}8&Sm1!dX6L1wKxFQWs-(qJKYTgR%v2K3Gs1>4+Mt6h9eA#^$*Z!97Z8KMLKY+lj82}8%m z+AB;?w<;UzrGM-b-^P)JVk>~l%mx4EnTKJ}m3ZwoagJ6m%2y7*oMZLnjsw55hx2Oy zoxbyEh9b;RB5sK*`L|mCa5=&*E=A2t>_e!K1Ema~vKnU{k%|V(@8JNt@>jR%a+N~4 zos&64$X7{5`ESavc}#U$vK3Pry=jBYEDWHGfFRo;~|=o%249x0{WCwq!-o z&*BYiqS-I Date: Mon, 4 Dec 2023 21:08:37 +0100 Subject: [PATCH 20/33] Fix output positioning --- output.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/output.c b/output.c index d4fef70..0a482f0 100644 --- a/output.c +++ b/output.c @@ -282,15 +282,20 @@ output_apply_config(struct cg_server *server, struct cg_output *output, wlr_output_commit(wlr_output); return; } - wlr_output_layout_add(server->output_layout, wlr_output, config->pos.x, - config->pos.y); + struct wlr_output_layout_output *lo = wlr_output_layout_add( + server->output_layout, wlr_output, config->pos.x, config->pos.y); + wlr_scene_output_layout_add_output(server->scene_output_layout, lo, + output->scene_output); /* Since the size of the output may have changed, we * reinitialize all workspaces with a fullscreen layout */ for(unsigned int i = 0; i < output->server->nws; ++i) { output_make_workspace_fullscreen(output, i); } } else { - wlr_output_layout_add_auto(server->output_layout, wlr_output); + struct wlr_output_layout_output *lo = + wlr_output_layout_add_auto(server->output_layout, wlr_output); + wlr_scene_output_layout_add_output(server->scene_output_layout, lo, + output->scene_output); struct wlr_output_mode *preferred_mode = wlr_output_preferred_mode(wlr_output); From fb4bd94ef8acba87b4ade1c7714109a6a3bb17b8 Mon Sep 17 00:00:00 2001 From: project-repo Date: Tue, 5 Dec 2023 10:35:56 +0100 Subject: [PATCH 21/33] Prep 2.2.3 --- README.md | 2 +- man/cagebreak-config.5.md | 2 +- man/cagebreak-socket.7.md | 2 +- man/cagebreak.1.md | 2 +- meson.build | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f2fd64d..1ca4ce5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Cagebreak: A Wayland Tiling Compositor -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6532/badge)](https://bestpractices.coreinfrastructure.org/projects/6532) [![Packaging status](https://repology.org/badge/tiny-repos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) [![AUR package](https://repology.org/badge/version-for-repo/aur/cagebreak.svg?minversion=2.2.2)](https://repology.org/project/cagebreak/versions) +[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6532/badge)](https://bestpractices.coreinfrastructure.org/projects/6532) [![Packaging status](https://repology.org/badge/tiny-repos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) [![AUR package](https://repology.org/badge/version-for-repo/aur/cagebreak.svg?minversion=2.2.3)](https://repology.org/project/cagebreak/versions) ## Quick Introduction diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index c04c757..d5b4969 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -1,4 +1,4 @@ -cagebreak-config(5) "Version 2.2.2" "Cagebreak Manual" +cagebreak-config(5) "Version 2.2.3" "Cagebreak Manual" # NAME diff --git a/man/cagebreak-socket.7.md b/man/cagebreak-socket.7.md index d61e498..19365d6 100644 --- a/man/cagebreak-socket.7.md +++ b/man/cagebreak-socket.7.md @@ -1,4 +1,4 @@ -cagebreak-socket(7) "Version 2.2.2" "Cagebreak Manual" +cagebreak-socket(7) "Version 2.2.3" "Cagebreak Manual" # NAME diff --git a/man/cagebreak.1.md b/man/cagebreak.1.md index 7e0c421..bdd469f 100644 --- a/man/cagebreak.1.md +++ b/man/cagebreak.1.md @@ -1,4 +1,4 @@ -cagebreak(1) "Version 2.2.2" "Cagebreak Manual" +cagebreak(1) "Version 2.2.3" "Cagebreak Manual" # NAME diff --git a/meson.build b/meson.build index e28557e..f55192f 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,7 @@ project( 'cagebreak', 'c', -version : '2.2.2', +version : '2.2.3', license : 'MIT', default_options : ['c_std=c11', 'warning_level=3'] ) @@ -260,7 +260,7 @@ install_data('LICENSE', install_dir : '/usr/share/licenses/' + meson.project_nam if get_option('man-pages') scdoc = find_program('scdoc') - secssinceepoch = 1701680868 + secssinceepoch = 1701768836 shcommand = 'export SOURCE_DATE_EPOCH=' + secssinceepoch.to_string() + ' ; @0@ < @INPUT@'.format(scdoc.path()) sh = find_program('sh') mandir1 = join_paths(get_option('mandir'), 'man1') From 4b0f87c277f196a300ac658e5e633e0988b286f1 Mon Sep 17 00:00:00 2001 From: project-repo Date: Tue, 5 Dec 2023 10:37:59 +0100 Subject: [PATCH 22/33] Fix wlroots version requirements --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index f55192f..aeb3346 100644 --- a/meson.build +++ b/meson.build @@ -55,7 +55,7 @@ if is_freebsd ) endif -wlroots = dependency('wlroots', version: ['>=0.16.1', '< 0.17.1']) +wlroots = dependency('wlroots', version: ['>=0.17.0', '< 0.18.0']) wayland_protos = dependency('wayland-protocols', version: '>=1.14') wayland_server = dependency('wayland-server') wayland_cursor = dependency('wayland-cursor') From e5a4d8470fceb3a6d8957455442e6a4f7dd5b3ad Mon Sep 17 00:00:00 2001 From: project-repo Date: Tue, 5 Dec 2023 10:44:41 +0100 Subject: [PATCH 23/33] Add non-auto check for compat vers --- release-non-auto-checks/version-restrictions | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 release-non-auto-checks/version-restrictions diff --git a/release-non-auto-checks/version-restrictions b/release-non-auto-checks/version-restrictions new file mode 100644 index 0000000..e69de29 From aeeb32e368ef292e5eed106e8e80d90336965e4e Mon Sep 17 00:00:00 2001 From: project-repo Date: Tue, 5 Dec 2023 10:45:07 +0100 Subject: [PATCH 24/33] Add Issue 66 --- Bugs.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Bugs.md b/Bugs.md index ee38c63..1e65b8d 100644 --- a/Bugs.md +++ b/Bugs.md @@ -1235,3 +1235,12 @@ configuration was a NoOp. Starting with version 2.2.1, the calibration matrix can be set as documented. Thanks to Oliver Friedmann for providing a pull request. + +## Issue 66 + + * github issue number: #65 + * Fixed 2.2.3 + +In Cagebreak 2.2.2 the compatible wlroots versions were wrongly specified. +To stop this from reoccurring, we have added a check to our release checks. + From 564329e0f2da51dcf39be9459d554388e975dfff Mon Sep 17 00:00:00 2001 From: project-repo Date: Tue, 5 Dec 2023 10:45:42 +0100 Subject: [PATCH 25/33] Add Issue 67 --- Bugs.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Bugs.md b/Bugs.md index 1e65b8d..be04464 100644 --- a/Bugs.md +++ b/Bugs.md @@ -1244,3 +1244,11 @@ Thanks to Oliver Friedmann for providing a pull request. In Cagebreak 2.2.2 the compatible wlroots versions were wrongly specified. To stop this from reoccurring, we have added a check to our release checks. +## Issue 67 + + * github issue number: #66 + * Fixed 2.2.3 + +In Cagebreak 2.2.2 dual monitors were mirrored instead of extended, changing +established behaviour. + From 920118c5431587be46401840dbdcd9448f64af65 Mon Sep 17 00:00:00 2001 From: project-repo Date: Tue, 5 Dec 2023 14:04:49 +0100 Subject: [PATCH 26/33] Add signatures --- signatures/2.2.2-cagebreak-config.5.sig | Bin 0 -> 566 bytes signatures/2.2.2-cagebreak-socket.7.sig | Bin 0 -> 566 bytes signatures/2.2.2-cagebreak.1.sig | Bin 0 -> 566 bytes signatures/2.2.2-cagebreak.sig | Bin 0 -> 566 bytes signatures/cagebreak-config.5.sig | Bin 566 -> 566 bytes signatures/cagebreak-socket.7.sig | Bin 566 -> 566 bytes signatures/cagebreak.1.sig | Bin 566 -> 566 bytes signatures/cagebreak.sig | Bin 566 -> 566 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 signatures/2.2.2-cagebreak-config.5.sig create mode 100644 signatures/2.2.2-cagebreak-socket.7.sig create mode 100644 signatures/2.2.2-cagebreak.1.sig create mode 100644 signatures/2.2.2-cagebreak.sig diff --git a/signatures/2.2.2-cagebreak-config.5.sig b/signatures/2.2.2-cagebreak-config.5.sig new file mode 100644 index 0000000000000000000000000000000000000000..811fe372025fbcaaa8f497ef6bc25d9d37641be9 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%dKm;s6Q>5J?I6 zOsG4!XJMfb0E>`au^^z8E*v#Fd9jxSr%FdRbeic+={rm$M))f-=$6&xrq{OVP9ncaEXyy zAm(BmYFS|7U3ot(_njmrb6^i@efjvv!bFfE-9V|jzLe+S=)^oS4@KmC#38hfayR0W z7!ulWP+;}9dcB4!eG$@c=vPpaGFbKUT$6hwnvgm$1X@PtW<=F$cV4`7SXig}9!kOl>)to8|D|3hUYuaG}sS$0ZnSwXn6d*BTy zNhX!8r1Xn0UCC63EYJn)c@$O@3Eo1c4M=g*v}SP-Zy8o1Y~pyPt9*?qGHqQ&YFTHU zb(5g}0m34BaiEsSnvX)&tDK(M=asNgq$2vc++CFyDvs;ZC}Hhw+rIJL2{(}zT%?eQDqpytUf&f4k*err?qLMkuyxyq~Yv# z`mJik@q@E{4%MtIWr%0~yEg=q!rA=>aXGR~n77M0^g0bM1qdG$2fU#ftYD<&!x7l4 zTSBMS)5zVv&&j&j)Skqst%&j>rE}pzL4_pca(rz9Vy0q*oElM~72F{8LF1&V{Li0{{R3 literal 0 HcmV?d00001 diff --git a/signatures/2.2.2-cagebreak-socket.7.sig b/signatures/2.2.2-cagebreak-socket.7.sig new file mode 100644 index 0000000000000000000000000000000000000000..e46522fc40240c6f9b09db2bf27cfdd64bf76e96 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%dKm;s6Q>5J?I6 zOsG4!XX%O%0LhxdmqOQ#5c5z3wXCA2KZlfDm3vSS^*n!C3;8>HyfTMWaHJiNq>O-M z!_7U_dB&JENatoUVTW!`TY%q8Uy9QuqoQ8p5eC?%2NhHp))z-t55WX7Cr>E?I}sDZ zlY5I6_9_-Ev{PoIb(2T0QQA9? z3u67W|3Pd}fK>dfuQ4h8{-iQGo*$t{0u0{UFgf%A4!l9rH>ARW27GtA3hL>D`AdT~ zeNf~Q+eU>-5Pp}@Z3~eMNv}-71@`j&N+Kd&SAj6r3e%T7)zjJYF_z^K;Va5)%hs8n EGW&xDb^rhX literal 0 HcmV?d00001 diff --git a/signatures/2.2.2-cagebreak.1.sig b/signatures/2.2.2-cagebreak.1.sig new file mode 100644 index 0000000000000000000000000000000000000000..36b2c99c6362034807b3beb0c00a4aa236f3e13e GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%dKm;s6Q>5J?I6 zOsG4!XLSA$0H~8K$4S51D7#=L&$@HYeL^A-m#)@d(K;Fs##`LxdqzbB9uTZji zPb2qRTpo|xFBiRf@{*5~n_wlc^jwkJC8!)Uh9iQ>pCBxv6ph^agn)VAE>uBdeTNMl;?UQ-T-}k#R?8&lXydHg7WWoki+Z5NaB7b$ZB_{Z;ofML4cmLAlI#oFf!fG-m6bNqqo_ zl^FFH-epxgzFyXs!tXEo*?IS*Hgh&1Hi><4ys%p+`6EInLc%Wz*=!h!Q)fT0T5J?I6 zOsG4!X9fQd0J=kb54SFRiT$(tSOAYXE>H=2ikF(>)G421sRWpML`=yU9(L`jSXq;m zCDv57c`KO24HQJXhzxF<`#$z$DTV35Oq;`Jj=}=CS}bUEf-6@g1=BO?J&)|%??QnL z5mSq6SI5y?1|#=I-K+`evSYYr;K?%YG+aWFn8)w6$%FgEi4&SRj*c%Arwy5VhglDg z$0qogrcwv>nmg&ojpPahuTcR%)p2=D;L$qL;?LhumOO_8VmVjV7zJ4_&ROIFJbYMm z2nxv_y4xno_B!bwcYoyZOhZM|Y;7r}S zjeVi;AD74nY(a4w_GZ6K%ERqS;&h0pUp}CMb21sc@@Z~-r|$cL+Exhe5i+X!DVJfZPs|pz=eeSP;8IU{hLQyb${%P Ev8itpxBvhE literal 0 HcmV?d00001 diff --git a/signatures/cagebreak-config.5.sig b/signatures/cagebreak-config.5.sig index 811fe372025fbcaaa8f497ef6bc25d9d37641be9..6d7f6c16507165c9ac9b5646e45cb4cc3a89863b 100644 GIT binary patch delta 542 zcmV+(0^$9(1hxc_BY$rm&HxGt5J?I6OsG4!XG8W6|9R#;J{FE-UT8#I!Fi4#zi*ov z9Xy@$5_IOwHC)DCP)s(==UVe6N7@7-A^-dEBpXnVsr`4u3uKdL`06E&J>;c^ zGLT`#D);5PsU0#YBhuT9^r&UtpG(X0;-JsYjD3_^N;Ir-Z4`a^&NZPoP-LJkDQJ$o ztQ%ax0n<}on}0qm-E=?OPj+n3|IHg!ysgT4hzK_?Sq&d!Kgo1rnqfYJm8tUa_@E0X zGwBQWd8UZnmlLz7;_pf@-9yZ31Xv5g2Dp2_lGah%M#l3=wKveJy6lK`1$QE)a>i+V9|LMnm=&&EfQ)cl5iM@4?FK45J?I6OsG4!XJMfb0E>`au^^z8E*v#Fd9jxSr%FdR zbeic+={rm$M))f-=$6&xrq{OVP9ncaEXyyAm(BmYFS|7U3ot(_kW!vCUam9YJK_m$ihUB zA>BZ!y1ta>;ON9WG7m-MeZ(QOj&e8RlNb`(a8O|Nw|c#XDt!^sZ|GN0lQLNK@?4X9 zB$|*qFa%mg=Vm`nwe+}gk0H4{rLhRe-BTiy3SQgtk#b{)mgdq13J+k5(29AB1ds*= zsI2x0VE;p9B!91vKVeyRN^Ds{xUzfT4Jb(_m93=oi!fcuREI3k1?+hgRul=|LZ%H! zanrPBaS(4ARw8WTc&4j-jVUs1T}5hHXPtGEp#A~EB6@M4mdKiqLe;CBp4sP>uu-HU z|NoqvdJctTM%Z-u+?<_%st?M*G9s33Z#qX)({*^$Vt=)}FGg%_U&ETW3*y2-a-{mc z;-ceGWf;P&K0N^rD9SXawP~c0GfdT_;p}$$t!l;bgR^}O)vPRKh-d!0Hw2Qx+5HA_ zIkHTcx63*7It?!c2p<#&yrCJaV5H^45!kC+LZ{Z#$lbor$-3Cop2VoFi1H$(bKyck gg(T&2d>3s3Vy0q*oElM~72F{8LF1&V{L2q+@7Wxi}6Hz zo4QkhM=B3~=^{TsW09d;k=38L|LYbj1!=3-gW5sDChrA{ofASO33n6-ALc z``%qt;VT?b7m1kQtJ1;6F#huuPxn_#&+lo-{`EPe&XpXzX=C8`hoUcR6|+`!a|PN> zciV6IEV}yy0L@;GyI|86s8Dz`uciE$nd4J_no9tZ8B}nzsNyn-471wYEU68SG;1S3J5OeK%SL1K#C$M@LKZpTVt;c1ylX$o=)VKke_W<%YFJE| znZp2ZU7>pX<<~}N74ZYNtoct%N@|a#bq@LI-V}Ede@>@3<6^wVZZbir4 gMmn>Z>=$cw@HwBgkA;5J?I6OsG4!XX%O%0LhxdmqOQ#5c5z3wXCA2KZlfD zm3vSS^*n!C3;8>HyfTMWaHJiNq>O-M!_7U_dB&JENatoUVTW!`TY%q8Uy9QuqoQ8p z5eC?%2NhHp))z-t55WX7Cr>E?I}sDZlY5I6_9_-Ev{PX_4ygoijy~WPloTWk4O8Le zo$n*-!=4*T3f_d&OEN>8;wOc-DIw81KR`hTDAX987+@nP@>g13%Zzp14!xId9T>$* ztMF%GcN#uBFVi+VGZnjHqt#yHUuF3+J=vb1tu8Z}p??pwH6`1y`2_fCr3kYS+{tWg zl8M(nRl^~jgC%wbmCEIyWz#rylSi*n+B=U6V*RxLL2OWfRQ#;3F)982q%u05AE8GA z4Bp!?IrISzyg}19q{4v)e0RDE>gj{|OM^CjP~;NZMukccewWd03y};-uS~%O_VWEo gA|hT_ffq2=3e%T7)zjJYF_z^K;Va5)%hs8nGCKSJw*UYD diff --git a/signatures/cagebreak.1.sig b/signatures/cagebreak.1.sig index 36b2c99c6362034807b3beb0c00a4aa236f3e13e..14ac7ab7fd60b8337eaa18e060f7a24402925528 100644 GIT binary patch delta 542 zcmV+(0^$9(1hxc_BY$rm%>W7s5J?I6OsG4!XL#rj{T+Al-oPBN+x!MHM~QdkHzBr| zCl+us_ro^WM3!tDhfsBw7Pq%1Z{ zRD62N4N=i9+{y)3(Ru$V?xv1!7mfQcC$)a&YY~(X8+6uKa(^@a*FaJm=k2d5e#8K? zBk6`gZwAL|l3suRPlWha7l0#wTP{f8V%IzhA|Hj?QK3mn&r+$yiSr?mJIkC)*B8*l z^?kvE-xrH4amP7nO~E_Tu1Dh%2Xwp3baa*}C6f&Akz5Rxnu1dnOJ4}*c_2nu#Urv8 z0_Wt1JoS%$CVv2)?ob#t9F1I9CwmObFHhlK0B=@Gy2fFG=nutuJn!u0rEjd%hRr0L zDV&tKE^s7L=meU@45+$n^2=q2Z zKGSc-f6OXa(-RiFI5$3$B4FvEw0qnbznO;dx_atDeSg03=IHb!5N(c}OK?nzC0we5 ze-Mb7on$b#S2mp2$R?^F3`0olF1~xBqx2rE_C%c_i$VvgIG;0l7$1L9gu*LB)Yn5= zgL)0@BBh-*cY6YeN2O~J+*Fv<3Q0v*FLa<8B3v8CS{4i{UeNFo0`+wHghwX}jEorq g{nwU}ofqGe=tDjJ_J`^&YaK-^$7k{&2ct;QrwVKVasU7T delta 542 zcmV+(0^$9(1hxc_BY$nM;s6Q>5J?I6OsG4!XLSA$0H~8K$4S51D7#=L&$@HYeL^A- zm#)@d(K;Fs##`LxdqzbB9uTZjiPb2qRTpo|xFBiRf@{*5~n_wlc^jwkJC8!)U zh9iQ>pCBxv6ph^QxYG8gg}d z$d>(8_cKK}u3163%y*n46jd~4>z+w{0Em?s^%&k|RXe_3)|bNXFZ$Ve_oOy+HX$~N zeQ~_7TPXP>LMKAPFA3Rf7>ZM8Kd@Zx1!K1T8=51AF&=8-?(k8|=EJiVF?YLGRHU}Mc3##Z*-{!b*WBZ}?8(nZozCMtk6kL)X*~bp gq}hT_G#3N4Gj~13RXcEo3$FSz)?Jh1$@?FoWvD9$QUCw| diff --git a/signatures/cagebreak.sig b/signatures/cagebreak.sig index ca4ae146f6b80b7f5a7a9a0bf899cdcdbf702f21..b06130553f46759a6b0c15d2ec5e4a7f3fe3714d 100644 GIT binary patch delta 542 zcmV+(0^$9(1hxc_BY$rm%>W7s5J?I6OsG4!XRMG9{S^4?G%^Y3m5el0Q_7oaILK}l zji>EKqg2qNLmPHp`AzALIN3h@;a~B)ymaY@9KZ9Z?6L?yxsZ1pU=68cL;~wowNV!k z(}NRXx`~nO6O%vds-sG3-$iS`TqsdTy69<hg$9cnnvIX5buFPT?}bec==AAn%a)WHBcL;2;Q62OBxqO(ho2hv)@zL66N; zf(fQUFNaz;Kj!_GB!V1(u^jHTIy*BgL2T918hT0bUVf*l#8WDb5s0L1(=6n|n&9EXz2OXhW(;d5tfbi<^( z!ohzPb!2@G7VUn&`)d4m4?A&lzlu`&pJa~C+7%PdLU&*W1~(ns z?No(pk1)m;|NP?m;@)x*!ANT243?wj$lPbRVIgrP!IDVo?z54G1ivR!s delta 542 zcmV+(0^$9(1hxc_BY$nM;s6Q>5J?I6OsG4!X9fQd0J=kb54SFRiT$(tSOAYXE>H=2 zikF(>)G421sRWpML`=yU9(L`jSXq;mCDv57c`KO24HQJXhzxF<`#$z$DTV35Oq;`J zj=}=CS}bUEf-6@g1=BO?J&)|%??QnL5mSq6SI5y?1|#=I-G8hJ>9S+EX5h&(?=)OO zk(kHtwaJ6~#EBD{IgXAm6Q>QCdxu#MkH;qXn5I$(^_n~B$BpC)1g}v6Kh<%0OyJQv z(&EqGP?kK017bN>)))m@F3wrx0z7HslK<06f z@e!GPBfM=8kAKn3Jjm&D7;g9fyIQZiZ!&8QJEK2nj@R(m8&@O9@Pm&&>h~r^VaV-Y zg0hTfc?au>I7}ph*rscw(%**^%w*t9-Mfu_q3|D<$OmjeaVleVSGJ5D&~xs03s^pv zAK)z+wviJkox~3qQd0Lmp-2mk;8 From 4bd1d9b9ef50424d8ed0c5eaa7e7dd5a2f4ef035 Mon Sep 17 00:00:00 2001 From: project-repo Date: Tue, 5 Dec 2023 14:04:58 +0100 Subject: [PATCH 27/33] Add Hashes --- Hashes.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Hashes.md b/Hashes.md index ace89e4..867692b 100644 --- a/Hashes.md +++ b/Hashes.md @@ -1,5 +1,25 @@ # Hashes +2.2.3 cagebreak + + * sha 256: 265a9d09622272ca6ea79ddcdbdc6003704106814eb05a2b7547a77a982263de + * sha 512: 757f837a7e6ddd71fed88c4e1aab5cab9d4d07e8b76f280eed9afa35a2eaee23c0553299fe49a0139c754179d0df68c1303725f1f909921d078516e14ba3f21f + +2.2.3 cagebreak.1 + + * sha 256: 275698641476efa40fc1b33a8025e6dbba3ec931fbaf0a627c0748dad987ed4d + * sha 512: 617891ded06657e31daefee84a03191ad6e03892118f1790a5ebaa6e847c4d18d4b6849edc00841bd68abc9e0e0a111153efe102db02ce3d408c903b0d045927 + +2.2.3 cagebreak-config.5 + + * sha 256: 5967e9131d1ee16ffa046a732911c902e41f2e18f3170d11a47b9be596b4978a + * sha 512: 6d3c5fbb2b95a75d7c5a8ed8b5922cfcc4135857b389652572c5d9c211c6da9cf8ef0b5dc0e8eaa540c6b1c2dd215f512df2ef49ce80c34e8e5ad170bfb7134e + +2.2.3 cagebreak-socket.7 + + * sha 256: cb1bde8a6fb2a1fa2b7b8db7fdef9b933cd471ca604e15d1dd9133859fa6eea3 + * sha 512: 1d99672cb7ac7323790d47986d206bf8c392698db0cd52978963deb6e85118c6822e2d45c7fa66e8636e95214f8893d963a3157ca24239d2fd2d78b1e26f11e7 + 2.2.2 cagebreak * sha 256: 98e0dfe870a7242fdf7c6fb1a5c520cfe7d1154b3f139560da6cb86b2430b2a0 From ad6377ce6c596f168c22cb2ed1cd474c41a6a860 Mon Sep 17 00:00:00 2001 From: project-repo Date: Tue, 5 Dec 2023 14:05:12 +0100 Subject: [PATCH 28/33] Add non-automated checks --- release-non-auto-checks/Bugs.md | 4 ++-- release-non-auto-checks/FAQ.md | 4 ++-- release-non-auto-checks/SECURITY.md | 4 ++-- release-non-auto-checks/WLR_XDG_VERSION | 4 ++-- release-non-auto-checks/acknowledge-contributors | 4 ++-- release-non-auto-checks/changelog-major-minor | 4 ++-- release-non-auto-checks/internal-wiki | 4 ++-- release-non-auto-checks/release-note | 4 ++-- release-non-auto-checks/reproducibility-checked | 4 ++-- release-non-auto-checks/security-to-man-page-info-transfer | 4 ++-- release-non-auto-checks/version-restrictions | 2 ++ 11 files changed, 22 insertions(+), 20 deletions(-) diff --git a/release-non-auto-checks/Bugs.md b/release-non-auto-checks/Bugs.md index 9388d0a..16e03cd 100644 --- a/release-non-auto-checks/Bugs.md +++ b/release-non-auto-checks/Bugs.md @@ -1,2 +1,2 @@ -2.2.2 -2023-12-04 +2.2.3 +2023-12-05 diff --git a/release-non-auto-checks/FAQ.md b/release-non-auto-checks/FAQ.md index 9388d0a..16e03cd 100644 --- a/release-non-auto-checks/FAQ.md +++ b/release-non-auto-checks/FAQ.md @@ -1,2 +1,2 @@ -2.2.2 -2023-12-04 +2.2.3 +2023-12-05 diff --git a/release-non-auto-checks/SECURITY.md b/release-non-auto-checks/SECURITY.md index 9388d0a..16e03cd 100644 --- a/release-non-auto-checks/SECURITY.md +++ b/release-non-auto-checks/SECURITY.md @@ -1,2 +1,2 @@ -2.2.2 -2023-12-04 +2.2.3 +2023-12-05 diff --git a/release-non-auto-checks/WLR_XDG_VERSION b/release-non-auto-checks/WLR_XDG_VERSION index 9388d0a..16e03cd 100644 --- a/release-non-auto-checks/WLR_XDG_VERSION +++ b/release-non-auto-checks/WLR_XDG_VERSION @@ -1,2 +1,2 @@ -2.2.2 -2023-12-04 +2.2.3 +2023-12-05 diff --git a/release-non-auto-checks/acknowledge-contributors b/release-non-auto-checks/acknowledge-contributors index 9388d0a..16e03cd 100644 --- a/release-non-auto-checks/acknowledge-contributors +++ b/release-non-auto-checks/acknowledge-contributors @@ -1,2 +1,2 @@ -2.2.2 -2023-12-04 +2.2.3 +2023-12-05 diff --git a/release-non-auto-checks/changelog-major-minor b/release-non-auto-checks/changelog-major-minor index 9388d0a..16e03cd 100644 --- a/release-non-auto-checks/changelog-major-minor +++ b/release-non-auto-checks/changelog-major-minor @@ -1,2 +1,2 @@ -2.2.2 -2023-12-04 +2.2.3 +2023-12-05 diff --git a/release-non-auto-checks/internal-wiki b/release-non-auto-checks/internal-wiki index 9388d0a..16e03cd 100644 --- a/release-non-auto-checks/internal-wiki +++ b/release-non-auto-checks/internal-wiki @@ -1,2 +1,2 @@ -2.2.2 -2023-12-04 +2.2.3 +2023-12-05 diff --git a/release-non-auto-checks/release-note b/release-non-auto-checks/release-note index 9388d0a..16e03cd 100644 --- a/release-non-auto-checks/release-note +++ b/release-non-auto-checks/release-note @@ -1,2 +1,2 @@ -2.2.2 -2023-12-04 +2.2.3 +2023-12-05 diff --git a/release-non-auto-checks/reproducibility-checked b/release-non-auto-checks/reproducibility-checked index 9388d0a..16e03cd 100644 --- a/release-non-auto-checks/reproducibility-checked +++ b/release-non-auto-checks/reproducibility-checked @@ -1,2 +1,2 @@ -2.2.2 -2023-12-04 +2.2.3 +2023-12-05 diff --git a/release-non-auto-checks/security-to-man-page-info-transfer b/release-non-auto-checks/security-to-man-page-info-transfer index 9388d0a..16e03cd 100644 --- a/release-non-auto-checks/security-to-man-page-info-transfer +++ b/release-non-auto-checks/security-to-man-page-info-transfer @@ -1,2 +1,2 @@ -2.2.2 -2023-12-04 +2.2.3 +2023-12-05 diff --git a/release-non-auto-checks/version-restrictions b/release-non-auto-checks/version-restrictions index e69de29..16e03cd 100644 --- a/release-non-auto-checks/version-restrictions +++ b/release-non-auto-checks/version-restrictions @@ -0,0 +1,2 @@ +2.2.3 +2023-12-05 From ed35f8825d4d993b0f30e2900a3c4af978053864 Mon Sep 17 00:00:00 2001 From: project-repo Date: Sat, 23 Dec 2023 21:12:23 +0100 Subject: [PATCH 29/33] Add CONTRIBUTING --- CONTRIBUTING.md | 461 ++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 461 ------------------------------------------------ 2 files changed, 461 insertions(+), 461 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ed16399 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,461 @@ +# Contributing + + * Read this document and the README. + * [Open an issue](https://github.com/project-repo/cagebreak/issues/new) and state your feature request. + We will get back to you. + * Ask before opening a pull request. We might not accept your + code and it would be sad to waste the effort. + * Respect the [Code of Conduct](CODE_OF_CONDUCT.md) (To date, we never + had to intervene - Please keep it that way!) + +## Good First Contributions + + * Reviews are always welcome. + * Read the code. + * Read the documentation. + * Test whether the documentation matches the code. + * Test Cagebreak in more esoteric setups (many monitors, for instance). + * Compile the code. + * Ideas on improving the testing and quality assurance are particularly + welcome. + * You can share your cagebreak scripts and we might include them with Cagebreak + provided you agree to release them under MIT and we agree with the + use case and coding style. + * If you are happy with Cagebreak under Arch Linux, you may vote for + [Cagebreak in the AUR](https://aur.archlinux.org/packages/cagebreak). + * The points from the Contributing section above still apply. + +## Philosophy + +Cagebreak is currently developed to fit the needs of its creators. + +The feature set is intentionally limited - we removed +support for a desktop background image for example. + +Nonetheless, don't be intimidated by any other part of this file. +Do your best and we will collaborate toward a solution. + +# Development + +## Compatibility & Development Distribution + +Cagebreak supports [Arch Linux](https://archlinux.org/) and uses the library +versions as they are obtained through core and extra +at the time of release. + +However, Cagebreak may also work on other distributions given the +proper library versions (Some package maintainers have done this and it +seems to work (To date, we dealt with a few Issues and never felt the +need to ask for the distribution the user was having the issue on.)). + +[![Packaging status](https://repology.org/badge/vertical-allrepos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) + +You should use Arch Linux if you want to modify Cagebreak +for yourself. + +## Review Requirements + +Project-repo will review your proposal before your implementation for feasibility +and desirability. After your pull request, the code will be reviewed in conjunction +with all other changes before the release as per the release procedure. + +All reviews performed by project-repo are verified by at least two people internally. + +## Developer Certificate of Origin (DCO) + +On any pull requests please include a + +``` +signed-off-by: YOUR IDENTIFIER OR NAME +``` + +DCO statement. + +By doing this you claim that you are legally allowed to contribute the +code and agree to let project-repo publish it under the MIT License. + +### Development Environment + +CAVEAT: This script works exclusively on Arch Linux, which, as outlined above, +is the development distribution of Cagebreak. + +Cloning the Cagebreak repository and building it is sufficient as a starting point. + +All other dependencies can be installed by invoking + +``` +meson compile devel-install -C build +``` + +if meson is already available or + +``` +./scripts/install-development-environment +``` + +otherwise. + +### Scripts + +Cagebreak provides a few convenience tools to facilitate development. + +#### Fuzzing + +If your fuzzing corpus is located in the directory `fuzz_corpus` you can +just call: + +``` +meson compile fuzz -C build +``` + +If you want to use a different directory, configure cagebreak with +`-Dcorpus=OTHERDIRECTORY` or call `./scripts/fuzz OTHERDIRECTORY`. + +#### Adjusting Epoch + +To facilitate the creation of reproducible man pages an arbitrary release +time has to be set in `meson.build`: + +``` +meson compile adjust-epoch -C build +``` + +or + +``` +./scripts/adjust-epoch +``` + +#### Git tag + +If you are on the master branch, everything is ready and you want to create +a release tag you can call: + +``` +meson compile git-tag -C build +``` + +If you want to use another signing key than the prespecified one, configure +Cagebreak with `-Dgpg_id=GPGID`. + +``` +./scripts/git-tag GPGID CBVERSION +``` + +can be used alternatively. + +#### Output Hashes + +Hashes of release versions of all binaries can be output to `local-hashes.txt` +via: + +``` +meson compile output-hashes -C build +``` + +Or + +``` +./scripts/output-hashes VERSION +``` + +if meson is unavailable. + +#### Create Signatures + +Creation of signatures for releases can be achieved through: + +``` +meson compile create-sigs -C build +``` + +Configure Cagebreak with `-Dgpg_id=GPGID` for a different gpg signing +key. + +Without meson use: + +``` +./scripts/create-signatures GPGID +``` + +#### Set Version Number + +Once the version number is set within meson.build, you can use + +``` +meson compile set-ver -C build +``` + +to set the version number in the man pages and README repology minversion. + +Use of the script without meson is discouraged because meson.build is +not touched by the script. + +#### Create Release Artefacts + +The following command generates the release artefacts which must be created +once a release is completely ready to be published (the commit is tagged with +the version of the master branch, etc.): + +``` +meson compile create-artefacts -C build +``` + +Use of the script version is discouraged. + +## GCC and -fanalyzer + +Cagebreak should compile with any reasonably new gcc or clang. Consider +a gcc version of at least [10.1](https://gcc.gnu.org/gcc-10/changes.html) if +you want to get the benefit of the brand-new +[-fanalyzer](https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html) +flag. However, this new flag sometimes produces false-postives and we +selectively disable warnings for affected code segments as described below. + +Meson is configured to set `CG_HAS_FANALYZE` if `-fanalyzer` is available. +Therefore, to maintain portability, false-positive fanalyzer warnings are to be +disabled using the following syntax: + +``` +#if CG_HAS_FANALYZE +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "WARNING OPTION" +#endif +``` +and after + +``` +#if CG_HAS_FANALYZE +#pragma GCC diagnostic pop +#endif +``` + +## Test Suite + +``` +meson test -C build +``` + +invokes all tests. This is required for a release to occur. + +There are four test suites: + + * basic: tests actual outward-facing functionality + * Note optional dependencies for efficient socket interaction + * nc (openbsd-netcat) + * jq + * devel: tests internal properties of the repository + * Note potentially heavier dependencies such as + * shellcheck + * clang-format + * devel-long: applies more costly testing + * Note potentially heavier dependencies such as + * scan-build (static analysis (including security-relevant issues)) + * release: tests release specific considerations + * Note that this is only expected to pass just before + a release. This checks mostly administrative things + to check that a release is ready. + * Note that non-auto tests are files in `release-non-auto-checks` + and have to contain the release version and current date in + YYYY-mm-dd format on seperate lines. This is our imperfect attempt + to guarantee some hard-to-automate checks are carried out before + a release is undertaken. + +Every commit should pass at least the basic and devel suites. + +It is expected that cagebreak passes at least the +basic, devel and devel-long suites when commits are pushed: + +``` +meson test -C build --suite basic --suite devel +``` + +The basic suite can be used to test a binary. This is +useful for PKGBUILDs and their equivalents in other +systems. + +``` +meson test -C build --suite basic +``` + +## Fuzzing + +Along with the project source code, a fuzzing framework based on `libfuzzer` is +supplied. This allows for the testing of the parsing code responsible for reading +the `cagebreak` configuration file. When `libfuzzer` is available (please +use the `clang` compiler to enable it), building the fuzz-testing software can +be enabled by passing `-Dfuzz=true` to meson. This generates a `build/fuzz/fuzz-parse` +binary according to the `libfuzzer` specifications. Further documentation on +how to run this binary can be found [here](https://llvm.org/docs/LibFuzzer.html). + +Here is an example workflow: + +``` +rm -rf build +CC=clang meson setup build -Dfuzz=true -Db_sanitize=address,undefined -Db_lundef=false +ninja -C build/ +mkdir build/fuzz_corpus +cp examples/config build/fuzz_corpus/ +WLR_BACKENDS=headless ./build/fuzz-parse -jobs=12 -max_len=50000 -close_fd_mask=3 build/fuzz_corpus/ +``` + +You may want to tweak `-jobs` or add other options depending on your own setup. +We have found code path discovery to increase rapidly when the fuzzer is supplied +with an initial config file. We are working on improving our fuzzing coverage to +find bugs in other areas of the code. + +### Caveat + +Currently, there are memory leaks which do not seem to stem from our code but rather +the code of wlroots or some other library we depend on. We are working on the problem. +In the meantime, add `-Db_detect-leaks=0` to the meson command to exclude memory leaks. + +## Reproducible Builds + +Cagebreak offers reproducible builds given the exact library versions specified +in `meson.build`. Should a version mismatch occur, a warning will be emitted. We have +decided on this compromise to allow flexibility and security. In general we will +adapt the versions to the packages available under Arch Linux at the time of +release. + +There are reproducibility issues up to and including release `1.2.0`. See +`Issue 5` in [Bugs.md](Bugs.md). + +### Reproducible Build Instructions + +All hashes and signatures are provided for the following build instructions. + +``` +meson setup build -Dxwayland=true -Dman-pages=true --buildtype=release +ninja -C build +``` + +### Hashes for Builds + +For every release after 1.0.5, hashes will be provided. + +For every release after 1.7.0, hashes will be provided for man pages too. + +See [Hashes.md](Hashes.md) + +### GPG Signatures + +For every release after 1.0.5, a GPG signature will be provided in `signatures`. + +The current signature is called `cagebreak.sig`, whereas all older signatures +will be named after their release version. + +Due to errors in the release process, the releases 1.7.1 and 1.7.2 did not include the release +signatures in the appropriate folder of the git repository. However, signatures were provided +as release-artefacts at the time of release. The signatures were introduced into the +repository with 1.7.3. The integrity of cagebreak is still the same because the signatures were +provided as release-artefacts (which were themselves signed) and the hashes in Hashes.md +are part of a signed release tag. + +### Signing Keys + +All releases are signed by at least one of the following collection of +keys. + + * E79F6D9E113529F4B1FFE4D5C4F974D70CEC2C5B + * 4739D329C9187A1C2795C20A02ABFDEC3A40545F + * 7535AB89220A5C15A728B75F74104CC7DCA5D7A8 + * 827BC2320D535AEAD0540E6E2E66F65D99761A6F + * A88D7431E5BAAD0B6EAE550AC8D61D8BD4FA3C46 + * 8F872885968EB8C589A32E9539ACC012896D450F + * 896B92AF738C974E0065BF42F2576BD366156BB9 + * AA927AFD50AF7C6810E69FE8274F2C605359E31B + * BE2DED372287BC4EB2213E13A0C743848A638955 + * 0F3476E4B2404F95EC41600683D5810F7911B020 + * 4E82C72C6B3E58A7BC4FF8554909F84CA83BB867 + * 5AEB1A2EB0D13F67E306AC59DC0CC81BE006FD85 + +Should we at any point retire a key, we will only replace it with keys signed +by at least one of the above collection. + +We registered project-repo.co and added mail addresses after release `1.3.0`. + +We now have a mail address and its key is signed by signing keys. See [SECURITY.md](SECURITY.md) +for details. + +The full public keys can be found in `keys/` along with any revocation certificates. + +## Versioning & Branching Strategy + +Cagebreak uses [semantic versioning](https://semver.org). + +There are three permanent branches in cagebreak: + + * `master` (for releases) + * `development` (for polishing code between releases) + * `hotfix` (for small emergent releases, usually up-to-date with master) + +Releases are merged to master as per the release procedure, with +reasonable exceptions as the situation requires. + +The release commit is tagged with the release version. + +In the past, our git history did not perfectly reflect this scheme. + +## Release Procedure + +The release procedure outlines the process for a release to occur. + + * [ ] `git checkout development` + * [ ] `git pull origin development` + * [ ] `git push origin development` + * [ ] Arch Build System is up to date + * [ ] `meson test -C build/` just to get an overview + * [ ] Update internal wiki + * [ ] Adjust version number in meson.build + * [ ] `meson compile set-ver -C build` + * [ ] Add new files to meson.build or hardcoded testing variable + * [ ] Commit changes + * [ ] `git push origin development` + * [ ] Complete relevant documentation + * [ ] New features + * [ ] tests added and old test scripts adjusted + * [ ] man pages + * [ ] cagebreak + * [ ] cagebreak-config + * [ ] cagebreak-socket + * [ ] example config + * [ ] FAQ.md + * [ ] Changelog.md for major and minor releases but not patches + * [ ] Check changes for SECURITY.md relevance (changes to socket scope for example) + * [ ] Synchronize any socket changes to cagebreak-socket man page + * [ ] Document fixed bugs in Bugs.md + * [ ] Include issue discussion from github, where applicable + * [ ] `meson compile adjust-epoch -C build` + * [ ] Commit changes + * [ ] `git push origin development` + * [ ] Testing + * [ ] Manual testing + * [ ] `meson compile fuzz -C build` for at least one hour + * [ ] Adjust Hashes.md - Use `meson compile output-hashes -C build` to add Hashes or aid in repro check + * [ ] Commit changes + * [ ] `git push origin development` + * [ ] Complete release-non-auto-checks + * [ ] `meson compile create-sigs -C build` + * [ ] Commit and push signatures, hashes and non-auto-check files + * [ ] `meson test -C build` passes everything except some release tests + * [ ] `git add` relevant files + * [ ] `git commit` + * [ ] `git push origin development` + * [ ] `git checkout master` + * [ ] `git merge --squash development` + * [ ] `git commit` and insert message + * [ ] `meson compile git-tag -C build` + * [ ] `meson compile create-artefacts -C build` + * [ ] `meson test -C build` THIS MUST PASS WITHOUT ANY FAILURES WHATSOEVER + * [ ] `git push --tags origin master` + * [ ] `git checkout development` (merge to development depends on whether release was a hotfix) + * [ ] `git merge master` + * [ ] `git push --tags origin development` + * [ ] `git checkout hotfix` (hotfix is to be kept current with master after releases) + * [ ] `git merge master` + * [ ] `git push --tags origin hotfix` + * [ ] Upload archives and signatures as release assets + * [ ] Delete feature branches if appropriate + * [ ] Manage package release + diff --git a/README.md b/README.md index 1ca4ce5..12d2f3c 100644 --- a/README.md +++ b/README.md @@ -196,467 +196,6 @@ as a source of inspiration and explanations for certain particularities. > Example scripts can be found in the repository under `example_scripts/`. -## Contributing - - * Read this document. - * [Open an issue](https://github.com/project-repo/cagebreak/issues/new) and state your feature request. - We will get back to you. - * Ask before opening a pull request. We might not accept your - code and it would be sad to waste the effort. - * Respect the [Code of Conduct](CODE_OF_CONDUCT.md) (To date, we never - had to intervene - Please keep it that way!) - -### Good First Contributions - - * Reviews are always welcome. - * Read the code. - * Read the documentation. - * Test whether the documentation matches the code. - * Test Cagebreak in more esoteric setups (many monitors, for instance). - * Compile the code. - * Ideas on improving the testing and quality assurance are particularly - welcome. - * You can share your cagebreak scripts and we might include them with Cagebreak - provided you agree to release them under MIT and we agree with the - use case and coding style. - * If you are happy with Cagebreak under Arch Linux, you may vote for - [Cagebreak in the AUR](https://aur.archlinux.org/packages/cagebreak). - * The points from the Contributing section above still apply. - -### Philosophy - -Cagebreak is currently developed to fit the needs of its creators. - -The feature set is intentionally limited - we removed -support for a desktop background image for example. - -Nonetheless, don't be intimidated by any other part of this file. -Do your best and we will collaborate toward a solution. - -## Development - -### Compatibility & Development Distribution - -Cagebreak supports [Arch Linux](https://archlinux.org/) and uses the libraries -(and software versions) as they are obtained through [pacman](https://wiki.archlinux.org/title/Pacman) -at the time of release. Any other use is out of scope. - -However, Cagebreak may also work on other distributions given the -proper library versions (Some package maintainers have done this and it -seems to work (To date, we dealt with a few Issues and never felt the -need to ask for the distribution the user was having the issue on.)). - -[![Packaging status](https://repology.org/badge/vertical-allrepos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) - -You should use Arch Linux if you want to modify Cagebreak -for yourself. - -### Review Requirements - -Project-repo will review your proposal before your implementation for feasibility -and desirability. After your pull request, the code will be reviewed in conjunction -with all other changes before the release as per the release procedure. - -All reviews performed by project-repo are verified by at least two people internally. - -### Developer Certificate of Origin (DCO) - -On any pull requests please include a - -``` -signed-off-by: YOUR IDENTIFIER OR NAME -``` - -DCO statement. - -By doing this you claim that you are legally allowed to contribute the -code and agree to let project-repo publish it under the MIT License. - -#### Development Environment - -CAVEAT: This script works exclusively on Arch Linux, which, as outlined above, -is the development distribution of Cagebreak. - -Cloning the Cagebreak repository and building it is sufficient as a starting point. - -All other dependencies can be installed by invoking - -``` -meson compile devel-install -C build -``` - -if meson is already available or - -``` -./scripts/install-development-environment -``` - -otherwise. - -#### Scripts - -Cagebreak provides a few convenience tools to facilitate development. - -##### Fuzzing - -If your fuzzing corpus is located in the directory `fuzz_corpus` you can -just call: - -``` -meson compile fuzz -C build -``` - -If you want to use a different directory, configure cagebreak with -`-Dcorpus=OTHERDIRECTORY` or call `./scripts/fuzz OTHERDIRECTORY`. - -##### Adjusting Epoch - -To facilitate the creation of reproducible man pages an arbitrary release -time has to be set in `meson.build`: - -``` -meson compile adjust-epoch -C build -``` - -or - -``` -./scripts/adjust-epoch -``` - -##### Git tag - -If you are on the master branch, everything is ready and you want to create -a release tag you can call: - -``` -meson compile git-tag -C build -``` - -If you want to use another signing key than the prespecified one, configure -Cagebreak with `-Dgpg_id=GPGID`. - -``` -./scripts/git-tag GPGID CBVERSION -``` - -can be used alternatively. - -##### Output Hashes - -Hashes of release versions of all binaries can be output to `local-hashes.txt` -via: - -``` -meson compile output-hashes -C build -``` - -Or - -``` -./scripts/output-hashes VERSION -``` - -if meson is unavailable. - -##### Create Signatures - -Creation of signatures for releases can be achieved through: - -``` -meson compile create-sigs -C build -``` - -Configure Cagebreak with `-Dgpg_id=GPGID` for a different gpg signing -key. - -Without meson use: - -``` -./scripts/create-signatures GPGID -``` - -##### Set Version Number - -Once the version number is set within meson.build, you can use - -``` -meson compile set-ver -C build -``` - -to set the version number in the man pages and README repology minversion. - -Use of the script without meson is discouraged because meson.build is -not touched by the script. - -##### Create Release Artefacts - -The following command generates the release artefacts which must be created -once a release is completely ready to be published (the commit is tagged with -the version of the master branch, etc.): - -``` -meson compile create-artefacts -C build -``` - -Use of the script version is discouraged. - -### GCC and -fanalyzer - -Cagebreak should compile with any reasonably new gcc or clang. Consider -a gcc version of at least [10.1](https://gcc.gnu.org/gcc-10/changes.html) if -you want to get the benefit of the brand-new -[-fanalyzer](https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html) -flag. However, this new flag sometimes produces false-postives and we -selectively disable warnings for affected code segments as described below. - -Meson is configured to set `CG_HAS_FANALYZE` if `-fanalyzer` is available. -Therefore, to maintain portability, false-positive fanalyzer warnings are to be -disabled using the following syntax: - -``` -#if CG_HAS_FANALYZE -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "WARNING OPTION" -#endif -``` -and after - -``` -#if CG_HAS_FANALYZE -#pragma GCC diagnostic pop -#endif -``` - -### Test Suite - -``` -meson test -C build -``` - -invokes all tests. This is required for a release to occur. - -There are four test suites: - - * basic: tests actual outward-facing functionality - * Note optional dependencies for efficient socket interaction - * nc (openbsd-netcat) - * jq - * devel: tests internal properties of the repository - * Note potentially heavier dependencies such as - * shellcheck - * clang-format - * devel-long: applies more costly testing - * Note potentially heavier dependencies such as - * scan-build (static analysis (including security-relevant issues)) - * release: tests release specific considerations - * Note that this is only expected to pass just before - a release. This checks mostly administrative things - to check that a release is ready. - * Note that non-auto tests are files in `release-non-auto-checks` - and have to contain the release version and current date in - YYYY-mm-dd format on seperate lines. This is our imperfect attempt - to guarantee some hard-to-automate checks are carried out before - a release is undertaken. - -Every commit should pass at least the basic and devel suites. - -It is expected that cagebreak passes at least the -basic, devel and devel-long suites when commits are pushed: - -``` -meson test -C build --suite basic --suite devel -``` - -The basic suite can be used to test a binary. This is -useful for PKGBUILDs and their equivalents in other -systems. - -``` -meson test -C build --suite basic -``` - -### Fuzzing - -Along with the project source code, a fuzzing framework based on `libfuzzer` is -supplied. This allows for the testing of the parsing code responsible for reading -the `cagebreak` configuration file. When `libfuzzer` is available (please -use the `clang` compiler to enable it), building the fuzz-testing software can -be enabled by passing `-Dfuzz=true` to meson. This generates a `build/fuzz/fuzz-parse` -binary according to the `libfuzzer` specifications. Further documentation on -how to run this binary can be found [here](https://llvm.org/docs/LibFuzzer.html). - -Here is an example workflow: - -``` -rm -rf build -CC=clang meson setup build -Dfuzz=true -Db_sanitize=address,undefined -Db_lundef=false -ninja -C build/ -mkdir build/fuzz_corpus -cp examples/config build/fuzz_corpus/ -WLR_BACKENDS=headless ./build/fuzz-parse -jobs=12 -max_len=50000 -close_fd_mask=3 build/fuzz_corpus/ -``` - -You may want to tweak `-jobs` or add other options depending on your own setup. -We have found code path discovery to increase rapidly when the fuzzer is supplied -with an initial config file. We are working on improving our fuzzing coverage to -find bugs in other areas of the code. - -#### Caveat - -Currently, there are memory leaks which do not seem to stem from our code but rather -the code of wlroots or some other library we depend on. We are working on the problem. -In the meantime, add `-Db_detect-leaks=0` to the meson command to exclude memory leaks. - -### Reproducible Builds - -Cagebreak offers reproducible builds given the exact library versions specified -in `meson.build`. Should a version mismatch occur, a warning will be emitted. We have -decided on this compromise to allow flexibility and security. In general we will -adapt the versions to the packages available under Arch Linux at the time of -release. - -There are reproducibility issues up to and including release `1.2.0`. See -`Issue 5` in [Bugs.md](Bugs.md). - -#### Reproducible Build Instructions - -All hashes and signatures are provided for the following build instructions. - -``` -meson setup build -Dxwayland=true -Dman-pages=true --buildtype=release -ninja -C build -``` - -#### Hashes for Builds - -For every release after 1.0.5, hashes will be provided. - -For every release after 1.7.0, hashes will be provided for man pages too. - -See [Hashes.md](Hashes.md) - -#### GPG Signatures - -For every release after 1.0.5, a GPG signature will be provided in `signatures`. - -The current signature is called `cagebreak.sig`, whereas all older signatures -will be named after their release version. - -Due to errors in the release process, the releases 1.7.1 and 1.7.2 did not include the release -signatures in the appropriate folder of the git repository. However, signatures were provided -as release-artefacts at the time of release. The signatures were introduced into the -repository with 1.7.3. The integrity of cagebreak is still the same because the signatures were -provided as release-artefacts (which were themselves signed) and the hashes in Hashes.md -are part of a signed release tag. - -#### Signing Keys - -All releases are signed by at least one of the following collection of -keys. - - * E79F6D9E113529F4B1FFE4D5C4F974D70CEC2C5B - * 4739D329C9187A1C2795C20A02ABFDEC3A40545F - * 7535AB89220A5C15A728B75F74104CC7DCA5D7A8 - * 827BC2320D535AEAD0540E6E2E66F65D99761A6F - * A88D7431E5BAAD0B6EAE550AC8D61D8BD4FA3C46 - * 8F872885968EB8C589A32E9539ACC012896D450F - * 896B92AF738C974E0065BF42F2576BD366156BB9 - * AA927AFD50AF7C6810E69FE8274F2C605359E31B - * BE2DED372287BC4EB2213E13A0C743848A638955 - * 0F3476E4B2404F95EC41600683D5810F7911B020 - * 4E82C72C6B3E58A7BC4FF8554909F84CA83BB867 - * 5AEB1A2EB0D13F67E306AC59DC0CC81BE006FD85 - -Should we at any point retire a key, we will only replace it with keys signed -by at least one of the above collection. - -We registered project-repo.co and added mail addresses after release `1.3.0`. - -We now have a mail address and its key is signed by signing keys. See [SECURITY.md](SECURITY.md) -for details. - -The full public keys can be found in `keys/` along with any revocation certificates. - -### Versioning & Branching Strategy - -Cagebreak uses [semantic versioning](https://semver.org). - -There are three permanent branches in cagebreak: - - * `master` (for releases) - * `development` (for polishing code between releases) - * `hotfix` (for small emergent releases, usually up-to-date with master) - -Releases are merged to master as per the release procedure, with -reasonable exceptions as the situation requires. - -The release commit is tagged with the release version. - -In the past, our git history did not perfectly reflect this scheme. - -### Release Procedure - -The release procedure outlines the process for a release to occur. - - * [ ] `git checkout development` - * [ ] `git pull origin development` - * [ ] `git push origin development` - * [ ] Arch Build System is up to date - * [ ] `meson test -C build/` just to get an overview - * [ ] Update internal wiki - * [ ] Adjust version number in meson.build - * [ ] `meson compile set-ver -C build` - * [ ] Add new files to meson.build or hardcoded testing variable - * [ ] Commit changes - * [ ] `git push origin development` - * [ ] Complete relevant documentation - * [ ] New features - * [ ] tests added and old test scripts adjusted - * [ ] man pages - * [ ] cagebreak - * [ ] cagebreak-config - * [ ] cagebreak-socket - * [ ] example config - * [ ] FAQ.md - * [ ] Changelog.md for major and minor releases but not patches - * [ ] Check changes for SECURITY.md relevance (changes to socket scope for example) - * [ ] Synchronize any socket changes to cagebreak-socket man page - * [ ] Document fixed bugs in Bugs.md - * [ ] Include issue discussion from github, where applicable - * [ ] `meson compile adjust-epoch -C build` - * [ ] Commit changes - * [ ] `git push origin development` - * [ ] Testing - * [ ] Manual testing - * [ ] `meson compile fuzz -C build` for at least one hour - * [ ] Adjust Hashes.md - Use `meson compile output-hashes -C build` to add Hashes or aid in repro check - * [ ] Commit changes - * [ ] `git push origin development` - * [ ] Complete release-non-auto-checks - * [ ] `meson compile create-sigs -C build` - * [ ] Commit and push signatures, hashes and non-auto-check files - * [ ] `meson test -C build` passes everything except some release tests - * [ ] `git add` relevant files - * [ ] `git commit` - * [ ] `git push origin development` - * [ ] `git checkout master` - * [ ] `git merge --squash development` - * [ ] `git commit` and insert message - * [ ] `meson compile git-tag -C build` - * [ ] `meson compile create-artefacts -C build` - * [ ] `meson test -C build` THIS MUST PASS WITHOUT ANY FAILURES WHATSOEVER - * [ ] `git push --tags origin master` - * [ ] `git checkout development` (merge to development depends on whether release was a hotfix) - * [ ] `git merge master` - * [ ] `git push --tags origin development` - * [ ] `git checkout hotfix` (hotfix is to be kept current with master after releases) - * [ ] `git merge master` - * [ ] `git push --tags origin hotfix` - * [ ] Upload archives and signatures as release assets - * [ ] Delete feature branches if appropriate - * [ ] Manage package release - ## Roadmap Cagebreak plans to do or keep doing the following things From 1092411fcc67c71e16973311766f1a6ac50e604a Mon Sep 17 00:00:00 2001 From: project-repo Date: Sat, 23 Dec 2023 21:13:53 +0100 Subject: [PATCH 30/33] Prepare 2.3.0 release --- README.md | 2 +- man/cagebreak-config.5.md | 2 +- man/cagebreak-socket.7.md | 2 +- man/cagebreak.1.md | 2 +- meson.build | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 12d2f3c..86d9056 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Cagebreak: A Wayland Tiling Compositor -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6532/badge)](https://bestpractices.coreinfrastructure.org/projects/6532) [![Packaging status](https://repology.org/badge/tiny-repos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) [![AUR package](https://repology.org/badge/version-for-repo/aur/cagebreak.svg?minversion=2.2.3)](https://repology.org/project/cagebreak/versions) +[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6532/badge)](https://bestpractices.coreinfrastructure.org/projects/6532) [![Packaging status](https://repology.org/badge/tiny-repos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) [![AUR package](https://repology.org/badge/version-for-repo/aur/cagebreak.svg?minversion=2.3.0)](https://repology.org/project/cagebreak/versions) ## Quick Introduction diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index d5b4969..ecbc0c9 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -1,4 +1,4 @@ -cagebreak-config(5) "Version 2.2.3" "Cagebreak Manual" +cagebreak-config(5) "Version 2.3.0" "Cagebreak Manual" # NAME diff --git a/man/cagebreak-socket.7.md b/man/cagebreak-socket.7.md index 19365d6..3252704 100644 --- a/man/cagebreak-socket.7.md +++ b/man/cagebreak-socket.7.md @@ -1,4 +1,4 @@ -cagebreak-socket(7) "Version 2.2.3" "Cagebreak Manual" +cagebreak-socket(7) "Version 2.3.0" "Cagebreak Manual" # NAME diff --git a/man/cagebreak.1.md b/man/cagebreak.1.md index bdd469f..e45f44a 100644 --- a/man/cagebreak.1.md +++ b/man/cagebreak.1.md @@ -1,4 +1,4 @@ -cagebreak(1) "Version 2.2.3" "Cagebreak Manual" +cagebreak(1) "Version 2.3.0" "Cagebreak Manual" # NAME diff --git a/meson.build b/meson.build index aeb3346..59f4c9f 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,7 @@ project( 'cagebreak', 'c', -version : '2.2.3', +version : '2.3.0', license : 'MIT', default_options : ['c_std=c11', 'warning_level=3'] ) @@ -209,7 +209,7 @@ reproducible_build_versions = { 'fontconfig': '2.14.2', 'libinput': '1.24.0', 'libevdev': '1.13.1', - 'libudev': '254', + 'libudev': '255', 'pango': '1.51.0', 'cairo': '1.18.0', 'pangocairo': '1.51.0', From bff5c0348bb04ea81b747f25afae979d761623e9 Mon Sep 17 00:00:00 2001 From: project-repo Date: Sat, 23 Dec 2023 21:14:22 +0100 Subject: [PATCH 31/33] Fix man page wording --- man/cagebreak-config.5.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index ecbc0c9..76bad64 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -17,9 +17,8 @@ are parsed sequentially but independently from the rest of the file. Each line starting with a "#" is a comment. -Note that nesting of commands is limited to 50 times, though lines -are arbitrarily long in practice, though a reasonable limit of 4Mb has -been set. +Nesting of commands is limited to 50 times. +Lines are arbitrarily long in practice, though a reasonable limit of 4Mb has been set. See *KEY DEFINITIONS* for details on modifier keys and *MODES* for details on modes. From 9e32b59932a8c339e371c9119f3fd7e7694bff59 Mon Sep 17 00:00:00 2001 From: project-repo Date: Sat, 23 Dec 2023 22:02:53 +0100 Subject: [PATCH 32/33] Add PR template --- docs/pull_request_template.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 docs/pull_request_template.md diff --git a/docs/pull_request_template.md b/docs/pull_request_template.md new file mode 100644 index 0000000..589cd0c --- /dev/null +++ b/docs/pull_request_template.md @@ -0,0 +1,26 @@ +# Description + + + + +## Type of Change + + * [ ] Fix + * [ ] Backwards-compatible Feature + * [ ] Breaking Change + +## Considerations + + + + +## Credit + + * [ ] I want to be credited as YOUR_NAME_OR_PSEUDONYM in your contributor section + * [ ] I don't want to be credited. + + + + +signed-off-by: YOUR_NAME_OR_PSEUDONYM + From 37ff74f83d345d8da0a0f0c4b76c4dca8faefbbb Mon Sep 17 00:00:00 2001 From: project-repo Date: Sat, 23 Dec 2023 22:49:15 +0100 Subject: [PATCH 33/33] Remove unnecessary TODO --- scripts/set-version | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/set-version b/scripts/set-version index 3ee035c..f18988f 100755 --- a/scripts/set-version +++ b/scripts/set-version @@ -2,8 +2,6 @@ # Copyright 2023, project-repo and the cagebreak contributors # SPDX-License-Identifier: MIT -# TODO man pages - if [[ -n ${MESON_SOURCE_ROOT} ]] then # shellcheck disable=2164