mirror of
https://cagebreak.project-repo.co/cagebreak.git
synced 2026-08-09 15:19:11 +02:00
Merge branch 'master' into hotfix
This commit is contained in:
commit
64dc9e767b
80 changed files with 975 additions and 246 deletions
50
Bugs.md
50
Bugs.md
|
|
@ -1120,3 +1120,53 @@ Cagebreak was not compatible with clang 15 and POSIX which was causing issues
|
|||
with building under FreeBSD.
|
||||
|
||||
Thanks to Jan Beich for pointing this out and providing a PR.
|
||||
|
||||
## Issue 55
|
||||
|
||||
* github issue number: N/A
|
||||
* Fixed: 2.1.0
|
||||
|
||||
Prior to release 2.1.0, cagebreak sometimes crased due to a null pointer
|
||||
derefrence when the cursor was moved.
|
||||
|
||||
## Issue 56
|
||||
|
||||
* github issue numner: N/A
|
||||
* Fixed: 2.1.0
|
||||
|
||||
Prior to release 2.1.0, the following workflow caused cagebreak to
|
||||
crash:
|
||||
|
||||
* Split an empty workspace.
|
||||
* Open 2 windows on the left tile.
|
||||
* exchangeright
|
||||
* focus left
|
||||
* cycle views
|
||||
|
||||
The reason for this is that the ipc send event did not handle
|
||||
focussing the background correctly when cycling.
|
||||
|
||||
## Issue 57
|
||||
|
||||
* github issue number: #39
|
||||
* Fixed: 2.1.0
|
||||
|
||||
maxhbr pointed out that there was a spelling mistake in the
|
||||
SPDX-License-Identifier.
|
||||
|
||||
## Issue 58
|
||||
|
||||
* github issue number: #40
|
||||
* Fixed: 2.1.0
|
||||
|
||||
Prior to version 2.1.0, the logic behind configuration file loading was
|
||||
broken. This had the effect, that the default configuration file was not
|
||||
loaded when the user-specific config file was not present, instead
|
||||
leading to a termination of cagebreak.
|
||||
|
||||
## Issue 59
|
||||
|
||||
* github issue number: N/A
|
||||
* Fixed: 2.1.0
|
||||
|
||||
Prior to release 2.1.0 `meson install` did not work perfectly.
|
||||
|
|
|
|||
13
Changelog.md
13
Changelog.md
|
|
@ -106,3 +106,16 @@ Changelog:
|
|||
* Disable outputs when unable to set any mode (crashed previously)
|
||||
* Add Code of Conduct
|
||||
* Print version number on startup
|
||||
|
||||
## Release 2.1.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
|
||||
|
|
|
|||
20
Hashes.md
20
Hashes.md
|
|
@ -1,5 +1,25 @@
|
|||
# Hashes
|
||||
|
||||
2.1.0 cagebreak
|
||||
|
||||
* sha 256: 0c90ba529ffc916306a1ca04d4c56a800c62a98d184d3cfcc2ce67dcdffad324
|
||||
* sha 512: 097007da750c8acd09ee63159aeff5a5584cbab45525bd8fe81a379da5cc0e9f2bf776b809122d1b599f4716ef7feb0ccc0cf98be47a71d4819e2a8cd7a2f495
|
||||
|
||||
2.1.0 cagebreak.1
|
||||
|
||||
* sha 256: 6509c9126a9a140c517111f9352bf787a31dd8451fa9976135fc1dfbe40ed23d
|
||||
* sha 512: 96a8c3d5b9677a95255c09b3674559aea7ff130370baa1cce40212501cb288c047048cf9bfbf78bc2cfab35e346fd49ef6b9d5d67f8ab5d07f8991f66e8de3aa
|
||||
|
||||
2.1.0 cagebreak-config.5
|
||||
|
||||
* sha 256: dbccee812d59209ddad73b376bfbb823611e2a8a92078b55e847ab678122bd54
|
||||
* sha 512: a8d0b31007208d7ca38f691ded77d9f13318f47046d9237efd6738d0e10dd8402a35fc48230e72493b17aeeb174cb246440301626a1cd5a48c7d03d0800d0128
|
||||
|
||||
2.1.0 cagebreak-socket.7
|
||||
|
||||
* sha 256: e7b85f15665da4a4422ad223b4b2748ff4315d315a8b108df279ff3b13b8c4c9
|
||||
* sha 512: 01dc53b4867ebc18f0091c3b1a239a89959403686c05e5e22aebf8155a46b82492b9aed27198a78e2777a9ff44b03f6e10ca82283062a29e1fa0114b97bb36a3
|
||||
|
||||
2.0.1 cagebreak
|
||||
|
||||
* sha 256: 3d7cdf511976248614617b1738246a3c5fa94543838e798c0c3a9aec325027b9
|
||||
|
|
|
|||
2
LICENSE
2
LICENSE
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (c) 2020-2022 The Cagebreak authors
|
||||
Copyright (c) 2020-2023 The Cagebreak authors
|
||||
Copyright (c) 2018-2020 Jente Hidskes
|
||||
Copyright (c) 2019 The Sway authors
|
||||
|
||||
|
|
|
|||
82
README.md
82
README.md
|
|
@ -1,6 +1,6 @@
|
|||
# Cagebreak: A Wayland Tiling Compositor
|
||||
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/6532) [](https://repology.org/project/cagebreak/versions) [](https://repology.org/project/cagebreak/versions)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/6532) [](https://repology.org/project/cagebreak/versions) [](https://repology.org/project/cagebreak/versions)
|
||||
|
||||
## Quick Introduction
|
||||
|
||||
|
|
@ -148,7 +148,7 @@ Cagebreak was originally built to suit the needs of its creators. This section o
|
|||
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 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 of explanations for why certain particularities.
|
||||
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
|
||||
|
|
@ -287,6 +287,49 @@ and after
|
|||
#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.
|
||||
|
||||
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
|
||||
|
|
@ -305,7 +348,7 @@ CC=clang meson setup build -Dfuzz=true -Db_sanitize=address,undefined -Db_lundef
|
|||
ninja -C build/
|
||||
mkdir build/fuzz_corpus
|
||||
cp examples/config build/fuzz_corpus/
|
||||
WLR_BACKENDS=headless ./build/fuzz/fuzz-parse -jobs=12 -max_len=50000 -close_fd_mask=3 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.
|
||||
|
|
@ -376,6 +419,8 @@ keys.
|
|||
* 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.
|
||||
|
|
@ -415,8 +460,6 @@ The release procedure outlines the process for a release to occur.
|
|||
* [ ] Adjust version number
|
||||
* [ ] meson.build
|
||||
* [ ] git tag
|
||||
* [ ] man pages
|
||||
* [ ] README.md repology badges minversion
|
||||
* [ ] Relevant Documentation completed
|
||||
* [ ] New features
|
||||
* [ ] man pages
|
||||
|
|
@ -430,16 +473,15 @@ The release procedure outlines the process for a release to occur.
|
|||
* [ ] Check features for SECURITY.md relevance (changes to socket scope
|
||||
for example)
|
||||
* [ ] Synchronize any socket changes to cagebreak-socket man page
|
||||
* [ ] Updated internal wiki
|
||||
* [ ] Added new files to meson.build or hardcoded testing variable
|
||||
* [ ] Fixed bugs documented in Bugs.md
|
||||
* [ ] Include issue discussion from github, where applicable
|
||||
* [ ] Testing
|
||||
* [ ] Manual testing
|
||||
* [ ] Libfuzzer testing
|
||||
* [ ] Build version without xwayland support
|
||||
* [ ] meson.build reproducible build versions are current archlinux libraries and gcc
|
||||
* [ ] Arch Build System is up to date
|
||||
* [ ] wlr_xdg_shell version check
|
||||
* [ ] `ninja -C build clang-format` makes no changes
|
||||
* [ ] `ninja -C build scan-build` shows no issues
|
||||
* [ ] Cagebreak is reproducible on multiple machines
|
||||
* [ ] Documented reproducible build artefacts
|
||||
* [ ] Hashes of the artefacts in Hashes.md
|
||||
|
|
@ -449,6 +491,7 @@ The release procedure outlines the process for a release to occur.
|
|||
* [ ] `gpg --detach-sign -u keyid cagebreak.1`
|
||||
* [ ] `gpg --detach-sign -u keyid cagebreak-config.5`
|
||||
* [ ] `gpg --detach-sign -u keyid cagebreak-socket.7`
|
||||
* [ ] `meson test -C build`
|
||||
* [ ] `git add` relevant files
|
||||
* [ ] `git commit`
|
||||
* [ ] `git push origin development`
|
||||
|
|
@ -568,5 +611,24 @@ see [SECURITY.md](SECURITY.md).
|
|||
|
||||
## License
|
||||
|
||||
MIT, please see [LICENSE](https://github.com/project-repo/cagebreak/blob/master/LICENSE).
|
||||
Copyright (c) 2020-2023 The Cagebreak authors
|
||||
Copyright (c) 2018-2020 Jente Hidskes
|
||||
Copyright (c) 2019 The Sway 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
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ in `keys/` and sign your message with your own key.
|
|||
* B15B92642760E11FE002DE168708D42451A94AB5
|
||||
* F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C
|
||||
* 3ACEA46CCECD59E4C8222F791CBEB493681E8693
|
||||
* 0A268C188D7949FEB39FD1462F2AD980247E4918
|
||||
|
||||
Note that our keys are signed by cagebreak signing keys.
|
||||
|
||||
|
|
@ -62,7 +63,8 @@ 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.
|
||||
has (no) attack surface. Please reference the man pages for details but especially
|
||||
the -e and --bs options.
|
||||
|
||||
#### Spoofing
|
||||
|
||||
|
|
|
|||
52
cagebreak.c
52
cagebreak.c
|
|
@ -1,11 +1,12 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _DEFAULT_SOURCE
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <fontconfig/fontconfig.h>
|
||||
#include <getopt.h>
|
||||
#include <pango.h>
|
||||
#include <pango/pangocairo.h>
|
||||
#include <signal.h>
|
||||
|
|
@ -128,17 +129,26 @@ usage(FILE *file, const char *const cage) {
|
|||
" -e\t\t Enable socket\n"
|
||||
" -h\t\t Display this help message\n"
|
||||
" -s\t\t Show information about the current setup and exit\n"
|
||||
" -v\t\t Show the version number and exit\n",
|
||||
" -v\t\t Show the version number and exit\n"
|
||||
" --bs\t\t \"bad security\": Enable features with potential "
|
||||
"security implications (see man page)\n",
|
||||
cage);
|
||||
}
|
||||
|
||||
static bool
|
||||
parse_args(struct cg_server *server, int argc, char *argv[],
|
||||
char **config_path) {
|
||||
int c;
|
||||
int c, option_index;
|
||||
server->enable_socket = false;
|
||||
while((c = getopt(argc, argv, "c:hvse")) != -1) {
|
||||
static struct option long_options[] = {{"bs", no_argument, 0, 0},
|
||||
{0, 0, 0, 0}};
|
||||
#ifndef __clang_analyzer__
|
||||
while((c = getopt_long(argc, argv, "c:hvse", long_options,
|
||||
&option_index)) != -1) {
|
||||
switch(c) {
|
||||
case 0:
|
||||
server->bs = true;
|
||||
break;
|
||||
case 'h':
|
||||
usage(stdout, argv[0]);
|
||||
return false;
|
||||
|
|
@ -167,6 +177,7 @@ parse_args(struct cg_server *server, int argc, char *argv[],
|
|||
usage(stderr, argv[0]);
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -197,7 +208,7 @@ set_configuration(struct cg_server *server,
|
|||
if(line == NULL) {
|
||||
wlr_log(WLR_ERROR, "Could not allocate buffer for reading "
|
||||
"configuration file.");
|
||||
return 1;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
if(strlen(line) == 0) {
|
||||
|
|
@ -275,6 +286,7 @@ main(int argc, char *argv[]) {
|
|||
wl_list_init(&server.output_priorities);
|
||||
|
||||
int ret = 0;
|
||||
server.bs = 0;
|
||||
|
||||
char *config_path = NULL;
|
||||
if(!parse_args(&server, argc, argv, &config_path)) {
|
||||
|
|
@ -611,7 +623,7 @@ main(int argc, char *argv[]) {
|
|||
wlr_log_errno(WLR_ERROR, "Unable to set WAYLAND_DISPLAY.",
|
||||
"Clients may not be able to connect");
|
||||
} else {
|
||||
fprintf(stderr,
|
||||
fprintf(stdout,
|
||||
"Cagebreak " CG_VERSION " is running on Wayland display %s\n",
|
||||
socket);
|
||||
}
|
||||
|
|
@ -623,7 +635,7 @@ main(int argc, char *argv[]) {
|
|||
if(show_info) {
|
||||
char *msg = server_show_info(&server);
|
||||
if(msg != NULL) {
|
||||
fprintf(stderr, "%s", msg);
|
||||
fprintf(stdout, "%s", msg);
|
||||
free(msg);
|
||||
} else {
|
||||
wlr_log(WLR_ERROR, "Failed to get info on cagebreak setup\n");
|
||||
|
|
@ -632,27 +644,25 @@ main(int argc, char *argv[]) {
|
|||
}
|
||||
|
||||
{ // config_file should only be visible as long as it is valid
|
||||
int conf_ret = 1;
|
||||
char *config_file = get_config_file(config_path);
|
||||
if(config_file == NULL) {
|
||||
wlr_log(WLR_ERROR, "Unable to get path to config file");
|
||||
ret = 1;
|
||||
goto end;
|
||||
}
|
||||
int conf_ret = set_configuration(&server, config_file);
|
||||
|
||||
// Configurtion file not found
|
||||
if(conf_ret != 0) {
|
||||
if(config_file == NULL) {
|
||||
char *default_conf = "/etc/xdg/cagebreak/config";
|
||||
wlr_log(WLR_INFO, "Loading default configuration file: \"%s\"",
|
||||
default_conf);
|
||||
conf_ret = set_configuration(&server, default_conf);
|
||||
} else {
|
||||
conf_ret = 1;
|
||||
}
|
||||
} else {
|
||||
conf_ret = set_configuration(&server, config_file);
|
||||
free(config_file);
|
||||
}
|
||||
|
||||
// Configuration file not found
|
||||
if(conf_ret == 1) {
|
||||
char *default_conf = "/etc/xdg/cagebreak/config";
|
||||
wlr_log(WLR_INFO, "Loading default configuration file: \"%s\"",
|
||||
default_conf);
|
||||
conf_ret = set_configuration(&server, default_conf);
|
||||
}
|
||||
|
||||
free(config_file);
|
||||
if(conf_ret != 0 || !server.running) {
|
||||
ret = 1;
|
||||
goto end;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_CONFIG_H
|
||||
#define CG_CONFIG_H
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX -License-Identifier: MIT
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
named_pipe_send="$(mktemp -u)"
|
||||
named_pipe_recv="$(mktemp -u)"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX -License-Identifier: MIT
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
# This script uses the cagebreak socket to modify the compositor's behaviour in
|
||||
# such a way that the currently focussed tile follows the cursor, i.e. that the
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
# Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
# SPDX -License-Identifier: MIT
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
# This script displays the process names of the views on the current workspace.
|
||||
|
||||
|
|
@ -19,6 +19,7 @@ do
|
|||
curr_workspace="$(echo "${event}"|jq -r ".outputs.${curr_output}.curr_workspace")"
|
||||
# Print the process names of the view on the current workspace. jq retrieves
|
||||
# their PID and ps is then used to retrieve the process names.
|
||||
# shellcheck disable=2046
|
||||
(echo -n "message ";ps -o comm=Command -p $(echo "${event}"|jq -r ".outputs.${curr_output}.workspaces[$((curr_workspace-1))].views[].pid")|tail +2|sed ':a; N; $!ba; s/\n/||/g') >&3
|
||||
break
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
# Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
# SPDX -License-Identifier: MIT
|
||||
# SPDX-License-Identifier: MIT
|
||||
######################
|
||||
# General settings an key bindings
|
||||
######################
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
// This file is used by the fuzzer in order to prevent executing shell commands.
|
||||
|
||||
#define _GNU_SOURCE
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
#include <wlr/render/wlr_renderer.h>
|
||||
|
||||
int
|
||||
fork() {
|
||||
fork(void) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _POSIX_C_SOURCE 200812L
|
||||
|
||||
|
|
@ -88,7 +88,7 @@ drop_permissions(void) {
|
|||
}
|
||||
|
||||
void
|
||||
cleanup() {
|
||||
cleanup(void) {
|
||||
server.running = false;
|
||||
#if CG_HAS_XWAYLAND
|
||||
if(xwayland != NULL) {
|
||||
|
|
@ -251,7 +251,7 @@ LLVMFuzzerInitialize(int *argc, char ***argv) {
|
|||
|
||||
wlr_renderer_init_wl_display(server.renderer, server.wl_display);
|
||||
|
||||
server.bg_color = (float[4]){0, 0, 0, 1};
|
||||
server.bg_color = calloc(4, sizeof(float *));
|
||||
server.output_layout = wlr_output_layout_create();
|
||||
if(!server.output_layout) {
|
||||
wlr_log(WLR_ERROR, "Unable to create output layout");
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_FUZZ_LIB_H
|
||||
#define CG_FUZZ_LIB_H
|
||||
|
|
@ -21,7 +21,7 @@ extern struct wlr_xcursor_manager *xcursor_manager;
|
|||
#endif
|
||||
|
||||
void
|
||||
cleanup();
|
||||
cleanup(void);
|
||||
|
||||
int
|
||||
LLVMFuzzerInitialize(int *argc, char ***argv);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _POSIX_C_SOURCE 200812L
|
||||
|
||||
|
|
@ -29,8 +29,7 @@
|
|||
int
|
||||
set_configuration(struct cg_server *server, char *content) {
|
||||
char *line;
|
||||
for(unsigned int line_num = 1;
|
||||
(line = strtok_r(NULL, "\n", &content)) != NULL; ++line_num) {
|
||||
while((line = strtok_r(NULL, "\n", &content)) != NULL) {
|
||||
line[strcspn(line, "\n")] = '\0';
|
||||
if(*line != '\0' && *line != '#') {
|
||||
char *errstr = NULL;
|
||||
|
|
|
|||
|
|
@ -1,38 +0,0 @@
|
|||
# Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
# SPDX -License-Identifier: MIT
|
||||
|
||||
fuzz_sources = [
|
||||
'fuzz-parse.c',
|
||||
'fuzz-lib.c',
|
||||
]
|
||||
|
||||
fuzz_headers = [
|
||||
'../parse.h',
|
||||
'fuzz-lib.h',
|
||||
]
|
||||
|
||||
inc = include_directories(['..','../build/'])
|
||||
|
||||
fuzz_dependencies = cagebreak_dependencies
|
||||
if fuzzing_engine.found()
|
||||
fuzz_dependencies += fuzzing_engine
|
||||
else
|
||||
link_args = [ '-fsanitize=fuzzer', ]
|
||||
endif
|
||||
|
||||
override_lib = shared_library('execl_override',
|
||||
[ 'execl_override.c' ],
|
||||
dependencies: [ cairo,pango,pangocairo ],
|
||||
install: false
|
||||
)
|
||||
|
||||
executable(
|
||||
'fuzz-parse',
|
||||
fuzz_sources + fuzz_headers + cagebreak_headers + cagebreak_sources,
|
||||
dependencies: fuzz_dependencies,
|
||||
install: false,
|
||||
include_directories: inc,
|
||||
link_args: link_args + fuzz_link_args,
|
||||
c_args: fuzz_compile_args,
|
||||
link_with: override_lib,
|
||||
)
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include <wayland-server-core.h>
|
||||
#include <wlr/types/wlr_idle.h>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
#ifndef CG_IDLE_INHIBIT_H
|
||||
#define CG_IDLE_INHIBIT_H
|
||||
|
||||
|
|
|
|||
2
input.h
2
input.h
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef _CG_INPUT_H
|
||||
#define _CG_INPUT_H
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _POSIX_C_SOURCE 200812L
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_INPUT_MANAGER_H
|
||||
#define CG_INPUT_MANAGER_H
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _DEFAULT_SOURCE
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_IPC_SERVER_H
|
||||
#define CG_IPC_SERVER_H
|
||||
|
|
|
|||
39
keybinding.c
39
keybinding.c
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
|
||||
|
|
@ -699,19 +699,20 @@ keybinding_cycle_views(struct cg_server *server, bool reverse, bool ipc) {
|
|||
|
||||
seat_set_focus(server->seat, next_view);
|
||||
if(ipc) {
|
||||
int curr_id = -1;
|
||||
int curr_pid = -1;
|
||||
if(current_view != NULL &&
|
||||
current_view->link.next != curr_workspace->views.next) {
|
||||
curr_id = current_view->id;
|
||||
curr_pid = current_view->impl->get_pid(current_view);
|
||||
}
|
||||
ipc_send_event(
|
||||
curr_workspace->output->server,
|
||||
"{\"event_name\":\"cycle_views\",\"old_view_id\":%d,\"old_view_"
|
||||
"pid\":%d,"
|
||||
"\"new_view_id\":%d,\"new_view_pid\":%d,\"tile_id\":%d,"
|
||||
"\"workspace\":%d,\"output\":\"%s\",\"output_id\":%d}",
|
||||
current_view->link.next == curr_workspace->views.next
|
||||
? -1
|
||||
: (int)current_view->id,
|
||||
current_view->link.next == curr_workspace->views.next
|
||||
? -1
|
||||
: (int)current_view->impl->get_pid(current_view),
|
||||
next_view == NULL ? -1 : (int)next_view->id,
|
||||
curr_id, curr_pid, next_view == NULL ? -1 : (int)next_view->id,
|
||||
next_view == NULL ? -1 : (int)next_view->impl->get_pid(next_view),
|
||||
next_view->tile->id, curr_workspace->num + 1,
|
||||
curr_workspace->output->wlr_output->name,
|
||||
|
|
@ -867,10 +868,15 @@ print_view(struct cg_view *view) {
|
|||
struct dyn_str outp_str;
|
||||
outp_str.len = 0;
|
||||
outp_str.cur_pos = 0;
|
||||
uint32_t nmemb = 4;
|
||||
uint32_t nmemb = 5;
|
||||
outp_str.str_arr = calloc(nmemb, sizeof(char *));
|
||||
print_str(&outp_str, "\"id\": %d,\n", view->id);
|
||||
print_str(&outp_str, "\"pid\": %d,\n", view->impl->get_pid(view));
|
||||
if(view->server->bs == true) {
|
||||
char *title_str = view->impl->get_title(view);
|
||||
print_str(&outp_str, "\"title\": \"%s\",\n",
|
||||
title_str == NULL ? "" : title_str);
|
||||
}
|
||||
print_str(&outp_str, "\"coords\": {\"x\":%d,\"y\":%d},\n", view->ox,
|
||||
view->oy);
|
||||
#if CG_HAS_XWAYLAND
|
||||
|
|
@ -1180,8 +1186,16 @@ keybinding_dump(struct cg_server *server) {
|
|||
print_str(&str, "\"nws\":%d,\n", server->nws);
|
||||
print_str(&str, "\"bg_color\":[%f,%f,%f],\n", server->bg_color[0],
|
||||
server->bg_color[1], server->bg_color[2]);
|
||||
print_str(&str, "\"views_curr_id\":%d,\n", server->views_curr_id);
|
||||
print_str(&str, "\"tiles_curr_id\":%d,\n", server->tiles_curr_id);
|
||||
struct cg_view *focused_view = seat_get_focus(server->seat);
|
||||
int curr_view_id = -1, curr_tile_id = -1;
|
||||
if(focused_view != NULL) {
|
||||
curr_view_id = focused_view->id;
|
||||
if(focused_view->tile != NULL) {
|
||||
curr_tile_id = focused_view->tile->id;
|
||||
}
|
||||
}
|
||||
print_str(&str, "\"views_curr_id\":%d,\n", curr_view_id);
|
||||
print_str(&str, "\"tiles_curr_id\":%d,\n", curr_tile_id);
|
||||
print_str(&str, "\"curr_output\":\"%s\",\n",
|
||||
server->curr_output->wlr_output->name);
|
||||
print_str(&str, "\"default_mode\":\"%s\",\n",
|
||||
|
|
@ -1784,9 +1798,6 @@ run_action(enum keybinding_action action, struct cg_server *server,
|
|||
server->curr_output->workspaces[server->curr_output->curr_workspace]
|
||||
->focused_tile->view);
|
||||
break;
|
||||
case KEYBINDING_FOCUS_TILE:
|
||||
keybinding_focus_tile(server, data.u);
|
||||
break;
|
||||
default: {
|
||||
wlr_log(WLR_ERROR,
|
||||
"run_action was called with a value not present in \"enum "
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef KEYBINDING_H
|
||||
|
||||
|
|
@ -74,7 +74,6 @@ struct cg_server;
|
|||
KEYBINDING(KEYBINDING_FOCUS_RIGHT, focusright) \
|
||||
KEYBINDING(KEYBINDING_FOCUS_TOP, focusup) \
|
||||
KEYBINDING(KEYBINDING_FOCUS_BOTTOM, focusdown) \
|
||||
KEYBINDING(KEYBINDING_FOCUS_TILE, focus_tile) \
|
||||
\
|
||||
KEYBINDING(KEYBINDING_DEFINEKEY, \
|
||||
definekey) /* data.kb is the keybinding definition */ \
|
||||
|
|
|
|||
|
|
@ -1,76 +1,87 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
PbvoKi4FeWdszeakeWuqdmKEi/+ltIk=
|
||||
=uqsg
|
||||
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-----
|
||||
|
|
|
|||
76
keys/cagebreak@project-repo.co.pub-legacy-3
Normal file
76
keys/cagebreak@project-repo.co.pub-legacy-3
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
PbvoKi4FeWdszeakeWuqdmKEi/+ltIk=
|
||||
=uqsg
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
64
keys/cagebreak_signing_key_11@project-repo.co.pub
Normal file
64
keys/cagebreak_signing_key_11@project-repo.co.pub
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=aQvd
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
64
keys/cagebreak_signing_key_12@project-repo.co.pub
Normal file
64
keys/cagebreak_signing_key_12@project-repo.co.pub
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=ZVRm
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include "input.h"
|
||||
#include "input_manager.h"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
cagebreak-config(5) "Version 2.0.1" "Cagebreak Manual"
|
||||
cagebreak-config(5) "Version 2.1.0" "Cagebreak Manual"
|
||||
|
||||
# NAME
|
||||
|
||||
|
|
@ -420,6 +420,7 @@ GPG Fingerprints:
|
|||
- B15B92642760E11FE002DE168708D42451A94AB5
|
||||
- F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C
|
||||
- 3ACEA46CCECD59E4C8222F791CBEB493681E8693
|
||||
- 0A268C188D7949FEB39FD1462F2AD980247E4918
|
||||
|
||||
# LICENSE
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
cagebreak-socket(7) "Version 2.0.1" "Cagebreak Manual"
|
||||
cagebreak-socket(7) "Version 2.1.0" "Cagebreak Manual"
|
||||
|
||||
# NAME
|
||||
|
||||
|
|
@ -582,6 +582,7 @@ GPG Fingerprints:
|
|||
- B15B92642760E11FE002DE168708D42451A94AB5
|
||||
- F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C
|
||||
- 3ACEA46CCECD59E4C8222F791CBEB493681E8693
|
||||
- 0A268C188D7949FEB39FD1462F2AD980247E4918
|
||||
|
||||
# LICENSE
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
cagebreak(1) "Version 2.0.1" "Cagebreak Manual"
|
||||
cagebreak(1) "Version 2.1.0" "Cagebreak Manual"
|
||||
|
||||
# NAME
|
||||
|
||||
|
|
@ -47,6 +47,12 @@ are displayed in a message box at the top right of the screen.
|
|||
*-v*
|
||||
Show version number and exit
|
||||
|
||||
*--bs*
|
||||
"bad security". Enable features with potential security implications.
|
||||
Currently, this option has the following effects (possible implications
|
||||
in parentheses):
|
||||
- Print view titles in `dump` output (an attacker may be able to read sensitive information contained in the view title).
|
||||
|
||||
# ENVIRONMENT
|
||||
|
||||
*CAGEBREAK_SOCKET*
|
||||
|
|
@ -84,6 +90,7 @@ GPG Fingerprints:
|
|||
- B15B92642760E11FE002DE168708D42451A94AB5
|
||||
- F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C
|
||||
- 3ACEA46CCECD59E4C8222F791CBEB493681E8693
|
||||
- 0A268C188D7949FEB39FD1462F2AD980247E4918
|
||||
|
||||
# LICENSE
|
||||
|
||||
|
|
|
|||
73
meson.build
73
meson.build
|
|
@ -1,9 +1,9 @@
|
|||
# Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
# SPDX -License-Identifier: MIT
|
||||
# SPDX-License-Identifier: MIT
|
||||
project(
|
||||
'cagebreak',
|
||||
'c',
|
||||
version : '2.0.1',
|
||||
version : '2.1.0',
|
||||
license : 'MIT',
|
||||
default_options : ['c_std=c11', 'warning_level=3']
|
||||
)
|
||||
|
|
@ -204,15 +204,15 @@ reproducible_build_versions = {
|
|||
'wayland_server': '1.19.0',
|
||||
'wayland_client': '1.21.0',
|
||||
'wayland_cursor': '1.21.0',
|
||||
'wlroots': '0.16.1',
|
||||
'wlroots': '0.16.2',
|
||||
'xkbcommon': '1.5.0',
|
||||
'fontconfig': '2.14.1',
|
||||
'libinput': '1.22.0',
|
||||
'fontconfig': '2.14.2',
|
||||
'libinput': '1.23.0',
|
||||
'libevdev': '1.13.0',
|
||||
'libudev': '252',
|
||||
'pango': '1.50.12',
|
||||
'cairo': '1.17.6',
|
||||
'pangocairo': '1.50.12',
|
||||
'libudev': '253',
|
||||
'pango': '1.50.14',
|
||||
'cairo': '1.17.8',
|
||||
'pangocairo': '1.50.14',
|
||||
'math': '-1'
|
||||
}
|
||||
|
||||
|
|
@ -238,7 +238,7 @@ foreach name, dep : cagebreak_dependencies_dict
|
|||
endforeach
|
||||
|
||||
reproducible_build_compiler = 'gcc'
|
||||
reproducible_build_compiler_version = '12.2.0'
|
||||
reproducible_build_compiler_version = '12.2.1'
|
||||
|
||||
if cc.get_id() != reproducible_build_compiler
|
||||
warning('The compiler "' + cc.get_id() + '" differs from the one used to generate to binary specified in Hashes.md (' + reproducible_build_compiler + ').')
|
||||
|
|
@ -256,10 +256,11 @@ executable(
|
|||
)
|
||||
|
||||
install_data('examples/config', install_dir : '/etc/xdg/cagebreak')
|
||||
install_data('LICENSE', install_dir : '/usr/share/licenses/' + meson.project_name() + '/')
|
||||
|
||||
if get_option('man-pages')
|
||||
scdoc = find_program('scdoc')
|
||||
secssinceepoch = 1673282376
|
||||
secssinceepoch = 1680540192
|
||||
shcommand = 'export SOURCE_DATE_EPOCH=' + secssinceepoch.to_string() + ' ; @0@ < @INPUT@'.format(scdoc.path())
|
||||
sh = find_program('sh')
|
||||
mandir1 = join_paths(get_option('mandir'), 'man1')
|
||||
|
|
@ -294,8 +295,44 @@ if get_option('man-pages')
|
|||
)
|
||||
endif
|
||||
|
||||
fuzz_sources = [
|
||||
'fuzz/fuzz-parse.c',
|
||||
'fuzz/fuzz-lib.c',
|
||||
]
|
||||
|
||||
fuzz_headers = [
|
||||
'parse.h',
|
||||
'fuzz/fuzz-lib.h',
|
||||
]
|
||||
|
||||
fuzz_override_lib = [ 'fuzz/execl_override.c' ]
|
||||
|
||||
if get_option('fuzz')
|
||||
subdir('fuzz')
|
||||
inc = include_directories(['.','build/'])
|
||||
|
||||
fuzz_dependencies = cagebreak_dependencies
|
||||
if fuzzing_engine.found()
|
||||
fuzz_dependencies += fuzzing_engine
|
||||
else
|
||||
link_args = [ '-fsanitize=fuzzer', ]
|
||||
endif
|
||||
|
||||
override_lib = shared_library('execl_override',
|
||||
[ fuzz_override_lib ],
|
||||
dependencies: [ cairo,pango,pangocairo ],
|
||||
install: false
|
||||
)
|
||||
|
||||
executable(
|
||||
'fuzz-parse',
|
||||
fuzz_sources + fuzz_headers + cagebreak_headers + cagebreak_sources,
|
||||
dependencies: fuzz_dependencies,
|
||||
install: false,
|
||||
include_directories: inc,
|
||||
link_args: link_args + fuzz_link_args,
|
||||
c_args: fuzz_compile_args,
|
||||
link_with: override_lib,
|
||||
)
|
||||
endif
|
||||
|
||||
summary = [
|
||||
|
|
@ -306,3 +343,15 @@ summary = [
|
|||
''
|
||||
]
|
||||
message('\n'.join(summary))
|
||||
|
||||
# Test Suite
|
||||
|
||||
test('Build without warnings', find_program('test/build-w-o-warnings'), 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('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('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')
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
# Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
# SPDX -License-Identifier: MIT
|
||||
# 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')
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include <cairo/cairo.h>
|
||||
#include <drm_fourcc.h>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef MESSAGE_H
|
||||
|
||||
|
|
|
|||
2
output.c
2
output.c
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
|
||||
|
|
|
|||
2
output.h
2
output.h
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_OUTPUT_H
|
||||
#define CG_OUTPUT_H
|
||||
|
|
|
|||
2
pango.c
2
pango.c
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include <cairo.h>
|
||||
#include <cairo/cairo.h>
|
||||
|
|
|
|||
2
pango.h
2
pango.h
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef _SWAY_PANGO_H
|
||||
#define _SWAY_PANGO_H
|
||||
|
|
|
|||
19
parse.c
19
parse.c
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _POSIX_C_SOURCE 200812L
|
||||
|
||||
|
|
@ -786,23 +786,6 @@ parse_command(struct cg_server *server, struct keybinding *keybinding,
|
|||
keybinding->action = KEYBINDING_SHOW_INFO;
|
||||
} else if(strcmp(action, "close") == 0) {
|
||||
keybinding->action = KEYBINDING_CLOSE_VIEW;
|
||||
} else if(strcmp(action, "focus_tile") == 0) {
|
||||
keybinding->action = KEYBINDING_FOCUS_TILE;
|
||||
char *nws_str = strtok_r(NULL, " ", &saveptr);
|
||||
if(nws_str == NULL) {
|
||||
*errstr = log_error(
|
||||
"Expected argument for \"focus_tile\" action, got none.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
long tile_id = strtol(nws_str, NULL, 10);
|
||||
if(tile_id < 1) {
|
||||
*errstr = log_error(
|
||||
"Tile id for focus_tile must be a positive integer. Got %l\n",
|
||||
tile_id);
|
||||
return -1;
|
||||
}
|
||||
keybinding->data.u = tile_id;
|
||||
} else if(strcmp(action, "focus") == 0) {
|
||||
keybinding->action = KEYBINDING_CYCLE_TILES;
|
||||
keybinding->data.b = false;
|
||||
|
|
|
|||
2
parse.h
2
parse.h
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef PARSE_H
|
||||
|
||||
|
|
|
|||
11
seat.c
11
seat.c
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _POSIX_C_SOURCE 200812L
|
||||
|
||||
|
|
@ -214,8 +214,11 @@ handle_command_key_bindings(struct cg_server *server, xkb_keysym_t sym,
|
|||
wlr_scene_buffer_from_node(node));
|
||||
if(scene_surface != NULL) {
|
||||
surface = scene_surface->surface;
|
||||
if(surface != NULL) {
|
||||
wlr_seat_pointer_notify_enter(wlr_seat, surface, sx,
|
||||
sy);
|
||||
}
|
||||
}
|
||||
wlr_seat_pointer_notify_enter(wlr_seat, surface, sx, sy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -701,8 +704,10 @@ process_cursor_motion(struct cg_seat *seat, uint32_t time) {
|
|||
wlr_scene_surface_from_buffer(wlr_scene_buffer_from_node(node));
|
||||
if(scene_surface != NULL) {
|
||||
surface = scene_surface->surface;
|
||||
if(surface != NULL) {
|
||||
wlr_seat_pointer_notify_enter(wlr_seat, surface, sx, sy);
|
||||
}
|
||||
}
|
||||
wlr_seat_pointer_notify_enter(wlr_seat, surface, sx, sy);
|
||||
|
||||
bool focus_changed = wlr_seat->pointer_state.focused_surface != surface;
|
||||
if(!focus_changed && time > 0) {
|
||||
|
|
|
|||
2
seat.h
2
seat.h
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_SEAT_H
|
||||
#define CG_SEAT_H
|
||||
|
|
|
|||
10
server.c
10
server.c
|
|
@ -1,11 +1,5 @@
|
|||
/*
|
||||
* Cagebreak: A Wayland tiling compositor.
|
||||
*
|
||||
* Copyright (C) 2020-2022 The Cagebreak Authors
|
||||
* Copyright (C) 2018-2019 Jente Hidskes
|
||||
*
|
||||
* See the LICENSE file accompanying this file.
|
||||
*/
|
||||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
|
||||
|
|
|
|||
4
server.h
4
server.h
|
|
@ -1,3 +1,6 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_SERVER_H
|
||||
#define CG_SERVER_H
|
||||
|
||||
|
|
@ -54,6 +57,7 @@ struct cg_server {
|
|||
struct cg_ipc_handle ipc;
|
||||
|
||||
bool enable_socket;
|
||||
bool bs;
|
||||
bool running;
|
||||
char **modes;
|
||||
uint16_t nws;
|
||||
|
|
|
|||
BIN
signatures/2.0.1-cagebreak-config.5.sig
Normal file
BIN
signatures/2.0.1-cagebreak-config.5.sig
Normal file
Binary file not shown.
BIN
signatures/2.0.1-cagebreak-socket.7.sig
Normal file
BIN
signatures/2.0.1-cagebreak-socket.7.sig
Normal file
Binary file not shown.
BIN
signatures/2.0.1-cagebreak.1.sig
Normal file
BIN
signatures/2.0.1-cagebreak.1.sig
Normal file
Binary file not shown.
BIN
signatures/2.0.1-cagebreak.sig
Normal file
BIN
signatures/2.0.1-cagebreak.sig
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
63
test/arguments
Normal file
63
test/arguments
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
#!/bin/bash
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
testdir="${MESONCURRENTCONFIGDIR}/_build-arguments/"
|
||||
mkdir "${testdir}"
|
||||
mkdir "${testdir}/arguments/"
|
||||
|
||||
readonly helptext="Usage: ./cagebreak [OPTIONS]
|
||||
|
||||
-c <path> Load configuration file from <path>
|
||||
-e Enable socket
|
||||
-h Display this help message
|
||||
-s Show information about the current setup and exit
|
||||
-v Show the version number and exit
|
||||
--bs \"bad security\": Enable features with potential security implications (see man page)"
|
||||
|
||||
readonly basicheadless="Cagebreak ${1} is running on Wayland display wayland-.*
|
||||
Outputs:
|
||||
\\* HEADLESS-1
|
||||
Inputs:"
|
||||
|
||||
RESULT=0
|
||||
|
||||
# check -c option
|
||||
## Check without config file
|
||||
[[ $(2>&1 ./cagebreak -c | head -1 ) = "./cagebreak: option requires an argument -- 'c'" ]] || RESULT=1
|
||||
[[ $(2>&1 ./cagebreak -c | tail -n +2 ) = "$helptext" ]] || RESULT=1
|
||||
## Check with config file
|
||||
cp "${MESONCURRENTCONFIGDIR}/test/testing-configurations/-c-config" "${testdir}/arguments/"
|
||||
sed -i "s|CONFIGPATH|${testdir}\/arguments\/result|g" "${testdir}/arguments/-c-config"
|
||||
WLR_BACKENDS=headless ./cagebreak -c "${testdir}/arguments/-c-config"
|
||||
sync
|
||||
[[ $(cat "${testdir}/arguments/result") = "SUCCESS" ]] || RESULT=1
|
||||
|
||||
# check -e option
|
||||
## Check without socket
|
||||
cp "${MESONCURRENTCONFIGDIR}/test/testing-configurations/config" "${testdir}/arguments"
|
||||
readonly oldsocket=$CAGEBREAK_SOCKET
|
||||
sed -i "s|CONFIGPATH|${testdir}\/arguments\/socket|g" "${testdir}/arguments/config"
|
||||
(WLR_BACKENDS=headless ./cagebreak -c "${testdir}/arguments/config")
|
||||
sync
|
||||
[[ $(cat "${testdir}/arguments/socket") = "${oldsocket}" ]] || RESULT=1
|
||||
## Check with socket
|
||||
cp "${MESONCURRENTCONFIGDIR}/test/testing-configurations/config" "${testdir}/arguments"
|
||||
sed -i "s|CONFIGPATH|$testdir\/arguments\/socket|g" "${testdir}/arguments/config"
|
||||
(WLR_BACKENDS=headless ./cagebreak -e -c "${testdir}/arguments/config")
|
||||
sync
|
||||
[[ ! $(cat "${testdir}/arguments/socket") = "${oldsocket}" ]] || RESULT=1
|
||||
|
||||
# check -h option
|
||||
[[ $(./cagebreak -h) = "$helptext" ]] || RESULT=1
|
||||
|
||||
# check -s option
|
||||
[[ $(WLR_BACKENDS=headless ./cagebreak -s) =~ ${basicheadless} ]] || RESULT=1
|
||||
|
||||
|
||||
# check -v option
|
||||
[[ $(./cagebreak -v) = "Cagebreak version $1" ]] || RESULT=1
|
||||
|
||||
rm -rf "${testdir}"
|
||||
|
||||
exit "${RESULT}"
|
||||
15
test/build-w-o-warnings
Normal file
15
test/build-w-o-warnings
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#! /bin/sh
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
RESULT=0
|
||||
|
||||
# shellcheck disable=SC2164
|
||||
cd "${MESONCURRENTCONFIGDIR}"
|
||||
echo "Build standard release build"
|
||||
rm -rf _build-w-o-warnings
|
||||
meson setup _build-w-o-warnings -Dxwayland=true -Dman-pages=true --buildtype=release --fatal-meson-warnings || RESULT=1
|
||||
ninja -C _build-w-o-warnings || RESULT=1
|
||||
rm -rf _build-w-o-warnings
|
||||
|
||||
exit "${RESULT}"
|
||||
15
test/build-w-o-xwayland
Normal file
15
test/build-w-o-xwayland
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#! /bin/sh
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
RESULT=0
|
||||
|
||||
# shellcheck disable=2164
|
||||
cd "${MESONCURRENTCONFIGDIR}"
|
||||
echo "Build without xwayland"
|
||||
rm -rf _build-w-o-xwayland
|
||||
meson setup _build-w-o-xwayland -Dxwayland=false -Dman-pages=false --buildtype=release --fatal-meson-warnings || RESULT=1
|
||||
ninja -C _build-w-o-xwayland || RESULT=1
|
||||
rm -rf _build-w-o-xwayland
|
||||
|
||||
exit "${RESULT}"
|
||||
26
test/clang-format
Normal file
26
test/clang-format
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#! /bin/sh
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
readonly declared_deps="${*}"
|
||||
readonly deps="${declared_deps}"
|
||||
|
||||
RESULT=0
|
||||
|
||||
set -x
|
||||
|
||||
echo "${MESONCURRENTCONFIGDIR}"
|
||||
|
||||
for file in ${deps}
|
||||
do
|
||||
echo "${file}"
|
||||
if (clang-format -Werror --dry-run "${MESONCURRENTCONFIGDIR}/${file}")
|
||||
then
|
||||
echo " [x] clang-format"
|
||||
else
|
||||
RESULT=1
|
||||
echo " [ ] clang-format"
|
||||
fi
|
||||
done
|
||||
|
||||
exit "${RESULT}"
|
||||
48
test/copyright-license
Normal file
48
test/copyright-license
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
#! /bin/bash
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
readonly declared_deps="${*}"
|
||||
readonly hardcoded_deps="meson_options.txt meson.build"
|
||||
# shellcheck disable=2155,2164,2046
|
||||
readonly test_deps=$(cd "${MESONCURRENTCONFIGDIR}" ; find . -type f | grep test/)
|
||||
# shellcheck disable=2155,2164,2046
|
||||
readonly examples_deps=$(cd "${MESONCURRENTCONFIGDIR}" ; find . -type f | grep examples/)
|
||||
# shellcheck disable=2155,2164,2046
|
||||
readonly example_scripts_deps=$(cd "${MESONCURRENTCONFIGDIR}" ; find . -type f | grep example_scripts/)
|
||||
readonly deps="${declared_deps} ${hardcoded_deps} ${test_deps} ${examples_deps} ${example_scripts_deps}"
|
||||
# shellcheck disable=2046,2155
|
||||
readonly curryear=$(date +%Y)
|
||||
|
||||
RESULT=0
|
||||
|
||||
for file in ${deps}
|
||||
do
|
||||
echo "${file}"
|
||||
if (grep -q "Copyright.*${curryear}, project-repo and the cagebreak contributors" "$MESONCURRENTCONFIGDIR/${file}")
|
||||
then
|
||||
echo " [x] Copyright Notice"
|
||||
else
|
||||
RESULT=1
|
||||
echo " [ ] Copyright Notice"
|
||||
fi
|
||||
if (grep -q "SPDX-License-Identifier: MIT" "$MESONCURRENTCONFIGDIR/${file}")
|
||||
then
|
||||
echo " [x] SPDX-License-Identifier"
|
||||
else
|
||||
RESULT=1
|
||||
echo " [ ] SPDX-License-Identifier"
|
||||
fi
|
||||
done
|
||||
|
||||
[[ "${MESONLICENSE}" = "MIT" ]] || RESULT=1
|
||||
|
||||
# shellcheck disable=2164
|
||||
cd "${MESONCURRENTCONFIGDIR}"
|
||||
|
||||
# shellcheck disable=2046,2002
|
||||
[[ $(cat LICENSE) = $( cat README.md | tail -$(wc -l LICENSE)) ]] || RESULT=1
|
||||
|
||||
[[ "Copyright (c) 2020-${curryear} The Cagebreak authors" = $( head -1 LICENSE) ]] || RESULT=1
|
||||
|
||||
exit "${RESULT}"
|
||||
39
test/environment-variables
Normal file
39
test/environment-variables
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
#!/bin/bash
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
testdir="${MESONCURRENTCONFIGDIR}/_build-envvars"
|
||||
mkdir "${testdir}"
|
||||
mkdir "${testdir}/envvars/"
|
||||
mkdir "${testdir}/cagebreak"
|
||||
|
||||
RESULT=0
|
||||
|
||||
# CAGEBREAK_SOCKET (duplicate of arguments test)
|
||||
## Check without socket
|
||||
cp "${MESONCURRENTCONFIGDIR}/test/testing-configurations/config" "${testdir}/envvars"
|
||||
readonly oldsocket="${CAGEBREAK_SOCKET}"
|
||||
sed -i "s|CONFIGPATH|$testdir\/envvars\/socket|g" "${testdir}/envvars/config"
|
||||
(WLR_BACKENDS=headless ./cagebreak -c "${testdir}/envvars/config")
|
||||
sync
|
||||
[[ $(cat "${testdir}/envvars/socket") = "${oldsocket}" ]] || RESULT=1
|
||||
## Check with socket
|
||||
cp "${MESONCURRENTCONFIGDIR}/test/testing-configurations/config" "${testdir}/envvars"
|
||||
sed -i "s|CONFIGPATH|$testdir\/envvars\/socket|g" "${testdir}/envvars/config"
|
||||
(WLR_BACKENDS=headless ./cagebreak -e -c "${testdir}/envvars/config")
|
||||
sync
|
||||
[[ ! $(cat "${testdir}/socket") = "${oldsocket}" ]] || RESULT=1
|
||||
|
||||
# XDG_CONFIG_HOME
|
||||
cp "${MESONCURRENTCONFIGDIR}/test/testing-configurations/env-var-config" "${testdir}/cagebreak/config"
|
||||
sed -i "s|CONFIGPATH|${testdir}\/cagebreak\/result|g" "${testdir}/cagebreak/config"
|
||||
XDG_CONFIG_HOME="${testdir}/" WLR_BACKENDS=headless ./cagebreak
|
||||
sync
|
||||
[[ $(cat "${testdir}/cagebreak/result") = "SUCCESS" ]] || RESULT=1
|
||||
|
||||
# The XKB_DEFAULT_* family of variables is not found in the source code
|
||||
# of Cagebreak but necessary to configure software for use with Cagebreak.
|
||||
|
||||
rm -rf "${testdir}"
|
||||
|
||||
exit "${RESULT}"
|
||||
29
test/illegal-strings
Normal file
29
test/illegal-strings
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#!/bin/bash
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
RESULT=0
|
||||
|
||||
# shellcheck disable=2164
|
||||
cd "${MESONCURRENTCONFIGDIR}"
|
||||
|
||||
# Check that no TODO statements remain in the release directory
|
||||
if ! grep -Rq "TODO" .
|
||||
then
|
||||
echo "[x] TODO"
|
||||
else
|
||||
RESULT=1
|
||||
echo "[ ] TODO"
|
||||
fi
|
||||
|
||||
# Check that Cagebreak does not falsely claim to be POSIX compliant
|
||||
if ! grep -Rq "_POSIX_C_SOURCE" .
|
||||
then
|
||||
echo "[x] _POSIX_C_SOURCE"
|
||||
else
|
||||
RESULT=1
|
||||
echo "[ ] _POSIX_C_SOURCE"
|
||||
fi
|
||||
|
||||
|
||||
exit "${RESULT}"
|
||||
14
test/scan-build
Normal file
14
test/scan-build
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
RESULT=0
|
||||
|
||||
# shellcheck disable=2164
|
||||
cd "${MESONCURRENTCONFIGDIR}"
|
||||
rm -rf _build-scan-build
|
||||
meson setup _build-scan-build -Dxwayland=true -Dman-pages=true --buildtype=release || RESULT=1
|
||||
SCANBUILD="$(pwd)/test/testing-configurations/my-scan-build" ninja -C _build-scan-build scan-build || RESULT=1
|
||||
rm -rf _build-scan-build
|
||||
|
||||
exit "${RESULT}"
|
||||
16
test/shellcheck
Normal file
16
test/shellcheck
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
RESULT=0
|
||||
|
||||
set -x
|
||||
# shellcheck disable=2164
|
||||
cd "${MESONCURRENTCONFIGDIR}/test"
|
||||
# shellcheck disable=2046
|
||||
shellcheck --source-path=../example_scripts/ $(ls -Itesting-configurations) || RESULT=1
|
||||
|
||||
cd "${MESONCURRENTCONFIGDIR}/example_scripts/" || RESULT=1
|
||||
shellcheck ./*
|
||||
|
||||
exit "${RESULT}"
|
||||
4
test/testing-configurations/-c-config
Normal file
4
test/testing-configurations/-c-config
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
exec (echo "SUCCESS" > CONFIGPATH )
|
||||
quit
|
||||
4
test/testing-configurations/config
Normal file
4
test/testing-configurations/config
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
exec (echo $CAGEBREAK_SOCKET > CONFIGPATH)
|
||||
quit
|
||||
4
test/testing-configurations/env-var-config
Normal file
4
test/testing-configurations/env-var-config
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
exec (echo "SUCCESS" > CONFIGPATH )
|
||||
quit
|
||||
5
test/testing-configurations/my-scan-build
Executable file
5
test/testing-configurations/my-scan-build
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
scan-build --status-bugs "$@"
|
||||
42
test/versions
Normal file
42
test/versions
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
# Copyright 2023, project-repo and the cagebreak contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
readonly newversion="${1}"
|
||||
# shellcheck disable=2155
|
||||
readonly oldversion=$(git describe --match=master --abbrev=0)
|
||||
|
||||
RESULT=0
|
||||
|
||||
# meson.build version
|
||||
if [[ $(vercmp "${newversion}" "${oldversion}") -gt 0 ]]
|
||||
then
|
||||
echo "[x] meson.build version respects semantic versioning"
|
||||
else
|
||||
RESULT=1
|
||||
echo "[ ] meson.build version is NOT semantic version"
|
||||
fi
|
||||
|
||||
# shellcheck disable=2164
|
||||
cd "${MESONCURRENTCONFIGDIR}"
|
||||
|
||||
for file in man/*
|
||||
do
|
||||
if [[ $(head -1 "${file}" | cut -d ' ' -f 3 | rev | cut -c2- | rev ) = "${newversion}" ]]
|
||||
then
|
||||
echo "[x] ${file} version is meson.build version"
|
||||
else
|
||||
RESULT=1
|
||||
echo "[ ] ${file} version is NOT meson.build version"
|
||||
fi
|
||||
done
|
||||
|
||||
if head -3 README.md | tail -1 | grep -q "minversion=${newversion}"
|
||||
then
|
||||
echo "[x] README.md repology minversion"
|
||||
else
|
||||
RESULT=1
|
||||
echo "[ ] README.md repology minversion"
|
||||
fi
|
||||
|
||||
exit "${RESULT}"
|
||||
2
util.c
2
util.c
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include <wlr/util/box.h>
|
||||
|
||||
|
|
|
|||
2
util.h
2
util.h
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_UTIL_H
|
||||
#define CG_UTIL_H
|
||||
|
|
|
|||
2
view.c
2
view.c
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
|
||||
|
|
|
|||
3
view.h
3
view.h
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_VIEW_H
|
||||
#define CG_VIEW_H
|
||||
|
|
@ -39,6 +39,7 @@ struct cg_view {
|
|||
|
||||
struct cg_view_impl {
|
||||
pid_t (*get_pid)(const struct cg_view *view);
|
||||
char *(*get_title)(const struct cg_view *view);
|
||||
bool (*is_primary)(const struct cg_view *view);
|
||||
void (*activate)(struct cg_view *view, bool activate);
|
||||
void (*close)(struct cg_view *view);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_WORKSPACE_H
|
||||
#define CG_WORKSPACE_H
|
||||
|
|
|
|||
10
xdg_shell.c
10
xdg_shell.c
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
|
||||
|
|
@ -110,6 +110,13 @@ get_pid(const struct cg_view *view) {
|
|||
return pid;
|
||||
}
|
||||
|
||||
static char *
|
||||
get_title(const struct cg_view *view) {
|
||||
const struct cg_xdg_shell_view *xdg_shell_view =
|
||||
xdg_shell_view_from_const_view(view);
|
||||
return xdg_shell_view->xdg_surface->toplevel->title;
|
||||
}
|
||||
|
||||
static bool
|
||||
is_primary(const struct cg_view *view) {
|
||||
const struct cg_xdg_shell_view *xdg_shell_view =
|
||||
|
|
@ -208,6 +215,7 @@ handle_xdg_shell_surface_destroy(struct wl_listener *listener, void *_data) {
|
|||
}
|
||||
|
||||
static const struct cg_view_impl xdg_shell_view_impl = {.get_pid = get_pid,
|
||||
.get_title = get_title,
|
||||
.is_primary =
|
||||
is_primary,
|
||||
.activate = activate,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_XDG_SHELL_H
|
||||
#define CG_XDG_SHELL_H
|
||||
|
|
|
|||
10
xwayland.c
10
xwayland.c
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include "config.h"
|
||||
|
||||
|
|
@ -46,6 +46,13 @@ get_pid(const struct cg_view *view) {
|
|||
return surf->pid;
|
||||
}
|
||||
|
||||
static char *
|
||||
get_title(const struct cg_view *view) {
|
||||
const struct cg_xwayland_view *xwayland_view =
|
||||
xwayland_view_from_const_view(view);
|
||||
return xwayland_view->xwayland_surface->title;
|
||||
}
|
||||
|
||||
static bool
|
||||
is_primary(const struct cg_view *view) {
|
||||
const struct cg_xwayland_view *xwayland_view =
|
||||
|
|
@ -157,6 +164,7 @@ handle_xwayland_surface_destroy(struct wl_listener *listener, void *_data) {
|
|||
}
|
||||
|
||||
static const struct cg_view_impl xwayland_view_impl = {
|
||||
.get_title = get_title,
|
||||
.get_pid = get_pid,
|
||||
.is_primary = is_primary,
|
||||
.activate = activate,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2020 - 2023, project-repo and the cagebreak contributors
|
||||
// SPDX -License-Identifier: MIT
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef CG_XWAYLAND_H
|
||||
#define CG_XWAYLAND_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue