Compare commits

..

819 commits

Author SHA1 Message Date
project-repo
7bdb04df99 Reword documentation 2023-09-15 21:01:16 +02:00
project-repo
5807ece09c Add permanent/peripheral command documentation 2023-09-15 20:37:00 +02:00
project-repo
f9188a2c8b Implement switching from permanent and peripheral
Destroy the output if it is not attached.
2023-09-15 15:38:29 +02:00
project-repo
82cf042819 Add "permanent" to dump 2023-09-15 12:19:20 +02:00
project-repo
65b6e9e427 Fix problems with automatic output configuration 2023-09-15 12:10:20 +02:00
project-repo
6b89645161 Tentative implementation of "permanent outputs" 2023-09-14 15:36:01 +02:00
project-repo
f6025b4f19 Merge branch 'master' into development 2023-08-21 09:41:15 +02:00
project-repo
407275fa67 Adjust non-auto checks 2023-08-21 09:25:38 +02:00
project-repo
d44df4e265 Add non-auto check 2023-08-18 16:54:32 +02:00
project-repo
a4bea6fc8b Add signatures 2023-08-18 16:54:22 +02:00
project-repo
cc97840a03 Add hashes 2023-08-18 16:45:41 +02:00
project-repo
b582884148 Complete more non-auto checks 2023-08-18 16:45:28 +02:00
project-repo
1099a31575 Adjust epoch 2023-08-18 12:22:58 +02:00
project-repo
53331b7337 Complete some non-auto checks 2023-08-18 12:12:55 +02:00
project-repo
26a59e4055 Add non-auto-test 2023-08-18 12:00:35 +02:00
project-repo
b6a96b39e0 Add Issue 65 to Bugs.md 2023-08-18 11:50:56 +02:00
project-repo
ac06ed23df Set release version 2023-08-17 21:11:47 +02:00
project-repo
feb76646fc Adjust dependency versions 2023-08-17 21:10:58 +02:00
project-repo
0d51301f76 Add acknowledgement for contribution 2023-08-17 20:37:12 +02:00
project-repo
309f95cdb3 Add link in README 2023-08-17 20:32:38 +02:00
project-repo
00610801ba Apply clang-format 2023-08-17 20:30:28 +02:00
Oliver Friedmann
96501911e4
fix: calibration matrix (#49)
Authored-by: Oliver Friedmann
2023-08-17 19:48:02 +02:00
project-repo
a581453272 Merge branch 'master' into development 2023-05-31 21:48:17 +02:00
project-repo
9c55eff87e Add signatures 2023-05-31 21:32:41 +02:00
project-repo
33092b1099 Complete non-auto-checks 2023-05-31 21:26:55 +02:00
project-repo
39fafe0407 Add hashes 2023-05-31 21:18:42 +02:00
project-repo
2e73eb4680 Adjust epoch 2023-05-31 16:37:39 +02:00
project-repo
d796b3c094 Apply clang-format 2023-05-31 16:32:26 +02:00
project-repo
1d88189511 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2023-05-31 16:27:19 +02:00
project-repo
42c9391a0d Adjust version number 2023-05-30 20:34:16 +02:00
project-repo
374813681c Add Issues 62-64 2023-05-30 20:19:00 +02:00
project-repo
a3718221ef Fix bug found by fuzzer 2023-05-23 16:06:01 +02:00
project-repo
b10dad8ac7 Update cb version 2023-05-23 15:58:02 +02:00
project-repo
e1520ec46d Update library versions 2023-05-23 15:47:52 +02:00
project-repo
498d69b4b6 Fix cursor handling on background focus 2023-05-18 19:53:46 +02:00
project-repo
6199ed0a9a Fix doc typo 2023-05-16 13:24:02 +02:00
project-repo
0209c3ae1a Add documentation 2023-05-16 00:49:48 +02:00
project-repo
b8a70d662a Apply clang-format 2023-05-16 00:49:48 +02:00
project-repo
679c5562af Add custom event command 2023-05-16 00:49:48 +02:00
project-repo
9d707e8154 Fix environment-variables test 2023-04-26 21:28:48 +02:00
project-repo
d68c97cdc0 Fix infinite loop on 0-byte writes over IPC. 2023-04-25 18:39:38 +02:00
project-repo
a87ecefab0 Merge branch 'master' into development 2023-04-24 23:14:29 +02:00
project-repo
24cebe6336 Add signatures and hashes 2023-04-24 22:54:40 +02:00
project-repo
ef898b0ce4 Perform non-auto checks 2023-04-24 22:52:52 +02:00
project-repo
58890fd6e0 Update install script 2023-04-24 22:48:30 +02:00
project-repo
2ffb410681 Fix typo 2023-04-24 22:43:09 +02:00
project-repo
e921a7da43 Merge remote-tracking branch 'origin/development' into development 2023-04-24 22:38:15 +02:00
project-repo
747a473538 Add Bugs.md description 2023-04-24 22:37:08 +02:00
project-repo
8f1ef0383b Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2023-04-24 21:27:27 +02:00
project-repo
6f5eb8f73f Fix typo 2023-04-24 21:27:13 +02:00
project-repo
004935ae06 Remove buggy script 2023-04-24 21:23:20 +02:00
project-repo
d65b1f6d95 Adjust epoch 2023-04-24 21:06:54 +02:00
Uks2
8850488f0e
Fix bug in merge_output_configs (#44)
We were accidentally copying angles into status!

Signed-off-by: Tom Greig <tom@tomg.xyz>
2023-04-24 21:04:40 +02:00
project-repo
000e6f1410 Adjust non-auto checks 2023-04-23 18:43:22 +02:00
project-repo
750bf48cda Adjust man page versions 2023-04-23 18:17:46 +02:00
project-repo
c2e95272ea Prepare basics for release 2.1.2 2023-04-23 18:12:47 +02:00
project-repo
66a4f9f00a Adjust release procedure 2023-04-18 21:44:41 +02:00
project-repo
591059faa1 Merge branch 'master' into development 2023-04-17 22:20:05 +02:00
project-repo
f0ebae61a6 Fix test/check-artefacts 2023-04-17 22:13:00 +02:00
project-repo
053e0c9a50 Fix create-release-artefacts 2023-04-17 22:01:03 +02:00
project-repo
def3d3a118 Add signatures 2023-04-17 21:39:11 +02:00
project-repo
1a1fa3c7f9 Update Hashes.md 2023-04-17 21:35:27 +02:00
project-repo
1b25c72787 Perform release-non-auto-checks 2023-04-17 21:31:44 +02:00
project-repo
f5060e5870 Adjust epoch 2023-04-17 21:24:42 +02:00
project-repo
4947fe3142 Adjust non-auto checks 2023-04-16 12:52:17 +02:00
project-repo
afd99dfaa0 Adjust release procedure 2023-04-16 12:38:45 +02:00
project-repo
859fcb2efc Add note on Review Requirements and DCO 2023-04-16 11:25:05 +02:00
project-repo
75aea2cee2 Add note about accessibility. 2023-04-16 11:22:09 +02:00
project-repo
3cfb18f481 Merge branch 'feature/development-environment-quick-install' into development 2023-04-16 11:16:24 +02:00
project-repo
3b22453cca Reword 2023-04-15 18:56:30 +02:00
project-repo
de0f7a091b Slight rewording 2023-04-15 18:51:58 +02:00
project-repo
22554f128f Actually add artefacts test 2023-04-15 00:17:51 +02:00
project-repo
bb7c7e3ca1 Add release artefacts test 2023-04-14 23:44:00 +02:00
project-repo
58b91b7f42 Adjust release procedure 2023-04-14 23:13:14 +02:00
project-repo
d39dae68b0 Add create release artefacts script 2023-04-14 22:54:18 +02:00
project-repo
d6885cec30 Adjust shellcheck test 2023-04-14 22:34:45 +02:00
project-repo
9f022a3c77 Merge remote-tracking branch 'origin/feature/development-environment-quick-install' into feature/development-environment-quick-install 2023-04-14 22:08:54 +02:00
project-repo
f4c2f4e810 Merge branch 'feature/development-environment-quick-install' of https://github.com/project-repo/cagebreak into feature/development-environment-quick-install 2023-04-14 22:07:22 +02:00
project-repo
0df01ea8d0 Adjust dev env deps 2023-04-14 22:06:43 +02:00
project-repo
03e3b1cab8 Fix typos 2023-04-14 22:06:23 +02:00
project-repo
3bcaa8122d Add arch linux notice to install script 2023-04-14 22:04:51 +02:00
project-repo
562685feac Fix minor error in shellcheck test 2023-04-14 21:57:27 +02:00
project-repo
3e03721256 Add xev as dev dep 2023-04-14 18:00:25 +02:00
project-repo
a3a7e2c1cc Adjust to 2.1.1 2023-04-13 22:46:19 +02:00
project-repo
4be769b004 Fix shellcheck issue 2023-04-13 22:45:28 +02:00
project-repo
47e9f28019 Add set-ver script 2023-04-13 22:22:18 +02:00
project-repo
47a2415022 Add create-sigs script 2023-04-13 21:54:42 +02:00
project-repo
8abd46569a Add output-hashes script 2023-04-13 21:03:41 +02:00
project-repo
d30f590569 Adjust gitignore 2023-04-13 19:57:23 +02:00
project-repo
6ee279c061 Adjust fuzz script 2023-04-13 19:54:49 +02:00
project-repo
8af1286c57 Add git-tag script 2023-04-13 19:52:13 +02:00
project-repo
b732b92cea Add git-tag script 2023-04-13 19:50:34 +02:00
project-repo
fb736d7986 Adjust permissions 2023-04-13 19:39:53 +02:00
project-repo
f99c39516d Add adjust-epoch script 2023-04-13 19:17:56 +02:00
project-repo
77e2b392ed Adjust dev install deps 2023-04-13 18:44:39 +02:00
project-repo
4f38f0f1e1 Add fuzzing script 2023-04-13 18:40:54 +02:00
project-repo
e130498ecd Add gpg key import 2023-04-13 17:45:00 +02:00
project-repo
333c1feb9e Add quick install script for dev env 2023-04-13 17:24:14 +02:00
project-repo
879f01da89 Update dependency versions 2023-04-12 19:55:54 +02:00
project-repo
b2e8bc7f5a Add git tag check 2023-04-07 09:00:41 +02:00
project-repo
9123464c3e Add non-auto checks 2023-04-06 23:47:50 +02:00
project-repo
3e895dfa41 Adjust README 2023-04-06 22:43:32 +02:00
project-repo
0fce2a807f Add gpg key validity check 2023-04-06 22:39:56 +02:00
project-repo
a76f0d6d55 Add gpg signatures check 2023-04-06 22:38:34 +02:00
project-repo
d00de8fb1e Add Hashes.md test 2023-04-06 22:32:23 +02:00
project-repo
9c2aa86182 Add non-auto tests 2023-04-06 21:32:42 +02:00
project-repo
8eb0dcdd48 Merge branch 'master' into development 2023-04-04 14:04:19 +02:00
project-repo
89d9dae4ca Prepare 2.1.0 release 2023-04-04 13:58:10 +02:00
project-repo
f8273dec9f Fix stack use after return in fuzzer 2023-04-03 22:25:42 +02:00
project-repo
f8df676572 Remove undocumented feature 2023-04-03 21:29:33 +02:00
project-repo
a5e10f8c6f Add Changelog for 2.1.0 2023-04-03 19:37:54 +02:00
project-repo
89dbf74e70 Update meson.build for 2.1.0 2023-04-03 19:27:34 +02:00
project-repo
b64c38a1b9 Update epoch 2023-04-03 18:43:54 +02:00
project-repo
336ed71500 Adjust Bugs.md for 2.1.0 2023-04-03 18:40:24 +02:00
project-repo
604bcff8ab Document new key fingerprints in relevant documentation 2023-04-03 18:16:35 +02:00
project-repo
b9aa898c11 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2023-03-27 21:48:00 +02:00
project-repo
88378f38ce Silence clang analyzer false positive 2023-03-27 21:45:28 +02:00
project-repo
b59be56e36 Update arguments unit test 2023-03-27 21:32:56 +02:00
project-repo
bf52c641f3 Merge remote-tracking branch 'origin/development' into development 2023-03-27 21:19:58 +02:00
project-repo
299eeb10d6 Update dependency versions 2023-03-27 21:14:49 +02:00
project-repo
94773ebdeb Document bs option 2023-03-27 21:14:45 +02:00
project-repo
aeec55f30d Add new signing keys 2023-03-27 20:59:50 +02:00
project-repo
0c0e9aa083 Add bs option 2023-03-06 17:42:40 +01:00
project-repo
e469916766 Update dependencies 2023-02-22 23:25:19 +01:00
project-repo
e433bead8b Make arguments test more robust 2023-02-20 22:36:56 +01:00
project-repo
8f13be1f7c Fix arguments test 2023-02-20 22:30:13 +01:00
project-repo
4c0f4f7d7a Adjust test suites 2023-02-20 22:28:10 +01:00
project-repo
270405cb3c Adjust version numbers 2023-02-19 12:32:16 +01:00
project-repo
699974e910 Apply clang-format 2023-02-19 12:28:55 +01:00
project-repo
9f5a029156 Fix dump output 2023-02-19 09:58:21 +01:00
project-repo
25d6610038 Adjust arg/env var dir handling 2023-02-18 19:02:05 +01:00
project-repo
d6fb8d19f3 Fix README 2023-02-18 12:15:28 +01:00
project-repo
a7f1e3fa36 Fix env var test 2023-02-18 11:48:11 +01:00
project-repo
441cee33c7 Remove whitespace 2023-02-18 11:18:14 +01:00
project-repo
480298d96b Update dependencies 2023-02-18 11:12:04 +01:00
project-repo
e852d3487a Document testing 2023-02-18 00:13:29 +01:00
project-repo
37beab8994 Adjust file sync for parallel testing 2023-02-18 00:12:33 +01:00
project-repo
09c75e5a15 Move test build dirs to _build* 2023-02-18 00:10:27 +01:00
project-repo
5856b3c9c5 Add semantic versioning check 2023-02-17 21:54:11 +01:00
project-repo
8fbcba1c38 Apply shellcheck 2023-02-17 21:31:02 +01:00
project-repo
358f759166 Apply clang-format 2023-02-17 14:10:41 +01:00
project-repo
78212cc830 Fix compiler warnings 2023-02-17 09:55:20 +01:00
project-repo
1889c60484 Add basic tests 2023-02-14 22:32:03 +01:00
project-repo
439385750d Add Copyright/License notice to test files 2023-02-14 21:58:29 +01:00
project-repo
d209a7801f Adjust test suite naming 2023-02-14 21:01:30 +01:00
project-repo
ceb61e6492 Adjust fuzzing documentation 2023-02-14 20:58:00 +01:00
project-repo
67ad848002 Integrate fuzz meson.build to facilitate testing 2023-02-14 20:52:28 +01:00
project-repo
89a4c5d609 Add env var tests 2023-02-14 20:22:31 +01:00
project-repo
1a8912c9c2 Adjust scripting quotations 2023-02-14 20:21:51 +01:00
project-repo
401733d092 Improve quotation of test script 2023-02-14 20:21:09 +01:00
project-repo
c1d0902a6d Update wlroots repro build version 2023-02-12 22:32:19 +01:00
project-repo
628dbc1314 Add tests for correct build 2023-02-09 22:40:51 +01:00
project-repo
a222a5a60f Add test to check clang-format 2023-02-09 22:40:00 +01:00
project-repo
d9f61d86fb Add test to check scan-build status 2023-02-09 22:37:33 +01:00
project-repo
f0a31d3156 Add test suite to check arguments 2023-02-09 22:35:22 +01:00
project-repo
e7c9cd0471 Adjust meson repro build versions 2023-02-09 22:16:05 +01:00
project-repo
567f12c29f Apply clang-format 2023-02-09 22:15:28 +01:00
project-repo
1bcfce8d4f Add License as meson install target 2023-02-09 22:06:58 +01:00
project-repo
eaaef616d6 Add Issue 58 (#40) to Bugs.md 2023-02-09 20:34:48 +01:00
project-repo
ba590d7d89 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2023-02-08 19:22:38 +01:00
project-repo
c23c899515 Fix loading of default config file 2023-02-08 19:21:15 +01:00
project-repo
defaaea9d1 Apply clang-format 2023-02-02 21:08:22 +01:00
project-repo
0ee4e286b9 Add Bugs.md description for some issues
- #37
- two npds
2023-02-02 21:03:10 +01:00
project-repo
2dc27c4b21 Merge remote-tracking branch 'origin/development' into development 2023-02-02 20:42:33 +01:00
project-repo
73fcbbf142 Change some output from stderr to stdout 2023-02-02 20:37:42 +01:00
project-repo
15590ab39a Fix npd 2023-02-02 20:22:16 +01:00
project-repo
0ccbd554d3 Fix potential npd 2023-02-02 20:18:48 +01:00
project-repo
b32659963c Fix SPDX-License-Identifier typo 2023-02-02 10:41:24 +01:00
project-repo
d7f58ce07f Adjust reproducible build versions 2023-02-02 10:38:57 +01:00
project-repo
d6c07d1443 Adjust version numbers 2023-02-02 10:37:53 +01:00
project-repo
b63fa48f30 Improve release procedure 2023-02-02 10:36:52 +01:00
project-repo
7102d3ee96 Add more explicit license info to README 2023-02-02 10:36:29 +01:00
project-repo
a9d5db0254 Update LICENSE date 2023-02-02 10:36:02 +01:00
project-repo
e3f637b173 Merge branch 'master' into development 2023-01-09 18:50:01 +01:00
project-repo
fc10010021 Prepare 2.0.1 release 2023-01-09 18:47:14 +01:00
project-repo
a5749888e0 Adjust versions for release 2.0.1 2023-01-09 17:45:31 +01:00
project-repo
b291f59d54 Add Issue 54 (#36) 2023-01-09 17:34:44 +01:00
Jan Beich
9ad7c921d6
Unbreak build on FreeBSD (#37)
* Disable POSIX compliance when using reallocarray

cagebreak.c:197:11: warning: implicit declaration of function 'reallocarray' is invalid in C99 [-Wimplicit-function-declaration]
                        line = reallocarray(line, line_length, sizeof(char));
                               ^
cagebreak.c:197:9: warning: incompatible integer to pointer conversion assigning to 'char *' from 'int' [-Wint-conversion]
                        line = reallocarray(line, line_length, sizeof(char));
                             ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ipc_server.c:248:25: warning: implicit declaration of function 'reallocarray' is invalid in C99 [-Wimplicit-function-declaration]
                client->read_buffer = reallocarray(client->read_buffer,
                                      ^
ipc_server.c:248:23: warning: incompatible integer to pointer conversion assigning to 'char *' from 'int' [-Wint-conversion]
                client->read_buffer = reallocarray(client->read_buffer,
                                    ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Promote -Wimplicit-function-declaration to -Werror

To help find bugs caused by _POSIX_C_SOURCE. Already errors in C++ and C23.

* Fix -Wstrict-prototypes, default in Clang >= 15

In file included from output.c:30:
keybinding.h:136:21: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
keybinding_list_init();
                    ^
                     void
output.c:335:20: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
empty_output_config() {
                   ^
                    void
In file included from seat.c:29:
input_manager.h:19:40: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
input_manager_create_empty_input_config();
                                       ^
                                        void
input_manager.c:92:40: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
input_manager_create_empty_input_config() {
                                       ^
                                        void
keybinding.c:129:21: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
keybinding_list_init() {
                    ^
                     void

See also
11da1b53d8
https://discourse.llvm.org/t/rfc-enabling-wstrict-prototypes-by-default-in-c/60521
2023-01-09 17:20:24 +01:00
project-repo
39b45be3df Merge branch 'master' into development 2023-01-08 22:12:41 +01:00
project-repo
3d9f8d596f Add release information 2023-01-08 22:07:39 +01:00
project-repo
7abfd5b0b3 Rename old signatures 2023-01-08 21:40:53 +01:00
project-repo
66ef231d58 Remove useless note 2023-01-08 21:40:18 +01:00
project-repo
b9dd21c0b4 Review README 2023-01-08 21:30:38 +01:00
project-repo
1796c38b03 Add link to Bugs.md 2023-01-08 18:10:18 +01:00
project-repo
1990b203af Add Changelog 2023-01-08 17:22:38 +01:00
project-repo
87e50fc63e Fix man page indentation 2023-01-08 17:22:20 +01:00
project-repo
65b237536a Set man page release time 2023-01-08 17:22:07 +01:00
project-repo
89c92c5166 Adjust socket documentation 2023-01-08 16:59:07 +01:00
project-repo
48f3a749aa Adjust copyright/licenso info to SPDX standard and 2023 2023-01-07 23:37:06 +01:00
project-repo
3b10ac8250 Adjust SECURITY.md 2023-01-07 22:37:17 +01:00
project-repo
c068ae57e8 Adjust README 2023-01-07 22:22:56 +01:00
project-repo
0f7187b3f5 Adjust example config 2023-01-07 22:03:03 +01:00
project-repo
9a49821d25 Add Issue 53 (#35) in Bugs.md 2023-01-07 21:51:59 +01:00
project-repo
d7f3c81f50 Edit README 2023-01-07 21:47:49 +01:00
project-repo
ffe580fb8e Add scripts as possible contribution 2023-01-07 20:25:16 +01:00
project-repo
4e4d51178c Adjust README formatting 2023-01-07 19:41:50 +01:00
project-repo
7c7413b410 Merge remote-tracking branch 'origin/development' into development 2023-01-07 17:43:34 +01:00
project-repo
eede8b79c4 Add cagebreak philosophy to README 2023-01-07 17:41:51 +01:00
project-repo
e46a32ab43 Add example scripts for socket interaction 2023-01-06 20:20:12 +01:00
project-repo
8660346f76 Improve naming convention 2023-01-06 19:50:36 +01:00
project-repo
d017f53a25 Apply clang-format 2023-01-06 19:10:48 +01:00
project-repo
fc20ab4aed Update release checklist 2023-01-06 17:16:45 +01:00
project-repo
9e5c1814be Update dependency versions 2023-01-06 16:52:56 +01:00
project-repo
c07a734262 Add Bug doc for config bug 2023-01-06 16:52:04 +01:00
project-repo
a6fdd0a27b Fix man typo 2023-01-06 16:42:07 +01:00
project-repo
b3e238e442 Fix quitting on startup 2023-01-06 16:37:07 +01:00
project-repo
226d471794 Update xwayland seat on focus 2023-01-06 15:13:24 +01:00
project-repo
d7a21aacb1 Fix potential npd 2023-01-06 14:20:36 +01:00
project-repo
57ee9a06b6 Disable resetting cursor image 2023-01-06 09:10:12 +01:00
project-repo
7002b00b28 Add missing fields to ipc output 2023-01-06 08:46:08 +01:00
project-repo
74bc47d3a5 Fix off by one 2023-01-06 07:52:54 +01:00
project-repo
6ee98a32c7 Fix naming convention 2023-01-05 18:54:13 +01:00
project-repo
4e1c085568 Make compatible with wlroots 0.16 2023-01-05 18:42:23 +01:00
project-repo
2baa1f614e Review cagebreak-socket documentation
- Fix typos
  - Fix output in keybinding.c
2023-01-04 19:18:58 +01:00
project-repo
d99ae42734 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2023-01-04 18:03:16 +01:00
project-repo
7c673ae20e Review cagebreak-socket documenation 2023-01-04 18:01:06 +01:00
project-repo
1813245e21 Do not emit two events on single command 2023-01-03 08:39:23 +01:00
project-repo
3cbf59a348 Fix typo in man page 2023-01-02 17:59:24 +01:00
project-repo
40c73b8f41 Add nesting level restriction 2023-01-02 17:22:50 +01:00
project-repo
9f4be786a7 Add config nesting restriction to doc 2023-01-02 16:58:28 +01:00
project-repo
8e97b7c697 Add definemode socket doc 2023-01-02 16:26:36 +01:00
project-repo
0de9c50a70 Document default_mode in dump 2023-01-02 15:12:11 +01:00
project-repo
432291f7e2 Adjust printed names of commands 2023-01-02 13:34:21 +01:00
project-repo
0772817055 Print modes as string 2023-01-02 12:15:06 +01:00
project-repo
3773a5f167 Fix compiler warnings 2023-01-02 10:18:14 +01:00
project-repo
02b73fb2b2 Fix fuzzing
- Fix fuzzing build
  - Fix bugs found by fuzzer
2023-01-02 08:35:09 +01:00
project-repo
9d1cafa2f6 Support printing commands as string over ipc 2023-01-02 07:51:51 +01:00
project-repo
4339bc01db Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2023-01-02 07:28:33 +01:00
project-repo
70664c428d Adjust documentation to changed socket 2023-01-01 23:13:59 +01:00
project-repo
afe4a8385b Fix scan-build warnings 2023-01-01 21:35:36 +01:00
project-repo
3cdc6ec369 Adjust ipc syntax 2023-01-01 21:35:27 +01:00
project-repo
450d812855 Add destroy_output doc to socket man 2023-01-01 17:35:11 +01:00
project-repo
41a6ee2fc1 Fix meson command in README 2023-01-01 16:30:55 +01:00
project-repo
6b480ebf07 Document keybinding enable/disable
- Issue 51 in Bugs.md
2023-01-01 15:58:22 +01:00
project-repo
4853f24390 Add Issue 51 (#7) in Bugs.md 2023-01-01 15:19:34 +01:00
project-repo
cf53f8a970 Add Issue 50 (#26) to Bugs.md 2023-01-01 14:42:56 +01:00
project-repo
424266ec03 Add #3 (49) to Bugs.md 2023-01-01 14:04:48 +01:00
project-repo
fbd33e8fa6 Add todo to socket doc 2023-01-01 12:31:17 +01:00
project-repo
5b2a9e84ce Add Issues to Bugs.md 2023-01-01 12:30:56 +01:00
project-repo
989f3bb35a Update ipc output and documention
- Remove quotes
  - Fix event name
2023-01-01 10:58:59 +01:00
project-repo
a352dd13a7 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2023-01-01 10:51:13 +01:00
project-repo
d5774d321d Adjust documentation 2023-01-01 10:50:44 +01:00
project-repo
f640d75ba5 Remove quotes around integers in ipc output 2023-01-01 10:50:24 +01:00
project-repo
6572260432 Add socket documentation 2023-01-01 10:43:25 +01:00
project-repo
c2ea3a5133 Add input keyboard documentation 2022-12-31 12:18:40 +01:00
project-repo
22eb4853c2 Add socket documentation 2022-12-31 11:54:39 +01:00
project-repo
c806e4f0fe Add tile_ids to output move_view_to_cycle_tile 2022-12-31 11:20:52 +01:00
project-repo
e644c7f8b7 Modify SECURITY.md to explicitely enabled socket. 2022-12-31 10:42:14 +01:00
project-repo
e8a868e7f3 Add socket documentation 2022-12-31 10:32:45 +01:00
project-repo
b809804657 Add cursor to doc 2022-12-31 09:34:34 +01:00
project-repo
41af11ecbb Add socket documentation 2022-12-30 23:26:41 +01:00
project-repo
7162b62b98 Add documentation 2022-12-30 23:03:15 +01:00
project-repo
9fdbc769b5 Add documentation 2022-12-30 22:37:31 +01:00
project-repo
8f811e9809 Add docuemntation 2022-12-30 21:46:42 +01:00
project-repo
468d7df9b9 Fix cagebreak man page 2022-12-30 21:46:22 +01:00
project-repo
026768ef3c Merge remote-tracking branch 'origin/development' into development 2022-12-30 21:45:35 +01:00
project-repo
80073faac8 Alphabetize -h option 2022-12-30 21:43:26 +01:00
project-repo
25a14182e6 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2022-12-30 21:34:53 +01:00
project-repo
78b287153c Fix version reporting 2022-12-30 21:34:14 +01:00
project-repo
9b712e27ff Document socket option 2022-12-30 21:16:33 +01:00
project-repo
8ab41ce342 Merge remote-tracking branch 'origin/development' into development 2022-12-30 20:36:00 +01:00
project-repo
7da953ca20 Add option for disabling cursor 2022-12-30 19:45:25 +01:00
project-repo
8d78a17320 Change socket to opt-in 2022-12-30 19:15:26 +01:00
project-repo
67ce6f1c4c Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2022-12-30 19:14:17 +01:00
project-repo
0c335e84d3 Add input devices to dump output 2022-12-30 19:14:04 +01:00
project-repo
7e6fb865e7 Fix socket man page 2022-12-30 18:17:58 +01:00
project-repo
134ba83f00 Fix typo in socket man page 2022-12-30 18:14:58 +01:00
project-repo
7555b379e3 Add documentation for socket 2022-12-30 18:09:00 +01:00
project-repo
22068b3bbf Add socket documentation 2022-12-30 17:52:33 +01:00
project-repo
18e6569712 Add support for customizing keyboard repeat info 2022-12-30 07:42:23 +01:00
project-repo
46671bb8fa Fix compilation error for man page 2022-12-29 21:15:18 +01:00
project-repo
3a66943513 Add option for disabling socket 2022-12-29 16:20:12 +01:00
project-repo
c83aed6728 Remove view_title
- Do not set window title, as it cannot be read
  - Print PID in event instead of title to prevent information leaks
2022-12-29 16:09:33 +01:00
project-repo
e1c89b311b Add support for focussing arbitrary tile 2022-12-29 15:47:49 +01:00
project-repo
646eb934d3 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2022-12-29 15:47:03 +01:00
project-repo
50bef0e8f1 Add dump command to config man page 2022-12-28 20:33:03 +01:00
project-repo
8e735264d1 Reformat usage message 2022-12-28 17:57:53 +01:00
project-repo
dce1f9ee8d Add -c option doc to man page 2022-12-28 17:50:55 +01:00
project-repo
f7d9e69d31 Add option for specifying config file path 2022-12-28 17:40:34 +01:00
project-repo
4d5acdb4a6 Fix config file parsing 2022-12-28 16:54:59 +01:00
project-repo
85c8597224 Add explanation for gpg to SECURITY.md 2022-12-28 16:01:14 +01:00
project-repo
11299eb8f0 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2022-12-28 15:59:02 +01:00
project-repo
46f921f636 Merge ipc fixes into development 2022-12-28 15:58:37 +01:00
project-repo
f2ebea72de Fix ipc syntax 2022-12-28 15:03:37 +01:00
project-repo
ebbc3f2431 Adjust ipc
- Handle SIGPIPE
  - Change syntax to null-terminated strings
2022-12-28 14:40:09 +01:00
project-repo
d66b2ee6ab Add entries to FAQ:
- Keybindings with characters not on current keybaord
- Cursor size management with env vars
2022-12-28 14:19:31 +01:00
project-repo
29011ac792 Remove length restriction for ipc commands 2022-12-28 11:08:23 +01:00
project-repo
fef49429f5 Remove maximal line length in configuration file 2022-12-28 10:08:23 +01:00
project-repo
c78607a4fd Add event name for dump event 2022-12-27 18:41:16 +01:00
project-repo
1ff7d3f60a Add information on output to dump output 2022-12-27 18:39:26 +01:00
project-repo
806c370987 Remove unnecessary function calls 2022-12-27 15:00:51 +01:00
project-repo
8a645a0dc3 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2022-12-27 14:51:31 +01:00
project-repo
52195268e6 Implement keyboard configuration
- Allow disabling command interpretation for specific keyboards
2022-12-27 14:50:52 +01:00
project-repo
1ab70173b0 Fix DEBUG<->WLR_DEBUG 2022-12-27 14:30:47 +01:00
project-repo
379c41d8e7 Move to meson setup 2022-12-27 14:29:42 +01:00
project-repo
e02ab558ec Update release version numbers 2022-12-27 14:29:23 +01:00
project-repo
be38bcf232 Fix man page 2022-12-27 14:29:08 +01:00
project-repo
9dd07b1caf Document removal of -r option 2022-12-27 14:15:15 +01:00
project-repo
1fc026a6f3 Add documentation for output rotate 2022-12-27 14:01:42 +01:00
project-repo
b9fe176f3c Add cagebreak start FAQ entry 2022-12-27 13:19:27 +01:00
project-repo
b16a5d64c4 Fix Bugs.md highlighting 2022-12-27 12:16:33 +01:00
project-repo
d586fba128 Add reports for bugs found using scan-build 2022-12-27 10:35:10 +01:00
project-repo
494fd6444b Update view focus logic 2022-12-26 11:44:05 +01:00
project-repo
73e0a421d2 Increase maximal configuration line length 2022-12-26 11:26:46 +01:00
project-repo
32095b4253 Refactor output configuration
* Allow independent rotation of different outputs
  * Allow specification of scale independent of mode
  * Clean up output configuration code
2022-12-26 08:14:57 +01:00
project-repo
39505dc8b2 Fix grouping of virtual keyboards 2022-12-25 15:09:25 +01:00
project-repo
ed575c36ab Fix behaviour on config file load failure 2022-12-24 16:38:29 +01:00
project-repo
baeb39579b Set cursor to box when not in default mode 2022-12-24 14:52:12 +01:00
project-repo
ee71d0bde9 Add check to prevent buffer overflow 2022-12-24 08:03:06 +01:00
project-repo
cce8121595 Reformat README 2022-11-28 21:35:44 +01:00
project-repo
9a60bef105 Apply clang-format 2022-11-28 21:35:31 +01:00
project-repo
559009f780 Remove Dockerfile 2022-11-28 21:32:59 +01:00
project-repo
1ac785b781 Add Oliver Friedmann as Contributor 2022-11-28 21:27:18 +01:00
Oliver Friedmann
29943b50e6
Add output scaling (#34)
* feat: output scaling

* chore: update man file

* fix: message when scaling
2022-11-28 21:23:41 +01:00
project-repo
4077064bc8 Add Issues 38,39,40,41.
Correspondence to github issue numbers is as follows:

38 <-> #31
39 <-> #30
40 <-> #20
41 <-> #12
2022-10-18 20:03:28 +02:00
project-repo
44f9ce3502 Add AUR vote as first contrib idea iff satisfied. 2022-10-17 13:43:03 +02:00
project-repo
8e831fe878 Sync security characteristics to socket man page 2022-10-17 01:21:01 +02:00
project-repo
1c4b72f97e Add Hashes template for 2.0.0 2022-10-17 01:20:43 +02:00
project-repo
0514c521c2 Update reproducible build versions 2022-10-16 23:52:13 +02:00
project-repo
6c9e309c16 Improve Contributing Quick Intro 2022-10-16 23:37:02 +02:00
project-repo
ee81b89467 Add Code of Conduct 2022-10-16 23:36:49 +02:00
project-repo
aa73eb44ae Fix typo 2022-10-16 11:31:48 +02:00
project-repo
0744d3a19a Move Changelog to subsection. 2022-10-16 11:01:02 +02:00
project-repo
34d1e764f1 Move Changelog in README. 2022-10-16 10:58:28 +02:00
project-repo
c8656d2744 Reorder developmnet subsections in README 2022-10-14 18:22:58 +02:00
project-repo
e2b790d571 Create development section in README
- Move compat & dev dist into dev
2022-10-14 18:15:58 +02:00
project-repo
10f842a8ee Improve Contrib section in README 2022-10-14 18:15:04 +02:00
project-repo
f9cd517bfe Improve dev distro section in README 2022-10-14 18:10:12 +02:00
project-repo
6f3952e883 Improve wording for Governance Issues 2022-10-14 17:22:46 +02:00
project-repo
9ef5922d4c Move Changelog inside README 2022-10-10 20:07:12 +02:00
project-repo
7699666076 Remove whitespace 2022-10-10 15:36:28 +02:00
project-repo
b0ea3c5e5b Add draft of Governance section to README 2022-10-10 15:36:12 +02:00
project-repo
d99ff361b1 Add compatibility information to README 2022-10-10 15:31:04 +02:00
project-repo
fb01ae953a Improve License section. 2022-10-10 15:30:16 +02:00
project-repo
68a74115ed Add Roadmap to README 2022-10-10 15:29:26 +02:00
project-repo
70f0ed07cd Improve Release Procedure 2022-10-10 15:28:52 +02:00
project-repo
23e0accf9a Improve Contributing section 2022-10-10 15:28:07 +02:00
project-repo
211e65e353 Remove information from Quick Intro 2022-10-10 15:27:25 +02:00
project-repo
b9a284730b Fix Quick Intro title in README 2022-10-10 14:37:59 +02:00
project-repo
cfa83a38d1 Fix License statement in README 2022-10-10 13:42:31 +02:00
project-repo
aa3c503ac2 Improve Quick Introduction in README 2022-10-09 15:47:51 +02:00
project-repo
afaae1554e Improve Name section in README. 2022-10-08 23:36:02 +02:00
project-repo
4c93f3cc9b Add SECURITY.md to list of Documentation. 2022-10-08 23:33:15 +02:00
project-repo
a71406b23e Improve compatibility description 2022-10-08 23:32:43 +02:00
project-repo
c7630bfddb Improve Purpose section of README. 2022-10-08 23:32:16 +02:00
project-repo
aacb7eb125 Add Changelog to Documentation section in README. 2022-10-08 21:48:22 +02:00
project-repo
40115efe1e Reword Quick Introduction.Documentation in README. 2022-10-08 21:42:50 +02:00
project-repo
6a03ea553e Improve README. 2022-10-08 21:29:04 +02:00
project-repo
66dca96991 Rename Goal->Purpose section in README. 2022-10-08 21:11:22 +02:00
project-repo
6b6e50ff45 Improve Quick Introduction in README. 2022-10-08 21:09:25 +02:00
project-repo
5f636ef13f Fix minor wording/formatting in README 2022-10-08 21:05:40 +02:00
project-repo
d9f8630a52 Improve Quick Introduction section in README. 2022-10-08 21:04:23 +02:00
project-repo
751b947a66 Improve README 2022-10-08 20:39:02 +02:00
project-repo
caafee6e0a Improve README through restructuring. 2022-10-08 19:12:03 +02:00
project-repo
60141498f2 Reformat Badges in README 2022-10-08 18:10:03 +02:00
project-repo
4c7e21b1c1 Add links to README 2022-10-08 18:08:07 +02:00
project-repo
88630bbad6 Fix typo in README 2022-10-08 18:05:34 +02:00
project-repo
a33c032838 Add OpenSSF Badge to README 2022-10-08 15:15:23 +02:00
project-repo
f3ad7bae63 Link cb-socket man page in FAQ 2022-10-04 21:02:32 +02:00
project-repo
395cbc7c1a Set version in meson.build 2022-10-04 20:58:11 +02:00
project-repo
c4704659f2 Add Anser to FAQ 2022-10-04 20:57:52 +02:00
project-repo
77dfee19e7 Fix man page alignment 2022-10-02 15:10:30 +02:00
project-repo
6b3bcdb659 Reword distinction between screen and output 2022-10-02 13:00:35 +02:00
project-repo
4e40cf955d Apply clang-format 2022-10-02 11:45:56 +02:00
project-repo
3e45e1f5bb Remove unused code 2022-10-02 11:43:31 +02:00
project-repo
23ad14f44d Merge branch 'master' into development 2022-10-02 11:38:14 +02:00
project-repo
cd01274710 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2022-10-02 08:26:19 +02:00
project-repo
3b175f915d Improve config man page
- Differentiate output and *screen
2022-10-01 15:39:12 +02:00
project-repo
32e13e13a5 Improve SECURITY.md 2022-09-30 23:54:17 +02:00
project-repo
a9224567f9 Improve socket man page 2022-09-30 23:53:57 +02:00
project-repo
cffe8e1991 Add socket man page 2022-09-30 22:05:19 +02:00
project-repo
b151ce8fc2 Improve man page compilation 2022-09-30 22:02:14 +02:00
project-repo
3e572107ed Prepare release version numbers 2022-09-30 21:11:22 +02:00
project-repo
7e28cf6b1c Fix man page documentation 2022-09-30 21:10:09 +02:00
project-repo
3247d8cfd1 Apply clang-format 2022-09-30 21:09:51 +02:00
project-repo
c72c68a99b Improve release procedure 2022-09-30 21:09:07 +02:00
project-repo
4d81403a50 Fix typo 2022-09-30 21:06:55 +02:00
project-repo
ebe4826d12 Fix bugs reported by scan-build 2022-09-30 18:28:49 +02:00
project-repo
c73cc64199 Fix link in README 2022-09-29 22:14:58 +02:00
project-repo
55d4115c8e Improve release procedure 2022-09-29 21:30:14 +02:00
project-repo
740b9ce649 Merge remote-tracking branch 'origin/development' into development 2022-09-29 21:25:04 +02:00
project-repo
ca6add83ef Improve README
- Add repology badges
- Modify release procedures
2022-09-29 21:22:32 +02:00
project-repo
09a6886053 Restrict access to ipc socket
- Set 700 permissions on socket on startup
2022-09-25 11:34:17 +02:00
project-repo
97ef5306a1 Add ipc message on cursor switching tile 2022-09-25 11:05:51 +02:00
project-repo
a8148690d6 Merge remote-tracking branch 'github/startup_failed' into development 2022-09-25 09:48:49 +02:00
project-repo
5305eead4c Add IPC event for cursor switching output 2022-09-22 19:38:28 +02:00
project-repo
bc9c7a7555 Add restack to xwayland view activation 2022-09-21 19:17:17 +02:00
project-repo
3b5b85070f Fix sizing of reconfigured outputs 2022-09-18 10:22:08 +02:00
project-repo
cda1d645d2 Attempt fallback disable 2022-09-12 07:36:36 +02:00
project-repo
346e021dbb Amend commit 36f00 2022-09-10 18:24:39 +02:00
project-repo
5de047b141 Apply clang-format 2022-09-09 19:03:56 +02:00
project-repo
36f002dbe0 Fix window positioning when switching to fullscreen 2022-09-09 19:01:16 +02:00
project-repo
aa8f6b4208 Print version number on startup 2022-09-09 18:43:56 +02:00
project-repo
6461894cbe Fix default bg color 2022-09-05 08:14:21 +02:00
project-repo
424cc0af25 Adapt output_clear to wlr_scene 2022-09-05 08:13:46 +02:00
project-repo
586b6b5db0 Fix typo 2022-09-05 08:12:32 +02:00
project-repo
b649529f67 Add support for primary selection device protocol
- Fix issue in which copying from firefox fails
2022-05-05 21:37:09 +02:00
project-repo
00c9c4bb65 Fix segfault on workspace switch 2022-05-01 21:48:03 +02:00
project-repo
60dbf4c8b1 Fix tile ordering on split 2022-04-26 07:46:26 +02:00
project-repo
33877210d9 Fix segmentation fault due to drag icons 2022-04-24 16:12:04 +02:00
project-repo
2457a37da8 Change to json output for ipc messages 2022-04-24 15:43:53 +02:00
project-repo
8afd69d057 Fix positioning of unmanged xwayland views 2022-04-17 12:18:04 +02:00
Cagebreak Signing Key 7
c1769a2ed4 Document new features 2022-04-15 21:02:33 +02:00
Cagebreak Signing Key 7
79645a8f2e Add Issues 29-33 to Bugs.md 2022-04-15 19:39:30 +02:00
Cagebreak Signing Key 7
6527d964ef Add new gpg keys 2022-04-14 23:50:12 +02:00
project-repo
6f03363507 Update example config 2022-04-14 21:08:13 +02:00
project-repo
ab8f4a2dbe Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2022-04-14 21:06:14 +02:00
Cagebreak Signing Key 7
9bee3fddc4 Fix FAQ 2022-04-14 21:02:32 +02:00
project-repo
dab95aab04 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2022-04-14 20:47:02 +02:00
Cagebreak Signing Key 7
f31ee224ca Adapt README to upcoming release 2022-04-14 19:58:49 +02:00
Cagebreak Signing Key 7
ce80f86b49 Add FAQ.md 2022-04-14 19:20:52 +02:00
Cagebreak Signing Key 7
83b1562a55 Reformat SECURITY.md 2022-04-14 18:15:25 +02:00
Cagebreak Signing Key 7
55ac751fc1 Add SECURITY.md 2022-04-14 18:10:38 +02:00
Cagebreak Signing Key 7
e5cce909b6 Prepare config man page for 1.9.0 2022-04-14 18:06:17 +02:00
Cagebreak Signing Key 7
a3c5e6baf1 Prepare man page for 1.9.0 2022-04-14 18:02:44 +02:00
Cagebreak Signing Key 7
132112c2a5 Remove -D option doc 2022-04-14 17:40:01 +02:00
Cagebreak Signing Key 7
1f9a720809 Add SECURITY.md relevance check to release checks 2022-04-14 17:06:01 +02:00
Cagebreak Signing Key 7
f4b7a5a498 Improve README 2022-04-14 17:00:05 +02:00
project-repo
02368600eb Fix crash on touch device removal 2022-04-09 16:20:22 +02:00
project-repo
6e1464127f Double fork to fix xwayland bug 2022-03-29 10:05:15 +02:00
Cagebreak Signing Key 7
e801f162d6 Fix style in man page 2022-03-17 22:11:55 +01:00
Cagebreak Signing Key 7
fe9b22c66b Add missing word in documentation 2022-03-16 18:57:08 +01:00
project-repo
e10e09025c Fix non-xwayland build 2022-03-15 20:50:58 +01:00
project-repo
cb7b551e24 Add dump functionality 2022-02-19 09:58:27 +01:00
project-repo
ed5cca9390 Adjust logic for finding left,right,etc. tiles 2022-02-18 08:06:03 +01:00
project-repo
373e210b5c Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2022-02-18 07:46:23 +01:00
project-repo
f12a16160c Add message command 2022-02-18 07:45:23 +01:00
project-repo
b1dd437997 Remove duplicate code 2022-02-18 07:23:44 +01:00
project-repo
da1f973532 Fix issues related to wlr_scene 2022-02-15 22:33:53 +01:00
Cagebreak Signing Key 7
bb924f6388 Edit man pages 2022-02-02 18:11:58 +01:00
project-repo
c5800b2223 Switch to wlr_scene api 2022-01-26 19:36:10 +01:00
Cagebreak Signing Key 7
296b106d44 Fix README copy error 2021-12-31 12:55:13 +01:00
Cagebreak Signing Key 7
d71139b500 Fix typo 2021-12-30 23:19:28 +01:00
Cagebreak Signing Key 7
5b470aa3d7 Modularize README.md 2021-12-30 22:35:52 +01:00
Cagebreak Signing Key 7
932ce1df55 Remove duplicate documentation 2021-12-30 17:26:12 +01:00
project-repo
38fee7ea71 Add explanation of prio 2021-12-29 20:10:47 +01:00
Cagebreak Signing Key 7
7449faf021 Add documentation for multi-output support
* man/cagebreak-config.5
    * movetoprevscreen
    * movetoscreen
    * screen <n>
    * addition of prio to output
2021-12-29 18:35:10 +01:00
project-repo
fd671ac2dd Apply clang-format 2021-12-25 15:38:31 +01:00
project-repo
aff1de892b Add support for event notifications over ipc 2021-12-25 15:35:31 +01:00
project-repo
bc22892a06 Apply clang-format 2021-12-24 17:54:07 +01:00
project-repo
348925e30a Add configure_message command 2021-12-24 17:52:49 +01:00
project-repo
da1a5898f4 Apply clang-format 2021-12-24 15:56:04 +01:00
project-repo
851a2f8935 Add more advanced multi-output support
* Add commands screen, movetoscreen, movetoprevscreen
  * Add option prio to output command to allow for output priority
    specification
2021-12-24 15:52:25 +01:00
Cagebreak Signing Key 7
8f995b9745 Merge branch 'master' into development 2021-12-06 21:21:18 +01:00
Cagebreak Signing Key 7
1e747747ca Add signatures for 1.8.2 2021-12-06 21:10:03 +01:00
Cagebreak Signing Key 7
0c683158a7 Add hashes for 1.8.2 2021-12-06 21:05:02 +01:00
Cagebreak Signing Key 7
1e76f9253d Increment dependency versions 2021-12-06 11:24:43 +01:00
Cagebreak Signing Key 7
aad150f4b0 Set EPOCH for man pages 2021-12-06 11:20:09 +01:00
Cagebreak Signing Key 7
0b2f9afad9 Add Issue 28 2021-12-06 11:12:20 +01:00
Cagebreak Signing Key 7
5aad3ca615 Adjust version numbers 2021-12-06 11:11:28 +01:00
Cagebreak Signing Key 7
816fdeb953 Update year in copyright notices 2021-12-06 11:08:21 +01:00
project-repo
5693731705 Fix damage tracking for view children 2021-12-04 22:27:07 +01:00
Cagebreak Signing Key 7
29b7574cb3 Merge branch 'master' into development 2021-11-12 18:15:11 +01:00
Cagebreak Signing Key 7
3528c10915 Add new signatures 2021-11-12 18:08:56 +01:00
Cagebreak Signing Key 7
1f6a0062fd Rename 1.8.0 signatures 2021-11-12 18:06:50 +01:00
Cagebreak Signing Key 7
4f46f020fa Add 1.8.1 release hashes 2021-11-12 18:06:24 +01:00
Cagebreak Signing Key 7
9df55bb7cd Add Issue description 2021-11-12 18:05:57 +01:00
Cagebreak Signing Key 7
1a0290c0d4 Add man epoch 2021-11-12 17:57:00 +01:00
Cagebreak Signing Key 7
713f863062 Fix dependency 2021-11-12 16:52:58 +01:00
Cagebreak Signing Key 7
cf460a5342 Prepare 1.8.1 2021-11-08 20:39:03 +01:00
project-repo
24705616c4 Fix rendering bug on tile swap 2021-10-17 15:26:52 +02:00
project-repo
aebc593635 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2021-10-17 07:53:48 +02:00
project-repo
2ab4955c46 Add support for default configuration file 2021-10-17 07:50:03 +02:00
Cagebreak Signing Key 7
61f53e3c7f Merge branch 'master' into development 2021-09-26 21:27:34 +02:00
Cagebreak Signing Key 7
7a4c9cff36 Add release artefacts 2021-09-26 21:23:30 +02:00
Cagebreak Signing Key 7
47082c9afc Update man page build time 2021-09-26 10:40:51 +02:00
Cagebreak Signing Key 7
6ae77a341b Add changelog 2021-09-26 10:40:37 +02:00
Cagebreak Signing Key 7
43c6c82326 Prepare 1.8.0 release 2021-09-25 21:35:50 +02:00
Cagebreak Signing Key 7
85b8cefd8d Add input configuration to examples 2021-09-25 21:35:27 +02:00
project-repo
95af01b119 Fix potential null pointer dereferences 2021-09-20 08:54:00 +02:00
project-repo
69fe10f4be Remove debug code 2021-09-19 10:43:16 +02:00
project-repo
cc4780eb71 Apply clang-format 2021-09-19 10:25:34 +02:00
project-repo
4c6bc1b59d Add support for printing input/output identifiers 2021-09-19 10:23:36 +02:00
project-repo
4ed9966d7b Add documentation for input configuration 2021-09-19 07:34:14 +02:00
project-repo
e684a81efb Apply clang-format 2021-09-16 14:31:20 +02:00
project-repo
dec38bd8f0 Remove unused fields 2021-09-16 14:08:58 +02:00
project-repo
b878e48619 Do not parse XKB_* env vars manually 2021-09-16 14:06:15 +02:00
project-repo
54107a6876 Fix fuzzer 2021-09-16 13:51:15 +02:00
project-repo
c149918026 Fix memory leak 2021-09-16 13:50:56 +02:00
project-repo
f9efd40c9d Implement libinput device configuration 2021-09-15 08:37:50 +02:00
project-repo
985b5f65db Add input_manager capabilities 2021-09-11 13:48:08 +02:00
project-repo
25bb1fbe4a Fix typo in readme 2021-08-11 13:22:11 +02:00
Cagebreak Signing Key 7
57719a2c2d Prepare 1.7.5 release 2021-07-10 14:48:58 +02:00
Cagebreak Signing Key 7
4733c73a47 Merge branch 'master' into development 2021-06-30 18:03:35 +02:00
Cagebreak Signing Key 7
b3058d6891 Prepare 1.7.4 2021-06-30 17:55:23 +02:00
Cagebreak Signing Key 7
9d73ab3cc5 Prepare 1.7.4 release 2021-06-30 16:49:58 +02:00
Cagebreak Signing Key 7
71d6351c8c Merge branch 'master' into development 2021-06-30 13:04:27 +02:00
Cagebreak Signing Key 7
839e2cba09 Add signatures and hashes 2021-06-30 12:58:19 +02:00
Cagebreak Signing Key 7
71dc42cc25 Update man page build time 2021-06-29 19:55:38 +02:00
Cagebreak Signing Key 7
addd8a0710 Prepare 1.7.3 2021-06-25 23:07:43 +02:00
Cagebreak Signing Key 7
da9800d2b0 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2021-06-25 22:54:51 +02:00
Cagebreak Signing Key 7
cb049d7ab5 Prepare 1.7.3 2021-06-25 22:54:26 +02:00
project-repo
e4ebc1e292 Apply clang-format 2021-06-23 20:58:42 +02:00
project-repo
d57869d43a Add fixes for wlroots 0.14.0 2021-06-23 20:53:48 +02:00
Cagebreak Signing Key 7
97578dcd4f Merge branch 'master' into development 2021-05-18 10:31:47 +02:00
Cagebreak Signing Key 7
6db4c0edd3 Add release signatures 2021-05-18 10:26:00 +02:00
Cagebreak Signing Key 7
3f2e386b4b Add release hashes 2021-05-18 10:11:40 +02:00
Cagebreak Signing Key 7
ffc922e6b0 Adapt man page epoch 2021-05-18 10:00:04 +02:00
Cagebreak Signing Key 7
fec0e24206 Update man versions 2021-05-17 22:06:22 +02:00
Cagebreak Signing Key 7
054a8cc49f Update meson version 2021-05-17 22:03:54 +02:00
Cagebreak Signing Key 7
b97ba95ee9 Update compiler dependency 2021-05-17 22:03:32 +02:00
Cagebreak Signing Key 3
a8f2a7940d Update LICENSE 2021-05-10 21:43:29 +02:00
Cagebreak Signing Key 3
f2718ba9c8 Fix typos in README 2021-05-10 21:43:08 +02:00
Cagebreak Signing Key 3
dcb8a7ef7c Merge branch 'master' into development 2021-05-06 14:20:02 +02:00
Cagebreak Signing Key 3
731f09dc81 Add signatures 2021-05-06 14:14:49 +02:00
Cagebreak Signing Key 3
09571f6743 Update man page hashes 2021-05-06 11:17:57 +02:00
Cagebreak Signing Key 3
bfa667503e Make man pages reproducible 2021-05-06 10:49:45 +02:00
Cagebreak Signing Key 3
da61cb7d2f Add new keys 2021-05-06 09:44:56 +02:00
Cagebreak Signing Key 3
9cc701e2dc Add key hashes to README 2021-05-05 21:57:33 +02:00
Cagebreak Signing Key 3
5637cd7b68 Add new file to README artefact check 2021-05-05 21:32:55 +02:00
Cagebreak Signing Key 3
fd367eb397 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2021-05-05 20:50:20 +02:00
project-repo
e299ec0363 Restrict wlroots version in meson.build 2021-05-05 20:34:46 +02:00
Cagebreak Signing Key 3
090f1ca8f0 Improve release checklist 2021-05-05 20:08:03 +02:00
Cagebreak Signing Key 3
d77c10ae5b Add release hashes 2021-05-05 19:16:33 +02:00
Cagebreak Signing Key 3
d43094e440 Set wlroots version to 0.13.0 2021-05-05 18:44:56 +02:00
Cagebreak Signing Key 3
6a4c0b7d16 Add Issue 26 2021-05-05 17:51:51 +02:00
Cagebreak Signing Key 3
907db16ebe Change wlroots version to prevent incompatibility 2021-05-05 17:47:26 +02:00
Cagebreak Signing Key 3
29de328322 Add version using scdoc syntax 2021-05-05 16:40:55 +02:00
Cagebreak Signing Key 3
3883c15bda Merge branch 'scdoc' into development
- Migrate man page compilation from pandoc to scdoc
2021-05-05 16:31:15 +02:00
Cagebreak Signing Key 3
76afb942bd Add version section to man page scd 2021-05-05 16:28:41 +02:00
project-repo
d675f369db Change to scdoc for man page generation 2021-05-05 12:09:25 +02:00
Cagebreak Signing Key 3
7ebec0cde5 Increment versions 2021-05-02 19:46:59 +02:00
Cagebreak Signing Key 3
855da72623 Merge branch 'master' into development 2021-04-19 22:17:14 +02:00
Cagebreak Signing Key 3
65f2734f78 Add release artifacts 2021-04-19 22:13:06 +02:00
Cagebreak Signing Key 3
94c6d970d6 Prepare 1.7.0 cagebreak release 2021-04-19 22:05:56 +02:00
Cagebreak Signing Key 3
a2f8a0c66e Adjust version 2021-04-19 20:56:23 +02:00
project-repo
0eb3111e77 Fix issues due to new wlroots version 2021-04-19 20:29:14 +02:00
Cagebreak Signing Key 3
3234691909 Adjust version to 1.6.1 in meson 2021-04-19 20:28:56 +02:00
Cagebreak Signing Key 3
9623ccd4d4 Apply clang-format 2021-04-19 20:24:03 +02:00
Cagebreak Signing Key 3
7d175afc07 Update dependency versions 2021-04-19 20:22:53 +02:00
project-repo
20ce9ae3a4 Fix bugs due to updated wlroots 2021-04-08 16:26:49 +02:00
project-repo
72bcf8f1de Fix null-pointer dereference 2021-04-08 08:22:10 +02:00
project-repo
b989fe50f0 Fix incompatibilities with wlroots 0.13.0 2021-04-08 07:39:14 +02:00
project-repo
a69cf18f7c Ensure correct focus of keyboard 2021-04-06 19:49:48 +02:00
project-repo
98eb1a4be8 Fix view_get_prev_view
* Fix view_get_prev_view function
  * Reduce code duplication
2021-03-25 10:28:46 +01:00
project-repo
2c499e20c3 Apply clang-format 2021-03-20 17:20:40 +01:00
project-repo
b6ef26fa81 Leave list of views invariant under cycling 2021-03-20 17:19:56 +01:00
project-repo
24e0681579 Apply clang-format 2021-03-20 16:31:11 +01:00
project-repo
0b97338738 Remove obsolete code get_geometry 2021-03-20 16:29:50 +01:00
project-repo
89d6272775 Adjust focussing algorithm
* Make algorithm which picks which view to focus more stable towards
    repeated insert-remove cycles.
  * Improve run-time of view_get_tile
2021-03-20 16:26:38 +01:00
Cagebreak Signing Key 3
0b48dc359f Merge branch 'master' into development 2021-03-05 18:15:54 +01:00
Cagebreak Signing Key 3
f6c103ae7c Add signatures 2021-03-05 18:09:49 +01:00
Cagebreak Signing Key 3
a2d82f1384 Add release hashes 2021-03-05 17:59:50 +01:00
Cagebreak Signing Key 3
c017bd5138 Add Issue 25 2021-03-05 17:50:58 +01:00
Cagebreak Signing Key 3
c3c806ae0d Apply clang-format 2021-03-05 17:34:43 +01:00
Cagebreak Signing Key 3
b14996d7ee Increment dependency version 2021-03-05 16:48:57 +01:00
project-repo
7aef1c5d12 Fix typo 2021-03-05 16:21:28 +01:00
project-repo
dc62580d66 Fix potential use-after-free 2021-03-05 16:18:38 +01:00
Cagebreak Signing Key 3
54afbd29b5 Increment dependency versions 2021-03-05 15:28:09 +01:00
Cagebreak Signing Key 3
74651ee39f Increment man version 2021-03-05 15:27:56 +01:00
Cagebreak Signing Key 3
07856670cd Add Contributor 2021-03-05 15:27:39 +01:00
Cagebreak Signing Key 3
c4a4a9df12 Add 1.6.0 release notes 2021-03-05 15:27:14 +01:00
Cagebreak Signing Key 3
4a21c74541 Add documentation of man page build 2021-03-05 15:26:25 +01:00
Cagebreak Signing Key 3
85408845ba Add Issue 24 2021-03-05 15:25:35 +01:00
project-repo
fb2590afa1 Adjust message 2021-03-05 07:53:46 +01:00
project-repo
9d64c170f1 Merge "make man pages optional" by epsilon-0 2021-03-05 07:50:41 +01:00
Cagebreak Signing Key 3
456ada7c0a Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2021-03-05 07:34:01 +01:00
Cagebreak Signing Key 3
436c891b20 Prepare meson.build for release 2021-03-05 07:33:00 +01:00
Aisha Tammy
103641c35c
make man pages optional
pandoc is a monster

Signed-off-by: Aisha Tammy <floss@bsd.ac>
2021-03-01 12:12:25 -05:00
project-repo
96785a8db5 Fix typo 2021-02-19 17:04:24 +01:00
project-repo
9de597b0c1 Fix bug in surface counting iterator 2021-02-19 14:25:13 +01:00
project-repo
0778cb050f Add support for non-build dependencies 2021-01-30 12:54:47 +01:00
Cagebreak Signing Key 3
5840d12a2e Merge branch 'master' into development 2021-01-24 16:11:30 +01:00
Cagebreak Signing Key 3
759f0ee748 Add release artefacts 2021-01-24 16:00:17 +01:00
Cagebreak Signing Key 3
9a7ce94546 Prepare 1.5.1 release 2021-01-24 11:56:55 +01:00
Cagebreak Signing Key 3
eb297a8dbd Merge branch 'master' into development 2021-01-15 13:04:28 +01:00
Cagebreak Signing Key 3
865bb901a4 Add binary signature 2021-01-15 12:59:57 +01:00
Cagebreak Signing Key 3
0f762c0b53 Prepare 1.5.0 2021-01-15 12:48:14 +01:00
project-repo
615552b843 Fix potential memory leaks 2021-01-15 10:46:15 +01:00
Cagebreak Signing Key 3
4776ba4e5f Merge branch 'disable_output' into development 2021-01-15 09:17:23 +01:00
project-repo
59d10ee410 Add notice to output disable documentation 2021-01-10 21:42:39 +01:00
project-repo
1b51acac49 Initialize disable_outputs in fuzz-lib.c 2021-01-10 21:37:17 +01:00
Cagebreak Signing Key 3
9d0a33c25e Add output example 2021-01-10 20:44:18 +01:00
Cagebreak Signing Key 3
0dc85e635f Document disable output 2021-01-10 20:43:34 +01:00
Cagebreak Signing Key 3
dd867f0a79 Increment version 2021-01-10 19:52:51 +01:00
Cagebreak Signing Key 3
0c4b2c306b Apply clang-format 2021-01-10 19:52:31 +01:00
Cagebreak Signing Key 3
c98d972de1 Increment dependency versions 2021-01-10 19:47:12 +01:00
project-repo
b2193f4c1d Add support for disabling outputs 2021-01-09 09:17:59 +01:00
project-repo
90475c24cb Fix view_unmap 2021-01-01 14:42:50 +01:00
project-repo
8925bf0d3a Fix potential use after free
Ensure that the focus is changed when calling
seat_set_focus.
2020-11-27 13:51:44 +01:00
Cagebreak Signing Key 3
a33864f85f Merge branch 'master' into development 2020-11-18 22:02:36 +01:00
Cagebreak Signing Key 3
242aea61d6 Prepare 1.4.4 release 2020-11-18 21:51:18 +01:00
Cagebreak Signing Key 3
f7365f02fc Add Issue 21 2020-11-18 15:27:42 +01:00
Cagebreak Signing Key 3
b4d7eac7f0 Increment version numbers 2020-11-18 15:25:58 +01:00
project-repo
e79d5dee3a Fix fuzzing compilation 2020-11-16 21:25:07 +01:00
Cagebreak Signing Key 3
937c8983d3 Increment dependency versions 2020-11-14 18:40:28 +01:00
project-repo
a2e0a55d2e Fix potential npd on view destroy. 2020-10-24 09:45:33 +02:00
Cagebreak Signing Key 3
7c2620fe54 Merge branch 'master' into development 2020-10-10 13:47:39 +02:00
Cagebreak Signing Key 3
4c3aefa11c Add hashes and signatures 2020-10-10 13:42:46 +02:00
Cagebreak Signing Key 3
38ec452ea7 Add bug documentation 2020-10-10 13:17:08 +02:00
Cagebreak Signing Key 3
ef152f9b63 Increment man version numbers 2020-10-10 12:56:03 +02:00
Cagebreak Signing Key 3
e16d118014 Apply clang-format 2020-10-10 11:29:35 +02:00
Cagebreak Signing Key 3
eab24c31ef Increment cagebreak version 2020-10-09 18:10:23 +02:00
project-repo
cc457cdcfb Fix damaging when scanning out views 2020-10-09 13:58:57 +02:00
project-repo
be9cdca75a Fix handling of unmanaged views on output removal 2020-10-09 13:58:41 +02:00
project-repo
84d20ca5cb Fix position of xwayland views on multiple outputs 2020-10-09 13:58:00 +02:00
project-repo
edceb0218d Prevent use-after-free on destroying unmapped views
Prior to this commit view->workspace was set on view creation. If
the output containing this view was subsequently destroyed,
the workspace was freed leading to a use-after-free when the
view was destroyed.
2020-10-09 13:13:31 +02:00
Cagebreak Signing Key 3
a538e0fd4f Merge branch 'master' into development 2020-09-20 10:53:24 +02:00
Cagebreak Signing Key 3
442eaf9f45 Add release signatures 2020-09-20 10:48:15 +02:00
Cagebreak Signing Key 3
275248ad7a Add release hashes 2020-09-20 10:45:46 +02:00
Cagebreak Signing Key 3
a04ec0e76f Fix reproducible build 2020-09-19 21:47:34 +02:00
Cagebreak Signing Key 3
a042ae624a Apply clang-format 2020-09-19 20:01:57 +02:00
Cagebreak Signing Key 3
256000c6d8 Add Issue 16 2020-09-19 19:55:15 +02:00
Cagebreak Signing Key 3
2cdffbc285 Increment man page versions 2020-09-19 19:44:27 +02:00
Cagebreak Signing Key 3
6648ff5f05 Increment version number 2020-09-19 19:41:48 +02:00
project-repo
67b4ecd843 Fix use-after-free when destroying popups 2020-09-18 07:37:27 +02:00
Cagebreak Signing Key 3
269b2dfe7b Merge branch 'master' into development 2020-09-12 17:58:47 +02:00
Cagebreak Signing Key 3
4dfe431c1c Add binary signatures 2020-09-12 17:40:34 +02:00
Cagebreak Signing Key 3
09583986d9 Add binary hashes 2020-09-12 17:38:32 +02:00
Cagebreak Signing Key 3
4392fc57b8 Increment man page version 2020-09-12 17:24:44 +02:00
Cagebreak Signing Key 3
70d2448924 Apply clang-format 2020-09-12 17:22:16 +02:00
Cagebreak Signing Key 3
20caa1f499 Add Issue descriptions 2020-09-12 17:14:01 +02:00
Cagebreak Signing Key 3
df83beaf39 Fix typo in README 2020-09-12 16:45:07 +02:00
Cagebreak Signing Key 3
10a09b1d72 Increment xkbcommon version 2020-09-12 16:40:35 +02:00
project-repo
cd03381bc4 Fix rendering bug when closing subsurfaces 2020-09-12 09:49:51 +02:00
project-repo
172fa34f6a Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-09-11 17:29:12 +02:00
project-repo
80ada7d14b Invert wlr_xcursor_manager_load return value 2020-09-11 17:27:42 +02:00
Cagebreak Signing Key 3
530a5417f1 Increment cagebreak meson version 2020-09-11 16:42:03 +02:00
project-repo
4515ed8574 Fix crash when switching workspace
Prior to this commit, it was possible that view->workspace
was not the same as the workspace on which the view was displayed
leading to erroneous behaviour and crashes when closing
such a window.
2020-09-11 15:04:43 +02:00
project-repo
2f63535ae5 Implement data control manager protocol
Prevents screen from flickering when doing wl-copy and paste.
2020-09-11 11:31:15 +02:00
Cagebreak Signing Key 3
f24105f4ad Merge branch 'master' into development 2020-09-10 17:33:56 +02:00
Cagebreak Signing Key 3
984a931dd5 Add release hashes 2020-09-10 17:23:21 +02:00
Cagebreak Signing Key 3
91adbb6b0d Add signatures 2020-09-10 17:23:06 +02:00
Cagebreak Signing Key 3
2de543877b Increment dependency version 2020-09-10 16:07:47 +02:00
Cagebreak Signing Key 3
2c28a69221 Add note about memory leaks to fuzzing 2020-09-10 16:03:15 +02:00
project-repo
def72ed84a Fix potential NPD 2020-09-07 13:58:33 +02:00
project-repo
becd94e6ba Add missing header 2020-09-07 11:49:15 +02:00
Cagebreak Signing Key 3
c11e73c752 Add release notes 2020-09-07 11:03:23 +02:00
Cagebreak Signing Key 3
6594a39a8b Update man versions 2020-09-07 11:01:33 +02:00
Cagebreak Signing Key 3
ca0eb25e1f Increment version 2020-09-07 10:59:08 +02:00
Cagebreak Signing Key 3
83f80ca5e6 Add Issue 13 2020-09-06 18:02:11 +02:00
Cagebreak Signing Key 3
d2ba8af36a Adapt reproducible versions 2020-09-06 17:47:51 +02:00
Cagebreak Signing Key 3
b0aa100e3e Apply clang-format 2020-09-06 17:41:45 +02:00
Cagebreak Signing Key 3
3ccf430030 Add user documentation of close 2020-09-05 11:27:50 +02:00
project-repo
8778ace0ce Review header includes 2020-09-01 16:57:22 +02:00
project-repo
3e2f90fa1e Handle repositioning of xwayland views 2020-08-31 11:41:45 +02:00
project-repo
73e8db1fa3 Add support for closing windows 2020-08-25 15:15:31 +02:00
Cagebreak Signing Key 3
daddc8f2e5 Merge branch 'master' into development 2020-08-16 23:27:37 +02:00
Cagebreak Signing Key 3
4280e97b06 Add binary signatures 2020-08-16 23:17:28 +02:00
Cagebreak Signing Key 3
248e7ac250 Add README hashes 2020-08-16 23:12:20 +02:00
Cagebreak Signing Key 3
54e19b9154 Update man page version 2020-08-16 23:01:57 +02:00
Cagebreak Signing Key 3
62b4169d77 Increment pango version 2020-08-15 22:49:53 +02:00
Cagebreak Signing Key 3
b0c6e54caf Apply clang-format 2020-08-15 22:49:33 +02:00
Cagebreak Signing Key 3
79e25dddc6 Update version number 2020-08-14 17:51:57 +02:00
Cagebreak Signing Key 3
8256bbbefe Update dependencies 2020-08-14 17:51:45 +02:00
project-repo
fd99f55dba Fix memeory leak 2020-07-31 12:07:26 +02:00
project-repo
5cb26b8063 Improve view_unmap algorithmics 2020-07-24 15:29:41 +02:00
Cagebreak Signing Key 3
e2a21b215f Merge branch 'master' into development 2020-07-21 15:51:47 +02:00
Cagebreak Signing Key 3
d411a499a5 Update signature 2020-07-21 15:40:27 +02:00
Cagebreak Signing Key 3
518341869f Update hashes 2020-07-21 15:36:52 +02:00
Cagebreak Signing Key 3
da2d5923cf Fix README spacing 2020-07-21 15:17:53 +02:00
project-repo
578e6e28d7 Reword README 2020-07-21 14:34:44 +02:00
Cagebreak Signing Key 3
523761fc46 Adjust wlroots reproducible builds version 2020-07-19 10:12:09 +02:00
Cagebreak Signing Key 3
70730eb90f Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-07-19 09:16:57 +02:00
project-repo
bcb898238c Fix incompatibilities with wlroots 0.11.0 2020-07-18 22:58:54 +02:00
Cagebreak Signing Key 3
7f5a59f1a7 Add issue reports 2020-07-18 20:55:05 +02:00
Cagebreak Signing Key 3
21482cef3c Fix bug report 2020-07-18 20:41:10 +02:00
Cagebreak Signing Key 3
509ff38dc9 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-07-18 19:16:04 +02:00
Your Name
4623681030 Preparation for 1.3.3 release
- Bump version number
  - Apply clang-format
2020-07-18 17:59:27 +02:00
project-repo
a08b84b381 Fix rendering of cg_view_child objects 2020-07-18 11:48:14 +02:00
Cagebreak Signing Key 3
cc0d5cac20 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-06-30 13:06:20 +02:00
Cagebreak Signing Key 3
7ede33a3f2 Add information on AUR PKGBUILDs 2020-06-27 18:48:03 +02:00
Cagebreak Signing Key 3
8df8c6f90b Improve README 2020-06-27 18:46:47 +02:00
project-repo
e31fd8f4ba Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-06-27 10:20:02 +02:00
project-repo
1365fc8d54 Fix output configuration 2020-06-27 08:20:42 +02:00
Cagebreak Signing Key 3
149cf94998 Merge branch 'master' into development 2020-06-26 15:26:22 +02:00
Cagebreak Signing Key 3
1e8ccdab4d Add release hashes 2020-06-26 15:05:14 +02:00
Cagebreak Signing Key 3
6557fccf77 Add binary signatures 2020-06-26 15:01:17 +02:00
Cagebreak Signing Key 3
91bd897920 Adjust man version numbers 2020-06-26 14:56:07 +02:00
Cagebreak Signing Key 3
b69c360484 Update version number for 1.3.2. release 2020-06-26 13:22:08 +02:00
project-repo
41e32aa23c Adjust Bugs.md 2020-06-26 12:24:33 +02:00
Cagebreak Signing Key 3
be2d9e4877 Add issue 10 description 2020-06-26 12:22:15 +02:00
project-repo
36d1f9bb6d Fix drag icon destroying 2020-06-26 11:40:48 +02:00
project-repo
86b04cd154 Remove trailing whitespace 2020-06-25 13:53:11 +02:00
Cagebreak Signing Key 3
7aeb0eca6a Apply clang-format 2020-06-12 22:08:01 +02:00
Cagebreak Signing Key 3
b711a4fb0b Add issue 9 2020-06-12 13:51:12 +02:00
project-repo
ecd620dd98 Fix popup rendering bug 2020-06-12 10:01:44 +02:00
Cagebreak Signing Key 3
bb2ae9f3b1 Merge branch 'master' into development 2020-06-03 21:40:45 +02:00
Cagebreak Signing Key 3
e98a5318ea Update hashes and signature 2020-06-03 18:05:02 +02:00
Cagebreak Signing Key 3
fa10639ec0 Increment man version numbers 2020-06-03 16:44:14 +02:00
Cagebreak Signing Key 3
8756f4eab3 Add fixed bugs 2020-06-03 16:26:09 +02:00
Cagebreak Signing Key 3
8c1c317d48 Increment version number 2020-06-03 16:21:05 +02:00
Cagebreak Signing Key 3
50c1268f5e Apply clang-format 2020-06-03 16:20:02 +02:00
project-repo
3937c05237 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-06-03 15:50:47 +02:00
project-repo
1661c449fb Fix rendering bugs 2020-06-03 15:50:38 +02:00
Cagebreak Signing Key 3
b08ec3692f Improve README wording 2020-06-03 15:28:33 +02:00
Cagebreak Signing Key 3
d71230cdfe Improve release checklist 2020-06-03 15:27:38 +02:00
Cagebreak Signing Key 1
65dfd15177 Fix README wording 2020-06-01 16:22:18 +02:00
Cagebreak Signing Key 1
46a9bf9e39 Improve README 2020-06-01 16:12:43 +02:00
Cagebreak Signing Key 1
a68462cb95 Add new keys with signatures 2020-06-01 13:51:04 +02:00
Cagebreak Signing Key 1
7bbf2f330a Improve section hierarchy 2020-06-01 12:51:26 +02:00
project-repo
cc0a97649b Improve README 2020-05-31 21:20:59 +02:00
Cagebreak Signing Key 1
e40fcaf737 Dissolve README section 2020-05-31 18:39:22 +02:00
Cagebreak Signing Key 1
a7c51888e1 Add missing section 2020-05-31 18:32:06 +02:00
Cagebreak Signing Key 1
78c5b30e81 Add more detailed installation instructions 2020-05-31 18:31:12 +02:00
Cagebreak Signing Key 1
5374b3728e Combine release checklist with branching strategy 2020-05-31 17:59:46 +02:00
Cagebreak Signing Key 1
f14261d455 Move signing key section 2020-05-31 17:58:26 +02:00
Cagebreak Signing Key 1
98e57c5341 Clarify branching strategy and versioning 2020-05-31 17:57:06 +02:00
Cagebreak Signing Key 1
bd43989987 Add more convenient link to man pages 2020-05-31 17:55:13 +02:00
Cagebreak Signing Key 1
9594434025 Move fanalyzer section in README 2020-05-31 17:14:57 +02:00
Cagebreak Signing Key 1
82093b2843 Improve release documentation 2020-05-29 17:36:38 +02:00
project-repo
35a15670ea Fix permission dropping 2020-05-29 16:13:52 +02:00
project-repo
4de82c076f Remove input device creation from fuzz-parse.c 2020-05-29 15:10:45 +02:00
project-repo
29da707463 Fix error in fuzz-lib 2020-05-29 15:10:30 +02:00
project-repo
c84e2c994e Remove erroneous comment 2020-05-29 14:57:33 +02:00
project-repo
9a8b6fa600 Fix fuzzer includes 2020-05-29 14:47:32 +02:00
project-repo
32dc8c3717 Restructure fuzzer 2020-05-29 14:42:01 +02:00
project-repo
5bd9164c3b Fix indentiing issues 2020-05-28 15:03:59 +02:00
project-repo
a277f06224 Ameliorate meson.build
- Only warn about compiler version missmatch in the case that
    the compilers are the same
2020-05-26 14:16:58 +02:00
Cagebreak Signing Key 1
30adf4b1a5 Merge branch 'master' into development 2020-05-26 11:58:50 +02:00
Cagebreak Signing Key 1
b10dfb287d Update signatures 2020-05-25 23:01:42 +02:00
Cagebreak Signing Key 1
9605d7c243 Update hashes 2020-05-25 22:59:25 +02:00
Cagebreak Signing Key 1
f9babbe522 Fix typo 2020-05-25 22:57:56 +02:00
Cagebreak Signing Key 1
2f366fb4ca Add 1.3.0 Changelog 2020-05-25 21:49:18 +02:00
project-repo
d8f801bb06 Reword manpage 2020-05-25 21:16:59 +02:00
Cagebreak Signing Key 1
43b06932d7 Add ipc documentation 2020-05-25 21:01:27 +02:00
Cagebreak Signing Key 1
816283cdb1 Apply clang-format 2020-05-25 20:13:33 +02:00
Cagebreak Signing Key 1
e98378bffd Fix quotation error 2020-05-25 20:04:29 +02:00
Cagebreak Signing Key 1
b8ba8186ec Update version number 2020-05-25 18:34:24 +02:00
Cagebreak Signing Key 1
8f67fc93f2 Merge branch 'ipc' into development 2020-05-25 18:13:12 +02:00
project-repo
8f9ed72201 Improve error handling 2020-05-25 17:45:19 +02:00
Cagebreak Signing Key 1
d11e744bc3 Add asset generation to release checklist 2020-05-25 13:59:55 +02:00
Cagebreak Signing Key 1
0990153323 Merge branch 'output_config' into development 2020-05-24 19:53:58 +02:00
Cagebreak Signing Key 1
dab657e2f3 Merge branch 'master' into development 2020-05-24 19:07:56 +02:00
Cagebreak Signing Key 1
08dc40376d Add hashes for 1.2.1 release 2020-05-24 18:40:53 +02:00
Cagebreak Signing Key 1
ab33d5c230 Add signatures for 1.2.1 release 2020-05-24 18:38:27 +02:00
Cagebreak Signing Key 1
66d3f51e68 Apply clang-format 2020-05-24 18:31:24 +02:00
Cagebreak Signing Key 1
b3e19cb9a0 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-05-24 18:28:49 +02:00
Cagebreak Signing Key 1
c3db5393b0 Add Issue 6 documentation 2020-05-24 18:27:20 +02:00
project-repo
8c3821c75e Add line length check to fuzzing infrastructure 2020-05-24 18:14:38 +02:00
Cagebreak Signing Key 1
eb86303e84 Fix reproducibility
- See Issue 5 in Bugs.md
2020-05-24 17:50:52 +02:00
Cagebreak Signing Key 1
82398c777b Apply clang-format 2020-05-23 17:53:41 +02:00
Cagebreak Signing Key 1
f55f70e867 Update version number 2020-05-23 17:27:34 +02:00
project-repo
f568f5379e Add error messaging to ipc 2020-05-23 09:16:18 +02:00
project-repo
68950664e3 Ameliorate README 2020-05-22 20:24:35 +02:00
Cagebreak Signing Key 1
64a305cd4c Fix highlighting 2020-05-22 17:23:20 +00:00
Cagebreak Signing Key 1
66683293b5 Prepare 1.2.1 release 2020-05-22 17:04:39 +00:00
Cagebreak Signing Key 1
07ec19e45e Add fanalyzer development documentation 2020-05-22 17:04:21 +00:00
project-repo
4bae00f593 Add fanalyzer flag by default if supported 2020-05-22 15:40:15 +02:00
project-repo
5c0d68e2e5 Ameliorate ipc 2020-05-22 09:05:41 +02:00
project-repo
fd9c301c4d Fix bug on startup 2020-05-22 00:22:28 +02:00
project-repo
4482bb495c Fix ordering of ipc 2020-05-21 23:16:57 +02:00
project-repo
0017ad48c5 Add ipc capability 2020-05-21 23:04:45 +02:00
project-repo
989438a1cb Fix compilation under clang 2020-05-21 19:36:35 +02:00
Cagebreak Signing Key 1
8e7f954b32 Fix typo 2020-05-21 16:00:53 +00:00
Cagebreak Signing Key 1
4b383b5574 Fix debug build fanalyzer warnings 2020-05-21 15:57:25 +00:00
Cagebreak Signing Key 1
7b83f7a319 Remove fanalyzer from meson.build 2020-05-21 15:36:28 +00:00
project-repo
af6adcc973 Fix null pointer dereference warning 2020-05-21 17:17:11 +02:00
Cagebreak Signing Key 1
19e1407983 Fix remaining fanalyzer errors 2020-05-21 13:33:32 +00:00
Cagebreak Signing Key 1
d797032694 Manage fanalyzer warnings with pragmas 2020-05-21 08:27:07 +00:00
Cagebreak Signing Key 1
3367d8e0ba Add formatting to release checklist 2020-05-20 19:12:00 +00:00
project-repo
9ac95ce69c Apply clang-format 2020-05-20 19:35:16 +02:00
project-repo
d23a73f2b9 Apply fixes suggested by -fanalyze 2020-05-20 11:53:46 +02:00
project-repo
b23d597c99 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-05-15 07:23:45 +02:00
Cagebreak Signing Key 1
b8607e366c Merge branch 'master' into development 2020-05-14 19:01:42 +00:00
Cagebreak Signing Key 1
a0a6b2625d Add release signature 2020-05-14 14:52:40 +00:00
project-repo
d163b321ad Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-05-14 16:43:23 +02:00
Cagebreak Signing Key 1
212da7a345 Add binary hashes 2020-05-14 14:42:09 +00:00
Cagebreak Signing Key 1
9a5b26716f Remove -Wall because warning_level=3 includes it 2020-05-14 14:21:00 +00:00
Cagebreak Signing Key 1
91bf4913b2 Update dependency version 2020-05-14 13:26:34 +00:00
project-repo
da8d0304a6 Remove keyboard group from list on destroy 2020-04-12 09:07:54 +02:00
Cagebreak Signing Key 1
3f277d2b7f Prepare new release
- Update version numbers
2020-04-09 17:31:35 +00:00
project-repo
50be52b7fc Fix bug in fuzzer 2020-04-04 21:47:07 +02:00
project-repo
ce9b68d448 Squashed commit of the following:
commit 27fa2b70b9
Merge: 1a87477 6fdc55c
Author: Cagebreak Signing Key 1 <cagebreak_signing_key_1@cagebreak>
Date:   Mon Mar 2 18:45:11 2020 +0000

    Merge branch 'output_config' of https://github.com/project-repo/cagebreak into output_config

commit 6fdc55c9a5
Author: project-repo <cagebreak_signing_key_2@cagebreak>
Date:   Fri Feb 28 17:30:06 2020 +0100

    Add missing functionality to output configuration

commit 33d245b60b
Author: project-repo <cagebreak_signing_key_2@cagebreak>
Date:   Wed Feb 26 07:56:28 2020 +0100

    Add example of "output" command usage

commit 0d4bb36068
Author: project-repo <cagebreak_signing_key_2@cagebreak>
Date:   Wed Feb 26 07:55:25 2020 +0100

    Add documentation for "output" command

commit a2cc047132
Author: project-repo <cagebreak_signing_key_2@cagebreak>
Date:   Sun Feb 23 16:53:47 2020 +0100

    Add support for output layout configuration
2020-04-04 21:33:54 +02:00
Your Name
484ad8280e Make include paths more intuitive 2020-04-04 09:26:00 +02:00
Cagebreak Signing Key 1
a2fb7dab29 Merge branch 'master' into development 2020-04-02 21:34:05 +00:00
Cagebreak Signing Key 1
e2fd797138 Merge branch 'master' into development 2020-04-01 13:27:19 +00:00
Your Name
0f0631ee3b Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-04-01 14:44:19 +02:00
Your Name
2bc16978fc Reorder commands 2020-04-01 14:43:48 +02:00
Cagebreak Signing Key 1
e0e6fd50bd Add release signature 2020-04-01 11:57:26 +00:00
Cagebreak Signing Key 1
e998b5b31d Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-04-01 11:54:51 +00:00
Cagebreak Signing Key 1
ddae878c85 Update Hashes and release information 2020-04-01 11:54:29 +00:00
Your Name
9608770bc7 Add sanitizers to fuzzer workflow 2020-04-01 13:44:26 +02:00
Cagebreak Signing Key 1
f25e5d9ec3 Prepare 1.1.0 release
- adjust versions
- adapt documentation
2020-04-01 11:01:27 +00:00
Cagebreak Signing Key 1
e0e980d828 Fix merging error 2020-03-30 09:33:28 +00:00
Cagebreak Signing Key 1
fda713694a Merge branch 'merge_parse' into development 2020-03-30 09:27:39 +00:00
Your Name
d54c2ecea9 Fix version checking for server_protos 2020-03-29 23:13:12 +02:00
Cagebreak Signing Key 1
5ebc5bac65 Merge branch 'merge_parse' into development 2020-03-29 16:46:48 +00:00
Your Name
a1af1ca3ac Merge branch 'merge_parse' of https://github.com/project-repo/cagebreak into merge_parse 2020-03-29 18:02:59 +02:00
Your Name
3461b70baa Fix missing ifdef guards 2020-03-29 18:02:38 +02:00
Cagebreak Signing Key 1
c9e3e2dbee Merge branch 'merge_parse' into development 2020-03-29 13:00:55 +00:00
Cagebreak Signing Key 1
9c93e3d4e8 Prepare for merge 2020-03-29 12:51:26 +00:00
Cagebreak Signing Key 1
4bdc2640a7 Merge 1.0.6 for compatibility testing 2020-03-29 11:47:44 +00:00
Cagebreak Signing Key 1
6a1266bc21 Add current hashes and signatures 2020-03-29 09:46:25 +00:00
Cagebreak Signing Key 1
8eb17bc54b Update server_protos version 2020-03-29 09:37:22 +00:00
Your Name
c794d3519b Remove git hash from version 2020-03-29 10:33:28 +02:00
Cagebreak Signing Key 1
935cf11817 Merge branch 'reproducible_builds' into development 2020-03-28 21:53:53 +00:00
Your Name
1934b56fa1 Reword readme 2020-03-28 22:42:37 +01:00
Cagebreak Signing Key 1
b8749110f4 Merge branch 'reproducible_builds' into development 2020-03-28 21:35:43 +00:00
Cagebreak Signing Key 1
78fc95e098 Prepare cagebreak 1.0.6 for review
- Make build reproducible accross commits
- Document reproducibility regimen
2020-03-28 21:33:54 +00:00
Your Name
82512a5b52 Add missing dependency 2020-03-28 21:14:33 +01:00
project-repo
d40db590f5 Reword warning message 2020-03-28 09:11:11 +01:00
project-repo
741a0a4928 Add warning message on version missmatch 2020-03-28 09:09:24 +01:00
project-repo
9363a59b95 Apply clang-format 2020-03-21 14:31:06 +01:00
project-repo
14a15feebb Ameliorate fuzzing process 2020-03-21 10:07:24 +01:00
project-repo
30bfa9b689 Fix bugs in keybinding execution 2020-03-21 09:52:41 +01:00
project-repo
b11e2409c6 Add support for disabling messages when fuzzing 2020-03-21 09:51:35 +01:00
project-repo
8ffac22f1b Fix conventions for system include 2020-03-21 09:51:05 +01:00
project-repo
f6240e9f68 Fix potential double-free 2020-03-21 09:50:52 +01:00
project-repo
3035866d78 Fix parsing bugs 2020-03-21 09:50:42 +01:00
project-repo
0c7719011b Add fontconfig as dependency 2020-03-21 09:49:50 +01:00
project-repo
56ee91d396 Cleanup cairo and pandoc structures on exit 2020-03-21 09:49:16 +01:00
Cagebreak Signing Key 1
bdfbc4cd32 Prepare 1.0.5 release
- Summaize bug
- Increment version number
2020-03-13 13:07:01 +00:00
project-repo
e7ca6d693f Fix crash on view destroy 2020-03-12 22:08:52 +01:00
project-repo
cb46e463a3 Fix memory leaks 2020-03-06 21:04:29 +01:00
project-repo
54991cb638 Unify parsing of config file 2020-03-06 20:51:05 +01:00
Cagebreak Signing Key 1
27fa2b70b9 Merge branch 'output_config' of https://github.com/project-repo/cagebreak into output_config 2020-03-02 18:45:11 +00:00
Cagebreak Signing Key 1
1a87477e19 Merge branch 'master' into development 2020-03-02 18:43:45 +00:00
Cagebreak Signing Key 1
f10395a16e Prepare 1.0.4 release 2020-03-02 18:17:25 +00:00
Cagebreak Signing Key 1
8ebacb4a28 Improve README
- Add working merge process specification
2020-03-02 17:49:49 +00:00
project-repo
fa7101acc2 Merge branch 'development' of https://github.com/project-repo/cagebreak into development 2020-03-01 11:11:07 +01:00
project-repo
6ff175b048 Fix bug in consumed modifier handling 2020-03-01 11:08:49 +01:00
project-repo
6fdc55c9a5 Add missing functionality to output configuration 2020-02-28 17:30:06 +01:00
project-repo
33d245b60b Add example of "output" command usage 2020-02-26 07:56:28 +01:00
project-repo
0d4bb36068 Add documentation for "output" command 2020-02-26 07:55:25 +01:00
Cagebreak Signing Key 1
58746ee52f Adjust version number for 1.0.3 release 2020-02-25 12:57:49 +00:00
project-repo
a2cc047132 Add support for output layout configuration 2020-02-23 16:53:47 +01:00
Cagebreak Signing Key 1
80c8e51400 Merge branch keyboard_groups 2020-02-22 18:19:47 +00:00
Your Name
375e4d5ea5 Completely switch to wlr_keyboard_group 2020-02-22 09:45:34 +01:00
132 changed files with 1346 additions and 2303 deletions

86
Bugs.md
View file

@ -1235,89 +1235,3 @@ 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.
## 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.
## Issue 68
* github issue number: #38
* Fixed: 2.3.0
After extensive discussion of how to deal with turning off outputs, the
output command was ammended by two settings (permanent & peripheral).
See man pages for details.
Thanks to sodface for the great cooperation.
## Issue 69
* github issue number: #68
* Fixed: 2.3.0
The config man page (5) was badly formatted up to version 2.3.0.
Particularly unescaped html tags caused not all information to be
shown in the web browser view of our repo.
## Issue 70
* github issue number: #62
* Fixed: 2.3.0
The README contained a few non-intuitive phrases up to version 2.3.0.
To alleviate this, the following changes were made:
- Rephrase README.md (for more clarity)
- Add CONTRIBUTING.md (to remove dev detail from README)
- Add PR template (to present relevant info during a PR)
## Issue 71
* github issue number: #60
* Fixed: 2.3.0
Cagebreak up to 2.3.0 did not have configuration for the message location.
This has been added through the initiative of unsigned-enby to improve
accessibility.
## Issue 72
* github issue number: N/A
* Fixed: 2.3.0
A Cagebreak version before 2.3.0 broke the gamma toolkit used to tune the
monitor colors.
## Issue 73
* github issue number: #73
* Fixed: 2.3.1
After 2.3.0 cagebreak did not build on FreeBSD. Since the fix was trivial,
this is fixed in 2.3.1. Thank to Jan Beich for pointing this out.
## Issue 74
* github issue number: #71
* Fixed. 2.3.0
Before 2.3.0 there was an issue with rendering fullscreen applications, particularly
under setups with multiple outputs applications spanned both outputs. Output ordering
also did not work as advertised.

View file

@ -1,464 +0,0 @@
# Contributing
* [Open an issue](https://github.com/project-repo/cagebreak/issues/new) and state your feature request.
We will get back to you.
* Read this document, [README.md](README.md) and [docs/dev-FAQ.md](docs/dev-FAQ.md).
* 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
versions as they are obtained from extra and core
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
[-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 (expired)
* 4739D329C9187A1C2795C20A02ABFDEC3A40545F (expired)
* 7535AB89220A5C15A728B75F74104CC7DCA5D7A8 (expired)
* 827BC2320D535AEAD0540E6E2E66F65D99761A6F (expired)
* A88D7431E5BAAD0B6EAE550AC8D61D8BD4FA3C46 (expired)
* 8F872885968EB8C589A32E9539ACC012896D450F (expired)
* 896B92AF738C974E0065BF42F2576BD366156BB9 (expired)
* AA927AFD50AF7C6810E69FE8274F2C605359E31B (expired)
* BE2DED372287BC4EB2213E13A0C743848A638955 (expired)
* 0F3476E4B2404F95EC41600683D5810F7911B020 (expired)
* [4E82C72C6B3E58A7BC4FF8554909F84CA83BB867](keys/cagebreak_signing_key_11@project-repo.co.pub)
* [5AEB1A2EB0D13F67E306AC59DC0CC81BE006FD85](keys/cagebreak_signing_key_12@project-repo.co.pub)
* [438C27DDB5D174673DF4D67B451205B3528C7C63](keys/cagebreak_signing_key_13@project-repo.co.pub)
* [81372DDB8124349F0303B77448D7E2EE3343E3AA](keys/cagebreak_signing_key_14@project-repo.co.pub)
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 pull --tags origin 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

View file

@ -1,100 +1,40 @@
# Changelog
## Release 2.3.0
## Release 1.0.0
Functionality:
* Add configuration to anchor position of messages (#60, 71 in Bugs.md).
* Add output priorisation (#38, 68 in Bugs.md).
* Print whether output is active in dump.
Adds basic tiling window manager functionality to cage.
Bug Fixes:
* Fix gamma control (72 in Bugs.md).
* Add missing commands to example config.
* Add message_config to dump output.
## Release 1.1.0
Example Scripts:
* Add screenshot script.
* Make example scripts standalone.
Unifies commands and actions. See Issue 4 in Bugs.md.
Documentation:
* Escape html tags in config man page. (#68, 69 in Bugs.md)
* Improve README.md (#62, 70 in Bugs.md).
* Improve SECURITY.md.
* Add CONTRIBUTING.md (#62, 70 in Bugs.md).
* FAQ: Add Firefox screenshare instructions for wayland.
* FAQ: Add wlroots downgrading instructions for workaround in case of temporary wlroots incompatibility.
* Update copyright notices to 2024.
## Release 1.2.0
Development Tooling:
* Add new gpg keys (signed by the old ones).
* Add PR template.
* Add dev-FAQ.
* Remove now-unnecessary fanalyzer pragmas.
Adds output configuration as described in the man pages.
## Release 2.2.0
## Release 1.3.0
* Add custom events
* Fix Issue 62 (#46 Github)
* Fix Issue 63 (environment variables test)
* Fix Issue 64 (pointer focus bug)
Adds IPC as described in the man pages.
## Release 2.1.0
## Release 1.4.0
* Add -bs (bad security) option
* Fix Issue 57 (SPDX spelling error #39)
* Fix Issue 59 (meson install settings)
* Fix Issue 55 (npd)
* Fix Issue 56 (npd)
* Fix Issue 58 (#40 config)
* Improve release procedure
* Add miniscule test suite
* Adjust Cagebreak to wlroots 0.16.2
* New GPG Keys
Adds close command for windows as described in the man pages.
## Release 2.0.0
## Release 1.5.0
This is a major release and includes BREAKING changes!
Adds options to disable or enable outputs. See Issue 22 in Bugs.md and Issue #2 on github.
Breaking Changes:
## Release 1.6.0
* More intuitive switch of focus, next, prev and exchange (#20, 40 in Bugs.md)
Cagebreak will probably still feel broadly the same though.
* Remove -r flag - This is replaced by output configuration.
* Socket disabled by default - The socket is enabled by invoking Cagebreak with the -e flag.
* Socket permissions restricted to the user of the Cagebreak process (700)
This may require modification of scripts interacting with the socket with
different UIDs than the UID of the Cagebreak process.
* Rename "Current frame" indicator to "Current tile"
Adds support for non-build dependencies and an option for builds without pandoc.
Changelog:
## Release 1.7.0
* Move to wlr_scene
* Add events displaying change over the socket
* this enables scripting tools
* Add support for scaling outputs (thanks to Oliver Friedmann)
* Remove -r flag
* Add rotation to output configuration
* Add cursor enable|disable flag
* Add input keyboard configuration
* Custom path flag for configuration file
* Restrict socket permissions to the user running cagebreak (700)
* Fix Issue #31 (resolve some terminology) 38 in Bugs.md
* Fix Issue #30 - 39 in Bugs.md
* Fix Issue #20 - 40 in Bugs.md
* Fix Issue #12 - 41 in Bugs.md (dump + events over socket)
* Fix Bugs found via scan-build static analysis (42 - 45 in Bugs.md)
* Fix Issue #33 - 46 in Bugs.md
* Fix Issue #32 - 47 in Bugs.md
* Fix Issue #16 - 48 in Bugs.md
* Fix Issue #3 - 49 in Bugs.md (disabling keybinding interpretation for specific keyboards is now possible)
* Fix Issue #26 - 50 in Bugs.md
* Fix Issue #7 - 51 in Bugs.md (Change cursor to square while Cagebreak is waiting for a key)
* Fix config bug for some commands - 52 in Bugs.md
* Fix Issue #35 - 53 in Bugs.md (update to wlroots 0.16.1)
* Improve FAQ.md (related to some Issues)
* Disable outputs when unable to set any mode (crashed previously)
* Add Code of Conduct
* Print version number on startup
Improves window ordering.
## Release 1.8.0
Adds libinput configuration and virtual keyboard and pointer support.
## Release 1.9.0
@ -124,39 +64,65 @@ Changelog:
- Add new cagebreak email contact gpg key
- Add new project-repo AUR gpg key (relevant for cagebreak-pkgbuild)
## Release 1.8.0
## Release 2.0.0
Adds libinput configuration and virtual keyboard and pointer support.
This is a major release and includes BREAKING changes!
## Release 1.7.0
Breaking Changes:
* More intuitive switch of focus, next, prev and exchange (#20, 40 in Bugs.md)
Cagebreak will probably still feel broadly the same though.
* Remove -r flag - This is replaced by output configuration.
* Socket disabled by default - The socket is enabled by invoking Cagebreak with the -e flag.
* Socket permissions restricted to the user of the Cagebreak process (700)
This may require modification of scripts interacting with the socket with
different UIDs than the UID of the Cagebreak process.
* Rename "Current frame" indicator to "Current tile"
Improves window ordering.
Changelog:
* Move to wlr_scene
* Add events displaying change over the socket
* this enables scripting tools
* Add support for scaling outputs (thanks to Oliver Friedmann)
* Remove -r flag
* Add rotation to output configuration
* Add cursor enable|disable flag
* Add input keyboard configuration
* Custom path flag for configuration file
* Restrict socket permissions to the user running cagebreak (700)
* Fix Issue #31 (resolve some terminology) 38 in Bugs.md
* Fix Issue #30 - 39 in Bugs.md
* Fix Issue #20 - 40 in Bugs.md
* Fix Issue #12 - 41 in Bugs.md (dump + events over socket)
* Fix Bugs found via scan-build static analysis (42 - 45 in Bugs.md)
* Fix Issue #33 - 46 in Bugs.md
* Fix Issue #32 - 47 in Bugs.md
* Fix Issue #16 - 48 in Bugs.md
* Fix Issue #3 - 49 in Bugs.md (disabling keybinding interpretation for specific keyboards is now possible)
* Fix Issue #26 - 50 in Bugs.md
* Fix Issue #7 - 51 in Bugs.md (Change cursor to square while Cagebreak is waiting for a key)
* Fix config bug for some commands - 52 in Bugs.md
* Fix Issue #35 - 53 in Bugs.md (update to wlroots 0.16.1)
* Improve FAQ.md (related to some Issues)
* Disable outputs when unable to set any mode (crashed previously)
* Add Code of Conduct
* Print version number on startup
## Release 1.6.0
## Release 2.1.0
Adds support for non-build dependencies and an option for builds without pandoc.
* Add -bs (bad security) option
* Fix Issue 57 (SPDX spelling error #39)
* Fix Issue 59 (meson install settings)
* Fix Issue 55 (npd)
* Fix Issue 56 (npd)
* Fix Issue 58 (#40 config)
* Improve release procedure
* Add miniscule test suite
* Adjust Cagebreak to wlroots 0.16.2
* New GPG Keys
## Release 1.5.0
Adds options to disable or enable outputs. See Issue 22 in Bugs.md and Issue #2 on github.
## Release 1.4.0
Adds close command for windows as described in the man pages.
## Release 1.3.0
Adds IPC as described in the man pages.
## Release 1.2.0
Adds output configuration as described in the man pages.
## Release 1.1.0
Unifies commands and actions. See Issue 4 in Bugs.md.
## Release 1.0.0
Adds basic tiling window manager functionality to cage.
## Release 2.2.0
* Add custom events
* Fix Issue 62 (#46 Github)
* Fix Issue 63 (environment variables test)
* Fix Issue 64 (pointer focus bug)

37
FAQ.md
View file

@ -2,9 +2,14 @@
## How do I do a particular thing with cagebreak?
* Check the [man pages](manuals.md).
* Check the rest of this file.
* [Open an issue](https://github.com/project-repo/cagebreak/issues/new) or get in touch (See section Email Contact in [SECURITY.md](SECURITY.md)).
* Check the man pages
* [cagebreak config](man/cagebreak-config.5.md) (probably where you find the answer)
* [cagebreak](man/cagebreak.1.md) (command line options etc.)
* [cagebreak-socket](man/cagebreak-socket.7.md) (socket information, mostly useful for scritping)
* Check the rest of this FAQ
* [Open an issue](https://github.com/project-repo/cagebreak/issues/new) or otherwise get in touch with the development team (See section Email Contact in [SECURITY.md](SECURITY.md)).
Note that the feature set of cagebreak is intentionally limited.
## How do I remap Caps Lock?
@ -12,21 +17,6 @@ Remapping Caps Lock globally seems to be the best option.
Follow instructions [here](https://wiki.archlinux.org/title/Linux_console/Keyboard_configuration) to achieve this (should be roughly
distribution-agnostic).
## What do I do if Cagebreak does not work with the current wlroots version?
You can probably downgrade wlroots with
```
$ pacman -U /var/cache/pacman/pkg/old-version
```
If you have cleared your package cache, see instructions in the [ArchWiki](https://wiki.archlinux.org/title/downgrading_packages#Return_to_an_earlier_package_version).
Cagebreak should start working again after the downgrade.
After a new release, the downgrading will no longer be necessary (in fact,
downgrading will probably break your setup).
## How do I get firefox to run under wayland?
Set the following environment variables
@ -36,17 +26,6 @@ Set the following environment variables
to activate wayland support for firefox.
## How do I get firefox to screenshare properly?
Execute the following commands with the appropriate env vars:
```
export XDG_SESSION_TYPE=wayland
export XDG_CURRENT_DESKTIP=sway
/usr/lib/xdg-desktop-portal -r
/usr/lib/xdg-desktop-portal-wlr
```
## How do I map characters which are not on the Keyboard?
Suppose you want to use a command like `bind` for a character

View file

@ -1,85 +1,5 @@
# Hashes
2.3.1 cagebreak
* sha 256: 51d76608726a6251690d6dd1371cdfaa6eae5188a08798cda9c9280b3fcbe3fa
* sha 512: 648c61958f5920b3377f53706f7a820750a2b7dd1d486db4a93d803fe38be4aa728058e82d404fde4e7f1627b9809050a5760c4193562a6c23e39d0851f1ddf0
2.3.1 cagebreak.1
* sha 256: c58390d641514b2eb623a803dc665116d60079b8aac39219b939cc36ffb72038
* sha 512: 82c0248764026666e6fbe3e29bf48062db07d6a86c787258474312a0eae23a73898bcc2fd6c407fbac0a25d6414f9ca9a56e5d17d7c8adfe9e7ce903e6ed5978
2.3.1 cagebreak-config.5
* sha 256: 5cf2f8c883ce89563bbae1fa4f0e00bda42c4ba01f680fc75fc71ab3f6e1f2a8
* sha 512: 10d72ca588f5e2123dc59ede89dafd0e6fb9cd6cbc83922ada751c37f9000c86f68e5e6bf9f68298380ec0f9cbce1f22d0a0f712d0004b168a0b039a41f32358
2.3.1 cagebreak-socket.7
* sha 256: 0363113a32533a6fb4a1e7030cff880f001db5e0c29bb8bd74f8f11067dce3d1
* sha 512: f957ebad717456901a028344211609d009d9b8c2a68ef88a0d60fca8dc91cc1fe1aba58a9e84d16782190b59b9fcd1d45ecc154c020018609c8fcdf940aa18e4
2.3.0 cagebreak
* sha 256: 549e82f6bb1af87c9272fb92d39c6f235b0f780885b066c32db5a5c7588da378
* sha 512: d05e5ac9e4295bed93b8872a815b1f8aaf8ddc2448c01f84d5d29b4d5610bb5c0c50f87b15653bb663a9f772a899dc7b8215042db3ac86aa1ba3000ccb9757d2
2.3.0 cagebreak.1
* sha 256: 11cbe6ea82fa19064ee5b9d8346dbaa8ca8251948c5f5eee7387516edcfbeab0
* sha 512: 76f15788aeebb2cab5a0a477f1427646964c6011c20d64f43f6c445bf08e5371971607a7565017fd05f4f2d75c66da5d79948643618eeb4d3619bc7e6128cffe
2.3.0 cagebreak-config.5
* sha 256: dc8755bbed108cd0cf76f05eee0c6d08550373eab5f75895755abddb7b86e84c
* sha 512: b93caa7cd4ec9085409472982ce72a8e55a369cb830a7d3132801b24db0660e4259a3e9b229dbaf960bc28c4d8a384a19f7bbb11e74f7c4e3f90b04d2b5280ee
2.3.0 cagebreak-socket.7
* sha 256: f33abe5f18cb087ab421c3b647437c31a01e5c731638cac859a9b9ea1f88099e
* sha 512: f973bd2a67d9ca8b4bf2d150c4f1151163f379c7048e1e4be098d8032a424c77bd4dfaa98635bb8cdefa0b2da147b9b6a87bcbcaa87c378b5040e708f8ca5a97
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
* 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

View file

@ -1,4 +1,4 @@
Copyright (c) 2020-2024 The Cagebreak authors
Copyright (c) 2020-2023 The Cagebreak authors
Copyright (c) 2018-2020 Jente Hidskes
Copyright (c) 2019 The Sway authors

699
README.md
View file

@ -1,55 +1,90 @@
# Cagebreak: A Tiling Wayland Compositor
# 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.3.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.1)](https://repology.org/project/cagebreak/versions)
[![Contact](img/mail.svg)](SECURITY.md) [![Manuals](img/manuals.svg)](manuals.md) [![FAQ](img/faq.svg)](FAQ.md) [![CONTRIBUTING](img/contributing.svg)](CONTRIBUTING.md) [![ArchWiki](img/archwiki.svg)](https://wiki.archlinux.org/title/Cagebreak) [![AUR](img/aur.svg)](https://aur.archlinux.org/packages?O=0&K=cagebreak)
## Quick Introduction
## Introduction
Cagebreak is a [Wayland](https://wayland.freedesktop.org/) tiling compositor
based on [Cage](https://github.com/Hjdskes/cage) and inspired by [ratpoison](https://www.nongnu.org/ratpoison/).
Cagebreak provides a [ratpoison](https://www.nongnu.org/ratpoison/)-inspired, [cage](https://github.com/Hjdskes/cage)-based, tiling [Wayland](https://wayland.freedesktop.org/) compositor.
### Purpose
* Bugs, Contact Information and New Features:
* [Open an issue](https://github.com/project-repo/cagebreak/issues/new).
* Write an e-mail (See [SECURITY.md](SECURITY.md)).
* The Roadmap below outlines our plans.
* Compatibility & Development Distribution:
* Cagebreak supports [Arch Linux](https://archlinux.org/) and uses the library
versions from extra and core at the time of release.
Most other setups work with a [bit of luck](https://repology.org/project/cagebreak/versions).
* Quick Installation (on ArchLinux, more [here (ArchWiki)](https://wiki.archlinux.org/title/Cagebreak)):
1. Use the [cagebreak PKGBUILD](https://aur.archlinux.org/packages/cagebreak).
2. Add an example config such as [config](examples/config) to `$USER/.config/cagebreak/config`
3. Execute cagebreak like any other binary.
* Documentation:
* [man pages](manuals.md)
* [README](README.md), [FAQ](FAQ.md) & [SECURITY.md](SECURITY.md)
* What's new?: [Changelog](Changelog.md)
* Uninstallation: `pacman -R cagebreak`
* Contributing:
* [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've never
had to intervene. - Keep it that way!)
* Name: Cagebreak breaks the kiosk of [Cage](https://github.com/Hjdskes/cage) into tiles, hence the name.
The goal of this project is to provide 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)
or write an e-mail (See [SECURITY.md](SECURITY.md) for details.).
The Roadmap section outlines what is planned for the future.
#### 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.
### Quick Installation
This assumes Arch Linux:
1. Use the [cagebreak PKGBUILD](https://aur.archlinux.org/packages/cagebreak).
2. Add an example config such as [config](examples/config) to `$USER/.config/cagebreak/config`
3. Execute cagebreak like any other binary.
See the [ArchWiki](https://wiki.archlinux.org/title/Cagebreak#Getting_started) for
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)
#### What's new?
See the [Changelog](Changelog.md).
### Uninstallation
`pacman -R cagebreak` should be sufficient.
### 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
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!)
### Name
Cagebreak is based on [Cage](https://github.com/Hjdskes/cage), a Wayland kiosk
compositor. Since it breaks the kiosk into tiles the name
Cagebreak seemed appropriate.
## Installation
On [Arch Linux](https://archlinux.org/), use the [AUR](https://aur.archlinux.org/) [PKGBUILDs](https://wiki.archlinux.org/title/PKGBUILD):
On Arch Linux, just use the PKGBUILDs from the [AUR](https://aur.archlinux.org/):
* Using [cagebreak](https://aur.archlinux.org/packages/cagebreak), Cagebreak is
built on the target system (since release 1.3.0)
compiled on the target system (since release 1.3.0)
* Using [cagebreak-bin](https://aur.archlinux.org/packages/cagebreak-bin),
pre-built binaries are extracted
to the target system (since release 1.3.2)
the pre-built binaries are extracted to
appropriate paths on the target system (since release 1.3.2)
See [cagebreak-pkgbuild](https://github.com/project-repo/cagebreak-pkgbuild) for details.
You may check out other distros here:
[![Packaging status](https://repology.org/badge/vertical-allrepos/cagebreak.svg)](https://repology.org/project/cagebreak/versions)
### Obtaining Source Code
There are different ways to obtain cagebreak source:
@ -59,69 +94,61 @@ There are different ways to obtain cagebreak source:
#### Verifying Source Code
There are ways to verify that you obtained the correct source (See `keys/`
and [CONTRIBUTING](CONTRIBUTING.md)):
There are corresponding methods of verifying that you obtained the correct code:
* signature for the tarball of release assets starting at release 1.2.1
* signed tags for releases in the git history
* our git history includes signed tags for releases
* release assets starting at release 1.2.1 contain a signature for the tarball
## Building Cagebreak
Cagebreak uses the [meson](https://mesonbuild.com/) build system.
You can build Cagebreak with the [meson](https://mesonbuild.com/) build system. It
requires wayland, wlroots and xkbcommon to be installed. Note that Cagebreak is
developed against the latest tag of wlroots, in order not to constantly chase
breaking changes as soon as they occur.
Cagebreak is developed against the latest tag of wlroots, so as not to constantly
chase breaking changes.
Execute the following commands to build Cagebreak:
Simply execute the following steps to build Cagebreak:
```
$ meson setup build -Dxwayland=true -Dman-pages=true --buildtype=release
$ meson setup build
$ ninja -C build
```
### Man Pages
#### Release Build
Remove `-Dman-pages=true` to disable man page generation.
By default, this builds a debug build. To build a release build, use `meson
setup build --buildtype=release`.
To generate man pages, make sure that you have [scdoc](https://archlinux.org/packages/extra/x86_64/scdoc/) installed.
##### Xwayland Support
### Release Build
Cagebreak comes with compile-time support for XWayland. To enable this,
first make sure that your version of wlroots is compiled with this
option. Then, add `-Dxwayland=true` to the `meson` command above. Note
that you'll need to have the XWayland binary installed on your system
for this to work.
To obtain a debug build, remove `--buildtype=release`.
##### Man Pages
The release build is reproducible under conditions outlined in [CONTRIBUTING](CONTRIBUTING.md).
Cagebreak has man pages. To use them, make sure that you have `scdoc`
installed. Then, add `-Dman-pages=true` to the `meson` command.
### Xwayland Support
### Running Cagebreak
To build Cagebreak without XWayland support, remove `-Dxwayland=true`.
You can start Cagebreak by running `./build/cagebreak`. If you run it from
within an existing X11 or Wayland session, it will open in a virtual output as
a window in your existing session. If you run it in a TTY, it'll run with the
KMS+DRM backend. Note that a configuration file is required. For more
configuration options, see the man pages.
To use XWayland make sure that your version of wlroots is compiled with
XWayland support.
Please see `example_scripts/` for example scripts and a basis to customize
from.
You'll need to have [XWayland](https://archlinux.org/packages/extra/x86_64/xorg-xwayland/) installed for XWayland support to work.
#### Usage Philosophy
## Running Cagebreak
```
$ ./build/cagebreak
```
If you run Cagebreak within an existing X11 or Wayland session, it will
open in a virtual output as a window in your existing session.
If you run it in a TTY, it'll run with the KMS+DRM backend.
Note that a configuration file is required. For more configuration options, see the [man pages](manuals.md).
Please see `example_scripts/` for a basis to customize from.
### Usage Philosophy
Cagebreak was built to suit the needs of its creators. This outlines
Cagebreak was originally built to suit the needs of its creators. This section outlines
how we intended some parts of cagebreak and might ease learning how to use cagebreak a
little bit. Please note that this does not replace the [man pages](manuals.md) or the [FAQ](FAQ.md).
Also, this is not intended as a guide on how cagebreak must be used but
as a source of inspiration and explanation for certain particularities.
little bit. Please note that this does not replace the man pages or the FAQ.
Also, this is in no way intended as a guide on how cagebreak must be used but rather
as a source of inspiration and explanations for certain particularities.
1. Cagebreak is keyboard-based. Everything regarding cagebreak can be done
through the keyboard and it is our view that it should be. This does not mean
@ -178,6 +205,467 @@ as a source of inspiration and explanation for certain particularities.
> Example scripts can be found in the repository under `example_scripts/`.
## 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
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.
* 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.
* 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
[Cagebreak in the AUR](https://aur.archlinux.org/packages/cagebreak).
* The points 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
@ -185,24 +673,20 @@ in the future:
* React to all issues.
* Add or modify features, which the authors find convenient or important.
* Improve the [OpenSSF Best Practices Badge Program](https://bestpractices.coreinfrastructure.org/en) level.
* Improve the [OpenSSF Best Practices Badge Program](https://bestpractices.coreinfrastructure.org/en) level
## Governance
Cagebreak is managed by project-repo.
Consider project-repo a single benevolent dictator for life that happens
to occupy at least two brains.
Project-repo is a pseudonym of at least two individuals acting
as benevolent dictators for the project by the others mutual consent.
The individuals comprising project-repo are not otherwise associated
by payment from any organisation or grant.
### Governance Issues
Use [SECURITY.md](SECURITY.md) to contact project-repo.
For all intents and purposes consider project-repo as a single
benevolent dictator for life that happens to occupy at least two brains.
### Roles
@ -212,20 +696,37 @@ There are no specific roles forced unto anyone.
### Bus Factor
The current bus factor for Cagebreak is: 1
The Bus Factor is a measure of how many people have to be
incapacitated for a project to be unable to continue.
Project-repo could react to issues (even confidential
The current bus factor for Cagebreak is: 1
Project-repo could still react to issues (even confidential
e-mails) and fix easier issues if any one individual were
incapacitated.
However, not all aspects of the code or release engineering
are fully resilient to the loss of any one individual.
We strive to increase the bus factor to at least 2 in all
aspects.
We strive to improve the Bus Factor to at least two in all
aspects of Cagebreak.
### Governance Issues
Anyone can use the information in [SECURITY.md](SECURITY.md) to
contact the members of project-repo and bring governance
issues to their attention.
## Bugs
For any bug, please [create an issue](https://github.com/project-repo/cagebreak/issues/new) on
[GitHub](https://github.com/project-repo/cagebreak).
Fixed bugs are to be assigned a number and summarized inside Bugs.md for future reference
independent of github, in case this service is unavailable.
For other means of contacting the Cagebreak authors and for security issues
see [SECURITY.md](SECURITY.md).
## Accessibility
@ -238,14 +739,6 @@ aspects.
would work and cagebreak does not preclude the use of a screen reader
for any software run with it.
## Bugs
[Open an issue](https://github.com/project-repo/cagebreak/issues/new) is you find something.
See [SECURITY.md](SECURITY.md) for other means of contacting the Cagebreak authors and security issues.
Fixed bugs are assigned a number and summarized in [Bugs.md](Bugs.md) for future reference.
## Contributors
* Aisha Tammy
@ -258,14 +751,10 @@ Fixed bugs are assigned a number and summarized in [Bugs.md](Bugs.md) for future
released in 2.2.1 with slight modifications
* Tom Greig
* Fix bug in merge_output_configs in 2.1.2
* sodface
* Add a screenshot example script in 2.3.0
* Luca Kennedy (unsigned-enby)
* [Add option to configure the anchor position of messages](https://github.com/project-repo/cagebreak/pull/61) in 2.3.0
## License
Copyright (c) 2020-2024 The Cagebreak authors
Copyright (c) 2020-2023 The Cagebreak authors
Copyright (c) 2018-2020 Jente Hidskes
Copyright (c) 2019 The Sway authors

View file

@ -1,33 +1,17 @@
# Security
The main possibility for security bugs in cagebreak is privilege
escalation via the socket. Any program with access to the socket
immediately gains arbitrary code execution rights. The socket has to
be explicitely enabled using the `-e` flag on invocation and
is restricted to the user of the cagebreak process (700).
The main possibility for security bugs in cagebreak is by privilege
escalation through the socket. Any program with access to the socket
immediately gains arbitrary code execution rights. The socket
is restricted to the user of the cagebreak process (700) and has to
be explicitely enabled using the `-e` flag on invocation.
## Email Contact
If you disagree with this threat model, you may contact us via email (See
section Email Contact below.) or [open an issue on github](https://github.com/project-repo/cagebreak/issues/new).
If you want to get in touch with project-repo via email, contact
`cagebreak @ project-repo . co`.
We try to respond to everything that is not obvious spam.
### GPG-Encrypted Emails
If you can, please encrypt your email with the appropriate GPG key found
in `keys/` and sign your message with your own key.
* B15B92642760E11FE002DE168708D42451A94AB5 (expired)
* F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C (expired)
* 3ACEA46CCECD59E4C8222F791CBEB493681E8693 (expired)
* 0A268C188D7949FEB39FD1462F2AD980247E4918 (soon to expire)
* [283D10F54201B0C6CCEE2C561DE04E4B056C749D](keys/cagebreak@project-repo.co.pub)
Note that our keys are signed by cagebreak signing keys.
If you want us to respond via GPG-encrypted email, please include your own
public key or provide the fingerprint and directions to obtain the key.
Should any problem with the github issue system arise or any other reason
for (potentially confidential) contact with the Cagebreak authors appear,
you may contact us via email (See section Email Contact below.).
## Supported Versions
@ -40,51 +24,77 @@ Builds are reproducible under conditions outlined in [README.md](README.md).
For normal bugs you may [open an issue on github](https://github.com/project-repo/cagebreak/issues/new).
For everything else, an email contact (with gpg encryption and signature)
is available above.
is available below.
## Email Contact
If you want to get in touch with the developers of cagebreak to report
a security vulnerability or anything else via email, contact
`cagebreak @ project-repo . co`.
We try to respond to everything that is not obvious spam.
### GPG-Encrypted Emails
If you can, please encrypt your email with the appropriate GPG key found
in `keys/` and sign your message with your own key.
* B15B92642760E11FE002DE168708D42451A94AB5
* F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C
* 3ACEA46CCECD59E4C8222F791CBEB493681E8693
* 0A268C188D7949FEB39FD1462F2AD980247E4918
Note that our keys are signed by cagebreak signing keys.
If you want us to respond via GPG-encrypted email, please include your own
public key or provide the fingerprint and directions to obtain the key.
## Threat Model
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).
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).
There is no transmission of information by cagebreak other than to the
screens, ipc (if enabled with `-e`) and potentially other documented local channels.
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 (especially options -e and --bs ).
has (no) attack surface. Please reference the man pages for details but especially
the -e and --bs options.
#### Spoofing
Not applicable - Cagebreak is executed after user login.
Not applicable - Using Cagebreak already requires a login as a user.
#### Tampering
Not applicable - Cagebreak allows system manipulation for user software.
Not applicable - Cagebreak must allow system manipulation for user software.
#### Repudiation
Not applicable - There are no prohibited operations (See Tampering above.).
Cagebreak sends events over documented channels. There is no logging
activated by default - this can be changed by logging the socket for example.
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.
#### Information Disclosure
Not applicable - Information disclosure over documented channels is a feature.
Any user software may exfiltrate any data the user has access to.
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.
#### Denial of Service
Not applicable - Cagebreak offers functionality to terminate itself. This is
available to user software over the socket.
Not applicable - Cagebreak offers functionality to terminate itself, which is
available to all user software over the socket if the socket is enabled.
#### Elevation of Privilege
Software may gain arbitrary code execution if it has access to the
socket. Privilege escalation to root is unlikely since privileges
Software may gain arbitrary code execution rights if it has access to the
Cagebreak socket. Privilege escalation to root is unlikely since privileges
are dropped before any user input is accepted.
## GPG Keys of the Cagebreak Repository

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#define _DEFAULT_SOURCE
@ -27,8 +27,8 @@
#include <wlr/types/wlr_data_device.h>
#include <wlr/types/wlr_export_dmabuf_v1.h>
#include <wlr/types/wlr_gamma_control_v1.h>
#include <wlr/types/wlr_idle.h>
#include <wlr/types/wlr_idle_inhibit_v1.h>
#include <wlr/types/wlr_idle_notify_v1.h>
#include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_presentation_time.h>
#include <wlr/types/wlr_primary_selection_v1.h>
@ -280,6 +280,7 @@ main(int argc, char *argv[]) {
struct wlr_viewporter *viewporter = NULL;
struct wlr_presentation *presentation = NULL;
struct wlr_xdg_output_manager_v1 *output_manager = NULL;
struct wlr_gamma_control_manager_v1 *gamma_control_manager = NULL;
struct wlr_xdg_shell *xdg_shell = NULL;
wl_list_init(&server.input_config);
wl_list_init(&server.output_config);
@ -356,7 +357,6 @@ main(int argc, char *argv[]) {
server.message_config.display_time = 2;
server.message_config.font = strdup("pango:Monospace 10");
server.message_config.anchor = CG_MESSAGE_TOP_RIGHT;
event_loop = wl_display_get_event_loop(server.wl_display);
sigint_source =
@ -369,8 +369,8 @@ 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);
server.headless_backend = wlr_headless_backend_create(server.wl_display);
backend = wlr_backend_autocreate(server.wl_display);
server.headless_backend=wlr_headless_backend_create(server.wl_display);
if(!backend) {
wlr_log(WLR_ERROR, "Unable to create the wlroots backend");
ret = 1;
@ -430,10 +430,9 @@ main(int argc, char *argv[]) {
ret = 1;
goto end;
}
server.scene_output_layout =
wlr_scene_attach_output_layout(server.scene, server.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, server.renderer);
if(!compositor) {
wlr_log(WLR_ERROR, "Unable to create the wlroots compositor");
ret = 1;
@ -477,8 +476,14 @@ 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;
@ -565,17 +570,13 @@ main(int argc, char *argv[]) {
goto end;
}
server.gamma_control =
gamma_control_manager =
wlr_gamma_control_manager_v1_create(server.wl_display);
if(!server.gamma_control) {
if(!gamma_control_manager) {
wlr_log(WLR_ERROR, "Unable to create the gamma control manager");
ret = 1;
goto end;
}
server.gamma_control_set_gamma.notify =
handle_output_gamma_control_set_gamma;
wl_signal_add(&server.gamma_control->events.set_gamma,
&server.gamma_control_set_gamma);
#if CG_HAS_XWAYLAND
server.xwayland = wlr_xwayland_create(server.wl_display, compositor, true);
@ -677,8 +678,6 @@ main(int argc, char *argv[]) {
wl_list_init(&server.outputs);
struct cg_output *output, *output_tmp;
wl_list_for_each_safe(output, output_tmp, &tmp_list, link) {
wl_list_remove(&output->link);
output_insert(&server, output);
output_configure(&server, output);
}
server.curr_output =
@ -690,16 +689,14 @@ 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:
if(server.modes != NULL) {
#if CG_HAS_FANALYZE
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wanalyzer-double-free"
#endif
for(unsigned int i = 0; server.modes[i] != NULL; ++i) {
free(server.modes[i]);
}
@ -739,6 +736,11 @@ 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);
@ -765,3 +767,6 @@ end:
return ret;
}
#if CG_HAS_FANALYZE
#pragma GCC diagnostic pop
#endif

View file

@ -1,67 +0,0 @@
# FAQ for Development
## How is cagebreak adjusted to a new wlroots version?
There are three steps:
1. Try to compile Cagebreak with the new wlroots.
2. Fix the compiler errors one-by-one using the wlroots
changelog for reference (https://gitlab.freedesktop.org/wlroots/wlroots/-/releases).
3. Debug until Cagebreak works again.
## How do I add a new test?
1. Add a shell script to `test/`
2. Optionally add test configs to `test/testing-configurations/`
3. Make sure the files have shebang, copyright and SPDX License identifiers
(use the other files for reference)
4. Add the test to `meson.build` as in the example below.
5. Add paths and env vars as shown in the other tests
6. Make sure the test is added to the correct suite
(check out CONTRIBUTING.md for details)
```
test('Scan-build (static analysis)', find_program('test/scan-build'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel-long')
```
## How do I add a new script?
1. Add a shell script to `scripts/`
2. Make sure the files have shebang, copyright and SPDX License identifiers
(use the other files for reference)
3. Add the script to CONTRIBUTING.md
4. Add the script to meson.build as shown below
```
run_target('create-sigs',
command : ['scripts/create-signatures', get_option('gpg_id')])
```
## How do I add an example script?
Extrapolate from the examples in the `example_scripts` directory.
The script should be executable standalone. See `test/script-header` for a possible
library.
License, contributors etc. should be appropriate.
Shellcheck must pass on any script (use of shellcheck pragmas is allowed but
discouraged).
## How do I add a new gpg key?
1. Check which gpg key versions are currently valid.
2. Generate keys with incremented numbers/emails/dates/passphrase.
* Use 4096 Bit RSA Keys
3. Sign the new keys with at least one then-old signing key.
4. Genereate new cagebreak@project-repo.co key
5. Sign the new mail key with the new signing keys.
6. Generate new pkgbuild key.
7. Sign the pkgbuild key with the new signing keys.
8. Add public keys to `keys/`.
9. Update meson_options.txt
10. Update [all man pages](../manuals.md), [CONTRIBUTING](../CONTRIBUTING.md), gpg-validity test & [SECURITY.md](../SECURITY.md)
11. Update the pkgbuild repo with the new key (key and readme).
12. Update git config email.
13. Securely distribute private keys and revocation certificates as per the internal wiki.

View file

@ -1,26 +0,0 @@
# Description
<!-- Replace this with a description of your pull request. -->
<!-- Please reference any relevant issues, PRs etc. -->
## Type of Change
* [ ] Fix
* [ ] Backwards-compatible Feature
* [ ] Breaking Change
## Considerations
<!-- Replace this with a description of what might be missing, any points of confusion or -->
<!-- side effects you would like to point out. -->
## Credit
* [ ] I want to be credited as YOUR_NAME_OR_PSEUDONYM in your contributor section
* [ ] I don't want to be credited.
<!-- (by signing off, you state that you are allowed to contribute and allow us to publish -->
<!-- your contribution under the MIT License) -->
signed-off-by: YOUR_NAME_OR_PSEUDONYM

View file

@ -1,5 +1,7 @@
# Copyright 2024, project-repo and the cagebreak contributors
#!/bin/bash
# Copyright 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
named_pipe_send="$(mktemp -u)"
named_pipe_recv="$(mktemp -u)"
mkfifo "${named_pipe_send}"

View file

@ -1,44 +0,0 @@
#!/bin/bash
# Copyright 2023 - 2024, project-repo, sodface and the cagebreak contributors
# SPDX-License-Identifier: MIT
#
# Execute this script if you want to take a screenshot.
# Please supply your chosen cropping/editing tool as a
# command-line argument. The filepath to the temporary
# file will be given as an argument to your command.
#
# Example:
# screenshot_script "gwenview"
named_pipe_send="$(mktemp -u)"
named_pipe_recv="$(mktemp -u)"
mkfifo "${named_pipe_send}"
mkfifo "${named_pipe_recv}"
nc -U "${CAGEBREAK_SOCKET}" < "${named_pipe_send}" > "${named_pipe_recv}"&
# The file descriptor 3 is set up to send commands to cagebreak and file
# descriptor 4 can be used to read events. Notice that events will pile up in
# file descriptor 4, so it is a good idea to continuously read from it or to
# clear it before starting a new transaction.
exec 3>"${named_pipe_send}"
exec 4<"${named_pipe_recv}"
# When the script exits, the os will clean up the pipe
rm "${named_pipe_recv}"
rm "${named_pipe_send}"
if [[ ${#} -lt 1 ]]
then
echo "Expected a single command line argument specifying the command to edit the screenshot."
exit 1
fi
edit_cmd="${1}"
echo "dump" >&3
IFS= read -r -d $'\0' event <&4
co="$(echo "${event:6}"|jq -r ".curr_output")"
tmpfile="$(mktemp)"
grim -t png -o "${co}" "${tmpfile}"
bash -c "${edit_cmd} \"${tmpfile}\""
wl-copy < "${tmpfile}"
rm "${tmpfile}"

View file

@ -1,23 +1,11 @@
#!/bin/bash
# Copyright 2020 - 2024, project-repo and the cagebreak contributors
# Copyright 2020 - 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
#
# This script displays the process names of the views on the current workspace.
named_pipe_send="$(mktemp -u)"
named_pipe_recv="$(mktemp -u)"
mkfifo "${named_pipe_send}"
mkfifo "${named_pipe_recv}"
nc -U "${CAGEBREAK_SOCKET}" < "${named_pipe_send}" > "${named_pipe_recv}"&
# The file descriptor 3 is set up to send commands to cagebreak and file
# descriptor 4 can be used to read events. Notice that events will pile up in
# file descriptor 4, so it is a good idea to continuously read from it or to
# clear it before starting a new transaction.
exec 3>"${named_pipe_send}"
exec 4<"${named_pipe_recv}"
# When the script exits, the os will clean up the pipe
rm "${named_pipe_recv}"
rm "${named_pipe_send}"
# Start up the ipc link
source "$(dirname "${BASH_SOURCE[0]}")/cb_script_header.sh"
echo "dump" >&3

View file

@ -1,7 +1,8 @@
# Copyright 2020 - 2024, project-repo and the cagebreak contributors
# Copyright 2020 - 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
# General settings and key bindings
######################
# General settings an key bindings
######################
exec xterm
@ -35,21 +36,19 @@ bind k focusup
bind l focusright
bind t exec xterm
bind C-k close
# bind m message Hello World!
#bind m message Hello World!
definekey resize h resizeleft
definekey resize l resizeright
definekey resize j resizedown
definekey resize k resizeup
definekey resize Escape setmode top
# unhide cursor (default)
#unhide cursor (default)
cursor enable
# send a custom event over the socket
# custom_event Hello World!
## Workspaces
######################
#Workspaces
######################
bind 1 screen 1
bind 2 screen 2
bind 3 screen 3
@ -85,33 +84,28 @@ definekey top XF86_Switch_VT_4 switchvt 4
definekey top XF86_Switch_VT_5 switchvt 5
definekey top XF86_Switch_VT_6 switchvt 6
## Bind Function keys
######################
#Bind Function keys
######################
definekey top XF86AudioMute exec pactl set-sink-mute 0 toggle
definekey top XF86AudioLowerVolume exec pactl set-sink-mute 0 off&&amixer set Master 1%-
definekey top XF86AudioRaiseVolume exec pactl set-sink-mute 0 off&&amixer set Master 1%+
definekey top XF86MonBrightnessDown exec xbacklight -dec 1
definekey top XF86MonBrightnessUp exec xbacklight -inc 1
## Output configuration
######################
#Output configuration
######################
#output eDP-1 pos 0 0 res 1366x768 rate 60
#output eDP-1 disable
#output eDP-1 enable
#output eDP-1 prio 1
#output eDP-2 pos 0 0 res 1366x768 rate 60 scale 2.0
# output eDP-1 pos 0 0 res 1366x768 rate 60
output eDP-1 disable
output eDP-1 enable
output eDP-1 permanent
#####################
#Input configuration
#####################
output eDP-1 peripheral
# output eDP-1 prio 1
# output eDP-2 pos 0 0 res 1366x768 rate 60 scale 2.0
## Input configuration
# input 1234:0:Device_Ident click_method clickfinger
# input type:pointer scroll_method two_finger
# input * calibration_matrix 1 2 3 4 5 6
## Message configuration
# configure_message display_time 1
# configure_message anchor top_center
#input 1234:0:Device_Ident click_method clickfinger
#input type:pointer scroll_method two_finger
#input * calibration_matrix 1 2 3 4 5 6

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
// This file is used by the fuzzer in order to prevent executing shell commands.

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#define _POSIX_C_SOURCE 200812L
@ -25,9 +25,10 @@
#include <wlr/types/wlr_data_device.h>
#include <wlr/types/wlr_export_dmabuf_v1.h>
#include <wlr/types/wlr_gamma_control_v1.h>
#include <wlr/types/wlr_idle.h>
#include <wlr/types/wlr_idle_inhibit_v1.h>
#include <wlr/types/wlr_idle_notify_v1.h>
#include <wlr/types/wlr_keyboard_group.h>
#include <wlr/types/wlr_output_damage.h>
#include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_presentation_time.h>
#include <wlr/types/wlr_primary_selection_v1.h>
@ -270,10 +271,9 @@ LLVMFuzzerInitialize(int *argc, char ***argv) {
ret = 1;
goto end;
}
server.scene_output_layout =
wlr_scene_attach_output_layout(server.scene, server.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, server.renderer);
if(!compositor) {
wlr_log(WLR_ERROR, "Unable to create the wlroots compositor");
ret = 1;
@ -310,7 +310,7 @@ LLVMFuzzerInitialize(int *argc, char ***argv) {
goto end;
}
server.idle = wlr_idle_notifier_v1_create(server.wl_display);
server.idle = wlr_idle_create(server.wl_display);
if(!server.idle) {
wlr_log(WLR_ERROR, "Unable to create the idle tracker");
ret = 1;

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef CG_FUZZ_LIB_H

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#define _POSIX_C_SOURCE 200812L

View file

@ -1,9 +1,9 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#include <wayland-server-core.h>
#include <wlr/types/wlr_idle.h>
#include <wlr/types/wlr_idle_inhibit_v1.h>
#include <wlr/types/wlr_idle_notify_v1.h>
#include "idle_inhibit_v1.h"
#include "server.h"
@ -15,13 +15,20 @@ struct cg_idle_inhibitor_v1 {
struct wl_listener destroy;
};
#if CG_HAS_FANALYZE
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak"
#endif
static void
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_notifier_v1_set_inhibited(server->idle, inhibited);
wlr_idle_set_enabled(server->idle, NULL, !inhibited);
}
#if CG_HAS_FANALYZE
#pragma GCC diagnostic pop
#endif
static void
handle_destroy(struct wl_listener *listener, void *data) {

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef CG_IDLE_INHIBIT_H
#define CG_IDLE_INHIBIT_H

View file

@ -1 +0,0 @@
<svg width="65.4" height="20" viewBox="0 0 654 200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" role="img"><title> : Wiki</title><g><rect fill="#4a414e" width="319" height="200"/><rect fill="#3373cc" x="319" width="335" height="200"/></g><g aria-hidden="true" fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110"><text x="240" y="148" textLength="39" fill="#000" opacity="0.1"></text><text x="230" y="138" textLength="39"></text><text x="379" y="148" textLength="235" fill="#000" opacity="0.1">Wiki</text><text x="369" y="138" textLength="235">Wiki</text></g><image x="50" y="35" width="130" height="132" xlink:href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNCA1QzMuNDQ3NzIgNSAzIDUuNDQ3NzIgMyA2QzMgNi41NTIyOCAzLjQ0NzcyIDcgNCA3SDIwQzIwLjU1MjMgNyAyMSA2LjU1MjI4IDIxIDZDMjEgNS40NDc3MiAyMC41NTIzIDUgMjAgNUg0WiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik00IDlDMy40NDc3MiA5IDMgOS40NDc3MiAzIDEwQzMgMTAuNTUyMyAzLjQ0NzcyIDExIDQgMTFIMTJDMTIuNTUyMyAxMSAxMyAxMC41NTIzIDEzIDEwQzEzIDkuNDQ3NzIgMTIuNTUyMyA5IDEyIDlINFoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMyAxNEMzIDEzLjQ0NzcgMy40NDc3MiAxMyA0IDEzSDIwQzIwLjU1MjMgMTMgMjEgMTMuNDQ3NyAyMSAxNEMyMSAxNC41NTIzIDIwLjU1MjMgMTUgMjAgMTVINEMzLjQ0NzcyIDE1IDMgMTQuNTUyMyAzIDE0WiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik00IDE3QzMuNDQ3NzIgMTcgMyAxNy40NDc3IDMgMThDMyAxOC41NTIzIDMuNDQ3NzIgMTkgNCAxOUgxMkMxMi41NTIzIDE5IDEzIDE4LjU1MjMgMTMgMThDMTMgMTcuNDQ3NyAxMi41NTIzIDE3IDEyIDE3SDRaIiBmaWxsPSIjZmZmIi8+PC9zdmc+"/></svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -1 +0,0 @@
<svg width="65.1" height="20" viewBox="0 0 651 200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" role="img"><title> : AUR</title><g><rect fill="#4a414e" width="319" height="200"/><rect fill="#3373cc" x="319" width="332" height="200"/></g><g aria-hidden="true" fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110"><text x="240" y="148" textLength="39" fill="#000" opacity="0.1"></text><text x="230" y="138" textLength="39"></text><text x="379" y="148" textLength="232" fill="#000" opacity="0.1">AUR</text><text x="369" y="138" textLength="232">AUR</text></g><image x="50" y="35" width="130" height="132" xlink:href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNy43NTczNSA1LjYzNjA1TDYuMzQzMTQgNy4wNTAyNkwxMiAxMi43MDcxTDE3LjY1NjkgNy4wNTAyOUwxNi4yNDI3IDUuNjM2MDhMMTIgOS44Nzg3Mkw3Ljc1NzM1IDUuNjM2MDVaIiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTYuMzQzMTQgMTIuNzA3MUw3Ljc1NzM1IDExLjI5MjlMMTIgMTUuNTM1NkwxNi4yNDI3IDExLjI5MjlMMTcuNjU2OSAxMi43MDcxTDEyIDE4LjM2NEw2LjM0MzE0IDEyLjcwNzFaIiBmaWxsPSIjZmZmIi8+PC9zdmc+"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1 +0,0 @@
<svg width="82.2" height="20" viewBox="0 0 822 200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" role="img"><title> : Contrib</title><g><rect fill="#4a414e" width="319" height="200"/><rect fill="#3373cc" x="319" width="503" height="200"/></g><g aria-hidden="true" fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110"><text x="240" y="148" textLength="39" fill="#000" opacity="0.1"></text><text x="230" y="138" textLength="39"></text><text x="379" y="148" textLength="403" fill="#000" opacity="0.1">Contrib</text><text x="369" y="138" textLength="403">Contrib</text></g><image x="50" y="35" width="130" height="132" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMjAuMjQgMTIuMjRhNiA2IDAgMCAwLTguNDktOC40OUw1IDEwLjVWMTloOC41eiIvPjxsaW5lIHgxPSIxNiIgeTE9IjgiIHgyPSIyIiB5Mj0iMjIiLz48bGluZSB4MT0iMTcuNSIgeTE9IjE1IiB4Mj0iOSIgeTI9IjE1Ii8+PC9zdmc+"/></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1 +0,0 @@
<svg width="64.4" height="20" viewBox="0 0 644 200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" role="img"><title> : FAQ</title><g><rect fill="#4a414e" width="319" height="200"/><rect fill="#3373cc" x="319" width="325" height="200"/></g><g aria-hidden="true" fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110"><text x="240" y="148" textLength="39" fill="#000" opacity="0.1"></text><text x="230" y="138" textLength="39"></text><text x="379" y="148" textLength="225" fill="#000" opacity="0.1">FAQ</text><text x="369" y="138" textLength="225">FAQ</text></g><image x="50" y="35" width="130" height="132" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMiAzaDZhNCA0IDAgMCAxIDQgNHYxNGEzIDMgMCAwIDAtMy0zSDJ6Ii8+PHBhdGggZD0iTTIyIDNoLTZhNCA0IDAgMCAwLTQgNHYxNGEzIDMgMCAwIDEgMy0zaDd6Ii8+PC9zdmc+"/></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1 +0,0 @@
<svg width="63.8" height="20" viewBox="0 0 638 200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" role="img"><title> : Mail</title><g><rect fill="#4a414e" width="319" height="200"/><rect fill="#3373cc" x="319" width="319" height="200"/></g><g aria-hidden="true" fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110"><text x="240" y="148" textLength="39" fill="#000" opacity="0.1"></text><text x="230" y="138" textLength="39"></text><text x="379" y="148" textLength="219" fill="#000" opacity="0.1">Mail</text><text x="369" y="138" textLength="219">Mail</text></g><image x="50" y="35" width="130" height="132" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNNCA0aDE2YzEuMSAwIDIgLjkgMiAydjEyYzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMnoiLz48cG9seWxpbmUgcG9pbnRzPSIyMiw2IDEyLDEzIDIsNiIvPjwvc3ZnPg=="/></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1 +0,0 @@
<svg width="87.1" height="20" viewBox="0 0 871 200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" role="img"><title> : Manuals</title><g><rect fill="#4a414e" width="319" height="200"/><rect fill="#3373cc" x="319" width="552" height="200"/></g><g aria-hidden="true" fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110"><text x="240" y="148" textLength="39" fill="#000" opacity="0.1"></text><text x="230" y="138" textLength="39"></text><text x="379" y="148" textLength="452" fill="#000" opacity="0.1">Manuals</text><text x="369" y="138" textLength="452">Manuals</text></g><image x="50" y="35" width="130" height="132" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMiAzaDZhNCA0IDAgMCAxIDQgNHYxNGEzIDMgMCAwIDAtMy0zSDJ6Ii8+PHBhdGggZD0iTTIyIDNoLTZhNCA0IDAgMCAwLTQgNHYxNGEzIDMgMCAwIDEgMy0zaDd6Ii8+PC9zdmc+"/></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1 +0,0 @@
<svg width="75" height="20" viewBox="0 0 750 200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" role="img"><title> : Mirror</title><g><rect fill="#4a414e" width="319" height="200"/><rect fill="#3373cc" x="319" width="431" height="200"/></g><g aria-hidden="true" fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110"><text x="240" y="148" textLength="39" fill="#000" opacity="0.1"></text><text x="230" y="138" textLength="39"></text><text x="379" y="148" textLength="331" fill="#000" opacity="0.1">Mirror</text><text x="369" y="138" textLength="331">Mirror</text></g><image x="50" y="35" width="130" height="132" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7b3BhY2l0eTowO30uY2xzLTJ7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48dGl0bGU+Zm9sZGVyPC90aXRsZT48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iZm9sZGVyIj48ZyBpZD0iZm9sZGVyLTIiIGRhdGEtbmFtZT0iZm9sZGVyIj48cmVjdCBjbGFzcz0iY2xzLTEiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTE5LjUsMjAuNUg0LjVBMi40NywyLjQ3LDAsMCwxLDIsMTguMDdWNS45M0EyLjQ3LDIuNDcsMCwwLDEsNC41LDMuNUg5LjFhMSwxLDAsMCwxLC43Ny4zN2wyLjYsMy4xOGg3QTIuNDcsMi40NywwLDAsMSwyMiw5LjQ4djguNTlBMi40NywyLjQ3LDAsMCwxLDE5LjUsMjAuNVoiLz48L2c+PC9nPjwvZz48L3N2Zz4="/></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -1 +0,0 @@
<svg width="84.4" height="20" viewBox="0 0 844 200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" role="img"><title> : + Issue</title><g><rect fill="#4a414e" width="319" height="200"/><rect fill="#3373cc" x="319" width="525" height="200"/></g><g aria-hidden="true" fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110"><text x="240" y="148" textLength="39" fill="#000" opacity="0.1"></text><text x="230" y="138" textLength="39"></text><text x="379" y="148" textLength="425" fill="#000" opacity="0.1">+ Issue</text><text x="369" y="138" textLength="425">+ Issue</text></g><image x="50" y="35" width="130" height="132" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7b3BhY2l0eTowO30uY2xzLTJ7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48dGl0bGU+Z2l0aHViPC90aXRsZT48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iZ2l0aHViIj48cmVjdCBjbGFzcz0iY2xzLTEiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQgMjQpIHJvdGF0ZSgxODApIi8+PGcgaWQ9ImdpdGh1Yi0yIiBkYXRhLW5hbWU9ImdpdGh1YiI+PGcgaWQ9Im1vYmlsZS0yIj48ZyBpZD0iR3JvdXAtOSI+PGcgaWQ9Ikdyb3VwLTExIj48cGF0aCBpZD0iRmlsbC0xIiBjbGFzcz0iY2xzLTIiIGQ9Ik0xMiwxQTEwLjg5LDEwLjg5LDAsMCwwLDEsMTEuNzcsMTAuNzksMTAuNzksMCwwLDAsOC41MiwyMmMuNTUuMS43NS0uMjMuNzUtLjUyczAtLjkzLDAtMS44M2MtMy4wNi42NS0zLjcxLTEuNDQtMy43MS0xLjQ0YTIuODYsMi44NiwwLDAsMC0xLjIyLTEuNThjLTEtLjY2LjA4LS42NS4wOC0uNjVhMi4zMSwyLjMxLDAsMCwxLDEuNjgsMS4xMSwyLjM3LDIuMzcsMCwwLDAsMy4yLjg5LDIuMzMsMi4zMywwLDAsMSwuNy0xLjQ0Yy0yLjQ0LS4yNy01LTEuMTktNS01LjMyQTQuMTUsNC4xNSwwLDAsMSw2LjExLDguMzFhMy43OCwzLjc4LDAsMCwxLC4xMS0yLjg0cy45My0uMjksMywxLjFhMTAuNjgsMTAuNjgsMCwwLDEsNS41LDBjMi4xLTEuMzksMy0xLjEsMy0xLjFhMy43OCwzLjc4LDAsMCwxLC4xMSwyLjg0QTQuMTUsNC4xNSwwLDAsMSwxOSwxMS4yYzAsNC4xNC0yLjU4LDUuMDUtNSw1LjMyYTIuNSwyLjUsMCwwLDEsLjc1LDJjMCwxLjQ0LDAsMi42LDAsMi45NXMuMi42My43NS41MkExMC44LDEwLjgsMCwwLDAsMjMsMTEuNzcsMTAuODksMTAuODksMCwwLDAsMTIsMSIvPjwvZz48L2c+PC9nPjwvZz48L2c+PC9nPjwvc3ZnPg=="/></svg>

Before

Width:  |  Height:  |  Size: 2 KiB

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef _CG_INPUT_H

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#define _POSIX_C_SOURCE 200812L

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef CG_INPUT_MANAGER_H

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#define _DEFAULT_SOURCE

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef CG_IPC_SERVER_H

View file

@ -1,9 +1,8 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#define _POSIX_C_SOURCE 200809L
#include <signal.h>
#include <string.h>
#include <sys/wait.h>
#include <unistd.h>
@ -12,6 +11,7 @@
#include <wlr/backend/session.h>
#include <wlr/types/wlr_cursor.h>
#include <wlr/types/wlr_keyboard_group.h>
#include <wlr/types/wlr_output_damage.h>
#include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_scene.h>
#include <wlr/types/wlr_xcursor_manager.h>
@ -91,7 +91,6 @@ keybinding_free(struct keybinding *keybinding, bool recursive) {
if(keybinding->data.m_cfg->font != NULL) {
free(keybinding->data.m_cfg->font);
}
free(keybinding->data.m_cfg);
break;
case KEYBINDING_DISPLAY_MESSAGE:
if(keybinding->data.c != NULL) {
@ -508,10 +507,11 @@ keybinding_workspace_fullscreen(struct cg_server *server) {
// Switch to a differerent virtual terminal
static int
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);
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);
}
return 0;
}
@ -630,7 +630,7 @@ keybinding_split_horizontal(struct cg_server *server) {
static void
into_process(const char *command) {
execlp("sh", "sh", "-c", command, (char *)NULL);
execl("/bin/sh", "sh", "-c", command, (char *)NULL);
_exit(1);
}
@ -835,50 +835,6 @@ print_str(struct dyn_str *outp, const char *fmt, ...) {
return 0;
}
char *
print_message_conf(struct cg_message_config *config) {
struct dyn_str outp_str;
outp_str.len = 0;
outp_str.cur_pos = 0;
uint32_t nmemb = 7;
outp_str.str_arr = calloc(nmemb, sizeof(char *));
print_str(&outp_str, "\"message_config\": {");
print_str(&outp_str, "\"font\": \"%s\",\n", config->font);
print_str(&outp_str, "\"display_time\": %d,\n", config->display_time);
print_str(&outp_str, "\"bg_color\": [%f,%f,%f,%f],\n", config->bg_color[0],
config->bg_color[1], config->bg_color[2], config->bg_color[3]);
print_str(&outp_str, "\"fg_color\": [%f,%f,%f,%f],\n", config->fg_color[0],
config->fg_color[1], config->fg_color[2], config->fg_color[3]);
switch(config->anchor) {
case CG_MESSAGE_TOP_LEFT:
print_str(&outp_str, "\"anchor\": \"top_left\"\n", config->font);
break;
case CG_MESSAGE_TOP_CENTER:
print_str(&outp_str, "\"anchor\": \"top_center\"\n", config->font);
break;
case CG_MESSAGE_TOP_RIGHT:
print_str(&outp_str, "\"anchor\": \"top_right\"\n", config->font);
break;
case CG_MESSAGE_BOTTOM_LEFT:
print_str(&outp_str, "\"anchor\": \"bottom_left\"\n", config->font);
break;
case CG_MESSAGE_BOTTOM_CENTER:
print_str(&outp_str, "\"anchor\": \"bottom_center\"\n", config->font);
break;
case CG_MESSAGE_BOTTOM_RIGHT:
print_str(&outp_str, "\"anchor\": \"bottom_right\"\n", config->font);
break;
case CG_MESSAGE_CENTER:
print_str(&outp_str, "\"anchor\": \"center\"\n", config->font);
break;
case CG_MESSAGE_NOPT: // This should actually never occur
print_str(&outp_str, "\"anchor\": \"no_op\"\n", config->font);
break;
}
print_str(&outp_str, "}");
return dyn_str_to_str(&outp_str);
}
void
print_modes(struct dyn_str *str, char **modes) {
uint32_t len = 0;
@ -1062,7 +1018,7 @@ print_output(struct cg_output *outp) {
struct dyn_str outp_str;
outp_str.len = 0;
outp_str.cur_pos = 0;
uint32_t nmemb = 10;
uint32_t nmemb = 9;
outp_str.str_arr = calloc(nmemb, sizeof(char *));
print_str(&outp_str, "\"%s\": {\n", outp->name);
print_str(&outp_str, "\"priority\": %d,\n", outp->priority);
@ -1072,9 +1028,7 @@ print_output(struct cg_output *outp) {
outp->wlr_output->width, outp->wlr_output->height);
print_str(&outp_str, "\"refresh_rate\": %f,\n",
(float)outp->wlr_output->refresh / 1000.0);
print_str(&outp_str, "\"permanent\": %d,\n",
outp->role == OUTPUT_ROLE_PERMANENT);
print_str(&outp_str, "\"active\": %d,\n", !outp->destroyed);
print_str(&outp_str, "\"permanent\": %d,\n", outp->role == OUTPUT_ROLE_PERMANENT);
print_str(&outp_str, "\"curr_workspace\": %d,\n", outp->curr_workspace + 1);
char *workspaces_str = print_workspaces(outp);
if(workspaces_str != NULL) {
@ -1228,7 +1182,7 @@ keybinding_dump(struct cg_server *server) {
struct dyn_str str;
str.len = 0;
str.cur_pos = 0;
uint32_t nmemb = 14;
uint32_t nmemb = 13;
str.str_arr = calloc(nmemb, sizeof(char *));
print_str(&str, "{\"event_name\":\"dump\",");
@ -1249,11 +1203,6 @@ keybinding_dump(struct cg_server *server) {
print_str(&str, "\"default_mode\":\"%s\",\n",
get_mode_name(server->modes, server->seat->default_mode));
print_modes(&str, server->modes);
char *message_string = print_message_conf(&server->message_config);
if(message_string != NULL) {
print_str(&str, "%s,", message_string);
free(message_string);
}
char *outps_str = print_outputs(server);
if(outps_str != NULL) {
print_str(&str, "%s,", outps_str);
@ -1600,7 +1549,7 @@ keybinding_configure_output(struct cg_server *server,
struct cg_output *output, *tmp_output;
wl_list_for_each_safe(output, tmp_output, &server->outputs, link) {
if(strcmp(config->output_name, output->name) == 0) {
int output_num = output_get_num(output);
int output_num=output_get_num(output);
output_configure(server, output);
ipc_send_event(server,
"{\"event_name\":\"configure_output\",\"output\":\"%"
@ -1666,9 +1615,6 @@ keybinding_configure_message(struct cg_server *server,
server->message_config.fg_color[2] = config->fg_color[2];
server->message_config.fg_color[3] = config->fg_color[3];
}
if(config->anchor != CG_MESSAGE_NOPT) {
server->message_config.anchor = config->anchor;
}
ipc_send_event(server, "{\"event_name\":\"configure_message\"}");
}
@ -1676,11 +1622,11 @@ 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_xcursor_manager_set_cursor_image(seat->xcursor_manager,
DEFAULT_XCURSOR, seat->cursor);
} else {
seat->enable_cursor = false;
wlr_cursor_unset_image(seat->cursor);
wlr_cursor_set_image(seat->cursor, NULL, 0, 0, 0, 0, 0, 0);
}
}
@ -1694,7 +1640,7 @@ run_action(enum keybinding_action action, struct cg_server *server,
server->running = false;
break;
case KEYBINDING_CHANGE_TTY:
return keybinding_switch_vt(server, data.u);
return keybinding_switch_vt(server->backend, data.u);
case KEYBINDING_CURSOR:
set_cursor(data.i, server->seat);
break;
@ -1710,10 +1656,6 @@ run_action(enum keybinding_action action, struct cg_server *server,
case KEYBINDING_RUN_COMMAND: {
int pid;
if((pid = fork()) == 0) {
setsid();
sigset_t set;
sigemptyset(&set);
sigprocmask(SIG_SETMASK, &set, NULL);
if(fork() == 0) {
into_process(data.c);
}
@ -1741,9 +1683,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_xcursor_manager_set_cursor_image(
server->seat->xcursor_manager, "dot_box_mask",
server->seat->cursor);
}
}
server->seat->mode = data.u;

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef KEYBINDING_H

View file

@ -1,76 +1,87 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
6arp
=AorA
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
=bl5A
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -1,87 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGQh0wgBEADIIjCM9OkxJiof/YNG3HRzlsbTACuppDJHmg6RTGZb6dKNHt98
ZLs2pmDdTMslzffoNUTov7e9JymrCNFSlTcw+lHZ0mx6nqVhPKnMEWeN84YwU76m
qMH99GfNt/j9KYSJuqRINmuoyP2dkj+jgMs8BGnEQsEsfE+ilC8Pgzn0BwH2AuUY
XdGOkIRPdOZHEjlwBVVUVgrhVUwWY6E+XUCDxiXwbITwozGDuRa630Uvr3ON8q2N
6GblOjKkSwbnTEjdSGfsoBORol94f2XaOvBXr7BrQW0kiqB00LtcFpQzm7Jd6NF6
Ch/jP+aHkXiDO7r9EJXzVssJhySJP/r00T4kB2E3tucqj4q/X60eLndWy0b9kf4n
VnKKsRQ8hZvtBOK9BfCBBYX365msICqpKPFwgb3HefgdCpLN/OBPjerbDeGCbWNB
bZfT0arLKWbFU/8rYg392PnCydE/9UtXNLUxuIqwOjH62xvHI41hDglq/GH7a71W
IusqEfPkdmT1+N2VyUCnawIwlmLicGBHWxABrGIlaLHKk0WOw1ZoHADj7h7fTGW5
GqiA77IjM5OJx1BJeIsiFa41AufK3NKyYa2JEBbhRirTzacMdyrmlrxGXrBVjGfw
UIFe1Z60Cbf2HGyffjcNIYwDv3Pwwcv56cVkn9mhkIfGsgdKxzjPO96ihwARAQAB
tChwcm9qZWN0LXJlcG8gPGNhZ2VicmVha0Bwcm9qZWN0LXJlcG8uY28+iQJUBBMB
CAA+FiEECiaMGI15Sf6zn9FGLyrZgCR+SRgFAmQh0wgCGwMFCQHhM4AFCwkIBwIG
FQoJCAsCBBYCAwECHgECF4AACgkQLyrZgCR+SRjeEA/+Lw+Xgh5tfczEpW+7oAai
vE6Jz5Wo308pVGtB/XLGwGlqgbY8MxbSnV7EaEXRNs8u51IRKmZ1IHxG8cu/s6uy
f6MjFIyxWRxe1flHVkyEsAhj2daL6jm+kkZn2sp90o+f3ByYcW+SVeV7MsHA8Fnk
eh/giwmg7QqBzTj4O/IbTWa+gMrjj5OaQk9Y+vJffYIrIkNXW445JGIaGbvTQGkM
mZjaNlzCFI33NabuFhFNbMWyUn9zCu1LlXJPDkcIdewTzEsEy8nvvjKHFlNxe743
Nb1S0h5gJA6l6aT+X8kQ0xavstRsInR2rV3wHw7bwH4qiY0St6psgwu6EwUpB498
O50SGSORqL8jDXazIYkyLf4Kp8C1E6PN7CMZNN3aaGATPYck/tCzgOJOGOMDyiDb
qsh/ANyMsW9/8W2/hTvTv3aEr2dYrUoWOVWRHX4+D4RoK3UDIQHvbq5hULjZI1hY
rLf6TNPGWSubkZXuCaGuzruCtE+2qdCRMdQcT4wYDZ/RJGG7V2zW4zUpkN+dKwxa
s3WlrkdGLAmKoMSQYQCbiasfpGU0DOP2/0DEyVp/5/F11r0n2QziTYxLiLdqCpV6
a4PdGK6r8wUyDcf5pOmWzDE47GHcRWmOiueqMOO/JTvXKENpNIMQhkIa+mp5hmZx
zX7mB9GON2kyMQOO2RCDRF2JAjMEEAEIAB0WIQS+Le03Ioe8TrIhPhOgx0OEimOJ
VQUCZCHfHgAKCRCgx0OEimOJVXI/D/9Jb1Emf51shcyIdaiQUOVC/KAJq926cnoO
rJb+f25a26Z3XR8aU7apU7omBogWoCIgxWbV2PthbYHnGLlImi0W21DgX9fftSzH
Sw3DjQM+Kn4cq10m12JCX3emn5LvlR59GpkVyPpBGbmYDPB7SidWSBJ6uba5MoiK
1GPtj+yrJVF/j03U1dWJOkF51LGzxTmdyh32+XDLBNKzdobKBCgUBJHfjtGHSfvy
aGsO4xAND2ZIZI6T66OCM4+Ip9gsmcoOc1I0XNTrIPmPRsTvlRakVFF3qSQ4Bxwg
tM87UhfwP/+CG1SB/u9cOgb4K2LdtbeP1Q2eidebYRPzyervVDL96kwPVD1ZtRvC
R6Kedqe2Fa5eqPRsO83p0B3Bw3ewmzgCZxS7CTEQTodSO0hmYRWzGYvsNlykRK3t
mxxl1p4XxoaR5VqdYj0NGz/ev3gVWaH+fZSEilEYDBMBjKYppg6N84dsUmw1fcAM
PMAArYB+49j1DDy3MVjVrpxeFqhU8udFAEaNa4b/rMdFqarbIMCW5NSgjKXHl4JA
eapIT5LuL8IK9+R+u+mdZyjcDz17XhsDzn6C4qDKmOvvM4WMbpwQd/0FDPEeJM8A
JXl/SUafaJBCydM3KHs9eD1e9esTZuqvZwvMf46HC27E1skyphifZPLqYZs/WuTI
qOI91JJSzYkCMwQQAQgAHRYhBE6CxyxrPlinvE/4VUkJ+EyoO7hnBQJkId9hAAoJ
EEkJ+EyoO7hnJogP/2c/36TiStjOtbClx3SwNqlBbBrU+8PwqJ117xZysjzRqk/p
Hu6GEwRC5RQFKFBGsl9EtBjUJu6cf0zcR3Qs7QZF5iQS8zGk2lNNZR8RQHgaRoJU
RBG0I/OkkNGPXNE/8rl2E4wxsPfBN5mYaibJgYBXpWZAJeVaPqua6frQbz79w4md
00NSUQSHk6t/x+COhU1nYjOLItOAsVQn3o/5A0sS6s3bF8oGSJTilzfmaU+OpSEn
9ZlulKh6C6lcx0WURQfs4Pjeh1u68GmmwkYIf32V8nOu8wzT5Aig2jE+u36d3doB
jFKfjmxqEOzSOpJgJH+WARR9Ir3MEwaZ4H6bfUNzAvz4TkBmWNXMUM/8j4rKjR1t
7h9kIV2w0PlH8mEkBQaSEgxd2rIdTM70pcmmP+WfWBE2gqSUbBqB6M6ZKc2dGb5k
n/mbj77Gk8Fp8vAZQUFPuKuJuEANlExnr8gFfkVx2MWCUrgGLJznMfEAObNKtfQB
BGR/8tvYbB0ORflb2DkvJYjKFdmWBwda2EgCcCySiV+gkHfqzC2uNBcvOvYSiW5C
kOFpfJXQvKMjjF2V4TP7eolZJi4gww6XXxCHz8Ir9mjJKddHeKx9uXU5yMHmn8Uq
4UfZvuKVwx3yBWi8e2a6lC2xdaOCekNhI9ogXQUfd24NY6KcaxYZVKwbmkmMiQIz
BBABCAAdFiEEWusaLrDRP2fjBqxZ3AzIG+AG/YUFAmQh39IACgkQ3AzIG+AG/YV8
Hg//cBJc29r6WAXQQCAivbBOHlCJ/N3c97xrLhMCMeI/jVPFzLCJaQOhBt0AYJqS
gWMsTLkV1kTMaJLiDg4nNMhJrFZyYzi+AWdqCY14q8yVoYgDG3o4HVGdm+PVQfGo
jDdzt8TQoCLnz6j0jNmplCc2+Q2JfXEGyCjmL4e4Egb1rK82XQ/Ci8qAzzLUmUZO
NVOlXKOk9PArsQWBC8c88KaUMELSVuAoXgJzHeU1w7AMyBcG51aOvbMtbQCJBD3W
bZ6ZW4VrtkU4+3hdQtuFu/dLNF7mOHUBCGtjMw79VUMPR345LVa15H7FCbjdUiNe
y7n+2QFc39q0upv0teS+Wlu+MXjEWZNJJMTr0psGyD2nJzyT8zC3LK6EKpVA8K/Q
T5VoedkuB0EBlrsk3O6YHC7cWnnQSzcjhs5JJg1GwmihJ2LwiNyB3DBSfJbCbFnS
2Ghzx1zDb9chDX7nrCiBdk7SuUY9OJMILr2y3aUsYlGANqN9ReTY7PBeqFPwFuw5
XWb1AtSZRJoGSiKPkllCltkhZcJWgyBfBRf/hUyr5VJQcVP2/bzL2CdNuptXlbZm
YGx4PJ4SaXJ989Rurye4ER/6H/o4JSitfaW4BqSY4gBMWHnkM/W6mDG76T/oU1I7
u6XlvHg0Neni2qnJ39bNCAPbmNgXIi8+qQdI1v3Oj8AFRr+5Ag0EZCHTCAEQALuN
GvWh5ycGVcFuzmQfR0uiVHeKnhTDHpul0QPIpWH933T7HBitfTvdV8Qi/ZuxWL9V
S6XJwg8LhnjaA2I/GQ/fdaUgkGMG6S0ouzIcAm55unXPXACfIkgPpfqXaGtwekG8
AKecdTbPRQHiUeDfHLoiC/AhJdb+AOZepxHNianorE3l0vIyE2MlCYSmf2CgZy7v
WUt3O1YFLxidFlH6JjKNeHbP30hcQ4IrMow+aY4J49XNRGPGTV+rVCL3SPTTiLtu
mtKFWzHmHw/NicwApW65fOm7dQeZYcSvhTJwULsYM4PS8niLUSsQ/UMEHNgVih8H
vj2B+FiHkjqhp7/xDrgzY5bv/QPZ8jRCZDNd93mwOOIhXBWFHVWnpViLFA4dq6ix
qkXzSBATjdgAU2wqt6WAQjThWWLL5p9V1d1FHp0yPuwNJWBH15Q9u9erzcBBWDS/
l7Xg93d/QfuW7IQLPnk4506FG3bYW/+GvpNJ8BMeGnbH7p8HY13VnNQhkTmo9gCY
ZB0h7qpDk3/oJQxscXNFJeuzEW6V82b8MrZoWYZzHLR71WLhpzvd9OSNV9PdXGix
X5krZ3GlutkyQSRBm5LyJrp6qKklJIlpew7/HmEZ6x/gW79q+AGuFzLEQdeRAOCE
E6TiY1bvr0MaPAspn5vphVGKNmvsUop3Cs+iVqlZABEBAAGJAjwEGAEIACYWIQQK
JowYjXlJ/rOf0UYvKtmAJH5JGAUCZCHTCAIbDAUJAeEzgAAKCRAvKtmAJH5JGKso
D/4mlOCh9y6QNwYE4ZowB3Eges3OSo5+anuV1kk6MUeHGM6B7fOHqblALmDYplJJ
XG6OdFOgy9Po3EfR7BEmst2La0R4cCePY5tULl+vmF+z090rQYt2wjduvhweScxx
7c9Exbtt0G37RfYvwyRvSlNWfJSF3EwISm1EYXbTNgrWv1amFqGw0EMYLDzW5F/l
PHRZicvLSCxgtf+RYO+wrnb9cU3mXcLR9rb51wfVQhg3FMznMZgF/w4jIa4p3ggN
MQ1TG3+leWnQXOjw/vuuxtZzrF+eKL6Xvw+1Gi+TCm1m91BtTAF6fMUSXENGqUaj
UUdUqmWSth2prZt4h/6OKZsSbs7jdC/x68nsIJgpWEeCNYBYiQX2lbMXQrPlK+L/
5yimP/pTsLVtPMJjQifnzxHDrYpinx56tGBPsNWEtwEDIxPfYgBMufyvo1zT9sFK
XbL53aRT3SxgGmx1RipbQzkGSYY9YykqqaBzpG9qCJD1JZsTHnm3GzbVmbc5Lvi2
XtVBCpb4LreOCvt1bKroa0kr2atBKnWkOH2LWv5OOxk8wMv/byDWSnX/LRmC8NdP
twW1upra7Eb+fIVwrau3V18230+yx79JHBz4F+gvYuwVfE/6zqEx8RYLjV5g6hPD
+riXIhhH3II0vwj9hUP3I8AGdZBR9oV8X4TwlWtZAPAKdw==
=bl5A
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -1,76 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
XPUssBeVi6uNhWON/EjKc0cLAfNwuBrjj6I=
=5Ie4
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -1,76 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
2rpj+N0DJVi3/r0GWYgBEzvO+yV1ly011sk=
=AVO4
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#include "input.h"

View file

@ -1,8 +1,8 @@
cagebreak-config(5) "Version 2.3.1" "Cagebreak Manual"
cagebreak-config(5) "Version 2.2.1" "Cagebreak Manual"
# NAME
*cagebreak-config* Cagebreak configuration file
*cagebreak-config* Cagebreak configuration file
# SYNOPSIS
@ -17,8 +17,9 @@ 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.
Lines are arbitrarily long in practice, though a reasonable limit of 4Mb has been set.
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.
See *KEY DEFINITIONS* for details on modifier keys and *MODES* for details
on modes.
@ -28,8 +29,8 @@ on modes.
*abort*
Return to default mode
*background <r\> <g\> <b\>*
Set RGB of background - <[r|g|b]\> are floating point numbers
*background <r> <g> <b>*
Set RGB of background - <[r|g|b]> are floating point numbers
between 0 and 1.
There is no support for background images.
@ -38,8 +39,8 @@ on modes.
background 1.0 0.0 0.0
```
*bind <key\> <command\>*
Bind <key\> to execute <command\> if pressed in root mode
*bind <key> <command>*
Bind <key> to execute <command> if pressed in root mode
```
bind <key> <command>
@ -51,17 +52,15 @@ definekey root <key> <command>
Close current window - This may be useful for windows of
applications which do not offer any method of closing them.
*configure_message [font <font description\>|[f|b]g_color <r\> <g\> <b\> <a\>|display_time <n\>|anchor <position\>]*
*configure_message [font <font description>|[f|b]g_color <r> <g> b> <a>|display_time <n>]*
Configure message characteristics -
- font <font description\> sets the font of the message.
Here, <font description\> is either
- an X core font description or
- a FreeType font description via pango
- fg_color <r\> <g\> <b\> <a\> sets the RGBA of the foreground
- bg_color <r\> <g\> <b\> <a\> sets the RGBA of the background
- display_time <n\> sets the display time in seconds
- anchor <position\> sets the position of the message.
<position\> may be one of {top,bottom}\_{left,center,right} or center.
- font <font description> sets
- <font description> is
- X core font description or
- FreeType font description via pango
- fg_color <r> <g> <b> <a> sets RGBA of foreground
- bg_color <r> <g> <b> <a> sets RGBA of background
- display_time <n> sets display time in seconds
```
# Set font
@ -86,20 +85,20 @@ configure_message display_time 4
This simply hides the cursor. Pointing and clicking is
still possible.
*custom_event <message\>*
*custom_event <message>*
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 <message\>.
listening to the IPC socket along with the string <message>.
See *cagebreak-socket(7)* for more details.
*definekey <mode\> <key\> <command\>*
Bind <key\> to execute <command\> if pressed in <mode\> -
*definekey <mode> <key> <command>*
Bind <key> to execute <command> if pressed in <mode> -
*definekey* is a more general version of *bind*.
*definemode <mode\>*
Define new mode <mode\> - After a call to *definemode*,
<mode\> can be used with *definekey* to create a custom key mapping.
*definemode <mode>*
Define new mode <mode> - After a call to *definemode*,
<mode> can be used with *definekey* to create a custom key mapping.
```
# define new mode and create a mapping for it
@ -110,8 +109,8 @@ definekey foo C-t abort
*dump*
Triggers the *dump* event, see *cagebreak-socket(7)* for details
*escape <key\>*
Set <key\> to switch to root mode to execute one command
*escape <key>*
Set <key> to switch to root mode to execute one command
```
escape <key>
@ -131,8 +130,8 @@ definekey top <key> mode root
*exchangeup*
Exchange current window with window in the tile to the top
*exec <command\>*
Execute <command\> using *sh -c*
*exec <command>*
Execute <command> using *sh -c*
*focus*
Focus next tile
@ -155,10 +154,10 @@ definekey top <key> mode root
*hsplit*
Split current tile horizontally
*input <identifier\> <setting\> <value\>*
Set <setting\> to <value\> for device <identifier\> -
<identifier\> can be "\*" (wildcard), of the form
"type:<device_type\>" or the identifier of the device as printed
*input <identifier> <setting> <value>*
Set <setting> to <value> for device <identifier> -
<identifier> can be "\*" (wildcard), of the form
"type:<device_type>" or the identifier of the device as printed
for example by *cagebreak -s*. The supported input types are
- touchpad
- pointer
@ -175,7 +174,7 @@ definekey top <key> mode root
*accel_profile adaptive|flat*
Set pointer acceleration profile for specified input device
*calibration_matrix <6 space-separated floating point values\>*
*calibration_matrix <6 space-separated floating point values>*
Set calibration matrix
*click_method none|button_areas|clickfinger*
@ -208,26 +207,26 @@ definekey top <key> mode root
Enable or disable natural (inverted) scrolling for specified
input device
*pointer_accel [<-1|1\>]*
*pointer_accel [<-1|1>]*
Change the pointer acceleration for specified input device
*scroll_button disable|<event-code-or-name\>*
*scroll_button disable|<event-code-or-name>*
Set button used for scroll_method on_button_down - The button
can be given as an event name or code, which can be obtained from
*libinput debug-events*. If set to _disable_, it disables the
scroll_method on_button_down.
*scroll_factor <floating point value\>*
*scroll_factor <floating point value>*
Change the scroll factor for the specified input device - Scroll
speed will be scaled by the given value, which must be non-negative.
*scroll_method none|two_finger|edge|on_button_down*
Change scroll method for specified input device
*repeat_delay <n\>*
*repeat_delay <n>*
Repeat delay in ms for keyboards only
*repeat_rate <n\>*
*repeat_rate <n>*
Repeat rate in 1/s for keyboards only
*tap enabled|disabled*
@ -239,11 +238,11 @@ definekey top <key> mode root
middle click. _lmr_ treats 1 finger as left click, 2 fingers as
middle click, and 3 fingers as right click.
message <text\>
message <text>
Display a line of arbitrary text.
*mode <mode\>*
Enter mode "<mode\>" - Returns to default mode, after a command is
*mode <mode>*
Enter mode "<mode>" - Returns to default mode, after a command is
executed.
*movetonextscreen*
@ -254,12 +253,12 @@ message <text\>
Move currently focused window to previous screen
See *output* for differences between screen and output.
*movetoscreen <n\>*
Move currently focused window to <n\>-th screen
*movetoscreen <n>*
Move currently focused window to <n>-th screen
See *output* for differences between screen and output.
*movetoworkspace <n\>*
Move currently focused window to <n\>-th workspace
*movetoworkspace <n>*
Move currently focused window to <n>-th workspace
See *output* for differences between screen and output.
*next*
@ -272,32 +271,32 @@ message <text\>
*only*
Remove all splits and make current window fill the entire screen
*output <name\> [[pos <xpos\> <ypos\> res <width\>x<height\> rate <rate\> [scale <scale\>]] | enable | disable | [permanent|peripheral] | prio <n\> | rotate <n\>]*
Configure output "<name\>" -
- <xpos\> and <ypos\> are the position of the
*output <name> [[pos <xpos> <ypos> res <width>x<height> rate <rate> [scale <scale>]] | enable | disable | [permanent|peripheral] | prio <n> | rotate <n>]*
Configure output "<name>" -
- <xpos> and <ypos> are the position of the
monitor in pixels. The top-left monitor should have the coordinates 0 0.
- <width\> and <height\> specify the resolution in pixels.
- <rate\> sets the refresh rate of the monitor (often this is 50 or 60).
- <scale\> sets the output scale (default is 1.0)
- enable and disable enable or disable <name\>. Note that if
<output\> is the only enabled output, *output <output\> disable* has
- <width> and <height> specify the resolution in pixels.
- <rate> sets the refresh rate of the monitor (often this is 50 or 60).
- <scale> sets the output scale (default is 1.0)
- enable and disable enable or disable <name>. Note that if
<output> is the only enabled output, *output <output> disable* has
no effect.
- permanent sets <name\> to persist even on disconnect. When
the physical monitor is disconnected, the output is
- permanent sets <name> to persist even on disconnect. Thus when
the physical monitor is disconnected, the output is nevertheless
maintained and operates identically to the attached monitor. On reconnect,
the monitor operates as though it was never disconnected. Setting the
output role to peripheral when the monitor is disconnected,
output role to peripheral when the monitor is disconnected, immediately
destroys the output, as if the monitor were disconnected.
- peripheral sets the role of <name\> to peripheral, meaning that on
- peripheral sets the role of <name> to peripheral, meaning that on
disconnecting the respective monitor, all views will be moved to another
available output. The default role is peripheral.
- prio <n\> is used to set the priority of an output. If
- prio <n> is used to set the priority of an output. If
nothing else is set, outputs are added as they request to be added
and have a numerical priority of -1. Using prio <n\> it is possible
to set priorities for outputs, where <n\> >= 1. The larger <n\> is,
and have a numerical priority of -1. Using prio <n> it is possible
to set priorities for outputs, where <n> >= 1. The larger <n> is,
the higher the priority is, that is to say, the earlier the output
will appear in the list of outputs.
- rotate <n\> is used to rotate the output by `<n> mod 4 x 90` degrees
- rotate <n> is used to rotate the output by `<n> mod 4 x 90` degrees
counter-clockwise.
```
@ -343,19 +342,19 @@ output DP-1 rotate 3
*resizeup*
Resize current tile towards the top
*screen <n\>*
Change to <n\>-th screen
*screen <n>*
Change to <n>-th screen
See *output* for differences between screen and output.
*show_info*
Display information about the current setup - In particular, print the identifiers
of the available inputs and outputs.
*setmode <mode\>*
Set default mode to <mode\>
*setmode <mode>*
Set default mode to <mode>
*switchvt <n\>*
Switch to tty <n\>
*switchvt <n>*
Switch to tty <n>
*time*
Display time
@ -363,11 +362,11 @@ output DP-1 rotate 3
*vsplit*
Split current tile vertically
*workspace <n\>*
Change to <n\>-th workspace
*workspace <n>*
Change to <n>-th workspace
*workspaces <n\>*
Set number of workspaces to <n\> - <n\> is a single integer larger than 1
*workspaces <n>*
Set number of workspaces to <n> - <n> is a single integer larger than 1
and less than 30.
# MODES
@ -396,7 +395,7 @@ Keys are specified by their names as displayed for example by *xev*.
Modifiers can be specified using the following syntax:
<mod\>-<key\>
<mod>-<key>
The supported modifiers are:
@ -408,7 +407,7 @@ The supported modifiers are:
*S - Shift*
*2 - Mod 2*
*2 - Mod2*
*3 - Mod 3*
@ -435,12 +434,14 @@ Mail contact: `cagebreak @ project-repo . co`
GPG Fingerprints:
- B15B92642760E11FE002DE168708D42451A94AB5
- F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C
- 3ACEA46CCECD59E4C8222F791CBEB493681E8693
- 0A268C188D7949FEB39FD1462F2AD980247E4918
- 283D10F54201B0C6CCEE2C561DE04E4B056C749D
# LICENSE
Copyright (c) 2020-2024 The Cagebreak authors
Copyright (c) 2020-2023 The Cagebreak authors
Copyright (c) 2018-2020 Jente Hidskes

View file

@ -1,8 +1,8 @@
cagebreak-socket(7) "Version 2.3.1" "Cagebreak Manual"
cagebreak-socket(7) "Version 2.2.1" "Cagebreak Manual"
# NAME
*cagebreak-socket* Cagebreak socket
*cagebreak-socket* Cagebreak socket
# SYNOPSIS
@ -30,10 +30,7 @@ Here is an example of how this works using *only* as a command sent over the soc
```
only
cg-ipc{"event_name":"fullscreen",
"tile_id":2,
"workspace":1,
"output":"eDP-1"}
cg-ipc{"event_name":"fullscreen","tile_id":2,"workspace":1,"output":"eDP-1"}
```
This documentation describes the trigger for the events, the keys and the data
@ -48,9 +45,7 @@ type of the values of each event.
```
background 0 1.0 0
cg-ipc{"event_name":"background",
"old_bg":[0.000000,1.000000,1.000000],
"new_bg":[0.000000,1.000000,0.000000]}
cg-ipc{"event_name":"background","old_bg":[0.000000,1.000000,1.000000],"new_bg":[0.000000,1.000000,0.000000]}
```
*close*
@ -66,13 +61,7 @@ cg-ipc{"event_name":"background",
```
close
cg-ipc{"event_name":"close",
"view_id":47,
"view_pid":30456,
"tile_id":47,
"workspace":1,
"output":"eDP-1",
"output_id":1}
cg-ipc{"event_name":"close","view_id":47,"view_pid":30456,"tile_id":47,"workspace":1,"output":"eDP-1","output_id":1}
```
*configure_input*
@ -121,13 +110,7 @@ cg-ipc{"event_name":"configure_output","output":"eDP-1","output_id":1}
```
# Cursor switches tile
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}
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*
@ -153,12 +136,7 @@ cg-ipc{"event_name":"custom_event","message":"Hello World!"}
```
nextscreen
cg-ipc{"event_name":"cycle_outputs",
"old_output":"eDP-1",
"old_output_id":1,
"new_output":"HDMI-A-1",
"new_output_id":2,
"reverse":0}
cg-ipc{"event_name":"cycle_outputs","old_output":"eDP-1","old_output_id":1,"new_output":"HDMI-A-1","new_output_id":2,"reverse":0}
```
*cycle_views*
@ -176,15 +154,7 @@ cg-ipc{"event_name":"cycle_outputs",
```
next
cg-ipc{"event_name":"cycle_views",
"old_view_id":11,
"old_view_pid":32223,
"new_view_id":4,
"old_view_pid";53221,
"tile_id":13,
"workspace":1,
"output":"eDP-1",
"output_id":1}
cg-ipc{"event_name":"cycle_views","old_view_id":11,"old_view_pid":32223,"new_view_id":4,"old_view_pid";53221,"tile_id":13,"workspace":1,"output":"eDP-1","output_id":1}
```
*definekey*
@ -250,20 +220,12 @@ cg-ipc{"event_name":"destroy_output","output":"HDMI-A-1","output_id":2}
- curr_output: current output as a string
- default_mode: name of the default mode as a string
- modes: list of names of modes as strings
- message_config: the current configuration of the cagebreak messages
- font: the font used to display the messages
- display_time: the duration in seconds that the cagebreak messages are displayed
- bg_color: list of four floating point numbers denoting the background color in rgba
- fg_color: list of four floating point numbers denoting the foreground color in rgba
- anchor: the positioning of the messages on the screen (see *cagebreak-config(5)* for more information)
- outputs: object of objects for each output
- output name as string
- priority: priority as per *output* prio <n> in *cagebreak-config(5)* or default
- coords: object of x and y coordinates of output
- size: object of width and height as integers
- refresh_rate: refresh rate as float
- permanent: 0 if peripheral, 1 if permanent
- active: 1 if the output is active, 0 if not
- curr_workspace: current workspace as an integer
- workspaces: list of objects for each workspace
- views: list of objects for each view
@ -296,18 +258,11 @@ cg-ipc{"event_name":"dump","nws":1,
"curr_output":"eDP-1",
"default_mode":"top",
"modes":["top","root","resize"],
"message_config": {"font": "pango:Monospace 10",
"display_time": 2,
"bg_color": [0.900000,0.850000,0.850000,1.000000],
"fg_color": [0.000000,0.000000,0.000000,1.000000],
"anchor": "top_right"
},"outputs": {"eDP-1": {
"outputs": {"eDP-1": {
"priority": -1,
"coords": {"x":0,"y":0},
"size": {"width":2560,"height":1440},
"refresh_rate": 60.012000,
"permanent": 0,
"active": 1,
"curr_workspace": 0,
"workspaces": [{"views": [{
"id": 16,
@ -396,12 +351,7 @@ cg-ipc{"event_name":"dump","nws":1,
```
focus
cg-ipc{"event_name":"focus_tile",
"old_tile_id":14,
"new_tile_id":13,
"workspace":1,
"output":"eDP-1",
"output_id":1}
cg-ipc{"event_name":"focus_tile","old_tile_id":14,"new_tile_id":13,"workspace":1,"output":"eDP-1","output_id":1}
```
*fullscreen*
@ -415,11 +365,7 @@ cg-ipc{"event_name":"focus_tile",
```
only
cg-ipc{"event_name":"fullscreen",
"tile_id":3,
"workspace":1,
"output":"eDP-1",
"output_id":1}
cg-ipc{"event_name":"fullscreen","tile_id":3,"workspace":1,"output":"eDP-1","output_id":1}
```
*move_view_to_cycle_output*
@ -435,17 +381,8 @@ cg-ipc{"event_name":"fullscreen",
```
movetonextscreen
cg-ipc{"event_name":"cycle_outputs",
"old_output":"eDP-1",
"new_output":"HDMI-A-1",
"reverse":0}
cg-ipc{"event_name":"move_view_to_cycle_output",
"view_id":11,
"view_pid":43123,
"old_output":"eDP-1",
"old_output_id":1,
"new_output":"HDMI-A-1",
"new_output_id":2}
cg-ipc{"event_name":"cycle_outputs","old_output":"eDP-1","new_output":"HDMI-A-1","reverse":0}
cg-ipc{"event_name":"move_view_to_cycle_output","view_id":11,"view_pid":43123,"old_output":"eDP-1","old_output_id":1,"new_output":"HDMI-A-1","new_output_id":2}
```
*move_view_to_output*
@ -458,13 +395,8 @@ cg-ipc{"event_name":"move_view_to_cycle_output",
```
movetoscreen 2
cg-ipc{"event_name":"switch_output",
"old_output":"eDP-1",
"new_output":"HDMI-A-1"}
cg-ipc{"event_name":"move_view_to_output",
"view_id":78,
"old_output":"eDP-1",
"new_output":"HDMI-A-1"}
cg-ipc{"event_name":"switch_output","old_output":"eDP-1","new_output":"HDMI-A-1"}
cg-ipc{"event_name":"move_view_to_output","view_id":78,"old_output":"eDP-1","new_output":"HDMI-A-1"}
```
*move_view_to_ws*
@ -480,17 +412,8 @@ cg-ipc{"event_name":"move_view_to_output",
```
movetoworkspace 1
cg-ipc{"event_name":"switch_ws",
"old_workspace":1,
"new_workspace":1,
"output":"eDP-1"}
cg-ipc{"event_name":"move_view_to_ws",
"view_id":43,
"old_workspace":0,
"new_workspace":0,
"output":"eDP-1",
"output_id":1,
"view_pid":64908}
cg-ipc{"event_name":"switch_ws","old_workspace":1,"new_workspace":1,"output":"eDP-1"}
cg-ipc{"event_name":"move_view_to_ws","view_id":43,"old_workspace":0,"new_workspace":0,"output":"eDP-1","output_id":1,"view_pid":64908}
```
*new_output*
@ -519,19 +442,8 @@ cg-ipc{"event_name":"new_output","output":"HDMI-A-1","output_id":2,"priority":-1
```
resizeleft
cg-ipc{"event_name":"resize_tile",
"tile_id":14,
"old_dims":"[1280,0,1440,1280]",
"new_dims":"[1270,0,1440,1290]",
"workspace":1,"output":"eDP-1",
"output_id":1}
cg-ipc{"event_name":"resize_tile",
"tile_id":13,
"old_dims":"[0,0,1440,1280]",
"new_dims":"[0,0,1440,1270]",
"workspace":1,
"output":"eDP-1",
"output_id":1}
cg-ipc{"event_name":"resize_tile","tile_id":14,"old_dims":"[1280,0,1440,1280]","new_dims":"[1270,0,1440,1290]","workspace":1,"output":"eDP-1","output_id":1}
cg-ipc{"event_name":"resize_tile","tile_id":13,"old_dims":"[0,0,1440,1280]","new_dims":"[0,0,1440,1270]","workspace":1,"output":"eDP-1","output_id":1}
```
*set_nws*
@ -559,13 +471,7 @@ cg-ipc{"event_name":"set_nws","old_nws":1,"new_nws":2}
```
hsplit
cg-ipc{"event_name":"split",
"tile_id":11,
"new_tile_id":12,
"workspace":1,
"output":"eDP-1",
"output_id":1,
"vertical":0}
cg-ipc{"event_name":"split","tile_id":11,"new_tile_id":12,"workspace":1,"output":"eDP-1","output_id":1,"vertical":0}
```
*swap_tile*
@ -582,13 +488,7 @@ cg-ipc{"event_name":"split",
```
exchangeright
cg-ipc{"event_name":"swap_tile",
"tile_id":1,
"tile_pid":53478,
"swap_tile_id":3,
"swap_tile_pid":98234,
"workspace":1,
"output":"eDP-1"}
cg-ipc{"event_name":"swap_tile","tile_id":1,"tile_pid":53478,"swap_tile_id":3,"swap_tile_pid":98234,"workspace":1,"output":"eDP-1"}
```
*switch_default_mode*
@ -614,11 +514,7 @@ switch_output
```
screen 2
cg-ipc{"event_name":"switch_output",
"old_output":"eDP-1",
"old_output_id":1,
"new_output":"HDMI-A-1",
"new_output_id":2}
cg-ipc{"event_name":"switch_output","old_output":"eDP-1","old_output_id":1,"new_output":"HDMI-A-1","new_output_id":2}
```
switch_ws
@ -632,11 +528,7 @@ switch_ws
```
workspace 2
cg-ipc{"event_name":"switch_ws",
"old_workspace":1,
"new_workspace":2,
"output":"eDP-1",
"output_id":1}
cg-ipc{"event_name":"switch_ws","old_workspace":1,"new_workspace":2,"output":"eDP-1","output_id":1}
```
*view_map*
@ -652,13 +544,7 @@ cg-ipc{"event_name":"switch_ws",
```
# process opens a view
cg-ipc{"event_name":"view_map",
"view_id":28,
"tile_id":14,
"workspace":1,
"output":"eDP-1",
"output_id":1,
"view_pid":39827}
cg-ipc{"event_name":"view_map","view_id":28,"tile_id":14,"workspace":1,"output":"eDP-1","output_id":1,"view_pid":39827}
```
*view_unmap*
@ -674,13 +560,7 @@ cg-ipc{"event_name":"view_map",
```
# view is closed by the process
cg-ipc{"event_name":"view_unmap",
"view_id":24,
"tile_id":13,
"workspace":1,
"output":"eDP-1",
"output_id":1,
"view_pid":39544}
cg-ipc{"event_name":"view_unmap","view_id":24,"tile_id":13,"workspace":1,"output":"eDP-1","output_id":1,"view_pid":39544}
```
## SECURITY
@ -710,12 +590,14 @@ Mail contact: `cagebreak @ project-repo . co`
GPG Fingerprints:
- B15B92642760E11FE002DE168708D42451A94AB5
- F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C
- 3ACEA46CCECD59E4C8222F791CBEB493681E8693
- 0A268C188D7949FEB39FD1462F2AD980247E4918
- 283D10F54201B0C6CCEE2C561DE04E4B056C749D
# LICENSE
Copyright (c) 2022 - 2024 The Cagebreak authors
Copyright (c) 2022 - 2023 The Cagebreak authors
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View file

@ -1,4 +1,4 @@
cagebreak(1) "Version 2.3.1" "Cagebreak Manual"
cagebreak(1) "Version 2.2.1" "Cagebreak Manual"
# NAME
@ -28,7 +28,7 @@ socket specified in the environment variable *\$CAGEBREAK_SOCKET*.
The syntax accepted through this socket is identical to
that of the configuration file (see *cagebreak-config(5)*).
Errors which occur during interaction over IPC channel
are displayed in a message box on the screen.
are displayed in a message box at the top right of the screen.
# OPTIONS
@ -87,12 +87,14 @@ Mail contact: `cagebreak @ project-repo . co`
GPG Fingerprints:
- B15B92642760E11FE002DE168708D42451A94AB5
- F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C
- 3ACEA46CCECD59E4C8222F791CBEB493681E8693
- 0A268C188D7949FEB39FD1462F2AD980247E4918
- 283D10F54201B0C6CCEE2C561DE04E4B056C749D
# LICENSE
Copyright (c) 2020-2024 The Cagebreak authors
Copyright (c) 2020-2023 The Cagebreak authors
Copyright (c) 2018-2020 Jente Hidskes

View file

@ -1,5 +0,0 @@
# Cagebreak Manuals
* [cagebreak-config (5)](man/cagebreak-config.5.md) (probably, what you are looking for, commands etc.)
* [cagebreak (1)](man/cagebreak.1.md) (command line arguments, environment variables etc.)
* [cagebreak-socket (7)](man/cagebreak-socket.7.md) (mostly useful for scripting, socket information)

View file

@ -1,9 +1,9 @@
# Copyright 2020 - 2024, project-repo and the cagebreak contributors
# Copyright 2020 - 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
project(
'cagebreak',
'c',
version : '2.3.1',
version : '2.2.1',
license : 'MIT',
default_options : ['c_std=c11', 'warning_level=3']
)
@ -55,7 +55,7 @@ if is_freebsd
)
endif
wlroots = dependency('wlroots', version: ['>=0.17.0', '< 0.18.0'])
wlroots = dependency('wlroots', version: ['>=0.16.1', '< 0.17.0'])
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.17.1',
'xkbcommon': '1.6.0',
'fontconfig': '2.15.0',
'libinput': '1.25.0',
'wlroots': '0.16.2',
'xkbcommon': '1.5.0',
'fontconfig': '2.14.2',
'libinput': '1.23.0',
'libevdev': '1.13.1',
'libudev': '255',
'pango': '1.51.0',
'cairo': '1.18.0',
'pangocairo': '1.51.0',
'libudev': '254',
'pango': '1.50.14',
'cairo': '1.17.8',
'pangocairo': '1.50.14',
'math': '-1'
}
@ -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 = 1706350970
secssinceepoch = 1692353837
shcommand = 'export SOURCE_DATE_EPOCH=' + secssinceepoch.to_string() + ' ; @0@ < @INPUT@'.format(scdoc.path())
sh = find_program('sh')
mandir1 = join_paths(get_option('mandir'), 'man1')
@ -371,16 +371,12 @@ run_target('create-artefacts',
# Test Suite
test('Build without warnings', find_program('test/build-w-o-warnings'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel')
test('Example script header is consistent', find_program('test/script-header'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel')
test('Script executability is consistent', find_program('test/script-header'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel')
test('Man page consistency', find_program('test/man-pages'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel')
test('Build without xwayland', find_program('test/build-w-o-xwayland'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel')
test('Copyright and LICENSE', find_program('test/copyright-license'), args : [ cagebreak_main_file + cagebreak_source_strings + cagebreak_header_strings + fuzz_sources + fuzz_headers + fuzz_override_lib ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()), ''.join('MESONLICENSE=', meson.project_license())], suite: 'devel' )
test('Formatting check (clang-format)', find_program('test/clang-format'), args : [ cagebreak_main_file + cagebreak_source_strings + cagebreak_header_strings + fuzz_sources + fuzz_headers + fuzz_override_lib ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel')
test('Script linting (shellcheck)', find_program('test/shellcheck'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel')
test('Clang-format (formatting check)', find_program('test/clang-format'), args : [ cagebreak_main_file + cagebreak_source_strings + cagebreak_header_strings + fuzz_sources + fuzz_headers + fuzz_override_lib ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel')
test('Shellcheck (script linting)', find_program('test/shellcheck'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel')
test('GPG key validity', find_program('test/gpg-validity'), args : [ meson.project_version() ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel')
test('Illegal Strings', find_program('test/illegal-strings'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel')
test('Static analysis (scan-build)', find_program('test/scan-build'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel-long')
test('Scan-build (static analysis)', find_program('test/scan-build'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel-long')
test('Arguments', find_program('test/arguments'), args : [ meson.project_version() ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'basic')
test('Environment Variables', find_program('test/environment-variables'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'basic')
test('Semantic versioning', find_program('test/versions'), args : [ meson.project_version() ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'release')

View file

@ -1,8 +1,8 @@
# Copyright 2020 - 2024, project-repo and the cagebreak contributors
# Copyright 2020 - 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
option('xwayland', type: 'boolean', value: 'false', description: 'Enable support for X11 applications')
option('man-pages', type: 'boolean', value: 'false', description: 'Build man pages (requires pandoc)')
option('fuzz', type: 'boolean', value: 'false', description: 'Enable building fuzzer targets')
option('version_override', type: 'string', description: 'Set the project version to the string specified. Used for creating hashes for reproducible builds.')
option('corpus', type: 'string', value: 'fuzz_corpus', description: 'Set fuzzing corpus directory')
option('gpg_id', type: 'string', value: '438C27DDB5D174673DF4D67B451205B3528C7C63', description: 'Set gpg signing key for cagebreak')
option('gpg_id', type: 'string', value: '4E82C72C6B3E58A7BC4FF8554909F84CA83BB867', description: 'Set gpg signing key for cagebreak')

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#include <cairo/cairo.h>
@ -12,6 +12,7 @@
#include <wlr/render/allocator.h>
#include <wlr/render/drm_format_set.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_output_damage.h>
#include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_scene.h>
#include <wlr/util/log.h>
@ -174,9 +175,13 @@ create_message_texture(const char *string, const struct cg_output *output) {
return buf;
}
#if CG_HAS_FANALYZE
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak"
#endif
void
message_set_output(struct cg_output *output, const char *string,
struct wlr_box *box, enum cg_message_anchor anchor) {
struct wlr_box *box, enum cg_message_align align) {
struct cg_message *message = malloc(sizeof(struct cg_message));
if(!message) {
wlr_log(WLR_ERROR, "Error allocating message structure");
@ -198,35 +203,26 @@ message_set_output(struct cg_output *output, const char *string,
int height = buf->base.height / scale;
message->position->width = width;
message->position->height = height;
switch(anchor) {
case CG_MESSAGE_TOP_LEFT:
message->position->x = 0;
message->position->y = 0;
break;
case CG_MESSAGE_TOP_CENTER:
message->position->x -= width / 2;
message->position->y = 0;
break;
case CG_MESSAGE_TOP_RIGHT:
switch(align) {
case CG_MESSAGE_TOP_RIGHT: {
message->position->x -= width;
message->position->y = 0;
break;
case CG_MESSAGE_BOTTOM_LEFT:
message->position->x = 0;
}
case CG_MESSAGE_BOTTOM_LEFT: {
message->position->y -= height;
break;
case CG_MESSAGE_BOTTOM_CENTER:
message->position->x -= width / 2;
message->position->y -= height;
break;
case CG_MESSAGE_BOTTOM_RIGHT:
}
case CG_MESSAGE_BOTTOM_RIGHT: {
message->position->x -= width;
message->position->y -= height;
break;
case CG_MESSAGE_CENTER:
}
case CG_MESSAGE_CENTER: {
message->position->x -= width / 2;
message->position->y -= height / 2;
break;
}
case CG_MESSAGE_TOP_LEFT:
default:
break;
}
@ -267,51 +263,22 @@ message_printf(struct cg_output *output, const char *fmt, ...) {
free(buffer);
return;
}
struct wlr_box output_box = output_get_layout_box(output);
box->x = output_get_layout_box(output).width;
box->y = 0;
box->width = 0;
box->height = 0;
switch(output->server->message_config.anchor) {
case CG_MESSAGE_TOP_LEFT:
box->x = 0;
box->y = 0;
break;
case CG_MESSAGE_TOP_CENTER:
box->x = output_box.width / 2;
box->y = 0;
break;
case CG_MESSAGE_TOP_RIGHT:
box->x = output_box.width;
box->y = 0;
break;
case CG_MESSAGE_BOTTOM_LEFT:
box->x = 0;
box->y = output_box.height;
break;
case CG_MESSAGE_BOTTOM_CENTER:
box->x = output_box.width / 2;
box->y = output_box.height;
break;
case CG_MESSAGE_BOTTOM_RIGHT:
box->x = output_box.width;
box->y = output_box.height;
break;
case CG_MESSAGE_CENTER:
box->x = output_box.width / 2;
box->y = output_box.height / 2;
break;
default:
break;
}
message_set_output(output, buffer, box,
output->server->message_config.anchor);
message_set_output(output, buffer, box, CG_MESSAGE_TOP_RIGHT);
free(buffer);
alarm(output->server->message_config.display_time);
}
#if CG_HAS_FANALYZE
#pragma GCC diagnostic pop
#endif
void
message_printf_pos(struct cg_output *output, struct wlr_box *position,
const enum cg_message_anchor anchor, const char *fmt, ...) {
const enum cg_message_align align, const char *fmt, ...) {
if(output->destroyed) {
free(position);
return;
@ -324,7 +291,7 @@ message_printf_pos(struct cg_output *output, struct wlr_box *position,
vsnprintf(buffer, buf_len, fmt, ap);
va_end(ap);
message_set_output(output, buffer, position, anchor);
message_set_output(output, buffer, position, align);
free(buffer);
alarm(output->server->message_config.display_time);
}

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef MESSAGE_H
@ -11,15 +11,12 @@ struct cg_output;
struct wlr_box;
struct wlr_buffer;
enum cg_message_anchor {
enum cg_message_align {
CG_MESSAGE_TOP_LEFT,
CG_MESSAGE_TOP_CENTER,
CG_MESSAGE_TOP_RIGHT,
CG_MESSAGE_BOTTOM_LEFT,
CG_MESSAGE_BOTTOM_CENTER,
CG_MESSAGE_BOTTOM_RIGHT,
CG_MESSAGE_CENTER,
CG_MESSAGE_NOPT
};
struct cg_message_config {
@ -27,7 +24,6 @@ struct cg_message_config {
int display_time;
float bg_color[4];
float fg_color[4];
enum cg_message_anchor anchor;
};
struct cg_message {
@ -41,7 +37,7 @@ void
message_printf(struct cg_output *output, const char *fmt, ...);
void
message_printf_pos(struct cg_output *output, struct wlr_box *position,
enum cg_message_anchor, const char *fmt, ...);
enum cg_message_align, const char *fmt, ...);
void
message_clear(struct cg_output *output);

223
output.c
View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#define _POSIX_C_SOURCE 200809L
@ -16,14 +16,12 @@
#endif
#include <wlr/backend/headless.h>
#include <wlr/types/wlr_compositor.h>
#include <wlr/types/wlr_cursor.h>
#include <wlr/types/wlr_data_device.h>
#include <wlr/types/wlr_gamma_control_v1.h>
#include <wlr/types/wlr_output.h>
#include <wlr/types/wlr_output_damage.h>
#include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_scene.h>
#include <wlr/types/wlr_xcursor_manager.h>
#include <wlr/util/box.h>
#include <wlr/util/log.h>
#include <wlr/util/region.h>
#if CG_HAS_XWAYLAND
@ -45,7 +43,7 @@
void
output_clear(struct cg_output *output) {
struct cg_server *server = output->server;
wlr_scene_output_destroy(output->scene_output);
wlr_output_layout_remove(server->output_layout, output->wlr_output);
if(server->running && server->curr_output == output &&
wl_list_length(&server->outputs) > 1) {
@ -116,14 +114,9 @@ output_get_num(const struct cg_output *output) {
struct wlr_box
output_get_layout_box(struct cg_output *output) {
struct wlr_box box;
wlr_output_layout_get_box(output->server->output_layout, output->wlr_output,
&box);
if(!output->destroyed && !wlr_box_empty(&box)) {
output->layout_box.x = box.x;
output->layout_box.y = box.y;
output->layout_box.width = box.width;
output->layout_box.height = box.height;
if(!output->destroyed) {
wlr_output_layout_get_box(output->server->output_layout,
output->wlr_output, &output->layout_box);
}
return output->layout_box;
}
@ -136,24 +129,19 @@ output_destroy(struct cg_output *output) {
if(output->destroyed == false) {
wl_list_remove(&output->destroy.link);
wl_list_remove(&output->mode.link);
wl_list_remove(&output->commit.link);
wl_list_remove(&output->frame.link);
wlr_scene_output_destroy(output->scene_output);
output->scene_output = NULL;
}
output->destroyed = true;
enum output_role role = output->role;
if(role == OUTPUT_ROLE_PERMANENT) {
output->wlr_output = wlr_headless_add_output(server->headless_backend,
output->layout_box.width,
output->layout_box.height);
output->scene_output =
wlr_scene_output_create(server->scene, output->wlr_output);
struct wlr_output_layout_output *lo =
wlr_output_layout_add(server->output_layout, output->wlr_output,
output->layout_box.x, output->layout_box.y);
wlr_scene_output_layout_add_output(server->scene_output_layout, lo,
output->scene_output);
wlr_output_layout_get_box(server->output_layout, output->wlr_output,
&output->layout_box);
wlr_output_layout_remove(server->output_layout, output->wlr_output);
output->wlr_output=wlr_headless_add_output(server->headless_backend,output->layout_box.width,output->layout_box.height);
wlr_output_layout_add(server->output_layout, output->wlr_output, output->layout_box.x,
output->layout_box.y);
} else {
@ -188,27 +176,6 @@ handle_output_destroy(struct wl_listener *listener, void *data) {
output_destroy(output);
}
void
handle_output_gamma_control_set_gamma(struct wl_listener *listener,
void *data) {
struct cg_server *server =
wl_container_of(listener, server, gamma_control_set_gamma);
const struct wlr_gamma_control_manager_v1_set_gamma_event *event = data;
struct wlr_gamma_control_v1 *gamma_control =
wlr_gamma_control_manager_v1_get_control(server->gamma_control,
event->output);
struct wlr_output_state pending = {0};
wlr_gamma_control_v1_apply(gamma_control, &pending);
if(!wlr_output_test_state(event->output, &pending)) {
wlr_gamma_control_v1_send_failed_and_destroy(gamma_control);
} else {
wlr_output_commit_state(event->output, &pending);
wlr_output_schedule_frame(event->output);
}
}
static void
handle_output_frame(struct wl_listener *listener, void *data) {
struct cg_output *output = wl_container_of(listener, output, frame);
@ -220,7 +187,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);
struct timespec now = {0};
clock_gettime(CLOCK_MONOTONIC, &now);
@ -312,24 +279,20 @@ output_apply_config(struct cg_server *server, struct cg_output *output,
struct cg_output_config *config) {
struct wlr_output *wlr_output = output->wlr_output;
struct wlr_box prev_box;
prev_box.x = output->layout_box.x;
prev_box.y = output->layout_box.y;
prev_box.width = output->layout_box.width;
prev_box.height = output->layout_box.height;
bool prio_changed = false;
if(config->role != OUTPUT_ROLE_DEFAULT) {
output->role = config->role;
if((output->role == OUTPUT_ROLE_PERIPHERAL) &&
(output->destroyed == true)) {
if((output->role == OUTPUT_ROLE_PERIPHERAL)&&(output->destroyed == true)) {
output_destroy(output);
wlr_output_destroy(wlr_output);
return;
}
}
if(output->wlr_output->enabled) {
wlr_output_layout_remove(server->output_layout, wlr_output);
}
if(config->priority != -1) {
prio_changed = (output->priority != config->priority);
output->priority = config->priority;
}
@ -350,59 +313,22 @@ output_apply_config(struct cg_server *server, struct cg_output *output,
wlr_output_commit(wlr_output);
return;
}
if(wlr_box_empty(&output->layout_box)) {
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);
} else {
wlr_scene_output_set_position(output->scene_output, config->pos.x,
config->pos.y);
wlr_output_layout_add(server->output_layout, wlr_output, config->pos.x,
config->pos.y);
/* 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);
}
if(output->workspaces != NULL) {
wlr_output_layout_get_box(server->output_layout, output->wlr_output,
&output->layout_box);
/* Since the size of the output may have changed, we
* reinitialize all workspaces with a fullscreen layout */
if(output->layout_box.width != prev_box.width ||
output->layout_box.height != prev_box.height) {
for(unsigned int i = 0; i < output->server->nws; ++i) {
output_make_workspace_fullscreen(output, i);
}
}
if(prev_box.x != output->layout_box.x ||
prev_box.y != output->layout_box.y) {
for(unsigned int i = 0; i < server->nws; ++i) {
struct cg_workspace *ws = output->workspaces[i];
bool first = true;
for(struct cg_tile *tile = ws->focused_tile;
first || output->workspaces[i]->focused_tile != tile;
tile = tile->next) {
first = false;
if(tile->view != NULL) {
wlr_scene_node_set_position(
&tile->view->scene_tree->node,
tile->view->ox + output->layout_box.x,
tile->view->oy + output->layout_box.y);
}
}
}
}
}
} else if(wlr_box_empty(&output->layout_box)) {
} else {
wlr_output_layout_add_auto(server->output_layout, wlr_output);
// The following two lines make sure that the output is "manually"
// managed, so that its position doesn't change anymore in the
// future.
// The following two lines make sure that the output is "manually" managed,
// so that its position doesn't change anymore in the future.
wlr_output_layout_get_box(server->output_layout, output->wlr_output,
&output->layout_box);
wlr_output_layout_remove(server->output_layout, output->wlr_output);
struct wlr_output_layout_output *lo =
wlr_output_layout_add(server->output_layout, output->wlr_output,
output->layout_box.x, output->layout_box.y);
wlr_scene_output_layout_add_output(server->scene_output_layout, lo,
output->scene_output);
&output->layout_box);
wlr_output_layout_move(server->output_layout, output->wlr_output, output->layout_box.x,
output->layout_box.y);
struct wlr_output_mode *preferred_mode =
wlr_output_preferred_mode(wlr_output);
@ -418,10 +344,8 @@ output_apply_config(struct cg_server *server, struct cg_output *output,
wlr_output_enable(wlr_output, false);
wlr_output_commit(wlr_output);
} else {
if(prio_changed) {
wl_list_remove(&output->link);
output_insert(server, output);
}
wl_list_remove(&output->link);
output_insert(server, output);
wlr_output_enable(wlr_output, true);
wlr_output_commit(wlr_output);
}
@ -438,8 +362,11 @@ output_apply_config(struct cg_server *server, struct cg_output *output,
output->bg = wlr_scene_rect_create(
&scene_output->scene->tree, output->wlr_output->width,
output->wlr_output->height, server->bg_color);
wlr_scene_node_set_position(&output->bg->node, scene_output->x,
scene_output->y);
wlr_output_layout_get_box(server->output_layout, output->wlr_output,
&output->layout_box);
wlr_scene_node_set_position(&output->bg->node,
output_get_layout_box(output).x,
output_get_layout_box(output).y);
wlr_scene_node_lower_to_bottom(&output->bg->node);
}
@ -557,9 +484,8 @@ handle_output_commit(struct wl_listener *listener, void *data) {
return;
}
if(event->state->committed &
(WLR_OUTPUT_STATE_TRANSFORM | WLR_OUTPUT_STATE_SCALE |
WLR_OUTPUT_STATE_MODE)) {
if(event->committed &
(WLR_OUTPUT_STATE_TRANSFORM | WLR_OUTPUT_STATE_SCALE)) {
struct cg_view *view;
wl_list_for_each(
view, &output->workspaces[output->curr_workspace]->views, link) {
@ -570,12 +496,29 @@ 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;
struct cg_view *current_view = output->workspaces[ws]->focused_tile->view;
struct cg_view *current_view = seat_get_focus(server->seat);
if(current_view == NULL) {
if(current_view == NULL || ws != output->curr_workspace) {
struct cg_view *it = NULL;
wl_list_for_each(it, &output->workspaces[ws]->views, link) {
if(view_is_visible(it)) {
@ -598,18 +541,19 @@ output_make_workspace_fullscreen(struct cg_output *output, int ws) {
it_view->tile = output->workspaces[ws]->focused_tile;
}
workspace_tile_update_view(output->workspaces[ws]->focused_tile,
current_view);
if((ws == output->curr_workspace) && (output == server->curr_output)) {
if(ws == output->curr_workspace) {
seat_set_focus(server->seat, current_view);
}
}
#if CG_HAS_FANALYZE
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak"
#endif
void
handle_new_output(struct wl_listener *listener, void *data) {
struct cg_server *server = wl_container_of(listener, server, new_output);
struct wlr_output *wlr_output = data;
wlr_output_enable(wlr_output, true);
if(!wlr_output_init_render(wlr_output, server->allocator,
server->renderer)) {
@ -628,7 +572,7 @@ handle_new_output(struct wl_listener *listener, void *data) {
}
if(reinit) {
wlr_output_layout_remove(server->output_layout, output->wlr_output);
wlr_scene_output_destroy(output->scene_output);
wlr_output_destroy(output->wlr_output);
} else {
output = calloc(1, sizeof(struct cg_output));
}
@ -636,13 +580,13 @@ handle_new_output(struct wl_listener *listener, void *data) {
wlr_log(WLR_ERROR, "Failed to allocate output");
return;
}
output->scene_output = wlr_scene_output_create(server->scene, wlr_output);
output->wlr_output = wlr_output;
output->destroyed = false;
if(!reinit) {
output->server = server;
output->last_scanned_out_view = NULL;
output->name = strdup(wlr_output->name);
struct cg_output_priorities *it;
@ -666,8 +610,6 @@ handle_new_output(struct wl_listener *listener, void *data) {
}
output_insert(server, output);
// This is duplicated here only as a cue for the static analysis tool
output->destroyed = false;
output_configure(server, output);
wlr_output_layout_get_box(server->output_layout, output->wlr_output,
&output->layout_box);
@ -693,28 +635,16 @@ handle_new_output(struct wl_listener *listener, void *data) {
server->curr_output = output;
}
} else {
struct wlr_output_layout_output *lo =
wlr_output_layout_add(server->output_layout, wlr_output,
output->layout_box.x, output->layout_box.y);
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);
if(preferred_mode) {
wlr_output_set_mode(wlr_output, preferred_mode);
}
wlr_output_set_transform(wlr_output, WL_OUTPUT_TRANSFORM_NORMAL);
wlr_scene_output_set_position(
output->scene_output, output->layout_box.x, output->layout_box.y);
wlr_output_enable(wlr_output, true);
wlr_output_commit(wlr_output);
wlr_output_layout_add(server->output_layout, wlr_output,
output_get_layout_box(output).x,
output_get_layout_box(output).y);
output_configure(server, output);
output_get_layout_box(output);
wlr_output_layout_get_box(server->output_layout, output->wlr_output,
&output->layout_box);
}
wlr_cursor_set_xcursor(server->seat->cursor, server->seat->xcursor_manager,
DEFAULT_XCURSOR);
wlr_xcursor_manager_set_cursor_image(server->seat->xcursor_manager,
DEFAULT_XCURSOR, server->seat->cursor);
wlr_cursor_warp(server->seat->cursor, NULL, 0, 0);
output->destroy.notify = handle_output_destroy;
@ -723,6 +653,8 @@ 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_"
@ -730,3 +662,6 @@ handle_new_output(struct wl_listener *listener, void *data) {
output->name, output_get_num(output), output->priority,
reinit);
}
#if CG_HAS_FANALYZE
#pragma GCC diagnostic pop
#endif

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef CG_OUTPUT_H
@ -22,8 +22,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;
@ -32,6 +32,7 @@ struct cg_output {
struct wlr_box layout_box;
int curr_workspace;
int priority;
struct cg_view *last_scanned_out_view;
enum output_role role;
bool destroyed;
char *name;
@ -75,8 +76,4 @@ void
output_make_workspace_fullscreen(struct cg_output *output, int ws);
int
output_get_num(const struct cg_output *output);
void
handle_output_gamma_control_set_gamma(struct wl_listener *listener, void *data);
void
output_insert(struct cg_server *server, struct cg_output *output);
#endif

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#include <cairo.h>

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef _SWAY_PANGO_H

19
parse.c
View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#define _POSIX_C_SOURCE 200812L
@ -720,7 +720,6 @@ parse_message_config(char **saveptr, char **errstr) {
cfg->fg_color[0] = -1;
cfg->display_time = -1;
cfg->font = NULL;
cfg->anchor = CG_MESSAGE_NOPT;
char *setting = strtok_r(NULL, " ", saveptr);
if(setting == NULL) {
@ -764,22 +763,6 @@ parse_message_config(char **saveptr, char **errstr) {
goto error;
}
}
} else if(strcmp(setting, "anchor") == 0) {
char *anchors[] = {"top_left", "top_center", "top_right",
"bottom_left", "bottom_center", "bottom_right",
"center"};
for(int i = 0; i < 7; ++i) {
if(strcmp(*saveptr, anchors[i]) == 0) {
cfg->anchor = i;
break;
}
}
if(cfg->anchor == CG_MESSAGE_NOPT) {
*errstr =
log_error("Error parsing command \"configure_message anchor\", "
"the given anchor value is not a valid option");
goto error;
}
} else {
*errstr = log_error("Invalid option to command \"configure_message\"");
goto error;

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef PARSE_H

View file

@ -1,2 +1,2 @@
2.3.1
2024-01-27
2.2.1
2023-08-21

View file

@ -1,2 +1,2 @@
2.3.1
2024-01-27
2.2.1
2023-08-21

View file

@ -1,2 +1,2 @@
2.3.1
2024-01-27
2.2.1
2023-08-21

View file

@ -1,2 +1,2 @@
2.3.1
2024-01-27
2.2.1
2023-08-21

View file

@ -1,2 +1,2 @@
2.3.1
2024-01-27
2.2.1
2023-08-21

View file

@ -1,2 +0,0 @@
2.3.1
2024-01-27

View file

@ -1,2 +1,2 @@
2.3.1
2024-01-27
2.2.1
2023-08-21

View file

@ -1,2 +1,2 @@
2.3.1
2024-01-27
2.2.1
2023-08-21

View file

@ -1,2 +1,2 @@
2.3.1
2024-01-27
2.2.1
2023-08-21

View file

@ -1,2 +1,2 @@
2.3.1
2024-01-27
2.2.1
2023-08-21

View file

@ -1,2 +1,2 @@
2.3.1
2024-01-27
2.2.1
2023-08-21

View file

@ -1,2 +0,0 @@
2.3.1
2024-01-27

View file

@ -1,5 +1,5 @@
#!/bin/bash
# Copyright 2023 - 2024, project-repo and the cagebreak contributors
# Copyright 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
if [[ -n ${MESON_SOURCE_ROOT} ]]

View file

@ -1,5 +1,5 @@
#!/bin/bash
# Copyright 2023 - 2024, project-repo and the cagebreak contributors
# Copyright 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
if [[ -n ${MESON_SOURCE_ROOT} ]]

View file

@ -1,5 +1,5 @@
#!/bin/bash
# Copyright 2023 - 2024, project-repo and the cagebreak contributors
# Copyright 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
if [[ -n ${MESON_SOURCE_ROOT} ]]

View file

@ -1,5 +1,5 @@
#!/bin/bash
# Copyright 2023 - 2024, project-repo and the cagebreak contributors
# Copyright 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
readonly fuzzing_corpus="${1}"

View file

@ -1,5 +1,5 @@
#!/bin/bash
# Copyright 2023 - 2024, project-repo and the cagebreak contributors
# Copyright 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
readonly gpg_id="${1}"

2
scripts/install-development-environment Executable file → Normal file
View file

@ -1,5 +1,5 @@
#!/bin/bash
# Copyright 2023 - 2024, project-repo and the cagebreak contributors
# Copyright 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
sudo pacman -Syu --noconfirm git grep sed xorg-xev meson ninja clang gcc shellcheck jq openbsd-netcat gnupg binutils alacritty wlroots wayland wayland-protocols libxkbcommon cairo pango fontconfig libinput libevdev pkgconf scdoc systemd-libs # systemd-libs is included because of libudev

View file

@ -1,5 +1,5 @@
#!/bin/bash
# Copyright 2023 - 2024, project-repo and the cagebreak contributors
# Copyright 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
if [[ -n ${MESON_SOURCE_ROOT} ]]

View file

@ -1,7 +1,9 @@
#!/bin/bash
# Copyright 2023 - 2024, project-repo and the cagebreak contributors
# Copyright 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
# TODO man pages
if [[ -n ${MESON_SOURCE_ROOT} ]]
then
# shellcheck disable=2164

105
seat.c
View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#define _POSIX_C_SOURCE 200812L
@ -14,7 +14,7 @@
#include <wlr/types/wlr_compositor.h>
#include <wlr/types/wlr_cursor.h>
#include <wlr/types/wlr_data_device.h>
#include <wlr/types/wlr_idle_notify_v1.h>
#include <wlr/types/wlr_idle.h>
#include <wlr/types/wlr_keyboard_group.h>
#include <wlr/types/wlr_primary_selection.h>
#include <wlr/types/wlr_scene.h>
@ -59,10 +59,10 @@ 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_unset_image(seat->cursor);
wlr_cursor_set_image(seat->cursor, NULL, 0, 0, 0, 0, 0, 0);
} else {
wlr_cursor_set_xcursor(seat->cursor, seat->xcursor_manager,
DEFAULT_XCURSOR);
wlr_xcursor_manager_set_cursor_image(seat->xcursor_manager,
DEFAULT_XCURSOR, seat->cursor);
}
}
@ -168,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_notifier_v1_notify_activity(seat->server->idle, seat->seat);
wlr_idle_notify_activity(seat->server->idle, seat->seat);
}
void
@ -204,11 +204,12 @@ 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_xcursor_manager_set_cursor_image(server->seat->xcursor_manager,
"left_ptr",
server->seat->cursor);
if(node && node->type == WLR_SCENE_NODE_BUFFER) {
struct wlr_scene_surface *scene_surface =
wlr_scene_surface_try_from_buffer(
wlr_scene_surface_from_buffer(
wlr_scene_buffer_from_node(node));
if(scene_surface != NULL) {
surface = scene_surface->surface;
@ -237,7 +238,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_notifier_v1_notify_activity(server->idle, server->seat->seat);
wlr_idle_notify_activity(server->idle, server->seat->seat);
return true;
} else if(mode != 0) {
run_action(KEYBINDING_NOOP, server, (union keybinding_params){NULL});
@ -310,7 +311,7 @@ handle_key_event(struct cg_keyboard_group *group, struct cg_seat *seat,
event->keycode, event->state);
}
wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat);
wlr_idle_notify_activity(seat->server->idle, seat->seat);
}
static void
@ -587,7 +588,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_try_from_buffer(wlr_scene_buffer_from_node(node));
wlr_scene_surface_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,
@ -601,7 +602,7 @@ handle_touch_down(struct wl_listener *listener, void *data) {
seat->touch_ly = ly;
}
wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat);
wlr_idle_notify_activity(seat->server->idle, seat->seat);
}
static void
@ -614,7 +615,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_notifier_v1_notify_activity(seat->server->idle, seat->seat);
wlr_idle_notify_activity(seat->server->idle, seat->seat);
}
static void
@ -636,7 +637,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_try_from_buffer(wlr_scene_buffer_from_node(node));
wlr_scene_surface_from_buffer(wlr_scene_buffer_from_node(node));
if(scene_surface != NULL) {
wlr_seat_touch_point_focus(seat->seat, scene_surface->surface,
@ -655,7 +656,7 @@ handle_touch_motion(struct wl_listener *listener, void *data) {
seat->touch_ly = ly;
}
wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat);
wlr_idle_notify_activity(seat->server->idle, seat->seat);
}
static void
@ -663,7 +664,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_notifier_v1_notify_activity(seat->server->idle, seat->seat);
wlr_idle_notify_activity(seat->server->idle, seat->seat);
}
static void
@ -674,7 +675,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_notifier_v1_notify_activity(seat->server->idle, seat->seat);
wlr_idle_notify_activity(seat->server->idle, seat->seat);
}
static void
@ -684,7 +685,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_notifier_v1_notify_activity(seat->server->idle, seat->seat);
wlr_idle_notify_activity(seat->server->idle, seat->seat);
}
static void
@ -699,7 +700,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_try_from_buffer(wlr_scene_buffer_from_node(node));
wlr_scene_surface_from_buffer(wlr_scene_buffer_from_node(node));
if(scene_surface != NULL) {
surface = scene_surface->surface;
if(surface != NULL) {
@ -720,7 +721,7 @@ process_cursor_motion(struct cg_seat *seat, uint32_t time) {
drag_icon_update_position(drag_icon);
}
wlr_idle_notifier_v1_notify_activity(seat->server->idle, seat->seat);
wlr_idle_notify_activity(seat->server->idle, seat->seat);
/* Check if cursor switched tile */
struct wlr_output *c_outp = wlr_output_layout_output_at(
@ -731,39 +732,34 @@ process_cursor_motion(struct cg_seat *seat, uint32_t time) {
break;
}
}
if(c_outp) {
struct cg_tile *c_tile;
bool first = true;
for(c_tile = cg_outp->workspaces[cg_outp->curr_workspace]->focused_tile;
first ||
c_tile !=
cg_outp->workspaces[cg_outp->curr_workspace]->focused_tile;
c_tile = c_tile->next) {
first = false;
double ox = seat->cursor->x, oy = seat->cursor->y;
wlr_output_layout_output_coords(seat->server->output_layout, c_outp,
&ox, &oy);
if(c_tile->tile.x <= ox && c_tile->tile.y <= oy &&
c_tile->tile.x + c_tile->tile.width >= ox &&
c_tile->tile.y + c_tile->tile.height >= oy) {
break;
}
struct cg_tile *c_tile;
bool first = true;
for(c_tile = cg_outp->workspaces[cg_outp->curr_workspace]->focused_tile;
first ||
c_tile != cg_outp->workspaces[cg_outp->curr_workspace]->focused_tile;
c_tile = c_tile->next) {
first = false;
double ox = seat->cursor->x, oy = seat->cursor->y;
wlr_output_layout_output_coords(seat->server->output_layout, c_outp,
&ox, &oy);
if(c_tile->tile.x <= ox && c_tile->tile.y <= oy &&
c_tile->tile.x + c_tile->tile.width >= ox &&
c_tile->tile.y + c_tile->tile.height >= oy) {
break;
}
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,"
"\"old_tile\":%d,\"new_output\":\"%s\",\"new_output_"
"id\":%d,\"new_tile\":%d}",
seat->cursor_tile->workspace->output->name,
output_get_num(seat->cursor_tile->workspace->output),
seat->cursor_tile->id, c_outp->name, output_get_num(cg_outp),
c_tile->id);
}
seat->cursor_tile = c_tile;
}
if(seat->cursor_tile != NULL && seat->cursor_tile != c_tile) {
ipc_send_event(seat->server,
"{\"event_name\":\"cursor_switch_tile\",\"old_output\":"
"\"%s\",\"old_output_id\":%d,"
"\"old_tile\":%d,\"new_output\":\"%s\",\"new_output_"
"id\":%d,\"new_tile\":%d}",
seat->cursor_tile->workspace->output->name,
output_get_num(seat->cursor_tile->workspace->output),
seat->cursor_tile->id, c_outp->name,
output_get_num(cg_outp), c_tile->id);
}
seat->cursor_tile = c_tile;
}
static void
@ -775,7 +771,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_notifier_v1_notify_activity(seat->server->idle, seat->seat);
wlr_idle_notify_activity(seat->server->idle, seat->seat);
}
static void
@ -786,7 +782,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_notifier_v1_notify_activity(seat->server->idle, seat->seat);
wlr_idle_notify_activity(seat->server->idle, seat->seat);
}
static void
@ -918,7 +914,6 @@ handle_destroy(struct wl_listener *listener, void *_data) {
wl_list_remove(&seat->request_set_cursor.link);
wl_list_remove(&seat->request_set_selection.link);
wl_list_remove(&seat->request_set_primary_selection.link);
seat->server->seat = NULL;
free(seat);
}

2
seat.h
View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef CG_SEAT_H

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#define _POSIX_C_SOURCE 200809L

View file

@ -1,4 +1,4 @@
// Copyright 2020 - 2024, project-repo and the cagebreak contributors
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
// SPDX-License-Identifier: MIT
#ifndef CG_SERVER_H
@ -26,22 +26,18 @@ struct cg_server {
struct cg_seat *seat;
struct cg_input_manager *input;
struct wlr_backend *backend;
struct wlr_idle_notifier_v1 *idle;
struct wlr_idle *idle;
struct wlr_idle_inhibit_manager_v1 *idle_inhibit_v1;
struct wl_listener new_idle_inhibitor_v1;
struct wlr_gamma_control_manager_v1 *gamma_control;
struct wl_listener gamma_control_set_gamma;
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_backend *headless_backend;
struct wlr_session *session;
struct wlr_renderer *renderer;
struct wlr_allocator *allocator;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,5 +1,5 @@
#!/bin/bash
# Copyright 2023 - 2024, project-repo and the cagebreak contributors
# Copyright 2023, project-repo and the cagebreak contributors
# SPDX-License-Identifier: MIT
testdir="${MESONCURRENTCONFIGDIR}/_build-arguments/"

Some files were not shown because too many files have changed in this diff Show more