Commit Graph

1809 Commits

Author SHA1 Message Date
Michael Stapelberg
2fe0949abd Bugfix: Only change focus in tree_close() when the container was focused before
Fixes: #441

I’m not sure if that’s really all there is to it. Seems a bit too simple :).
We’ll see if I missed some corner cases in the next few days…
2011-09-18 17:43:02 +01:00
Michael Stapelberg
46409ad656 Merge branch 'master' into next 2011-09-18 17:02:52 +01:00
Michael Stapelberg
a82f5750de Bugfix: Avoid out of bounds coordinates when moving floating windows (Thanks eeemsi)
This commit makes the coordinates proportional when moving floating windows.
That is, if you have a window at the bottom of your 1920 px monitor and move it
to your 800 px monitor, it will be at the bottom of the 800 px monitor (and not
out of bounds).
2011-09-18 17:00:29 +01:00
Michael Stapelberg
b3adaa2983 Implement the window_role criterion (checks WM_WINDOW_ROLE)
Closes: #446

This is handy for matching specific windows of a multi-window application, for
example only Pidgin’s buddy list window.
2011-09-18 16:05:10 +01:00
Michael Stapelberg
c88425147e Merge branch 'master' into next 2011-09-18 14:39:33 +01:00
Michael Stapelberg
7a2e92a116 Bugfix: Use con_orientation(). Fixes switching between different outputs
Fixes: #518

For stacking containers, direct access using con->orientation is wrong, we need
to use con_orientation().
2011-09-18 14:38:39 +01:00
Michael Stapelberg
0bc44ffc37 Merge branch 'master' into next 2011-09-18 00:40:42 +01:00
Peter Bui
a5012f6021 fix-bug-515: always adjust floating position when moving to another output
Floating con position needs to be adjusted when moving to another
output, regardless of whether or not the target workspace is visible.
2011-09-18 00:38:32 +01:00
Michael Stapelberg
b4ab4703c9 Merge branch 'master' into next 2011-09-17 20:55:13 +01:00
Michael Stapelberg
755c618cd4 Bugfix: Don’t warp the pointer if it already is on the target output (Thanks cls, pnutzh4x0r)
My testcase was putting a floating window on the left output, but overlapping a
little to the right output. Then switch to a workspace on the right output.
2011-09-17 20:53:24 +01:00
Michael Stapelberg
e6a854a742 Remove obsolete code for floating focus 2011-09-17 19:29:06 +01:00
Michael Stapelberg
172f3563f7 Implement focus switching (focus left/right) for floating windows
Fixes: #475
2011-09-17 19:28:41 +01:00
Michael Stapelberg
fe35c80741 Also make compilation possible on systems with libev 3
From the source:

    We need ev >= 4 for the following code. Since it is not *that* important
    (it only makes sure that there are no i3-nagbar instances left behind) we
    still support old systems with libev 3.
2011-09-17 17:55:36 +01:00
Michael Stapelberg
7a38d8ac56 Merge branch 'master' into next 2011-09-17 14:13:05 +01:00
Michael Stapelberg
deab3ac338 Send the correct X11 border_width in faked ConfigureNotifys 2011-09-17 14:11:55 +01:00
Michael Stapelberg
f2f636f9e7 Bugfix: Honor the X11 window border in ConfigureRequests 2011-09-17 14:11:01 +01:00
Michael Stapelberg
983a679537 Bugfix: Honor the X11 window border when calculating dimensions for floating windows 2011-09-17 14:10:35 +01:00
Michael Stapelberg
f6eaa8a580 Bugfix: Don’t use top border height twice when calculating dimensions for floating windows 2011-09-17 14:09:57 +01:00
Michael Stapelberg
5a85c9efd2 fix build in 'next' (Thanks thomasba) 2011-09-14 23:16:23 +01:00
Michael Stapelberg
ad568aa8c1 Merge branch 'master' into next 2011-09-14 23:00:02 +01:00
Michael Stapelberg
b1aa8107b3 Bugfix: Correctly handle ConfigureRequests for floating windows in multi-monitor setups (Thanks thomasba)
Fixes #519
2011-09-14 22:59:19 +01:00
Michael Stapelberg
6b541d382b Bugfix: Don’t fix floating coordinates when reassigning (fixes flickering)
This fixes flickering when moving floating windows between different monitors.
2011-09-14 22:58:51 +01:00
Michael Stapelberg
dc790cfa32 Bugfix: Correctly free old assignments when reloading
Fixes #516
2011-09-11 23:41:46 +01:00
Michael Stapelberg
f3716e45cf re-indent load_configuration() 2011-09-11 23:31:06 +01:00
Michael Stapelberg
2c7148c46e Same bugfix as 2a215fd, but for assignments with invalid criteria 2011-09-11 22:54:41 +01:00
Michael Stapelberg
717ae819c5 Merge branch 'master' into next 2011-09-11 22:52:44 +01:00
Michael Stapelberg
2a215fd7e2 Bugfix: Ignore for_window commands with empty (invalid) criteria (+test) (Thanks aksr) 2011-09-11 22:52:33 +01:00
Michael Stapelberg
a41bfba47a finally remove the deprecated 'screen' keyword from cfgparse.l 2011-09-11 22:27:31 +01:00
Michael Stapelberg
d82698efa7 make the old assign syntax trigger an i3-nagbar warning (it’s deprecated), adjust test 2011-09-11 22:01:36 +01:00
Michael Stapelberg
e47e100819 Introduce a new syntax for the 'assign' command:
Instead of using a quoted string to specify the class / title, the assign
command now uses criteria, just like the for_window command or the command
scopes.

An example comes here:

    # Assign all Chromium windows (including popups) to workspace 1: www
    assign [class="^Chromium$"] → 1: www

    # Make the main browser window borderless
    for_window [class="^Chromium$" title=" - Chromium$"] border none

This gives you more control over the matching process due to various reasons:

1) Criteria work case-sensitive by default. Use the (?i) option if you want a
   case-insensitive match, like this:
   assign [class="(?i)^ChroMIUM$"] → 1

2) class and instance of WM_CLASS can now be matched separately. For example,
   when starting urxvt -name irssi, xprop will report this:
   WM_CLASS(STRING) = "irssi", "URxvt"
   The first part of this is the instance ("irssi"), the second part is the
   class ("URxvt").
   An appropriate assignment looks like this:
   assign [class="^URxvt$" instance="irssi"] → 2

3) You can now freely use a forward slash (/) in all strings since that is no
   longer used to separate class from title (in-band signaling is bad, mhkay?).
2011-09-11 21:54:13 +01:00
Michael Stapelberg
d03dffe012 Kill left-over i3-nagbar processes on 'exit' 2011-09-11 21:49:35 +01:00
Michael Stapelberg
b3e1fb1f3b Make the old 'assign' case-insensitive again (+test) (Thanks aksr) 2011-09-11 21:16:45 +01:00
Michael Stapelberg
c1c1730516 pcre: enable UCP, UTF-8 (if available), extend t/19-match 2011-09-11 11:40:51 +01:00
Michael Stapelberg
2fc54aadf1 Implement support for PCRE regular expressions for all criteria (for_window, commands, assignments) 2011-09-10 23:53:11 +01:00
Michael Stapelberg
77ae771476 Restrict 'resize' command to left/right for horizontal cons, up/down for vertical cons
This makes the interface much clearer and avoids confusion about which key to
press in which situation.
2011-09-05 22:36:04 +02:00
Michael Stapelberg
8928b5f55d Bugfix: Correctly handle workspace names which do not start with a zero 2011-09-05 22:21:10 +02:00
Michael Stapelberg
b4809e9ba7 Merge branch 'master' into next 2011-08-31 14:45:14 +02:00
Michael Stapelberg
e1631d6320 properly free memory/close fd upon errors (Thanks xeen)
Found with the static analyzer cppcheck
2011-08-31 14:44:48 +02:00
Michael Stapelberg
dfda878272 Bugfix: Correctly assign a number to workspaces starting with '0: ' (Thanks SardemFF7) 2011-08-28 18:17:02 +02:00
Michael Stapelberg
57e7266da4 Merge branch 'master' into next 2011-08-28 17:41:23 +02:00
Peter Bui
6e59d693d2 Use name_json if available, rather than non-descriptive name. 2011-08-28 17:36:16 +02:00
Michael Stapelberg
16188af8bf Merge branch 'master' into next 2011-08-28 15:47:35 +02:00
Michael Stapelberg
5618875df8 Bugfix: Make 'floating enable' check for dock windows (Thanks edelkind)
Fixes #501
2011-08-28 15:46:50 +02:00
Michael Stapelberg
8114ecda47 Merge branch 'master' into next 2011-08-27 13:47:57 +02:00
Michael Stapelberg
e97a7e34f7 Bugfix: Re-implement reconfiguring height of dock windows (+test) (Thanks thomasba) 2011-08-27 13:47:10 +02:00
Michael Stapelberg
6c42a179ec Merge branch 'master' into next 2011-08-27 13:03:20 +02:00
Michael Stapelberg
4c01dbd726 Bugfix: Don’t always focus floating windows (fixes focus stealing with assignments) (+test) (Thanks aksr) 2011-08-27 13:02:44 +02:00
stfn
8e8b9b93f4 ipc.c: Fix warning 2011-08-26 23:33:11 +02:00
Michael Stapelberg
7d2978ead4 Merge branch 'master' into next 2011-08-26 19:18:16 +02:00
Michael Stapelberg
f53f954a33 Bugfix: Re-enable X11 Eventmask *after* pushing all the X11 changes
This should fix focus problems where EnterNotify events were generated while
moving windows. Hopefully it does not trigger any regressions :).

Fixes #500
2011-08-26 19:17:52 +02:00
Michael Stapelberg
afff328c59 Merge branch 'master' into next 2011-08-26 12:37:04 +02:00
Michael Stapelberg
12e15609ef Bugfix: Correctly recognize duplicate workspace assignments (Thanks Moredread)
Example of a faulty config:

    workspace 5 VGA1
    workspace 5 LVDS1

Fixes #498, #499
2011-08-26 12:35:42 +02:00
Michael Stapelberg
53a9ace3a6 Merge branch 'master' into next 2011-08-26 03:24:14 +02:00
Michael Stapelberg
7bf465af9f Fix prototype of con_inside_focused 2011-08-26 03:23:57 +02:00
Michael Stapelberg
a57a2b9ccb Merge branch 'master' into next 2011-08-26 03:18:16 +02:00
Michael Stapelberg
7fca7f029f Correctly render containers when a split container is focused 2011-08-26 03:17:41 +02:00
Michael Stapelberg
6d91a6248e Merge branch 'master' into next 2011-08-26 02:02:50 +02:00
Michael Stapelberg
7741608a9d Bugfix: Only consider tiling windows when attaching tiling windows to workspaces (Thanks Tucos)
Fixes #436
2011-08-26 02:01:06 +02:00
Michael Stapelberg
4984b81282 Merge branch 'master' into next 2011-08-25 21:59:19 +02:00
Michael Stapelberg
f06059ec94 Bugfix: Accept '\t' in the 'set' command, don’t die but ELOG in case of errors (Thanks atsutane) 2011-08-25 21:58:03 +02:00
Michael Stapelberg
4fcca74e2b Merge branch 'master' into next 2011-08-25 00:24:12 +02:00
Michael Stapelberg
4f22e12c5c Bugfix: Correctly render non-leaf containers (Thanks eeemsi, mseed)
Fixes #465
2011-08-25 00:23:33 +02:00
Michael Stapelberg
2acbf4d4a4 Compilation fix: Add dont_warp=false 2011-08-24 23:06:49 +02:00
Michael Stapelberg
75c11cb894 Merge branch 'master' into next 2011-08-24 23:00:12 +02:00
Michael Stapelberg
698d97cd02 Bugfix: Correctly warp floating windows when using the 'move' command 2011-08-24 22:59:46 +02:00
Michael Stapelberg
cd2d7ef484 Bugfix: Correctly keep focus when moving non-leaf windows 2011-08-24 22:55:56 +02:00
Michael Stapelberg
1d9a2abc05 Bugfix: Fix coordinates when moving a floating window to a different output 2011-08-24 22:54:10 +02:00
Michael Stapelberg
37a40671c9 Merge branch 'master' into next 2011-08-24 22:43:31 +02:00
Michael Stapelberg
62e9eab4e5 Merge branch 'master' into next
Conflicts:
	src/floating.c
2011-08-24 22:43:15 +02:00
Michael Stapelberg
7558c1ddbd Bugfix: Correctly handle current_output == NULL
Fixes t/66-assign.t
2011-08-24 22:41:17 +02:00
Peter Bui
a33bfa81d2 Move centering code to before sanity check 2011-08-24 22:27:15 +02:00
Michael Stapelberg
c527497a4b Merge branch 'master' into next 2011-08-24 16:58:47 +02:00
Michael Stapelberg
247e115835 Bugfix: Correctly place floating windows on their appropriate output (Thanks kraM)
Fixes #452

This might also fix problems with Firefox where Firefox only displays a white
window (my guess is that it mapped a floating window outside of the actually
visible area for some reason).
2011-08-24 16:57:35 +02:00
Michael Stapelberg
ff85023b08 Merge branch 'master' into next 2011-08-24 15:14:53 +02:00
Michael Stapelberg
0d35feb71b Bugfix: Make the 'resize' command work inside tabbed/stacked cons (+test) (Thanks sbedivere)
Fixes #461
2011-08-24 15:14:04 +02:00
Michael Stapelberg
642a745004 Merge branch 'master' into next 2011-08-24 00:57:36 +02:00
Michael Stapelberg
0848844f2d Bugfix: Fix 'focus mode_toggle' on an empty workspace (Thanks BeF)
Fixes #487
2011-08-24 00:55:11 +02:00
Michael Stapelberg
2cd8231fce Merge branch 'master' into next 2011-08-20 17:48:49 +02:00
Michael Stapelberg
f15559eb1f Don’t die, but ELOG and fallback when the pointer cannot be queried (Thanks Niklas) 2011-08-20 17:48:07 +02:00
Michael Stapelberg
22e30061f3 Merge branch 'master' into next 2011-08-17 16:37:09 +02:00
Michael Stapelberg
f172359ba5 Bugfix: Don’t change focus when assigned windows start on invisible workspaces (+test) (Thanks ioflag)
Fixes #468
2011-08-17 16:36:19 +02:00
Michael Stapelberg
ec317e78c1 use 'break' instead of 'return', the generated code will end up in a switch statement 2011-08-17 16:12:48 +02:00
Peter Bui
7ddba4995f BUG-396: Implement move output <RANDR-OUTPUT> command
Also add support for move output <up|down|left|right> and update
userguide about the new command.
2011-08-17 16:10:11 +02:00
Michael Stapelberg
4cf2cab626 Merge branch 'master' into next 2011-08-17 13:37:33 +02:00
Michael Stapelberg
09ad9808f6 Bugfix: Set focus to where the mouse pointer is when starting (Thanks nutron)
Fixes #477
2011-08-17 13:37:08 +02:00
Michael Stapelberg
2eab8d7f20 Merge branch 'master' into next 2011-08-17 12:29:15 +02:00
Michael Stapelberg
7c6f693c8a Bugfix: Don’t consider the workspace next/prev command when looking for named workspaces
Fixes #469
2011-08-17 12:28:45 +02:00
Michael Stapelberg
7eacf8dd04 Merge branch 'master' into next 2011-08-17 12:17:29 +02:00
Michael Stapelberg
22882f4e89 Bugfix: Initialize verbose to 'false' (Thanks tilman)
Verbosity was set to 'true' when we started the tree branch.
We forgot to set it back to 'false' :-).
2011-08-17 12:16:32 +02:00
Michael Stapelberg
7a22bd1cf3 Merge branch 'master' into next 2011-08-17 12:14:17 +02:00
Peter Bui
36224f86d1 Only warp pointer once during x_push_changes()
- Introduce warp_to static variable in x.c that stores the coordinates
  to warp to as a Rect.

- Add x_set_warp_to function to set this variable.  Use in _tree_next,
  workspace_show, and con_move_to_workspace.

- In x_push_chanages, if warp_to is set, then call xcb_warp_pointer_rect
  and then reset it to NULL.

This fixes all know bugs for pointer warping for me.
2011-08-17 12:12:40 +02:00
Michael Stapelberg
2abe23d6ff Merge branch 'master' into next 2011-08-17 01:52:45 +02:00
Michael Stapelberg
7951445849 xcb: use predefined XCB_ATOM_ atoms, don’t request them 2011-08-17 01:41:19 +02:00
Michael Stapelberg
d3efa73dd7 Merge branch 'master' into next 2011-08-11 22:22:44 +02:00
Valentin Voigt
bf0c67b2af Warp cursor when changing workspace. 2011-08-11 22:13:50 +02:00
Michael Stapelberg
3af7692a92 Merge branch 'tests-optimize' into next 2011-08-10 15:57:28 +02:00
Michael Stapelberg
10f871b57b implement "socket activation": passing IPC sockets to i3 2011-08-10 15:55:27 +02:00
Michael Stapelberg
016ecb65fb Merge branch 'master' into next 2011-08-09 10:02:55 +02:00
Peter Bui
d8cf36ce83 Fix two focus issues when switching/moving workspaces
1. Fix focus when moving to same workspace.

If we have a single window on a workspace and we switch to the same
worksapce, focus_next will be the workspace container, rather than the
current window, so simply call con_descend_focused to ensure we set the
focus to a window.

2. Fix focus when moving a container to a visible workspace.

Call workspace_show before we attaching to new visible workspace, so we
don't get in the weird situation where target workspace has focused
window, but it isn't considered focused.
2011-08-09 10:01:08 +02:00
Mateusz Poszwa
42db9de7ec Add new_float config option.
This option sets the default border style for containers automatically put into floating mode.

Fixes #264
2011-08-09 09:29:53 +02:00
Mateusz Poszwa
cd5ebc2dca src/manage.c: properly set automatic flag when calling floating_enable() 2011-08-09 09:29:47 +02:00
Michael Stapelberg
eb0a56fad1 Merge branch 'get-marks' into next 2011-08-09 09:28:06 +02:00
Michael Stapelberg
4253aa4ba2 Merge branch 'master' into next 2011-08-09 09:27:55 +02:00
Michael Stapelberg
cd1add1f3c Bugfix: don’t free the old json_output, the caller does that 2011-08-09 09:27:28 +02:00
Michael Stapelberg
95416175cd Bugfix: use FREE to correctly handle NULL replies 2011-08-09 09:27:24 +02:00
Peter Bui
5e06b1b21d Fix some potential memory leaks 2011-08-09 09:27:15 +02:00
Helgi Kristvin Sigurbjarnarson
3cc22dcbe4 Preserve marks between restarts. 2011-08-09 08:19:31 +02:00
Helgi Kristvin Sigurbjarnarson
35d7ef0ddd Feature: implement GET_MARKS 2011-08-09 08:04:33 +02:00
Michael Stapelberg
e304902874 Merge branch 'master' into next 2011-08-07 20:45:20 +02:00
Michael Stapelberg
6fb5d6e313 initialize most to NULL, fixes warning 2011-08-07 20:45:06 +02:00
Michael Stapelberg
9260cd7e12 Merge branch 'master' into next 2011-08-07 17:56:37 +02:00
Michael Stapelberg
d39261a1f0 rewrite con_descend_orientation
It now uses the container orientation (if it is appropriate, the last focused
one otherwise) to recurse. This works better if the target workspace is in
vertical orientation when you use right/left or if it is in horizontal
orientation but you use up/down.
2011-08-07 15:57:36 +02:00
Michael Stapelberg
99ba193ce7 Bugfix: the up/down directions were swapped
Also compare 'output' and 'current' in the same order in both parts of the
condition to make the comparison more clear.
2011-08-07 15:46:24 +02:00
Michael Stapelberg
692d65b0fd little style fixes 2011-08-07 15:24:51 +02:00
Peter Bui
a547365a88 Implement switching focus across screens.
Modify _tree_next() so that when we reach the workspace container:

1. Find the next corresponding output (screen) using the added
get_output_next().

2. If there is another output, find the visible workspace.

3. Call workspace_show on found workspace.

4. Find the appropriate window to focus (leftmost/rightmost, etc.) using
con_descend_direction, and then focus it.

I've only tested on horizontal monitors (left/right).
2011-08-07 14:33:07 +02:00
Michael Stapelberg
94ba655794 Merge branch 'master' into next 2011-08-06 18:54:50 +02:00
Michael Stapelberg
cd5e74bd8e Bugfix: Call tree_render() before starting the dragging when dragging a floating window (Thanks eeemsi)
Fixes #462
2011-08-06 18:53:39 +02:00
Michael Stapelberg
2631ad4c07 Merge branch 'master' into next 2011-08-05 01:04:28 +02:00
Michael Stapelberg
ec0d67410a Fix border rendering (Thanks Paride Legovini) 2011-08-05 01:03:56 +02:00
Michael Stapelberg
6e95004d6c Merge branch 'master' into next 2011-08-04 23:37:40 +02:00
Michael Stapelberg
f2e1e220a4 Bugfix: Use the right format string (Thanks pnutzh4x0r) 2011-08-04 23:34:23 +02:00
Michael Stapelberg
7e0cbf18f9 Bugfix: Correctly parse the 'focused' (it’s a bool, no longer int) when restoring layout (Thanks andi) 2011-08-04 22:58:19 +02:00
Michael Stapelberg
93c3596619 Merge branch 'master' into next 2011-08-04 22:21:42 +02:00
Michael Stapelberg
1d50cff7ca Bugfix: Fix stacking order
The commit 192dbdabd6 introduced a regression
here (open three floating windows and try to raise them with clicking to see
what i mean)
2011-08-04 22:19:30 +02:00
Michael Stapelberg
ecc2cae3f7 Bugfix: use ELOG to actually get the error message into the logfile shown by i3-nagbar 2011-08-04 21:43:55 +02:00
Michael Stapelberg
4e350664ae Bugfix: Check that ->symbol != NULL before using strcasecmp() 2011-08-04 21:38:13 +02:00
Michael Stapelberg
787dd4059f little style fixes for the previous patch 2011-08-04 21:25:47 +02:00
Radek Tříška
9d101d8473 check_for_duplicate_bindings 2011-08-04 20:37:01 +02:00
Michael Stapelberg
e9395149b9 Merge branch 'master' into next 2011-08-04 20:11:44 +02:00
Mateusz Poszwa
1913bf0e5c Add "instance" to matching criteria 2011-08-04 20:10:31 +02:00
Simon Kampe
837bb50826 Parsing workspace name so if the first part is a number, the workspace will get this number. If no number is found it will default to -1. 2011-08-04 00:30:07 +02:00
Peter Bui
1750192f63 Modify workspace next/prev to account for workspaces on all outputs.
Generally, the traversal goes: numbered workspaces in order, and then
named workspaces in the order in which they appear in the tree.

Example:
    Output 1:       Output 2:
	1 3 D C         2 4 B A

Traversal: 1, 2, 3, 4, D, C, B, A, 1, ...

