From d946b62a4c41ba7b513c1eb56af8684ec6cc16cb Mon Sep 17 00:00:00 2001 From: project-repo Date: Wed, 31 May 2023 21:38:43 +0200 Subject: [PATCH] Release 2.2.0 - Add custom events - Fix Issue 62 (#46 Github) - Fix Issue 63 (environment variables test) - Fix Issue 64 (pointer focus bug) --- Bugs.md | 36 ++++++++++++++++++ Changelog.md | 7 ++++ Hashes.md | 20 ++++++++++ README.md | 2 +- ipc_server.c | 4 -- keybinding.c | 15 ++++++++ keybinding.h | 1 + man/cagebreak-config.5.md | 10 ++++- man/cagebreak-socket.7.md | 13 ++++++- man/cagebreak.1.md | 2 +- meson.build | 8 ++-- parse.c | 9 +++++ 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/changelog-major-minor | 4 +- release-non-auto-checks/internal-wiki | 4 +- release-non-auto-checks/release-note | 4 +- .../reproducibility-checked | 4 +- .../security-to-man-page-info-transfer | 4 +- seat.c | 1 + signatures/2.1.2-cagebreak-config.5.sig | Bin 0 -> 566 bytes signatures/2.1.2-cagebreak-socket.7.sig | Bin 0 -> 566 bytes signatures/2.1.2-cagebreak.1.sig | Bin 0 -> 566 bytes signatures/2.1.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 test/environment-variables | 2 +- workspace.c | 3 ++ 32 files changed, 138 insertions(+), 31 deletions(-) create mode 100644 signatures/2.1.2-cagebreak-config.5.sig create mode 100644 signatures/2.1.2-cagebreak-socket.7.sig create mode 100644 signatures/2.1.2-cagebreak.1.sig create mode 100644 signatures/2.1.2-cagebreak.sig diff --git a/Bugs.md b/Bugs.md index 4075383..4536616 100644 --- a/Bugs.md +++ b/Bugs.md @@ -1187,3 +1187,39 @@ being copied to the `status` element of the resultant structure. The script introduced with 2.1.1 `scripts/install-development-environment` had some missing dependencies. This has been resolved and tested with bare arch containers. + +## Issue 62 + + * github issue number: #46 + * Fixed: 2.2.0 + +When the readable flag of the IPC socket was set with 0 readable bytes +available, cagebreak entered an infinite loop which caused high CPU +usage before the first event was sent over the IPC socket. + +## Issue 63 + + * github issue number: N/A + * Fixed: 2.2.0 + +A file path in the environment-variables unit test was wrongly set, +causing this test to fail. + +## Issue 64 + + * github issue number: N/A + * Fixed: 2.2.0 + +Cagebreak did not update the pointer focus when focussing the +background. This means that the first pointer event after focussing the +background was sent to the previously focussed window. + +Steps to reproduce: + + * Open an application and hover the mouse over a clickable area. + * Switch to an empty desktop using a keybinding without moving the + mouse. + * Click the mouse without moving it. + * Observe that the element in the previously focussed window was + clicked. + diff --git a/Changelog.md b/Changelog.md index c33e179..b9f7461 100644 --- a/Changelog.md +++ b/Changelog.md @@ -119,3 +119,10 @@ Changelog: * Add miniscule test suite * Adjust Cagebreak to wlroots 0.16.2 * New GPG Keys + +## Release 2.2.0 + + * Add custom events + * Fix Issue 62 (#46 Github) + * Fix Issue 63 (environment variables test) + * Fix Issue 64 (pointer focus bug) diff --git a/Hashes.md b/Hashes.md index a6ceae1..22a179e 100644 --- a/Hashes.md +++ b/Hashes.md @@ -1,5 +1,25 @@ # Hashes +2.2.0 cagebreak + + * sha 256: 67660297290a18b7822a818d1d43343e4e6f4dc27427ed9099ff803f218aa9b4 + * sha 512: 9837e3901b2b10453db2663f5a3da6ec2393610c82984cbabe1c64a6d575e32b492cd3326a6fbb91faa912d14c58dfd1160168280b66417ce7f7f2306c5a501c + +2.2.0 cagebreak.1 + + * sha 256: 79caf055cb1c75f3751863718728cca5ea6231891d21b4364c877d5e4888e727 + * sha 512: 843e15e51f01ed25d0630eee8b6e12ebcc68934da49d6fb66e86f6a46d512145d9be22081b0c2b5f0356c2d0e15b9f13170f7ba1d34d5fba69c7e05a069db337 + +2.2.0 cagebreak-config.5 + + * sha 256: 7047333f5600d3b05caf04caf9910da1468efe49c1418ca3fcdc6163bade9e89 + * sha 512: 35203d3959594fe5130a561c440bf85a978384bc874fcce773bb02fa5c637ccc375f1b0ce1ad05603266dcdefed2570815363bc2c8ef81df7ff7be865de2cac5 + +2.2.0 cagebreak-socket.7 + + * sha 256: bf9bd35a17ab78cb93f0f5209daef27908bf02d0e31ae627ae05fabab162c984 + * sha 512: 023fb99c3a2c47543ae2870f19e8fd6fd8069834dc4fbeee93e890333b4ac24b4613d0e8dfd2bdffb2d5dc7f907868410b0c61f2e1346c76498955e15d0f3b89 + 2.1.2 cagebreak * sha 256: 7d07864a837ee577a52b2727bfbfe8834fe599712144f0685f458d508717e451 diff --git a/README.md b/README.md index 004239a..8f09d4f 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.1.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.0)](https://repology.org/project/cagebreak/versions) ## Quick Introduction diff --git a/ipc_server.c b/ipc_server.c index ced183a..05614b3 100644 --- a/ipc_server.c +++ b/ipc_server.c @@ -127,10 +127,6 @@ ipc_client_handle_writable(int client_fd, uint32_t mask, void *data) { return 0; } - if(client->write_buffer_len <= 0) { - return 0; - } - if(fcntl(client->fd, F_GETFD) == -1) { return 0; } diff --git a/keybinding.c b/keybinding.c index 44ccffb..eaf2ae7 100644 --- a/keybinding.c +++ b/keybinding.c @@ -96,6 +96,12 @@ keybinding_free(struct keybinding *keybinding, bool recursive) { if(keybinding->data.c != NULL) { free(keybinding->data.c); } + break; + case KEYBINDING_SEND_CUSTOM_EVENT: + if(keybinding->data.c != NULL) { + free(keybinding->data.c); + } + break; default: break; } @@ -1245,6 +1251,12 @@ keybinding_display_message(struct cg_server *server, char *msg) { message_printf(server->curr_output, "%s", msg); } +void +keybinding_send_custom_event(struct cg_server *server, char *msg) { + ipc_send_event(server, + "{\"event_name\":\"custom_event\",\"message\":\"%s\"}", msg); +} + void keybinding_move_view_to_cycle_output(struct cg_server *server, bool reverse) { if(wl_list_length(&server->outputs) <= 1) { @@ -1706,6 +1718,9 @@ run_action(enum keybinding_action action, struct cg_server *server, case KEYBINDING_DISPLAY_MESSAGE: keybinding_display_message(server, data.c); break; + case KEYBINDING_SEND_CUSTOM_EVENT: + keybinding_send_custom_event(server, data.c); + break; case KEYBINDING_RESIZE_TILE_HORIZONTAL: resize_tile(server, data.i, 0); break; diff --git a/keybinding.h b/keybinding.h index 6d6cf87..a5958f0 100644 --- a/keybinding.h +++ b/keybinding.h @@ -63,6 +63,7 @@ struct cg_server; KEYBINDING(KEYBINDING_SHOW_TIME, time) \ KEYBINDING(KEYBINDING_SHOW_INFO, show_info) \ KEYBINDING(KEYBINDING_DISPLAY_MESSAGE, message) \ + KEYBINDING(KEYBINDING_SEND_CUSTOM_EVENT, custom_event) \ KEYBINDING(KEYBINDING_CURSOR, cursor) \ \ KEYBINDING(KEYBINDING_SWAP_LEFT, exchangeleft) \ diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index b9632dd..5bf01c3 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -1,4 +1,4 @@ -cagebreak-config(5) "Version 2.1.2" "Cagebreak Manual" +cagebreak-config(5) "Version 2.2.0" "Cagebreak Manual" # NAME @@ -81,9 +81,17 @@ configure_message display_time 4 *cursor [enable|disable]* Enable or disable cursor + This simply hides the cursor. Pointing and clicking is still possible. +*custom_event * + Send a custom event to the IPC socket + + This sends an event of type "custom_event" to all programs + listening to the IPC socket along with the string . + See *cagebreak-socket(7)* for more details. + *definekey * Bind to execute if pressed in - *definekey* is a more general version of *bind*. diff --git a/man/cagebreak-socket.7.md b/man/cagebreak-socket.7.md index 4c1a31a..2a5b623 100644 --- a/man/cagebreak-socket.7.md +++ b/man/cagebreak-socket.7.md @@ -1,4 +1,4 @@ -cagebreak-socket(7) "Version 2.1.2" "Cagebreak Manual" +cagebreak-socket(7) "Version 2.2.0" "Cagebreak Manual" # NAME @@ -113,6 +113,17 @@ cg-ipc{"event_name":"configure_output","output":"eDP-1","output_id":1} cg-ipc{"event_name":"cursor_switch_tile","old_output":"eDP-1","old_output_id":1,"old_tile":2,"new_output":"eDP-1","new_output_id":1,"new_tile":3} ``` +*custom_event* + - Trigger: Cagebreak receives the *custom_event* command, either in the config file or via the IPC socket (see *cagebreak-config(5)*). + - JSON + - event_name: "custom_event" + - message: The message passed to the *custom_event* command + +``` +custom_event Hello World! +cg-ipc{"event_name":"custom_event","message":"Hello World!"} +``` + *cycle_outputs* - Trigger: *nextscreen* and *prevscreen* commands - JSON diff --git a/man/cagebreak.1.md b/man/cagebreak.1.md index c8fc85e..051c7e9 100644 --- a/man/cagebreak.1.md +++ b/man/cagebreak.1.md @@ -1,4 +1,4 @@ -cagebreak(1) "Version 2.1.2" "Cagebreak Manual" +cagebreak(1) "Version 2.2.0" "Cagebreak Manual" # NAME diff --git a/meson.build b/meson.build index 777c8d3..5d782bb 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,7 @@ project( 'cagebreak', 'c', -version : '2.1.2', +version : '2.2.0', license : 'MIT', default_options : ['c_std=c11', 'warning_level=3'] ) @@ -208,7 +208,7 @@ reproducible_build_versions = { 'xkbcommon': '1.5.0', 'fontconfig': '2.14.2', 'libinput': '1.23.0', - 'libevdev': '1.13.0', + 'libevdev': '1.13.1', 'libudev': '253', 'pango': '1.50.14', 'cairo': '1.17.8', @@ -238,7 +238,7 @@ foreach name, dep : cagebreak_dependencies_dict endforeach reproducible_build_compiler = 'gcc' -reproducible_build_compiler_version = '12.2.1' +reproducible_build_compiler_version = '13.1.1' if cc.get_id() != reproducible_build_compiler warning('The compiler "' + cc.get_id() + '" differs from the one used to generate to binary specified in Hashes.md (' + reproducible_build_compiler + ').') @@ -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 = 1682363199 + secssinceepoch = 1685543842 shcommand = 'export SOURCE_DATE_EPOCH=' + secssinceepoch.to_string() + ' ; @0@ < @INPUT@'.format(scdoc.path()) sh = find_program('sh') mandir1 = join_paths(get_option('mandir'), 'man1') diff --git a/parse.c b/parse.c index 68767c6..c163b3a 100644 --- a/parse.c +++ b/parse.c @@ -811,6 +811,15 @@ parse_command(struct cg_server *server, struct keybinding *keybinding, return -1; } keybinding->data.c = strdup(saveptr); + } else if(strcmp(action, "custom_event") == 0) { + keybinding->action = KEYBINDING_SEND_CUSTOM_EVENT; + if(saveptr == NULL) { + *errstr = + log_error("Not enough paramaters to \"custom_event\". Expected " + "string to send."); + return -1; + } + keybinding->data.c = strdup(saveptr); } else if(strcmp(action, "time") == 0) { keybinding->action = KEYBINDING_SHOW_TIME; } else if(strcmp(action, "nextscreen") == 0) { diff --git a/release-non-auto-checks/Bugs.md b/release-non-auto-checks/Bugs.md index 5f93ac2..85c0622 100644 --- a/release-non-auto-checks/Bugs.md +++ b/release-non-auto-checks/Bugs.md @@ -1,2 +1,2 @@ -2.1.2 -2023-04-24 +2.2.0 +2023-05-31 diff --git a/release-non-auto-checks/FAQ.md b/release-non-auto-checks/FAQ.md index 5f93ac2..85c0622 100644 --- a/release-non-auto-checks/FAQ.md +++ b/release-non-auto-checks/FAQ.md @@ -1,2 +1,2 @@ -2.1.2 -2023-04-24 +2.2.0 +2023-05-31 diff --git a/release-non-auto-checks/SECURITY.md b/release-non-auto-checks/SECURITY.md index 5f93ac2..85c0622 100644 --- a/release-non-auto-checks/SECURITY.md +++ b/release-non-auto-checks/SECURITY.md @@ -1,2 +1,2 @@ -2.1.2 -2023-04-24 +2.2.0 +2023-05-31 diff --git a/release-non-auto-checks/WLR_XDG_VERSION b/release-non-auto-checks/WLR_XDG_VERSION index 5f93ac2..85c0622 100644 --- a/release-non-auto-checks/WLR_XDG_VERSION +++ b/release-non-auto-checks/WLR_XDG_VERSION @@ -1,2 +1,2 @@ -2.1.2 -2023-04-24 +2.2.0 +2023-05-31 diff --git a/release-non-auto-checks/changelog-major-minor b/release-non-auto-checks/changelog-major-minor index 5f93ac2..85c0622 100644 --- a/release-non-auto-checks/changelog-major-minor +++ b/release-non-auto-checks/changelog-major-minor @@ -1,2 +1,2 @@ -2.1.2 -2023-04-24 +2.2.0 +2023-05-31 diff --git a/release-non-auto-checks/internal-wiki b/release-non-auto-checks/internal-wiki index 5f93ac2..85c0622 100644 --- a/release-non-auto-checks/internal-wiki +++ b/release-non-auto-checks/internal-wiki @@ -1,2 +1,2 @@ -2.1.2 -2023-04-24 +2.2.0 +2023-05-31 diff --git a/release-non-auto-checks/release-note b/release-non-auto-checks/release-note index 5f93ac2..85c0622 100644 --- a/release-non-auto-checks/release-note +++ b/release-non-auto-checks/release-note @@ -1,2 +1,2 @@ -2.1.2 -2023-04-24 +2.2.0 +2023-05-31 diff --git a/release-non-auto-checks/reproducibility-checked b/release-non-auto-checks/reproducibility-checked index 5f93ac2..85c0622 100644 --- a/release-non-auto-checks/reproducibility-checked +++ b/release-non-auto-checks/reproducibility-checked @@ -1,2 +1,2 @@ -2.1.2 -2023-04-24 +2.2.0 +2023-05-31 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 5f93ac2..85c0622 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.1.2 -2023-04-24 +2.2.0 +2023-05-31 diff --git a/seat.c b/seat.c index cd085be..1c88f49 100644 --- a/seat.c +++ b/seat.c @@ -1043,6 +1043,7 @@ seat_set_focus(struct cg_seat *seat, struct cg_view *view) { view_activate(prev_view, false); } wlr_seat_keyboard_clear_focus(wlr_seat); + process_cursor_motion(seat, -1); return; } diff --git a/signatures/2.1.2-cagebreak-config.5.sig b/signatures/2.1.2-cagebreak-config.5.sig new file mode 100644 index 0000000000000000000000000000000000000000..f96713d95f03f5db4cb5d9f359f5a07efe261263 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%S()fdC2#5J?I6 zOsG4!XN%(x{vno|Sj7x0L`Rsk` zzccF>sPdtgaU4+77ayFBN zL^y190up?k#V_WR^AIUpXARKF?>7Pi;N+0Lad*>|^}Rjv`Ht-`WO^?`ltx=!!sIC# z^G!&A7B+INK_M#jzyF%$+1LiW?U!5%MOQc26B8*GTlnd%8Gs-0Cgn}~T}@eGpvtkc z2|6({wHX<0T{+EhR2>^Qu3-&A%G>TykPPs0n75m>G5w!naEvg1&=TW;)NzxOQ)H;- zdyPhRslELoykhP2>JIQlaFf_qf;3A&`kRqsX?xGRY_m;^0Ssze;3I25@-&3jv{%LO zlt`NJBEZ0hE4D+0HmHM!j!XPoad8u>E$czw*o&rfvIjyILMlzJA%PU^WO29|T4_{) Ey-4Q{fB*mh literal 0 HcmV?d00001 diff --git a/signatures/2.1.2-cagebreak-socket.7.sig b/signatures/2.1.2-cagebreak-socket.7.sig new file mode 100644 index 0000000000000000000000000000000000000000..fec631f4783791825b37c8b15a6c4e24cca58d55 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%S()fdC2#5J?I6 zOsG4!XVo?CTq)#T*vDA8Uv0yd-^z|q<4hqC}C^c;56vGqqV62Z0uy0F_8W35NU8g;5AHC59BNy2{Q?7)R%MQUM`Tb zFv4dkl&*4`9`fA59G5+%c*$F><(@z?}Q_4rlof-K!}(ISCRNGVfw7&vuT$iT2Q zVWn@xp0K@o{>#Qo+54}2Gv&Ie*M@P$Fihu;Z>%`5l1R$1bJq$PcKxs!7vH1l$HSYy z25=-=ZZAhjUn)CT;B~FWgS_E>2VF|gB&V2gstyT9sHUEzMrDT}x+H8X_i7%_B&~SG zc$EpgnHN}f*FPwKB3N6xv*{nsJ0o4zyNLx7Q!ncY^a{fXJ@Esa@=vK;a4I z8_RhqV5KRy4RQ$`<*%w7xi{-nI3^0@?6iLUl|JA7`dsicN7B8sb~X01qEI9okTQ%W zOWuS5w!uKv3cn0ID(_u`!SgLEqIz;TBZrJ^#!ZwIg`kVr$r|}OTS~AVgz`8TEF)`r EcpuIZNB{r; literal 0 HcmV?d00001 diff --git a/signatures/2.1.2-cagebreak.1.sig b/signatures/2.1.2-cagebreak.1.sig new file mode 100644 index 0000000000000000000000000000000000000000..78947664f97a829d9260f7b0ca9893af52431597 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%S()fdC2#5J?I6 zOsG4!XH&Qj|3vE2#Y^6LfBEt(FD&bm>Bqcp_iBViwa^f(K{t0D?!V5CHZzL!ufR3! zyz?2YNBfCc<;3OqzTnrq{)>k(%&BnGYt+-axf3=(G}sl{lLQQd(H2-Q%@ZLau4>nu zNMW7d^VsREfMH!M$9$HYlEBM>|6kD35+1uI%UqIEo2^622DgP@O$tLHx$d*980Rch ze9j2`VDBw4m!f8}?pnyop;R#sbL;w(!;6n5Q?|ipbaVSgEArB?h2ZQ}bVO~HGhQ=o6v9P|u z4KR14ets86#>W%0L2u|GAFv`=<-QLkl{NUmeWNO1Vw-$QfZ}r)Hs?S_0^171zHVVB>-%pE z07BOgiY;zQt~Kpeg>xNLwD5d%byVna<{5cccreqy9i7=oUEYXECZ!VLI^CN@X*@eG zU?NWI*A_8U$?YU!z6ZQcoerhjMX#**W=jaACCetS+A0|TLm+B$cQw6#d+cxf&3K`i z&;|;4sZvB}Z)+zA)inhQsBVnI#q}>R5-8vgEvg!Ji!S;QKh1bCMttvf>C%7}qq(Zv6isAH)uV$hx9h5EgW5)k0pHgaa?dreFtjJ}VC2HAS-!2_VVT~S7 z{6U*9Cu|k%{*PikV04S2?Ev8Oci;@xz!x?3$)2s|Xnqk7b7QnkI#t zwVyvLx{CzDTgBJ=F-iyjBYM!{JQ7H>j-8}ugRvkD*P1CwehD6+%k@xn6=fU1iJcOP z&OPIBV2HPFk|h;oGCr3gcKN#{4kx=nwsf`+AGhtUxUKN!MgI{OMcn4rLlI(M1Sj@; z7)v089Y#=;RHKo#K7OLOaju2N%v`I5un~nncJ&)3Xj1aOM_>hO2=NC4mNQ|iPqwc_ zDhgzB^dL%&*>I#sE6mXceGoq4mDE?q?b)-QO|O%%;f{s|N_YXrue;sbY!zvg1b7RQ zTmJ>+R^LUI)KuX?eP6-c2T6~+4?iE{P_Xfq1rYPs=$%Cn$f6IjlvLn&z+Bfk%Ii{h zkG#@S4^bmNRX?m9@a>;|?+(*As=n+zcd%;jIbNcCB9o6ldd(5EnY|x{j51y6R4jC$ E=0t7`+5i9m literal 0 HcmV?d00001 diff --git a/signatures/cagebreak-config.5.sig b/signatures/cagebreak-config.5.sig index f96713d95f03f5db4cb5d9f359f5a07efe261263..93f0f2b137cbd2db36c5d259df125d1ee4ce8865 100644 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%UifGXM$+5ZnyN z8{h{0g~AyR{0M+4*SYs%?X2XCrbAjt<-qtD?iV1Kfw1}o5o(7}#ldmfXe|Q8u&pUN z;1>pRlFj8Yk_EMN3sjM`D$qY&(#JfS9zLYZNbPtg%jnDr$o}gi@iba?1UHY}Mvbi1 zY9~$Wa>QV~IgblyBuBchM6UxhNgIv%DVT&=qZ^p~DV~Wi?>rtHa?L4$PVeu zGeNLKy3kI`Wv=$u2w3jk$&-FPJ#x@mun^;W7L^uSxh!a5(3e~VHC6$%s955WSf%ey zVJ1}ug<~oZrp6HAXfm;N3AsYJ?m@BDo@=%8QR+AOA?QH!C)ZXp`c~y6i;==GCtbI- z3|Gr%%}QK9NnWy*9SgR%nb#}vVx3(WB=f?S{LAIZL-CpIcyU|IhZLhP4~qRJuy0L`Rsk` zzccF>sPdtgaU4+77ayFBN zL^y190up?k#V_WR^AIUpXARKF?>7Pi;N+0Lad*>|^}Rjv`Ht-`WO^?`ltx=!!sIC# z^G!&A7B+INK_M#jzyF%$+1LiW?U!5%MOQc26B8*GTlnd%8Gs-0Cgn}~T}@eGpvtkc z2|6({wHX<0T{+EhR2>^Qu3-&A%G>TykPPs0n75m>G5w!naEvg1&=TW;)NzxOQ)H;- zdyPhRslELoykhP2>JIQlaFf_qf;3A&`kRqsX?xGRY_m;^0Ssze;3I25@-&3jv{%LO zlt`NJBEZ0hE4D+0HmHM!j!XPoad8u>E$czw*o&rfvIjyILMlzJA%PU^WO29|T4_{) Ey-4Q{fB*mh diff --git a/signatures/cagebreak-socket.7.sig b/signatures/cagebreak-socket.7.sig index fec631f4783791825b37c8b15a6c4e24cca58d55..6797b53851edea4d660a160ac39ba424933ae7f8 100644 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%UifGXM$+5ZnyN z8{h{0g+Zea{x)wi3b^5yc8v34hV_xo2U4*B64J?O@^ujB@SfR)`9N$WWv_9+w&by=n`Z10L;^t8vHM+X(iItm0}>qK*Og% zlbE9RmmRv)50SHwjoB*V&Y)0du^L~sExk1)VX05X@pZLLRhRCrMuitA;|@uH6tbyu z0=v$LZLZ9k2E-e@bVigM&&0h*d~LsyPGJljz#woGKwPs^_9n3kxi~cKRR{Gv!(o0fj$|i))kL)H%&VAlFOoJ_n{IAezk-IbJq?vjWj&)>SmAinpS^tE|?i1)xVIgfBKXjMFF2D_TDUUu?LI15@* E$Vc%83jhEB literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%S()fdC2#5J?I6 zOsG4!XVo?CTq)#T*vDA8Uv0yd-^z|q<4hqC}C^c;56vGqqV62Z0uy0F_8W35NU8g;5AHC59BNy2{Q?7)R%MQUM`Tb zFv4dkl&*4`9`fA59G5+%c*$F><(@z?}Q_4rlof-K!}(ISCRNGVfw7&vuT$iT2Q zVWn@xp0K@o{>#Qo+54}2Gv&Ie*M@P$Fihu;Z>%`5l1R$1bJq$PcKxs!7vH1l$HSYy z25=-=ZZAhjUn)CT;B~FWgS_E>2VF|gB&V2gstyT9sHUEzMrDT}x+H8X_i7%_B&~SG zc$EpgnHN}f*FPwKB3N6xv*{nsJ0o4zyNLx7Q!ncY^a{fXJ@Esa@=vK;a4I z8_RhqV5KRy4RQ$`<*%w7xi{-nI3^0@?6iLUl|JA7`dsicN7B8sb~X01qEI9okTQ%W zOWuS5w!uKv3cn0ID(_u`!SgLEqIz;TBZrJ^#!ZwIg`kVr$r|}OTS~AVgz`8TEF)`r EcpuIZNB{r; diff --git a/signatures/cagebreak.1.sig b/signatures/cagebreak.1.sig index 78947664f97a829d9260f7b0ca9893af52431597..feaa1b95be49162eb7671ea4979cc74164621b87 100644 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%UifGXM$+5ZnyN z8{h{0g}5gV|69{W6PqAyw{Ts${y}qxJn)v={wL^78q%**t^CNm5hKTaLL2ebp1?Be zkWZ>8?_`%dlJjtyvpdy{MP+oJgoMW$e{<&RqZqkNm=BXRw~jTr%#NL5m_uGm>kNFJ z)l5^#*!?1Q5vr;y%`xY~?{ejc71P)pbxfk(VkmMD%9Re~ZcJU{#LHAHZh1BH^ zSO@%TjHI%I6R%A|ynv^{bvVMwGaZY0+#ie^ctHCt#D0h4 z7unn1{xs;A%Hw-(fPoMkqcZ{y-Z|0Xsoy_d(;c~llUeY$1TKvAt;KETzE{NpmjL{> zESmaV>v#%hm!v~>#$$$_<9w`N0~L8sMo8)B&ha%tax<1~C~ouWaCq(yO#f{w7dd8x zz>0kc_o>Dz6v@L_#`OvdtezWObX?4H@cVhTWjQFG-_C5oY{$xWo8aAM80_<#;%{EW zW~ZB{sF?|bl}B0>Y2zH?WhD9tl?0o>I98#@HW|7Ppp~y!!+aZX$a|<%YK;pC{w9PY zyuC-~$>b8uOTPHsFAZUlT&O-1Bg-GsLif~x?~;VRj2@^}mSkCbMINUG7yi)2>FrF#}5yVG_VejcR@jO&U!ZL(}}!2c(Npv`1M`>dX~zf&PEw?{SXalnF+ E@3eXtpa1{> literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%S()fdC2#5J?I6 zOsG4!XH&Qj|3vE2#Y^6LfBEt(FD&bm>Bqcp_iBViwa^f(K{t0D?!V5CHZzL!ufR3! zyz?2YNBfCc<;3OqzTnrq{)>k(%&BnGYt+-axf3=(G}sl{lLQQd(H2-Q%@ZLau4>nu zNMW7d^VsREfMH!M$9$HYlEBM>|6kD35+1uI%UqIEo2^622DgP@O$tLHx$d*980Rch ze9j2`VDBw4m!f8}?pnyop;R#sbL;w(!;6n5Q?|ipbaVSgEArB?h2ZQ}bVO~HGhQ=o6v9P|u z4KR14ets86#>W%0L2u|GAFv`=<-QLkl{NUmeWNO1Vw-$QfZ}r)Hs?S_0^171zHVVB>-%pE z07BOgiY;zQt~Kpeg>xNLwD5d%byVna<{5cccreqy9i7=oUEYXECZ!VLI^CN@X*@eG zU?NWI*A_8U$?YU!z6ZQcoerhjMX#**W=jaACCetS+A0|TLm+B$cQw6#d+cxf&3K`i z&;|;4sZvB}Z)+zA)inhQsBVnI#q}>R5-8vgEvg!Ji!S;QKh1bCMttvf>C%l!Yw(LZP72CP}!49FYc2K|Kv0%UifGXM$+5ZnyN z8{h{0g*FTj0GBbR7ZKk&(;f$PRCOUZZ@;#u6kAhcBUSR2ZB!sriHqbS+drH+u~XCG z4se3GCD*Z8ZTu7~CR8y!*IeDPu<<@prQ|n}B<_w&YS!4ThnuQRF&Ufh_cmG;NyR=i z{5QwTudvO%g2aFbkA=0!DK|!+y9sM9(NREFLx)oIq0;)8 z`W>Yd{B?Qh>W>xpC}E(Mwv3k;lh;^M6YQXE4xZyCT9Ww`*V`x@T5Nwq#sFHQi%wZP zRY)V@aBW_asf3+O=qBvg0T5+p;G}fAYG5DFP-u!(dP5MMR0ZIKlZ2ZGTXb0W{U+TL zyZCUZ0vJE>M#Q6M-s9gx5m|~|CeedcgrJjL;9&09*Ll(?^sYqCLReE5(i~(FB%`#n zj}|@giK5}liydM0)ToXV5q#9e)LTdx0&kBhZ4UK>3T4^CU-229wv!r69t2aEERijS E8Y$-!@&Et; literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%S()fdC2#5J?I6 zOsG4!XMW!h0Eh!1R%k=hodX8nwACP9sFdtasp)hWtSn%_UH1!yDPCD!X4Y8UDKIVE zO)nk@R>7}qq(Zv6isAH)uV$hx9h5EgW5)k0pHgaa?dreFtjJ}VC2HAS-!2_VVT~S7 z{6U*9Cu|k%{*PikV04S2?Ev8Oci;@xz!x?3$)2s|Xnqk7b7QnkI#t zwVyvLx{CzDTgBJ=F-iyjBYM!{JQ7H>j-8}ugRvkD*P1CwehD6+%k@xn6=fU1iJcOP z&OPIBV2HPFk|h;oGCr3gcKN#{4kx=nwsf`+AGhtUxUKN!MgI{OMcn4rLlI(M1Sj@; z7)v089Y#=;RHKo#K7OLOaju2N%v`I5un~nncJ&)3Xj1aOM_>hO2=NC4mNQ|iPqwc_ zDhgzB^dL%&*>I#sE6mXceGoq4mDE?q?b)-QO|O%%;f{s|N_YXrue;sbY!zvg1b7RQ zTmJ>+R^LUI)KuX?eP6-c2T6~+4?iE{P_Xfq1rYPs=$%Cn$f6IjlvLn&z+Bfk%Ii{h zkG#@S4^bmNRX?m9@a>;|?+(*As=n+zcd%;jIbNcCB9o6ldd(5EnY|x{j51y6R4jC$ E=0t7`+5i9m diff --git a/test/environment-variables b/test/environment-variables index f1c9fac..a3753b5 100644 --- a/test/environment-variables +++ b/test/environment-variables @@ -22,7 +22,7 @@ cp "${MESONCURRENTCONFIGDIR}/test/testing-configurations/config" "${testdir}/env sed -i "s|CONFIGPATH|$testdir\/envvars\/socket|g" "${testdir}/envvars/config" (WLR_BACKENDS=headless ./cagebreak -e -c "${testdir}/envvars/config") sync -[[ ! $(cat "${testdir}/socket") = "${oldsocket}" ]] || RESULT=1 +[[ $(cat "${testdir}/envvars/socket") != "${oldsocket}" ]] || RESULT=1 # XDG_CONFIG_HOME cp "${MESONCURRENTCONFIGDIR}/test/testing-configurations/env-var-config" "${testdir}/cagebreak/config" diff --git a/workspace.c b/workspace.c index 3f84c6f..1dff244 100644 --- a/workspace.c +++ b/workspace.c @@ -107,6 +107,9 @@ 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;