]> git.sur5r.net Git - i3/i3/log
i3/i3
6 years agooutput_init_con: Restore focus if possible
Orestis Floros [Tue, 11 Sep 2018 17:39:33 +0000 (20:39 +0300)]
output_init_con: Restore focus if possible

Before this, i3 would focus newly created workspaces on output init

6 years agorandr_disable_output: Always restore focus
Orestis Floros [Tue, 11 Sep 2018 17:09:16 +0000 (20:09 +0300)]
randr_disable_output: Always restore focus

con_detach and con_attach modify the focus stack.

This will make sure that the currently focused workspace will remain
focused after disabling an output.

6 years agoinit_ws_for_output: use workspace_move_to_output
Orestis Floros [Tue, 11 Sep 2018 16:11:05 +0000 (19:11 +0300)]
init_ws_for_output: use workspace_move_to_output

This fixes a crash produced with the following config:
    # i3 config file (v4)
    workspace 1 output $screen1
    workspace 2 output $screen2

    exec --no-startup-id "i3-msg workspace 1, open && i3-msg workspace 2 && xrandr --output $screen2 --off && xrandr --output $screen1 --auto --output $screen2 --auto --right-of $screen1 "

Which results in:
ERROR: AddressSanitizer: heap-use-after-free on address …
READ of size 8 at 0x614000001f48 thread T0
    #0 0x5563df6e73a8 in init_ws_for_output i3/src/randr.c:468
    #1 0x5563df6ef3b4 in randr_query_outputs i3/src/randr.c:940
    #2 0x5563df68dbe1 in handle_screen_change i3/src/handlers.c:450

… is located 264 bytes inside of 448-byte region …
freed by thread T0 here:
    #1 0x5563df634b0a in con_free i3/src/con.c:96
    #2 0x5563df7151e6 in tree_close_internal i3/src/tree.c:344
    #3 0x5563df7280fe in workspace_show i3/src/workspace.c:499
    #4 0x5563df6e7315 in init_ws_for_output i3/src/randr.c:457
    #5 0x5563df6ef3b4 in randr_query_outputs i3/src/randr.c:940
    #6 0x5563df68dbe1 in handle_screen_change i3/src/handlers.c:450

Which is similar to #3228, #3248.

6 years agoMerge pull request #3394 from orestisf1993/validate-utf8
Michael Stapelberg [Mon, 10 Sep 2018 07:00:54 +0000 (09:00 +0200)]
Merge pull request #3394 from orestisf1993/validate-utf8

 libi3: validate UTF8 strings

6 years agolibi3: validate UTF8 strings 3394/head
Orestis Floros [Sun, 9 Sep 2018 12:32:54 +0000 (15:32 +0300)]
libi3: validate UTF8 strings

Will validate container / window titles.

Fixes #3156.

6 years agotree_restore: Check croot
Orestis Floros [Sun, 9 Sep 2018 13:09:39 +0000 (16:09 +0300)]
tree_restore: Check croot

Related to #2414, #3156.

6 years agoMerge pull request #3391 from orestisf1993/yajl-utf8
Ingo Bürk [Thu, 6 Sep 2018 12:15:54 +0000 (14:15 +0200)]
Merge pull request #3391 from orestisf1993/yajl-utf8

tree_append_json: Allow strings that are not valid UTF8

6 years agotree_append_json: Allow strings that are not valid UTF8 3391/head
Orestis Floros [Thu, 6 Sep 2018 11:54:27 +0000 (14:54 +0300)]
tree_append_json: Allow strings that are not valid UTF8

Fixes #3156.

I couldn't reproduce the problem in a "natural" way so I cheated:
1. Start i3 with gdb
2. Set breakpoing on tree_restore
3. Run, open window, i3-msg restart
5. Open the file in *path with a hex editor
6. Edit the "name" field of the window and insert bytes that are not
valid UTF8
7. Continue

After parsing fails, all nodes including croot are incomplete, meaning
they have to be deleted. We can't recover in any reasonable way so we
have to allow non-UTF8 characters to avoid this situation altogether.

6 years agotree_append_json: don't focus freed container
Orestis Floros [Thu, 6 Sep 2018 11:48:21 +0000 (14:48 +0300)]
tree_append_json: don't focus freed container