Note, after the numbered workspaces, we traverse the named workspaces
from output 1, and then output 2, etc.
2011-08-04 00:12:09 +02:00
Michael Stapelberg
d0741975f1 Bugfix: Use the appropriate number when assigning numbered workspaces in randr.c 2011-08-04 00:10:23 +02:00
Michael Stapelberg
c883e7050a Include <limits.h> in all.h 2011-08-04 00:10:04 +02:00
Michael Stapelberg
92481b133c docs/userguide: the correct command is 'floating enable', not 'mode floating' (Thanks Sander)
Fixes: #453
2011-08-03 20:48:28 +02:00
Michael Stapelberg
e616b45c83 Bugfix: realloc() with size == 0 works like free() and returns NULL, so don’t die() 2011-08-03 20:43:08 +02:00
Michael Stapelberg
192dbdabd6 Bugfix: Correctly set the _NET_CLIENT_LIST_STACKING hint (fixes chromium tabbar)
Fixes #287
2011-08-03 20:07:03 +02:00
Michael Stapelberg
cc5f3ce95a Bugfix: Fix 'resize' with direction != 'up' for floating windows
Fixes #447
2011-08-03 14:48:52 +02:00
Michael Stapelberg
9800d5286f Bugfix: Correctly check if the workspace already exists 2011-08-03 12:18:30 +02:00
Michael Stapelberg
dcba8024de also handle quoted workspace names, extend t/72 for that 2011-08-03 03:33:12 +02:00
Michael Stapelberg
0092b245a1 Bugfix: When looking for an unused workspace, try the named workspaces first
Fixes: #449
2011-08-03 03:08:59 +02:00
Michael Stapelberg
719022d80a Bugfix: Ensure that the percentage is > 0.05 when using the 'resize' cmd (Thanks rogutes)
Fixes #437
2011-08-02 22:31:45 +02:00
Michael Stapelberg
554a43ca4a Bugfix: Make the criteria rules recursive in src/cfgparse.y, too (Thanks f8l) 2011-08-02 19:46:14 +02:00
Michael Stapelberg
c9194b4297 Bugfix: Correctly bind on multiple keycodes if a symbol has more than one (Thanks ubitux) 2011-08-02 10:47:03 +02:00
Michael Stapelberg
3204caa98d i3-migrate-config-to-v4: drop the .pl suffix
As lintian (a Debian package checker) mentions, it is more clever to install it
without the extension, since the implementation language might change.
2011-07-31 23:11:05 +02:00
Michael Stapelberg
bc98185f85 Bugfix: Handle (and free) the last_motion_notify 2011-07-31 21:21:45 +02:00
Michael Stapelberg
7180dca3b2 Bugfix: Correctly free the xcb_get_geometry reply when not managing a window 2011-07-31 20:39:33 +02:00
Michael Stapelberg
22de7593c5 Bugfix: free() the grab_pointer reply 2011-07-31 19:52:58 +02:00
Michael Stapelberg
6c35a0b93b handle the xcb_grab_pointer reply 2011-07-31 19:48:39 +02:00
Michael Stapelberg
ffbcfa2c97 Bugfix: also free() X11 errors in the main loop 2011-07-31 19:41:57 +02:00
Michael Stapelberg
fdfa88586d Forgot free(event) 2011-07-31 19:34:55 +02:00
Michael Stapelberg
fa1fe3cfed Bugfix: Same xcb_send_event fix as 1e0033bce4 2011-07-31 19:33:56 +02:00
Michael Stapelberg
5bfc89f733 Bugfix: Correctly pass the pointer to xcb_send_event 2011-07-31 19:26:38 +02:00
Michael Stapelberg
52b3646ecc xcb: don’t use the _unchecked variant for requests which have a reply 2011-07-31 18:19:41 +02:00
Michael Stapelberg
7f3f7c26b6 Bugfix: free replies after using them 2011-07-31 18:17:56 +02:00
Michael Stapelberg
d9ff172d36 Bugfix: load_font: free reply after using it 2011-07-31 17:57:11 +02:00
Michael Stapelberg
cbfcf5bd8b Bugfix: free font string after using it 2011-07-31 17:54:53 +02:00
Michael Stapelberg
ee83df9684 Bugfix: cfgparse: correctly free parser/lexer 2011-07-31 17:50:54 +02:00
Michael Stapelberg
088681c781 Bugfix: property handlers: correctly free replies in all cases 2011-07-31 17:46:41 +02:00
Michael Stapelberg
1e0033bce4 Bugfix: Allocate 32 bytes for xcb_send_event, it always copies 32 bytes
Fixes an 'uninitialized memory' error in valgrind
2011-07-31 17:46:01 +02:00
Michael Stapelberg
4875868689 Bugfix: Free property replies in their handlers 2011-07-31 17:12:37 +02:00
Michael Stapelberg
d3e3339a05 Bugfix: Fix small memory leak when initializing output Cons 2011-07-31 17:11:51 +02:00
Michael Stapelberg
f2fc523de7 Bugfix: fix memory leak in src/cmdparse.y 2011-07-31 17:11:28 +02:00
Michael Stapelberg
3721c598bd Bugfix: Set the cursor via the Xlib connection if XCursor is supported
This fixes a race where we created cursors on the Xlib connection, flushed,
then used the cursor on the XCB connection. Even though we flushed, the X
server did not process the requests yet and therefore returned a BadCursor
error.

This bugfix uses the Xlib connection for setting the root window cursor which
will ensure that the requests are properly serialized.

An easy test for this (on my machine) is the following ~/.xsession:
    xsetroot -cursor_name cross
    exec i3
If you see a cross cursor instead of the pointer, the race happens. You’ll see
a error_code=6 error in your ~/.xsession-errors.
2011-07-29 13:13:51 +02:00
Michael Stapelberg
bc7dec6a4c X11 errors: also log the error_code (see X Protocol, Appendix B, Errors) 2011-07-29 13:11:02 +02:00
Fernando Tarlá Cardoso Lemos
ae9c90ba19 Don't leak the cursor_id.
Fixes a server-side leak. The cursor_id is not needed when we're
using themed cursors (we never freed it either).
2011-07-29 12:38:44 +02:00
Fernando Tarlá Cardoso Lemos
7a18dcc89e Set the root window cursor. Fixes #442. 2011-07-29 12:38:24 +02:00
Michael Stapelberg
ed30043950 Bugfix: Also abort drag_pointer after XCB_KEY_PRESS / XCB_KEY_RELEASE (Thanks eeemsi) 2011-07-28 21:01:34 +02:00
Michael Stapelberg
f84264ae41 remove _NET_WM_WORKAREA from _NET_SUPPORTED for now
See ticket #301, this is a problem with Qt apps on your second monitor.

We should implement better EWMH support, but not before the release :).
2011-07-27 12:51:38 +02:00
Michael Stapelberg
18513e1638 x.c: fix warning by removing unused variable 2011-07-25 00:32:14 +02:00
Michael Stapelberg
7a7764a0d9 handlers.c: fix warnings 2011-07-25 00:32:03 +02:00
Michael Stapelberg
797ba5f7c8 remove unnecessary close, because fclose already closes the file descriptor 2011-07-24 18:42:46 +02:00
Michael Stapelberg
34eb9b2664 ipc: make 'focused' a bool 2011-07-24 15:00:09 +02:00
Michael Stapelberg
b09bb0fc2a ipc: make 'urgent' a bool 2011-07-24 14:54:30 +02:00
Michael Stapelberg
36fde6dbe1 ipc: send 'percent': null when percent is not relevant for the container 2011-07-24 14:47:28 +02:00
Michael Stapelberg
a05a9f8dae Set some more atoms for _NET_SUPPORTED (Thanks lexszero) 2011-07-23 22:40:47 +02:00
Michael Stapelberg
3f7c7c2e38 remove left-over wordexp.h include 2011-07-23 22:37:41 +02:00
Michael Stapelberg
ffe297f5e5 Bugfix: use the global root variable, don’t get the first one (Thanks quaec) 2011-07-23 22:29:01 +02:00
Michael Stapelberg
fdd098b010 secure strscpy by replacing with strncpy 2011-07-23 22:22:36 +02:00
Michael Stapelberg
370715d1a8 Bugfix: Don’t leak file descriptor 2011-07-23 22:11:01 +02:00
Michael Stapelberg
062ce3ef03 Bugfix: Correctly resize when clicking on the border of a stacked con
Runs the same code as for non-stacked / non-tabbed containers, but on the
parent of the container (which is the stacked / tabbed con, since route_click
gets called with the child).
2011-07-23 21:48:14 +02:00
Michael Stapelberg
02dfb8e891 use memmem and strndup from FreeBSD on Darwin (Thanks Marcus) 2011-07-17 15:18:45 +02:00
Michael Stapelberg
2d71102796 Bugfix: Switch to appropriate workspace when using 'focus' (+test) (Thanks rogutes)
Fixes #432
2011-07-14 23:45:36 +02:00
Michael Stapelberg
8c1a242f5f reload the config after editing it through i3-nagbar 2011-07-13 18:47:08 +02:00
Claudio Marforio
cc24a96e96 patch to allow exec_always in configure file
fixed indentation, updated docs
2011-07-12 18:23:14 +02:00
Michael Stapelberg
5555c0fd3b Bugfix: Don’t raise the stacked/tabbed decoration when border != BS_NONE and children == 1 (Thanks smartass)
Otherwise a black area would cover the top of the child window.
2011-07-11 23:17:56 +02:00
Michael Stapelberg
06054642fe debug.c: remove handle_event 2011-07-11 18:21:25 +02:00
Michael Stapelberg
897b53f1c2 Bugfix: run nagbar commands through sh(1) (Thanks Tucos) 2011-07-11 16:51:57 +02:00
Michael Stapelberg
429d310011 nagbar: use less / vi as fallbacks for PAGER / EDITOR 2011-07-11 16:40:10 +02:00
Michael Stapelberg
05e39c1c48 Ignore X11 errors caused by ReparentWindow / ChangeProperty on already destroyed windows
These errors can happen because a DestroyWindow request by a client will
trigger an UnmapNotify, then a DestroyNotify. We cannot distinguish this
UnmapNotify from an UnmapNotify not followed by a DestroyNotify, so we just try
to send the ReparentWindow / ChangeProperty and ignore the errors, if any.
2011-07-10 23:44:13 +02:00
Michael Stapelberg
48f5166daf log: display time in microseconds when DEBUG_TIMING is set 2011-07-10 23:11:21 +02:00
Michael Stapelberg
937a80511a x: only configure window coordinates when height > 0
Fixes some X11 errors
2011-07-10 22:59:04 +02:00
Michael Stapelberg
d9038cdb80 x: Only render / copy pixmap when the pixmap was actually created
Fixes some X11 errors
2011-07-10 22:58:49 +02:00
Michael Stapelberg
85d851de5f x: disable GraphicsExposure events on our pixmap graphics contexts
Gets rid of GraphicsExposure and NoExpose events, which we don’t use anyways.
2011-07-10 22:27:51 +02:00
Michael Stapelberg
78d25c4cd9 expose event handler: use x_deco_recurse 2011-07-10 22:06:16 +02:00
Michael Stapelberg
7d9ba707b3 x: Don’t pre-render the decoration for windows inside a stack which are not visible
Saves n-1 decoration renderings for n windows in a stack whenever a new window
gets added or removed.
2011-07-10 21:55:29 +02:00
Michael Stapelberg
d7f9700ba4 x: use PolySegment instead of two PolyLine requests 2011-07-10 21:19:31 +02:00
Michael Stapelberg
8f4b95dccd x: change EnterNotify event mask only for mapped windows
Saves a few ChangeWindowAttributes requests.
2011-07-10 20:18:06 +02:00
Michael Stapelberg
37e0cf8346 x: copy the pre-rendered pixmap contents to a decoration window immediately after mapping
Reduces flickering.
2011-07-10 20:15:22 +02:00
Michael Stapelberg
afef42a4ac x: set the contents of a decoration window immediately after changing its size
Reduces flickering. A window loses its contents when being resized, so we have
to restore them as fast as possible.
2011-07-10 20:08:40 +02:00
Michael Stapelberg
517833569d x: raise the stack decoration above the stack windows (reduces flickering)
This reduces flickering when opening new windows in a stack, see the comment.
2011-07-10 20:05:49 +02:00
Michael Stapelberg
0d8dd571f8 x: when rendering stacked/tabbed cons, only update decoration once, saves some CopyAreas 2011-07-10 20:01:29 +02:00
Michael Stapelberg
8be26c9a22 x: Don’t set background color on frame windows, reduces flickering 2011-07-10 19:58:46 +02:00
Michael Stapelberg
64cfb2dbb1 Revert "x: Set pixmap as background window, saves a lot of CopyAreas"
This reverts commit 84b804cda6.
Turns out that it triggered graphic corruptions on ATI graphics cards (Thanks
aniou) with certain drivers.
2011-07-10 16:22:09 +02:00
Michael Stapelberg
c55abca115 add i3-nagbar. tells you about config file errors (for example) 2011-07-10 14:33:19 +02:00
Michael Stapelberg
0add563448 Bugfix: multiple criteria should use a logical AND (+test) (Thanks f8l) 2011-07-08 00:21:29 +02:00
Michael Stapelberg
0ca229ceb3 migrate-config: also make force_focus_wrapping a v4-only statement 2011-07-08 00:17:48 +02:00
Michael Stapelberg
ac335fcffa Automatically call the migration script when the config does not look like v4 2011-07-06 20:43:00 +02:00
Michael Stapelberg
c408fef021 Implement 'focus floating', 'focus tiling' and 'focus mode_toggle' (+test +docs) 2011-07-04 17:09:52 +02:00
Michael Stapelberg
71741d7620 Bugfix: Only set ENTER_WINDOW event mask for mapped windows (fixes focus problems)
Fixes focus problems when switching to empty workspaces or when going in/out of
fullscreen.
2011-07-04 13:41:02 +02:00
Michael Stapelberg
23d4917e43 Bugfix: Correctly revert floating focus when killing the last floating window (+test) 2011-07-01 01:10:43 +02:00
Michael Stapelberg
e5c811248f Bugfix: Fix floating assignments, extend test for the assign command (Thanks Tucos) 2011-06-13 17:42:59 +02:00
Michael Stapelberg
d641e1da3b Don’t force wrapping when focusing in a direction would work (+test)
Think of the following layout:

 -------------
 | tab |     |
 | con | win |
 |     |     |
 -------------

