Orestis Floros
f63a4bef54
cmd_bar improvements ( #4014 )
...
- Split cmd_bar into 2 functions, improving errors and reducing strcmps
- Only update barconfig when something has changed
- Only update barconfig for the specific bar that has changed
Fixes #3958
2020-05-07 09:22:03 +02:00
Orestis Floros
c6cf0d32b9
placeholder_t: Make char*s const
...
Similarly to https://github.com/i3/i3status/pull/412
2020-05-01 01:13:12 +02:00
Michael Stapelberg
5ee7690af3
Fix #ifndef statements: HAVE_ variables are all upper case
...
The autoconf manual states:
define HAVE_function (in all capitals) if it is available
https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Generic-Functions.html#Generic-Functions
Thanks to @sur5r for the report
2020-04-30 18:20:51 +02:00
Ingo Bürk
10646eb002
Merge pull request #4041 from orestisfl/floating_enable-bool
...
Only set FLOATING_AUTO_ON when floating_enable succeeds
2020-04-30 09:04:22 +02:00
Orestis Floros
5e2f13a28c
Only set FLOATING_AUTO_ON when floating_enable succeeds
...
Fixes #4039
Crash with docking clients where the floating field is set even though
floating_enable refuses to make them floating.
See issue for example with logs.
2020-04-27 13:43:53 +02:00
Orestis Floros
38f28186ec
Remove some includes from all.h
...
Also removes duplicates from other headers
All used std* imports are included once in all.h for easy use
- getopt: Only used in main.c and inject_randr1.5.c
- glob: Not used in i3, only in i3bar & libi3
- inttypes: Only used in util.c
- locale: A bit specific for all.h
- math: Slow according to #4022
- unistd: I feel it's good to explicitly include per file that needs it
- yajl: Specific to yajl_utils.h and ipc.h
Related to #4022
Timing before:
```
Analyzing build trace from ...
**** Time summary:
Compilation (81 times):
Parsing (frontend): 51.3 s
Codegen & opts (backend): 7.7 s
**** Files that took longest to parse (compiler frontend):
1254 ms: build/src/i3-commands.o
972 ms: build/src/i3-resize.o
945 ms: build/src/i3-con.o
921 ms: build/src/i3-scratchpad.o
907 ms: build/src/i3-main.o
904 ms: build/src/i3-handlers.o
904 ms: build/src/i3-config_directives.o
893 ms: build/src/i3-restore_layout.o
875 ms: build/src/i3-x.o
854 ms: build/src/i3-ipc.o
**** Files that took longest to codegen (compiler backend):
863 ms: build/src/i3-commands.o
471 ms: build/i3bar/src/i3bar-xcb.o
377 ms: build/src/i3-con.o
360 ms: build/src/i3-ipc.o
306 ms: build/src/i3-x.o
290 ms: build/src/i3-main.o
238 ms: build/src/i3-config_parser.o
237 ms: build/src/i3-handlers.o
220 ms: build/i3-config-wizard/i3_config_wizard-main.o
214 ms: build/src/i3-bindings.o
**** Functions that took longest to compile:
209 ms: main (../../i3/src/main.c)
95 ms: manage_window (../../i3/src/manage.c)
57 ms: reconfig_windows (../../i3/i3bar/src/xcb.c)
55 ms: x_draw_decoration (../../i3/src/x.c)
49 ms: x_push_node (../../i3/src/x.c)
48 ms: handle_client_message (../../i3/src/handlers.c)
48 ms: dump_node (../../i3/src/ipc.c)
47 ms: GENERATED_call (../../i3/src/config_parser.c)
45 ms: config_string_cb (../../i3/i3bar/src/config.c)
44 ms: GENERATED_call (../../i3/src/commands_parser.c)
42 ms: floating_check_size (../../i3/src/floating.c)
40 ms: con_swap (../../i3/src/con.c)
40 ms: parse_config (../../i3/src/config_parser.c)
39 ms: main (../../i3/i3-nagbar/main.c)
39 ms: cmd_rename_workspace (../../i3/src/commands.c)
38 ms: window_update_normal_hints (../../i3/src/window.c)
38 ms: cmd_swap (../../i3/src/commands.c)
37 ms: dump_bar_config (../../i3/src/ipc.c)
36 ms: translate_keysyms (../../i3/src/bindings.c)
35 ms: tree_close_internal (../../i3/src/tree.c)
34 ms: match_matches_window (../../i3/src/match.c)
34 ms: floating_enable (../../i3/src/floating.c)
34 ms: json_string (../../i3/src/load_layout.c)
33 ms: x_push_changes (../../i3/src/x.c)
33 ms: main (../../i3/i3-config-wizard/main.c)
31 ms: free_configuration (../../i3/src/config.c)
30 ms: parse_file (../../i3/src/config_parser.c)
28 ms: load_font (../../i3/libi3/font.c)
28 ms: handle_configure_request (../../i3/src/handlers.c)
28 ms: parse_command (../../i3/src/commands_parser.c)
**** Function sets that took longest to compile / optimize:
*** Expensive headers:
29287 ms: ../../i3/include/libi3.h (included 78 times, avg 375 ms), included via:
i3-resize.o all.h data.h (576 ms)
a-g_utf8_make_valid.o (491 ms)
a-dpi.o (491 ms)
a-get_colorpixel.o (483 ms)
a-is_debug_build.o (478 ms)
a-strndup.o (478 ms)
...
29221 ms: ../../i3/include/all.h (included 39 times, avg 749 ms), included via:
i3-resize.o (946 ms)
i3-scratchpad.o (895 ms)
i3-restore_layout.o (865 ms)
i3-handlers.o (839 ms)
i3-drag.o (830 ms)
i3-config_directives.o (793 ms)
...
5195 ms: /usr/include/xcb/xcb.h (included 79 times, avg 65 ms), included via:
i3-handlers.o all.h (113 ms)
i3-restore_layout.o all.h (108 ms)
a-g_utf8_make_valid.o libi3.h (108 ms)
i3bar-xcb.o common.h (105 ms)
i3-scratchpad.o all.h (95 ms)
a-get_colorpixel.o libi3.h (89 ms)
...
4100 ms: /usr/include/math.h (included 41 times, avg 100 ms), included via:
i3-scratchpad.o all.h (180 ms)
i3-fake_outputs.o all.h (138 ms)
i3-regex.o all.h (130 ms)
i3-restore_layout.o all.h (128 ms)
i3-xcb.o all.h (121 ms)
i3-move.o all.h (119 ms)
...
4046 ms: ../../i3/i3bar/include/common.h (included 9 times, avg 449 ms), included via:
i3bar-main.o (503 ms)
i3bar-xcb.o (501 ms)
i3bar-workspaces.o (472 ms)
i3bar-parse_json_header.o (446 ms)
i3bar-child.o (438 ms)
i3bar-ipc.o (434 ms)
...
2713 ms: ../../i3/include/i3.h (included 41 times, avg 66 ms), included via:
i3-xcursor.o (450 ms)
i3-config_directives.o all.h ipc.h configuration.h (87 ms)
i3-config.o all.h ipc.h configuration.h (71 ms)
i3-manage.o all.h ipc.h configuration.h (70 ms)
i3-window.o all.h ipc.h configuration.h (68 ms)
i3-x.o all.h ipc.h configuration.h (61 ms)
...
1492 ms: /usr/include/xcb/xkb.h (included 42 times, avg 35 ms), included via:
i3-config_directives.o all.h ipc.h configuration.h i3.h (50 ms)
i3-config.o all.h ipc.h configuration.h i3.h (45 ms)
i3-window.o all.h ipc.h configuration.h i3.h (43 ms)
i3-x.o all.h ipc.h configuration.h i3.h (42 ms)
i3-manage.o all.h ipc.h configuration.h i3.h (41 ms)
i3-config_parser.o all.h ipc.h configuration.h i3.h (38 ms)
...
1432 ms: /usr/include/stdlib.h (included 79 times, avg 18 ms), included via:
i3-scratchpad.o all.h (48 ms)
i3-restore_layout.o all.h (36 ms)
i3-regex.o all.h (32 ms)
i3-key_press.o all.h (28 ms)
i3-commands.o all.h (28 ms)
i3-bindings.o all.h (24 ms)
...
1349 ms: /usr/include/pthread.h (included 79 times, avg 17 ms), included via:
i3bar-xcb.o common.h xcb.h (33 ms)
a-ucs2_conversion.o libi3.h xcb.h (32 ms)
i3-match.o all.h xcb.h (27 ms)
i3-scratchpad.o all.h xcb.h (25 ms)
a-g_utf8_make_valid.o libi3.h xcb.h (25 ms)
i3_config_wizard-main.o xcb.h (24 ms)
...
1151 ms: /usr/include/X11/Xlib.h (included 45 times, avg 25 ms), included via:
i3-output.o all.h data.h sn-launcher.h sn-common.h (50 ms)
i3-config_parser.o all.h data.h sn-launcher.h sn-common.h (43 ms)
i3-x.o all.h data.h sn-launcher.h sn-common.h (34 ms)
i3-config_directives.o all.h data.h sn-launcher.h sn-common.h (32 ms)
i3_config_wizard-main.o sn-launchee.h sn-common.h (30 ms)
i3-drag.o all.h data.h sn-launcher.h sn-common.h (29 ms)
...
```
Timing after:
```
Analyzing build trace from ...
**** Time summary:
Compilation (81 times):
Parsing (frontend): 47.6 s
Codegen & opts (backend): 7.6 s
**** Files that took longest to parse (compiler frontend):
1154 ms: build/src/i3-commands.o
929 ms: build/src/i3-display_version.o
852 ms: build/src/i3-bindings.o
847 ms: build/src/i3-con.o
806 ms: build/src/i3-ipc.o
801 ms: build/src/i3-floating.o
792 ms: build/src/i3-main.o
792 ms: build/src/i3-drag.o
792 ms: build/src/i3-window.o
776 ms: build/src/i3-config_directives.o
**** Files that took longest to codegen (compiler backend):
885 ms: build/src/i3-commands.o
422 ms: build/i3bar/src/i3bar-xcb.o
382 ms: build/src/i3-con.o
348 ms: build/src/i3-x.o
288 ms: build/src/i3-ipc.o
268 ms: build/src/i3-handlers.o
254 ms: build/src/i3-main.o
251 ms: build/src/i3-floating.o
249 ms: build/src/i3-config_parser.o
194 ms: build/src/i3-randr.o
**** Functions that took longest to compile:
186 ms: main (../../i3/src/main.c)
95 ms: manage_window (../../i3/src/manage.c)
65 ms: floating_check_size (../../i3/src/floating.c)
63 ms: x_draw_decoration (../../i3/src/x.c)
58 ms: handle_client_message (../../i3/src/handlers.c)
55 ms: x_push_node (../../i3/src/x.c)
54 ms: match_matches_window (../../i3/src/match.c)
51 ms: parse_config (../../i3/src/config_parser.c)
49 ms: dump_node (../../i3/src/ipc.c)
47 ms: reconfig_windows (../../i3/i3bar/src/xcb.c)
47 ms: config_string_cb (../../i3/i3bar/src/config.c)
45 ms: GENERATED_call (../../i3/src/config_parser.c)
45 ms: GENERATED_call (../../i3/src/commands_parser.c)
43 ms: floating_enable (../../i3/src/floating.c)
42 ms: handle_configure_request (../../i3/src/handlers.c)
40 ms: con_swap (../../i3/src/con.c)
36 ms: main (../../i3/i3-input/main.c)
36 ms: main (../../i3/i3-msg/main.c)
36 ms: main (../../i3/i3-nagbar/main.c)
36 ms: cmd_move_con_to_workspace_number (../../i3/src/commands.c)
35 ms: json_string (../../i3/src/load_layout.c)
35 ms: tree_restore (../../i3/src/tree.c)
35 ms: cmd_swap (../../i3/src/commands.c)
34 ms: x_push_changes (../../i3/src/x.c)
32 ms: main (../../i3/i3-config-wizard/main.c)
32 ms: ewmh_setup_hints (../../i3/src/ewmh.c)
31 ms: match_parse_property (../../i3/src/match.c)
30 ms: cmd_mark (../../i3/src/commands.c)
30 ms: translate_keysyms (../../i3/src/bindings.c)
30 ms: window_update_normal_hints (../../i3/src/window.c)
**** Function sets that took longest to compile / optimize:
*** Expensive headers:
29596 ms: ../../i3/include/libi3.h (included 78 times, avg 379 ms), included via:
a-get_config_path.o (539 ms)
i3_dump_log-main.o (522 ms)
i3_config_wizard-main.o (501 ms)
a-fake_configure_notify.o (500 ms)
a-root_atom_contents.o (488 ms)
i3-display_version.o all.h (466 ms)
...
26054 ms: ../../i3/include/all.h (included 41 times, avg 635 ms), included via:
i3-display_version.o (901 ms)
i3-drag.o (775 ms)
i3-ewmh.o (703 ms)
i3-startup.o (693 ms)
i3-commands.o (687 ms)
i3-xcb.o (680 ms)
...
5345 ms: /usr/include/xcb/xcb.h (included 79 times, avg 67 ms), included via:
i3-display_version.o all.h (173 ms)
i3_input-keysym2ucs.o keysym2ucs.h (106 ms)
i3-ewmh.o all.h (106 ms)
a-fake_configure_notify.o libi3.h (103 ms)
a-get_config_path.o libi3.h (95 ms)
i3bar-parse_json_header.o common.h (93 ms)
...
4127 ms: ../../i3/i3bar/include/common.h (included 9 times, avg 458 ms), included via:
i3bar-child.o (524 ms)
i3bar-mode.o (486 ms)
i3bar-outputs.o (464 ms)
i3bar-parse_json_header.o (463 ms)
i3bar-config.o (457 ms)
i3bar-ipc.o (448 ms)
...
1542 ms: /usr/include/xcb/xkb.h (included 42 times, avg 36 ms), included via:
i3-con.o all.h ipc.h configuration.h i3.h (60 ms)
i3-render.o all.h ipc.h configuration.h i3.h (56 ms)
i3-bindings.o all.h ipc.h configuration.h i3.h (56 ms)
i3-sighandler.o all.h ipc.h configuration.h i3.h (48 ms)
i3-xcb.o all.h ipc.h configuration.h i3.h (47 ms)
i3-resize.o all.h ipc.h configuration.h i3.h (39 ms)
...
1456 ms: /usr/include/stdlib.h (included 79 times, avg 18 ms), included via:
i3-drag.o all.h (60 ms)
i3-display_version.o all.h (55 ms)
i3-fake_outputs.o all.h (39 ms)
i3-config_directives.o all.h (33 ms)
i3-xcursor.o all.h (30 ms)
i3bar-mode.o common.h libi3.h pango.h pango-attributes.h pango-font.h pango-coverage.h glib-object.h gbinding.h glib.h gasyncqueue.h gthread.h gutils.h (29 ms)
...
1136 ms: /usr/include/X11/Xlib.h (included 44 times, avg 25 ms), included via:
i3-con.o all.h data.h sn-launcher.h sn-common.h (35 ms)
i3-resize.o all.h data.h sn-launcher.h sn-common.h (34 ms)
i3-util.o all.h data.h sn-launcher.h sn-common.h (33 ms)
i3-assignments.o all.h data.h sn-launcher.h sn-common.h (33 ms)
i3-sighandler.o all.h data.h sn-launcher.h sn-common.h (31 ms)
i3-xcb.o all.h data.h sn-launcher.h sn-common.h (31 ms)
...
808 ms: /usr/include/stdio.h (included 79 times, avg 10 ms), included via:
i3-drag.o all.h (19 ms)
i3-fake_outputs.o all.h (18 ms)
a-font.o libi3.h (16 ms)
i3bar-child.o common.h libi3.h (15 ms)
a-safewrappers.o libi3.h (15 ms)
a-ipc_send_message.o libi3.h (13 ms)
...
770 ms: /usr/include/xcb/randr.h (included 42 times, avg 18 ms), included via:
i3-click.o all.h data.h (29 ms)
i3-commands.o all.h data.h (27 ms)
i3-assignments.o all.h data.h (25 ms)
i3-xcb.o all.h data.h (21 ms)
i3-resize.o all.h data.h (21 ms)
i3-sighandler.o all.h data.h (20 ms)
...
688 ms: /usr/include/math.h (included 6 times, avg 114 ms), included via:
a-dpi.o (145 ms)
i3-render.o (127 ms)
i3-floating.o (106 ms)
a-root_atom_contents.o (106 ms)
i3-window.o (102 ms)
i3-bindings.o (99 ms)
...
```
2020-04-20 05:54:17 +02:00
Ingo Bürk
0bce0d86bf
Merge pull request #4018 from orestisfl/reorder-docks
...
Sort dock clients by class and instance
2020-04-15 08:36:10 +02:00
Orestis Floros
7df88f18eb
Sort dock clients by class and instance
...
This is similar to #3820 but does not use qsort but an insertion sort in
con_attach.
Since each bar block automatically gets its own incremental bar id,
bards end up being sorted according to their definition order in the
config file.
For i3bar, the WM_CLASS is modified to include an instance name which
depends on the bar_id. This could be useful for other reason, e.g. users
targeting a specific bar instance.
Fixes #3491
2020-04-14 20:47:51 +02:00
Orestis Floros
ae757c6848
Extend tiling/floating criteria with optional auto/user values ( #4006 )
...
The default `tiling` and `floating` behavior is preserved and matches
both cases.
Adds a new handler to `remanage_window` on A_I3_FLOATING_WINDOW change.
Mainly in order to `run_assignments`, this makes `for_window [floating]`
directives to work for windows which where initially opened as tiling.
Now, when floating is enabled, `for_window` will trigger correctly. Same
applies to `for_window [tiling]`.
The obvious solution of `run_assignments` after
`floating_{enable,disable}` doesn't work because `run_assignments`
modifies the parser state in src/assignments.c:51.
Fixes #3588
Co-Authored-By: Michael Stapelberg <michael@stapelberg.de>
2020-04-12 13:49:08 +02:00
Orestis Floros
6fa2cd32a0
handle_button_press and route_click do not need to return int
2020-04-09 16:16:30 +02:00
xzfc
47be36410c
Assume xcb_cursor_context_new never fails ( #3955 )
...
According to libxcb-cursor code, the only condition in which
xcb_cursor_context_new() returns a non-zero result is a memory
allocation failure[1]. Thus, it is safe to assume that
xcursor_supported is always true, and remove dead code.
[1]: https://gitlab.freedesktop.org/xorg/lib/libxcb-cursor/blob/0.1.3/cursor/cursor.c#L131-132
2020-02-24 08:48:58 +01:00
Albert Safin
83c7aff089
Limit workspace numbers within 0..INT32_MAX
...
Before this commit, large workspace numbers treated oddly:
$ i3-msg 'rename workspace to 1234567890'
# displayed in i3bar as `0`
$ i3-msg 'rename workspace to 4294967200'
$ i3-msg -t get_workspaces | jq '.[]|select(.focused).num'
-96 # int32_t overflow
$ i3-msg 'rename workspace to 99999999999999999999'
$ i3-msg -t get_workspaces | jq '.[]|select(.focused).num'
-1 # treated as unnumbered
This commit puts a consistent limit on workspace numbers. Now
workspaces with numbers beyond INT32_MAX are treated as unnumbered.
2020-02-21 02:07:04 +00:00
Albert Safin
d3976fee8c
Code style: fix misaligned and trailing whitespaces
2020-02-21 02:06:48 +00:00
Albert Safin
e6ca7ca06f
Sanitize con and window rect dimensions
...
Make sure they're neither zero (prohibited by X11) nor overflown during
subtraction.
2020-02-19 11:33:49 +01:00
xzfc
1f0c628cde
clang-format: bring back ForeachMacros ( #3948 )
...
* clang-format: bring back ForeachMacros
ForeachMacros was disabled in 4211274fcd
due to the breakage of include/queue.h. The currently used version,
clang-format-6.0 doesn't break it.
* Add curly braces
Co-authored-by: Orestis Floros <orestisflo@gmail.com>
2020-02-19 11:31:09 +01:00
Orestis Floros
2eac53fada
atoms: Properly declare as global variables
...
See #3914
2020-02-01 17:34:01 +01:00
Michael Stapelberg
d341b91b0a
Merge pull request #3824 from orestisfl/ac_replace_funcs
...
Use AC_REPLACE_FUNCS
2019-12-25 12:27:21 +01:00
Orestis Floros
17d0cd7034
Remove various unused parameters
2019-10-20 16:14:20 +03:00
Orestis Floros
24a58d2952
Implement focus_wrapping workspace
...
I had a dilemma about the behaviour here:
1. Prohibit focus leaving the workspace in any case unless if
get_tree_next's initial argument is a workspace. This is what this
commit does (also i3-cycle).
2. Leave the workspace if no warp is possible (eg workspace with single
container or `focus right` with `V[a b c*]`).
Fixes #2180
2019-10-14 13:02:33 +03:00
Orestis Floros
bbc4c99c72
Refactor tree_next
...
- Makes `tree_next` not recursive.
- Adds `focus next|prev [sibling]` command. See (1.) and (2.) in
https://github.com/i3/i3/issues/2587#issuecomment-378505551 (Issue also
requests move command, not implemented here).
- Directional focus command now supports command criteria.
Wrapping is not implemented inside a floating container. This was also
true before the refactor so I am not changing it here.
2019-10-14 03:31:24 +03:00
Orestis Floros
1e8e4d3e7f
Introduce direction / orientation / position conversion functions
2019-10-14 02:38:53 +03:00
Orestis Floros
e5c430e419
tree_move: Use direction_t
2019-10-14 02:31:11 +03:00
Orestis Floros
b0d6f44779
Use AC_REPLACE_FUNCS
...
strndup is removed from AC_CHECK_FUNCS since it will be provided if not
found.
Fixes #2610
2019-10-13 13:17:40 +03:00
Orestis Floros
70c850ac13
Remove memmem implementation
...
Not used after 3bd5e6e5c8
2019-10-13 13:10:06 +03:00
Orestis
0b4d4e799b
Merge pull request #3817 from orestisfl/rect
...
Remove outdated comment from Rect
2019-10-09 16:12:40 +03:00
Orestis Floros
961f98eb15
Remove outdated comment from Rect
...
This has changed after #3787 .
The packed attribute was added in
75aac5bc02
for _NET_WORKAREA. However,
eec80838ab
removed _NET_WORKAREA support.
I did some quick greping for `memcpy.+Rect` and didn't find any similar
code that could theoretically lead to problems.
2019-10-09 16:08:18 +03:00
Ingo Bürk
736ac40b10
Merge pull request #3814 from orestisfl/net_active_fullscreen
...
handlers.c: new focus should not end up behind fullscreen
2019-10-09 13:25:38 +02:00
Orestis
ea216f88d8
Merge pull request #3559 from xzfc/3555-drag-threshold
...
Drag threshold
2019-10-09 12:38:30 +03:00
Orestis Floros
34c217acc8
Introduce con_activate_unblock
2019-10-09 02:31:52 +03:00
Ingo Bürk
ba0868e593
Merge pull request #3728 from cdlscpmv/next
...
Add setting for minimal width of workspace buttons
2019-10-06 00:22:44 +02:00
Albert Safin
371dc23101
Tiling resize drag: use threshold
2019-10-03 06:09:57 +00:00
Albert Safin
c6b56b09ab
Floating move drag: use threshold
2019-10-03 06:09:57 +00:00
Albert Safin
551ec20941
drag_pointer(): add use_treshold parameter
2019-10-03 06:09:57 +00:00
Albert Safin
2795c51d4b
drag_pointer(): drop unused parameter `border`
2019-10-03 06:05:34 +00:00
Albert Safin
454473ac6c
Move drag_pointer() to its own source file
...
Move drag_pointer() and related definitions from floating.c to new file
drag_pointer.c since it's applicable not only to floating windows but
also to resizing of tiled windows.
2019-10-03 06:05:34 +00:00
Orestis Floros
a73510026f
Remove packed attribute from Rect
...
Fixes #3785 -- the issue where the Travis build failed because of gcc's
-Werror=address-of-packed-member.
Adds an equality function to avoid relying on memcmp().
2019-09-03 10:43:36 +03:00
izzel
0845d7b264
Remanage window after property updates (like titles) ( #3759 )
2019-08-13 08:50:48 +02:00
Michael Stapelberg
e4ecc6e4a1
Make `restart` IPC command send a reply once restart completed (!) ( #3743 )
...
This is achieved by retaining the IPC connection which is sending the restart
command across the restart.
This is the cleaner fix for https://github.com/i3/go-i3/issues/3
fixes #3565
2019-07-21 14:52:12 +02:00
Konst Mayer
94228fd902
Add setting for minimal width of workspace buttons
2019-06-25 13:10:01 +07:00
Orestis Floros
c9efa6dffe
Call all ewmh_update_* functions together when necessary
...
The testcase is changed because it was actually incorrect. Easy to
verify because:
> _NET_CURRENT_DESKTOP
> …
> The index of the current desktop. This is always an integer between 0
> and _NET_NUMBER_OF_DESKTOPS - 1.
Fixes #3696 .
Also updates the viewports.
Finally, fixes an issue with _NET_CURRENT_DESKTOP not being updated
after a workspace rename. Example:
- workspaces 1, 2, 3
- rename workspace 1 to 5
- All workspaces changed their index but _NET_CURRENT_DESKTOP was not
updated
2019-05-03 16:19:11 +03:00
Orestis Floros
08cdc3a6ae
Allow checking for duplicate bindings with -C
...
- Having both parse_configuration and parse_file is excessive now
- We detect if we are parsing only by checking if conn is NULL, not with
use_nagbar
- font.pattern needs to be set to NULL because it is freed in
free_font()
Fixes #3660
2019-03-29 12:30:04 +02:00
Orestis Floros
4a2cacebf6
load_configuration: Remove conn argument
2019-03-29 02:49:10 +02:00
Orestis Floros
f9c4011691
Update configuration.h
...
- parse_configuration was mentioning outdated config file order
- kill_configerror_nagbar was not used anywhere
2019-03-29 02:49:10 +02:00
Orestis Floros
351d891f4c
get_output_for_con: Assert result != NULL
...
- The result from con_get_output was always not NULL because
con_get_output asserts so
- get_output_by_name should always be able to get an output from the
corresponding container
- workspace_move_to_output doesn't return bool anymore since it can't
fail
2019-03-22 03:10:00 +02:00
Orestis
5aa0459be0
Use ipc queue for all messages ( #3585 )
...
I was able to reproduce #3579 in Linux by running:
`sudo sysctl net.core.wmem_default=10000`
If a subscription message was too big to be sent at once, it was
possible to break a client by sending a reply to an other message sent
by the client. Eg:
- Write 8192 out of 11612 bytes of a workspace event.
- Blockingly write the reply to a workspace change message.
- Write the rest 3420 bytes of the workspace event.
This commit fixes this by utilizing the ipc queue for all types of
writes.
ipc_receive_message can only be called from a callback started in
ipc_new_client. This callback uses the same file descriptor with the
client also created in ipc_new_client. When the client is deleted, the
read callback is now also stopped. Thus, we can assume that whenever
ipc_receive_message is called, the corresponding client should still
exist.
- ipc_client now contains pointers to both write and read watchers. When
freed, a client will stop both of them.
- IPC_HANDLERs now work with ipc_clients instead of fds.
Fixes #3579 .
2019-01-12 13:13:03 +01:00
Orestis Floros
f70c3b168d
Update tree_close_internal documentation in tree.h
...
After f90840337
2018-12-14 23:46:21 +02:00
Albert Safin
64ab1f42b7
Preserve back_and_forth during restart
...
Add new key "previous_workspace_name" to the json dump of the root container.
2018-12-11 20:46:06 +07:00
Albert Safin
b6282b47bc
Remove unused con_get_next()
...
This function has unused for a long time since the commit
8f4b9ddaa4
.
2018-12-09 08:04:41 +07:00
Albert Safin
1a85619498
Add input and bounding shapes support ( #2742 )
...
Basic idea: if the window has a shape, set the parent container shape as
the union of the window shape and the shape of the frame borders.
Co-authored-by: Uli Schlachter <psychon@znc.in>
2018-12-01 11:52:41 +07:00
Orestis Floros
100d05a2a6
render_con: Get rid of render_fullscreen argument
...
Only true for the fullscreen container and doesn't affect any of its
children. Thus, we can get the same result by checking
->fullscreen_mode.
2018-11-12 19:05:50 +02:00