6 years agoMerge pull request #3389 from orestisf1993/resize-ensure-1px
Ingo Bürk [Thu, 6 Sep 2018 06:41:00 +0000 (08:41 +0200)]
Merge pull request #3389 from orestisf1993/resize-ensure-1px

Ensure containers have a size of at least 1px after resize

6 years agoMerge pull request #3390 from orestisf1993/resize-tile
Ingo Bürk [Thu, 6 Sep 2018 06:38:53 +0000 (08:38 +0200)]
Merge pull request #3390 from orestisf1993/resize-tile

resize set for tiling: default to px when not specified

6 years agoMerge pull request #3388 from orestisf1993/cmd_rename_workspace
Ingo Bürk [Thu, 6 Sep 2018 06:38:03 +0000 (08:38 +0200)]
Merge pull request #3388 from orestisf1993/cmd_rename_workspace

cmd_rename_workspace: correct order of events

6 years agoresize set for tiling: default to px when not specified 3390/head
Orestis Floros [Thu, 6 Sep 2018 02:58:51 +0000 (05:58 +0300)]
resize set for tiling: default to px when not specified

6 years agoEnsure containers have a size of at least 1px after resize 3389/head
Orestis Floros [Thu, 6 Sep 2018 01:56:31 +0000 (04:56 +0300)]
Ensure containers have a size of at least 1px after resize

Fixes #2226.
Fixes #2776.
Fixes #3241.
Related to #3194.

6 years agocmd_rename_workspace: correct order of events 3388/head
Orestis Floros [Thu, 6 Sep 2018 00:11:47 +0000 (03:11 +0300)]
cmd_rename_workspace: correct order of events

1. Rename happens
2. Workspace is moved because of assignments
3. Workspace closes because it is empty (#3248)

Fixes #3248.

6 years agoImprove comment from #3245
Orestis Floros [Thu, 6 Sep 2018 00:38:45 +0000 (03:38 +0300)]
Improve comment from #3245

6 years agoconfigure.ac: fix AC_SEARCH_LIBS([shm_open]) for static linking (#3379)
Michael Stapelberg [Fri, 31 Aug 2018 14:59:08 +0000 (08:59 -0600)]
configure.ac: fix AC_SEARCH_LIBS([shm_open]) for static linking (#3379)

Without specifying -pthread, the conftest fails and -lrt is missing during
compilation of i3, resulting in a failing build.

6 years agoMerge pull request #3376 from orestisf1993/floating-disable-scratchpad
Ingo Bürk [Tue, 28 Aug 2018 11:30:57 +0000 (13:30 +0200)]
Merge pull request #3376 from orestisf1993/floating-disable-scratchpad

Don't disable floating in internal workspaces

6 years agoDon't disable floating in internal workspaces 3376/head
Orestis Floros [Tue, 28 Aug 2018 07:26:07 +0000 (10:26 +0300)]
Don't disable floating in internal workspaces

6 years agoMerge pull request #3375 from orestisf1993/ipc_client_timeout
Ingo Bürk [Tue, 28 Aug 2018 08:20:45 +0000 (10:20 +0200)]
Merge pull request #3375 from orestisf1993/ipc_client_timeout

ipc_client_timeout: Fix build when not on linux

6 years agoipc_client_timeout: Fix build when not on linux 3375/head
Orestis Floros [Mon, 27 Aug 2018 19:19:36 +0000 (22:19 +0300)]
ipc_client_timeout: Fix build when not on linux

Also moved the 'end' label because it is unused otherwise.

Reported here: https://github.com/Airblader/i3/issues/233

6 years agoMerge pull request #3374 from orestisf1993/startup-notification
Ingo Bürk [Mon, 27 Aug 2018 09:19:26 +0000 (11:19 +0200)]
Merge pull request #3374 from orestisf1993/startup-notification

Support startup-notification in i3-nagbar & i3-config-wizard

6 years agoSupport startup-notification in i3-nagbar & i3-config-wizard 3374/head
Orestis Floros [Sat, 25 Aug 2018 11:48:14 +0000 (14:48 +0300)]
Support startup-notification in i3-nagbar & i3-config-wizard

The default i3 config uses the `exec` command without `--no-startup-id`
to launch:
1. i3-nagbar
https://github.com/i3/i3/blob/4cba9fcbdab1487459014dbf8882f5f34e61435e/etc/config#L150
2. i3-config-wizard
https://github.com/i3/i3/blob/4cba9fcbdab1487459014dbf8882f5f34e61435e/etc/config#L194

A user that opens i3 for the first time will be greeted with a "loading"
cursor because of i3-config-wizard.

6 years agoi3-config-wizard: fix small memleak
Orestis Floros [Sat, 25 Aug 2018 11:49:28 +0000 (14:49 +0300)]
i3-config-wizard: fix small memleak

6 years agoMerge pull request #3368 from orestisf1993/render_root
Ingo Bürk [Fri, 24 Aug 2018 07:49:41 +0000 (09:49 +0200)]
Merge pull request #3368 from orestisf1993/render_root

(floating) global fullscreen bugs & others

6 years agoMerge pull request #3372 from orestisf1993/direction
Ingo Bürk [Fri, 24 Aug 2018 07:43:20 +0000 (09:43 +0200)]
Merge pull request #3372 from orestisf1993/direction

Resize tile px

6 years agoMake resize set ppt more accurate 3372/head
Orestis Floros [Fri, 24 Aug 2018 00:50:23 +0000 (03:50 +0300)]
Make resize set ppt more accurate

See the testcase for the usecase.

6 years agoMake resize set px work with tiling containers
Orestis Floros [Fri, 24 Aug 2018 00:06:52 +0000 (03:06 +0300)]
Make resize set px work with tiling containers

6 years ago541-resize-set-tiling.t: fix "my" variable mask warnings
Orestis Floros [Fri, 24 Aug 2018 00:18:01 +0000 (03:18 +0300)]
541-resize-set-tiling.t: fix "my" variable mask warnings

6 years agocmd_resize* statics: remove useless 'way' argument
Orestis Floros [Fri, 24 Aug 2018 00:03:26 +0000 (03:03 +0300)]
cmd_resize* statics: remove useless 'way' argument

6 years agoMake cmd_resize_tiling_width_height work with pixels
Orestis Floros [Thu, 23 Aug 2018 23:14:11 +0000 (02:14 +0300)]
Make cmd_resize_tiling_width_height work with pixels

6 years agoMake cmd_resize_tiling_direction work with pixels
Orestis Floros [Thu, 23 Aug 2018 19:09:52 +0000 (22:09 +0300)]
Make cmd_resize_tiling_direction work with pixels

Introduces resize_neighboring_cons in resize.c which is also used by
resize_graphical_handler.

Co-authored-by: Andrew Laucius <andrewla@gmail.com>
Authored original code and tests in #3240. I rewrote most of the
resizing code and fixed the failing tests.

6 years agoprecalculate_sizes: don't malloc needlessly
Orestis Floros [Fri, 24 Aug 2018 00:02:15 +0000 (03:02 +0300)]
precalculate_sizes: don't malloc needlessly

6 years agoprecalculate_sizes: round sizes instead of flooring them
Orestis Floros [Thu, 23 Aug 2018 18:57:21 +0000 (21:57 +0300)]
precalculate_sizes: round sizes instead of flooring them

This will lead to more accurate and consistent container sizes.

Needed to fix the failing test of #3240.

6 years agoImprove resize_graphical_handler code style
Orestis Floros [Thu, 23 Aug 2018 18:04:52 +0000 (21:04 +0300)]
Improve resize_graphical_handler code style

- int return type is not useful
- Consistent comment style

6 years agoIntroduce parse_direction
Orestis Floros [Thu, 23 Aug 2018 12:36:50 +0000 (15:36 +0300)]
Introduce parse_direction

Also fixes the following bug: in the fix for #1011 in
cmd_resize_floating direction "width" is not considered.

Influenced by #3240.

6 years agoIntroduce orientation_from_direction
Orestis Floros [Thu, 23 Aug 2018 12:36:23 +0000 (15:36 +0300)]
Introduce orientation_from_direction

6 years agoMerge pull request #3369 from orestisf1993/clang-format
Ingo Bürk [Wed, 22 Aug 2018 18:29:32 +0000 (20:29 +0200)]
Merge pull request #3369 from orestisf1993/clang-format

Apply compatible changes from clang-format 6.0.1

6 years agoApply compatible changes from clang-format 6.0.1 3369/head
Orestis Floros [Wed, 22 Aug 2018 11:51:17 +0000 (14:51 +0300)]
Apply compatible changes from clang-format 6.0.1

These are the changes that clang-format 6.0.1 makes to the codebase that
clang-format-3.8 doesn't change back.

Useful for those that use a more recent version of clang-format in their
local machines.

6 years agohandle_configure_request: check for scratchpad once 3368/head
Orestis Floros [Wed, 22 Aug 2018 11:23:01 +0000 (14:23 +0300)]
handle_configure_request: check for scratchpad once

6 years agohandle_configure_request: use 'goto out'
Orestis Floros [Wed, 22 Aug 2018 11:11:26 +0000 (14:11 +0300)]
handle_configure_request: use 'goto out'

6 years agohandle_configure_request: reuse 'workspace' variable
Orestis Floros [Wed, 22 Aug 2018 11:10:42 +0000 (14:10 +0300)]
handle_configure_request: reuse 'workspace' variable

6 years agocon_border_style: check con->fullscreen_mode directly
Orestis Floros [Wed, 22 Aug 2018 11:09:05 +0000 (14:09 +0300)]
con_border_style: check con->fullscreen_mode directly

6 years agoIntroduce con_get_fullscreen_covering_ws
Orestis Floros [Wed, 22 Aug 2018 11:02:27 +0000 (14:02 +0300)]
Introduce con_get_fullscreen_covering_ws

This commit will also fix the following bugs:
1. click.c: Users could drag global fullscreen floating containers.
2. render.c: Floating containers would get rendered with a global fullscreen container in another
workspace.

6 years agorender_root: fix popup_during_fullscreen logic
Orestis Floros [Wed, 22 Aug 2018 00:40:51 +0000 (03:40 +0300)]
render_root: fix popup_during_fullscreen logic

The first issue is that there seems to be a typo: fullscreen->window
should have been child->window. The corrected check is redundant since
the while loop checks if the transient_con has a window.

The second issue is that popup_during_fullscreen is never checked even
though the behaviour should be exclusive to the "smart" option.

6 years agoMerge pull request #3365 from orestisf1993/DRAG_REVERT
Ingo Bürk [Tue, 21 Aug 2018 18:39:26 +0000 (20:39 +0200)]
Merge pull request #3365 from orestisf1993/DRAG_REVERT

floating_drag_window: return on DRAG_REVERT

6 years agoMerge pull request #3366 from orestisf1993/NUM_HANDLERS
Ingo Bürk [Tue, 21 Aug 2018 18:38:31 +0000 (20:38 +0200)]
Merge pull request #3366 from orestisf1993/NUM_HANDLERS

property_notify: use NUM_HANDLERS

6 years agoMerge pull request #3367 from orestisf1993/dragloop_callback
Ingo Bürk [Tue, 21 Aug 2018 18:37:56 +0000 (20:37 +0200)]
Merge pull request #3367 from orestisf1993/dragloop_callback

Call dragloop callback on DRAG_SUCCESS

6 years agoCall dragloop callback on DRAG_SUCCESS 3367/head
Orestis Floros [Tue, 21 Aug 2018 18:10:02 +0000 (21:10 +0300)]
Call dragloop callback on DRAG_SUCCESS

A race condition is possible. For example, if we first receive a
XCB_MOTION_NOTIFY event and then, while drain_drag_events is still
running, a XCB_BUTTON_RELEASE event the first event is never handled
because we return.

This fixes the flakiness of the tests in #3085.

6 years agofloating_drag_window: return on DRAG_REVERT 3365/head
Orestis Floros [Tue, 21 Aug 2018 18:06:00 +0000 (21:06 +0300)]
floating_drag_window: return on DRAG_REVERT

Right now tree_render() is called twice on DRAG_REVERT since
floating_reposition calls it.
Also, on DRAG_REVERT the scratchpad state shouldn't change since the
user canceled the action.

6 years agoproperty_notify: use NUM_HANDLERS 3366/head
Orestis Floros [Tue, 21 Aug 2018 18:04:46 +0000 (21:04 +0300)]
property_notify: use NUM_HANDLERS

6 years agoMerge pull request #3364 from orestisf1993/warp-randr_query
Ingo Bürk [Fri, 17 Aug 2018 09:55:15 +0000 (11:55 +0200)]
Merge pull request #3364 from orestisf1993/warp-randr_query

randr_query_outputs: con_activate -> workspace_show

6 years agoUse con_focus instead of con_activate for workspace 3364/head
Orestis Floros [Fri, 17 Aug 2018 03:45:25 +0000 (06:45 +0300)]
Use con_focus instead of con_activate for workspace

6 years agoTypo: output -> content
Orestis Floros [Fri, 17 Aug 2018 03:45:20 +0000 (06:45 +0300)]
Typo: output -> content

6 years agorandr_query_outputs: con_activate -> workspace_show
Orestis Floros [Fri, 17 Aug 2018 03:06:56 +0000 (06:06 +0300)]
randr_query_outputs: con_activate -> workspace_show

workspace_show will call x_set_warp_to if needed.

Fixes #3333

6 years agoMerge pull request #3363 from orestisf1993/regress-scratchpad-focus
Ingo Bürk [Fri, 17 Aug 2018 09:42:29 +0000 (11:42 +0200)]
Merge pull request #3363 from orestisf1993/regress-scratchpad-focus

Call con_activate after moving scratchpad window to current ws

6 years agoCall con_activate after moving scratchpad window to current ws 3363/head
Orestis Floros [Fri, 17 Aug 2018 09:34:20 +0000 (12:34 +0300)]
Call con_activate after moving scratchpad window to current ws

Fixes #3361

6 years agoMerge pull request #3353 from orestisf1993/free_ws_assignments
Ingo Bürk [Thu, 9 Aug 2018 14:49:21 +0000 (16:49 +0200)]
Merge pull request #3353 from orestisf1993/free_ws_assignments

Free ws_assignments on reload

6 years agoFree ws_assignments on reload 3353/head
Orestis Floros [Thu, 9 Aug 2018 14:28:05 +0000 (17:28 +0300)]
Free ws_assignments on reload

This fixes an unreported bug where deleting a workspace assignment and
reloading the config file would keep the assignment.

6 years agoMerge pull request #3263 from orestisf1993/misbehaving-ipc-queue-2999
Michael Stapelberg [Wed, 8 Aug 2018 17:14:15 +0000 (19:14 +0200)]
Merge pull request #3263 from orestisf1993/misbehaving-ipc-queue-2999

 Kill misbehaving subscribed clients instead of hanging

6 years agoKill misbehaving subscribed clients instead of hanging 3263/head
Orestis Floros [Mon, 23 Apr 2018 09:20:05 +0000 (12:20 +0300)]
Kill misbehaving subscribed clients instead of hanging

This change only affects clients that are subscribed to events, which
should be the main cause of our problems.

In the common case (no buffered data) the behaviour doesn't change at
all: the message is sent directly, no ev_io / ev_timeout callback is
enabled. Once a write to a client's socket is not completed fully
(returns with EAGAIN error), we put the message in the tail of a queue
and init an ev_io callback and a corresponding timer. If the timer is
triggered first, the socket is closed and the client connection is
removed. If the socket becomes writeable before the timeout we either
reset the timer if we couldn't push all the buffered data or completely
remove it if everything was pushed.

We could also replace ipc_send_message() for all client connections in
i3, not just those subscribed to events.

Furthermore, we could limit the amount of messages stored and increase
the timeout (or use multiple timeouts): eg it's ok if a client is not
reading for 10 seconds and we are only holding 5KB of messages for them
but it is not ok if they are inactive for 5 seconds and we have 30MB of
messages held.

Closes #2999
Closes #2539

6 years agoAdded libiconv to search libs for OpenBSD patch (#3336)
Harry Lawrence [Sat, 4 Aug 2018 17:27:25 +0000 (18:27 +0100)]
Added libiconv to search libs for OpenBSD patch (#3336)

6 years agoMerge pull request #3319 from Stunkymonkey/format_placholders-case_sensitive
Ingo Bürk [Sat, 4 Aug 2018 07:23:11 +0000 (09:23 +0200)]
Merge pull request #3319 from Stunkymonkey/format_placholders-case_sensitive

make format_placeholders case-sensitive

6 years agoMerge pull request #3344 from downzer0/chore/i3-sensible-terminal--hyper
Ingo Bürk [Thu, 2 Aug 2018 15:05:29 +0000 (17:05 +0200)]
Merge pull request #3344 from downzer0/chore/i3-sensible-terminal--hyper

enhancement: adds hyper as a sensible terminal option

6 years agoenhancement: adds hyper as a sensible terminal option 3344/head
downzer0 [Tue, 31 Jul 2018 22:35:05 +0000 (17:35 -0500)]
enhancement: adds hyper as a sensible terminal option
- hyper.is

6 years agoIntroduce free_ipc_client
Orestis Floros [Sun, 22 Apr 2018 22:02:44 +0000 (01:02 +0300)]
Introduce free_ipc_client

6 years agoMerge pull request #3340 from PandorasFox/next
Ingo Bürk [Sun, 29 Jul 2018 10:10:26 +0000 (12:10 +0200)]
Merge pull request #3340 from PandorasFox/next

fix height offset calculation in pango text drawing

6 years agofix height offset calculation in pango text drawing 3340/head
Cassandra Fox [Sun, 29 Jul 2018 02:31:32 +0000 (19:31 -0700)]
fix height offset calculation in pango text drawing

6 years agoMerge pull request #3329 from lasers/next
Ingo Bürk [Mon, 16 Jul 2018 14:11:04 +0000 (16:11 +0200)]
Merge pull request #3329 from lasers/next

docs/i3bar-protocol: fix typo

6 years agodocs/i3bar-protocol: fix typo 3329/head
lasers [Mon, 16 Jul 2018 13:54:08 +0000 (08:54 -0500)]
docs/i3bar-protocol: fix typo

6 years agoMerge pull request #3254 from orestisf1993/issue-555
Ingo Bürk [Thu, 12 Jul 2018 14:18:13 +0000 (16:18 +0200)]
Merge pull request #3254 from orestisf1993/issue-555

Multiple assignments of workspaces to outputs (#555)

6 years agoAllow multiple assignments of workspaces to outputs 3254/head
Orestis Floros [Tue, 27 Mar 2018 21:55:20 +0000 (00:55 +0300)]
Allow multiple assignments of workspaces to outputs

Also makes get_assigned_output work with the primary output:
    workspace X output primary
will now work.

Fixes #555.

6 years agoMerge pull request #3327 from orestisf1993/rename-mouse-bug
Ingo Bürk [Thu, 12 Jul 2018 04:27:56 +0000 (06:27 +0200)]
Merge pull request #3327 from orestisf1993/rename-mouse-bug

cmd_rename_workspace: always call con_focus

6 years agoMerge pull request #3328 from orestisf1993/next
Ingo Bürk [Thu, 12 Jul 2018 04:27:13 +0000 (06:27 +0200)]
Merge pull request #3328 from orestisf1993/next

Fix ISSUE_TEMPLATE typo

6 years agoFix ISSUE_TEMPLATE typo 3328/head
Orestis Floros [Thu, 12 Jul 2018 00:49:07 +0000 (03:49 +0300)]
Fix ISSUE_TEMPLATE typo

6 years agocmd_rename_workspace: always call con_focus 3327/head
Orestis Floros [Wed, 11 Jul 2018 21:12:27 +0000 (00:12 +0300)]
cmd_rename_workspace: always call con_focus

This was introduced in 252db3b8c (#3245). That commit moved the
con_activate line inside the loop, meaning it wouldn't always be called.

When the mouse moved after a rename with focus_follows_mouse enabled,
check_crossing_screen_boundary (src/handlers.c:111) called
con_descend_focused that used the wrong focus order.

I also change con_activate to con_focus since we don't really want to
raise floating containers there.

Fixes #3325

6 years agomake format_placeholders case-sensitive 3319/head
Felix Buehler [Sun, 1 Jul 2018 22:03:13 +0000 (00:03 +0200)]
make format_placeholders case-sensitive

6 years agoMerge pull request #3324 from orestisf1993/xdg_config
Ingo Bürk [Tue, 10 Jul 2018 06:23:32 +0000 (08:23 +0200)]
Merge pull request #3324 from orestisf1993/xdg_config

Correct XDG paths precedence for config files

6 years agoCorrect XDG paths precedence for config files 3324/head
Orestis Floros [Tue, 10 Jul 2018 02:04:34 +0000 (05:04 +0300)]
Correct XDG paths precedence for config files

Fixes #3323

6 years agoUse get_assigned_output for numbers
Orestis Floros [Wed, 28 Mar 2018 01:05:48 +0000 (04:05 +0300)]
Use get_assigned_output for numbers

This prohibits the usage of workspaces assigned to other outputs in
create_workspace_on_output.

Eg, with config:
    workspace 1 output fake-0
    workspace 2 output fake-0
and 2 screens workspace 2 would be used for the second screen even
though it is assigned to the first one.

Also introduces a test for workspace assignments that includes the case
described above and some tests that don't fail in the next branch.

6 years agoMove get_output_for_workspace() to i3test
Orestis Floros [Tue, 27 Mar 2018 22:57:54 +0000 (01:57 +0300)]
Move get_output_for_workspace() to i3test

6 years agoIntroduce get_assigned_output
Orestis Floros [Wed, 28 Mar 2018 00:35:40 +0000 (03:35 +0300)]
Introduce get_assigned_output

This also replaces code in create_workspace_on_output() that is
theoretically more efficient but:
1. It isn't a huge difference since it depends on the number of outputs,
that shouldn't be high.
2. get_assigned_output will be modified and used for #555, then its
logic should be followed in create_workspace_on_output() too.

Another note for create_workspace_on_output: if assigned is not NULL the
condition (assigned != output->con) should never be false, ie if there
is an assigned output to this name, it isn't the current one. This
happens because the current callers check for assignments before calling
create_workspace_on_output().

6 years agoMerge pull request #3179 from orestisf1993/issue-2733
Ingo Bürk [Fri, 22 Jun 2018 12:39:02 +0000 (14:39 +0200)]
Merge pull request #3179 from orestisf1993/issue-2733

Correctly handle bindings for the same key with and without --release

6 years agoMerge pull request #3313 from czak/fix-border-artifacts
Ingo Bürk [Fri, 22 Jun 2018 11:48:15 +0000 (13:48 +0200)]
Merge pull request #3313 from czak/fix-border-artifacts

Border artifacts when moving window

6 years agoConsider rect changed when its position changes 3313/head
Łukasz Adamczak [Fri, 22 Jun 2018 10:34:11 +0000 (12:34 +0200)]
Consider rect changed when its position changes

6 years agoMerge pull request #3309 from orestisf1993/detectable-autorepeat
Ingo Bürk [Wed, 20 Jun 2018 06:38:46 +0000 (08:38 +0200)]
Merge pull request #3309 from orestisf1993/detectable-autorepeat

Enable detectable autorepeat

6 years agoMerge pull request #3310 from KJoke70/patch-1
Ingo Bürk [Fri, 15 Jun 2018 12:55:49 +0000 (14:55 +0200)]
Merge pull request #3310 from KJoke70/patch-1

Update i3-msg.man: added get_config and send_tick

6 years agoUpdate i3-msg.man: added get_config and send_tick 3310/head
Martin [Fri, 15 Jun 2018 12:37:14 +0000 (14:37 +0200)]
Update i3-msg.man: added get_config and send_tick

Added get_config and send_tick which are mentioned [here](https://i3wm.org/docs/ipc.html).

6 years agoEnable detectable autorepeat 3309/head
Orestis Floros [Tue, 12 Jun 2018 20:50:09 +0000 (23:50 +0300)]
Enable detectable autorepeat

https://www.x.org/releases/current/doc/kbproto/xkbproto.html#Detectable_Autorepeat

Detectable autorepeat should only affect --release bindings. Currently,
when a user keeps a key pressed, we get multiple KeyPress and KeyRelease
events. With this change, we still get multiple KeyPress events, which
means that you can still keep a key pressed to repeatedly execute a
normal binding, but only one KeyRelease event when the key is physically
released.

Unfortunately, this change is not currently testable because detectable
autorepeat doesn't seem to work under Xephyr. AwesomeWM experienced the
same problem:
https://github.com/awesomeWM/awesome/commit/6f2424e90170be4acaa1d140f966ab6bb8a4d217

Fixes #3306

6 years agoMerge pull request #3307 from orestisf1993/link
Ingo Bürk [Thu, 7 Jun 2018 20:52:05 +0000 (22:52 +0200)]
Merge pull request #3307 from orestisf1993/link

Fix link

6 years agoFix link 3307/head
Orestis Floros [Thu, 7 Jun 2018 20:07:16 +0000 (23:07 +0300)]
Fix link

Equivalent from the same version:
https://cgit.freedesktop.org/xorg/xserver/tree/xkb/xkbEvents.c?h=xorg-server-1.17.2#n927

6 years agoMerge pull request #3303 from orestisf1993/back_and_forth
Ingo Bürk [Sat, 2 Jun 2018 15:17:15 +0000 (17:17 +0200)]
Merge pull request #3303 from orestisf1993/back_and_forth

docs: link workspace_auto_back_and_forth from workspace command

6 years agodocs: link workspace_auto_back_and_forth from workspace command 3303/head
Orestis Floros [Sat, 2 Jun 2018 14:58:10 +0000 (17:58 +0300)]
docs: link workspace_auto_back_and_forth from workspace command

The current text is confusing. '--no-auto-back-and-forth' doesn't
disable the 'workspace back_and_forth' command, the flag is not even
valid for that command.

6 years agoMerge pull request #3301 from Streetwalrus/swallow-reframe
Ingo Bürk [Sat, 2 Jun 2018 12:51:18 +0000 (14:51 +0200)]
Merge pull request #3301 from Streetwalrus/swallow-reframe

Reframe swallowed windows if depth doesn't match

6 years agoReframe swallowed windows if depth doesn't match 3301/head
Dan Elkouby [Fri, 1 Jun 2018 15:55:35 +0000 (18:55 +0300)]
Reframe swallowed windows if depth doesn't match

X will not allow a window with ParentRelative background to be created
or reparented under a window with mismatching color depth.
Deal with this by destroying the container frame and creating a new one
with the right depth upon swallowing.
Defer destruction of the frame window until after the updated tree has
been rendered to avoid some distracting flickering.

Fixes #3297

6 years agoUpdated ISSUE_TEMPLATE.md (#3295)
Ingo Bürk [Sun, 20 May 2018 14:51:26 +0000 (16:51 +0200)]
Updated ISSUE_TEMPLATE.md (#3295)

6 years agoMerge pull request #3282 from orestisf1993/strncpy-to-memcpy
Ingo Bürk [Wed, 9 May 2018 12:34:00 +0000 (14:34 +0200)]
Merge pull request #3282 from orestisf1993/strncpy-to-memcpy

Replace strncpy call with memcpy when result is not NUL-terminated

6 years agoReplace strncpy call with memcpy when result is not NUL-terminated 3282/head
Orestis Floros [Tue, 8 May 2018 14:05:46 +0000 (17:05 +0300)]
Replace strncpy call with memcpy when result is not NUL-terminated

This fixes a new warning from GCC 8.1, -Wstringop-truncation:
https://gcc.gnu.org/gcc-8/changes.html
https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wstringop-truncation

Replacing with memcpy is what gcc suggests:
> As another example, the following call to strncpy results in copying
> to d just the characters preceding the terminating NUL, without
> appending the NUL to the end. Assuming the result of strncpy is
> necessarily a NUL-terminated string is a common mistake, and so the
> call is diagnosed. To avoid the warning when the result is not
> expected to be NUL-terminated, call memcpy instead.
>    void copy (char *d, const char *s)
>    {
>      strncpy (d, s, strlen (s));
>    }

6 years agoMerge pull request #3279 from Streetwalrus/next
Orestis [Sat, 5 May 2018 10:49:13 +0000 (13:49 +0300)]
Merge pull request #3279 from Streetwalrus/next

Activate the focused child when scrolling over tab/stack decorations

6 years agoActivate the focused child when scrolling over tab/stack decorations 3279/head
Dan Elkouby [Sat, 5 May 2018 10:30:48 +0000 (13:30 +0300)]
Activate the focused child when scrolling over tab/stack decorations

fbce834b introduced a bug where scrolling over the decoration while
another container is focused would not focus the tabbed/stacked
container itself, but would instead move focus through the currently
focused container.