The tabbed container on the left has two children. Assume you have focused the
second/right child in the tabbed container. i3 used to focus the first/left
container of the tabbed container when using 'focus right' (it wrapped focus).

With this commit, the default behaviour is to instead focus the window on the
right of the screen.

The intention is to make focus switching more intuitive, especially with tabbed
containers supporting 'focus left'/'focus right' in tree. You should end up
using less 'focus parent' :).

You can force the old behaviour with 'force_focus_wrapping true' in your
config.

Code coverage is 62.5% with this commit.
2011-06-12 12:56:50 +02:00
Michael Stapelberg
b35ff6a7c9 Bugfix: Correctly attach new output cons to the root con (Thanks mseed) 2011-06-11 14:36:09 +02:00
Michael Stapelberg
fb9d77305e Implement 'fullscreen global' 2011-06-10 18:27:20 +02:00
Michael Stapelberg
bef25d72aa Implement 'border toggle' (+test) 2011-06-10 16:15:52 +02:00
Michael Stapelberg
60ae26c19d Implement 'workspace next/prev' (+test) 2011-06-10 16:03:59 +02:00
Michael Stapelberg
39b1c1bf75 Re-implement the 'mode' command 2011-06-10 02:38:07 +02:00
Michael Stapelberg
df0b7bed48 cmdparse: s/direction/split_direction to be more clear 2011-06-10 02:25:14 +02:00
Michael Stapelberg
f1385ba3d5 CONFIG BREAK: Rename 'restore' to 'append_layout' 2011-06-10 02:15:31 +02:00
Michael Stapelberg
bd49c80d5f CONFIG BREAK: rename 'mode floating/tiling' to 'floating enable/disable'
The three different variants now:
   floating enable
   floating disable
   floating toggle
2011-06-10 02:06:47 +02:00
Michael Stapelberg
9bbb37bb55 BREAKS CONFIG: rename 'level up' to 'focus parent'
…and 'level down' to 'focus child'. More intuitive than the old command names.
2011-06-10 01:36:33 +02:00
Michael Stapelberg
9aa7e5fbd6 Parse multiple criteria in commands (+test), better error message for 'focus' 2011-06-08 23:34:08 +02:00
Michael Stapelberg
d68e4710fe CONFIG BREAK: kick the 'next'/'prev' commands, introduce 'focus left' etc.
Instead of the cryptic next/prev commands, we now provide an argument to the
focus command. Userguide and default config is updated.
2011-06-08 20:49:49 +02:00
Michael Stapelberg
58e02e84e2 Bugfix: Don’t break focus stack when inplace restarting with fullscreen windows (Thanks mike) 2011-06-03 01:48:55 +02:00
Michael Stapelberg
1585d942ea Make workspace_layout handle all cons at workspace level, not only the first one (+test)
This makes opening new windows on workspace level and moving windows to the
right/left more like in the old i3.
2011-06-02 17:21:38 +02:00
Michael Stapelberg
51bfdbf0a8 ipc: make 'layout' a string 2011-06-02 17:12:18 +02:00
Michael Stapelberg
97e45b9cfc Bugfix: RandR: Correctly assign focused workspaces to outputs
Fixes: #399
2011-05-29 14:39:41 +02:00
Michael Stapelberg
1fc15d270e Bugfix: rendering cache also needs to consider con->pixmap_recreated for borders 2011-05-29 13:20:41 +02:00
Michael Stapelberg
18ec15b0f9 x: fix race condition where the new event mask was not set directly after reparenting 2011-05-29 13:20:41 +02:00
Michael Stapelberg
8acea3d34c call tree_render() only after commands which require it
Saves one call of tree_render for exec, for example
2011-05-29 13:20:34 +02:00
Michael Stapelberg
446c9b7313 Bugfix: Set pixmap_recreated before rendering the decoration 2011-05-29 12:20:09 +02:00
Michael Stapelberg
f680c8841f x: only re-render the tree in handle_normal_hints when they actually changed 2011-05-29 11:46:01 +02:00
Michael Stapelberg
b49874dcb8 x: first create/render pixmap, then change window sizes (reduces flickering for new windows)
Especially in stacked cons.
2011-05-29 11:31:22 +02:00
Michael Stapelberg
7ae0c9c973 Bugfix: Check swallows before assignments when managing windows (Thanks julien)
Fixes #395 (empty containers on restart when assigned windows are visible)
2011-05-25 21:00:53 +02:00
Michael Stapelberg
7208d01048 remove unused code from manage.c 2011-05-25 20:47:47 +02:00
Michael Stapelberg
2c68c234ea Implement assignments for (named) workspaces, with '~' compatibility (floating) 2011-05-23 18:41:17 +02:00
Michael Stapelberg
272a86745e Bugfix: Free pixmaps when killing windows (Thanks Mike) 2011-05-22 23:32:59 +02:00
Michael Stapelberg
4c1392d8ab retab! cfgparse.l 2011-05-22 22:15:43 +02:00
Michael Stapelberg
c23f3b45fc cfgparse.l: kill a few states by using the stack 2011-05-22 22:08:40 +02:00
Michael Stapelberg
1d6447187c cleanup cfgparse lexer/parser (ignore whitespace, solves conflicts) 2011-05-22 21:48:25 +02:00
Michael Stapelberg
e27a8597d8 forgot to remove unused TOK_ATTACH token from lexer 2011-05-22 21:42:34 +02:00
Michael Stapelberg
08f64f011d cleanup cmdparse lexer/parser (ignore whitespace, solves conflicts) 2011-05-22 21:26:50 +02:00
Michael Stapelberg
03cc490f0e Bugfix: fix crash when disabling floating mode 2011-05-16 20:51:29 +02:00
Michael Stapelberg
5ae4620a24 Time Lord technology: for_window config directive to run arbitrary cmds
An example to set all XTerms floating:
    for_window [class="XTerm"] mode floating

To make all urxvts use a 1-pixel border:
    for_window [class="urxvt"] border 1pixel

A less useful, but rather funny example:
    for_window [title="x200: ~/work"] mode floating

The commands are not completely arbitrary. The commands above were tested,
others may need some fixing. Internally, windows are compared against your
criteria (class, title, …) when they are initially managed and whenever one of
the relevant values change. Then, the specified command is run *once* (per
window). It gets prefixed with a criteria to make it match only the specific
window that triggered it. So, if you configure "mode floating", i3 runs
something like '[id="8393923"] mode floating'.
2011-05-15 20:10:25 +02:00
Michael Stapelberg
ca2e4199b5 Introduce HANDLE_EMPTY_MATCH macro to simplify command handlers in cmdparse.y 2011-05-15 19:43:35 +02:00
Michael Stapelberg
d3e458bc78 Remove old code from randr.c and workspace.c 2011-05-14 22:38:19 +02:00
Michael Stapelberg
5db97dc473 Bugfix: Fix initialization / assignments when RandR is missing 2011-05-14 22:34:34 +02:00
Michael Stapelberg
3f45d3c447 re-implement assignments of workspace to specific outputs 2011-05-14 22:19:58 +02:00
Michael Stapelberg
443753bea6 x.c: disable some of the debug output 2011-05-14 20:04:34 +02:00
Michael Stapelberg
0bfab98a7f Correctly re-implement scrolling on window decorations
Got lost when refactoring the click handling in 24463718cc

Fixes: #390
2011-05-13 21:58:17 +02:00
Michael Stapelberg
aea445b690 Bugfix: Attach new cons at the correct place when a floating con is focused (+test) (Thanks fernandotcl)
New containers were previously attached directly to the workspace instead of to
the previously focused place in the workspace (for example a stacked con).

Fixes: #376
2011-05-13 21:30:37 +02:00
Michael Stapelberg
3d2cd6abaa Fix kill command with trailing whitespace 2011-05-13 21:18:20 +02:00
Michael Stapelberg
167bdd26b7 Argument for 'kill' for killing a specific window (now default) or the whole client (+test)
Use 'kill window' to kill a specific window (for example only one specific
popup), use 'kill client' to kill the whole application (or X11 connection to
be specific).
2011-05-13 20:41:03 +02:00
Michael Stapelberg
44c2555e67 Bugfix: When focusing the next floating window, descend the CT_FLOATING_CON
makes t/35-floating-focus.t pass again
2011-05-13 19:53:19 +02:00
Michael Stapelberg
836a3ad615 Bugfix: set WM_STATE to WITHDRAWN when an app unmaps their window(s) (+test)
Fixes: #362
2011-05-13 17:04:55 +02:00
Michael Stapelberg
62e977102b Bugfix: Fix the WANT_QSTRING state 2011-05-13 17:03:15 +02:00
Michael Stapelberg
b0e871e0cf Bugfix: Fix focus follows mouse for non-default layout cons (Thanks phnom)
Fixes: #361
2011-05-12 22:24:52 +02:00
Michael Stapelberg
6e32e6123d Bugfix: Ignore focus when attaching cons while restoring the layout
Fixes: #369
2011-05-12 07:22:17 +02:00
Michael Stapelberg
94646190aa Bugfix: Correct string/quoted string parsing for the commands exec, workspace, nop, restore and mark (Thanks SardemFF7)
Fixes: #380
2011-05-12 07:09:06 +02:00
Michael Stapelberg
2e75d934a4 Bugfix: Don’t append the --restart parameter on each restart (Thanks aniou)
Fixes: #384
2011-05-12 06:58:09 +02:00
Michael Stapelberg
c62f70856f Bugfix: Don’t crash when dock clients set the urgency hint (+testcase) 2011-05-11 22:45:20 +02:00
Michael Stapelberg
4be3178d4d Bugfix: Don’t fill split cons etc. with client background color (fixes nested decoration rendering)
Fixes: #359
2011-05-11 22:01:09 +02:00
Michael Stapelberg
4da6fc7ba3 Bugfix: Restore border_style when restarting inplace (Thanks aniou)
Fixes #385.
2011-05-11 20:45:56 +02:00
Michael Stapelberg
9c05c18156 ipc: change border_style to human-readable string instead of enum value 2011-05-11 20:39:18 +02:00
Michael Stapelberg
eb8ad348b2 Bugfix: Don’t run into an endless loop when killing con with children (Thanks mseed)
When a tabbed container had more than one child and at least the first one
supported WM_DELETE, i3 entered an endless loop when killing that tabbed
container. This was due to tree_close only sending WM_DELETE without actually
removing the child, while the loop in tree_close assumed that with every call
of tree_close one child would be removed.
2011-05-11 20:22:47 +02:00
Michael Stapelberg
e73c171e0d Bugfix: assign BORDER_BOTTOM instead of BORDER_RIGHT (Thanks Jan) 2011-05-06 13:09:50 +02:00
Michael Stapelberg
1fe5c58764 cfgparse.y: define types (Thanks Merovius) 2011-05-05 21:58:28 +02:00
Michael Stapelberg
bd73275771 re-indent cfgparse.y 2011-05-05 21:19:47 +02:00
Michael Stapelberg
a075fd4ee2 cmdparse.y: set type on the tokens/non-terminals (Thanks Merovius) 2011-05-05 20:39:05 +02:00
Michael Stapelberg
3d1acd6c2f re-implement assigning windows to workspaces 2011-05-02 23:29:26 +02:00
Michael Stapelberg
7e51f626ef Bugfix: Before rendering, attach the con to its floating_con
Otherwise, the rendering will produce negative coordinates.
2011-05-02 11:06:13 +02:00
Michael Stapelberg
b2754fd679 Bugfix: When re-assigning floating windows to a different output, use the last focused workspace, not the first 2011-05-02 11:05:50 +02:00
Michael Stapelberg
79323a0be0 Bugfix: Fix the client background rectangle calculation (Thanks Mike)
Really fixes #364.
2011-05-01 22:27:06 +02:00
Michael Stapelberg
b401e08a5d Bugfix: For fullscreen cons, use a deco_height of 0 to correctly render the background color
This should fix #364.
2011-05-01 19:46:41 +02:00
Michael Stapelberg
d28008aa63 Bugfix: Correctly render decorations in tabbed containers (don’t overlap)
This fixes a regression introduced in b644fb5f26.
2011-05-01 18:48:30 +02:00
Michael Stapelberg
8b21812bbd Bugfix: Add missing tree_render() when handling the urgency hint (Thanks mxf) 2011-04-30 00:37:03 +02:00
Michael Stapelberg
a149283964 Fix unaligned memory access on sparc (Thanks David Coppa) 2011-04-28 21:44:29 +02:00
Michael Stapelberg
2c6508a6a3 remove useless checks, size_t != ssize_t :) 2011-04-28 20:24:16 +02:00
Michael Stapelberg
528f486eee Make code compatible with yajl 2.0 *and* 1.0 2011-04-27 19:52:53 +02:00
Michael Stapelberg
28b9ed6eb3 Bugfix: Ensure that all outputs have a ->con before handling disabled outputs (Thanks JimdiGriz)
Steps to reproduce:
• xrandr --output VGA1 --auto
• xrandr --output LVDS1 --off
2011-04-27 10:18:46 +02:00
Sardem FF7
8a40dc0011 Use XDG_RUNTIME_DIR when available
XDG_RUNTIME_DIR is the volatile runtime data dir provided by modern
session manager such as systemd
2011-04-26 18:39:11 +02:00
Michael Stapelberg
3721bcb868 Bugfix: Ignore EnterNotifies generated by UnmapNotifies
Actually, commit 1c5adc6c35 commented out code
without ever fixing it. I think this was responsible for the 'workspace
switching sometimes does not work' bug. My observations:

Had it again today and analyzed a log of it. Looks like after unmapping the
windows on one workspace (in my case: chromium, eclipse, urxvt, focus on
eclipse) we get UnmapNotify events for chromium and eclipse, but then we get an
EnterNotify for the terminal (due to unmapping the other windows and therefore
mapping the terminal under the cursor), only afterwards the UnmapNotify
follows.

So, there are two things wrong with that:

• We handle EnterNotifys for unmapped windows

• Unmapping windows sometimes works in a sequence, sometimes the sequence gets
  split. Not sure why (if unmapping can take longer for some windows or if our
  syncing is wrong -- but i checked the latter briefly and it looks correct).
  Maybe GrabServer helps?

• We don’t ignore EnterNotify events caused by UnmapNotifies. We used to, but
  then there was a different problem and we decided to solve the EnterNotify
  problem in another way, which actually never happened (commit
  1c5adc6c35).
2011-04-19 21:50:56 +02:00
Sardem FF7
cd6f93be3f Rename bind to bindcode
Also fallback when using just 'bind' to be backward-compatible
2011-04-18 23:52:45 +02:00
Michael Stapelberg
84b804cda6 x: Set pixmap as background window, saves a lot of CopyAreas 2011-04-18 21:10:50 +02:00
Michael Stapelberg
3d5af35fa4 Bugfix: Center floating windows with invalid coordinates on current ws 2011-04-18 19:36:10 +02:00
Michael Stapelberg
f613df48d2 Bugfix: Check if a floating window’s coordinates are within a different workspace when managing (Thanks Merovius)
Fixes: #297
2011-04-18 19:28:03 +02:00
Michael Stapelberg
60532a90e7 Bugfix: Assign floating cons to correct workspace when moving between monitors (Thanks dothebart)
Fixes: #371
2011-04-18 18:44:39 +02:00
Michael Stapelberg
36583ec6ee Bugfix: When moving floating cons to other workspaces, attach them to the workspace 2011-04-18 18:44:18 +02:00
Michael Stapelberg
02acf426d3 Bugfix: Don’t set the layout when it’s default layout anyways
Fixes some nasty side-effects
2011-04-02 22:08:38 +02:00
Michael Stapelberg
c3b4006f6b Rename new_container to workspace_layout 2011-04-02 21:49:35 +02:00
Simon Kampe
650eebc347 Implemented config key 'new_container' 2011-04-02 21:43:49 +02:00
Michael Stapelberg
21c7a69812 optimization: when moving floating windows, render/push only the floatingcon 2011-04-01 22:40:12 +02:00
Michael Stapelberg
d8bf633e56 Bugfix: Flush the Xlib connection after creating cursors
Fixes a race condition where the cursors were created after we were already
using them.
2011-04-01 21:57:08 +02:00
Michael Stapelberg
26635a7595 x: skip creating pixmaps when the rect is actually invisible
This fixes a few X11 errors.
2011-04-01 21:54:45 +02:00
Michael Stapelberg
6419e42f6d bugfix: fix race condition where window titles were not correctly updated
Fixes: #351
2011-04-01 21:39:58 +02:00
Michael Stapelberg
57447112ba x: skip x_draw_decoration when con is not mapped
This commit makes workspace switching completely free of cache misses, so
decorations are not re-rendered when switching workspaces.
2011-04-01 20:41:08 +02:00
Michael Stapelberg
b644fb5f26 x: recurse x_push_node in focus order. reduces flickering when switching workspaces 2011-04-01 20:40:32 +02:00
Michael Stapelberg
20b1fd4293 Skip FocusIn events with mode == NOTIFY_MODE_GRAB or NOTIFY_MODE_UNGRAB
According to the Xlib Programming Manual section 10.7.2 [1], these events are
generated when keyboard grabs activate/deactivate, while we are only interested
in focus changes which are done by other programs independend from the
keyboard.

[1] http://tronche.com/gui/x/xlib/events/input-focus/grab.html
2011-03-30 23:00:48 +02:00
Michael Stapelberg
4fd4e619ec little coding style fixes, fix compilation warning 2011-03-21 23:54:13 +01:00
Fernando Tarlá Cardoso Lemos
f0f7cb7478 If the socket path isn't specified, write it to /tmp. 2011-03-21 23:49:39 +01:00
Michael Stapelberg
39ee97fd82 FREE() already nulls the pointer 2011-03-21 23:49:16 +01:00
Fernando Tarlá Cardoso Lemos
6d8784af98 Set the I3_SOCKET_PATH atom to the expanded path. 2011-03-21 23:46:03 +01:00
Michael Stapelberg
99ce340fea Focus cons when moving to a visible workspace on a different output (Thanks mseed)
Fixes: #355
2011-03-20 19:32:00 +01:00
Michael Stapelberg
67b37551d8 Bugfix: Fix switching workspaces on multi-monitor setups (Thanks mseed)
Fixes #356
2011-03-20 18:27:14 +01:00
Michael Stapelberg
38173749f8 Bugfix: Also invalidate caches of the following cons in a split con on cache miss (Thanks fernandotcl) 2011-03-20 18:17:18 +01:00
Michael Stapelberg
b3ee50b184 Bugfix: Also update pixmaps when the position of the deco_rect has changed (Thanks fernandotcl) 2011-03-20 18:07:07 +01:00
Michael Stapelberg
e913e519f2 refactor handlers.{c,h}: declare the handlers static, remove unnecessary parameters 2011-03-20 16:53:12 +01:00
Michael Stapelberg
c130cefa93 Handle FocusIn events generated by clients and update decoration accordingly (Thanks mseed) 2011-03-20 16:26:36 +01:00
Michael Stapelberg
144deaaaf6 Remove debugging syncs 2011-03-20 14:29:48 +01:00
Michael Stapelberg
b25477b15e Re-implement rendering to pixmaps (double-buffering) and caching decorations 2011-03-20 14:25:09 +01:00
Michael Stapelberg
e835888a9e Bugfix: Actually re-attach dock clients when outputs get disabled (Thanks phnom)
Fixes: #348
2011-03-20 01:07:21 +01:00
Michael Stapelberg
e9a9a46795 Bugfix: Don’t use the workspace where focus is for deleting workspaces when switching (Thanks mseed)
Fixes: #353
2011-03-19 23:19:42 +01:00
Michael Stapelberg
03ea7cea28 Bugfix: also invalidate focused_id when the to_focus window is not mapped
This fixes a bug where focus might not be set correctly when changing workspaces
2011-03-19 22:54:53 +01:00
Michael Stapelberg
b342d387a8 Handle saved_configpath in get_config_path, fix memleak in current_configpath handling, update atoms after reloading (Thanks fernandotcl) 2011-03-19 22:26:15 +01:00
Michael Stapelberg
626c65b0d8 Bugfix: correctly store the config path for using it for I3_CONFIG_PATH later 2011-03-19 21:50:13 +01:00
Michael Stapelberg
9344b9790c Bugfix: fix null-pointer dereference when IPC is disabled (Thanks Merovius) 2011-03-19 21:37:27 +01:00
Michael Stapelberg
65a3259b3c Set the I3_SOCKET_PATH and I3_CONFIG_PATH atoms on the X11 root window 2011-03-19 21:20:38 +01:00
Michael Stapelberg
8b9aedd2bf Bugfix: When there’s nothing to focus, focus the root window (Thanks fernandotcl, ThePub) 2011-03-19 20:43:06 +01:00
Michael Stapelberg
fd7e4b08f3 rendering: correctly draw background rect (Thanks phnom)
Fixes #347
2011-03-18 20:47:59 +01:00
Michael Stapelberg
3282bb4069 remove obsolete comment 2011-03-18 17:08:48 +01:00
Michael Stapelberg
82e286ed7c Only send WM_TAKE_FOCUS when the client supports it in the protocols atom
Fixes opening xterm, for example
2011-03-18 17:07:56 +01:00
Michael Stapelberg
0639a7d95b Make i3 compatible with the very latest xcb
This involves:
 • Compiling with xcb-util instead of xcb-{atom,aux} (they merged the libraries)
 • Not using xcb-{event,property} anymore (code removed upstream)
 • Not using the predefined WINDOW, CARDINEL, … atoms (removed upstream)
 • Using the new xcb_icccm_* data types/functions instead of just xcb_*
   (for example xcb_icccm_get_wm_hints instead of xcb_get_wm_hints)

