mirror of
https://cagebreak.project-repo.co/cagebreak.git
synced 2026-08-09 07:09:11 +02:00
Release 1.5.0
- Add output enable/disable support (see Issue 22) - Add new gpg signing keys - Fix Issue 23 - Fix Issue 24
This commit is contained in:
parent
def6d66341
commit
ba7b69fa3c
20 changed files with 406 additions and 90 deletions
32
Bugs.md
32
Bugs.md
|
|
@ -265,3 +265,35 @@ when scanning out views.
|
|||
|
||||
Cagebreak up to and including release 1.4.3 sometimes had null pointer
|
||||
dereferences on view destroy.
|
||||
|
||||
### Issue 22
|
||||
|
||||
* github issue number: #2
|
||||
* Fixed: 1.5.0
|
||||
|
||||
Cagebreak up to and including release 1.4.4 did not offer any means to disable
|
||||
outputs. This option is now added to output. See cagebreak-config man page for
|
||||
details.
|
||||
|
||||
Github issue text:
|
||||
|
||||
```
|
||||
Hello, I have two outputs (or heads) eDP-1 and HDMA-A-1, and always want to disable eDP-1, how to do it?
|
||||
|
||||
Thank you!
|
||||
```
|
||||
|
||||
### Issue 23
|
||||
|
||||
* github issue number: N/A
|
||||
* Fixed: 1.5.0
|
||||
|
||||
Cagebreak up to and including release 1.4.4 had a potential use-after-free bug.
|
||||
|
||||
### Issue 24
|
||||
|
||||
* github issue number: N/A
|
||||
* Fixed: 1.5.0
|
||||
|
||||
Cagebreak up to and including release 1.4.4 could have focussed views without tiles.
|
||||
|
||||
|
|
|
|||
11
README.md
11
README.md
|
|
@ -180,6 +180,11 @@ ninja -C build
|
|||
|
||||
For every release after 1.0.5, hashes will be provided.
|
||||
|
||||
1.5.0
|
||||
|
||||
* sha 256: 22010e2916493b0d7cfb08c2196f12589509ce11010a7107aed13ddbfd9709cc
|
||||
* sha 512: 707d6cc01326ba32402f9fb402ff8aceaeaba63ca6ba2eb157e5a4c83123515a3a74da960813479db303eddc2e7f79f39b241dff05b89d47d72d5f1d20ca6d37
|
||||
|
||||
1.4.4
|
||||
|
||||
* sha 256: c6e08e19feb17f768e136cf02f5692ef121ff289763dc60ef8678103803d3307
|
||||
|
|
@ -266,6 +271,8 @@ keys.
|
|||
* 4739D329C9187A1C2795C20A02ABFDEC3A40545F
|
||||
* 7535AB89220A5C15A728B75F74104CC7DCA5D7A8
|
||||
* 827BC2320D535AEAD0540E6E2E66F65D99761A6F
|
||||
* A88D7431E5BAAD0B6EAE550AC8D61D8BD4FA3C46
|
||||
* 8F872885968EB8C589A32E9539ACC012896D450F
|
||||
|
||||
Should we at any point retire a key, we will only replace it with keys signed
|
||||
by at least one of the above collection.
|
||||
|
|
@ -384,6 +391,10 @@ Adds IPC as described in the man pages.
|
|||
|
||||
Adds close command for windows as described in the man pages.
|
||||
|
||||
### Release 1.5.0
|
||||
|
||||
Adds options to disable or enable outputs. See Issue 22 in Bugs.md and Issue #2 on github.
|
||||
|
||||
## License
|
||||
|
||||
Please see [LICENSE](https://github.com/project-repo/cagebreak/blob/master/LICENSE)
|
||||
|
|
|
|||
|
|
@ -335,6 +335,7 @@ main(int argc, char *argv[]) {
|
|||
|
||||
server.bg_color = (float[4]){0, 0, 0, 1};
|
||||
wl_list_init(&server.outputs);
|
||||
wl_list_init(&server.disabled_outputs);
|
||||
|
||||
server.output_layout = wlr_output_layout_create();
|
||||
if(!server.output_layout) {
|
||||
|
|
@ -544,8 +545,9 @@ main(int argc, char *argv[]) {
|
|||
}
|
||||
|
||||
{
|
||||
struct cg_output *output;
|
||||
wl_list_for_each(output, &server.outputs, link) {
|
||||
|
||||
struct cg_output *output, *output_tmp;
|
||||
wl_list_for_each_safe(output, output_tmp, &server.outputs, link) {
|
||||
output_configure(&server, output);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,4 +75,6 @@ definekey top XF86MonBrightnessUp exec xbacklight -inc 1
|
|||
######################
|
||||
#Output configuration
|
||||
######################
|
||||
#output eDP-1 pos 0 0 res 1366x768 rate 60
|
||||
output eDP-1 pos 0 0 res 1366x768 rate 60
|
||||
output eDP-1 disable
|
||||
output eDP-1 enable
|
||||
|
|
|
|||
|
|
@ -219,6 +219,7 @@ LLVMFuzzerInitialize(int *argc, char ***argv) {
|
|||
server.bg_color[2] = 0;
|
||||
server.bg_color[3] = 1;
|
||||
wl_list_init(&server.outputs);
|
||||
wl_list_init(&server.disabled_outputs);
|
||||
|
||||
server.output_layout = wlr_output_layout_create();
|
||||
if(!server.output_layout) {
|
||||
|
|
|
|||
17
keybinding.c
17
keybinding.c
|
|
@ -60,6 +60,9 @@ keybinding_free(struct keybinding *keybinding, bool recursive) {
|
|||
keybinding_free(keybinding->data.kb, true);
|
||||
}
|
||||
break;
|
||||
case KEYBINDING_CONFIGURE_OUTPUT:
|
||||
free(keybinding->data.o_cfg->output_name);
|
||||
free(keybinding->data.o_cfg);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -838,6 +841,20 @@ keybinding_configure_output(struct cg_server *server,
|
|||
}
|
||||
}
|
||||
wl_list_insert(&server->output_config, &cfg->link);
|
||||
|
||||
struct cg_output *output, *tmp_output;
|
||||
wl_list_for_each_safe(output, tmp_output, &server->outputs, link) {
|
||||
if(strcmp(cfg->output_name, output->wlr_output->name) == 0) {
|
||||
output_configure(server, output);
|
||||
return;
|
||||
}
|
||||
}
|
||||
wl_list_for_each_safe(output, tmp_output, &server->disabled_outputs, link) {
|
||||
if(strcmp(cfg->output_name, output->wlr_output->name) == 0) {
|
||||
output_configure(server, output);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Hint: see keybinding.h for details on "data" */
|
||||
|
|
|
|||
|
|
@ -47,29 +47,41 @@ f4FlX7Mn6YAG94h6HN3qRo/c+E47XBqj9XmvFe0e+bWg9oar3rWGkVN+YzUaSgp3
|
|||
iNXRYQfQZbCHf7vTDzQZ8lWix7IBcAdoBgHl7d0RW4VNqbXISZvKMMTZK8WQVYYz
|
||||
wcW9+Ll/fEwE8PGs5FolnynEg9YLLzj0OADSfaly/woqXUul14mWpM/gFsxQTyuQ
|
||||
7n7xyAu5PImTjC7WzVMF9OAH35ng9u76bDkmwVfrMzGvKZ2DRsJQeNRUAd4EIM8S
|
||||
6+ipTKNASzj4mCnURgS2zMplReE30icE8Vpol/ZYgC2qouS89nq29kLOuQINBF7T
|
||||
e/sBEADSdSZVGEumZeeXzM1uPp1OUWHCkmCiPu6jfP2M2GI4VnSCcsxM4XcbR26O
|
||||
sqMmMo9f4Fuie/+K6oyqE1LMeGTpasWJrd8w2TME0V5Nqsszp+PtKJBTIskk2c7b
|
||||
ctQDeZDTcuIGPi03SxLCn+ZeDpVscBKbuc78twNYl0xXM86P67D73cA5WZPqQIKS
|
||||
Me+8iRzpzB/Hk/lcDun3QlrXq+bMwSPSMD0ikcPdpiGf+RuQH/ZB5JVQqgA92Vt3
|
||||
QFA4RAgKyQCdS0DOaScAvXotriFWbZdGt/iTGzzQ8e1O0C9COhgNms4r5bwRVzH5
|
||||
k/kQ1BC1S+Me5shNUO8DabRWPh+CgZjtYV5oHY1jik1p72DnTTajIMYwhcLOJXRl
|
||||
l+zlq20qqqdp05DSloIYEizsgNTQ0F7XP0uXyVaDsUxGv4ZucRHJVuedilEhz9MW
|
||||
k/iqeQ2hWRuR3vuiknj3F8O/Z7kJNfx8Hi6PgfCMyCv3YZxpkXhXwXRbYndhbQHK
|
||||
F/9gVvDxx0yw+BCYj+iDdo0mwdI0LFh+ddpwWBFhzJpMdUsDEHmG5yOmbUIZDCmt
|
||||
GCLSBDPl61FUaGUljSFWtW7b3bgv+a6RUTbkw3ZuvyxV9lMbLDAPSZmRjQHGydZJ
|
||||
cdRmxX262CjpxP707c51EhlhsL5Q1cBXcBgwlbQ3ltC4VFRI1wARAQABiQI8BBgB
|
||||
CAAmFiEEsVuSZCdg4R/gAt4WhwjUJFGpSrUFAl7Te/sCGwwFCQHhM4AACgkQhwjU
|
||||
JFGpSrWLGQ//f07ynATQpyyichXwMQDZhOS2/jocTNHaUfecO2OoPjc69wldyvN6
|
||||
wv0HDUmom1rJK/v25KxGnKKKg/UX9XxCSK2G85UX4niT/jTKcI5D9OiOwlFbs917
|
||||
VYYU/8u45KDDqDLqhhepAa5QttKXMDU2nx9V82W/gVjEcLIseKeIg4i24bJHi6ax
|
||||
WySklo1Vwo+RGtwfhT+/UxLv9bDOWRxHRsOnlTZo+PSMgescgWDkYOR33wxmLw6P
|
||||
Ckv/Sb/kIXrXuFey7bs3zciM1hL4+/iIAr2DSQi5bGUBnBCrwsV4wnVru06Ua013
|
||||
sPqHTMgucbhYDS4sTPOXD7szQAzze1dxez55h5ziaf7tFilvaulSs2bubGuAWgKm
|
||||
VCeZINzEbA4bYUAyuWtMu+vbXWimcg54BGVCS7IdVGF78FjgVTqjH8nkiGtrzGRW
|
||||
94ebx61EcuNdcRuri3OgrO009fzJy8sswQmuanyF4gyXml9FUVc93HO8mDnNyFZd
|
||||
O5FHgYFLn+ymd2Ra5cUvFYsJ5b2ydkX7CigcqyyysMoYpc1PpJN1kpX0e1D6JDp9
|
||||
Xk02SoUP9t/y6C/h7f14WUefgZnDwK2/YCYogyrgMSSLw54j85kS/Ycr2OlJ3If5
|
||||
MHObamGEWsqr6H240IxeT4xrsMUuSFYHEEGnKuPfiSPVF2QjVbOTeSw=
|
||||
=QlUC
|
||||
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
|
||||
=ZN9o
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
|
|
|||
100
keys/cagebreak_signing_key_5@project-repo.co
Normal file
100
keys/cagebreak_signing_key_5@project-repo.co
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
5w==
|
||||
=Dm8H
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
88
keys/cagebreak_signing_key_6@project-repo.co
Normal file
88
keys/cagebreak_signing_key_6@project-repo.co
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBF/0PxYBEADPAmaNsvUmGuBb8nmAhYfm8OKJ9qJPZwLKCfXdDU3G/JqGuEUK
|
||||
lF+2Mx0qPOjRkNyqHZi4Fl4W46LAgiJ6dDWIACSEcscaOuRJUnVELQWktYaLeWyN
|
||||
eyxwTmL118eseujQQkitV9qKxfxf3fGGs/l4euCsOSSQEykHtLVTBcw+gu9W0PPu
|
||||
ysSxZkgdf/aU9cj7GRGc6LmQGi/fxT//G3BJla4WpRDn/ofjMGhYNP1KvVIMDtge
|
||||
GgZVpAl2a9xxm7rsdHswa/eEptGbLVePNi1+5QTMnwjEz60o6Abufjj7339BVAvO
|
||||
hRsj3h8A2Qug/Wn/lTqPvM0VMFjLsSgsfgs8b319hB/36H/lqfKruUCq3ETnDIcd
|
||||
wviCIndGg+LcjsaPAxxbctN+ErSab8LmRwt2uAnuZlqxbhRzOJRyizVz7M40rsGx
|
||||
J96uTqxbWKrWhPmqTFjR67kg/7x3i/YwELblOa2/sDccgXuMCqsCL3ml8LKHYKfe
|
||||
QK0jnVIF+A/8E7yNMBtDojxfbktLaDcxXf4qF/9m5Xp+Uh5WNZVhGTkWzVeWSMf0
|
||||
GmCT+FCk4cdLHrU3Twz7I/+t1Zc8w2yAoOb3N/fQkFrMcAK974EpTNp1u0Py87DV
|
||||
ESeHnUR+KsB2zy57vSGWXKYBM73mClO8sJOUvLYC0TleD71SkztJs4lbVwARAQAB
|
||||
tEFDYWdlYnJlYWsgU2lnbmluZyBLZXkgNiA8Y2FnZWJyZWFrX3NpZ25pbmdfa2V5
|
||||
XzZAcHJvamVjdC1yZXBvLmNvPokCVAQTAQgAPhYhBI+HKIWWjrjFiaMulTmswBKJ
|
||||
bUUPBQJf9D8WAhsDBQkB4TOABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEDms
|
||||
wBKJbUUPlFEP/jEITzI/kdQajjH08z8rgxyebeTHffs8dXQAHtVzNXzo9VpzChxn
|
||||
gkCNoYe/8/IEA+U44esmeSjtYFKrykmOl2B7vNxLdzlgUO3jl6+ujR7hQRCuLj5e
|
||||
8SfQkW5bokV1qyj9PoVpmkMuqbjacxxvr9etgCyL/EWXvYQu3H3zRH1uMaSW0YLx
|
||||
ZHfaMsetrqNnCjAugq3uRoEO8dEbCOwdTKpzBo21kVrn3H5ee0IbBNzBq4w59WWF
|
||||
80VwdWtU6N5Ir1h94Aj4hhXzyHArbh6gWlUw/cP6j2McdmRv8lB/83qG+X09NsoZ
|
||||
TGmXyFxH74CZ6hqo1UrCy94zHIo3/ijKceZUHxmQhqHcYXlR6iwB+3dU+RSGwWab
|
||||
RELrBIfj9tuKif3c4SZhAmIEZrmU6b4Yb0EMYnzp3/zwynGA4sEy2fke8jLJNcF4
|
||||
DcqCy/SwwSo4/mYcZKswL5cTRT1AS8zbq8ojyCQicHoOb3RdOcQ8te7s3HHV2NQU
|
||||
HGsdim/GVSbkxZT6MIn3Y5odF4Q7tRbSi9hA59ZGsiGjgJE7BB0kyLGkr7ZxuXQm
|
||||
W42zAOcxtcY3Cikpodf+pryV2/FkxJp/9mjraBAK6NhJmwwfZUzgDDYJGlCPSLjb
|
||||
BIV8JLjdLgZakXnx4x4zf9Urhmvwa8aObZbdh/C70pq6sqqjunm2Etf7iQIzBBAB
|
||||
CAAdFiEEqI10MeW6rQturlUKyNYdi9T6PEYFAl/7Q5kACgkQyNYdi9T6PEb0kg//
|
||||
TE1Svxqwt2DcNyoMnCws5Lv/QWQQkaJ22IYpYhEJJD2qMnbvW5yebA54AR9iMo+T
|
||||
q1HYnGhZ/mhsG44ns0v6vmJktRcSqujjrjxMr1J7N1mRqzKGdTqOp9moStSK7/aK
|
||||
zT66/2EGnFdNSYxFu0GT5Uw9ooWKDmEHIVTSp3bUuoKynkIGS7ShuqKMfMFfJiwB
|
||||
qVoIL6/bpv3R33u0VeSfGGh+pdoDyUvEoJnT6a8OW9Lnr94blZNg3n3e98Hd97G1
|
||||
Gkh5J3UxtZNF5EdJr78WXgfoUDtepzz7QGkniz+lIF1jSNNAivpgB0IdzgQ2Tacb
|
||||
ly90vddPTWGsWR7AG9c7QCMohkw1owJ7t/D6l8FQRXGPS9tNOYk32+b8xIefecrc
|
||||
NNTOxCs5NWloNreVTec8X5oHKKEYOlciaoKjkr3x+3KLHPc/1gbm8qmWZBEr14uo
|
||||
kJcDfcIvUq9ADWOgjEVz3OHgLT/iO+3U6pWMLcU/c4aL7pD7OGbewgsPTu7e9hiu
|
||||
WePQWM+vwpQWf5hHED2JNVv2x1ZEs008IkPOSfsehz0h3Esin+pD8TBEhh6u+GSx
|
||||
LklxeQv3qMC3SwjI+4urSjiws3LMuhiO1k+GAG3nHfg27V8zZ5FPuFiNc1CUf2JV
|
||||
d0aOfBSJf5MrukpTGAYQx9q/1CAUD+4NAO5wFHTnrjyJAjMEEAEIAB0WIQTnn22e
|
||||
ETUp9LH/5NXE+XTXDOwsWwUCX/tEiwAKCRDE+XTXDOwsWzb+D/9eBtvft4LtxZv3
|
||||
9ohtNvSxwuIdmHBm8o03Fd1X9POo+E19S4SQ5pUPAsR2XJ2cqerUQ5K6+1In4Wfr
|
||||
s/3qMW2Tuqb7JQ4i1lYASuaqbliUX1Kx2mpqVBwEPpwcusZVmBVi7iHbcZSPbaUY
|
||||
bYE8BGl3KBgrUx/I2Ngnz5qKRbyBLOjfMYWgpHOAtCxI5jdDbjd6rv6ruZCLna86
|
||||
VEA7ZT5VPvFVweeZz8462xhPQS9xmlRWf9xpIsvD8cf4iWeJOTiwidvA91S2ZICN
|
||||
QnucluC7xNZm2Xb8DpKgoeEMI/jOzVmK5+YLzSYIcxg5y/0aUTDtqRJJYa1j8pAP
|
||||
V3XGNnxdkSV32hC60z2zEzjVk4rNrBpuWFgINefZ0HDia6MR8bev403j9IxRX+eK
|
||||
F6OofbJjtyCt05IADCJ7XpdPddB+O2TdXBTHwLBGcUh0c0JvYjJNQ51KwY13UeAu
|
||||
kBczo7bcTgyhxkYVADQEgKm6Dek89oo7A6cMveLCdOaw2o7YaQITSAF2ntnsT5yR
|
||||
cKsKBlZrnSVCCMoQu/cb6+UvRB8Yn5FbbPdbcJcrvtCCjSoOnNqWiiIC1gvghzWR
|
||||
udFK8q7KUVAKNluSUNPxfHNILuf6gOVdXWV9Twa9o4eGWa8aAJOGDUpVL60bIyRf
|
||||
jV4DrqhZscX4IhC0m/h+sUbrN/m4eYkCMwQQAQgAHRYhBHU1q4kiClwVpyi3X3QQ
|
||||
TMfcpdeoBQJf+0THAAoJEHQQTMfcpdeoE58P/iPFcx0ge4dywgjfZ9mBSfUi57tJ
|
||||
9MYXw3tRJtRYWSVaERoT3KRABIXg6a3cGTBQu1ARScTuchdSQ3YXA8qIT9hI/t27
|
||||
mLggsgS5uRMtTpNvelReT1DjroqeRVFRpqr9wxOHRr0QHVFV8/8w0KHObXvpLX0q
|
||||
y3eY9Y/3AG9o8Wv5tLUoAT/3rb6WCwVYEjSG9JXr1o2m31PbvGeKVw8/1FuO4l4B
|
||||
kTCfjbmOuFnUCluE571lFauO2YlqgERIXGB152DiTy3Z51pZk5avuyEMiHVpqI+1
|
||||
DWJV2Jd1qFx1uIxyyxa/fYl/HHaXKeuJGLMRxKqp2IqlXeR7COY17iKF70A+nw06
|
||||
h236w0OOgZS0+3dOpW/k7CzQRNFAu970xyy9bHjQQlezkOX/gZiByRliIIaCvoEc
|
||||
F+Ca2keWY+lQ4xEhP5EfFLOU8MRkO0wSKhCCSTYVs/U5bWv/jziUxvoL43kOEZJb
|
||||
IOeA2rG8bj8pCLCM798jzrHaspeyojmR37ZDbCK3MGimtaOnDinQ9gN6Ar4iesHP
|
||||
F5LAZD5t2uqxrt5VBp8EBlzMwd9gv/1pVj+xDq/QpdBI8fwGuc4pRtwfrnSgISGE
|
||||
I1AA9IRDAq0mcOT2ybo46Gzw/Xy8i8IzkfjMxE7nls0DIE7lYVK1kzHDhcEUmwaW
|
||||
wOx8V0GDmxkeduoTuQINBF/0PxYBEADjaFOq40G39KpkXIYmAqbcc35UkdAmEt0k
|
||||
Z7Q+TRBeEKqqJH/ZLR42bXgMjYWHgeoNqPFsWKRMVXU2R3i8m+83jm4Ha4P9WH4b
|
||||
nV0fD5WlltX4qnBpXHEpXl6hfOjNrEhKMIXysoibY+4CmvGjEzPzcGvZRbfhlkBZ
|
||||
xC3YCFGsPi0Uyjb6UFBeLYkPbRPwKgRhVDgM0BxIXr5O+W30JZOWdE3TtqjyvPK7
|
||||
t8iTK1ksYr3JA1vJX8rQGvl8S2m0oshSwN4BY62hf1ynzYnTF3NDsrdN5rB/Ch15
|
||||
0F3R6/q/CAXAsOqbhCXswHZ8zYW/gdiA0Q8JUeYzR8DB+ZRyeeX/SZ3sERkQcV37
|
||||
MU652jP6/9MDK1ArrJ/2Rgvl2DbCzsnxsoSiDx2PdWwvhy4d252z91/+rEu5bgHS
|
||||
rXtxgKw8BhptM8yNIRizCQhxPDuBqyJnCcTLhYzCYrh+05URUwsqXsARXzZAgzNA
|
||||
v+nAhMaQye8ydbOJ3E0jBCF/uAPMOrFggRxsZemsOZ4kVCCnrXA4ell5K4CoM9Qd
|
||||
i/aR9BN50XgaL18WPbxbdgcZ04Sa172T8uEnKJv5V8qcRBdgJ4G6spq+B/UTHwac
|
||||
Qk1P9uK2mnMuzSfcpAJDuydzHxo2tjFB4RNohla54kDKa6vA4gqTKg9XR3Jp/+47
|
||||
Z3cUCe7KfQARAQABiQI8BBgBCAAmFiEEj4cohZaOuMWJoy6VOazAEoltRQ8FAl/0
|
||||
PxYCGwwFCQHhM4AACgkQOazAEoltRQ/InQ//beUxhV0V6zegQBVk7tOvWlhUgU6n
|
||||
5jvhka+KRqSqy17WYseIygvHlZXDsABQi6y58mIbZQZCG9S0ex7ENH1s7iA36/Wt
|
||||
LJdyogcpVR6XZfCZiyKHaSKQxAsSUPhfLNmyIrqp80culdT9F9JFiePGttF51q7+
|
||||
c/0Y1AXW0KAkFImvMNRh3PYz5M1ko9poGTQdJChLoqhetC5zySouqvu2d10zJEm7
|
||||
9uM2c1LV5NIfV6b8sud9yFYx8g8AuIwgi3wW5R5D3Y9HvB5pI0JbYVoHwViGgZjl
|
||||
7QFiBkOHTXxydJ6tGCVJ54izHqTMd46U7LOlDfI/vQtSfkPeoisEUzPz9Pivz2++
|
||||
AgbHnVQryqZfZKgcvfrqJ+z3OJPDAMpy7qPRYRAKp9fycYi3nex9765rVBH4DL02
|
||||
skBhGRb73HKv3Skxxdp637BhFvgmLBhZpMr76boJSDHCxfT/H3njXQqtkY2M4CC6
|
||||
/lCS7wQLn+C3u24kp6vB2M4YnHqZ1qIfA7gyaIqRD7x2TgRrwbXAhKy34wugGL2t
|
||||
VoGzUSpt2Vtpozmfng4MKloZhjmogwgZh4TW0kYU/QkZ9TeBBfNmR9xvUg8TQSjF
|
||||
xz8IRlJkkqu9hmI7qrByp/0v9sdJfclO5kwh0/r1nrlLLkP4wzfmmfqHMZOkrk0r
|
||||
qF/GtdHBq8rhkEM=
|
||||
=c37G
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
% CAGEBREAK-CONFIG(1) Version 1.4.4 | Cagebreak Manual
|
||||
% CAGEBREAK-CONFIG(1) Version 1.5.0 | Cagebreak Manual
|
||||
|
||||
# NAME
|
||||
|
||||
|
|
@ -136,12 +136,14 @@ by prepending a line with the # symbol.
|
|||
|
||||
> Remove all splits and make the current window fill the entire screen
|
||||
|
||||
**output <name> pos <xpos> <ypos> res <width>x<height> rate <rate>**
|
||||
**output <name> [[pos <xpos> <ypos> res <width>x<height> rate <rate>] | enable | disable]**
|
||||
|
||||
> Configure the 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 and <rate> sets the refresh rate of
|
||||
> the monitor (often this is 50 or 60).
|
||||
> the monitor (often this is 50 or 60). The options enable and disable
|
||||
> enable or disable the output <name>. Note that if <output> is the only enabled
|
||||
> output, `output <output> disable` has no effect.
|
||||
|
||||
**prev**
|
||||
|
||||
|
|
@ -253,7 +255,7 @@ See GitHub Issues: <https://github.com/project-repo/cagebreak/issues>
|
|||
|
||||
# LICENSE
|
||||
|
||||
Copyright (c) 2020 The Cagebreak authors
|
||||
Copyright (c) 2020-2021 The Cagebreak authors
|
||||
Copyright (c) 2018-2020 Jente Hidskes
|
||||
Copyright (c) 2019 The Sway authors
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
% CAGEBREAK(1) Version 1.4.4 | Cagebreak Manual
|
||||
% CAGEBREAK(1) Version 1.5.0 | Cagebreak Manual
|
||||
|
||||
# NAME
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ See GitHub Issues: <https://github.com/project-repo/cagebreak/issues>
|
|||
|
||||
# LICENSE
|
||||
|
||||
Copyright (c) 2020 The Cagebreak authors
|
||||
Copyright (c) 2020-2021 The Cagebreak authors
|
||||
Copyright (c) 2018-2020 Jente Hidskes
|
||||
Copyright (c) 2019 The Sway authors
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
project('cagebreak', 'c',
|
||||
version: '1.4.4',
|
||||
version: '1.5.0',
|
||||
license: 'MIT',
|
||||
default_options: [
|
||||
'c_std=c11',
|
||||
|
|
@ -196,11 +196,11 @@ reproducible_build_versions = {
|
|||
'wayland_client': '1.18.0',
|
||||
'wayland_cursor': '1.18.0',
|
||||
'wlroots': '0.12.0',
|
||||
'xkbcommon': '1.0.1',
|
||||
'xkbcommon': '1.0.3',
|
||||
'fontconfig': '2.13.91',
|
||||
'pixman': '0.40.0',
|
||||
'pango': '1.48.0',
|
||||
'cairo': '1.17.3',
|
||||
'cairo': '1.17.4',
|
||||
'pangocairo': '1.48.0',
|
||||
'math': '-1'
|
||||
}
|
||||
|
|
|
|||
80
output.c
80
output.c
|
|
@ -364,7 +364,7 @@ static void
|
|||
handle_output_transform(struct wl_listener *listener, void *data) {
|
||||
struct cg_output *output = wl_container_of(listener, output, transform);
|
||||
|
||||
if(!output->wlr_output->enabled) {
|
||||
if(!output->wlr_output->enabled || output->workspaces == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -379,7 +379,7 @@ 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) {
|
||||
if(!output->wlr_output->enabled || output->workspaces == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -390,22 +390,16 @@ handle_output_mode(struct wl_listener *listener, void *data) {
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
output_destroy(struct cg_output *output) {
|
||||
void
|
||||
output_clear(struct cg_output *output) {
|
||||
struct cg_server *server = output->server;
|
||||
|
||||
wl_list_remove(&output->destroy.link);
|
||||
wl_list_remove(&output->mode.link);
|
||||
wl_list_remove(&output->transform.link);
|
||||
wl_list_remove(&output->damage_frame.link);
|
||||
wl_list_remove(&output->damage_destroy.link);
|
||||
|
||||
wlr_output_layout_remove(server->output_layout, output->wlr_output);
|
||||
|
||||
if(server->running && server->curr_output == output &&
|
||||
wl_list_length(&server->outputs) > 1) {
|
||||
keybinding_cycle_outputs(server, false);
|
||||
}
|
||||
|
||||
wl_list_remove(&output->link);
|
||||
|
||||
message_clear(output);
|
||||
|
|
@ -413,6 +407,14 @@ output_destroy(struct cg_output *output) {
|
|||
struct cg_view *view, *view_tmp;
|
||||
if(server->running) {
|
||||
for(unsigned int i = 0; i < server->nws; ++i) {
|
||||
|
||||
bool first = true;
|
||||
for(struct cg_tile *tile = output->workspaces[i]->focused_tile;
|
||||
first || output->workspaces[i]->focused_tile != tile;
|
||||
tile = tile->next) {
|
||||
first = false;
|
||||
tile->view = NULL;
|
||||
}
|
||||
wl_list_for_each_safe(view, view_tmp, &output->workspaces[i]->views,
|
||||
link) {
|
||||
wl_list_remove(&view->link);
|
||||
|
|
@ -450,6 +452,19 @@ output_destroy(struct cg_output *output) {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
output_destroy(struct cg_output *output) {
|
||||
struct cg_server *server = output->server;
|
||||
|
||||
wl_list_remove(&output->destroy.link);
|
||||
wl_list_remove(&output->mode.link);
|
||||
wl_list_remove(&output->transform.link);
|
||||
wl_list_remove(&output->damage_frame.link);
|
||||
wl_list_remove(&output->damage_destroy.link);
|
||||
|
||||
output_clear(output);
|
||||
|
||||
/*Important: due to unfortunate events, "workspace" and "output->workspace"
|
||||
* have nothing in common. The former is the workspace of a single output,
|
||||
|
|
@ -530,11 +545,16 @@ void
|
|||
output_configure(struct cg_server *server, struct cg_output *output) {
|
||||
struct wlr_output *wlr_output = output->wlr_output;
|
||||
struct cg_output_config *config = output_find_config(server, wlr_output);
|
||||
/* Refuse to disable the only output */
|
||||
if(config != NULL && config->status == OUTPUT_DISABLE &&
|
||||
wl_list_length(&server->outputs) == 1) {
|
||||
return;
|
||||
}
|
||||
if(output->wlr_output->enabled) {
|
||||
wlr_output_layout_remove(server->output_layout, wlr_output);
|
||||
}
|
||||
|
||||
if(config == NULL) {
|
||||
if(config == NULL || config->status == OUTPUT_ENABLE) {
|
||||
wlr_output_layout_add_auto(server->output_layout, wlr_output);
|
||||
|
||||
struct wlr_output_mode *preferred_mode =
|
||||
|
|
@ -542,11 +562,24 @@ output_configure(struct cg_server *server, struct cg_output *output) {
|
|||
if(preferred_mode) {
|
||||
wlr_output_set_mode(wlr_output, preferred_mode);
|
||||
}
|
||||
wl_list_remove(&output->link);
|
||||
wl_list_insert(&server->outputs, &output->link);
|
||||
wlr_output_enable(wlr_output, true);
|
||||
wlr_output_commit(wlr_output);
|
||||
} else if(config->status == OUTPUT_DISABLE) {
|
||||
output_clear(output);
|
||||
wl_list_insert(&server->disabled_outputs, &output->link);
|
||||
wlr_output_enable(wlr_output, false);
|
||||
wlr_output_commit(wlr_output);
|
||||
} else {
|
||||
wl_list_remove(&output->link);
|
||||
wl_list_insert(&server->outputs, &output->link);
|
||||
output_set_mode(wlr_output, config->pos.width, config->pos.height,
|
||||
config->refresh_rate);
|
||||
wlr_output_layout_add(server->output_layout, wlr_output, config->pos.x,
|
||||
config->pos.y);
|
||||
wlr_output_enable(wlr_output, true);
|
||||
wlr_output_commit(wlr_output);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -569,7 +602,6 @@ handle_new_output(struct wl_listener *listener, void *data) {
|
|||
output->server = server;
|
||||
output->damage = wlr_output_damage_create(wlr_output);
|
||||
output->last_scanned_out_view = NULL;
|
||||
wl_list_insert(&server->outputs, &output->link);
|
||||
|
||||
output->mode.notify = handle_output_mode;
|
||||
wl_signal_add(&wlr_output->events.mode, &output->mode);
|
||||
|
|
@ -583,19 +615,7 @@ handle_new_output(struct wl_listener *listener, void *data) {
|
|||
wl_signal_add(&output->damage->events.destroy, &output->damage_destroy);
|
||||
|
||||
wlr_output_set_transform(wlr_output, server->output_transform);
|
||||
|
||||
output_configure(server, output);
|
||||
|
||||
output->workspaces = malloc(server->nws * sizeof(struct cg_workspace *));
|
||||
for(unsigned int i = 0; i < server->nws; ++i) {
|
||||
output->workspaces[i] = full_screen_workspace(output);
|
||||
if(!output->workspaces[i]) {
|
||||
wlr_log(WLR_ERROR, "Failed to allocate workspaces for output");
|
||||
return;
|
||||
}
|
||||
wl_list_init(&output->workspaces[i]->views);
|
||||
wl_list_init(&output->workspaces[i]->unmanaged_views);
|
||||
}
|
||||
output->workspaces = NULL;
|
||||
|
||||
output->curr_workspace = 0;
|
||||
wl_list_init(&output->messages);
|
||||
|
|
@ -607,14 +627,12 @@ handle_new_output(struct wl_listener *listener, void *data) {
|
|||
wlr_output->name, wlr_output->scale);
|
||||
}
|
||||
|
||||
wl_list_insert(&server->outputs, &output->link);
|
||||
output_configure(server, output);
|
||||
wlr_output_damage_add_whole(output->damage);
|
||||
|
||||
wlr_output_enable(wlr_output, true);
|
||||
wlr_output_commit(wlr_output);
|
||||
|
||||
/* TODO:If you see a way to circumvent having to loop twice, please do so */
|
||||
output->workspaces = malloc(server->nws * sizeof(struct cg_workspace *));
|
||||
for(unsigned int i = 0; i < server->nws; ++i) {
|
||||
workspace_free(output->workspaces[i]);
|
||||
output->workspaces[i] = full_screen_workspace(output);
|
||||
if(!output->workspaces[i]) {
|
||||
wlr_log(WLR_ERROR, "Failed to allocate workspaces for output");
|
||||
|
|
|
|||
3
output.h
3
output.h
|
|
@ -28,7 +28,10 @@ struct cg_output {
|
|||
struct wl_list link; // cg_server::outputs
|
||||
};
|
||||
|
||||
enum output_status { OUTPUT_ENABLE, OUTPUT_DISABLE, OUTPUT_DEFAULT };
|
||||
|
||||
struct cg_output_config {
|
||||
enum output_status status;
|
||||
struct wlr_box pos;
|
||||
char *output_name;
|
||||
float refresh_rate;
|
||||
|
|
|
|||
31
parse.c
31
parse.c
|
|
@ -259,6 +259,23 @@ parse_float(char **saveptr, const char *delim) {
|
|||
}
|
||||
}
|
||||
|
||||
int
|
||||
parse_output_config_keyword(char *key_str, enum output_status *status) {
|
||||
if(key_str == NULL) {
|
||||
return -1;
|
||||
}
|
||||
if(strcmp(key_str, "pos") == 0) {
|
||||
*status = OUTPUT_DEFAULT;
|
||||
} else if(strcmp(key_str, "enable") == 0) {
|
||||
*status = OUTPUT_ENABLE;
|
||||
} else if(strcmp(key_str, "disable") == 0) {
|
||||
*status = OUTPUT_DISABLE;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct cg_output_config *
|
||||
parse_output_config(char **saveptr, char **errstr) {
|
||||
struct cg_output_config *cfg = malloc(sizeof(struct cg_output_config));
|
||||
|
|
@ -273,13 +290,17 @@ parse_output_config(char **saveptr, char **errstr) {
|
|||
log_error("Expected name of output to be configured, got none");
|
||||
goto error;
|
||||
}
|
||||
char *pos_str = strtok_r(NULL, " ", saveptr);
|
||||
if(pos_str == NULL || strcmp(pos_str, "pos") != 0) {
|
||||
*errstr = log_error(
|
||||
"Expected keyword \"pos\" in output configuration for output %s",
|
||||
name);
|
||||
char *key_str = strtok_r(NULL, " ", saveptr);
|
||||
if(parse_output_config_keyword(key_str, &(cfg->status)) != 0) {
|
||||
*errstr = log_error("Expected keyword \"pos\", \"enable\" or "
|
||||
"\"disable\" in output configuration for output %s",
|
||||
name);
|
||||
goto error;
|
||||
}
|
||||
if(cfg->status == OUTPUT_ENABLE || cfg->status == OUTPUT_DISABLE) {
|
||||
cfg->output_name = strdup(name);
|
||||
return cfg;
|
||||
}
|
||||
|
||||
cfg->pos.x = parse_uint(saveptr, " ");
|
||||
if(cfg->pos.x < 0) {
|
||||
|
|
|
|||
10
seat.c
10
seat.c
|
|
@ -54,6 +54,12 @@ view_at(const struct cg_view *view, double lx, double ly,
|
|||
struct wlr_surface **surface, double *sx, double *sy) {
|
||||
struct wlr_box *output_layout_box = wlr_output_layout_get_box(
|
||||
view->server->output_layout, view->workspace->output->wlr_output);
|
||||
if(output_layout_box == NULL) {
|
||||
fprintf(stderr, "OUTPUT:%d\n",
|
||||
view->workspace->output->wlr_output->enabled);
|
||||
return output_layout_box->x;
|
||||
return false;
|
||||
}
|
||||
|
||||
double view_sx = lx - view->ox - output_layout_box->x;
|
||||
double view_sy = ly - view->oy - output_layout_box->y;
|
||||
|
|
@ -966,10 +972,6 @@ seat_set_focus(struct cg_seat *seat, struct cg_view *view) {
|
|||
}
|
||||
}
|
||||
|
||||
if(seat->seat->keyboard_state.focused_surface == view->wlr_surface) {
|
||||
return;
|
||||
}
|
||||
|
||||
#if CG_HAS_XWAYLAND
|
||||
if(view->type == CG_XWAYLAND_VIEW && !xwayland_view_should_manage(view)) {
|
||||
const struct cg_xwayland_view *xwayland_view =
|
||||
|
|
|
|||
1
server.h
1
server.h
|
|
@ -26,6 +26,7 @@ struct cg_server {
|
|||
struct wl_list inhibitors;
|
||||
|
||||
struct wlr_output_layout *output_layout;
|
||||
struct wl_list disabled_outputs;
|
||||
struct wl_list outputs;
|
||||
struct cg_output *curr_output;
|
||||
struct wl_listener new_output;
|
||||
|
|
|
|||
BIN
signatures/1.4.4.sig
Normal file
BIN
signatures/1.4.4.sig
Normal file
Binary file not shown.
Binary file not shown.
30
view.c
30
view.c
|
|
@ -291,21 +291,25 @@ view_unmap(struct cg_view *view) {
|
|||
{
|
||||
struct cg_tile *view_tile = view_get_tile(view);
|
||||
if(view_tile != NULL) {
|
||||
struct cg_view *prev = view_get_prev_view(view);
|
||||
wlr_output_damage_add_box(view_tile->workspace->output->damage,
|
||||
&view_tile->tile);
|
||||
if(view == view->server->seat->focused_view) {
|
||||
seat_set_focus(view->server->seat, prev);
|
||||
} else if(view->server->seat->seat->keyboard_state
|
||||
.focused_surface == view->wlr_surface) {
|
||||
wlr_seat_keyboard_clear_focus(view->server->seat->seat);
|
||||
seat_set_focus(view->server->seat,
|
||||
view->server->seat->focused_view);
|
||||
} else {
|
||||
view_tile->view = prev;
|
||||
if(prev != NULL) {
|
||||
view_maximize(prev, &view_tile->tile);
|
||||
}
|
||||
}
|
||||
struct cg_view *prev = view_get_prev_view(view);
|
||||
if(view == view->server->seat->focused_view) {
|
||||
seat_set_focus(view->server->seat, prev);
|
||||
} else if(view->server->seat->seat->keyboard_state.focused_surface ==
|
||||
view->wlr_surface) {
|
||||
wlr_seat_keyboard_clear_focus(view->server->seat->seat);
|
||||
seat_set_focus(view->server->seat,
|
||||
view->server->seat->focused_view);
|
||||
}
|
||||
view_tile = view_get_tile(view);
|
||||
if(view_tile != NULL) {
|
||||
wlr_output_damage_add_box(view_tile->workspace->output->damage,
|
||||
&view_tile->tile);
|
||||
view_tile->view = prev;
|
||||
if(prev != NULL) {
|
||||
view_maximize(prev, &view_tile->tile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue