From 932ce1df5514e64ce33ac025f1c1146c7fc85c06 Mon Sep 17 00:00:00 2001 From: Cagebreak Signing Key 7 Date: Thu, 30 Dec 2021 17:26:12 +0100 Subject: [PATCH 1/5] Remove duplicate documentation --- man/cagebreak-config.5.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index 3924574..2d7bc42 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -21,23 +21,23 @@ by prepending a line with the # symbol. *abort* Return to the default mode without running any command -*background - Set background color* +*background* Set the background color. This command expects three floating point numbers between 0 and 1, specifying the r, g and b values respectively. (e.g. "background 1.0 0.0 0.0" sets to background color to red) There is no support for specifying a background image. -*bind - Bind key to command in root mode* +*bind* This command requires a key (see *KEY DEFINITIONS*) and a command (see *COMMANDS*) as an argument. Subsequently, pressing this key while in command mode executes the supplied action. bind is equivalent to definekey root -*close - Close current window* +*close* This command closes the current window. It may be useful for windows of applications which do not offer any method of closing them. -*definekey - Bind key to action in arbitrary mode* +*definekey* This command behaves similarly to the *bind* command with the difference that the mode in which the keybinding is activated is specified by the user. A call to this function is to be structured as follows: From 5b470aa3d7c928cc899f3ea869d2db2bdfdadc63 Mon Sep 17 00:00:00 2001 From: Cagebreak Signing Key 7 Date: Thu, 30 Dec 2021 22:35:52 +0100 Subject: [PATCH 2/5] Modularize README.md --- Changelog.md | 38 ++++ Hashes.md | 196 +++++++++++++++++ README.md | 585 +++++++++++++++++++++++++++++++-------------------- meson.build | 8 +- 4 files changed, 590 insertions(+), 237 deletions(-) create mode 100644 Changelog.md create mode 100644 Hashes.md diff --git a/Changelog.md b/Changelog.md new file mode 100644 index 0000000..5c16076 --- /dev/null +++ b/Changelog.md @@ -0,0 +1,38 @@ +# Changelog + +## Release 1.0.0 + +Adds basic tiling window manager functionality to cage. + +## Release 1.1.0 + +Unifies commands and actions. See Issue 4 in Bugs.md. + +## Release 1.2.0 + +Adds output configuration as described in the man pages. + +## Release 1.3.0 + +Adds IPC as described in the man pages. + +## Release 1.4.0 + +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. + +## Release 1.6.0 + +Adds support for non-build dependencies and an option for builds without pandoc. + +## Release 1.7.0 + +Improve window ordering. + +## Release 1.8.0 + +Adds libinput configuration and virtual keyboard and pointer support. + diff --git a/Hashes.md b/Hashes.md new file mode 100644 index 0000000..414a315 --- /dev/null +++ b/Hashes.md @@ -0,0 +1,196 @@ +# Hashes + +1.8.2 cagebreak + + * sha 256: f4d275d48ba3d999969f8cb3c8142d27aa8e8d362106ee7575e4b13c02173b2a + * sha 512: 72b11cb966b0978133b9848c2a7f57574c599c7fe895ca9f1cba16930216e1ac8aeae86d976593fc01b15e94ecc1430666f474654cf2fe41eda8c1181bf03f3d + +1.8.2 cagebreak.1 + + * sha 256: 51ee97a7c0b86268cf7622f84f7b1813df8e4a7838c00aae412a611d3693e87a + * sha 512: 5ce826afbee9cbc1129f37463f5b6d4dfc060583f6f7816dd5039b18d66a2b7e22f7293a4aa03acc4e6c690886d0297fef5b9f85d720a4467becfd833b59a160 + +1.8.2 cagebreak-config.5 + + * sha 256: 7c780ba85211ba40c7535b3f10f12312f9edeaa10030228ba21a96724469a325 + * sha 512: 9a56ba16c2aed6f17d4098e54900a5d25602f986e3606dd6ed26563c1920c66404b210dbca9f41bfcc3284bf5a42b750263bcaa2317320f8725e8f9c66e8b893 + +1.8.1 cagebreak + + * sha 256: e3247281d21525413790e3feceae129d9b0559497615d3fdd64ec2fc4ab9ab3d + * sha 512: 8c7c2820be9d7c74e3f9e239c7da740ff41d7f11cd40953dbfbc59c04942077f08625f6d7ec37e6037fd9c4b6950fc4f9af23478080665fdda867c65e0a187bf + +1.8.1 cagebreak.1 + + * sha 256: 96997afdfde9c2719533799aa48c8f036610bb04bc719130d2ab3a3617b072ee + * sha 512: 0831f5d2e3b4f23fd5775df2b7f6486099d64962567222a8fb49e6a40e7d29ed36a7c2c16201bbdcc985ac74f1d0e034b530afbe0ce58d6a0c53d467cff0a6a0 + +1.8.1 cagebreak-config.5 + + * sha 256: bd0e2eb02ba28ec1c8f2bd0fd5cd4c84af24b615fcc477414e49e68e1963cf1b + * sha 512: 7135a2b371294bfdc759a393c13fa0225f1789dba94bb09e96ae689796215b8030280d6cc09c9d1fe139f000f5a4748efd16bb3e5d3b9fcc74a19259802f20ef + +1.8.0 cagebreak + + * sha 256: ac84aa4a08c311da79ca29d92eef4254cb625674b255dbb75621ee6b171a1d79 + * sha 512: c047bb1986fd1d444547e4d64aa7ef9138b3d30327ac3ad9b4c6976e8df6638bae07c39293b5bc9c20e959c0a22b0e40eb2b23b4766d9a5531377ff954b16229 + +1.8.0 cagebreak.1 + + * sha 256: 4de43de7bde67d6d806d206dffc34389f0b5c3ba648bfef673b7bc0adeb29202 + * sha 512: 72aac9a2e9a47f2f85949222d5944dc293332a616e3b961c625fe876172f66638038057c30aa18904d6d969451f468b4fe45e918c0b204cf6952d58ea4c69c33 + +1.8.0 cagebreak-config.5 + + * sha 256: 678aadde06b5ff6bfbd9bc9460423210f9599bcaa0e50c2eae076dc6d6852781 + * sha 512: 72056018fc1c559f26bd7e007b3f1db7d478cec7ec9337620e03a1e3d06910e244a52e8f655ea4f5d73669ffe064bbd23506005d9a6c06764b0f820d7a1df43f + +1.7.4 cagebreak + + * sha 256: c7442db906239b13f8d09e91cbe01f9e47b2a2c75bbb4b52adefd15dfbfa820f + * sha 512: 9c36ce706f31e1b8afacd8f9cd216c460d66030e0b2736a3dd929902b0d5fc52c5e69dbf6787205b8c495d960e00b6e7f633da86ab6e31613f1b4a9fd47c9f0e + +1.7.4 cagebreak.1 + + * sha 256: 3dacc521e5e9b963cceeefeed6a10104c7c415d86826a72788aba5b33ce320f1 + * sha 512: 0a4c4fbff09dd403fed61056ae3211ad2b4370b4e9ed07806fc22624e5312b4a25e469dc0eef1ca4556cbb8efabb0127e7519df79852e110faa98fb17ca377de + +1.7.4 cagebreak-config.5 + + * sha 256: ed22fed1818172f31d3fb3efbe5e66b49f135cb2367b1c85209fd880ff7532ab + * sha 512: cc634c63962ae50b4de20a3aad8ca0970175b53156690d69e6a69fd8f370ad20d84db783cc7e94c61d4d4d89f1205d43622690e58afba549ed57ddad009e3bac + +1.7.3 cagebreak + + * sha 256: 8adb4911d9603fec5b8eb4f67a09be95b8f0b37e50d4ab579191da78df18f70b + * sha 512: eddaecd7b577b9fe77b1ed4d341074f7f860967568392d0479543ea8860b4289df3eb5645885e18e35260b14843663ae50f98103f8016e857237a397632322a6 + +1.7.3 cagebreak.1 + + * sha 256: bcc623e42c86ab65bc2f8cb7e4377ca0d816ddc281527b7caeded62753e943b8 + * sha 512: b4290e1040bd6a299d478ad6b695de75cf030d0d274340b43d3ed4382cf6877f824cd4ed9d7020bfb55afe276c62de7fc07c3fbee6f6485c6440a024115afe12 + +1.7.3 cagebreak-config.5 + + * sha 256: b9789b6abd473e9afb33d4e2c7822f7d8f3c10e9eb3fb70c47b713f6331c626a + * sha 512: c49e01cfc4a4ed272f054bea8f2845f0e3f1609cf85d1a0ce14c1b67dc207df153b11bc20ceef09c855d467f0e013e54623ce9f70c217c4278607fc54d0e3206 + +1.7.2 cagebreak + + * sha 256: 40f4642e8e8caee338055079b046f6e0b790c87226ee307b27a64fcb2a6c6472 + * sha 512: 22c5f1986ca4262a7c08a6c03cffe36eaedd8c3c5e27e12baf12a90f94aea088ac93ee107770f162fc70148be687f6394b8fd64ad3fe14414bdf63b55b33798e + +1.7.2 cagebreak.1 + + * sha 256: 3253e592c40c78fd3733c761163acc2efaaf5865627cf51fd33cc0bc5d9cc6e7 + * sha 512: 901305e166c10aa7e4a26b721a69e0ba4779f4f8ee690551438ceadae65929f13949457872b9397dd46c5b7bad6a6f2638d6fd6df9bc5567c914c798cbf3e9a4 + +1.7.2 cagebreak-config.5 + + * sha 256: 148ec4d80dc9a86485fe77f8daf1f7fa4cb3d1b6aaa709bb012005583779e1f7 + * sha 512: d5732572e47dd07078ac2f6d589522e6007188fc05ac79520c93442212d5c0341459f135191b88c608a75b2f56c2de4065566bd869fbc24e475936d32a54a7f8 + +1.7.1 cagebreak + + * sha 256: 5a40797e016a2fa32b5bb70a056b35c482bef09f1795bbaf0188dbadaf8197c3 + * sha 512: 2ef327b63ac4651f23517be8d5cb8fbec99bd889f52f8abfd62a09ca6e6c0060347ab8d60e4917d39edd36db34597a673239967533f14457733acb97f6c29a7f + +1.7.1 cagebreak.1 + + * sha 256: 0301f04254ae6e7ada7e22bbe7aee022ec0793fbce434a396868258e6f1ea4cf + * sha 512: f0c0c5de30be907e9ba5c9cfa0bca8cef3e94c0b5f52de9e2c3681c85aa957f75e92b5e26bb894c3a5e251295cfe7a1470653cc7dc05564d7d91c6eb43b7409a + +1.7.1 cagebreak-config.5 + + * sha 256: 6882330a77f3ff98ea642f47b4090b38d542abf0b7be3f226486c5614899efc6 + * sha 512: a572f97836e4ccc6d67aa21c7f4aaebe06adb066c70038b670ec1ef267e3750764cb53e96b8d7bc24c7f993f24c0cfabee183307b45006d049f7416559bcaca4 + +1.7.0 + + * sha 256: 5af11b84e61a82a1a276e8f91f6ebc6baafd2c98d22be3da1d01734cc9d55faa + * sha 512: 45474115fb4c28fe1ee91ad54706bfe521b6e70bd8ea619b94a3f50bae426891bf6a0387aa9b2f7f6d18349280c4e84973e4e433d50c090e5a764c64fa67795d + +1.6.0 + + * sha 256: aef473eae73454429afb158d66a7bd9aec75ef915845b7508de5448820357aa8 + * sha 512: 17889bc1af9f343598a5ee599b25e702987dd0bd905a9566874e8a0094c57168e413938624949fa214e6e382cbcf89d7342292b44012cd8e692947f6c01a960a + +1.5.1 + + * sha 256: 9c6df4b94c180f5657cb424383aa2bf3aca063c8e7b40af0497be1ef7bdb858a + * sha 512: 219f753347ae64a4dd593568797438742e9ddae380c729598d8eda863080a6ed4e5086d735fc348c48328bb795a5a5b57b0421be5dd45755744d895b24312627 + +1.5.0 + + * sha 256: 22010e2916493b0d7cfb08c2196f12589509ce11010a7107aed13ddbfd9709cc + * sha 512: 707d6cc01326ba32402f9fb402ff8aceaeaba63ca6ba2eb157e5a4c83123515a3a74da960813479db303eddc2e7f79f39b241dff05b89d47d72d5f1d20ca6d37 + +1.4.4 + + * sha 256: c6e08e19feb17f768e136cf02f5692ef121ff289763dc60ef8678103803d3307 + * sha 512: aebf27fa9c24f93dfd0b7c96536c253e2ea603d6746c40e8de2163e06367bc57ac4e22d6c07dd1e0963cce5b18b460d373e15b5c12a5a42ae6b70787971960c9 + +1.4.3 + + * sha 256: 5e29cbaf7c0c5ca74f71a5605bb3d6e302e051798401fee9a79419720b8d8e95 + * sha 512: 8004865f8603648d9ac9bb700f3ee040e6516c222ad3d783b34219c8fa3a7bdbba6abb74fe92c4d0bd4dbbce0ec4d08be12297a8bad5032baeb589eec557e24e + +1.4.2 + + * sha 256: 27efb9328cf9cab1f81e66627696baf8c7cc2c372339a2890f955b40f3a7c396 + * sha 512: afcdbbce0753aff4770a88ddbd7df5687a7de0c77de3a2d296f85a8b8e01813212be6a0b69548aadef58e0e7da19ffea71c4f3448572656d4b19ff7f2f2fb70a + +1.4.1 + + * sha 256: c3e0ccceaf1078b91071c40b0ccb7c4f8e53ae38b05ee6637f9f39f7f6ece2cb + * sha 512: fd77f39fc7a7e5376d8505a61d643ed4d8f4cfbbf38d70cf9ef6989645e8cc6cb9d4b1024d241dc689b6fd927a405c97b9c918b6994b8f9ab7406646f37b952d + +1.4.0 + + * sha 256: 14aa93d890c62cc763b3b546a51ad8560479d5e91fa9f949858ae6bc785e80be + * sha 512: 88f93b49792684c38553b65d2296a0e502a059814a0cfff30d05c89958870d6f66d67aac2074cfd307bad82b0d72d5c4944822a61a68f665dc161407db365fbc + +1.3.4 + + * sha 256: ea9f634b8f6e2b9f191745a25abff4969eb7ea19cb3186b79a6138904aedeb1c + * sha 512: 9094f9c92acbff8fd95d38e7458c5184804f8913fa8c405bc2b6a0a220fe478b06cfeadbae41bd5ef84bde8d5642c249df9dada953e39c25926aa650c30a5309 + +1.3.3 + + * sha 256: 801851ceb52afac333a1decdd236ddef55555f8b36f865e8b3a831975a496f0d + * sha 512: ce64dd56ab99bba0a83414fecc82d85322e1ca5ca3a2ca77bdc7055b2dd10fd5e20e3ff62809a696d1b04ff0046fed88e2d7538aa447099d7c2d7df8e627b2e0 + +1.3.2 + + * sha 256: 2cefab73b8d5902b30adb0dda1bd292af2ee808d232abcc4b2a2802d522d5232 + * sha 512: 3789efde2cb6f629c77738dd6c8638646b345d5272868aa9b244b2b19c53e6a0f5911d34744e3a9ff6253c73b2b11f6714f37ae86cc21d6979e0c8539315d659 + +1.3.1 + + * sha 256: 71be224cd99d20da4f039675ec5c48213dd14ef027b804501fa3241886b2b08b + * sha 512: d094b786e5a74b01699997a85747943e6de3544cc903dd1c5dba449c66bd925b6378de800d3734969dabf8a20c7004dc3402e3c59577db09ce107b68a1f7bd21 + +1.3.0 + + * sha 256: aecc5292f56f7250d777110cee1f11a92018a9eb2117d7d37cd51d7d3a5cbae0 + * sha 512: 1d2d220f44787a97359a32f305e33185f0369551e61a9d7066023bfa43de50849eba5bcbb0083d2dc563ac993b8d51dd733afa0adb2a823ef50ecfee5624bbc0 + +1.2.1 + + * sha 256: 803f7667dc4997062f9ec95afcdca0cac68c82a7cf057cef83fe1ccfee33b8bc + * sha 512: 4d6b7efea10d190a153f893123b1715f290f4b131b490f3d23f489e2dd8edbb886001282849aad9575ad2f40375bbbded59c1cb6157115fcc14dd6a2a061b103 + +1.2.0 + + * sha 256: b3c6135833001a0ef600ea9628cca11f4130a524ebe748929d8f7bad034f2bf0 + * sha 512: c044a086a9f65b0d27d05e2f12a20fe5d77386fc5682991c13a1894a84804bcd337c9167235869661d6e6581133521bd710ef2330066a5d2e2703d1630042f3f + +1.1.0 + + * sha 256: fc393e225c549f893b9e21e8b904e546d5857bac1d905b3d26334c8f8a1cda11 + * sha 512: 8b94b1069e767202bcab087cb592eadc42f0453d17ee119d48760be00bc66278cf0fa60bb09308d30cb551df6a7a3e26e2ab8b29c04f0e953cc6906542cd2d6f + +1.0.6 + + * sha 256: 712ae9a8f17a9e589e108f0d503da203cc5eaf1c4a6ca6efb5b4c83b432ce0b8 + * sha 512: d574003023a00cfd6623aac986a5a7f397cfd0bc9114017629a8c72731b0df3977c4a31768502dfa8a6607be06930089b2ccf6ffca9b5bcd1096b7ca0aede226 diff --git a/README.md b/README.md index ef88746..99f75d9 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,7 @@ occur. Once any failure occurs the entire checklist must be completed from scrat * [ ] man/cagebreak-config * [ ] Set EPOCH to release day in man generation in meson.build * [ ] wiki - * [ ] README.md Changelog for major and minor releases but not patches + * [ ] Changelog.md for major and minor releases but not patches * [ ] Fixed bugs documented in Bugs.md * [ ] Include issue description from github * [ ] Testing @@ -134,7 +134,7 @@ occur. Once any failure occurs the entire checklist must be completed from scrat * [ ] meson.build reproducible build versions are current archlinux libraries and gcc * [ ] Cagebreak is reproducible on multiple machines * [ ] Documented reproducible build artefacts - * [ ] Hashes of the artefacts in README.md + * [ ] Hashes of the artefacts in Hashes.md * [ ] Renamed previous signatures * [ ] Created gpg signature of the artefacts * [ ] `gpg --detach-sign -u keyid cagebreak` @@ -169,7 +169,7 @@ occur. Once any failure occurs the entire checklist must be completed from scrat * [ ] Checked archive * [ ] tar -xvf release_version.tar.gz * [ ] cd cagebreak - * [ ] meson build --buildtype=release + * [ ] meson build -Dxwayland=true -Dman-pages=true --buildtype=release * [ ] ninja -C build * [ ] gpg --verify ../signatures/cagebreak.sig build/cagebreak * [ ] cd .. @@ -204,200 +204,8 @@ For every release after 1.0.5, hashes will be provided. For every release after 1.7.0, hashes will be provided for man pages too. -1.8.2 cagebreak +See [Hashes.md](Hashes.md) - * sha 256: f4d275d48ba3d999969f8cb3c8142d27aa8e8d362106ee7575e4b13c02173b2a - * sha 512: 72b11cb966b0978133b9848c2a7f57574c599c7fe895ca9f1cba16930216e1ac8aeae86d976593fc01b15e94ecc1430666f474654cf2fe41eda8c1181bf03f3d - -1.8.2 cagebreak.1 - - * sha 256: 51ee97a7c0b86268cf7622f84f7b1813df8e4a7838c00aae412a611d3693e87a - * sha 512: 5ce826afbee9cbc1129f37463f5b6d4dfc060583f6f7816dd5039b18d66a2b7e22f7293a4aa03acc4e6c690886d0297fef5b9f85d720a4467becfd833b59a160 - -1.8.2 cagebreak-config.5 - - * sha 256: 7c780ba85211ba40c7535b3f10f12312f9edeaa10030228ba21a96724469a325 - * sha 512: 9a56ba16c2aed6f17d4098e54900a5d25602f986e3606dd6ed26563c1920c66404b210dbca9f41bfcc3284bf5a42b750263bcaa2317320f8725e8f9c66e8b893 - -1.8.1 cagebreak - - * sha 256: e3247281d21525413790e3feceae129d9b0559497615d3fdd64ec2fc4ab9ab3d - * sha 512: 8c7c2820be9d7c74e3f9e239c7da740ff41d7f11cd40953dbfbc59c04942077f08625f6d7ec37e6037fd9c4b6950fc4f9af23478080665fdda867c65e0a187bf - -1.8.1 cagebreak.1 - - * sha 256: 96997afdfde9c2719533799aa48c8f036610bb04bc719130d2ab3a3617b072ee - * sha 512: 0831f5d2e3b4f23fd5775df2b7f6486099d64962567222a8fb49e6a40e7d29ed36a7c2c16201bbdcc985ac74f1d0e034b530afbe0ce58d6a0c53d467cff0a6a0 - -1.8.1 cagebreak-config.5 - - * sha 256: bd0e2eb02ba28ec1c8f2bd0fd5cd4c84af24b615fcc477414e49e68e1963cf1b - * sha 512: 7135a2b371294bfdc759a393c13fa0225f1789dba94bb09e96ae689796215b8030280d6cc09c9d1fe139f000f5a4748efd16bb3e5d3b9fcc74a19259802f20ef - -1.8.0 cagebreak - - * sha 256: ac84aa4a08c311da79ca29d92eef4254cb625674b255dbb75621ee6b171a1d79 - * sha 512: c047bb1986fd1d444547e4d64aa7ef9138b3d30327ac3ad9b4c6976e8df6638bae07c39293b5bc9c20e959c0a22b0e40eb2b23b4766d9a5531377ff954b16229 - -1.8.0 cagebreak.1 - - * sha 256: 4de43de7bde67d6d806d206dffc34389f0b5c3ba648bfef673b7bc0adeb29202 - * sha 512: 72aac9a2e9a47f2f85949222d5944dc293332a616e3b961c625fe876172f66638038057c30aa18904d6d969451f468b4fe45e918c0b204cf6952d58ea4c69c33 - -1.8.0 cagebreak-config.5 - - * sha 256: 678aadde06b5ff6bfbd9bc9460423210f9599bcaa0e50c2eae076dc6d6852781 - * sha 512: 72056018fc1c559f26bd7e007b3f1db7d478cec7ec9337620e03a1e3d06910e244a52e8f655ea4f5d73669ffe064bbd23506005d9a6c06764b0f820d7a1df43f - -1.7.4 cagebreak - - * sha 256: c7442db906239b13f8d09e91cbe01f9e47b2a2c75bbb4b52adefd15dfbfa820f - * sha 512: 9c36ce706f31e1b8afacd8f9cd216c460d66030e0b2736a3dd929902b0d5fc52c5e69dbf6787205b8c495d960e00b6e7f633da86ab6e31613f1b4a9fd47c9f0e - -1.7.4 cagebreak.1 - - * sha 256: 3dacc521e5e9b963cceeefeed6a10104c7c415d86826a72788aba5b33ce320f1 - * sha 512: 0a4c4fbff09dd403fed61056ae3211ad2b4370b4e9ed07806fc22624e5312b4a25e469dc0eef1ca4556cbb8efabb0127e7519df79852e110faa98fb17ca377de - -1.7.4 cagebreak-config.5 - - * sha 256: ed22fed1818172f31d3fb3efbe5e66b49f135cb2367b1c85209fd880ff7532ab - * sha 512: cc634c63962ae50b4de20a3aad8ca0970175b53156690d69e6a69fd8f370ad20d84db783cc7e94c61d4d4d89f1205d43622690e58afba549ed57ddad009e3bac - -1.7.3 cagebreak - - * sha 256: 8adb4911d9603fec5b8eb4f67a09be95b8f0b37e50d4ab579191da78df18f70b - * sha 512: eddaecd7b577b9fe77b1ed4d341074f7f860967568392d0479543ea8860b4289df3eb5645885e18e35260b14843663ae50f98103f8016e857237a397632322a6 - -1.7.3 cagebreak.1 - - * sha 256: bcc623e42c86ab65bc2f8cb7e4377ca0d816ddc281527b7caeded62753e943b8 - * sha 512: b4290e1040bd6a299d478ad6b695de75cf030d0d274340b43d3ed4382cf6877f824cd4ed9d7020bfb55afe276c62de7fc07c3fbee6f6485c6440a024115afe12 - -1.7.3 cagebreak-config.5 - - * sha 256: b9789b6abd473e9afb33d4e2c7822f7d8f3c10e9eb3fb70c47b713f6331c626a - * sha 512: c49e01cfc4a4ed272f054bea8f2845f0e3f1609cf85d1a0ce14c1b67dc207df153b11bc20ceef09c855d467f0e013e54623ce9f70c217c4278607fc54d0e3206 - -1.7.2 cagebreak - - * sha 256: 40f4642e8e8caee338055079b046f6e0b790c87226ee307b27a64fcb2a6c6472 - * sha 512: 22c5f1986ca4262a7c08a6c03cffe36eaedd8c3c5e27e12baf12a90f94aea088ac93ee107770f162fc70148be687f6394b8fd64ad3fe14414bdf63b55b33798e - -1.7.2 cagebreak.1 - - * sha 256: 3253e592c40c78fd3733c761163acc2efaaf5865627cf51fd33cc0bc5d9cc6e7 - * sha 512: 901305e166c10aa7e4a26b721a69e0ba4779f4f8ee690551438ceadae65929f13949457872b9397dd46c5b7bad6a6f2638d6fd6df9bc5567c914c798cbf3e9a4 - -1.7.2 cagebreak-config.5 - - * sha 256: 148ec4d80dc9a86485fe77f8daf1f7fa4cb3d1b6aaa709bb012005583779e1f7 - * sha 512: d5732572e47dd07078ac2f6d589522e6007188fc05ac79520c93442212d5c0341459f135191b88c608a75b2f56c2de4065566bd869fbc24e475936d32a54a7f8 - -1.7.1 cagebreak - - * sha 256: 5a40797e016a2fa32b5bb70a056b35c482bef09f1795bbaf0188dbadaf8197c3 - * sha 512: 2ef327b63ac4651f23517be8d5cb8fbec99bd889f52f8abfd62a09ca6e6c0060347ab8d60e4917d39edd36db34597a673239967533f14457733acb97f6c29a7f - -1.7.1 cagebreak.1 - - * sha 256: 0301f04254ae6e7ada7e22bbe7aee022ec0793fbce434a396868258e6f1ea4cf - * sha 512: f0c0c5de30be907e9ba5c9cfa0bca8cef3e94c0b5f52de9e2c3681c85aa957f75e92b5e26bb894c3a5e251295cfe7a1470653cc7dc05564d7d91c6eb43b7409a - -1.7.1 cagebreak-config.5 - - * sha 256: 6882330a77f3ff98ea642f47b4090b38d542abf0b7be3f226486c5614899efc6 - * sha 512: a572f97836e4ccc6d67aa21c7f4aaebe06adb066c70038b670ec1ef267e3750764cb53e96b8d7bc24c7f993f24c0cfabee183307b45006d049f7416559bcaca4 - -1.7.0 - - * sha 256: 5af11b84e61a82a1a276e8f91f6ebc6baafd2c98d22be3da1d01734cc9d55faa - * sha 512: 45474115fb4c28fe1ee91ad54706bfe521b6e70bd8ea619b94a3f50bae426891bf6a0387aa9b2f7f6d18349280c4e84973e4e433d50c090e5a764c64fa67795d - -1.6.0 - - * sha 256: aef473eae73454429afb158d66a7bd9aec75ef915845b7508de5448820357aa8 - * sha 512: 17889bc1af9f343598a5ee599b25e702987dd0bd905a9566874e8a0094c57168e413938624949fa214e6e382cbcf89d7342292b44012cd8e692947f6c01a960a - -1.5.1 - - * sha 256: 9c6df4b94c180f5657cb424383aa2bf3aca063c8e7b40af0497be1ef7bdb858a - * sha 512: 219f753347ae64a4dd593568797438742e9ddae380c729598d8eda863080a6ed4e5086d735fc348c48328bb795a5a5b57b0421be5dd45755744d895b24312627 - -1.5.0 - - * sha 256: 22010e2916493b0d7cfb08c2196f12589509ce11010a7107aed13ddbfd9709cc - * sha 512: 707d6cc01326ba32402f9fb402ff8aceaeaba63ca6ba2eb157e5a4c83123515a3a74da960813479db303eddc2e7f79f39b241dff05b89d47d72d5f1d20ca6d37 - -1.4.4 - - * sha 256: c6e08e19feb17f768e136cf02f5692ef121ff289763dc60ef8678103803d3307 - * sha 512: aebf27fa9c24f93dfd0b7c96536c253e2ea603d6746c40e8de2163e06367bc57ac4e22d6c07dd1e0963cce5b18b460d373e15b5c12a5a42ae6b70787971960c9 - -1.4.3 - - * sha 256: 5e29cbaf7c0c5ca74f71a5605bb3d6e302e051798401fee9a79419720b8d8e95 - * sha 512: 8004865f8603648d9ac9bb700f3ee040e6516c222ad3d783b34219c8fa3a7bdbba6abb74fe92c4d0bd4dbbce0ec4d08be12297a8bad5032baeb589eec557e24e - -1.4.2 - - * sha 256: 27efb9328cf9cab1f81e66627696baf8c7cc2c372339a2890f955b40f3a7c396 - * sha 512: afcdbbce0753aff4770a88ddbd7df5687a7de0c77de3a2d296f85a8b8e01813212be6a0b69548aadef58e0e7da19ffea71c4f3448572656d4b19ff7f2f2fb70a - -1.4.1 - - * sha 256: c3e0ccceaf1078b91071c40b0ccb7c4f8e53ae38b05ee6637f9f39f7f6ece2cb - * sha 512: fd77f39fc7a7e5376d8505a61d643ed4d8f4cfbbf38d70cf9ef6989645e8cc6cb9d4b1024d241dc689b6fd927a405c97b9c918b6994b8f9ab7406646f37b952d - -1.4.0 - - * sha 256: 14aa93d890c62cc763b3b546a51ad8560479d5e91fa9f949858ae6bc785e80be - * sha 512: 88f93b49792684c38553b65d2296a0e502a059814a0cfff30d05c89958870d6f66d67aac2074cfd307bad82b0d72d5c4944822a61a68f665dc161407db365fbc - -1.3.4 - - * sha 256: ea9f634b8f6e2b9f191745a25abff4969eb7ea19cb3186b79a6138904aedeb1c - * sha 512: 9094f9c92acbff8fd95d38e7458c5184804f8913fa8c405bc2b6a0a220fe478b06cfeadbae41bd5ef84bde8d5642c249df9dada953e39c25926aa650c30a5309 - -1.3.3 - - * sha 256: 801851ceb52afac333a1decdd236ddef55555f8b36f865e8b3a831975a496f0d - * sha 512: ce64dd56ab99bba0a83414fecc82d85322e1ca5ca3a2ca77bdc7055b2dd10fd5e20e3ff62809a696d1b04ff0046fed88e2d7538aa447099d7c2d7df8e627b2e0 - -1.3.2 - - * sha 256: 2cefab73b8d5902b30adb0dda1bd292af2ee808d232abcc4b2a2802d522d5232 - * sha 512: 3789efde2cb6f629c77738dd6c8638646b345d5272868aa9b244b2b19c53e6a0f5911d34744e3a9ff6253c73b2b11f6714f37ae86cc21d6979e0c8539315d659 - -1.3.1 - - * sha 256: 71be224cd99d20da4f039675ec5c48213dd14ef027b804501fa3241886b2b08b - * sha 512: d094b786e5a74b01699997a85747943e6de3544cc903dd1c5dba449c66bd925b6378de800d3734969dabf8a20c7004dc3402e3c59577db09ce107b68a1f7bd21 - -1.3.0 - - * sha 256: aecc5292f56f7250d777110cee1f11a92018a9eb2117d7d37cd51d7d3a5cbae0 - * sha 512: 1d2d220f44787a97359a32f305e33185f0369551e61a9d7066023bfa43de50849eba5bcbb0083d2dc563ac993b8d51dd733afa0adb2a823ef50ecfee5624bbc0 - -1.2.1 - - * sha 256: 803f7667dc4997062f9ec95afcdca0cac68c82a7cf057cef83fe1ccfee33b8bc - * sha 512: 4d6b7efea10d190a153f893123b1715f290f4b131b490f3d23f489e2dd8edbb886001282849aad9575ad2f40375bbbded59c1cb6157115fcc14dd6a2a061b103 - -1.2.0 - - * sha 256: b3c6135833001a0ef600ea9628cca11f4130a524ebe748929d8f7bad034f2bf0 - * sha 512: c044a086a9f65b0d27d05e2f12a20fe5d77386fc5682991c13a1894a84804bcd337c9167235869661d6e6581133521bd710ef2330066a5d2e2703d1630042f3f - -1.1.0 - - * sha 256: fc393e225c549f893b9e21e8b904e546d5857bac1d905b3d26334c8f8a1cda11 - * sha 512: 8b94b1069e767202bcab087cb592eadc42f0453d17ee119d48760be00bc66278cf0fa60bb09308d30cb551df6a7a3e26e2ab8b29c04f0e953cc6906542cd2d6f - -1.0.6 - - * sha 256: 712ae9a8f17a9e589e108f0d503da203cc5eaf1c4a6ca6efb5b4c83b432ce0b8 - * sha 512: d574003023a00cfd6623aac986a5a7f397cfd0bc9114017629a8c72731b0df3977c4a31768502dfa8a6607be06930089b2ccf6ffca9b5bcd1096b7ca0aede226 #### GPG Signatures @@ -410,7 +218,7 @@ Due to errors in the release process, the releases 1.7.1 and 1.7.2 did not inclu signatures in the appropriate folder of the git repository. However, signatures were provided as release-artefacts at the time of release. The signatures were introduced into the repository with 1.7.3. The integrity of cagebreak is still the same because the signatures were -provided as release-artefacts (which were themselves signed) and the hashes in README.md +provided as release-artefacts (which were themselves signed) and the hashes in Hashes.md are part of a signed release tag. #### Signing Keys @@ -525,41 +333,7 @@ public key or provide the fingerprint and directions to obtain the key. ## Changelog -### Release 1.0.0 - -Adds basic tiling window manager functionality to cage. - -### Release 1.1.0 - -Unifies commands and actions. See Issue 4 in Bugs.md. - -### Release 1.2.0 - -Adds output configuration as described in the man pages. - -### Release 1.3.0 - -Adds IPC as described in the man pages. - -### Release 1.4.0 - -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. - -### Release 1.6.0 - -Adds support for non-build dependencies and an option for builds without pandoc. - -### Release 1.7.0 - -Improve window ordering. - -### Release 1.8.0 - -Adds libinput configuration and virtual keyboard and pointer support. +See [Changelog.md](Changelog.md) ## Contributors @@ -569,4 +343,349 @@ Adds libinput configuration and virtual keyboard and pointer support. ## License -Please see [LICENSE](https://github.com/project-repo/cagebreak/blob/master/LICENSE) +Please see [LICENSE](https://github.com/project-repo/cagebreak/blob/master/LICENSE# Cagebreak: A Wayland Tiling Compositor Inspired by Ratpoison + +This is Cagebreak, a Wayland tiling compositor. The goal of this project is to +provide a successor to ratpoison for Wayland users. However, this is +no reimplementation of ratpoison. Should you like to know if a feature +will be implemented, open an issue or get in touch with the development team. + +For documentation of Cagebreak, please see +the man pages for [cagebreak](man/cagebreak.1.md) and cagebreak +[configuration](man/cagebreak-config.5.md) and the +[Wiki](https://github.com/project-repo/cagebreak/wiki/). + +Cagebreak is based on [Cage](https://github.com/Hjdskes/cage), a Wayland kiosk +compositor. + +Cagebreak is currently being developed under Arch Linux and uses the libraries +as they are obtained through pacman. However, cagebreak should also work on +other distributions given the proper library versions. + +## Installation + +If you are using archlinux, just use the PKGBUILDs from the aur: + + * Using the `cagebreak` package, Cagebreak is compiled on the target system (since release 1.3.0) + * Using `cagebreak-bin` package, the pre-built binaries are extracted to the appropriate paths on the target system (since release 1.3.2) + +See [cagebreak-pkgbuild](https://github.com/project-repo/cagebreak-pkgbuild) for details. + +### Obtaining Source Code + +There are different ways to obtain cagebreak source: + + * git clone (for all releases) + * download release asset tarballs (starting at release 1.2.1) + +### Verifying Source Code + +There are corresponding methods of verifying that you obtained the correct code: + + * our git history includes signed tags for releases + * release assets starting at release 1.2.1 contain a signature for the tarball + +### Building Cagebreak + +You can build Cagebreak with the [meson](https://mesonbuild.com/) build system. It +requires wayland, wlroots and xkbcommon to be installed. Note that Cagebreak is +developed against the latest tag of wlroots, in order not to constantly chase +breaking changes as soon as they occur. + +Simply execute the following steps to build Cagebreak: + +``` +$ meson build +$ ninja -C build +``` + +#### Release Build + +By default, this builds a debug build. To build a release build, use `meson +build --buildtype=release`. + +#### Xwayland Support + +Cagebreak comes with compile-time support for XWayland. To enable this, +first make sure that your version of wlroots is compiled with this +option. Then, add `-Dxwayland=true` to the `meson` command above. Note +that you'll need to have the XWayland binary installed on your system +for this to work. + +#### Man Pages + +Cagebreak has man pages. To use them, make sure that you have `pandoc` +installed. Then, add `-Dman-pages=true` to the `meson` command. + +### Running Cagebreak + +You can start Cagebreak by running `./build/cagebreak`. If you run it from +within an existing X11 or Wayland session, it will open in a virtual output as +a window in your existing session. If you run it in a TTY, it'll run with the +KMS+DRM backend. For more configuration options, see the man pages. + +## Contributing to Cagebreak + +Cagebreak is currently developed to fit the needs of its creators. Should you desire +to implement a feature, please let us know in advance by opening an issue. However, +the feature set is intentionally limited (i.e. we removed support for a desktop +background) and will continue to be so in the future. + +Nonetheless, don't be intimidated by the (slightly lengthy) release checklist or any other +part of this file. Do what you can, open an issue and we will collaborate +toward a solution. + +### Branching Strategy and Versioning + +All features are to be developed on feature branches, named after the feature. + +There exists a branch `development` to which all reasonable feature branches +are merged for final testing. + +Once `development` is ready for a release, meaning that the release checklist is fulfilled, +it is merged into `master`, creating a new release, which is tagged and signed. + +All releases are tagged according to [semantic versioning](https://semver.org) guidelines. + +In the past, our git history did not perfectly reflect this scheme. + +### Releases + +The release checklist must be completely fulfilled in one run for a release to +occur. Once any failure occurs the entire checklist must be completed from scratch. + + * [ ] `git checkout development` + * [ ] `git pull origin development` + * [ ] `git push origin development` + * [ ] `ninja -C build clang-format` makes no changes + * [ ] New version number determined according to [semantic versioning](https://semver.org) guidelines + * [ ] Relevant Documentation completed + * [ ] New features + * [ ] man pages + * [ ] man/cagebreak + * [ ] man/cagebreak-config + * [ ] Set EPOCH to release day in man generation in meson.build + * [ ] wiki + * [ ] Changelog.md for major and minor releases but not patches + * [ ] Fixed bugs documented in Bugs.md + * [ ] Include issue description from github + * [ ] Testing + * [ ] Manual testing + * [ ] Libfuzzer testing + * [ ] Version Number + * [ ] meson.build + * [ ] git tag + * [ ] man pages + * [ ] meson.build reproducible build versions are current archlinux libraries and gcc + * [ ] Cagebreak is reproducible on multiple machines + * [ ] Documented reproducible build artefacts + * [ ] Hashes of the artefacts in Hashes.md + * [ ] Renamed previous signatures + * [ ] Created gpg signature of the artefacts + * [ ] `gpg --detach-sign -u keyid cagebreak` + * [ ] `gpg --detach-sign -u keyid cagebreak.1` + * [ ] `gpg --detach-sign -u keyid cagebreak-config.5` + * [ ] `git add` relevant files + * [ ] `git commit` + * [ ] `git push origin development` + * [ ] Determined commit and tag message (Start with "Release version_number\n\n") + * [ ] Mentioned fixed Bugs.md issues ("Fixed Issue n") + * [ ] Mentioned other important changes + * [ ] `git checkout master` + * [ ] `git merge --squash development` + * [ ] `git commit` and insert message + * [ ] `git tag -u keyid version HEAD` and insert message + * [ ] `git tag -v version` and check output + * [ ] `git push --tags origin master` + * [ ] `git checkout development` + * [ ] `git merge master` + * [ ] `git push --tags origin development` + * [ ] `git archive --prefix=cagebreak/ -o release_version.tar.gz tags/version .` + * [ ] Create release-artefacts_version.tar.gz + * [ ] `mkdir release-artefacts_version` + * [ ] `cp build/cagebreak release-artefacts_version/` + * [ ] `cp build/cagebreak.sig release-artefacts_version/` + * [ ] `cp build/cagebreak.1 release-artefacts_version/` + * [ ] `cp build/cagebreak.1.sig release-artefacts_version/` + * [ ] `cp build/cagebreak-config.5 release-artefacts_version/` + * [ ] `cp build/cagebreak-config.5.sig release-artefacts_version/` + * [ ] `cp LICENSE release-artefacts_version/` + * [ ] `export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) ; tar --sort=name --mtime= --owner=0 --group=0 --numeric-owner -czf release-artefacts_version.tar.gz release-artefacts_version` + * [ ] Checked archive + * [ ] tar -xvf release_version.tar.gz + * [ ] cd cagebreak + * [ ] meson build -Dxwayland=true -Dman-pages=true --buildtype=release + * [ ] ninja -C build + * [ ] gpg --verify ../signatures/cagebreak.sig build/cagebreak + * [ ] cd .. + * [ ] rm -rf cagebreak + * [ ] `gpg --detach-sign -u keyid release_version.tar.gz` + * [ ] `gpg --detach-sign -u keyid release-artefacts_version.tar.gz` + * [ ] Upload archives and signatures as release assets + +### Reproducible Builds + +Cagebreak offers reproducible builds given the exact library versions specified +in `meson.build`. Should a version mismatch occur, a warning will be emitted. We have +decided on this compromise to allow flexibility and security. In general we will +adapt the versions to the packages available under Arch Linux at the time of +release. + +There are reproducibility issues up to and including release `1.2.0`. See +`Issue 5` in [Bugs.md](Bugs.md). + +#### Reproducible Build Instructions + +All hashes and signatures are provided for the following build instructions. + +``` +meson build -Dxwayland=true -Dman-pages=true --buildtype=release +ninja -C build +``` + +#### Hashes for Builds + +For every release after 1.0.5, hashes will be provided. + +For every release after 1.7.0, hashes will be provided for man pages too. + +See [Hashes.md](Hashes.md) + + +#### GPG Signatures + +For every release after 1.0.5, a GPG signature will be provided in `signatures`. + +The current signature is called `cagebreak.sig`, whereas all older signatures +will be named after their release version. + +Due to errors in the release process, the releases 1.7.1 and 1.7.2 did not include the release +signatures in the appropriate folder of the git repository. However, signatures were provided +as release-artefacts at the time of release. The signatures were introduced into the +repository with 1.7.3. The integrity of cagebreak is still the same because the signatures were +provided as release-artefacts (which were themselves signed) and the hashes in Hashes.md +are part of a signed release tag. + +#### Signing Keys + +All releases are signed by at least one of the following collection of +keys. + + * E79F6D9E113529F4B1FFE4D5C4F974D70CEC2C5B + * 4739D329C9187A1C2795C20A02ABFDEC3A40545F + * 7535AB89220A5C15A728B75F74104CC7DCA5D7A8 + * 827BC2320D535AEAD0540E6E2E66F65D99761A6F + * A88D7431E5BAAD0B6EAE550AC8D61D8BD4FA3C46 + * 8F872885968EB8C589A32E9539ACC012896D450F + * 896B92AF738C974E0065BF42F2576BD366156BB9 + * AA927AFD50AF7C6810E69FE8274F2C605359E31B + +Should we at any point retire a key, we will only replace it with keys signed +by at least one of the above collection. + +We registered project-repo.co and added mail addresses after release `1.3.0`. + +We now have a mail address and its key is signed by signing keys. See Security +Bugs for details. + +The full public keys can be found in `keys/` along with any revocation certificates. + +### GCC and -fanalyzer + +Cagebreak should compile with any reasonably new gcc or clang. Consider +a gcc version of at least [10.1](https://gcc.gnu.org/gcc-10/changes.html) if +you want to get the benefit of the brand-new +[-fanalyzer](https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html) +flag. However, this new flag sometimes produces false-postives and we +selectively disable warnings for affected code segments as described below. + +Meson is configured to set `CG_HAS_FANALYZE` if `-fanalyzer` is available. +Therefore, to maintain portability, false-positive fanalyzer warnings are to be +disabled using the following syntax: + +``` +#if CG_HAS_FANALYZE +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "WARNING OPTION" +#endif +``` +and after + +``` +#if CG_HAS_FANALYZE +#pragma GCC diagnostic pop +#endif +``` + +### Fuzzing + +Along with the project source code, a fuzzing framework based on `libfuzzer` is +supplied. This allows for the testing of the parsing code responsible for reading +the `cagebreak` configuration file. When `libfuzzer` is available (please +use the `clang` compiler to enable it), building the fuzz-testing software can +be enabled by passing `-Dfuzz=true` to meson. This generates a `build/fuzz/fuzz-parse` +binary according to the `libfuzzer` specifications. Further documentation on +how to run this binary can be found [here](https://llvm.org/docs/LibFuzzer.html). + +Here is an example workflow: + +``` +rm -rf build +CC=clang meson build -Dfuzz=true -Db_sanitize=address,undefined -Db_lundef=false +ninja -C build/ +mkdir build/fuzz_corpus +cp examples/config build/fuzz_corpus/ +WLR_BACKENDS=headless ./build/fuzz/fuzz-parse -jobs=12 -max_len=50000 -close_fd_mask=3 build/fuzz_corpus/ +``` + +You may want to tweak `-jobs` or add other options depending on your own setup. +We have found code path discovery to increase rapidly when the fuzzer is supplied +with an initial config file. We are working on improving our fuzzing coverage to +find bugs in other areas of the code. + +#### Caveat + +Currently, there are memory leaks which do not seem to stem from our code but rather +the code of wl-roots or some other library we depend on. We are working on the problem. +In the meantime, add `-Db_detect-leaks=0` to the meson command to exclude memory leaks. + +## Bugs + +For any bug, please [create an +issue](https://github.com/project-repo/cagebreak/issues/new) on +[GitHub](https://github.com/project-rep/cagebreak). + +Fixed bugs are to be assigned a number and summarized inside Bugs.md for future reference +independent of github, in case this service is unavailable. + +### Security Bugs + +Should you want to get in touch with the developers of cagebreak to report a +security vulnerability or a different issue confidentially, contact +`cagebreak @ project-repo . co`. + +We will try to respond to everything that is not obvious spam. + +Please encrypt your email with the appropriate GPG key found in `keys/`. + + * B15B92642760E11FE002DE168708D42451A94AB5 + * F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C + +Note that the keys are signed by cagebreak signing keys. + +If you want us to respond via GPG-encrypted mail, please include your own +public key or provide the fingerprint and directions to obtain the key. + +## Changelog + +See [Changelog.md](Changelog.md) + +## Contributors + + * Aisha Tammy + * [make man pages optional](https://github.com/project-repo/cagebreak/pull/4), released + in 1.6.0 with slight modifications + +## License + +Please see [LICENSE](https://github.com/project-repo/cagebreak/blob/master/LICENSE)) diff --git a/meson.build b/meson.build index b81b261..903ac1a 100644 --- a/meson.build +++ b/meson.build @@ -229,11 +229,11 @@ foreach name, dep : cagebreak_dependencies_dict if reproducible_build_versions[name] != '-1' if dep[1] == false if dep[0].version() < reproducible_build_versions[name] - warning('The installed version of "' + name + '" on your machine (' + dep[0].version() + ') is older than the one used to generate the binary specified in the README section "Reproducible Builds" (' + reproducible_build_versions[name] + '). It is recommended to use an up-to-date version for compiling cagebreak.' + warning('The installed version of "' + name + '" on your machine (' + dep[0].version() + ') is older than the one used to generate the binary specified in Hashes.md (' + reproducible_build_versions[name] + '). It is recommended to use an up-to-date version for compiling cagebreak.' ) endif elif reproducible_build_versions[name] != dep[0].version() - warning('The installed version of "' + name + '" on your machine (' + dep[0].version() + ') differs from the one used to generate the binary specified in the README section "Reproducible Builds" (' + reproducible_build_versions[name] + '). Cagebreak does not guarantee a reproducible build for this configuration.' + warning('The installed version of "' + name + '" on your machine (' + dep[0].version() + ') differs from the one used to generate the binary specified in Hashes.md (' + reproducible_build_versions[name] + '). Cagebreak does not guarantee a reproducible build for this configuration.' ) break endif @@ -244,9 +244,9 @@ reproducible_build_compiler = 'gcc' reproducible_build_compiler_version = '11.1.0' if cc.get_id() != reproducible_build_compiler - warning('The compiler "' + cc.get_id() + '" differs from the one used to generate to binary specified in the README section "Reproducible Builds" (' + reproducible_build_compiler + ').') + warning('The compiler "' + cc.get_id() + '" differs from the one used to generate to binary specified in Hashes.md (' + reproducible_build_compiler + ').') elif cc.version() != reproducible_build_compiler_version - warning('The version of ' + cc.get_id() + ' (' + cc.version() + ') differs from the one used to generate the binary specified in the README section "Reproducible Builds" ' + reproducible_build_compiler_version + '.') + warning('The version of ' + cc.get_id() + ' (' + cc.version() + ') differs from the one used to generate the binary specified in Hashes.md ' + reproducible_build_compiler_version + '.') endif executable( From d71139b500db154de5dab1be814b2d04b04c8020 Mon Sep 17 00:00:00 2001 From: Cagebreak Signing Key 7 Date: Thu, 30 Dec 2021 23:19:28 +0100 Subject: [PATCH 3/5] Fix typo --- Changelog.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 5c16076..c5a2f73 100644 --- a/Changelog.md +++ b/Changelog.md @@ -30,9 +30,12 @@ Adds support for non-build dependencies and an option for builds without pandoc. ## Release 1.7.0 -Improve window ordering. +Improves window ordering. ## Release 1.8.0 Adds libinput configuration and virtual keyboard and pointer support. +## Release 1.9.0 + +Adds TODO see release.delete From 296b106d441e0d5ae495a14b720131367b06f615 Mon Sep 17 00:00:00 2001 From: Cagebreak Signing Key 7 Date: Fri, 31 Dec 2021 12:55:13 +0100 Subject: [PATCH 4/5] Fix README copy error --- README.md | 365 +----------------------------------------------------- 1 file changed, 3 insertions(+), 362 deletions(-) diff --git a/README.md b/README.md index 99f75d9..17e84b1 100644 --- a/README.md +++ b/README.md @@ -308,28 +308,13 @@ In the meantime, add `-Db_detect-leaks=0` to the meson command to exclude memory For any bug, please [create an issue](https://github.com/project-repo/cagebreak/issues/new) on -[GitHub](https://github.com/project-rep/cagebreak). +[GitHub](https://github.com/project-repo/cagebreak). Fixed bugs are to be assigned a number and summarized inside Bugs.md for future reference independent of github, in case this service is unavailable. -### Security Bugs - -Should you want to get in touch with the developers of cagebreak to report a -security vulnerability or a different issue confidentially, contact -`cagebreak @ project-repo . co`. - -We will try to respond to everything that is not obvious spam. - -Please encrypt your email with the appropriate GPG key found in `keys/`. - - * B15B92642760E11FE002DE168708D42451A94AB5 - * F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C - -Note that the keys are signed by cagebreak signing keys. - -If you want us to respond via GPG-encrypted mail, please include your own -public key or provide the fingerprint and directions to obtain the key. +For other means of contacting the Cagebreak authors and for security issues +see [SECURITY.md](SECURITY.md). ## Changelog @@ -345,347 +330,3 @@ See [Changelog.md](Changelog.md) Please see [LICENSE](https://github.com/project-repo/cagebreak/blob/master/LICENSE# Cagebreak: A Wayland Tiling Compositor Inspired by Ratpoison -This is Cagebreak, a Wayland tiling compositor. The goal of this project is to -provide a successor to ratpoison for Wayland users. However, this is -no reimplementation of ratpoison. Should you like to know if a feature -will be implemented, open an issue or get in touch with the development team. - -For documentation of Cagebreak, please see -the man pages for [cagebreak](man/cagebreak.1.md) and cagebreak -[configuration](man/cagebreak-config.5.md) and the -[Wiki](https://github.com/project-repo/cagebreak/wiki/). - -Cagebreak is based on [Cage](https://github.com/Hjdskes/cage), a Wayland kiosk -compositor. - -Cagebreak is currently being developed under Arch Linux and uses the libraries -as they are obtained through pacman. However, cagebreak should also work on -other distributions given the proper library versions. - -## Installation - -If you are using archlinux, just use the PKGBUILDs from the aur: - - * Using the `cagebreak` package, Cagebreak is compiled on the target system (since release 1.3.0) - * Using `cagebreak-bin` package, the pre-built binaries are extracted to the appropriate paths on the target system (since release 1.3.2) - -See [cagebreak-pkgbuild](https://github.com/project-repo/cagebreak-pkgbuild) for details. - -### Obtaining Source Code - -There are different ways to obtain cagebreak source: - - * git clone (for all releases) - * download release asset tarballs (starting at release 1.2.1) - -### Verifying Source Code - -There are corresponding methods of verifying that you obtained the correct code: - - * our git history includes signed tags for releases - * release assets starting at release 1.2.1 contain a signature for the tarball - -### Building Cagebreak - -You can build Cagebreak with the [meson](https://mesonbuild.com/) build system. It -requires wayland, wlroots and xkbcommon to be installed. Note that Cagebreak is -developed against the latest tag of wlroots, in order not to constantly chase -breaking changes as soon as they occur. - -Simply execute the following steps to build Cagebreak: - -``` -$ meson build -$ ninja -C build -``` - -#### Release Build - -By default, this builds a debug build. To build a release build, use `meson -build --buildtype=release`. - -#### Xwayland Support - -Cagebreak comes with compile-time support for XWayland. To enable this, -first make sure that your version of wlroots is compiled with this -option. Then, add `-Dxwayland=true` to the `meson` command above. Note -that you'll need to have the XWayland binary installed on your system -for this to work. - -#### Man Pages - -Cagebreak has man pages. To use them, make sure that you have `pandoc` -installed. Then, add `-Dman-pages=true` to the `meson` command. - -### Running Cagebreak - -You can start Cagebreak by running `./build/cagebreak`. If you run it from -within an existing X11 or Wayland session, it will open in a virtual output as -a window in your existing session. If you run it in a TTY, it'll run with the -KMS+DRM backend. For more configuration options, see the man pages. - -## Contributing to Cagebreak - -Cagebreak is currently developed to fit the needs of its creators. Should you desire -to implement a feature, please let us know in advance by opening an issue. However, -the feature set is intentionally limited (i.e. we removed support for a desktop -background) and will continue to be so in the future. - -Nonetheless, don't be intimidated by the (slightly lengthy) release checklist or any other -part of this file. Do what you can, open an issue and we will collaborate -toward a solution. - -### Branching Strategy and Versioning - -All features are to be developed on feature branches, named after the feature. - -There exists a branch `development` to which all reasonable feature branches -are merged for final testing. - -Once `development` is ready for a release, meaning that the release checklist is fulfilled, -it is merged into `master`, creating a new release, which is tagged and signed. - -All releases are tagged according to [semantic versioning](https://semver.org) guidelines. - -In the past, our git history did not perfectly reflect this scheme. - -### Releases - -The release checklist must be completely fulfilled in one run for a release to -occur. Once any failure occurs the entire checklist must be completed from scratch. - - * [ ] `git checkout development` - * [ ] `git pull origin development` - * [ ] `git push origin development` - * [ ] `ninja -C build clang-format` makes no changes - * [ ] New version number determined according to [semantic versioning](https://semver.org) guidelines - * [ ] Relevant Documentation completed - * [ ] New features - * [ ] man pages - * [ ] man/cagebreak - * [ ] man/cagebreak-config - * [ ] Set EPOCH to release day in man generation in meson.build - * [ ] wiki - * [ ] Changelog.md for major and minor releases but not patches - * [ ] Fixed bugs documented in Bugs.md - * [ ] Include issue description from github - * [ ] Testing - * [ ] Manual testing - * [ ] Libfuzzer testing - * [ ] Version Number - * [ ] meson.build - * [ ] git tag - * [ ] man pages - * [ ] meson.build reproducible build versions are current archlinux libraries and gcc - * [ ] Cagebreak is reproducible on multiple machines - * [ ] Documented reproducible build artefacts - * [ ] Hashes of the artefacts in Hashes.md - * [ ] Renamed previous signatures - * [ ] Created gpg signature of the artefacts - * [ ] `gpg --detach-sign -u keyid cagebreak` - * [ ] `gpg --detach-sign -u keyid cagebreak.1` - * [ ] `gpg --detach-sign -u keyid cagebreak-config.5` - * [ ] `git add` relevant files - * [ ] `git commit` - * [ ] `git push origin development` - * [ ] Determined commit and tag message (Start with "Release version_number\n\n") - * [ ] Mentioned fixed Bugs.md issues ("Fixed Issue n") - * [ ] Mentioned other important changes - * [ ] `git checkout master` - * [ ] `git merge --squash development` - * [ ] `git commit` and insert message - * [ ] `git tag -u keyid version HEAD` and insert message - * [ ] `git tag -v version` and check output - * [ ] `git push --tags origin master` - * [ ] `git checkout development` - * [ ] `git merge master` - * [ ] `git push --tags origin development` - * [ ] `git archive --prefix=cagebreak/ -o release_version.tar.gz tags/version .` - * [ ] Create release-artefacts_version.tar.gz - * [ ] `mkdir release-artefacts_version` - * [ ] `cp build/cagebreak release-artefacts_version/` - * [ ] `cp build/cagebreak.sig release-artefacts_version/` - * [ ] `cp build/cagebreak.1 release-artefacts_version/` - * [ ] `cp build/cagebreak.1.sig release-artefacts_version/` - * [ ] `cp build/cagebreak-config.5 release-artefacts_version/` - * [ ] `cp build/cagebreak-config.5.sig release-artefacts_version/` - * [ ] `cp LICENSE release-artefacts_version/` - * [ ] `export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) ; tar --sort=name --mtime= --owner=0 --group=0 --numeric-owner -czf release-artefacts_version.tar.gz release-artefacts_version` - * [ ] Checked archive - * [ ] tar -xvf release_version.tar.gz - * [ ] cd cagebreak - * [ ] meson build -Dxwayland=true -Dman-pages=true --buildtype=release - * [ ] ninja -C build - * [ ] gpg --verify ../signatures/cagebreak.sig build/cagebreak - * [ ] cd .. - * [ ] rm -rf cagebreak - * [ ] `gpg --detach-sign -u keyid release_version.tar.gz` - * [ ] `gpg --detach-sign -u keyid release-artefacts_version.tar.gz` - * [ ] Upload archives and signatures as release assets - -### Reproducible Builds - -Cagebreak offers reproducible builds given the exact library versions specified -in `meson.build`. Should a version mismatch occur, a warning will be emitted. We have -decided on this compromise to allow flexibility and security. In general we will -adapt the versions to the packages available under Arch Linux at the time of -release. - -There are reproducibility issues up to and including release `1.2.0`. See -`Issue 5` in [Bugs.md](Bugs.md). - -#### Reproducible Build Instructions - -All hashes and signatures are provided for the following build instructions. - -``` -meson build -Dxwayland=true -Dman-pages=true --buildtype=release -ninja -C build -``` - -#### Hashes for Builds - -For every release after 1.0.5, hashes will be provided. - -For every release after 1.7.0, hashes will be provided for man pages too. - -See [Hashes.md](Hashes.md) - - -#### GPG Signatures - -For every release after 1.0.5, a GPG signature will be provided in `signatures`. - -The current signature is called `cagebreak.sig`, whereas all older signatures -will be named after their release version. - -Due to errors in the release process, the releases 1.7.1 and 1.7.2 did not include the release -signatures in the appropriate folder of the git repository. However, signatures were provided -as release-artefacts at the time of release. The signatures were introduced into the -repository with 1.7.3. The integrity of cagebreak is still the same because the signatures were -provided as release-artefacts (which were themselves signed) and the hashes in Hashes.md -are part of a signed release tag. - -#### Signing Keys - -All releases are signed by at least one of the following collection of -keys. - - * E79F6D9E113529F4B1FFE4D5C4F974D70CEC2C5B - * 4739D329C9187A1C2795C20A02ABFDEC3A40545F - * 7535AB89220A5C15A728B75F74104CC7DCA5D7A8 - * 827BC2320D535AEAD0540E6E2E66F65D99761A6F - * A88D7431E5BAAD0B6EAE550AC8D61D8BD4FA3C46 - * 8F872885968EB8C589A32E9539ACC012896D450F - * 896B92AF738C974E0065BF42F2576BD366156BB9 - * AA927AFD50AF7C6810E69FE8274F2C605359E31B - -Should we at any point retire a key, we will only replace it with keys signed -by at least one of the above collection. - -We registered project-repo.co and added mail addresses after release `1.3.0`. - -We now have a mail address and its key is signed by signing keys. See Security -Bugs for details. - -The full public keys can be found in `keys/` along with any revocation certificates. - -### GCC and -fanalyzer - -Cagebreak should compile with any reasonably new gcc or clang. Consider -a gcc version of at least [10.1](https://gcc.gnu.org/gcc-10/changes.html) if -you want to get the benefit of the brand-new -[-fanalyzer](https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html) -flag. However, this new flag sometimes produces false-postives and we -selectively disable warnings for affected code segments as described below. - -Meson is configured to set `CG_HAS_FANALYZE` if `-fanalyzer` is available. -Therefore, to maintain portability, false-positive fanalyzer warnings are to be -disabled using the following syntax: - -``` -#if CG_HAS_FANALYZE -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "WARNING OPTION" -#endif -``` -and after - -``` -#if CG_HAS_FANALYZE -#pragma GCC diagnostic pop -#endif -``` - -### Fuzzing - -Along with the project source code, a fuzzing framework based on `libfuzzer` is -supplied. This allows for the testing of the parsing code responsible for reading -the `cagebreak` configuration file. When `libfuzzer` is available (please -use the `clang` compiler to enable it), building the fuzz-testing software can -be enabled by passing `-Dfuzz=true` to meson. This generates a `build/fuzz/fuzz-parse` -binary according to the `libfuzzer` specifications. Further documentation on -how to run this binary can be found [here](https://llvm.org/docs/LibFuzzer.html). - -Here is an example workflow: - -``` -rm -rf build -CC=clang meson build -Dfuzz=true -Db_sanitize=address,undefined -Db_lundef=false -ninja -C build/ -mkdir build/fuzz_corpus -cp examples/config build/fuzz_corpus/ -WLR_BACKENDS=headless ./build/fuzz/fuzz-parse -jobs=12 -max_len=50000 -close_fd_mask=3 build/fuzz_corpus/ -``` - -You may want to tweak `-jobs` or add other options depending on your own setup. -We have found code path discovery to increase rapidly when the fuzzer is supplied -with an initial config file. We are working on improving our fuzzing coverage to -find bugs in other areas of the code. - -#### Caveat - -Currently, there are memory leaks which do not seem to stem from our code but rather -the code of wl-roots or some other library we depend on. We are working on the problem. -In the meantime, add `-Db_detect-leaks=0` to the meson command to exclude memory leaks. - -## Bugs - -For any bug, please [create an -issue](https://github.com/project-repo/cagebreak/issues/new) on -[GitHub](https://github.com/project-rep/cagebreak). - -Fixed bugs are to be assigned a number and summarized inside Bugs.md for future reference -independent of github, in case this service is unavailable. - -### Security Bugs - -Should you want to get in touch with the developers of cagebreak to report a -security vulnerability or a different issue confidentially, contact -`cagebreak @ project-repo . co`. - -We will try to respond to everything that is not obvious spam. - -Please encrypt your email with the appropriate GPG key found in `keys/`. - - * B15B92642760E11FE002DE168708D42451A94AB5 - * F8DD9F8DD12B85A28F5827C4678E34D2E753AA3C - -Note that the keys are signed by cagebreak signing keys. - -If you want us to respond via GPG-encrypted mail, please include your own -public key or provide the fingerprint and directions to obtain the key. - -## Changelog - -See [Changelog.md](Changelog.md) - -## Contributors - - * Aisha Tammy - * [make man pages optional](https://github.com/project-repo/cagebreak/pull/4), released - in 1.6.0 with slight modifications - -## License - -Please see [LICENSE](https://github.com/project-repo/cagebreak/blob/master/LICENSE)) From bb924f63889beaaa84e410951c62e2d34fb0965b Mon Sep 17 00:00:00 2001 From: Cagebreak Signing Key 7 Date: Wed, 2 Feb 2022 18:11:58 +0100 Subject: [PATCH 5/5] Edit man pages --- man/cagebreak-config.5.md | 256 +++++++++++++++++++++----------------- man/cagebreak.1.md | 2 + 2 files changed, 147 insertions(+), 111 deletions(-) diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index 2d7bc42..2cbef4a 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -1,8 +1,8 @@ -cagebreak-config(1) "Version 1.8.2" "Cagebreak Manual" +cagebreak-config(5) "Version 1.8.2" "Cagebreak Manual" # NAME -*cagebreak-config* — Cagebreak config file +*cagebreak-config* — Cagebreak configuration file # SYNOPSIS @@ -10,91 +10,108 @@ cagebreak-config(1) "Version 1.8.2" "Cagebreak Manual" # DESCRIPTION -The cagebreak configuration file is a simple plain text file which configures -the way cagebreak behaves. -Each line constitutes a separate command which is parsed -independently from the rest of the file. Comments can be added -by prepending a line with the # symbol. +The cagebreak configuration is a plain text file. + +Each line consists of a comment or a command and its arguments which +are parsed sequentially but independently from the rest of the file. + +Each line starting with a "#" is a comment. + +See *KEY DEFINITIONS* for details on modifier keys and *MODES* for details +on modes. ## COMMANDS *abort* - Return to the default mode without running any command + Return to default mode -*background* - Set the background color. This command expects three floating point numbers - between 0 and 1, specifying the r, g and b values respectively. - (e.g. "background 1.0 0.0 0.0" sets to background color to red) - There is no support for specifying a background image. +*background * + Set RGB of background - <[r|g|b]> are floating point numbers + between 0 and 1. + There is no support for background images. -*bind* - This command requires a key (see *KEY DEFINITIONS*) and a command (see *COMMANDS*) as an argument. - Subsequently, pressing this key while in command mode executes the - supplied action. bind is equivalent to - definekey root +``` +# Set background to red +background 1.0 0.0 0.0 +``` + +*bind * + Bind to execute if pressed in root mode + +``` +bind +# is equivalent to +definekey root +``` *close* - This command closes the current window. It may be useful for windows of applications which - do not offer any method of closing them. + Close current window - This may be useful for windows of + applications which do not offer any method of closing them. -*definekey* - This command behaves similarly to the *bind* command with the - difference that the mode in which the keybinding is activated is - specified by the user. A call to this function is to be structured as follows: +*definekey * + Bind to execute if pressed in - + *definekey* is a more general version of *bind*. - definekey +*definemode * + Define new mode - After a call to *definemode*, + can be used with *definekey* to create a custom key mapping. -*definemode* - This command requires a single argument; the name of the mode to be defined. - Subsequent to a call to this function, the defined mode may be used along with - the definekey command to create a custom key mapping. Synopsis: +``` +# define new mode and create a mapping for it +definemode foo +definekey foo C-t abort +``` - definemode +*escape * + Set to switch to root mode to execute one command -*escape* - Defines the key with which the current mode can be changed to "root". - escape is equivalent to definekey top switch_mode root +``` +escape +# is equivalent to +definekey top mode root +``` *exchangedown* - Exchange the current window with the window in the tile to the bottom + Exchange current window with window in the tile to the bottom *exchangeleft* - Exchange the current window with the window in the tile to the left + Exchange current window with window in the tile to the left *exchangeright* - Exchange the current window with the window in the tile to the right + Exchange current window with window in the tile to the right *exchangeup* - Exchange the current window with the window in the tile to the top + Exchange current window with window in the tile to the top -*exec* - Executes the supplied shell command using *sh -c ""*. Synopsis: - - exec +*exec * + Execute using *sh -c* *focus* Focus next tile *focusdown* - Focus the tile to the bottom + Focus tile to the bottom *focusleft* - Focus the tile to the left + Focus tile to the left *focusprev* Focus previous tile *focusright* - Focus the tile to the right + Focus tile to the right *focusup* - Focus the tile to the top + Focus tile to the top *hsplit* Split current tile horizontally *input * - Set the setting "" to "" for device "". The identifier can either be "\*" (wildcard), of the form "type:" or the identifier of the device as printed for example by *cagebreak -s*. The supported input types are + Set to for device - + can be "\*" (wildcard), of the form + "type:" or the identifier of the device as printed + for example by *cagebreak -s*. The supported input types are - touchpad - pointer - keyboard @@ -103,135 +120,142 @@ by prepending a line with the # symbol. - tablet_pad - switch - Configurations are applied sequentially. Currently, only libinput devices may be configured. The available settings and their corresponding values are as follows: + Configurations are applied sequentially. Currently, only libinput + devices may be configured. The available settings and their + corresponding values are as follows: *accel_profile adaptive|flat* - Sets the pointer acceleration profile for the specified input device. + Set pointer acceleration profile for specified input device *calibration_matrix <6 space-separated floating point values>* - Sets the calibration matrix. + Set calibration matrix *click_method none|button_areas|clickfinger* - Changes the click method for the specified device. + Change click method for the specified device *drag enabled|disabled* - Enables or disables tap-and-drag for specified input device. + Enable or disable tap-and-drag for specified input device *drag_lock enabled|disabled* - Enables or disables drag lock for specified input device. + Enable or disable drag lock for specified input device *dwt enabled|disabled* - Enables or disables disable-while-typing for the specified input device. + Enable or disable disable-while-typing for specified input + device *enabled|disabled|disabled_on_external_mouse* - Enables or disables send_events for specified input device. Disabling - send_events disables the input device. + Enable or disable send_events for specified input device - + Disabling send_events disables the input device. *left_handed enabled|disabled* - Enables or disables left handed mode for specified input device. + Enable or disable left handed mode for specified input device *middle_emulation enabled|disabled* - Enables or disables middle click emulation. + Enable or disable middle click emulation *natural_scroll enabled|disabled* - Enables or disables natural (inverted) scrolling for the specified input - device. + Enable or disable natural (inverted) scrolling for specified + input device *pointer_accel [<-1|1>]* - Changes the pointer acceleration for the specified input device. + Change the pointer acceleration for specified input device *scroll_button disable|* - Sets the button used for scroll_method on_button_down. The button can - be given as an event name or code, which can be obtained from *libinput - debug-events*. If set to - _disable_, it disables the scroll_method on_button_down. + Set button used for scroll_method on_button_down - The button + can be given as an event name or code, which can be obtained from + *libinput debug-events*. If set to _disable_, it disables the + scroll_method on_button_down. *scroll_factor * - Changes the scroll factor for the specified input device. Scroll speed will - be scaled by the given value, which must be non-negative. + Change the scroll factor for the specified input device - Scroll + speed will be scaled by the given value, which must be non-negative. *scroll_method none|two_finger|edge|on_button_down* - Changes the scroll method for the specified input device. + Change scroll method for specified input device *tap enabled|disabled* - Enables or disables tap for specified input device. + Enable or disable tap for specified input device *tap_button_map lrm|lmr* - Specifies which button mapping to use for tapping. _lrm_ treats 1 finger as - left click, 2 fingers as right click, and 3 fingers as middle click. _lmr_ - treats 1 finger as left click, 2 fingers as middle click, and 3 fingers as - right click. + Specify which button mapping to use for tapping - _lrm_ treats 1 + finger as left click, 2 fingers as right click, and 3 fingers as + middle click. _lmr_ treats 1 finger as left click, 2 fingers as + middle click, and 3 fingers as right click. *mode * - Enter mode "". After a keybinding is processed, return to default mode + Enter mode "" - Returns to default mode, after a command is + executed. *movetonextscreen* - Move the current window to the next screen + Move current window to next screen *movetoprevscreen* - Move the current window to the previous screen + Move current window to previous screen *movetoscreen * - Move the currently focused window to the n-th screen + Move currently focused window to -th screen *movetoworkspace * - Move the currently focused window to the n-th workspace + Move currently focused window to -th workspace *next* Focus next window in current tile *nextscreen* - Focus the next screen + Focus next screen *only* - Remove all splits and make the current window fill the entire screen + Remove all splits and make current window fill the entire screen *output [[pos res x rate ] | enable | disable | prio ]* - Configure the output "". and are the position of the monitor - in pixels. The top-left monitor should have the coordinates 0 0. and - specify the resolution in pixels and sets the refresh rate of - the monitor (often this is 50 or 60). The options enable and disable - enable or disable the output . Note that if is the only enabled - output, *output disable* has no effect. prio is used to set the - priority of an output. If nothing else is set, outputs are added as they - request to be added and have a numerical priority of -1. Using prio - it is possible to set priorities for outputs, where >= 1. The larger is, - the higher the priority is, that is to say, the earlier the output will - appear in the list of outputs. + Configure output "" - + - and are the position of the + monitor in pixels. The top-left monitor should have the coordinates 0 0. + - and specify the resolution in pixels. + - sets the refresh rate of the monitor (often this is 50 or 60). + - enable and disable enable or disable . Note that if + is the only enabled output, *output disable* has + no effect. + - prio is used to set the priority of an output. If + nothing else is set, outputs are added as they request to be added + and have a numerical priority of -1. Using prio it is possible + to set priorities for outputs, where >= 1. The larger is, + the higher the priority is, that is to say, the earlier the output + will appear in the list of outputs. *prev* Focus previous window in current tile *prevscreen* - Focus the previous screen + Focus previous screen *quit* Exit cagebreak *resizedown* - Resize the current tile towards the bottom + Resize current tile towards the bottom *resizeleft* - Resize the current tile towards the left + Resize current tile towards the left *resizeright* - Resize the current tile towards the right + Resize current tile towards the right *resizeup* - Resize the current tile towards the top + Resize current tile towards the top *screen * - Change to the n-th screen + Change to -th screen *show_info* - Display info about the current setup. In particular, print the identifiers + Display information about the current setup - In particular, print the identifiers of the available inputs and outputs. *setmode * - Set the default mode to + Set default mode to *switchvt * - Switch to tty n + Switch to tty *time* Display time @@ -240,31 +264,37 @@ by prepending a line with the # symbol. Split current tile vertically *workspace * - Change to the n-th workspace + Change to -th workspace -*workspaces* - Requires a single integer larger than 1 and less than 30 as an argument. Sets the number of - workspaces to the supplied number +*workspaces * + Set number of workspaces to - is a single integer larger than 1 + and less than 30. # MODES By default, three modes are defined: *top* - The default mode. Keybindings defined in this mode can be accessed - directly, without the use of an escape key. + Default mode - Keybindings defined in this mode can be accessed + directly. + - *definekey* can be used to set keybindings for top mode. + - *setmode* can be used to set a different default mode. *root* - The command mode. Keybindings defined in this mode can be accessed - after pressing the key defined by the *escape* command. + Command mode - Keybindings defined in this mode can be accessed + after pressing the key defined by *escape*. + - *bind* can be used to set keybindings for root mode. *resize* - Resize mode. This mode is used for resizing tiles. + Resize mode - Used to resize tiles. + +*definemode* can be used to create additional modes. # KEY DEFINITIONS Keys are specified by their names as displayed for example by *xev*. -In addition, modifiers can be specified using the following syntax: + +Modifiers can be specified using the following syntax: - @@ -284,9 +314,11 @@ The supported modifiers are: *5 - Mod 5* -For example to specify the keybinding Control+t, the expression: +For example to specify the keybinding Control+t, the expression - C-t +``` +C-t +``` is used. @@ -301,7 +333,9 @@ See GitHub Issues: # LICENSE Copyright (c) 2020-2022 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 diff --git a/man/cagebreak.1.md b/man/cagebreak.1.md index cfb0a22..a7c8d5f 100644 --- a/man/cagebreak.1.md +++ b/man/cagebreak.1.md @@ -76,7 +76,9 @@ See GitHub Issues: # LICENSE Copyright (c) 2020-2022 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