Also I refactored the atoms to use x-macros.
2011-03-18 14:39:27 +01:00
Michael Stapelberg
36664c6289 Send WM_TAKE_FOCUS to clients when setting focus (fixes java swing problems) 2011-03-17 22:27:59 +01:00
Michael Stapelberg
65b05169d3 change the config parser to use default_orientation instead of new_container_orientation
It’s a shorter and probably more meaningful description as it is not
immediately clear what a container exactly is when first installing i3.
2011-03-17 17:55:53 +01:00
Michael Stapelberg
eeb5bdd66f cleanup code of workspace rotation on output changes 2011-03-17 17:53:56 +01:00
Simon Kampe
2f992f5c0e Added config key for default orientation of containers (new_container_orientation) and added support in randr.c for automatically changing the orientation when user does a xrandr rotate. 2011-03-17 17:43:35 +01:00
Michael Stapelberg
b484ed5f9d When making floating cons tiling, re-insert next to the next focused *tiling* con (Thanks mseed)
Fixes: #337 and #350
2011-03-14 23:50:29 +01:00
Michael Stapelberg
76e978bfb3 fix small warnings when compiling with DEBUG=0 2011-03-14 23:17:52 +01:00
Michael Stapelberg
7100d32971 cmdparse: correctly parse con_id/id (fixes warning) 2011-03-14 23:14:40 +01:00
Michael Stapelberg
b21137b2c0 cmdparse: expect 4 shift/reduce conflicts 2011-03-14 23:08:33 +01:00
Michael Stapelberg
f900fab453 cmdparse: don’t allow empty operations 2011-03-14 23:03:25 +01:00
Michael Stapelberg
627683c053 cmdparse: don’t allow empty commands 2011-03-14 23:03:13 +01:00
Michael Stapelberg
8928823e07 remove usless 'operation' token, already handled by 'operation optwhitespace' 2011-03-14 22:29:07 +01:00
Michael Stapelberg
18215445f8 remove unused current_bindings (left-over from cfgparse.y) 2011-03-14 22:28:55 +01:00
Michael Stapelberg
89ef41dadf re-implement support for MappingNotifys 2011-03-14 17:20:04 +01:00
Michael Stapelberg
01365edb30 ewmh: bump copyright 2011-03-14 17:15:18 +01:00
Michael Stapelberg
fb9978b975 ewmh: add comment to describe why we count 2011-03-14 17:15:04 +01:00
Fernando Tarlá Cardoso Lemos
c0563af3e2 Bring back some more EWMH support. 2011-03-14 17:11:33 +01:00
Fernando Tarlá Cardoso Lemos
b4e3dfd76b Add the "created" parameter to workspace_get.
If created is not NULL, *created is set to whether or not the
workspace has been just created.
2011-03-14 17:07:53 +01:00
Fernando Tarlá Cardoso Lemos
b8a716c370 Reload the same config file specified in the command line.
Fixes: #346
2011-03-14 16:48:45 +01:00
Michael Stapelberg
cdeb49127f Bugfix: restore focus to the correct window when a non-focused window gets destroyed (+testcase) 2011-03-14 16:34:35 +01:00
Michael Stapelberg
f162e7efaa refactor font caching to just save the ID instead of mainting a cache with pattern→id-mapping 2011-03-10 23:20:17 +01:00
Simon Kampe
6e4a2b0b96 Fallback fonts for when requesting a erronous font with load_font (e.g. user have specified a font which does not exist in the config file). 2011-03-10 21:46:31 +01:00
Michael Stapelberg
86637d2e07 Bugfix: Make level up a noop during fullscreen mode (+testcase) (Thanks dothebart)
Fixes #341
2011-03-09 18:37:05 +01:00
Michael Stapelberg
74b90cd83f Bugfix: Send WM_DELETE / kill window the right way (Thanks dothebart)
Fixes #336
2011-03-09 18:08:26 +01:00
Michael Stapelberg
0a24057241 When leaving fullscreen, set focus to con which was opened during fullscreen (+testcase) (Thanks dothebart) 2011-03-07 00:06:27 +01:00
Michael Stapelberg
287d7f9527 Bugfix: Don’t focus new cons when there is a fullscreen con (Thanks dothebart)
Also, remove the focus_it parameter from tree_open_con, it makes more sense to
call con_focus outside of the function.
2011-03-06 23:26:02 +01:00
Michael Stapelberg
8ce5f2a21b Bugfix: Fix crash with transient dock clients caused by 7154fecbb 2011-03-06 22:02:02 +01:00
Michael Stapelberg
c17b3b7560 remove left-over xcb_aux_sync (debugging code) 2011-03-06 21:56:15 +01:00
Michael Stapelberg
b0b195318c rendering: bugfix: stack child windows of stacked/tabbed cons according to their focus
fixes focusing the wrong window after closing a con
2011-03-06 21:49:17 +01:00
Michael Stapelberg
4f26316aaa x: disable all events while re-stacking windows, prevents unwanted EnterNotifys 2011-03-06 21:48:49 +01:00
Michael Stapelberg
0689f6d8f1 Bugfix: use tree_render() instead of x_push_changes() to re-render and update the stack 2011-03-06 20:45:03 +01:00
Michael Stapelberg
7154fecbbf Implement the popup_during_fullscreen option, set default to leave_fullscreen
Fixes #333
2011-03-06 15:46:06 +01:00
Michael Stapelberg
51ff0f80a6 Obey minimum size when resizing floating windows
Fixes #285
2011-03-06 14:15:46 +01:00
Michael Stapelberg
1891a385ad Bugfix: also stop searching for resize cons when reaching a floatingcon (Thanks julien) 2011-03-06 13:35:07 +01:00
Michael Stapelberg
4514146ed9 Use the combined geometry of children when setting a split container to floating (+testcase) (Thanks mseed)
Fixes #332
2011-03-06 02:39:15 +01:00
Michael Stapelberg
88ab66e742 Bugfix: don’t focus dock clients with new click handling code (Thanks mseed) 2011-03-06 02:06:05 +01:00
Michael Stapelberg
24463718cc refactor the click handling completely
Also re-implements floating modifier on tiling cons.

Fixes: #288 and a lot of headache :)
2011-03-05 20:23:29 +01:00
Michael Stapelberg
0a2ee1d2aa Bugfix: Focus workspace after closing one of multiple dock clients (+testcase) (Thanks mseed) 2011-03-04 15:21:18 +01:00
Michael Stapelberg
f6a21994bf Re-implement focus follows mouse for outputs
That is, moving your mouse pointer to a different workspace which does not have
any windows on it yet will correctly update the focus.
2011-03-03 16:36:18 +01:00
Michael Stapelberg
caa1ac1a9f Use the original geometry for floating windows 2011-03-03 16:22:22 +01:00
Michael Stapelberg
b484b9ab32 Don’t create floating containers from whole workspaces when they are empty (Thanks mseed)
This fixes #327
2011-03-03 14:55:02 +01:00
Michael Stapelberg
a038d2674b Bugfix: 'level up' needs to stop at the workspace con + testcase (Thanks mseed) 2011-03-03 14:30:13 +01:00
Michael Stapelberg
62362a464d fix invalid memory access in xcb_reply_contains_atom (Thanks ys) 2011-03-03 14:14:35 +01:00
Michael Stapelberg
77640da9e7 Bugfix: don’t focus the dockarea when closing a dock client 2011-03-03 14:03:06 +01:00
Michael Stapelberg
e0647b7fc2 Bugfix: don’t focus dock clients (Thanks mseed, mist)
Fixes #321 and #323
2011-03-03 13:59:42 +01:00
Michael Stapelberg
33c2b4e582 Bugfix: Correctly fix the percent values for resizing when making a floating con tiling (Thanks mseed) (+testcase) 2011-02-28 23:59:56 +01:00
Michael Stapelberg
b595ff05c5 Fix regression: Don’t add floating nodes twice when restoring layout (+testcase) 2011-02-28 20:44:23 +01:00
Michael Stapelberg
d80105103c Bugfix: Re-attach floating cons to the right container (Thanks mseed)
This fixes #315.
2011-02-28 17:23:50 +01:00
Fernando Tarlá Cardoso Lemos
beaa85ceb9 Don't leak this descriptor (thanks dothebart).
Note that fclose closes the file descriptor frees the stream.
2011-02-28 16:49:10 +01:00
Fernando Tarlá Cardoso Lemos
269d360f30 Some assertions to make the static analyzer happy.
Assertions give hints to the static analyzer about code paths
where we make assumptions. Used the Clang Static Analyzer.
2011-02-28 16:49:03 +01:00
Fernando Tarlá Cardoso Lemos
f4ec0bceff Very minor issues found with statical analysis.
The Clang Static Analyzer uncovered those issues:

- The variable "changed" in handlers.c is written to, but it's
  never read since that specific write, so the write is not
  necessary.

- In util.c, "tail" may be NULL. In that case, we shouldn't pass
  it to strlen because strlen's behavior is not defined when s is
  NULL.

- In util.c, "write_index" is incremented twice. It's never used
  anymore after being incremented once, so the second increment is
  not necessary.
2011-02-28 16:48:22 +01:00
Michael Stapelberg
ffc71859a3 Implement support for top/bottom dock clients (according to _NET_WM_STRUT_PARTIAL or requested position) 2011-02-21 14:27:32 +01:00
Michael Stapelberg
b6f81fe43c Bugfix: restore the original width/height with X11 border when restarting (Thanks Merovius) 2011-02-21 03:13:27 +01:00
Michael Stapelberg
f34b045619 Fix dock client handling for inplace restarts 2011-02-21 03:01:55 +01:00
Michael Stapelberg
3dfe5c8a9a bugfix: fix clicking on dock clients (Thanks mseed) 2011-02-21 01:58:57 +01:00
Michael Stapelberg
9719b21243 refactor some places to use output_get_content() 2011-02-21 01:55:36 +01:00
Michael Stapelberg
a92b9dca73 Bugfix: fix disabling RandR outputs 2011-02-21 01:43:39 +01:00
Michael Stapelberg
35e79c87c8 Place dock clients on the output corresponding to their geometry request 2011-02-21 01:28:29 +01:00
Michael Stapelberg
a33d869885 Bugfix: Correctly open workspaces on additional outputs 2011-02-21 01:12:22 +01:00
Michael Stapelberg
6b272fea55 Bugfix: in get_workspaces, only consider the CT_CON, not the CT_DOCKAREAs (Thanks fernandotcl) 2011-02-21 00:54:29 +01:00
Michael Stapelberg
272ab840c7 Fix fullscreen mode with dock clients 2011-02-21 00:40:35 +01:00
Michael Stapelberg
9a0bc77baf bugfix: dock clients cannot be floating 2011-02-21 00:23:07 +01:00
Michael Stapelberg
7f89c71689 Implement dock mode, update testsuite
Currently, dock clients are only possible at the top.
2011-02-20 23:43:03 +01:00
Michael Stapelberg
c5ab16c00d same fix, but for moving (search above the current con when moving is not possible in this direction) 2011-02-19 20:11:47 +01:00
Michael Stapelberg
86500c5b88 Skip containers which got only one child when looking for the next/previous one to focus 2011-02-19 19:50:09 +01:00
Michael Stapelberg
6a6746b967 revert the replacement of a single h/v-split with its child container
Makes more problems than it creates. Will use a different fix suggested by
Merovius.
2011-02-19 18:30:26 +01:00
Michael Stapelberg
53d9072ca7 implement TAILQ_SWAP (only for consecutive elements, order relevant) and use it 2011-02-15 02:21:23 +01:00
Michael Stapelberg
834f4d7bc2 add missing function documentation 2011-02-14 23:17:30 +01:00
Michael Stapelberg
26a416e016 refactor tree_move() into src/move.c, change config (!), change testcase
Due to lots of cases which were added and added to tree_move(), the function
was not really easy to understand. For this refactoring, I wrote tree_move()
from scratch, thinking about (hopefully) all cases. The testsuite still passes.

