├── analyse
├── .gitignore
├── graph-data-historical.txt
├── plot.sh
├── generate_graph.sh
├── Makefile
├── graph-data.txt
└── analyse.c
├── graph.png
├── Makefile
├── stats.md
├── deviations.md
├── incomplete-cat-B-items.md
├── extra.md
├── all-cat-A-and-B-items.md
└── README.md
/analyse/.gitignore:
--------------------------------------------------------------------------------
1 | *.o
2 | analyse
3 |
--------------------------------------------------------------------------------
/graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/labwc/labwc-scope/HEAD/graph.png
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | MAKEFLAGS=--no-print-directory
2 |
3 | all:
4 | @make -C analyse/ clean
5 | @make -C analyse/
6 | @make -C analyse/ test
7 |
--------------------------------------------------------------------------------
/stats.md:
--------------------------------------------------------------------------------
1 | This file has been auto-generated based on README.md. Do not edit it manually
2 |
3 | # Requirements Breakdown
4 |
5 | - Cat A: 80 / 80 complete
6 | - Cat B: 265 / 343 complete
7 | - Cat C: 1 / 48 complete
8 | - TOTAL: 346 / 471 complete
9 |
--------------------------------------------------------------------------------
/analyse/graph-data-historical.txt:
--------------------------------------------------------------------------------
1 | # date, completed requirements, total requirements
2 |
3 | 2021-04-17 36 90 0 0
4 | 2021-08-15 44 90 0 0
5 | 2021-09-24 56 89 0 0
6 | 2021-10-12 60 89 0 0
7 | 2021-10-15 61 89 0 0
8 | 2021-11-08 69 87 0 0
9 | 2021-12-26 72 87 0 0
10 |
--------------------------------------------------------------------------------
/analyse/plot.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 |
3 | cat << EOF | gnuplot
4 | set title "Lab Wayland Compositor User Requirements"
5 | set xdata time
6 | set term png
7 | set timefmt "%Y-%m-%d"
8 | set format x "%m/%y"
9 | set xlabel "Date"
10 | set ylabel "Requirements"
11 | set xrange ["2021-04-17":"$(date "+%Y-%m-%d")"]
12 | set yrange ["0":"350"]
13 | set output '../graph.png'
14 | plot \
15 | 'graph-data.txt' u 1:2 w lp t 'Completed Cat A', \
16 | 'graph-data.txt' u 1:3 w lp t 'Total Cat A', \
17 | 'graph-data.txt' u 1:4 w lp t 'Completed Cat B', \
18 | 'graph-data.txt' u 1:5 w lp t 'Total Cat B'
19 | EOF
20 |
--------------------------------------------------------------------------------
/analyse/generate_graph.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 |
3 | get_historical_data() {
4 | cat graph-data-historical.txt
5 | }
6 |
7 | get_repo_data() {
8 | for data_file in Acceptance-criteria.md README.md; do
9 | while read commit date; do
10 | (git show "${commit}:${data_file}" | grep ' complete ') >&/dev/null || continue
11 | printf "%s" "$date"
12 | while read _ _ _cat _done _ _total _; do
13 | printf " %s %s" "$_done" "$_total"
14 | done < <(git show "${commit}:${data_file}" | ./analyse --stats | grep 'Cat [A-B]')
15 | printf "\n"
16 | done < <(git log --reverse --format="%H %as" -- "../$data_file")
17 | done
18 | }
19 |
20 | combined() {
21 | get_historical_data
22 | get_repo_data
23 | }
24 |
25 | echo "Generating graph.."
26 | combined | sort -n | uniq > graph-data.txt
27 | ./plot.sh
28 |
--------------------------------------------------------------------------------
/analyse/Makefile:
--------------------------------------------------------------------------------
1 | CFLAGS=-Wall -g
2 |
3 | analyse: analyse.o
4 | $(CC) $(CFLAGS) -o $@ $^
5 |
6 | test:
7 | @./analyse --stats < ../README.md > ../stats.md
8 | @./analyse --print-header > ../incomplete-cat-B-items.md
9 | @./analyse --incomplete-b-plus < ../README.md >> ../incomplete-cat-B-items.md
10 | @./analyse --incomplete-b < ../README.md >> ../incomplete-cat-B-items.md
11 | @./analyse --print-header > ../all-cat-A-and-B-items.md
12 | @./analyse --cata < ../README.md >> ../all-cat-A-and-B-items.md
13 | @./analyse --catb < ../README.md >> ../all-cat-A-and-B-items.md
14 | @./analyse --print-header > ../extra.md
15 | @grep EXTRA ../README.md >> ../extra.md
16 | @./analyse --print-header > ../deviations.md
17 | @grep DEVIA ../README.md >> ../deviations.md
18 | @./generate_graph.sh
19 |
20 | clean:
21 | @rm -f analyse *.o
22 |
--------------------------------------------------------------------------------
/deviations.md:
--------------------------------------------------------------------------------
1 | This file has been auto-generated based on README.md. Do not edit it manually
2 |
3 | | Cat | Status | Reference | Category | Description | Comment
4 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
5 | | A | complete | 2.1.2 | resistance | `screenEdgeStrength` | DEVIATION Can be negative
6 | | B | complete | 2.2.5 | focus | `followMouseRequiresMovement` | DEVIATION It is called `underMouse` in Openbox
7 | | B | complete | 2.3.1.1 | placement | `automatic` | DEVIATION: similar to Openbox's `Smart`
8 | | B | complete | 2.3.1.2 | placement | `cursor` | DEVIATION: like Openbox's `UnderMouse`
9 | | B+ | complete | 2.4.2.1 | theme | `` | DEVIATION: Replaces `titleLayout` in Openbox
10 | | B+ | complete | 2.4.2.2 | theme | `` | DEVIATION: Replaces `titleLayout` in Openbox
11 | | B | complete | 2.4.4 | theme | `keepBorder` | DEVIATION: gives ToggleDeocration 3 states
12 | | B | complete | 2.11.1 | menu | `ignoreButtonReleasePeriod` | DEVIATION: called `hideDelay` in openbox
13 | | B | complete | 2.11.4 | menu | `showIcons` | DEVIATION: called `applicationIcons` in Openbox
14 | | B | complete | 3.3.4 | mouse context | `Root` | DEVIATION [^2]
15 | | B | complete | 3.5.6 | mouse event | `Scroll` | DEVIATION: Scroll is used instead of Click for mouse-buttons Up/Down
16 | | B | complete | 5.23.1 | window action | `MoveTo` | DEVIATION: `MoveResizeTo` in Openbox
17 |
--------------------------------------------------------------------------------
/analyse/graph-data.txt:
--------------------------------------------------------------------------------
1 |
2 | # date, completed requirements, total requirements
3 | 2021-04-17 36 90 0 0
4 | 2021-08-15 44 90 0 0
5 | 2021-09-24 56 89 0 0
6 | 2021-10-12 60 89 0 0
7 | 2021-10-15 61 89 0 0
8 | 2021-11-08 69 87 0 0
9 | 2021-12-26 72 87 0 0
10 | 2022-01-01 72 87 20 107
11 | 2022-03-02 73 87 34 136
12 | 2022-05-30 73 87 35 136
13 | 2022-05-30 73 87 37 136
14 | 2022-05-30 73 87 37 148
15 | 2022-06-20 73 87 42 152
16 | 2022-06-20 73 87 44 150
17 | 2022-06-20 73 87 44 152
18 | 2022-06-20 75 87 44 150
19 | 2022-06-22 75 87 44 150
20 | 2022-06-22 75 87 45 150
21 | 2022-06-22 75 87 45 151
22 | 2022-06-23 75 87 45 151
23 | 2022-06-24 78 78 47 160
24 | 2022-06-24 78 87 47 151
25 | 2022-06-27 78 78 47 159
26 | 2022-06-27 78 78 47 160
27 | 2022-06-27 78 78 48 159
28 | 2022-07-15 78 78 48 161
29 | 2022-07-15 78 78 48 162
30 | 2022-08-19 78 78 48 163
31 | 2022-09-15 78 78 52 167
32 | 2022-09-15 78 78 53 167
33 | 2022-09-15 78 78 55 169
34 | 2022-09-30 78 78 57 171
35 | 2022-09-30 78 78 58 172
36 | 2022-10-02 78 78 61 175
37 | 2022-10-02 78 78 63 176
38 | 2022-10-02 78 78 64 176
39 | 2022-10-02 78 78 66 177
40 | 2022-10-03 78 78 63 177
41 | 2022-10-03 78 78 65 177
42 | 2022-10-03 78 78 66 177
43 | 2022-10-04 78 78 66 177
44 | 2022-10-30 78 78 69 178
45 | 2022-12-08 78 78 70 179
46 | 2022-12-08 78 78 74 183
47 | 2023-01-30 78 78 75 184
48 | 2023-02-01 78 78 75 184
49 | 2023-02-01 78 78 77 186
50 | 2023-02-05 78 78 77 186
51 | 2023-02-07 78 78 77 186
52 | 2023-03-06 78 78 78 187
53 | 2023-03-26 78 78 85 194
54 | 2023-03-26 78 78 86 194
55 | 2023-03-26 78 78 86 195
56 | 2023-03-26 78 78 88 197
57 | 2023-03-27 78 78 89 197
58 | 2023-04-20 78 78 89 197
59 | 2023-04-20 78 78 90 197
60 | 2023-04-21 78 78 91 197
61 | 2023-04-21 78 78 93 200
62 | 2023-05-08 78 78 96 203
63 | 2023-05-08 78 78 97 204
64 | 2023-05-09 78 78 100 203
65 | 2023-05-20 78 78 101 203
66 | 2023-05-20 78 78 101 204
67 | 2023-06-26 78 78 103 205
68 | 2023-06-26 78 78 104 206
69 | 2023-06-26 78 78 106 207
70 | 2023-06-26 78 78 107 208
71 | 2023-06-26 78 78 108 209
72 | 2023-06-26 78 78 111 212
73 | 2023-07-01 78 78 118 217
74 | 2023-07-05 78 78 120 219
75 | 2023-08-09 78 78 120 220
76 | 2023-08-09 78 78 120 223
77 | 2023-10-03 78 78 130 231
78 | 2023-10-15 78 78 131 232
79 | 2023-10-20 78 78 133 232
80 | 2023-11-28 78 78 134 233
81 | 2023-12-09 78 78 135 233
82 | 2023-12-21 78 78 141 238
83 | 2023-12-26 81 81 150 249
84 | 2024-02-01 80 80 159 258
85 | 2024-02-05 80 80 160 263
86 | 2024-05-04 80 80 202 294
87 | 2024-07-14 80 80 213 300
88 | 2024-12-04 80 80 222 309
89 | 2024-12-04 80 80 253 333
90 | 2024-12-04 80 80 258 335
91 | 2024-12-05 80 80 260 336
92 |
--------------------------------------------------------------------------------
/analyse/analyse.c:
--------------------------------------------------------------------------------
1 | #define _POSIX_C_SOURCE 200809L
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 |
8 | static bool print_incomplete_cat_b;
9 | static bool print_incomplete_cat_b_plus;
10 | static bool print_cat_a;
11 | static bool print_cat_b;
12 |
13 | static void
14 | print_stats(void)
15 | {
16 | int nr_cat_a = 0;
17 | int nr_complete_cat_a = 0;
18 | int nr_cat_b = 0;
19 | int nr_complete_cat_b = 0;
20 | int nr_cat_c = 0;
21 | int nr_complete_cat_c = 0;
22 |
23 | char *line = NULL;
24 | size_t len = 0;
25 | while ((getline(&line, &len, stdin) != -1)) {
26 | char *p = strrchr(line, '\n');
27 | if (p) {
28 | *p = '\0';
29 | }
30 | if (strncmp(line, "| ", 3))
31 | continue;
32 | if (!strncmp(line, "| A", 4)) {
33 | ++nr_cat_a;
34 | if (strstr(line, "complete")) {
35 | ++nr_complete_cat_a;
36 | }
37 | }
38 | if (!strncmp(line, "| B", 4)) {
39 | ++nr_cat_b;
40 | if (strstr(line, "complete")) {
41 | ++nr_complete_cat_b;
42 | }
43 | }
44 | if (!strncmp(line, "| C", 4)) {
45 | ++nr_cat_c;
46 | if (strstr(line, "complete")) {
47 | ++nr_complete_cat_c;
48 | }
49 | }
50 | }
51 | free(line);
52 | printf("This file has been auto-generated based on README.md. Do not edit it manually\n\n");
53 | printf("# Requirements Breakdown\n\n");
54 | printf("- Cat A: %d / %d complete\n", nr_complete_cat_a, nr_cat_a);
55 | printf("- Cat B: %d / %d complete\n", nr_complete_cat_b, nr_cat_b);
56 | printf("- Cat C: %d / %d complete\n", nr_complete_cat_c, nr_cat_c);
57 | printf("- TOTAL: %d / %d complete\n",
58 | nr_complete_cat_a + nr_complete_cat_b + nr_complete_cat_c,
59 | nr_cat_a + nr_cat_b + nr_cat_c);
60 | }
61 |
62 | void
63 | process_line(char *line)
64 | {
65 | if (strncmp(line, "| ", 3)) {
66 | return;
67 | }
68 | if (print_incomplete_cat_b_plus && !strncmp(line, "| B+", 5) && !strstr(line, "complete"))
69 | printf("%s\n", line);
70 | if (print_incomplete_cat_b && !strncmp(line, "| B ", 5) && !strstr(line, "complete"))
71 | printf("%s\n", line);
72 | if (print_cat_a && !strncmp(line, "| A", 4))
73 | printf("%s\n", line);
74 | if (print_cat_b && !strncmp(line, "| B", 4))
75 | printf("%s\n", line);
76 | }
77 |
78 | int
79 | main(int argc, char *argv[])
80 | {
81 | if (argc != 2) {
82 | fprintf(stderr, "Usage: %s < input\n", argv[0]);
83 | exit(EXIT_FAILURE);
84 | }
85 | for (int i = 1; i < argc ; ++i) {
86 | if (!strcmp(argv[i], "--stats")) {
87 | print_stats();
88 | exit(0);
89 | } else if (!strcmp(argv[i], "--print-header")) {
90 | printf("This file has been auto-generated based on README.md. Do not edit it manually\n\n");
91 | printf("| Cat | Status | Reference | Category | Description | Comment\n");
92 | printf("| --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------\n");
93 | exit(0);
94 | } else if (!strcmp(argv[i], "--incomplete-b-plus")) {
95 | print_incomplete_cat_b_plus = true;
96 | } else if (!strcmp(argv[i], "--incomplete-b")) {
97 | print_incomplete_cat_b = true;
98 | } else if (!strcmp(argv[i], "--cata")) {
99 | print_cat_a = true;
100 | } else if (!strcmp(argv[i], "--catb")) {
101 | print_cat_b = true;
102 | }
103 | }
104 |
105 | char *line = NULL;
106 | size_t len = 0;
107 | while ((getline(&line, &len, stdin) != -1)) {
108 | char *p = strrchr(line, '\n');
109 | if (p) {
110 | *p = '\0';
111 | }
112 | process_line(line);
113 | }
114 | free(line);
115 | }
116 |
--------------------------------------------------------------------------------
/incomplete-cat-B-items.md:
--------------------------------------------------------------------------------
1 | This file has been auto-generated based on README.md. Do not edit it manually
2 |
3 | | Cat | Status | Reference | Category | Description | Comment
4 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
5 | | B+ | | 2.11.3 | menu | `submenuShowDelay` |
6 | | B | | 1.2.6.1 | wayland-protocol | input-method-unstable-v1 |
7 | | B | | 1.2.7 | wayland-protocol | input-timestamps-unstable-v1 |
8 | | B | | 1.2.8 | wayland-protocol | keyboard-shortcuts-inhibit-unstable-v1 | This is controversial [^3]
9 | | B | | 1.2.9 | wayland-protocol | linux-dmabuf-unstable-v1 |
10 | | B | | 1.2.10 | wayland-protocol | linux-explicit-synchronization-unstable-v1 |
11 | | B | | 1.2.12 | wayland-protocol | pointer-gestures-unstable-v1 |
12 | | B | | 1.2.20 | wayland-protocol | xwayland-keyboard-grab-unstable-v1 |
13 | | B | | 1.2.28 | wayland-protocol | content-type-v1 |
14 | | B | | 2.1.1 | resistance | `strength` | If we implement, consider a better name
15 | | B | | 2.6.3 | resize | popupPosition |
16 | | B | | 2.6.4 | resize | popupFixedposition |
17 | | B | | 2.6.5 | resize | cornerRange | EXTRA
18 | | B | | 2.6.6 | resize | minimumArea | EXTRA
19 | | B | | 2.11.6 | menu | `file` | TODO: is this supported already?
20 | | B | | 3.3.14 | mouse context | `Icon` |
21 | | B | | 3.4.1 | mouse button | `Middle` |
22 | | B | | 3.5.4 | mouse event | `Release` |
23 | | B | | 4.5 | global action | `DirectionalCycleWindows` |
24 | | B | | 4.6 | global action | `DirectionalTargetWindows` |
25 | | B | | 4.8 | global action | `AddDesktop` |
26 | | B | | 4.9 | global action | `RemoveDesktop` |
27 | | B | | 4.10 | global action | `ToggleShowDesktop` |
28 | | B | | 5.4 | window action | `RaiseLower` |
29 | | B | | 5.6 | window action | `FocusToBottom` |
30 | | B | | 5.13.1 | window action | `ToggleMaximize.direction` |
31 | | B | | 5.14.1 | window action | `Maximize.direction` |
32 | | B | | 5.15.1 | window action | `Unmaximize.direction` |
33 | | B | | 5.18 | window action | `Decorate` |
34 | | B | | 5.19 | window action | `Undecorate` |
35 | | B | | 5.28 | window action | `GrowToFill` |
36 | | B | | 6.1.10 | geometry | `padding.width` |
37 | | B | | 6.1.14 | geometry | `menu.overlap` |
38 | | B | | 6.2.2 | border colors | `window.active.title.separator.color` |
39 | | B | | 6.2.4 | border colors | `window.inactive.title.separator.color` |
40 | | B | | 6.2.6 | border colors | `window.active.client.color` |
41 | | B | | 6.2.7 | border colors | `window.inactive.client.color` |
42 | | B | | 6.3.4 | titlebar colors | `window.active.button.pressed.image.color` |
43 | | B | | 6.3.5 | titlebar colors | `window.active.button.disabled.image.color` |
44 | | B | | 6.3.6 | titlebar colors | `window.active.button.hover.image.color` |
45 | | B | | 6.3.7 | titlebar colors | `window.active.button.toggled.unpressed.image.color` |
46 | | B | | 6.3.8 | titlebar colors | `window.active.button.toggled.pressed.image.color` |
47 | | B | | 6.3.9 | titlebar colors | `window.active.button.toggled.hover.image.color` |
48 | | B | | 6.3.10 | titlebar colors | `window.active.button.toggled.image.color` |
49 | | B | | 6.3.12 | titlebar colors | `window.inactive.button.pressed.image.color` |
50 | | B | | 6.3.13 | titlebar colors | `window.inactive.button.disabled.image.color` |
51 | | B | | 6.3.14 | titlebar colors | `window.inactive.button.hover.image.color` |
52 | | B | | 6.3.15 | titlebar colors | `window.inactive.button.toggled.unpressed.image.color` |
53 | | B | | 6.3.16 | titlebar colors | `window.inactive.button.toggled.pressed.image.color` |
54 | | B | | 6.3.17 | titlebar colors | `window.inactive.button.toggled.hover.image.color` |
55 | | B | | 6.3.18 | titlebar colors | `window.inactive.button.toggled.image.color` |
56 | | B | | 6.4.2 | active window textures | `window.active.label.bg` |
57 | | B | | 6.4.4 | active window textures | `window.active.grip.bg` |
58 | | B | | 6.6.1 | active window button textures | `window.active.button.unpressed.bg` |
59 | | B | | 6.6.2 | active window button textures | `window.active.button.pressed.bg` |
60 | | B | | 6.6.3 | active window button textures | `window.active.button.hover.bg` |
61 | | B | | 6.6.4 | active window button textures | `window.active.button.disabled.bg` |
62 | | B | | 6.6.5 | active window button textures | `window.active.button.toggled.unpressed.bg` |
63 | | B | | 6.6.6 | active window button textures | `window.active.button.toggled.pressed.bg` |
64 | | B | | 6.6.7 | active window button textures | `window.active.button.toggled.hover.bg` |
65 | | B | | 6.6.8 | active window button textures | `window.active.button.toggled.bg` |
66 | | B | | 6.7.1 | inactive window button textures | `window.inactive.button.unpressed.bg` |
67 | | B | | 6.7.2 | inactive window button textures | `window.inactive.button.pressed.bg` |
68 | | B | | 6.7.3 | inactive window button textures | `window.inactive.button.hover.bg` |
69 | | B | | 6.7.4 | inactive window button textures | `window.inactive.button.disabled.bg` |
70 | | B | | 6.7.5 | inactive window button textures | `window.inactive.button.toggled.unpressed.bg` |
71 | | B | | 6.7.6 | inactive window button textures | `window.inactive.button.toggled.pressed.bg` |
72 | | B | | 6.7.7 | inactive window button textures | `window.inactive.button.toggled.hover.bg` |
73 | | B | | 6.7.8 | inactive window button textures | `window.inactive.button.toggled.bg` |
74 | | B | | 6.8.3 | menu colors | `menu.items.disabled.text.color` |
75 | | B | | 6.8.5 | menu colors | `menu.items.active.disabled.text.color` |
76 | | B | | 6.10.3 | osd textures | `osd.hilight.bg` | for desktop osd only
77 | | B | | 6.10.4 | osd textures | `osd.unhilight.bg` | for desktop osd only
78 | | B | | 6.11.2 | osd colors | `osd.hilight.bg.color` | for desktop osd only
79 | | B | | 6.11.3 | osd colors | `osd.unhilight.bg.color` | for desktop osd only
80 | | B | | 6.15.1.9 | theme button base | `bullet.xbm` |
81 | | B | | 6.15.2.2 | theme button variant | `_pressed` |
82 | | B | | 6.15.2.3 | theme button variant | `_disabled` |
83 |
--------------------------------------------------------------------------------
/extra.md:
--------------------------------------------------------------------------------
1 | This file has been auto-generated based on README.md. Do not edit it manually
2 |
3 | | Cat | Status | Reference | Category | Description | Comment
4 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
5 | | B | complete | 2.1.3 | resistance | `windowEdgeStrength` | EXTRA
6 | | B | complete | 2.1.4 | resistance | `unSnapThreshold` | EXTRA
7 | | B | complete | 2.1.5 | resistance | `unMaximizeThreshold` | EXTRA
8 | | B | complete | 2.3.1.3 | placement | `center` | EXTRA
9 | | B | complete | 2.3.1.4 | placement | `cascade` | EXTRA
10 | | B | complete | 2.4.14.3 | theme | `font.slant: oblique` | EXTRA
11 | | B | complete | 2.4.15 | theme | `dropShadows` | EXTRA
12 | | B | complete | 2.4.16 | theme | `icon` | EXTRA
13 | | B | complete | 2.4.17 | theme | `fallbackAppIcon` | EXTRA
14 | | B | complete | 2.5.5 | desktop | `prefix` | EXTRA
15 | | B | | 2.6.5 | resize | cornerRange | EXTRA
16 | | B | | 2.6.6 | resize | minimumArea | EXTRA
17 | | B | complete | 2.7.1 | window rules | `windowRule` | EXTRA
18 | | B | complete | 2.7.2.1 | window rule criteria | `windowRule.identifier` | EXTRA
19 | | B | complete | 2.7.2.2 | window rule criteria | `windowRule.title` | EXTRA
20 | | B | complete | 2.7.2.3 | window rule criteria | `windowRule.matchOnce` | EXTRA
21 | | B | complete | 2.7.3.1 | window rule property | `windowRule.serverDecoration` | EXTRA
22 | | B | complete | 2.7.3.2 | window rule property | `windowRule.skipTaskbar` | EXTRA
23 | | B | complete | 2.7.3.3 | window rule property | `windowRule.skipWindowSwitcher` | EXTRA
24 | | B | complete | 2.7.3.4 | window rule property | `windowRule.ignoreFocusRequest` | EXTRA
25 | | B | complete | 2.7.3.5 | window rule property | `windowRule.fixedPosition` | EXTRA
26 | | B | complete | 2.7.3.6 | window rule property | `windowRule.ignoreConfigureRequest` | EXTRA
27 | | B | complete | 2.7.3.7 | window rule property | `windowRule.wantAbsorbedModifierReleaseEvents` | EXTRA
28 | | B | complete | 2.7.4 | window rule type | `windowRule.type` | EXTRA
29 | | B | complete | 2.7.5.1 | window rule condition | `windowRule.type` | EXTRA
30 | | B | complete | 2.8.4 | keyboard | `numlock` | EXTRA
31 | | B | complete | 2.8.5 | keyboard | `layoutScope` | EXTRA
32 | | B | complete | 2.9.4 | mouse | `scrollFactor` | EXTRA
33 | | B | complete | 2.9a.1 | touch | `deviceName` | EXTRA
34 | | B | complete | 2.9a.2 | touch | `mapToOutput` | EXTRA
35 | | B | complete | 2.9b.1 | tablet | `mapToOutput` | EXTRA
36 | | B | complete | 2.9b.2 | tablet | `rotate` | EXTRA
37 | | B | complete | 2.9b.3 | tablet | `area` | EXTRA
38 | | B | complete | 2.9b.4 | tablet | `map` | EXTRA
39 | | B | complete | 2.9c.1 | tablet tool | `tabletTool` | EXTRA
40 | | B | complete | 2.13.1 | core | `decoration` | EXTRA
41 | | B | complete | 2.13.2 | core | `gap` | EXTRA
42 | | B | complete | 2.13.3 | core | `adaptiveSync` | EXTRA
43 | | B | complete | 2.13.4 | core | `reuseOutputMode` | EXTRA
44 | | B | complete | 2.13.5 | core | `xwaylandPersistence` | EXTRA
45 | | B | complete | 2.13.6 | core | `allowTearing` | EXTRA
46 | | B | complete | 2.13.7 | core | `autoEnableOutputs` | EXTRA
47 | | B | complete | 2.14.1 | window switcher | `show` | EXTRA
48 | | B | complete | 2.14.2 | window switcher | `preview` | EXTRA
49 | | B | complete | 2.14.3 | window switcher | `outlines` | EXTRA
50 | | B | complete | 2.14.4.1 | window switcher | `fields.field.content` | EXTRA
51 | | B | complete | 2.14.4.2 | window switcher | `fields.field.width` | EXTRA
52 | | B | complete | 2.14.5 | window switcher | `allWorkspaces` | EXTRA
53 | | B | complete | 3.6.1 | libinput | naturalScroll | EXTRA
54 | | B | complete | 3.6.2 | libinput | leftHanded | EXTRA
55 | | B | complete | 3.6.3 | libinput | pointerSpeed | EXTRA
56 | | B | complete | 3.6.4 | libinput | accelProfile | EXTRA
57 | | B | complete | 3.6.5 | libinput | tap | EXTRA
58 | | B | complete | 3.6.6 | libinput | tapButtonMap | EXTRA
59 | | B | complete | 3.6.7 | libinput | tapAndDrag | EXTRA
60 | | B | complete | 3.6.8 | libinput | dragLock | EXTRA
61 | | B | complete | 3.6.9 | libinput | middleEmulation | EXTRA
62 | | B | complete | 3.6.10 | libinput | disableWhiteTyping | EXTRA
63 | | B | complete | 3.6.11 | libinput | clickMethod | EXTRA
64 | | B | complete | 3.6.12 | libinput | sendEventsMode | EXTRA
65 | | B | complete | 3.6.13 | libinput | calibrationMatrix | EXTRA
66 | | B | complete | 3.1.6 | keyboard binding | `default` | EXTRA
67 | | B | complete | 3.1.7 | keyboard binding | `layoutDependent` | EXTRA
68 | | B | complete | 3.1.8 | keyboard binding | `onRelease` | EXTRA
69 | | B | complete | 3.1.9 | keyboard binding | `allowWhenLocked` | EXTRA
70 | | B | complete | 3.2.4 | mouse binding | `default` | EXTRA
71 | | B | complete | 3.3.21 | mouse context | `Title` | EXTRA
72 | | B | complete | 4.2.3 | global action | `ShowMenu.atCursor` | EXTRA
73 | | B | complete | 4.16 | global action | `Debug` | EXTRA
74 | | B | complete | 4.17 | global action | `None` | EXTRA Removes other actions within mouse bindings
75 | | B | complete | 4.18 | global action | `Kill` | EXTRA Send SIGTERM
76 | | B | complete | 4.19 | global action | `FocusOutput` | EXTRA
77 | | B | complete | 4.20 | global action | `ToggleKeybinds` | EXTRA
78 | | B | complete | 4.21 | global action | `VirtualOutputAdd` | EXTRA
79 | | B | complete | 4.22 | global action | `VirtualOutputRemove` | EXTRA
80 | | B | complete | 4.23 | global action | `ToggleTabletMouseEmulation` | EXTRA
81 | | B | complete | 4.24 | global action | `ZoomIn` | EXTRA
82 | | B | complete | 4.25 | global action | `ZoomOut` | EXTRA
83 | | B | complete | 4.26 | global action | `EnableTabletMouseEmulation` | EXTRA
84 | | B | complete | 4.27 | global action | `DisableTabletMouseEmulation` | EXTRA
85 | | B | complete | 4.28 | global action | `WarpCursor` | EXTRA
86 | | B | complete | 5.17.2 | window action | `SetDecorations` | EXTRA
87 | | B | complete | 5.20.1 | window action | `SendToDesktop.to` | EXTRA: support value 'current'
88 | | B | complete | 5.26.1 | window action | `MoveToEdge.snapWindows` | EXTRA
89 | | B | complete | 5.31.2 | window action | `ForEach.none` | EXTRA
90 | | B | complete | 5.36 | window action | `SnapToEdge` | EXTRA
91 | | B | complete | 5.37 | window action | `SnapToRegion` | EXTRA
92 | | B | complete | 5.38 | window action | `MoveToCursor` | EXTRA
93 | | B | complete | 5.39 | window action | `MoveToOutput` | EXTRA
94 | | B | complete | 5.40 | window action | `AutoPlace` | EXTRA
95 | | B | complete | 5.41 | window action | `ToggleSnapToEdge` | EXTRA
96 | | B | complete | 5.42 | window action | `ToggleSnapToRegion` | EXTRA
97 | | B | complete | 5.43 | window action | `UnSnap` | EXTRA
98 | | B | complete | 6.1.11.1 | geometry | `titlebar.height` | EXTRA
99 | | B | complete | 6.1.15 | geometry | `menu.width.min` | EXTRA
100 | | B | complete | 6.1.16 | geometry | `menu.width.max` | EXTRA
101 | | B | complete | 6.1.17 | geometry | `menu.items.padding.x` | EXTRA
102 | | B | complete | 6.1.18 | geometry | `menu.items.padding.y` | EXTRA
103 | | B | complete | 6.1.19.1 | geometry | `osd.window-switcher.width` | EXTRA
104 | | B | complete | 6.1.19.2 | geometry | `osd.window-switcher.item.padding.x` | EXTRA
105 | | B | complete | 6.1.19.3 | geometry | `osd.window-switcher.item.padding.y` | EXTRA
106 | | B | complete | 6.1.19.4 | geometry | `osd.window-switcher.padding` | EXTRA
107 | | B | complete | 6.1.19.5 | geometry | `osd.window-switcher.item.active.border.width` | EXTRA
108 | | B | complete | 6.1.20.1 | geometry | `osd.workspace-switcher.boxes.width` | EXTRA
109 | | B | complete | 6.1.20.2 | geometry | `osd.workspace-switcher.boxes.height` | EXTRA
110 | | B | complete | 6.1.21.1 | geometry | `window.button.width` | EXTRA
111 | | B | complete | 6.1.21.2 | geometry | `window.button.height` | EXTRA
112 | | B | complete | 6.1.21.3 | geometry | `window.button.spacing` | EXTRA
113 | | B | complete | 6.1.21.3 | geometry | `window.button.hover.bg.corner-radius` | EXTRA
114 | | B | complete | 6.1.22.1 | geometry | `window.titlebar.padding.width` | EXTRA
115 | | B | complete | 6.1.22.2 | geometry | `window.titlebar.padding.height` | EXTRA
116 | | B | complete | 6.4.5 | active window textures | `window.active.shadow.size` | EXTRA
117 | | B | complete | 6.4.6 | active window textures | `window.active.shadow.color` | EXTRA
118 | | B | complete | 6.15.1.1 | theme button base | `menu.xbm` | EXTRA
119 | | B+ | complete | 6.15.3 | theme button png | Support png buttons | EXTRA
120 | | B+ | complete | 6.15.4 | theme button svg | Support svg buttons | EXTRA
121 | | B | complete | 6.16.1 | text window switcher | `osd.window-switcher.width` | EXTRA
122 | | B | complete | 6.16.2 | text window switcher | `osd.window-switcher.padding` | EXTRA
123 | | B | complete | 6.16.3 | text window switcher | `osd.window-switcher.item.padding.x` | EXTRA
124 | | B | complete | 6.16.4 | text window switcher | `osd.window-switcher.item.padding.y` | EXTRA
125 | | B | complete | 6.16.5 | text window switcher | `osd.window-switcher.item.active.border.width` | EXTRA
126 | | B | complete | 6.16.6 | text window switcher | `osd.window-switcher.preview.border.width` | EXTRA
127 | | B | complete | 6.16.7 | text window switcher | `osd.window-switcher.preview.border.color` | EXTRA
128 | | B | complete | 6.16.8 | text window switcher | `osd.window-switcher.preview.boxes.width` | EXTRA
129 | | B | complete | 6.16.9 | text window switcher | `osd.window-switcher.preview.boxes.height` | EXTRA
130 |
--------------------------------------------------------------------------------
/all-cat-A-and-B-items.md:
--------------------------------------------------------------------------------
1 | This file has been auto-generated based on README.md. Do not edit it manually
2 |
3 | | Cat | Status | Reference | Category | Description | Comment
4 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
5 | | A | complete | 1.1.1 | general | Optionally support Xwayland |
6 | | A | complete | 1.1.2 | general | Parse `/rc.xml` |
7 | | A | complete | 1.1.3 | general | Parse `/environment` |
8 | | A | complete | 1.1.4 | general | Parse `/autostart` |
9 | | A | complete | 1.1.5 | general | Parse `/menu.xml` |
10 | | A | complete | 1.1.6 | general | Parse openbox themes files and associated xbm icons |
11 | | A | complete | 1.1.7 | general | Catch SIGHUP to re-load config file and theme |
12 | | A | complete | 1.1.8 | general | Support both CSD and SSD |
13 | | A | complete | 1.1.9 | general | Support maximize, iconify, close buttons |
14 | | A | complete | 1.1.10 | general | Support damage tracking to reduce CPU usage |
15 | | A | complete | 1.1.11 | general | Support HiDPI |
16 | | A | complete | 1.1.12 | general | Support on-screen display (osd) |
17 | | A | complete | 1.1.13 | general | Support libinput configuration |
18 | | A | complete | 1.1.14 | general | Support drag-n-drop |
19 | | A | complete | 1.1.15 | general | Support input method editors (IME) |
20 | | A | complete | 1.2.3 | wayland-protocol | [xdg-shell-v3] |
21 | | A | complete | 1.3.3 | wlr-protocol | wlr-foreign-toplevel-management-unstable-v1 |
22 | | A | complete | 1.3.6 | wlr-protocol | wlr-layer-shell-unstable-v1 |
23 | | A | complete | 1.3.7 | wlr-protocol | wlr-output-management-unstable-v1 |
24 | | A | complete | 2.1.2 | resistance | `screenEdgeStrength` | DEVIATION Can be negative
25 | | A | complete | 2.4.1 | theme | `name` |
26 | | A | complete | 2.4.6 | theme | `` |
27 | | A | complete | 2.8.3 | keyboard | `keybind` | See section 3.1
28 | | A | complete | 2.9.2 | mouse | `doubleClickTime` |
29 | | A | complete | 2.9.3 | mouse | `context` |
30 | | A | complete | 3.1.1 | keyboard keybind | `key` |
31 | | A | complete | 3.1.2 | keyboard keybind | `action.name` |
32 | | A | complete | 3.1.3 | keyboard keybind | `action.menu` |
33 | | A | complete | 3.1.4 | keyboard keybind | Support modifier keys |
34 | | A | complete | 3.2.1 | mouse binding | `context.name` |
35 | | A | complete | 3.2.2 | mouse binding | `mousebind.button` |
36 | | A | complete | 3.2.3 | mouse binding | `mousebind.action` |
37 | | A | complete | 3.3.5 | mouse context | `Titlebar` |
38 | | A | complete | 3.3.15 | mouse context | `Iconfiy` |
39 | | A | complete | 3.3.16 | mouse context | `Maximize` |
40 | | A | complete | 3.3.17 | mouse context | `Close` |
41 | | A | complete | 3.4.1 | mouse button | `Left` |
42 | | A | complete | 3.4.1 | mouse button | `Right` |
43 | | A | complete | 3.5.1 | mouse event | `Press` |
44 | | A | complete | 3.5.2 | mouse event | `Click` |
45 | | A | complete | 3.5.3 | mouse event | `DoubleClick` |
46 | | A | complete | 4.1 | global action | `Execute` |
47 | | A | complete | 4.2.1 | global action | `ShowMenu` |
48 | | A | complete | 4.3 | global action | `NextWindow` |
49 | | A | complete | 4.12 | global action | `Reconfigure` |
50 | | A | complete | 4.14 | global action | `Exit` |
51 | | A | complete | 5.1 | window action | `Focus` |
52 | | A | complete | 5.2 | window action | `Raise` |
53 | | A | complete | 5.7 | window action | `Iconify` |
54 | | A | complete | 5.8 | window action | `Close` |
55 | | A | complete | 5.13 | window action | `ToggleMaximize` |
56 | | A | complete | 5.21 | window action | `Move` |
57 | | A | complete | 5.22 | window action | `Resize` |
58 | | A | complete | 6.1.1 | geometry | `border.width` |
59 | | A | complete | 6.1.3 | geometry | `menu.separator.width` |
60 | | A | complete | 6.1.6 | geometry | `osd.border.width` |
61 | | A | complete | 6.2.1 | border colors | `window.active.border.color` |
62 | | A | complete | 6.2.3 | border colors | `window.inactive.border.color` |
63 | | A | complete | 6.2.5 | border colors | `border.color` |
64 | | A | complete | 6.2.9 | border colors | `osd.border.color` |
65 | | A | complete | 6.3.1 | titlebar colors | `window.active.label.text.color` |
66 | | A | complete | 6.3.2 | titlebar colors | `window.inactive.label.text.color` |
67 | | A | complete | 6.3.3 | titlebar colors | `window.active.button.unpressed.image.color` |
68 | | A | complete | 6.3.11 | titlebar colors | `window.inactive.button.unpressed.image.color` |
69 | | A | complete | 6.4.1 | active window textures | `window.active.title.bg` |
70 | | A | complete | 6.8.2 | menu colors | `menu.items.text.color` |
71 | | A | complete | 6.8.4 | menu colors | `menu.items.active.text.color` |
72 | | A | complete | 6.8.6 | menu colors | `menu.separator.color` |
73 | | A | complete | 6.9.1 | menu textures | `menu.items.bg` |
74 | | A | complete | 6.9.2 | menu textures | `menu.items.active.bg` |
75 | | A | complete | 6.10.1 | osd textures | `osd.bg` | we only set the color
76 | | A | complete | 6.11.1 | osd colors | `osd.label.text.color` |
77 | | A | complete | 6.15.1.1 | theme button base | `max.xbm` |
78 | | A | complete | 6.15.1.3 | theme button base | `iconify.xbm` |
79 | | A | complete | 6.15.1.4 | theme button base | `close.xbm` |
80 | | A | complete | 7.1.1 | menu syntax general | `id` |
81 | | A | complete | 7.2.1 | menu syntax item | `label` |
82 | | A | complete | 7.2.3 | menu syntax item | `action` |
83 | | A | complete | 7.3.1 | menu syntax separator | `` | For separator line only
84 | | A | complete | 8.1.1 | extra | Support rounded top window corners | rc.xml ``
85 | | B | complete | 1.1.16 | general | Support `--session` option |
86 | | B | complete | 1.2.1 | wayland-protocol | [presentation-time] |
87 | | B | complete | 1.2.2 | wayland-protocol | [viewporter] |
88 | | B | complete | 1.2.4 | wayland-protocol | fullscreen-shell-unstable-v1 |
89 | | B | complete | 1.2.5 | wayland-protocol | idle-inhibit-unstable-v1 |
90 | | B | | 1.2.6.1 | wayland-protocol | input-method-unstable-v1 |
91 | | B | complete | 1.2.6.2 | wayland-protocol | input-method-unstable-v2 |
92 | | B | | 1.2.7 | wayland-protocol | input-timestamps-unstable-v1 |
93 | | B | | 1.2.8 | wayland-protocol | keyboard-shortcuts-inhibit-unstable-v1 | This is controversial [^3]
94 | | B | | 1.2.9 | wayland-protocol | linux-dmabuf-unstable-v1 |
95 | | B | | 1.2.10 | wayland-protocol | linux-explicit-synchronization-unstable-v1 |
96 | | B | complete | 1.2.11 | wayland-protocol | pointer-constraints-unstable-v1 |
97 | | B | | 1.2.12 | wayland-protocol | pointer-gestures-unstable-v1 |
98 | | B | complete | 1.2.13 | wayland-protocol | primary-selection-unstable-v1 |
99 | | B | complete | 1.2.14 | wayland-protocol | relative-pointer-unstable-v1 |
100 | | B | complete | 1.2.15 | wayland-protocol | tablet-v2-manager |
101 | | B | complete | 1.2.16 | wayland-protocol | text-input-unstable-v3 |
102 | | B | complete | 1.2.17 | wayland-protocol | xdg-decoration-unstable-v1 |
103 | | B | complete | 1.2.18.1 | wayland-protocol | xdg-foreign-v1 |
104 | | B | complete | 1.2.18.2 | wayland-protocol | xdg-foreign-v2 |
105 | | B | complete | 1.2.19 | wayland-protocol | xdg-output-unstable-v1 |
106 | | B | | 1.2.20 | wayland-protocol | xwayland-keyboard-grab-unstable-v1 |
107 | | B | complete | 1.2.21 | wayland-protocol | drm-lease-v1 |
108 | | B | complete | 1.2.22 | wayland-protocol | [ext-session-lock-v1] | This is more secure [^1]
109 | | B | complete | 1.2.23 | wayland-protocol | xdg-activation-v1 |
110 | | B | complete | 1.2.24 | wayland-protocol | single-pixel-buffer-v1 |
111 | | B | complete | 1.2.25 | wayland-protocol | cursor-shape-v1 |
112 | | B | complete | 1.2.26 | wayland-protocol | fractional-scale-v1 |
113 | | B | complete | 1.2.27 | wayland-protocol | tearing-control-manager-v1 |
114 | | B | | 1.2.28 | wayland-protocol | content-type-v1 |
115 | | B | complete | 1.2.29 | wayland-protocol | xwayland-shell-v1 |
116 | | B | complete | 1.2.30 | wayland-protocol | security-context-v1 | Note: initial support only
117 | | B | complete | 1.2.31 | wayland-protocol | cosmic-workspace |
118 | | B | complete | 1.2.32 | wayland-protocol | ext-workspace |
119 | | B | complete | 1.2.33 | wayland-protocol | ext-foreign-toplevel-list |
120 | | B | complete | 1.3.1 | wlr-protocol | wlr-data-control-unstable-v1 |
121 | | B | complete | 1.3.2 | wlr-protocol | wlr-export-dmabuf-unstable-v1 |
122 | | B | complete | 1.3.4 | wlr-protocol | wlr-gamma-control-unstable-v1 |
123 | | B | complete | 1.3.5 | wlr-protocol | wlr-input-inhibitor-unstable-v1 |
124 | | B | complete | 1.3.8 | wlr-protocol | wlr-output-power-management-unstable-v1 |
125 | | B | complete | 1.3.9 | wlr-protocol | wlr-screencopy-unstable-v1 |
126 | | B | complete | 1.3.10 | wlr-protocol | wlr-virtual-pointer-unstable-v1 |
127 | | B | complete | 1.3.11 | wlr-protocol | [kde-server-decoration] | xdg-decoration is preferable, but we support this until GTK move across
128 | | B | | 2.1.1 | resistance | `strength` | If we implement, consider a better name
129 | | B | complete | 2.1.3 | resistance | `windowEdgeStrength` | EXTRA
130 | | B | complete | 2.1.4 | resistance | `unSnapThreshold` | EXTRA
131 | | B | complete | 2.1.5 | resistance | `unMaximizeThreshold` | EXTRA
132 | | B | complete | 2.2.3 | focus | `followMouse` |
133 | | B | complete | 2.2.5 | focus | `followMouseRequiresMovement` | DEVIATION It is called `underMouse` in Openbox
134 | | B | complete | 2.2.6 | focus | `raiseOnFocus` |
135 | | B | complete | 2.3.1 | placement | `policy` |
136 | | B | complete | 2.3.1.1 | placement | `automatic` | DEVIATION: similar to Openbox's `Smart`
137 | | B | complete | 2.3.1.2 | placement | `cursor` | DEVIATION: like Openbox's `UnderMouse`
138 | | B | complete | 2.3.1.3 | placement | `center` | EXTRA
139 | | B | complete | 2.3.1.4 | placement | `cascade` | EXTRA
140 | | B+ | complete | 2.4.2.1 | theme | `` | DEVIATION: Replaces `titleLayout` in Openbox
141 | | B+ | complete | 2.4.2.2 | theme | `` | DEVIATION: Replaces `titleLayout` in Openbox
142 | | B | complete | 2.4.4 | theme | `keepBorder` | DEVIATION: gives ToggleDeocration 3 states
143 | | B | complete | 2.4.7 | theme | `` |
144 | | B | complete | 2.4.8 | theme | `` |
145 | | B | complete | 2.4.9 | theme | `` |
146 | | B | complete | 2.4.10 | theme | `` |
147 | | B | complete | 2.4.11 | theme | `font.name` |
148 | | B | complete | 2.4.12 | theme | `font.size` |
149 | | B | complete | 2.4.13 | theme | `font.weight` |
150 | | B | complete | 2.4.14 | theme | `font.slant` |
151 | | B | complete | 2.4.14.1 | theme | `font.slant: normal` |
152 | | B | complete | 2.4.14.2 | theme | `font.slant: italic` |
153 | | B | complete | 2.4.14.3 | theme | `font.slant: oblique` | EXTRA
154 | | B | complete | 2.4.15 | theme | `dropShadows` | EXTRA
155 | | B | complete | 2.4.16 | theme | `icon` | EXTRA
156 | | B | complete | 2.4.17 | theme | `fallbackAppIcon` | EXTRA
157 | | B | complete | 2.5.1 | desktop | `number` |
158 | | B | complete | 2.5.3 | desktop | `popupTime` |
159 | | B | complete | 2.5.4 | desktop | `names` |
160 | | B | complete | 2.5.5 | desktop | `prefix` | EXTRA
161 | | B | complete | 2.6.1 | resize | drawContents |
162 | | B | complete | 2.6.2 | resize | popupShow |
163 | | B | | 2.6.3 | resize | popupPosition |
164 | | B | | 2.6.4 | resize | popupFixedposition |
165 | | B | | 2.6.5 | resize | cornerRange | EXTRA
166 | | B | | 2.6.6 | resize | minimumArea | EXTRA
167 | | B | complete | 2.7.1 | window rules | `windowRule` | EXTRA
168 | | B | complete | 2.7.2.1 | window rule criteria | `windowRule.identifier` | EXTRA
169 | | B | complete | 2.7.2.2 | window rule criteria | `windowRule.title` | EXTRA
170 | | B | complete | 2.7.2.3 | window rule criteria | `windowRule.matchOnce` | EXTRA
171 | | B | complete | 2.7.3.1 | window rule property | `windowRule.serverDecoration` | EXTRA
172 | | B | complete | 2.7.3.2 | window rule property | `windowRule.skipTaskbar` | EXTRA
173 | | B | complete | 2.7.3.3 | window rule property | `windowRule.skipWindowSwitcher` | EXTRA
174 | | B | complete | 2.7.3.4 | window rule property | `windowRule.ignoreFocusRequest` | EXTRA
175 | | B | complete | 2.7.3.5 | window rule property | `windowRule.fixedPosition` | EXTRA
176 | | B | complete | 2.7.3.6 | window rule property | `windowRule.ignoreConfigureRequest` | EXTRA
177 | | B | complete | 2.7.3.7 | window rule property | `windowRule.wantAbsorbedModifierReleaseEvents` | EXTRA
178 | | B | complete | 2.7.4 | window rule type | `windowRule.type` | EXTRA
179 | | B | complete | 2.7.5.1 | window rule condition | `windowRule.type` | EXTRA
180 | | B | complete | 2.8.4 | keyboard | `numlock` | EXTRA
181 | | B | complete | 2.8.5 | keyboard | `layoutScope` | EXTRA
182 | | B | complete | 2.9.4 | mouse | `scrollFactor` | EXTRA
183 | | B | complete | 2.9a.1 | touch | `deviceName` | EXTRA
184 | | B | complete | 2.9a.2 | touch | `mapToOutput` | EXTRA
185 | | B | complete | 2.9b.1 | tablet | `mapToOutput` | EXTRA
186 | | B | complete | 2.9b.2 | tablet | `rotate` | EXTRA
187 | | B | complete | 2.9b.3 | tablet | `area` | EXTRA
188 | | B | complete | 2.9b.4 | tablet | `map` | EXTRA
189 | | B | complete | 2.9c.1 | tablet tool | `tabletTool` | EXTRA
190 | | B | complete | 2.10.1 | margins | `` |
191 | | B | complete | 2.11.1 | menu | `ignoreButtonReleasePeriod` | DEVIATION: called `hideDelay` in openbox
192 | | B+ | | 2.11.3 | menu | `submenuShowDelay` |
193 | | B | complete | 2.11.4 | menu | `showIcons` | DEVIATION: called `applicationIcons` in Openbox
194 | | B | | 2.11.6 | menu | `file` | TODO: is this supported already?
195 | | B | complete | 2.13.1 | core | `decoration` | EXTRA
196 | | B | complete | 2.13.2 | core | `gap` | EXTRA
197 | | B | complete | 2.13.3 | core | `adaptiveSync` | EXTRA
198 | | B | complete | 2.13.4 | core | `reuseOutputMode` | EXTRA
199 | | B | complete | 2.13.5 | core | `xwaylandPersistence` | EXTRA
200 | | B | complete | 2.13.6 | core | `allowTearing` | EXTRA
201 | | B | complete | 2.13.7 | core | `autoEnableOutputs` | EXTRA
202 | | B | complete | 2.14.1 | window switcher | `show` | EXTRA
203 | | B | complete | 2.14.2 | window switcher | `preview` | EXTRA
204 | | B | complete | 2.14.3 | window switcher | `outlines` | EXTRA
205 | | B | complete | 2.14.4.1 | window switcher | `fields.field.content` | EXTRA
206 | | B | complete | 2.14.4.2 | window switcher | `fields.field.width` | EXTRA
207 | | B | complete | 2.14.5 | window switcher | `allWorkspaces` | EXTRA
208 | | B | complete | 3.6.1 | libinput | naturalScroll | EXTRA
209 | | B | complete | 3.6.2 | libinput | leftHanded | EXTRA
210 | | B | complete | 3.6.3 | libinput | pointerSpeed | EXTRA
211 | | B | complete | 3.6.4 | libinput | accelProfile | EXTRA
212 | | B | complete | 3.6.5 | libinput | tap | EXTRA
213 | | B | complete | 3.6.6 | libinput | tapButtonMap | EXTRA
214 | | B | complete | 3.6.7 | libinput | tapAndDrag | EXTRA
215 | | B | complete | 3.6.8 | libinput | dragLock | EXTRA
216 | | B | complete | 3.6.9 | libinput | middleEmulation | EXTRA
217 | | B | complete | 3.6.10 | libinput | disableWhiteTyping | EXTRA
218 | | B | complete | 3.6.11 | libinput | clickMethod | EXTRA
219 | | B | complete | 3.6.12 | libinput | sendEventsMode | EXTRA
220 | | B | complete | 3.6.13 | libinput | calibrationMatrix | EXTRA
221 | | B | complete | 3.1.6 | keyboard binding | `default` | EXTRA
222 | | B | complete | 3.1.7 | keyboard binding | `layoutDependent` | EXTRA
223 | | B | complete | 3.1.8 | keyboard binding | `onRelease` | EXTRA
224 | | B | complete | 3.1.9 | keyboard binding | `allowWhenLocked` | EXTRA
225 | | B | complete | 3.2.4 | mouse binding | `default` | EXTRA
226 | | B | complete | 3.3.1 | mouse context | `Frame` |
227 | | B | complete | 3.3.2 | mouse context | `Client` |
228 | | B | complete | 3.3.3 | mouse context | `Desktop` |
229 | | B | complete | 3.3.4 | mouse context | `Root` | DEVIATION [^2]
230 | | B | complete | 3.3.6 | mouse context | `Top` |
231 | | B | complete | 3.3.7 | mouse context | `Bottom` |
232 | | B | complete | 3.3.8 | mouse context | `Left` |
233 | | B | complete | 3.3.9 | mouse context | `Right` |
234 | | B | complete | 3.3.10 | mouse context | `TLCorner` |
235 | | B | complete | 3.3.11 | mouse context | `TRCorner` |
236 | | B | complete | 3.3.12 | mouse context | `BLCorner` |
237 | | B | complete | 3.3.13 | mouse context | `BRCorner` |
238 | | B | | 3.3.14 | mouse context | `Icon` |
239 | | B | complete | 3.3.21 | mouse context | `Title` | EXTRA
240 | | B | | 3.4.1 | mouse button | `Middle` |
241 | | B | complete | 3.4.1 | mouse button | `Up` (scroll) |
242 | | B | complete | 3.4.1 | mouse button | `Down` (scroll) |
243 | | B | | 3.5.4 | mouse event | `Release` |
244 | | B | complete | 3.5.5 | mouse event | `Drag` |
245 | | B | complete | 3.5.6 | mouse event | `Scroll` | DEVIATION: Scroll is used instead of Click for mouse-buttons Up/Down
246 | | B | complete | 4.2.2 | global action | `ShowMenu.menu` |
247 | | B | complete | 4.2.3 | global action | `ShowMenu.atCursor` | EXTRA
248 | | B | complete | 4.2.4 | global action | `ShowMenu.position` |
249 | | B | | 4.5 | global action | `DirectionalCycleWindows` |
250 | | B | | 4.6 | global action | `DirectionalTargetWindows` |
251 | | B | complete | 4.7 | global action | `GoToDesktop` |
252 | | B | complete | 4.7.1 | global action | `GoToDesktop.to` |
253 | | B | complete | 4.7.1.1 | global action | `GoToDesktop.to::last` |
254 | | B | complete | 4.7.1.2 | global action | `GoToDesktop.to::right` |
255 | | B | complete | 4.7.1.3 | global action | `GoToDesktop.to::left` |
256 | | B | complete | 4.7.2 | global action | `GoToDesktop.wrap` |
257 | | B | | 4.8 | global action | `AddDesktop` |
258 | | B | | 4.9 | global action | `RemoveDesktop` |
259 | | B | | 4.10 | global action | `ToggleShowDesktop` |
260 | | B | complete | 4.16 | global action | `Debug` | EXTRA
261 | | B | complete | 4.17 | global action | `None` | EXTRA Removes other actions within mouse bindings
262 | | B | complete | 4.18 | global action | `Kill` | EXTRA Send SIGTERM
263 | | B | complete | 4.19 | global action | `FocusOutput` | EXTRA
264 | | B | complete | 4.20 | global action | `ToggleKeybinds` | EXTRA
265 | | B | complete | 4.21 | global action | `VirtualOutputAdd` | EXTRA
266 | | B | complete | 4.22 | global action | `VirtualOutputRemove` | EXTRA
267 | | B | complete | 4.23 | global action | `ToggleTabletMouseEmulation` | EXTRA
268 | | B | complete | 4.24 | global action | `ZoomIn` | EXTRA
269 | | B | complete | 4.25 | global action | `ZoomOut` | EXTRA
270 | | B | complete | 4.26 | global action | `EnableTabletMouseEmulation` | EXTRA
271 | | B | complete | 4.27 | global action | `DisableTabletMouseEmulation` | EXTRA
272 | | B | complete | 4.28 | global action | `WarpCursor` | EXTRA
273 | | B | complete | 5.3 | window action | `Lower` |
274 | | B | | 5.4 | window action | `RaiseLower` |
275 | | B | complete | 5.5 | window action | `Unfocus` |
276 | | B | | 5.6 | window action | `FocusToBottom` |
277 | | B | complete | 5.9 | window action | `ToggleShade` |
278 | | B | complete | 5.10 | window action | `Shade` |
279 | | B | complete | 5.11 | window action | `Unshade` |
280 | | B | complete | 5.12 | window action | `ToggleOmnipresent` | aka sticky
281 | | B | | 5.13.1 | window action | `ToggleMaximize.direction` |
282 | | B | complete | 5.14 | window action | `Maximize` |
283 | | B | | 5.14.1 | window action | `Maximize.direction` |
284 | | B | complete | 5.15 | window action | `Unmaximize` |
285 | | B | | 5.15.1 | window action | `Unmaximize.direction` |
286 | | B | complete | 5.16 | window action | `ToggleFullscreen` |
287 | | B | complete | 5.17.1 | window action | `ToggleDecorations` |
288 | | B | complete | 5.17.2 | window action | `SetDecorations` | EXTRA
289 | | B | | 5.18 | window action | `Decorate` |
290 | | B | | 5.19 | window action | `Undecorate` |
291 | | B | complete | 5.20 | window action | `SendToDesktop` |
292 | | B | complete | 5.20.1 | window action | `SendToDesktop.to` | EXTRA: support value 'current'
293 | | B | complete | 5.20.2 | window action | `SendToDesktop.follow` |
294 | | B | complete | 5.20.3 | window action | `SendToDesktop.wrap` |
295 | | B | complete | 5.23.1 | window action | `MoveTo` | DEVIATION: `MoveResizeTo` in Openbox
296 | | B | complete | 5.23.2 | window action | `ResizeTo` |
297 | | B | complete | 5.24 | window action | `MoveRelative` |
298 | | B | complete | 5.25 | window action | `ResizeRelative` |
299 | | B | complete | 5.26 | window action | `MoveToEdge` |
300 | | B | complete | 5.26.1 | window action | `MoveToEdge.snapWindows` | EXTRA
301 | | B | complete | 5.27 | window action | `GrowToEdge` |
302 | | B | | 5.28 | window action | `GrowToFill` |
303 | | B | complete | 5.29 | window action | `ShrinkToEdge` |
304 | | B | complete | 5.30 | window action | `If` |
305 | | B | complete | 5.31.1 | window action | `ForEach` |
306 | | B | complete | 5.31.2 | window action | `ForEach.none` | EXTRA
307 | | B | complete | 5.33 | window action | `ToggleAlwaysOnTop` |
308 | | B | complete | 5.34 | window action | `ToggleAlwaysOnBottom` |
309 | | B | complete | 5.36 | window action | `SnapToEdge` | EXTRA
310 | | B | complete | 5.37 | window action | `SnapToRegion` | EXTRA
311 | | B | complete | 5.38 | window action | `MoveToCursor` | EXTRA
312 | | B | complete | 5.39 | window action | `MoveToOutput` | EXTRA
313 | | B | complete | 5.40 | window action | `AutoPlace` | EXTRA
314 | | B | complete | 5.41 | window action | `ToggleSnapToEdge` | EXTRA
315 | | B | complete | 5.42 | window action | `ToggleSnapToRegion` | EXTRA
316 | | B | complete | 5.43 | window action | `UnSnap` | EXTRA
317 | | B | complete | 6.1.2 | geometry | `menu.border.width` |
318 | | B | complete | 6.1.4 | geometry | `menu.separator.padding.width` |
319 | | B | complete | 6.1.5 | geometry | `menu.separator.padding.height` |
320 | | B | | 6.1.10 | geometry | `padding.width` |
321 | | B | complete | 6.1.11 | geometry | `padding.height` |
322 | | B | complete | 6.1.11.1 | geometry | `titlebar.height` | EXTRA
323 | | B | complete | 6.1.12 | geometry | `menu.overlap.x` |
324 | | B | complete | 6.1.13 | geometry | `menu.overlap.y` |
325 | | B | | 6.1.14 | geometry | `menu.overlap` |
326 | | B | complete | 6.1.15 | geometry | `menu.width.min` | EXTRA
327 | | B | complete | 6.1.16 | geometry | `menu.width.max` | EXTRA
328 | | B | complete | 6.1.17 | geometry | `menu.items.padding.x` | EXTRA
329 | | B | complete | 6.1.18 | geometry | `menu.items.padding.y` | EXTRA
330 | | B | complete | 6.1.19.1 | geometry | `osd.window-switcher.width` | EXTRA
331 | | B | complete | 6.1.19.2 | geometry | `osd.window-switcher.item.padding.x` | EXTRA
332 | | B | complete | 6.1.19.3 | geometry | `osd.window-switcher.item.padding.y` | EXTRA
333 | | B | complete | 6.1.19.4 | geometry | `osd.window-switcher.padding` | EXTRA
334 | | B | complete | 6.1.19.5 | geometry | `osd.window-switcher.item.active.border.width` | EXTRA
335 | | B | complete | 6.1.20.1 | geometry | `osd.workspace-switcher.boxes.width` | EXTRA
336 | | B | complete | 6.1.20.2 | geometry | `osd.workspace-switcher.boxes.height` | EXTRA
337 | | B | complete | 6.1.21.1 | geometry | `window.button.width` | EXTRA
338 | | B | complete | 6.1.21.2 | geometry | `window.button.height` | EXTRA
339 | | B | complete | 6.1.21.3 | geometry | `window.button.spacing` | EXTRA
340 | | B | complete | 6.1.21.3 | geometry | `window.button.hover.bg.corner-radius` | EXTRA
341 | | B | complete | 6.1.22.1 | geometry | `window.titlebar.padding.width` | EXTRA
342 | | B | complete | 6.1.22.2 | geometry | `window.titlebar.padding.height` | EXTRA
343 | | B | | 6.2.2 | border colors | `window.active.title.separator.color` |
344 | | B | | 6.2.4 | border colors | `window.inactive.title.separator.color` |
345 | | B | | 6.2.6 | border colors | `window.active.client.color` |
346 | | B | | 6.2.7 | border colors | `window.inactive.client.color` |
347 | | B | complete | 6.2.8 | border colors | `menu.border.color` |
348 | | B | | 6.3.4 | titlebar colors | `window.active.button.pressed.image.color` |
349 | | B | | 6.3.5 | titlebar colors | `window.active.button.disabled.image.color` |
350 | | B | | 6.3.6 | titlebar colors | `window.active.button.hover.image.color` |
351 | | B | | 6.3.7 | titlebar colors | `window.active.button.toggled.unpressed.image.color` |
352 | | B | | 6.3.8 | titlebar colors | `window.active.button.toggled.pressed.image.color` |
353 | | B | | 6.3.9 | titlebar colors | `window.active.button.toggled.hover.image.color` |
354 | | B | | 6.3.10 | titlebar colors | `window.active.button.toggled.image.color` |
355 | | B | | 6.3.12 | titlebar colors | `window.inactive.button.pressed.image.color` |
356 | | B | | 6.3.13 | titlebar colors | `window.inactive.button.disabled.image.color` |
357 | | B | | 6.3.14 | titlebar colors | `window.inactive.button.hover.image.color` |
358 | | B | | 6.3.15 | titlebar colors | `window.inactive.button.toggled.unpressed.image.color` |
359 | | B | | 6.3.16 | titlebar colors | `window.inactive.button.toggled.pressed.image.color` |
360 | | B | | 6.3.17 | titlebar colors | `window.inactive.button.toggled.hover.image.color` |
361 | | B | | 6.3.18 | titlebar colors | `window.inactive.button.toggled.image.color` |
362 | | B | | 6.4.2 | active window textures | `window.active.label.bg` |
363 | | B | | 6.4.4 | active window textures | `window.active.grip.bg` |
364 | | B | complete | 6.4.5 | active window textures | `window.active.shadow.size` | EXTRA
365 | | B | complete | 6.4.6 | active window textures | `window.active.shadow.color` | EXTRA
366 | | B | | 6.6.1 | active window button textures | `window.active.button.unpressed.bg` |
367 | | B | | 6.6.2 | active window button textures | `window.active.button.pressed.bg` |
368 | | B | | 6.6.3 | active window button textures | `window.active.button.hover.bg` |
369 | | B | | 6.6.4 | active window button textures | `window.active.button.disabled.bg` |
370 | | B | | 6.6.5 | active window button textures | `window.active.button.toggled.unpressed.bg` |
371 | | B | | 6.6.6 | active window button textures | `window.active.button.toggled.pressed.bg` |
372 | | B | | 6.6.7 | active window button textures | `window.active.button.toggled.hover.bg` |
373 | | B | | 6.6.8 | active window button textures | `window.active.button.toggled.bg` |
374 | | B | | 6.7.1 | inactive window button textures | `window.inactive.button.unpressed.bg` |
375 | | B | | 6.7.2 | inactive window button textures | `window.inactive.button.pressed.bg` |
376 | | B | | 6.7.3 | inactive window button textures | `window.inactive.button.hover.bg` |
377 | | B | | 6.7.4 | inactive window button textures | `window.inactive.button.disabled.bg` |
378 | | B | | 6.7.5 | inactive window button textures | `window.inactive.button.toggled.unpressed.bg` |
379 | | B | | 6.7.6 | inactive window button textures | `window.inactive.button.toggled.pressed.bg` |
380 | | B | | 6.7.7 | inactive window button textures | `window.inactive.button.toggled.hover.bg` |
381 | | B | | 6.7.8 | inactive window button textures | `window.inactive.button.toggled.bg` |
382 | | B | complete | 6.8.1 | menu colors | `menu.title.text.color` |
383 | | B | | 6.8.3 | menu colors | `menu.items.disabled.text.color` |
384 | | B | | 6.8.5 | menu colors | `menu.items.active.disabled.text.color` |
385 | | B | complete | 6.9.3 | menu textures | `menu.title.bg` |
386 | | B | | 6.10.3 | osd textures | `osd.hilight.bg` | for desktop osd only
387 | | B | | 6.10.4 | osd textures | `osd.unhilight.bg` | for desktop osd only
388 | | B | | 6.11.2 | osd colors | `osd.hilight.bg.color` | for desktop osd only
389 | | B | | 6.11.3 | osd colors | `osd.unhilight.bg.color` | for desktop osd only
390 | | B | complete | 6.12.1 | text justification | `window.label.text.justify` |
391 | | B | complete | 6.12.2 | text justification | `menu.title.text.justify` |
392 | | B | complete | 6.15.1.2 | theme button base | `max_toggled.xbm` |
393 | | B | complete | 6.15.1.5 | theme button base | `desk.xbm` |
394 | | B | complete | 6.15.1.6 | theme button base | `desk_toggled.xbm` |
395 | | B | complete | 6.15.1.7 | theme button base | `shade.xbm` |
396 | | B | complete | 6.15.1.8 | theme button base | `shade_toggled.xbm` |
397 | | B | | 6.15.1.9 | theme button base | `bullet.xbm` |
398 | | B | complete | 6.15.1.1 | theme button base | `menu.xbm` | EXTRA
399 | | B | complete | 6.15.2.1 | theme button variant | `_hover` |
400 | | B | | 6.15.2.2 | theme button variant | `_pressed` |
401 | | B | | 6.15.2.3 | theme button variant | `_disabled` |
402 | | B+ | complete | 6.15.3 | theme button png | Support png buttons | EXTRA
403 | | B+ | complete | 6.15.4 | theme button svg | Support svg buttons | EXTRA
404 | | B | complete | 6.16.1 | text window switcher | `osd.window-switcher.width` | EXTRA
405 | | B | complete | 6.16.2 | text window switcher | `osd.window-switcher.padding` | EXTRA
406 | | B | complete | 6.16.3 | text window switcher | `osd.window-switcher.item.padding.x` | EXTRA
407 | | B | complete | 6.16.4 | text window switcher | `osd.window-switcher.item.padding.y` | EXTRA
408 | | B | complete | 6.16.5 | text window switcher | `osd.window-switcher.item.active.border.width` | EXTRA
409 | | B | complete | 6.16.6 | text window switcher | `osd.window-switcher.preview.border.width` | EXTRA
410 | | B | complete | 6.16.7 | text window switcher | `osd.window-switcher.preview.border.color` | EXTRA
411 | | B | complete | 6.16.8 | text window switcher | `osd.window-switcher.preview.boxes.width` | EXTRA
412 | | B | complete | 6.16.9 | text window switcher | `osd.window-switcher.preview.boxes.height` | EXTRA
413 | | B | complete | 7.0.1 | menu general | Parse menu.xml in accordance with Openbox 3.6 spec |
414 | | B | complete | 7.0.2 | menu general | Handle pointer input |
415 | | B+ | complete | 7.0.3 | menu general | Handle keyboard input |
416 | | B | complete | 7.1.2 | menu syntax general | `label` |
417 | | B+ | complete | 7.1.4 | menu syntax general | `execute` | Pipe-menus
418 | | B | complete | 7.3.2 | menu syntax separator | `` | For separator with text
419 | | B | complete | 7.4.1 | menu builtin | `client-list-combined-menu` |
420 | | B | complete | 7.4.4 | menu builtin | `client-send-to-menu` |
421 | | B | complete | 7.4.6 | menu builtin | `root-menu` |
422 | | B | complete | 8.2.1 | extra | `` |
423 | | B | complete | 8.2.2 | extra | `` |
424 | | B | complete | 8.2.3 | extra | `` |
425 | | B | complete | 8.2.4 | extra | `` |
426 | | B | complete | 8.2.5 | extra | `` |
427 | | B | complete | 9.1.1 | Regions | `` |
428 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Scope
2 |
3 | - [Introduction](#introduction)
4 | - [Categorisation](#categorisation)
5 | - [Priorities](#priorities)
6 | - [Sections](#sections)
7 | - [Filtered Views](#filtered-views)
8 | - [Requirements](#requirements)
9 | - General and Protocols
10 | - [1.1 General](#11-general)
11 | - [1.2 Wayland Protocols](#12-wayland-protocols)
12 | - [1.3 wlroots Protocols](#13-wlroots-protocols)
13 | - Configuration
14 | - [2.1 Resistance](#21-configuration---resistance)
15 | - [2.2 Focus](#22-configuration---focus)
16 | - [2.3 Placement](#23-configuration---placement)
17 | - [2.4 Theme](#24-configuration---theme)
18 | - [2.5 Desktop](#25-configuration---desktop)
19 | - [2.6 Resize](#26-configuration---resize)
20 | - [2.7 Window Rules](#27-configuration---window-rules)
21 | - [2.8 Keyboard](#28-configuration---keyboard)
22 | - [2.9 Mouse](#29-configuration---mouse)
23 | - [2.10 Margins](#210-configuration---margins)
24 | - [2.11 Menu](#211-configuration---menu)
25 | - [2.12 Dock](#212-configuration---dock)
26 | - [2.13 Core](#213-configuration---core)
27 | - [2.14 Window Switcher](#214-configuration---window-switcher)
28 | - [2.15 Libinput](#215-configuration---libinput)
29 | - Bindings
30 | - [3.1 Keyboard](#31-configuration---keyboard-keybind)
31 | - [3.2 Mouse](#32-configuration---mouse-binding)
32 | - [3.3 Mouse Contexts](#33-configuration---mouse-context)
33 | - [3.4 Mouse Buttons](#34-configuration---mouse-button)
34 | - [3.5 Mouse Events](#35-configuration---mouse-event)
35 | - Actions
36 | - [4 Global Actions](#4-global-actions)
37 | - [5 Window Actions](#5-window-actions)
38 | - Theme
39 | - [6.1 Geometry](#61-theme---geometry)
40 | - [6.2 Border Colors](#62-theme---border-colors)
41 | - [6.3 Titlebar Colors](#63-theme---titlebar-colors)
42 | - [6.4 Active Window Textures](#64-theme---active-window-textures)
43 | - [6.5 Inactive Window Textures](#65-theme---inactive-window-textures)
44 | - [6.6 Active Window Button Textures](#66-theme---active-window-button-textures)
45 | - [6.7 Inactive Window Button Textures](#67-theme---inactive-window-button-textures)
46 | - [6.8 Menu Colors](#68-theme---menu-colors)
47 | - [6.9 Menu Textures](#69-theme---menu-textures)
48 | - [6.10 On-Screen-Display Textures](#610-theme---on-screen-display-textures)
49 | - [6.11 On-Screen-Display Colors](#611-theme---on-screen-display-colors)
50 | - [6.12 Text Justification](#612-theme---text-justification)
51 | - [6.13 Text Shadows](#613-theme---text-shadows)
52 | - [6.14 Dialogs](#614-theme---dialogs)
53 | - [6.15 Button Images](#615-theme---buttom-images)
54 | - [6.16 Window Switcher](#615-theme---window-switcher)
55 | - [7 Menus](#7-menus)
56 | - [8 Extra](#8-extra)
57 | - [Appendix A - Terminology](#appendix-a---terminology)
58 | - [Appendix B - IPC](#appendix-b---ipc)
59 | - [Appendix C - Configuration Syntax](#appendix-c---configuration-syntax)
60 |
61 | # Introduction
62 |
63 | In order to reduce commit noise in the main `labwc` repository, scope
64 | is managed here.
65 |
66 | A set of user & system requirements were documented early in the project
67 | (initially on the wiki then in this file) to form a baseline against which
68 | developers can:
69 |
70 | - define what is in-scope and out-of-scope
71 | - measure progress
72 | - record decisions
73 | - declare the intent of the project
74 | - manage expectations
75 | - produce proporitionate design solutions
76 |
77 | This document also help users understand what the project is about and if it is
78 | the sort of compositor they wish to use.
79 |
80 | Acceptance criteria for each requirement is in accordance with openbox 3.6
81 | specification unless other wise stated.
82 |
83 | # Categorisation
84 |
85 | Requirements are categorised as follows:
86 |
87 | - `A`: in-scope: "must have" for minimum viable product
88 | - `B+`: in-scope: "should/could have" - likely to implemented at some point
89 | - `B`: discretionary: if devs feel like it and benefits are greater than
90 | cost (burden) of maintenance and complexity
91 | - `C`: out-of-scope: not intended to be implemented
92 |
93 | # Priorities
94 |
95 | 1. Stabilize current scope and fix issues and bugs. This is quite important.
96 | We do not want to spend time on an expanding scope with new features until
97 | the project is reliable at its current scope.
98 | 2. Implement `Cat A` requirements (COMPLETE).
99 | 3. Implement `Cat B+` requirements.
100 | 4. Review `Cat B` requirements and try to demote as many as possible to C
101 |
102 | The graph below shows the current status of cat A and B requirements.
103 | 
104 |
105 | # Sections
106 |
107 | - Requirements are organised into the sections listed below.
108 | - The first digit in the reference number relates to the section.
109 | - Sections 2-7 refer to the the openbox 3.6 specification. For further details
110 | read the respective openbox wiki page.
111 |
112 | 1. General and Protocols
113 | 2. Configuration [http://openbox.org/wiki/Help:Configuration](http://openbox.org/wiki/Help:Configuration)
114 | 3. Bindings [http://openbox.org/wiki/Help:Bindings](http://openbox.org/wiki/Help:Bindings)
115 | 4. Global Actions [http://openbox.org/wiki/Help:Actions](http://openbox.org/wiki/Help:Actions)
116 | 5. Window Actions [http://openbox.org/wiki/Help:Actions](http://openbox.org/wiki/Help:Actions)
117 | 6. Theme [http://openbox.org/wiki/Help:Themes](http://openbox.org/wiki/Help:Themes)
118 | 7. Menus [http://openbox.org/wiki/Help:Menus](http://openbox.org/wiki/Help:Menus)
119 | 8. Extra
120 |
121 | # Filtered Views
122 |
123 | The following filtered views are auto-generated based on the tables in the
124 | Requirements section below.
125 |
126 | - [Deviations](deviations.md): Differences relative to Openbox 3.6 specification
127 | - [Extra](extra.md): Additional features relative to Openbox 3.6 specification
128 | - [Incomplete Cat B items](incomplete-cat-B-items.md)
129 | - [Cat A and B only](all-cat-A-and-B-items.md)
130 |
131 | # Requirements
132 |
133 | ## 1.1 General
134 |
135 | | Cat | Status | Reference | Category | Description | Comment
136 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
137 | | A | complete | 1.1.1 | general | Optionally support Xwayland |
138 | | A | complete | 1.1.2 | general | Parse `/rc.xml` |
139 | | A | complete | 1.1.3 | general | Parse `/environment` |
140 | | A | complete | 1.1.4 | general | Parse `/autostart` |
141 | | A | complete | 1.1.5 | general | Parse `/menu.xml` |
142 | | A | complete | 1.1.6 | general | Parse openbox themes files and associated xbm icons |
143 | | A | complete | 1.1.7 | general | Catch SIGHUP to re-load config file and theme |
144 | | A | complete | 1.1.8 | general | Support both CSD and SSD |
145 | | A | complete | 1.1.9 | general | Support maximize, iconify, close buttons |
146 | | A | complete | 1.1.10 | general | Support damage tracking to reduce CPU usage |
147 | | A | complete | 1.1.11 | general | Support HiDPI |
148 | | A | complete | 1.1.12 | general | Support on-screen display (osd) |
149 | | A | complete | 1.1.13 | general | Support libinput configuration |
150 | | A | complete | 1.1.14 | general | Support drag-n-drop |
151 | | A | complete | 1.1.15 | general | Support input method editors (IME) |
152 | | B | complete | 1.1.16 | general | Support `--session` option |
153 |
154 | ## 1.2 Wayland Protocols
155 |
156 | | Cat | Status | Reference | Category | Description | Comment
157 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
158 | | B | complete | 1.2.1 | wayland-protocol | [presentation-time] |
159 | | B | complete | 1.2.2 | wayland-protocol | [viewporter] |
160 | | A | complete | 1.2.3 | wayland-protocol | [xdg-shell-v3] |
161 | | B | complete | 1.2.4 | wayland-protocol | fullscreen-shell-unstable-v1 |
162 | | B | complete | 1.2.5 | wayland-protocol | idle-inhibit-unstable-v1 |
163 | | B | | 1.2.6.1 | wayland-protocol | input-method-unstable-v1 |
164 | | B | complete | 1.2.6.2 | wayland-protocol | input-method-unstable-v2 |
165 | | B | | 1.2.7 | wayland-protocol | input-timestamps-unstable-v1 |
166 | | B | | 1.2.8 | wayland-protocol | keyboard-shortcuts-inhibit-unstable-v1 | This is controversial [^3]
167 | | B | | 1.2.9 | wayland-protocol | linux-dmabuf-unstable-v1 |
168 | | B | | 1.2.10 | wayland-protocol | linux-explicit-synchronization-unstable-v1 |
169 | | B | complete | 1.2.11 | wayland-protocol | pointer-constraints-unstable-v1 |
170 | | B | | 1.2.12 | wayland-protocol | pointer-gestures-unstable-v1 |
171 | | B | complete | 1.2.13 | wayland-protocol | primary-selection-unstable-v1 |
172 | | B | complete | 1.2.14 | wayland-protocol | relative-pointer-unstable-v1 |
173 | | B | complete | 1.2.15 | wayland-protocol | tablet-v2-manager |
174 | | B | complete | 1.2.16 | wayland-protocol | text-input-unstable-v3 |
175 | | B | complete | 1.2.17 | wayland-protocol | xdg-decoration-unstable-v1 |
176 | | B | complete | 1.2.18.1 | wayland-protocol | xdg-foreign-v1 |
177 | | B | complete | 1.2.18.2 | wayland-protocol | xdg-foreign-v2 |
178 | | B | complete | 1.2.19 | wayland-protocol | xdg-output-unstable-v1 |
179 | | B | | 1.2.20 | wayland-protocol | xwayland-keyboard-grab-unstable-v1 |
180 | | B | complete | 1.2.21 | wayland-protocol | drm-lease-v1 |
181 | | B | complete | 1.2.22 | wayland-protocol | [ext-session-lock-v1] | This is more secure [^1]
182 | | B | complete | 1.2.23 | wayland-protocol | xdg-activation-v1 |
183 | | B | complete | 1.2.24 | wayland-protocol | single-pixel-buffer-v1 |
184 | | B | complete | 1.2.25 | wayland-protocol | cursor-shape-v1 |
185 | | B | complete | 1.2.26 | wayland-protocol | fractional-scale-v1 |
186 | | B | complete | 1.2.27 | wayland-protocol | tearing-control-manager-v1 |
187 | | B | | 1.2.28 | wayland-protocol | content-type-v1 |
188 | | B | complete | 1.2.29 | wayland-protocol | xwayland-shell-v1 |
189 | | B | complete | 1.2.30 | wayland-protocol | security-context-v1 | Note: initial support only
190 | | B | complete | 1.2.31 | wayland-protocol | cosmic-workspace |
191 | | B | complete | 1.2.32 | wayland-protocol | ext-workspace |
192 | | B | complete | 1.2.33 | wayland-protocol | ext-foreign-toplevel-list |
193 |
194 | [presentation-time]: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tree/main/stable/presentation-time
195 | [viewporter]: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tree/main/stable/viewporter
196 | [xdg-shell-v3]: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tree/main/stable/xdg-shell
197 | [ext-session-lock-v1]: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tree/main/staging/ext-session-lock
198 |
199 | ## 1.3 wlroots Protocols
200 |
201 | | Cat | Status | Reference | Category | Description | Comment
202 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
203 | | B | complete | 1.3.1 | wlr-protocol | wlr-data-control-unstable-v1 |
204 | | B | complete | 1.3.2 | wlr-protocol | wlr-export-dmabuf-unstable-v1 |
205 | | A | complete | 1.3.3 | wlr-protocol | wlr-foreign-toplevel-management-unstable-v1 |
206 | | B | complete | 1.3.4 | wlr-protocol | wlr-gamma-control-unstable-v1 |
207 | | B | complete | 1.3.5 | wlr-protocol | wlr-input-inhibitor-unstable-v1 |
208 | | A | complete | 1.3.6 | wlr-protocol | wlr-layer-shell-unstable-v1 |
209 | | A | complete | 1.3.7 | wlr-protocol | wlr-output-management-unstable-v1 |
210 | | B | complete | 1.3.8 | wlr-protocol | wlr-output-power-management-unstable-v1 |
211 | | B | complete | 1.3.9 | wlr-protocol | wlr-screencopy-unstable-v1 |
212 | | B | complete | 1.3.10 | wlr-protocol | wlr-virtual-pointer-unstable-v1 |
213 | | B | complete | 1.3.11 | wlr-protocol | [kde-server-decoration] | xdg-decoration is preferable, but we support this until GTK move across
214 |
215 | [kde-server-decoration]: https://wayland.app/protocols/kde-server-decoration
216 |
217 | ## 2.1 Configuration - Resistance
218 |
219 | | Cat | Status | Reference | Category | Description | Comment
220 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
221 | | B | | 2.1.1 | resistance | `strength` | If we implement, consider a better name
222 | | A | complete | 2.1.2 | resistance | `screenEdgeStrength` | DEVIATION Can be negative
223 | | B | complete | 2.1.3 | resistance | `windowEdgeStrength` | EXTRA
224 | | B | complete | 2.1.4 | resistance | `unSnapThreshold` | EXTRA
225 | | B | complete | 2.1.5 | resistance | `unMaximizeThreshold` | EXTRA
226 |
227 | ## 2.2 Configuration - Focus
228 |
229 | | Cat | Status | Reference | Category | Description | Comment
230 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
231 | | C | | 2.2.1 | focus | `focusNew` |
232 | | C | | 2.2.2 | focus | `focusLast` |
233 | | B | complete | 2.2.3 | focus | `followMouse` |
234 | | C | | 2.2.4 | focus | `focusDelay` |
235 | | B | complete | 2.2.5 | focus | `followMouseRequiresMovement` | DEVIATION It is called `underMouse` in Openbox
236 | | B | complete | 2.2.6 | focus | `raiseOnFocus` |
237 |
238 | ## 2.3 Configuration - Placement
239 |
240 | ```xml
241 |
242 | cascade|center|automatic|cursor
243 |
244 | ```
245 |
246 | | Cat | Status | Reference | Category | Description | Comment
247 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
248 | | B | complete | 2.3.1 | placement | `policy` |
249 | | B | complete | 2.3.1.1 | placement | `automatic` | DEVIATION: similar to Openbox's `Smart`
250 | | B | complete | 2.3.1.2 | placement | `cursor` | DEVIATION: like Openbox's `UnderMouse`
251 | | B | complete | 2.3.1.3 | placement | `center` | EXTRA
252 | | B | complete | 2.3.1.4 | placement | `cascade` | EXTRA
253 | | C | | 2.3.2 | placement | `center` | Covered by `center`
254 |
255 | ## 2.4 Configuration - Theme
256 |
257 | | Cat | Status | Reference | Category | Description | Comment
258 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
259 | | A | complete | 2.4.1 | theme | `name` |
260 | | B+ | complete | 2.4.2.1 | theme | `` | DEVIATION: Replaces `titleLayout` in Openbox
261 | | B+ | complete | 2.4.2.2 | theme | `` | DEVIATION: Replaces `titleLayout` in Openbox
262 | | B | complete | 2.4.4 | theme | `keepBorder` | DEVIATION: gives ToggleDeocration 3 states
263 | | C | | 2.4.5 | theme | `animateIconify` |
264 | | A | complete | 2.4.6 | theme | `` |
265 | | B | complete | 2.4.7 | theme | `` |
266 | | B | complete | 2.4.8 | theme | `` |
267 | | B | complete | 2.4.9 | theme | `` |
268 | | B | complete | 2.4.10 | theme | `` |
269 | | B | complete | 2.4.11 | theme | `font.name` |
270 | | B | complete | 2.4.12 | theme | `font.size` |
271 | | B | complete | 2.4.13 | theme | `font.weight` |
272 | | B | complete | 2.4.14 | theme | `font.slant` |
273 | | B | complete | 2.4.14.1 | theme | `font.slant: normal` |
274 | | B | complete | 2.4.14.2 | theme | `font.slant: italic` |
275 | | B | complete | 2.4.14.3 | theme | `font.slant: oblique` | EXTRA
276 | | B | complete | 2.4.15 | theme | `dropShadows` | EXTRA
277 | | B | complete | 2.4.16 | theme | `icon` | EXTRA
278 | | B | complete | 2.4.17 | theme | `fallbackAppIcon` | EXTRA
279 |
280 | ## 2.5 Configuration - Desktop
281 |
282 | The solution shall provide simple workspace setup as follows:
283 |
284 | - [x] a. A workspace covers all outputs
285 | - [x] b. The A-Tab OSD only shows windows from the active workspace
286 | - [x] c. A window can only be in a single workspace at any given point in time
287 | (no tags)
288 | - [x] d. External panels will show all windows.
289 | - [x] e. When activating a window which is on a different workspace the
290 | compositor shall switch to that workspace automatically
291 | - [x] f. Configure workspaces as shown in example below.
292 |
293 | ```
294 |
295 | 1000
296 |
297 | foo
298 | bar
299 |
300 |
301 |
302 | ```
303 |
304 | UNDECIDED: Workspace control by clients, for example panels.
305 | It depends on what happens with:
306 | - https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/40
307 | - https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/59
308 | - https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/60
309 |
310 | | Cat | Status | Reference | Category | Description | Comment
311 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
312 | | B | complete | 2.5.1 | desktop | `number` |
313 | | C | | 2.5.2 | desktop | `firstDesk` | Use first ``
314 | | B | complete | 2.5.3 | desktop | `popupTime` |
315 | | B | complete | 2.5.4 | desktop | `names` |
316 | | B | complete | 2.5.5 | desktop | `prefix` | EXTRA
317 |
318 | ## 2.6 Configuration - Resize
319 |
320 | ```
321 |
322 | no
323 | Always
324 | Fixed
325 |
326 | 400
327 | center
328 |
329 |
330 | ```
331 |
332 | | Cat | Status | Reference | Category | Description | Comment
333 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
334 | | B | complete | 2.6.1 | resize | drawContents |
335 | | B | complete | 2.6.2 | resize | popupShow |
336 | | B | | 2.6.3 | resize | popupPosition |
337 | | B | | 2.6.4 | resize | popupFixedposition |
338 | | B | | 2.6.5 | resize | cornerRange | EXTRA
339 | | B | | 2.6.6 | resize | minimumArea | EXTRA
340 |
341 |
342 | ## 2.7 Configuration - Window Rules
343 |
344 | Note: In Openbox this section is called `` (per window settings)
345 | and covers the following settings: `decor` `shade` `position` `size` `focus`
346 | `desktop` `layer` `iconic` `skip_pager` `skip_taskbar` `fullscreen` `maximized`
347 |
348 | ```
349 |
350 |
351 |
352 |
353 |
354 |
355 | ```
356 |
357 | | Cat | Status | Reference | Category | Description | Comment
358 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
359 | | B | complete | 2.7.1 | window rules | `windowRule` | EXTRA
360 | | B | complete | 2.7.2.1 | window rule criteria | `windowRule.identifier` | EXTRA
361 | | B | complete | 2.7.2.2 | window rule criteria | `windowRule.title` | EXTRA
362 | | B | complete | 2.7.2.3 | window rule criteria | `windowRule.matchOnce` | EXTRA
363 | | B | complete | 2.7.3.1 | window rule property | `windowRule.serverDecoration` | EXTRA
364 | | B | complete | 2.7.3.2 | window rule property | `windowRule.skipTaskbar` | EXTRA
365 | | B | complete | 2.7.3.3 | window rule property | `windowRule.skipWindowSwitcher` | EXTRA
366 | | B | complete | 2.7.3.4 | window rule property | `windowRule.ignoreFocusRequest` | EXTRA
367 | | B | complete | 2.7.3.5 | window rule property | `windowRule.fixedPosition` | EXTRA
368 | | B | complete | 2.7.3.6 | window rule property | `windowRule.ignoreConfigureRequest` | EXTRA
369 | | B | complete | 2.7.3.7 | window rule property | `windowRule.wantAbsorbedModifierReleaseEvents` | EXTRA
370 | | B | complete | 2.7.4 | window rule type | `windowRule.type` | EXTRA
371 | | B | complete | 2.7.5.1 | window rule condition | `windowRule.type` | EXTRA
372 |
373 | ## 2.8 Configuration - Keyboard
374 |
375 | | Cat | Status | Reference | Category | Description | Comment
376 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
377 | | C | | 2.8.1 | keyboard | `rebindOnMappingNotify` |
378 | | C | | 2.8.2 | keyboard | `chainQuitKey` |
379 | | A | complete | 2.8.3 | keyboard | `keybind` | See section 3.1
380 | | B | complete | 2.8.4 | keyboard | `numlock` | EXTRA
381 | | B | complete | 2.8.5 | keyboard | `layoutScope` | EXTRA
382 |
383 | ## 2.9 Configuration - Mouse
384 |
385 | | Cat | Status | Reference | Category | Description | Comment
386 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
387 | | C | | 2.9.1 | mouse | `dragThreshold` |
388 | | A | complete | 2.9.2 | mouse | `doubleClickTime` |
389 | | C | | 2.9.3 | mouse | `screenEdgeWarpTime` |
390 | | A | complete | 2.9.3 | mouse | `context` |
391 | | B | complete | 2.9.4 | mouse | `scrollFactor` | EXTRA
392 |
393 | ## 2.9a Configuration - Touch
394 |
395 | ```xml
396 |
397 | ```
398 |
399 | | Cat | Status | Reference | Category | Description | Comment
400 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
401 | | B | complete | 2.9a.1 | touch | `deviceName` | EXTRA
402 | | B | complete | 2.9a.2 | touch | `mapToOutput` | EXTRA
403 |
404 | ## 2.9b Configuration - Tablet
405 |
406 | ```xml
407 |
408 |
409 |
410 |
411 |
412 |
413 | ```
414 |
415 | | Cat | Status | Reference | Category | Description | Comment
416 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
417 | | B | complete | 2.9b.1 | tablet | `mapToOutput` | EXTRA
418 | | B | complete | 2.9b.2 | tablet | `rotate` | EXTRA
419 | | B | complete | 2.9b.3 | tablet | `area` | EXTRA
420 | | B | complete | 2.9b.4 | tablet | `map` | EXTRA
421 |
422 | ## 2.9c Configuration - TabletTool
423 |
424 | ```xml
425 |
426 | ```
427 |
428 | | Cat | Status | Reference | Category | Description | Comment
429 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
430 | | B | complete | 2.9c.1 | tablet tool | `tabletTool` | EXTRA
431 |
432 | ## 2.10 Configuration - Margins
433 |
434 | ``
435 |
436 | | Cat | Status | Reference | Category | Description | Comment
437 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
438 | | B | complete | 2.10.1 | margins | `` |
439 |
440 | ## 2.11 Configuration - Menu
441 |
442 | | Cat | Status | Reference | Category | Description | Comment
443 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
444 | | B | complete | 2.11.1 | menu | `ignoreButtonReleasePeriod` | DEVIATION: called `hideDelay` in openbox
445 | | C | | 2.11.2 | menu | `middle` |
446 | | B+ | | 2.11.3 | menu | `submenuShowDelay` |
447 | | B | complete | 2.11.4 | menu | `showIcons` | DEVIATION: called `applicationIcons` in Openbox
448 | | C | | 2.11.5 | menu | `manageDesktops` |
449 | | B | | 2.11.6 | menu | `file` | TODO: is this supported already?
450 |
451 | ## 2.12 Configuration - Dock
452 |
453 | | Cat | Status | Reference | Category | Description | Comment
454 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
455 | | C | | 2.12.1 | dock | |
456 |
457 | ## 2.13 Configuration - Core
458 |
459 | The `` section is additional to openbox 3.6 spec.
460 |
461 | | Cat | Status | Reference | Category | Description | Comment
462 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
463 | | B | complete | 2.13.1 | core | `decoration` | EXTRA
464 | | B | complete | 2.13.2 | core | `gap` | EXTRA
465 | | B | complete | 2.13.3 | core | `adaptiveSync` | EXTRA
466 | | B | complete | 2.13.4 | core | `reuseOutputMode` | EXTRA
467 | | B | complete | 2.13.5 | core | `xwaylandPersistence` | EXTRA
468 | | B | complete | 2.13.6 | core | `allowTearing` | EXTRA
469 | | B | complete | 2.13.7 | core | `autoEnableOutputs` | EXTRA
470 |
471 | ## 2.14 Configuration - Window Switcher
472 |
473 | The window switcher can be cycled in reverse using shift-tab or up/left
474 | arrow whilst holding alt.
475 |
476 | | Cat | Status | Reference | Category | Description | Comment
477 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
478 | | B | complete | 2.14.1 | window switcher | `show` | EXTRA
479 | | B | complete | 2.14.2 | window switcher | `preview` | EXTRA
480 | | B | complete | 2.14.3 | window switcher | `outlines` | EXTRA
481 | | B | complete | 2.14.4.1 | window switcher | `fields.field.content` | EXTRA
482 | | B | complete | 2.14.4.2 | window switcher | `fields.field.width` | EXTRA
483 | | B | complete | 2.14.5 | window switcher | `allWorkspaces` | EXTRA
484 |
485 | ## 2.15 Configuration - Libinput
486 |
487 | | Cat | Status | Reference | Category | Description | Comment
488 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
489 | | B | complete | 3.6.1 | libinput | naturalScroll | EXTRA
490 | | B | complete | 3.6.2 | libinput | leftHanded | EXTRA
491 | | B | complete | 3.6.3 | libinput | pointerSpeed | EXTRA
492 | | B | complete | 3.6.4 | libinput | accelProfile | EXTRA
493 | | B | complete | 3.6.5 | libinput | tap | EXTRA
494 | | B | complete | 3.6.6 | libinput | tapButtonMap | EXTRA
495 | | B | complete | 3.6.7 | libinput | tapAndDrag | EXTRA
496 | | B | complete | 3.6.8 | libinput | dragLock | EXTRA
497 | | B | complete | 3.6.9 | libinput | middleEmulation | EXTRA
498 | | B | complete | 3.6.10 | libinput | disableWhiteTyping | EXTRA
499 | | B | complete | 3.6.11 | libinput | clickMethod | EXTRA
500 | | B | complete | 3.6.12 | libinput | sendEventsMode | EXTRA
501 | | B | complete | 3.6.13 | libinput | calibrationMatrix | EXTRA
502 |
503 | ## 3.1 Configuration - Keyboard Keybind
504 |
505 | | Cat | Status | Reference | Category | Description | Comment
506 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
507 | | A | complete | 3.1.1 | keyboard keybind | `key` |
508 | | A | complete | 3.1.2 | keyboard keybind | `action.name` |
509 | | A | complete | 3.1.3 | keyboard keybind | `action.menu` |
510 | | A | complete | 3.1.4 | keyboard keybind | Support modifier keys |
511 | | C | | 3.1.5 | keyboard keybind | Support key chains |
512 | | B | complete | 3.1.6 | keyboard binding | `default` | EXTRA
513 | | B | complete | 3.1.7 | keyboard binding | `layoutDependent` | EXTRA
514 | | B | complete | 3.1.8 | keyboard binding | `onRelease` | EXTRA
515 | | B | complete | 3.1.9 | keyboard binding | `allowWhenLocked` | EXTRA
516 |
517 | ## 3.2 Configuration - Mouse Binding
518 |
519 | | Cat | Status | Reference | Category | Description | Comment
520 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
521 | | A | complete | 3.2.1 | mouse binding | `context.name` |
522 | | A | complete | 3.2.2 | mouse binding | `mousebind.button` |
523 | | A | complete | 3.2.3 | mouse binding | `mousebind.action` |
524 | | B | complete | 3.2.4 | mouse binding | `default` | EXTRA
525 |
526 | ## 3.3 Configuration - Mouse Context
527 |
528 | | Cat | Status | Reference | Category | Description | Comment
529 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
530 | | B | complete | 3.3.1 | mouse context | `Frame` |
531 | | B | complete | 3.3.2 | mouse context | `Client` |
532 | | B | complete | 3.3.3 | mouse context | `Desktop` |
533 | | B | complete | 3.3.4 | mouse context | `Root` | DEVIATION [^2]
534 | | A | complete | 3.3.5 | mouse context | `Titlebar` |
535 | | B | complete | 3.3.6 | mouse context | `Top` |
536 | | B | complete | 3.3.7 | mouse context | `Bottom` |
537 | | B | complete | 3.3.8 | mouse context | `Left` |
538 | | B | complete | 3.3.9 | mouse context | `Right` |
539 | | B | complete | 3.3.10 | mouse context | `TLCorner` |
540 | | B | complete | 3.3.11 | mouse context | `TRCorner` |
541 | | B | complete | 3.3.12 | mouse context | `BLCorner` |
542 | | B | complete | 3.3.13 | mouse context | `BRCorner` |
543 | | B | | 3.3.14 | mouse context | `Icon` |
544 | | A | complete | 3.3.15 | mouse context | `Iconfiy` |
545 | | A | complete | 3.3.16 | mouse context | `Maximize` |
546 | | A | complete | 3.3.17 | mouse context | `Close` |
547 | | C | | 3.3.18 | mouse context | `AllDesktops` |
548 | | C | | 3.3.19 | mouse context | `Shade` |
549 | | C | | 3.3.20 | mouse context | `Moveresize` |
550 | | B | complete | 3.3.21 | mouse context | `Title` | EXTRA
551 |
552 | ## 3.4 Configuration - Mouse Button
553 |
554 | | Cat | Status | Reference | Category | Description | Comment
555 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
556 | | A | complete | 3.4.1 | mouse button | `Left` |
557 | | A | complete | 3.4.1 | mouse button | `Right` |
558 | | B | | 3.4.1 | mouse button | `Middle` |
559 | | B | complete | 3.4.1 | mouse button | `Up` (scroll) |
560 | | B | complete | 3.4.1 | mouse button | `Down` (scroll) |
561 |
562 | ## 3.5 Configuration - Mouse Event
563 |
564 | | Cat | Status | Reference | Category | Description | Comment
565 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
566 | | A | complete | 3.5.1 | mouse event | `Press` |
567 | | A | complete | 3.5.2 | mouse event | `Click` |
568 | | A | complete | 3.5.3 | mouse event | `DoubleClick` |
569 | | B | | 3.5.4 | mouse event | `Release` |
570 | | B | complete | 3.5.5 | mouse event | `Drag` |
571 | | B | complete | 3.5.6 | mouse event | `Scroll` | DEVIATION: Scroll is used instead of Click for mouse-buttons Up/Down
572 |
573 | ## 4 Global Actions
574 |
575 | | Cat | Status | Reference | Category | Description | Comment
576 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
577 | | A | complete | 4.1 | global action | `Execute` |
578 | | A | complete | 4.2.1 | global action | `ShowMenu` |
579 | | B | complete | 4.2.2 | global action | `ShowMenu.menu` |
580 | | B | complete | 4.2.3 | global action | `ShowMenu.atCursor` | EXTRA
581 | | B | complete | 4.2.4 | global action | `ShowMenu.position` |
582 | | A | complete | 4.3 | global action | `NextWindow` |
583 | | C | | 4.4 | global action | `PreviousWindow` |
584 | | B | | 4.5 | global action | `DirectionalCycleWindows` |
585 | | B | | 4.6 | global action | `DirectionalTargetWindows` |
586 | | B | complete | 4.7 | global action | `GoToDesktop` |
587 | | B | complete | 4.7.1 | global action | `GoToDesktop.to` |
588 | | B | complete | 4.7.1.1 | global action | `GoToDesktop.to::last` |
589 | | B | complete | 4.7.1.2 | global action | `GoToDesktop.to::right` |
590 | | B | complete | 4.7.1.3 | global action | `GoToDesktop.to::left` |
591 | | C | | 4.7.1.4 | global action | `GoToDesktop.to::current` |
592 | | C | | 4.7.1.5 | global action | `GoToDesktop.to::next` |
593 | | C | | 4.7.1.6 | global action | `GoToDesktop.to::previous` |
594 | | C | | 4.7.1.7 | global action | `GoToDesktop.to::up` |
595 | | C | | 4.7.1.8 | global action | `GoToDesktop.to::down` |
596 | | C | | 4.7.1.9 | global action | `GoToDesktop.to::north` |
597 | | C | | 4.7.1.10 | global action | `GoToDesktop.to::south` |
598 | | C | | 4.7.1.11 | global action | `GoToDesktop.to::west` |
599 | | C | | 4.7.1.12 | global action | `GoToDesktop.to::east` |
600 | | B | complete | 4.7.2 | global action | `GoToDesktop.wrap` |
601 | | B | | 4.8 | global action | `AddDesktop` |
602 | | B | | 4.9 | global action | `RemoveDesktop` |
603 | | B | | 4.10 | global action | `ToggleShowDesktop` |
604 | | C | | 4.11 | global action | `ToggleDockAutohide` |
605 | | A | complete | 4.12 | global action | `Reconfigure` |
606 | | C | | 4.13 | global action | `Restart` |
607 | | A | complete | 4.14 | global action | `Exit` |
608 | | C | | 4.15 | global action | `SessionLogout` |
609 | | B | complete | 4.16 | global action | `Debug` | EXTRA
610 | | B | complete | 4.17 | global action | `None` | EXTRA Removes other actions within mouse bindings
611 | | B | complete | 4.18 | global action | `Kill` | EXTRA Send SIGTERM
612 | | B | complete | 4.19 | global action | `FocusOutput` | EXTRA
613 | | B | complete | 4.20 | global action | `ToggleKeybinds` | EXTRA
614 | | B | complete | 4.21 | global action | `VirtualOutputAdd` | EXTRA
615 | | B | complete | 4.22 | global action | `VirtualOutputRemove` | EXTRA
616 | | B | complete | 4.23 | global action | `ToggleTabletMouseEmulation` | EXTRA
617 | | B | complete | 4.24 | global action | `ZoomIn` | EXTRA
618 | | B | complete | 4.25 | global action | `ZoomOut` | EXTRA
619 | | B | complete | 4.26 | global action | `EnableTabletMouseEmulation` | EXTRA
620 | | B | complete | 4.27 | global action | `DisableTabletMouseEmulation` | EXTRA
621 | | B | complete | 4.28 | global action | `WarpCursor` | EXTRA
622 | | B | complete | 4.29 | global action | `HideCursor` | EXTRA
623 |
624 | ## 5 Window Actions
625 |
626 | | Cat | Status | Reference | Category | Description | Comment
627 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
628 | | A | complete | 5.1 | window action | `Focus` |
629 | | A | complete | 5.2 | window action | `Raise` |
630 | | B | complete | 5.3 | window action | `Lower` |
631 | | B | | 5.4 | window action | `RaiseLower` |
632 | | B | complete | 5.5 | window action | `Unfocus` |
633 | | B | | 5.6 | window action | `FocusToBottom` |
634 | | A | complete | 5.7 | window action | `Iconify` |
635 | | A | complete | 5.8 | window action | `Close` |
636 | | B | complete | 5.9 | window action | `ToggleShade` |
637 | | B | complete | 5.10 | window action | `Shade` |
638 | | B | complete | 5.11 | window action | `Unshade` |
639 | | B | complete | 5.12 | window action | `ToggleOmnipresent` | aka sticky
640 | | A | complete | 5.13 | window action | `ToggleMaximize` |
641 | | B | | 5.13.1 | window action | `ToggleMaximize.direction` |
642 | | B | complete | 5.14 | window action | `Maximize` |
643 | | B | | 5.14.1 | window action | `Maximize.direction` |
644 | | B | complete | 5.15 | window action | `Unmaximize` |
645 | | B | | 5.15.1 | window action | `Unmaximize.direction` |
646 | | B | complete | 5.16 | window action | `ToggleFullscreen` |
647 | | B | complete | 5.17.1 | window action | `ToggleDecorations` |
648 | | B | complete | 5.17.2 | window action | `SetDecorations` | EXTRA
649 | | B | | 5.18 | window action | `Decorate` |
650 | | B | | 5.19 | window action | `Undecorate` |
651 | | B | complete | 5.20 | window action | `SendToDesktop` |
652 | | B | complete | 5.20.1 | window action | `SendToDesktop.to` | EXTRA: support value 'current'
653 | | B | complete | 5.20.2 | window action | `SendToDesktop.follow` |
654 | | B | complete | 5.20.3 | window action | `SendToDesktop.wrap` |
655 | | A | complete | 5.21 | window action | `Move` |
656 | | A | complete | 5.22 | window action | `Resize` |
657 | | B | complete | 5.23.1 | window action | `MoveTo` | DEVIATION: `MoveResizeTo` in Openbox
658 | | B | complete | 5.23.2 | window action | `ResizeTo` |
659 | | B | complete | 5.24 | window action | `MoveRelative` |
660 | | B | complete | 5.25 | window action | `ResizeRelative` |
661 | | B | complete | 5.26 | window action | `MoveToEdge` |
662 | | B | complete | 5.26.1 | window action | `MoveToEdge.snapWindows` | EXTRA
663 | | B | complete | 5.27 | window action | `GrowToEdge` |
664 | | B | | 5.28 | window action | `GrowToFill` |
665 | | B | complete | 5.29 | window action | `ShrinkToEdge` |
666 | | B | complete | 5.30 | window action | `If` |
667 | | B | complete | 5.31.1 | window action | `ForEach` |
668 | | B | complete | 5.31.2 | window action | `ForEach.none` | EXTRA
669 | | C | | 5.32 | window action | `Stop` |
670 | | B | complete | 5.33 | window action | `ToggleAlwaysOnTop` |
671 | | B | complete | 5.34 | window action | `ToggleAlwaysOnBottom` |
672 | | C | | 5.35 | window action | `SendToLayer` |
673 | | B | complete | 5.36 | window action | `SnapToEdge` | EXTRA
674 | | B | complete | 5.37 | window action | `SnapToRegion` | EXTRA
675 | | B | complete | 5.38 | window action | `MoveToCursor` | EXTRA
676 | | B | complete | 5.39 | window action | `MoveToOutput` | EXTRA
677 | | B | complete | 5.40 | window action | `AutoPlace` | EXTRA
678 | | B | complete | 5.41 | window action | `ToggleSnapToEdge` | EXTRA
679 | | B | complete | 5.42 | window action | `ToggleSnapToRegion` | EXTRA
680 | | B | complete | 5.43 | window action | `UnSnap` | EXTRA
681 |
682 | ## 6.1 Theme - Geometry
683 |
684 | | Cat | Status | Reference | Category | Description | Comment
685 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
686 | | A | complete | 6.1.1 | geometry | `border.width` |
687 | | B | complete | 6.1.2 | geometry | `menu.border.width` |
688 | | A | complete | 6.1.3 | geometry | `menu.separator.width` |
689 | | B | complete | 6.1.4 | geometry | `menu.separator.padding.width` |
690 | | B | complete | 6.1.5 | geometry | `menu.separator.padding.height` |
691 | | A | complete | 6.1.6 | geometry | `osd.border.width` |
692 | | C | | 6.1.7 | geometry | `window.client.padding.width` | No need to pad between client surface and title/handle/border
693 | | C | | 6.1.8 | geometry | `window.client.padding.height` | Ditto
694 | | C | | 6.1.9 | geometry | `window.handle.width` | Handle not supported
695 | | B | | 6.1.10 | geometry | `padding.width` |
696 | | B | complete | 6.1.11 | geometry | `padding.height` |
697 | | B | complete | 6.1.11.1 | geometry | `titlebar.height` | EXTRA
698 | | B | complete | 6.1.12 | geometry | `menu.overlap.x` |
699 | | B | complete | 6.1.13 | geometry | `menu.overlap.y` |
700 | | B | | 6.1.14 | geometry | `menu.overlap` |
701 | | B | complete | 6.1.15 | geometry | `menu.width.min` | EXTRA
702 | | B | complete | 6.1.16 | geometry | `menu.width.max` | EXTRA
703 | | B | complete | 6.1.17 | geometry | `menu.items.padding.x` | EXTRA
704 | | B | complete | 6.1.18 | geometry | `menu.items.padding.y` | EXTRA
705 | | B | complete | 6.1.19.1 | geometry | `osd.window-switcher.width` | EXTRA
706 | | B | complete | 6.1.19.2 | geometry | `osd.window-switcher.item.padding.x` | EXTRA
707 | | B | complete | 6.1.19.3 | geometry | `osd.window-switcher.item.padding.y` | EXTRA
708 | | B | complete | 6.1.19.4 | geometry | `osd.window-switcher.padding` | EXTRA
709 | | B | complete | 6.1.19.5 | geometry | `osd.window-switcher.item.active.border.width` | EXTRA
710 | | B | complete | 6.1.19.6 | geometry | `osd.window-switcher.item.icon.size` | EXTRA
711 | | B | complete | 6.1.20.1 | geometry | `osd.workspace-switcher.boxes.width` | EXTRA
712 | | B | complete | 6.1.20.2 | geometry | `osd.workspace-switcher.boxes.height` | EXTRA
713 | | B | complete | 6.1.20.3 | geometry | `osd.workspace-switcher.boxes.border.width` | EXTRA
714 | | B | complete | 6.1.21.1 | geometry | `window.button.width` | EXTRA
715 | | B | complete | 6.1.21.2 | geometry | `window.button.height` | EXTRA
716 | | B | complete | 6.1.21.3 | geometry | `window.button.spacing` | EXTRA
717 | | B | complete | 6.1.21.3 | geometry | `window.button.hover.bg.corner-radius` | EXTRA
718 | | B | complete | 6.1.22.1 | geometry | `window.titlebar.padding.width` | EXTRA
719 | | B | complete | 6.1.22.2 | geometry | `window.titlebar.padding.height` | EXTRA
720 |
721 | ## 6.2 Theme - Border Colors
722 |
723 | | Cat | Status | Reference | Category | Description | Comment
724 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
725 | | A | complete | 6.2.1 | border colors | `window.active.border.color` |
726 | | B | | 6.2.2 | border colors | `window.active.title.separator.color` |
727 | | A | complete | 6.2.3 | border colors | `window.inactive.border.color` |
728 | | B | | 6.2.4 | border colors | `window.inactive.title.separator.color` |
729 | | A | complete | 6.2.5 | border colors | `border.color` |
730 | | B | | 6.2.6 | border colors | `window.active.client.color` |
731 | | B | | 6.2.7 | border colors | `window.inactive.client.color` |
732 | | B | complete | 6.2.8 | border colors | `menu.border.color` |
733 | | A | complete | 6.2.9 | border colors | `osd.border.color` |
734 |
735 | ## 6.3 Theme - Titlebar Colors
736 |
737 | | Cat | Status | Reference | Category | Description | Comment
738 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
739 | | A | complete | 6.3.1 | titlebar colors | `window.active.label.text.color` |
740 | | A | complete | 6.3.2 | titlebar colors | `window.inactive.label.text.color` |
741 | | A | complete | 6.3.3 | titlebar colors | `window.active.button.unpressed.image.color` |
742 | | B | | 6.3.4 | titlebar colors | `window.active.button.pressed.image.color` |
743 | | B | | 6.3.5 | titlebar colors | `window.active.button.disabled.image.color` |
744 | | B | | 6.3.6 | titlebar colors | `window.active.button.hover.image.color` |
745 | | B | | 6.3.7 | titlebar colors | `window.active.button.toggled.unpressed.image.color` |
746 | | B | | 6.3.8 | titlebar colors | `window.active.button.toggled.pressed.image.color` |
747 | | B | | 6.3.9 | titlebar colors | `window.active.button.toggled.hover.image.color` |
748 | | B | | 6.3.10 | titlebar colors | `window.active.button.toggled.image.color` |
749 | | A | complete | 6.3.11 | titlebar colors | `window.inactive.button.unpressed.image.color` |
750 | | B | | 6.3.12 | titlebar colors | `window.inactive.button.pressed.image.color` |
751 | | B | | 6.3.13 | titlebar colors | `window.inactive.button.disabled.image.color` |
752 | | B | | 6.3.14 | titlebar colors | `window.inactive.button.hover.image.color` |
753 | | B | | 6.3.15 | titlebar colors | `window.inactive.button.toggled.unpressed.image.color` |
754 | | B | | 6.3.16 | titlebar colors | `window.inactive.button.toggled.pressed.image.color` |
755 | | B | | 6.3.17 | titlebar colors | `window.inactive.button.toggled.hover.image.color` |
756 | | B | | 6.3.18 | titlebar colors | `window.inactive.button.toggled.image.color` |
757 |
758 | ## 6.4 Theme - Active Window Textures
759 |
760 | | Cat | Status | Reference | Category | Description | Comment
761 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
762 | | A | complete | 6.4.1 | active window textures | `window.active.title.bg` |
763 | | B | | 6.4.2 | active window textures | `window.active.label.bg` |
764 | | C | | 6.4.3 | active window textures | `window.active.handle.bg` | We don't support handle.
765 | | B | | 6.4.4 | active window textures | `window.active.grip.bg` |
766 | | B | complete | 6.4.5 | active window textures | `window.active.shadow.size` | EXTRA
767 | | B | complete | 6.4.6 | active window textures | `window.active.shadow.color` | EXTRA
768 |
769 | ## 6.5 Theme - Inactive Window Textures
770 |
771 | Same as 6.4, just replace `active` with `inactive`
772 |
773 | ## 6.6 Theme - Active Window Button Textures
774 |
775 | | Cat | Status | Reference | Category | Description | Comment
776 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
777 | | B | | 6.6.1 | active window button textures | `window.active.button.unpressed.bg` |
778 | | B | | 6.6.2 | active window button textures | `window.active.button.pressed.bg` |
779 | | B | | 6.6.3 | active window button textures | `window.active.button.hover.bg` |
780 | | B | | 6.6.4 | active window button textures | `window.active.button.disabled.bg` |
781 | | B | | 6.6.5 | active window button textures | `window.active.button.toggled.unpressed.bg` |
782 | | B | | 6.6.6 | active window button textures | `window.active.button.toggled.pressed.bg` |
783 | | B | | 6.6.7 | active window button textures | `window.active.button.toggled.hover.bg` |
784 | | B | | 6.6.8 | active window button textures | `window.active.button.toggled.bg` |
785 |
786 | ## 6.7 Theme - Inactive Window Button Textures
787 |
788 | | Cat | Status | Reference | Category | Description | Comment
789 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
790 | | B | | 6.7.1 | inactive window button textures | `window.inactive.button.unpressed.bg` |
791 | | B | | 6.7.2 | inactive window button textures | `window.inactive.button.pressed.bg` |
792 | | B | | 6.7.3 | inactive window button textures | `window.inactive.button.hover.bg` |
793 | | B | | 6.7.4 | inactive window button textures | `window.inactive.button.disabled.bg` |
794 | | B | | 6.7.5 | inactive window button textures | `window.inactive.button.toggled.unpressed.bg` |
795 | | B | | 6.7.6 | inactive window button textures | `window.inactive.button.toggled.pressed.bg` |
796 | | B | | 6.7.7 | inactive window button textures | `window.inactive.button.toggled.hover.bg` |
797 | | B | | 6.7.8 | inactive window button textures | `window.inactive.button.toggled.bg` |
798 |
799 | ## 6.8 Theme - Menu Colors
800 |
801 | | Cat | Status | Reference | Category | Description | Comment
802 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
803 | | B | complete | 6.8.1 | menu colors | `menu.title.text.color` |
804 | | A | complete | 6.8.2 | menu colors | `menu.items.text.color` |
805 | | B | | 6.8.3 | menu colors | `menu.items.disabled.text.color` |
806 | | A | complete | 6.8.4 | menu colors | `menu.items.active.text.color` |
807 | | B | | 6.8.5 | menu colors | `menu.items.active.disabled.text.color` |
808 | | A | complete | 6.8.6 | menu colors | `menu.separator.color` |
809 |
810 | ## 6.9 Theme - Menu Textures
811 |
812 | | Cat | Status | Reference | Category | Description | Comment
813 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
814 | | A | complete | 6.9.1 | menu textures | `menu.items.bg` |
815 | | A | complete | 6.9.2 | menu textures | `menu.items.active.bg` |
816 | | B | complete | 6.9.3 | menu textures | `menu.title.bg` |
817 |
818 | ## 6.10 Theme - On-Screen-Display Textures
819 |
820 | | Cat | Status | Reference | Category | Description | Comment
821 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
822 | | A | complete | 6.10.1 | osd textures | `osd.bg` | we only set the color
823 | | C | | 6.10.2 | osd textures | `osd.label.bg` |
824 | | B | | 6.10.3 | osd textures | `osd.hilight.bg` | for desktop osd only
825 | | B | | 6.10.4 | osd textures | `osd.unhilight.bg` | for desktop osd only
826 |
827 | ## 6.11 Theme - On-Screen-Display Colors
828 |
829 | | Cat | Status | Reference | Category | Description | Comment
830 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
831 | | A | complete | 6.11.1 | osd colors | `osd.label.text.color` |
832 | | B | | 6.11.2 | osd colors | `osd.hilight.bg.color` | for desktop osd only
833 | | B | | 6.11.3 | osd colors | `osd.unhilight.bg.color` | for desktop osd only
834 |
835 | ## 6.12 Theme - Text Justification
836 |
837 | | Cat | Status | Reference | Category | Description | Comment
838 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
839 | | B | complete | 6.12.1 | text justification | `window.label.text.justify` |
840 | | B | complete | 6.12.2 | text justification | `menu.title.text.justify` |
841 |
842 | ## 6.13 Theme - Text Shadows
843 |
844 | | Cat | Status | Reference | Category | Description | Comment
845 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
846 | | C | | 6.13.1 | text shadows | `window.active.label.text.font` |
847 | | C | | 6.13.2 | text shadows | `window.inactive.label.text.font` |
848 | | C | | 6.13.3 | text shadows | `menu.items.font` |
849 | | C | | 6.13.4 | text shadows | `menu.title.text.font` |
850 | | C | | 6.13.5 | text shadows | `osd.label.text.font` |
851 |
852 | ## 6.14 Theme - Dialogs
853 |
854 | Not yet supported.
855 |
856 | ## 6.15 Theme - Button Images
857 |
858 | Parse svg, png and xbm icons.
859 |
860 | The following are referred to as 'base buttons': `max`, `max_toggled`,
861 | `iconify`, `close`, `desk`, `desk_toggled`, `shade`, `shade_toggled`,
862 | `bullet` and `menu`.
863 |
864 | In addition to the base buttons, the following variants exist:
865 | `_hover`, `_pressed` and `_disabled`
866 |
867 | | Cat | Status | Reference | Category | Description | Comment
868 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
869 | | A | complete | 6.15.1.1 | theme button base | `max.xbm` |
870 | | B | complete | 6.15.1.2 | theme button base | `max_toggled.xbm` |
871 | | A | complete | 6.15.1.3 | theme button base | `iconify.xbm` |
872 | | A | complete | 6.15.1.4 | theme button base | `close.xbm` |
873 | | B | complete | 6.15.1.5 | theme button base | `desk.xbm` |
874 | | B | complete | 6.15.1.6 | theme button base | `desk_toggled.xbm` |
875 | | B | complete | 6.15.1.7 | theme button base | `shade.xbm` |
876 | | B | complete | 6.15.1.8 | theme button base | `shade_toggled.xbm` |
877 | | B | | 6.15.1.9 | theme button base | `bullet.xbm` |
878 | | B | complete | 6.15.1.1 | theme button base | `menu.xbm` | EXTRA
879 | | B | complete | 6.15.2.1 | theme button variant | `_hover` |
880 | | B | | 6.15.2.2 | theme button variant | `_pressed` |
881 | | B | | 6.15.2.3 | theme button variant | `_disabled` |
882 | | B+ | complete | 6.15.3 | theme button png | Support png buttons | EXTRA
883 | | B+ | complete | 6.15.4 | theme button svg | Support svg buttons | EXTRA
884 |
885 | ## 6.16 Theme - Window Switcher
886 |
887 | | Cat | Status | Reference | Category | Description | Comment
888 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
889 | | B | complete | 6.16.1 | text window switcher | `osd.window-switcher.width` | EXTRA
890 | | B | complete | 6.16.2 | text window switcher | `osd.window-switcher.padding` | EXTRA
891 | | B | complete | 6.16.3 | text window switcher | `osd.window-switcher.item.padding.x` | EXTRA
892 | | B | complete | 6.16.4 | text window switcher | `osd.window-switcher.item.padding.y` | EXTRA
893 | | B | complete | 6.16.5 | text window switcher | `osd.window-switcher.item.active.border.width` | EXTRA
894 | | B | complete | 6.16.6 | text window switcher | `osd.window-switcher.preview.border.width` | EXTRA
895 | | B | complete | 6.16.7 | text window switcher | `osd.window-switcher.preview.border.color` | EXTRA
896 | | B | complete | 6.16.8 | text window switcher | `osd.window-switcher.preview.boxes.width` | EXTRA
897 | | B | complete | 6.16.9 | text window switcher | `osd.window-switcher.preview.boxes.height` | EXTRA
898 |
899 | ## 7 Menus
900 |
901 | | Cat | Status | Reference | Category | Description | Comment
902 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
903 | | B | complete | 7.0.1 | menu general | Parse menu.xml in accordance with Openbox 3.6 spec |
904 | | B | complete | 7.0.2 | menu general | Handle pointer input |
905 | | B+ | complete | 7.0.3 | menu general | Handle keyboard input |
906 | | A | complete | 7.1.1 | menu syntax general | `id` |
907 | | B | complete | 7.1.2 | menu syntax general | `label` |
908 | | C | | 7.1.3 | menu syntax general | `icon` |
909 | | B+ | complete | 7.1.4 | menu syntax general | `execute` | Pipe-menus
910 | | C | | 7.1.5 | menu syntax general | Menu keyboard shortcuts |
911 | | A | complete | 7.2.1 | menu syntax item | `label` |
912 | | C | | 7.2.2 | menu syntax item | `icon` |
913 | | A | complete | 7.2.3 | menu syntax item | `action` |
914 | | A | complete | 7.3.1 | menu syntax separator | `` | For separator line only
915 | | B | complete | 7.3.2 | menu syntax separator | `` | For separator with text
916 | | B | complete | 7.4.1 | menu builtin | `client-list-combined-menu` |
917 | | C | | 7.4.2 | menu builtin | `client-list-menu` |
918 | | C | | 7.4.3 | menu builtin | `client-menu` |
919 | | B | complete | 7.4.4 | menu builtin | `client-send-to-menu` |
920 | | C | complete | 7.4.5 | menu builtin | `client-layer-menu` |
921 | | B | complete | 7.4.6 | menu builtin | `root-menu` |
922 |
923 | ## 8.1 Extra - General
924 |
925 | Server-side-decoration: Make rounded corners square on maximize.
926 | Server-side-decoration: Disable border on maximize
927 |
928 | | Cat | Status | Reference | Category | Description | Comment
929 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
930 | | A | complete | 8.1.1 | extra | Support rounded top window corners | rc.xml ``
931 | | B | complete | 8.2.1 | extra | `` |
932 | | B | complete | 8.2.2 | extra | `` |
933 | | B | complete | 8.2.3 | extra | `` |
934 | | B | complete | 8.2.4 | extra | `` |
935 | | B | complete | 8.2.5 | extra | `` |
936 |
937 | ## 9 Regions
938 |
939 | Provide a means of specifying regions as a percentage of output geometry as
940 | follows:
941 |
942 | ```
943 |
944 |
945 |
946 | ```
947 |
948 | The compositor shall support the following with respect to defined regions:
949 |
950 | - [x] Allow windows to snap to a region by dragging a window with a pointer
951 | while pressing a modifier key.
952 | - [x] During such a dragging operation, a rectangle shall be rendered
953 | indicating where the window will be placed.
954 | - [x] Live config updates meaning that windows snapped to regions will
955 | update on `rc.xml` change and `labwc --reconfigure`
956 | - [x] Respect core.gap setting
957 | - [x] Support action `` to snap (move+tile) a window to a
958 | specified region.
959 |
960 | | Cat | Status | Reference | Category | Description | Comment
961 | | --- | -------- | --------- | ------------------------------- | ------------------------------------------------------- | -------
962 | | B | complete | 9.1.1 | Regions | `` |
963 |
964 | # Appendix A - Terminology
965 |
966 | `handle`: The window handle is the piece of decorations on the bottom of windows
967 |
968 | # Appendix B - IPC
969 |
970 | IPC stands for inter-process communication and is important in building a
971 | complete desktop environment.
972 |
973 | `labwc` only understands the Wayland protocol. It cannot be controlled with
974 | dbus, sway/i3-ipc or other IPC technology.
975 |
976 | The `labwc` devs do not intend to implement any custom IPC or Wayland
977 | protocols, even if it's sometimes tempting to solve a short term problems.
978 |
979 | So, IPC will only be through [wayland-protocols] and [wlr-protocols];
980 | and SIGHUP if you want to count that.
981 |
982 | The reason for this is that we believe that custom IPCs and Wayland
983 | protocols create a fragmentation that hinders general Wayland adoption.
984 |
985 | Where current protocols are not sufficient, we would rather work with
986 | upstream and the wider eco-system to plug any gaps.
987 |
988 | [wayland-protocols]: https://gitlab.freedesktop.org/wayland/wayland-protocols
989 | [wlr-protocols]: https://gitlab.freedesktop.org/wlroots/wlr-protocols
990 |
991 | See issues #128, #190
992 |
993 | # Appendix C - Configuration Syntax
994 |
995 | Occasionally we receive requests to support other configuration languages
996 | and syntaxes. This is out-of-scope.
997 |
998 | If this is high priority for anyone, I suggest helping to achieve prioirty
999 | one and two; then split `labwc` in a wlstem library and a compositor.
1000 | At this point new compositors with alternative config files should be easy
1001 | to implement.
1002 |
1003 |
1004 | [^1]: See swaywm/swaylock@3e84316. This is more secure than
1005 | wlr-input-inhibitor. It will not leak information on output hotplug nor
1006 | unlock the session when the screen locker crashes.
1007 |
1008 | [^2]: For mouse-contexts 'Root' is used as a synonym for 'Desktop' which is
1009 | a deviation from Openbox spec where they are defined as follows:
1010 | 'Desktop': The desktop or background, regardless of if you use a program
1011 | to place icons on your desktop or not (such as in KDE and GNOME). This is
1012 | also called the "root window" frequently.
1013 | 'Root': This works similarly to the Desktop context. However, this is a
1014 | special context for bindings you only want to work only when you don't
1015 | have a program running to place icons on your desktop. Generally this is
1016 | only used for the root menus, so that they won't override the menus
1017 | provided by your desktop icons.
1018 | See: http://openbox.org/wiki/Help:Bindings#Context
1019 |
1020 | [^3]: This protocol might actually annoy users. It is used by Chromium to
1021 | prevent *any* compositor keybinds to work as long as it has keyboard
1022 | focus. So if we decide to implement it we should likely combine it with
1023 | at least a global config option to disable it completely or even
1024 | integrate it with the policy framework so users can prevent applications
1025 | like Chromium to take advantage of it. It seems only to happen when using
1026 | Chromium in `--app` mode (possibly including Electron, not sure). But any
1027 | application being able to prevent compositor keybinds to work should
1028 | likely be whitelisted in some way. Some links regarding the chromium
1029 | behavior:
1030 | https://www.reddit.com/r/swaywm/comments/vuhr75/why_does_chromium_with_app_now_grab_complete/.compact
1031 | https://www.reddit.com/r/swaywm/comments/vkgfza/chromium_v103_application_mode_app_and_weird/.compact
1032 | https://www.reddit.com/r/swaywm/comments/vlvpws/chromeium_app_flag_spawns_windows_with_shortcut/.compact
1033 | chromium/chromium@ac0160a
1034 |
1035 |
--------------------------------------------------------------------------------