The move command also has different parameters now. Instead of the hard to
understand 'before v' stuff, we use 'move [left|right|up|down]'.
2011-02-14 23:05:20 +01:00
Michael Stapelberg
28dd226259 refactor code for removing children from a con
Let’s see how this callback stuff will work out. If it doesn’t work out well,
we will remove it.
2011-02-14 18:08:36 +01:00
Michael Stapelberg
a5e075c154 Automatically close empty parent cons when making their last child floating (Thanks mseed)
This fixes #313
2011-02-14 16:43:41 +01:00
Michael Stapelberg
b800555161 Bugfix: check ->layout, not ->type for L_STACKED 2011-02-14 16:35:48 +01:00
Michael Stapelberg
305eac0e71 Bugfix: Correctly check asprintf() return value 2011-02-14 16:33:42 +01:00
Fernando Tarlá Cardoso Lemos
9cf48f17bb Fix libxcursor -> xcb cursors fallback. 2011-02-06 17:47:28 +01:00
Michael Stapelberg
07381ccb7b fix a rendering problem for split cons inside tabbed cons (Thanks julien)
This fixes #280.
2011-02-02 17:56:29 +01:00
Michael Stapelberg
4d0106b00f bugfix: don’t crash when moving windows out of a floating con (Thanks mseed) 2011-02-01 17:53:15 +01:00
Michael Stapelberg
d855bea215 Bugfix: Correctly focus con when moving to another workspace (Thanks mseed)
This fixes #310.
2011-02-01 17:17:50 +01:00
Michael Stapelberg
97ab44b3d8 disable workspace-level move operations (not yet implemented) (Thanks mseed) 2011-02-01 16:59:02 +01:00
Michael Stapelberg
9b01b1a7a6 Bugfix: When the container which was just closed is focused, we *do* need to focus another one (Thanks mseed) 2011-02-01 16:42:59 +01:00
Michael Stapelberg
dad7c0da00 Don’t create a split container if no other cons are on a workspace (Thanks mseed)
This fixes #306.
2011-02-01 16:08:47 +01:00
Michael Stapelberg
0238ce3c73 fix some compiler warnings 2011-02-01 15:43:59 +01:00
Fernando Tarlá Cardoso Lemos
8f4b9ddaa4 Fix the choice of the right containers for resizing.
Also fixes #311, which was an assertion failure that uncovered
this problem. Thanks mseed, Merovius.
2011-01-30 18:52:32 +01:00
Fernando Tarlá Cardoso Lemos
ac8fb2399d Don't mess with sizes when moving to other ws. 2011-01-29 15:19:41 +01:00
Fernando Tarlá Cardoso Lemos
8be40932f2 Fix assertion when moving out of a floating container. 2011-01-28 01:25:06 +01:00
Fernando Tarlá Cardoso Lemos
f465b3c11d Don't mess with the focus if we're not killing.
If we're not killing the mapped window and we're not killing the
parent window either in tree_close, then there's no reason to try
to change the focus. This fixes focus issues when moving a
container around another container (move up, left, bottom, right).
2011-01-28 01:25:03 +01:00
Michael Stapelberg
5b6ef3e665 make the sighandler handle SIGABRT 2011-01-28 00:47:49 +01:00
Michael Stapelberg
f395c141c8 bugfix: initialize root variable earlier 2011-01-28 00:42:55 +01:00
Michael Stapelberg
7b01bc5eb7 Bugfix: use the global root variable, don’t get the first one (Thanks quaec)
The case of an X11 server having multiple displays is handled correctly by the
code in src/mainx.c. However, due to some functions not being correctly
refactored and still getting the first screen (and also the first root window)
from the XCB connection, i3 was operating on the wrong root window.
2011-01-28 00:41:53 +01:00
Michael Stapelberg
79bbde8766 add a flag to disable the signalhandler 2011-01-28 00:31:26 +01:00
Fernando Tarlá Cardoso Lemos
b29af954f6 Don't mess with the percentages in tree_flatten. 2011-01-28 00:12:26 +01:00
Fernando Tarlá Cardoso Lemos
5f4123f842 Fix some resizing issues (thanks mseed). 2011-01-27 23:42:37 +01:00
Michael Stapelberg
676afce540 bugfix: correctly move cons out of floating cons when the workspace has no other tiling cons (Thanks mseed) 2011-01-27 16:51:41 +01:00
Michael Stapelberg
334e41daa4 bugfix: don’t assume a workspace always has tiling cons when focusing (Thanks mseed) 2011-01-27 16:51:16 +01:00
Michael Stapelberg
3e08ceaff9 bugfix: resizing problem when resizing vertically on the top border (Thanks julien) 2011-01-27 16:26:19 +01:00
Michael Stapelberg
3383437705 refactor some places to use con_descend_focused instead of duplicating code 2011-01-27 16:09:14 +01:00
Michael Stapelberg
f462a9a215 re-insert floating cons next to the currently focused con of the appropriate workspace 2011-01-27 16:04:17 +01:00
Michael Stapelberg
2f5d111936 when re-inserting a floating con, start with a more fair percent value 2011-01-27 15:53:14 +01:00
Michael Stapelberg
fe851b85f0 RandR: respect primary output 2011-01-27 15:40:02 +01:00
Fernando Tarlá Cardoso Lemos
432563d6e7 Fix the percentages when moving containers. 2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos
07eb20851f Fix floating mode according to the new requirements.
At all times any given non-leaf container should have the sum of
the percentages of its children == 1.0, otherwise we'll crash on
an assertion failure.
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos
568cafd4ec Fix the resize algorithm I broke earlier.
The reason it was broken was that it was ok for the sum of the
percentages to be something other than 1.0. Now this is no longer
the case, the sum of the percentages must always be 1.0 or an
assertion will fail when we render the containers.
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos
bc82fc7e9f This parameter is no longer needed.
The algorithm is now always the same, doesn't matter if we're
adding or removing a container to/from its parent.
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos
45227fba54 A new logic to calculate the percentages.
It's slower, but this way we make sure that the resulting
percentages *ALWAYS* sum up to 1.0 (or as close to that as we get
with double math).
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos
a93f4643ec Only fix the percentages after we insert the container.
This is what floating.c does and it allows us to unify the logic that
calculates those percentages.
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos
89917976c7 Crash when we get the percentages wrong.
Better to crash with an assertion than to get into an infinite loop.
We cold work around this, but there's a bug here and it's not a
rounding bug, so it's better not to conceal it.
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos
485555ef72 Round up as well if needed (thanks Merovius). 2011-01-23 13:21:33 +01:00
Michael Stapelberg
d9bfd8843f Bugfix: fix restoring the orientation (Thanks Merovius/fernandotcl) 2011-01-21 22:58:22 +01:00
Michael Stapelberg
ad95d5bb1f bugfix: you can’t unfullscreen workspaces (Thanks Merovius) 2011-01-21 22:09:04 +01:00
Michael Stapelberg
cbf4fcb9b5 Bugfix: Fix focus problems when switching workspaces by pushing the window stack before mapping 2011-01-21 21:49:56 +01:00
Michael Stapelberg
81ff1f976d Bugfix: Don’t send fake configure notify with not yet rendered rect for floating windows
This fixes a bug where opening the Xpdf find dialog when Xpdf is in fullscreen
mode would crash Xpdf due to a zero-width and zero-height ConfigureNotify rect.
2011-01-21 21:01:02 +01:00
Michael Stapelberg
1fecbb3e5a Bugfix: also close empty split containers when the clients are moved away (Thanks mseed)
Also update the testcase (which used only 'kill' before).
2011-01-20 10:09:43 +01:00
Michael Stapelberg
3fe4146e24 Bugfix: fix crash in tree_flatten (Thanks mseed) 2011-01-19 09:31:31 +01:00
Michael Stapelberg
0eb5eb34cd When in stacking mode with only one child, respect border styles 1pixel and none (Thanks Merovius) 2011-01-17 14:38:16 +01:00
Michael Stapelberg
ae4331113e re-implement xkb support for detecting keyboard layout changes 2011-01-17 14:27:49 +01:00
Michael Stapelberg
d6d4c962f4 Bugfix: Call mark_unmapped() on floating nodes aswell (Thanks mseed)
This fixes #292.
2011-01-17 14:11:56 +01:00
Axel Wagner
92a038dd25 Save environment-variable AFTER reading the configfile 2011-01-12 10:16:11 +01:00
Axel Wagner
4caf85aa0b Use I3SOCK-environment-variable 2011-01-12 10:15:48 +01:00
Michael Stapelberg
cd2ee61ee8 fix some memory leaks when user passes command line arguments twice (Thanks Tiago) 2011-01-12 10:12:24 +01:00
Michael Stapelberg
a6f0dcd250 Fix switching to a workspace on a different output 2011-01-08 12:03:03 +01:00
Michael Stapelberg
83f6e445a0 Bugfix: Don’t use ->old_parent for floating cons (Thanks eelvex)
Instead, we attach them to their workspace when toggling back to tiling. This
makes more sense; afterall, floating clients are always directly below a
CT_WORKSPACE container.
2011-01-08 00:44:03 +01:00
Michael Stapelberg
0ea15ed962 fix a problem with workspace switching when the focus got to the target workspace
This could explain some strange effects where workspaces would just stay blank.
We’ll see.
2011-01-08 00:38:10 +01:00
Michael Stapelberg
54b9549713 Bugfix: Look for cons to focus *starting* at the ws, not beneath the ws (Thanks mseed)
This should fix #286.
2011-01-08 00:10:49 +01:00
Michael Stapelberg
e4bb6d859e Bugfix: Correctly maintain focus when setting a workspace to floating 2011-01-08 00:10:30 +01:00
Michael Stapelberg
b660769fe0 Bugfix: Correctly move to other workspaces when a floating window is focused on the target ws (Thanks mseed) 2011-01-07 23:56:32 +01:00
Michael Stapelberg
115462f103 Implement tree flattening to automatically solve situations of redundant chains of split containers
This should fix the move problems. See comment of tree_flatten() for a little
example.
2011-01-07 22:21:41 +01:00
Michael Stapelberg
228b5c51ff change many LOG/printf messages to use DLOG 2011-01-07 20:58:58 +01:00
Michael Stapelberg
186d2c7bfa ipc: change 'orientation' to human readable string instead of raw integer value 2011-01-07 20:48:01 +01:00
Michael Stapelberg
5ccd7b01e7 Bugfix: fix fullscreen mode for floating windows 2011-01-07 02:50:35 +01:00
Michael Stapelberg
55b6d31e4a Bugfix: randr: Don’t close container if it was not initialized before 2011-01-06 14:35:04 +01:00
Michael Stapelberg
2312187439 RandR: use the next unused workspace instead of fixed counting 2011-01-05 00:26:23 +01:00
Michael Stapelberg
f73c02ce92 Also initialize output->con when using neither RandR nor Xinerama 2011-01-05 00:19:51 +01:00
Michael Stapelberg
5098e45f23 Re-Implement support for RandR changes 2011-01-05 00:16:10 +01:00
Michael Stapelberg
f54ce1ddda retab! randr.c 2011-01-04 22:51:42 +01:00
Michael Stapelberg
1fb9b7c431 Bugfix: Correctly change focus after closing floating containers (Thanks litemotiv!) 2011-01-04 22:40:05 +01:00
Michael Stapelberg
0416be18df fix memleak: free struct Window members 2011-01-04 22:39:45 +01:00
Michael Stapelberg
bf2c18cc33 fix memleak: free X state structure 2011-01-04 22:39:24 +01:00
Michael Stapelberg
545566e6ba use sstrdup() instead of strdup() 2011-01-04 22:39:13 +01:00
Michael Stapelberg
80ecd157f6 fix memleak: free con->name before overwriting it 2011-01-04 22:38:33 +01:00
Michael Stapelberg
bdbda20293 cmdparse: free strings 2011-01-04 22:37:50 +01:00
Michael Stapelberg
fa44383cc6 fix small memory leak (unused ->name) 2011-01-04 22:15:52 +01:00
Michael Stapelberg
9713419327 Bugfix: Also change focus when the killed container was focused (Thanks fernandotcl) 2011-01-02 18:08:45 +01:00
Axel Wagner
aa422c07c4 Add forgetful restart to sighandler 2010-12-31 19:36:35 +01:00
Axel Wagner
6ec468ba1e Retab sighandler.c 2010-12-31 19:36:32 +01:00
Axel Wagner
fb6d117c42 Port sighandler to tree-branch 2010-12-31 19:36:29 +01:00
Michael Stapelberg
2d05c3a37d Fix dragging floating containers / click handling 2010-12-31 01:38:17 +01:00
Michael Stapelberg
daf00a932f For floating mode on workspace level, create a container around the content (Thanks Merovius)
Like when setting a workspace to stacked, we need to create a new container
around the content and set *that* to floating.
2010-12-30 23:09:18 +01:00
Michael Stapelberg
50914e0483 Bugfix: Correctly change focus when closing a split-container
The problem was i3 leaving an invalid focus pointer valid (after killing the
container) because the container itself is not mapped (if it has no x11 window,
for example split containers).
2010-12-30 23:01:58 +01:00
Michael Stapelberg
f65e4f5b16 Bugfix: Don’t redistribute resize percentage values when closing floating (!) windows (Thanks Merovius) (+testcase) 2010-12-30 02:39:14 +01:00
Michael Stapelberg
307c59bde6 Bugfix: Fix closing windows in tabbed mode with border_style == 1pixel / none 2010-12-28 19:54:56 +01:00
Michael Stapelberg
028f7d2ca7 Fix resize handling on click on borders (did not correctly use orientation) 2010-12-28 16:26:42 +01:00
Michael Stapelberg
d184587959 Bugfix: Don’t focus next window if the window was not mapped at the moment (on a different ws) 2010-12-28 02:27:11 +01:00
Michael Stapelberg
dc3c633ee4 Bugfix: store and properly load workspace order when restarting 2010-12-27 22:28:59 +01:00
Fernando Tarlá Cardoso Lemos
c88c3e3ab2 Default to a file in /tmp for the restart state.
The file is now created in /tmp using the process PID and the
username of the user running i3. The restart state file is only
loaded when restarting (the --restart option is appended to the
command line prior to the restart). That means that renaming the
old state file with the ".old" extension is no longer needed.

This "--restart" switch is supposed to be only used by i3. The
"-L" switch can be used to load a layout (and not delete it
afterwards). We unlink the state file after we load it so that
we don't keep cruft in /tmp or try to restart from an old config
file if restart_state is set.
2010-12-27 13:33:03 +01:00
Fernando Tarlá Cardoso Lemos
68f906f278 util.c is the proper place for those functions. 2010-12-27 13:28:17 +01:00
Fernando Tarlá Cardoso Lemos
3669bcbd5f Remove some commented out code. 2010-12-27 13:27:14 +01:00
Fernando Tarlá Cardoso Lemos
a1dd74da5a Implement default border styles (thanks litemotiv). 2010-12-27 13:10:45 +01:00
Michael Stapelberg
41eb810531 Bugfix: Don’t update focus when container is not mapped 2010-12-11 17:07:20 +01:00
Michael Stapelberg
8d5421e6a4 Bugfix: Invalidate focused_id to correctly focus new windows with the same ID 2010-12-11 17:03:53 +01:00
Fernando Tarlá Cardoso Lemos
d046fa446d Fix possible rounding errors. 2010-11-30 13:59:34 +01:00
Michael Stapelberg
3412e12602 xinerama.c: fix indention 2010-11-29 22:35:46 +01:00
Michael Stapelberg
a05b185701 xcb.c: fix indenting 2010-11-29 22:35:07 +01:00
Michael Stapelberg
1a40641462 workspace.{c,h}: remove obsolete code 2010-11-29 22:32:19 +01:00
Michael Stapelberg
5625a2f17f log.c: fix indenting 2010-11-29 22:28:23 +01:00
Michael Stapelberg
38b231b848 handlers.c: remove obsolete code 2010-11-29 22:25:55 +01:00
Michael Stapelberg
529bdf833f floating.c: remove obsolete code, fix indenting 2010-11-29 22:23:49 +01:00
Fernando Tarlá Cardoso Lemos
371ec037b8 Fix click to focus. 2010-11-29 22:09:05 +01:00
Michael Stapelberg
b0e41cb0a2 Bugfix: Don’t attach floating clients to 'nodes' when restoring (Thanks EelVex) 2010-11-29 21:46:00 +01:00
Michael Stapelberg
0f0d01336b Bugfix: Correctly attach floating Cons to a different workspace, extend testcase 2010-11-29 20:39:56 +01:00
Michael Stapelberg
ad825913b4 Bugfix: Fix crash when moving a floating Con to a different workspace, add testcase (Thanks EelVex) 2010-11-29 20:20:44 +01:00
Michael Stapelberg
b0068de3d7 Bugfix: Transfer 'percent' factor when splitting, add testcase for resizing 2010-11-29 11:24:12 +01:00
Michael Stapelberg
a0cd3c2bab Include 'percent' in tree JSON, use C-locale when dumping, update testcase 2010-11-29 11:10:17 +01:00
Michael Stapelberg
ee45c92564 Implement resizing (still buggy)
Committing basic resizing functionality. We need testcases for the bugs and
then eliminate them.
2010-11-29 10:56:16 +01:00
Michael Stapelberg
a86d8ab329 use con_num_children() 2010-11-28 22:45:39 +01:00
Michael Stapelberg
85b7e60bac Bugfix: Use separate child_mapped instead of checking state->initial (makes t/02-fullscreen.t pass)
This is necessary for windows which are mapped later, for example when there is
a fullscreen window in front of everything.
2010-11-28 22:09:26 +01:00
Michael Stapelberg
17caaf1159 Correctly update the _NET_WM_STATE hint when *not* going into fullscreen (when already in fullscreen) 2010-11-28 22:07:54 +01:00
Michael Stapelberg
49308d5026 Bugfix: don’t update focus when moving mouse over stacked/tabbed decorations (Thanks fernandotcl) 2010-11-28 21:07:08 +01:00
Michael Stapelberg
61e3415ddc Bugfix: Add deco_height to bsr.y (to configure the floatingcon correctly). Fixes t/12-floating-resize.t 2010-11-28 20:43:35 +01:00
Michael Stapelberg
2dba7ec1ec Bugfix for the last commit (broke some moving situations), update testcase 2010-11-28 20:15:47 +01:00
Michael Stapelberg
780b0ddbbc look & feel: when moving, descend if the container in target direction is a split-container 2010-11-28 18:35:11 +01:00
Michael Stapelberg
4fcd2f6e7e Bugfix: Fix focus when moving Cons
When having two v-splits on a horizontal desktop:
----------------
|  t1   |  t3  |
|-------|------|
|  t2   |  t4  |
----------------
…focus is on t2, and you move it into the right v-split (move after h), the
focus was not properly updated. That is, inside the right v-split, focus was
correct, but the workspace focus was still pointing to the left v-split.
2010-11-28 18:05:53 +01:00
Michael Stapelberg
4f1260ffe8 Also store/load window_rect when restarting 2010-11-28 17:20:29 +01:00
Michael Stapelberg
871da48b56 Bugfix: Only set to_focus when focused is actually 1 2010-11-28 17:20:16 +01:00
Michael Stapelberg
511cbec49b look and feel: when moving a Con is not possible, split a workspace level
This allows you to open three cons, then move the last one to the right (like
in previous i3 releases).
2010-11-28 14:45:14 +01:00
Michael Stapelberg
81044a7104 Correctly restore focus when restarting (Thanks fernandotcl) 2010-11-28 14:27:44 +01:00
Michael Stapelberg
f7fff5cec1 update indenting of src/util.c 2010-11-28 14:14:34 +01:00
Michael Stapelberg
32cc7134aa re-enable ipc_shutdown() when restarting 2010-11-28 14:11:44 +01:00
Michael Stapelberg
ab8400fff9 Bugfix: Use setsid() to avoid SIGINT for child processes 2010-11-28 14:03:43 +01:00
Michael Stapelberg
02b786509b Upon ConfigureRequests, send a generated ConfigureNotify (Thanks fernandotcl)
This fixes problems with GVim in stacking mode for example.
2010-11-28 13:19:49 +01:00
Michael Stapelberg
d60e8c56dc little style fixes, add vim modeline 2010-11-28 13:02:29 +01:00
Fernando Tarlá Cardoso Lemos
69fc6449dc libXcursor support (themed cursors). 2010-11-28 13:01:45 +01:00
Michael Stapelberg
3bab222aa7 Bugfix: Re-attach windows in correct order when switching layout (Thanks fernandotcl) 2010-11-28 01:51:16 +01:00
Michael Stapelberg
d0de3f403d Bugfix: Restore focus after changing layout (Thanks fernandotcl) 2010-11-28 01:39:47 +01:00
Michael Stapelberg
2c157283ea fix third argument to strncat(), use smalloc(), use strlen(".old")+1 2010-11-28 01:22:10 +01:00
Fernando Tarlá Cardoso Lemos
0a17fe973c Make the restart path configurable. 2010-11-28 01:18:10 +01:00
Michael Stapelberg
622b51a1ea Fix switching containers by moving the mouse over their decorations when in the same container 2010-11-28 01:13:18 +01:00
Michael Stapelberg
6fe0e58a64 Bugfix: Also render decorations of nearby cons when getting an ExposeEvent (Thanks fernandotcl) 2010-11-28 00:52:24 +01:00
Michael Stapelberg
0cfebcb5b6 remove some debug messages 2010-11-27 18:05:45 +01:00
Michael Stapelberg
2c3e5dbc65 Bugfix: unmap windows in a separate step to avoid focus problems with fullscreen windows
This fixes an ugly bug with Adobe Flash in fullscreen mode, for example on
YouTube. See comments in the diff for some explanation.
2010-11-27 17:45:23 +01:00
Michael Stapelberg
d47a1edf22 Bugfix: configure windows before mapping, correctly store window_rect instead of rect 2010-11-27 16:44:45 +01:00
Michael Stapelberg
3f3fa08b15 more debug for ClientMessages 2010-11-27 16:44:32 +01:00
Michael Stapelberg
6431d3d187 fix indention 2010-11-27 16:44:20 +01:00
Fernando Tarlá Cardoso Lemos
1d52bf179b Run the autostart commands. 2010-11-26 23:30:27 +01:00
Fernando Tarlá Cardoso Lemos
2faac65237 Always add to the focus list, fixes crash. 2010-11-26 23:26:53 +01:00
Michael Stapelberg
77d0d42ed2 look and feel: create split container when switching workspace layout
Quote from the source:
  When the container type is CT_WORKSPACE, the user wants to change the
  whole workspace into stacked/tabbed mode. To do this and still allow
  intuitive operations (like level-up and then opening a new window), we
  need to create a new split container. */
2010-11-26 23:08:12 +01:00
Michael Stapelberg
c3981e12d3 Bugfix: use bufcopy instead of buf (Thanks fernando) 2010-11-26 22:38:05 +01:00
Michael Stapelberg
65bd71b213 remove some obsolete code 2010-11-26 22:15:09 +01:00
Michael Stapelberg
b2db9ac797 Bugfix: always reset state->initial to false, not only for different stacking order
As initial may be set to true again after initializing the window, we need to
ensure that it is properly cleared. Otherwise, this leads to ghost windows when
unmapping (such as the Xpdf about dialog) due to i3 issuing MapWindow after an
Unmap happened but before i3 actually received/handled the UnmapNotify.
2010-11-26 20:15:08 +01:00
Michael Stapelberg
97bc8f4b86 Bugfix: Don’t draw decorations of CT_FLOATING_CONs 2010-11-26 19:24:14 +01:00
Michael Stapelberg
db3002fce0 Implement click on stack/tab decoration to focus 2010-11-26 18:57:15 +01:00
Michael Stapelberg
df7788386d re-indent click function 2010-11-26 18:48:27 +01:00
Michael Stapelberg
962fe075b9 Bugfix: Upon ExposEvents, redraw decoration also for the window itself
In the meantime, windows can have decorations (borders) on their own frame, too.
2010-11-26 18:37:34 +01:00
Michael Stapelberg
e744b48b30 Bugfix: When handling an EnterNotify for a child window, access the correct con->layout 2010-11-26 18:18:40 +01:00
Michael Stapelberg
4d7c24b92c Bugfix: Correctly count variables when parsing the configfile (Thanks dbp) 2010-11-26 11:25:51 +01:00
Michael Stapelberg
1de97a1f1f correctly sort numbered workspaces (+testcase)
Numbered workspaces (workspaces with a name containing only digits) will be
inserted in the correct order now. Named workspaces are always sorted after
numbered workspaces and in the order of creation.
2010-11-21 23:35:49 +01:00
Michael Stapelberg
fab8b84db7 ipc: fix current_workspace 2010-11-21 22:12:34 +01:00
Michael Stapelberg
a71d782da9 fix indention of src/ipc.c 2010-11-21 22:03:55 +01:00
Fernando Tarlá Cardoso Lemos
ae22fe065f Send change:empty too. 2010-11-21 21:36:33 +01:00
Fernando Tarlá Cardoso Lemos
e2517bd48c Unlink the resolved path. 2010-11-21 21:36:30 +01:00
Fernando Tarlá Cardoso Lemos
767dcea7ba Send the workspace focus change event. 2010-11-21 21:36:28 +01:00
Fernando Tarlá Cardoso Lemos
5d830e7a27 Ported over some message types from -next. 2010-11-21 21:36:19 +01:00
Michael Stapelberg
2d280469af Bugfix: Don’t draw borders for fullscreen windows 2010-11-21 17:00:10 +01:00
Michael Stapelberg
09b5b17830 Bugfix: Don’t attach tiling containers to floating containers
This bug happened when there were only floating containers on a workspace and a
new tiling window was to be opened.
2010-11-21 16:49:59 +01:00
Michael Stapelberg
f53fafe100 ipc: s/floating-nodes/floating_nodes for consistency 2010-11-21 16:34:45 +01:00
Michael Stapelberg
39fa1d724a bugfix: don’t treat workspace as empty if they only have floating windows (+testcase) 2010-11-20 20:16:15 +01:00
Michael Stapelberg
db651679c5 Bugfix: Properly ignore UnmapNotify events (especially for floating windows)
This fixes the bug which caused floating windows to be visible even when
switching to a different workspace.

Instead of ignoring a specific sequence, we now set an ignore_unmap counter for
each container. (So, should containers be closed too early or stay open even if
they should be closed, we probably need to have a closer look at the counter.
At the moment, it is increased by one on reparenting and unmapping (for
workspace changes) and decremented by one on each UnmapNotify event).

This system is better because a sequence does not describe a single unmap or
reparent request but a request to X11 on the network layer -- which can contain
multiple requests.
2010-11-20 19:11:43 +01:00
Michael Stapelberg
131a2f8765 debugging: implement a NOP command which just spits out its argument
You can use this in testcases to mark specific sections:
  $i3->command('nop before trying to crash')->recv;
leads to the following output in the i3 logfile:
  -------------------------------------------------
    NOP: before trying to crash
  -------------------------------------------------
2010-11-20 18:40:25 +01:00
Michael Stapelberg
576de246d8 Bugfix: when no windows to focus, return the workspace instead of NULL 2010-11-20 18:38:24 +01:00
Fernando Tarlá Cardoso Lemos
5ebb3b4832 Port the IPC socket creation code from -next. 2010-11-15 14:00:48 +01:00