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
Fernando Tarlá Cardoso Lemos
bfa12a5819
Port the path resolution and config loading code from -next.
2010-11-15 14:00:46 +01:00
Michael Stapelberg
c0c7d04264
When in tabbed mode, nail the orientation to horizontal
...
This is intuitive for the user as he can use the left/right keys to switch.
Also, we need to nail the orientation because you can be in either vertical or
horizontal mode when you enter the tabbed layout (like with the stacking
layout).
2010-11-15 13:55:10 +01:00
Fernando Tarlá Cardoso Lemos
8048cb2e12
Render the tabbed mode correctly.
2010-11-15 12:27:16 +01:00
Fernando Tarlá Cardoso Lemos
ea1e9b20be
Get rid of the remaining hardcoded height.
2010-11-15 12:25:06 +01:00
Fernando Tarlá Cardoso Lemos
69f29b2b8e
Use the configured font to draw the decorations.
2010-11-15 12:24:16 +01:00
Michael Stapelberg
cbd53e8a7f
bugfix: check if the client leader is a managed window (Thanks fernandotcl)
2010-11-14 23:55:53 +01:00
Michael Stapelberg
76c07900c2
take into account x11 border_width settings (fixes uxterm border issue)
2010-11-14 23:44:13 +01:00
Michael Stapelberg
39b378b0a4
don’t allow useless splits, change orientation of existing split container instead
2010-11-14 23:18:39 +01:00
Michael Stapelberg
e8b5a802e2
Bugfix: only set clients to floating which have a leader that is not their own window (Thanks fernandotcl)
2010-11-14 22:49:05 +01:00
Michael Stapelberg
a27af52706
fix floating focus behaviour, extend testcase
2010-11-14 22:35:44 +01:00
Michael Stapelberg
d401703135
Bugfix: use rectangles instead of a polygon to avoid strange rendering errors
...
With the polygon, when using pidgin, having the buddy list in the middle of the
screen, 200 px width, full screen high, then opening the manage accounts
window, the decorations of the buddy list were visible on the accounts window.
2010-11-14 21:17:27 +01:00
Michael Stapelberg
33eb00d6ae
automatically set windows with client_leader to floating
2010-11-14 20:15:51 +01:00
Michael Stapelberg
055bd18142
Bugfix: after the first UnmapNotify, unignore the event
2010-11-14 20:15:12 +01:00
Michael Stapelberg
d760a1c7b2
Bugfix: don’t kill parent when currently in tree_close() for a child of this parent
2010-11-14 20:14:09 +01:00
Michael Stapelberg
f0efb3737e
don’t remove floating container twice (it’s already removed in con_detach)
2010-11-14 20:11:46 +01:00
Michael Stapelberg
5d7344af8a
resize/unmap container x11 windows on demand (makes background images visible again)
2010-11-14 18:52:40 +01:00
Michael Stapelberg
945632ddcb
Implement setting the WM_NAME of i3 container windows for debugging
2010-11-14 16:41:46 +01:00
Michael Stapelberg
e85bb09017
set withdrawn/normal state when unmapping/mapping (for xprop/java)
2010-11-14 13:53:47 +01:00
Michael Stapelberg
a415d56048
parser: return a proper JSON reply on parse errors
2010-11-14 01:45:05 +01:00
Michael Stapelberg
7c6f2dbfc6
Rendering fixes for stacking mode
2010-11-13 22:39:59 +01:00
Michael Stapelberg
4cd6dd0303
port fernando’s custom background color patch
2010-11-13 20:07:49 +01:00
Fernando Tarlá Cardoso Lemos
53b98fdc7e
Paint the window decorations using the theme.
2010-11-13 19:17:08 +01:00
Michael Stapelberg
dc10c67060
Bugfix: Close containers which are empty due to a move (Thanks fernando)
2010-11-13 14:55:11 +01:00
Michael Stapelberg
432073dbe5
implement support for WM_TRANSIENT_FOR, expand testcase
2010-11-13 01:19:21 +01:00
Michael Stapelberg
ad9be5402a
Implement support for WM_CLIENT_LEADER
2010-11-12 23:46:03 +01:00
Baptiste Daroussin
1bb6906c56
Fix build on freebsd (uint32_t unknown if stdint.h not
...
included)
2010-11-12 23:11:36 +01:00
Michael Stapelberg
8f7bd538d8
implement configure requests, adapt testcase
...
testcase does not pass 100% due to clients not being reparented correctly yet.
2010-11-12 21:41:10 +01:00
Michael Stapelberg
0723876429
only re-position floating clients mapped to (0, 0), add pixels for decoration
2010-11-12 20:55:43 +01:00
Michael Stapelberg
57e602a97c
respect position in geometry of floating windows
2010-11-12 20:55:26 +01:00
Michael Stapelberg
e07fee4472
parser: don’t exit(1) on invalid command, use better error message
2010-11-12 20:22:55 +01:00
Michael Stapelberg
0e264cb5c4
implement different border styles
...
Wow, that actually was easy :).
2010-11-12 19:37:43 +01:00
Michael Stapelberg
66dc8883fd
make borders around every container configurable for debugging
2010-11-12 19:37:32 +01:00
Michael Stapelberg
d248f35267
include border style in ipc tree dump
2010-11-12 19:16:38 +01:00
Michael Stapelberg
ea4e3e7682
parser: bugfix: initialize match when parsing new command
2010-11-12 19:07:48 +01:00
Michael Stapelberg
6eb7f2a01d
lexer/parser: implement 'border' command
2010-11-12 18:41:54 +01:00
Michael Stapelberg
c6c084faa5
don’t close workspaces which are still visible (multi-monitor)
2010-11-12 17:34:13 +01:00
Michael Stapelberg
c1d574f84e
enumerate workspaces when initializing outputs
2010-11-12 17:33:59 +01:00
Michael Stapelberg
5c2758af26
Implement support for size hints (including test case)
2010-10-11 21:32:29 +02:00
Michael Stapelberg
0925e8b7dc
Implement sticky windows
...
The implementation works like this:
Containers can have a 'sticky-group' attribute. Imagine two different
containers (on two different workspaces) which have the same sticky-group.
Now you open a window in the first container. When you switch to the
other workspace, the window will be re-assigned to the other container.
An obvious problem which is not covered with the code at the moment is
having two containers with the same sticky-group visible at the same time.
2010-09-01 18:11:01 +02:00
Michael Stapelberg
4d12e18571
remove proof-of-concept code in main.c
2010-08-21 18:36:51 +02:00
Lourens Rozema
8159ffaa06
Bugfix for the kill command (used a.o. in test 18). Call to match_init is to be used i.o. a simple memset() to zero. Otherwise the boolean dock field doesn't get initalized to -1.
2010-08-21 18:28:37 +02:00
Lourens Rozema
ebe878d24c
Indent clean up.
2010-08-21 18:27:12 +02:00
Michael Stapelberg
160c12ed9a
recognize dock windows (and support matching them)
2010-08-15 12:18:27 +02:00
Michael Stapelberg
d066341261
ipc/parser: commands can now return custom JSON replies
...
Also, finally add include/cmdparse.h
2010-07-17 15:15:37 +02:00
Michael Stapelberg
189635a5dc
Bugfix: Even when not going one level up, we need to travel down the whole focus stack
2010-07-17 15:08:22 +02:00
Michael Stapelberg
099df7f438
Bugfix: Keep focus on the current workspace when moving containers, add testcase
2010-07-17 13:27:34 +02:00
Michael Stapelberg
49add4f3e4
Bugfix: Don’t go further when switching focus on a CT_WORKSPACE
2010-07-17 01:56:16 +02:00
Michael Stapelberg
69e5c0f6ce
Treat stacking containers as if they are in vertical orientation, add testcase
2010-07-17 01:27:47 +02:00
Michael Stapelberg
09c6b587d3
close empty parent containers, add testcase
2010-07-17 00:54:47 +02:00
Michael Stapelberg
33572b8c4b
s/con->parent/parent to make it more readable
...
(and necessary for the next commit)
2010-07-17 00:54:03 +02:00
Michael Stapelberg
7415f14448
Add more documentation to functions/header files
2010-07-13 11:35:05 +02:00
Michael Stapelberg
60bdf87862
Bugfix: Push all following window stacking orders to X11 when the order of a single pair changed
2010-07-11 23:41:02 +02:00
Michael Stapelberg
1459ae6bf2
Bugfix: raise fullscreen containers before rendering their content
2010-07-11 23:40:50 +02:00
Michael Stapelberg
a79d33fc7f
Remove some dead code (to be re-implemented), rename nc.c to main.c
2010-07-11 22:12:25 +02:00
Michael Stapelberg
61f9a79347
use decimal coordinates in debug message
2010-07-11 22:01:25 +02:00
Michael Stapelberg
1a0fcea48e
ipc: add member 'focused' to every container
2010-07-04 22:17:18 +02:00
Michael Stapelberg
66480d3725
Bugfix: Don’t try to focus the container itself when closing
2010-07-04 22:16:54 +02:00
Michael Stapelberg
b186446fb7
Bugfix: Correctly restore focus after close (and add testcase)
2010-07-04 19:50:44 +02:00
Michael Stapelberg
49ed703299
Bugfix: Insert new containers at the right position (and add testcase)
2010-07-03 17:42:36 +02:00
Michael Stapelberg
64306e813e
Bugfix: Ignore sequences of mapping/unmapping windows to avoid getting enter_notifies
2010-07-02 20:33:26 +02:00
Michael Stapelberg
5d0f17d53d
bugfix: correctly focus follow up window when closing floating windows
2010-06-30 22:37:57 +02:00
Michael Stapelberg
6d152103f5
parser: implement move
2010-06-30 22:23:32 +02:00
Michael Stapelberg
565ef78b12
parser: implement resize command
2010-06-30 19:47:23 +02:00
Michael Stapelberg
bd9e5c0bc4
parser: implement explicit "mode floating"/"mode tiling"
2010-06-30 15:54:34 +02:00
Michael Stapelberg
2da4173144
parser: implement "reload"
2010-06-30 15:31:29 +02:00
Michael Stapelberg
ea30fdc327
parser: call tree_close_con() instead of tree_close() when run interactively
2010-06-30 15:27:18 +02:00
Michael Stapelberg
4eace6f886
Go down the tree when moving windows, add testcase for moving
2010-06-29 19:05:31 +02:00
Michael Stapelberg
948378fa55
floating: correctly kill floating containers when closing
2010-06-28 22:37:35 +02:00
Michael Stapelberg
2f4210d3cf
floating: use con_fix_percent
2010-06-28 22:36:08 +02:00
Michael Stapelberg
574e6b51d1
re-implement click to focus
2010-06-28 22:26:23 +02:00
Michael Stapelberg
c33d352fd2
floating: re-implement floating_modifier + left/right mouse button to drag/resize
2010-06-28 22:23:32 +02:00
Michael Stapelberg
84e78c6dba
automatically set dialog windows to floating
2010-06-28 21:40:36 +02:00
Michael Stapelberg
69e1975e29
split up toggle_floating_mode into floating_enable and floating_disable
2010-06-28 21:40:17 +02:00
Michael Stapelberg
6897e15e72
Implement mark/goto, modify testcase
2010-06-02 23:32:05 +02:00
Michael Stapelberg
780e773a6a
split containers do not directly accepts windows (they only have children)
2010-06-02 22:35:37 +02:00
Michael Stapelberg
5bff638ea0
bugfix: the layout command needs to change the layout of the parent container
2010-06-02 18:58:52 +02:00
Michael Stapelberg
32be3af109
Re-implement support for the urgency hint, extend t/13-urgent.t
...
The actual rendering will follow
2010-06-02 17:55:10 +02:00
Michael Stapelberg
7c3e88ad93
parser: implement matching on the window id
2010-06-02 17:20:32 +02:00
Michael Stapelberg
14a312c152
more debug output
2010-06-02 17:04:26 +02:00
Michael Stapelberg
1c5adc6c35
Don’t ignore sequence in UnmapNotify, there might be multiple windows in one sequence
...
This would lead to i3 thinking that a new window was already managed if it
has the same X-ID as the old window. Instead, we need to fix the EnterNotify
problem in a different way.
2010-06-02 17:03:26 +02:00
Michael Stapelberg
a7d2c5942a
Clear event mask while reparenting
...
This way, we can avoid to ignore UnmapNotify events generated by reparenting.
It is generally considerable to have as little ignored events as possible
due to side-effects.
2010-06-02 17:02:10 +02:00
Michael Stapelberg
cea8f91e18
parser: implement 'layout'
2010-06-01 23:20:57 +02:00
Michael Stapelberg
b467242d69
Make splitting a container which was already split a noop
2010-06-01 22:45:18 +02:00
Michael Stapelberg
0ce62a755e
"Re-parent" floating clients whose old_parent is being closed (makes t/27 pass)
2010-06-01 21:36:02 +02:00
Michael Stapelberg
712605e69f
ipc: include floating-nodes in tree reply
2010-06-01 20:50:23 +02:00
Michael Stapelberg
a25dc3e988
Implement focus command (and extend t/21-next-prev.t to test it)
2010-06-01 18:49:43 +02:00
Michael Stapelberg
67a6bd5589
bugfix: allocate one more zero-byte to definitely get a zero-terminated string
2010-06-01 18:46:14 +02:00
Michael Stapelberg
935b8e05ff
Implement correct removal of floating containers
2010-05-31 23:16:20 +02:00
Michael Stapelberg
b14fa457e7
fix: to always abort we need to assert(false)
2010-05-31 23:08:16 +02:00
Michael Stapelberg
143622d2d7
Reposition floating windows while dragging
2010-05-31 23:01:08 +02:00
Michael Stapelberg
246d4627be
re-enable sending fake configure notifies
2010-05-31 23:00:36 +02:00
Michael Stapelberg
71e0e49c0e
Implement mode toggle
2010-05-31 22:48:28 +02:00
Michael Stapelberg
e67c712f31
cleanup: introduce CT_WORKSPACE as type to avoid having to check parent->type
2010-05-31 00:11:11 +02:00
Michael Stapelberg
a45dc6b3ad
Update _NET_WM_STATE after fullscreen state changes
2010-05-26 23:21:37 +02:00
Michael Stapelberg
be357a1aaa
Set up _NET_WM_SUPPORTED and window manager name again
...
This fixes MPlayer fullscreen mode
2010-05-15 00:28:10 +02:00
Michael Stapelberg
2d52ecf071
Add parameter to reparent windows instead of killing them when closing a container
...
Necessary because when windows are unmapped, they are not necessary to
be killed (an application can unmap it temporarily).
2010-05-15 00:16:59 +02:00
Michael Stapelberg
def41582d1
re-render the three after calling parse_cmd
2010-05-14 23:41:17 +02:00
Michael Stapelberg
8c5d824fa8
Ignore UnmapNotify events generated by reparenting
2010-05-14 23:37:56 +02:00
Michael Stapelberg
7adf921bc3
use the new parser for handling keybindings
2010-05-11 23:04:47 +02:00
Michael Stapelberg
5eae706427
grammar: s/layout_mode/window_mode
2010-05-11 23:04:21 +02:00
Michael Stapelberg
c75a6732bf
Implement 'restore' in new parser
2010-05-11 23:00:31 +02:00
Michael Stapelberg
a0e33c1d68
implement 'move' command in the new parser
2010-05-11 22:46:49 +02:00
Michael Stapelberg
98dbe63e35
Implement exec, exit, level, restart (without testcases for now)
2010-05-10 10:12:35 +02:00
Michael Stapelberg
6a1c34d2c5
Implement 'split'
2010-05-10 09:33:10 +02:00
Michael Stapelberg
145ebc7584
Implement 'prev', extend testcase
2010-05-10 09:08:31 +02:00
Michael Stapelberg
d8307f4b4a
implement 'next' in the new command parser (testcase unfinished)
2010-05-10 00:06:24 +02:00
Michael Stapelberg
f10a3d9b75
bugfix: really return focus list in IPC tree dump (instead of nodes list)
2010-05-10 00:00:43 +02:00
Michael Stapelberg
09523f36f5
also re-render the tree for commands using the new parser
2010-05-09 23:24:03 +02:00
Michael Stapelberg
65e9036837
bugfix: don’t clean up workspace when switching to the same workspace
2010-05-09 23:20:49 +02:00
Michael Stapelberg
0ea85c1b9d
implement 'fullscreen' command
2010-04-17 19:29:44 +02:00
Michael Stapelberg
b0f47b25a0
throw out some old code from manage.c, cleanups
2010-04-17 18:26:46 +02:00
Michael Stapelberg
7f3a77ac6a
loglevel bitmasks needs to be larger because we got more than 32 files
2010-04-17 17:46:11 +02:00
Michael Stapelberg
b93413ca49
remove old fullscreen code
2010-04-17 17:43:50 +02:00
Michael Stapelberg
6bf55dc356
implement con_toggle_fullscreen
2010-04-17 17:40:41 +02:00
Michael Stapelberg
c4d87e2f81
handle destroynotify events
2010-04-17 17:27:53 +02:00
Michael Stapelberg
d973f30fc2
push X11 changes after a window is mapped
2010-04-17 16:43:34 +02:00
Michael Stapelberg
68542f3c22
When assigning children to containers, reset their x window state
2010-04-17 16:41:20 +02:00
Michael Stapelberg
53dcebfd8a
put container in fullscreen mode if the fullscreen state is set when mapping
2010-04-17 14:21:34 +02:00
Michael Stapelberg
c56867792a
handle client messages (fullscreen window state)
2010-04-17 13:54:45 +02:00
Michael Stapelberg
22f38ebde4
clear current_match when dropping state
2010-04-17 12:57:06 +02:00
Michael Stapelberg
77ec4219c9
make floating an enum (we need three states, not only two)
2010-04-16 22:57:21 +02:00
Michael Stapelberg
8d05039b04
move match_* to match.c
2010-04-16 22:51:25 +02:00
Michael Stapelberg
bb220b27d7
check for empty matches
2010-04-16 22:50:20 +02:00
Michael Stapelberg
e0b7ae872e
move con_focus to con.c
2010-04-16 21:04:36 +02:00
Michael Stapelberg
4796798074
better debug messages
2010-04-16 21:02:34 +02:00
Michael Stapelberg
138a790cd0
clean up old workspace when switching (makes test 2 of t/16-*.t pass)
2010-04-16 20:59:21 +02:00
Michael Stapelberg
2534f21940
ignore sequence of unmapnotify events (generates enternotify events)
2010-04-16 20:56:49 +02:00
Michael Stapelberg
93600ce0fd
implement con_id for matching containers, extend testcase
2010-04-16 15:30:07 +02:00
Michael Stapelberg
769501420d
add first version of a new flex/bison based command parser
2010-04-14 20:26:56 +02:00
Michael Stapelberg
24725cd94a
re-add fullscreen mode
2010-04-13 20:51:43 +02:00
Michael Stapelberg
8959c5005f
cleanups
2010-04-13 19:33:40 +02:00
Michael Stapelberg
8e5a831e27
re-add focus follows mouse handling
2010-04-13 18:43:37 +02:00
Michael Stapelberg
eec762ea8f
more reformatting/cleanups
2010-04-13 17:52:23 +02:00
Michael Stapelberg
dd7acf73e9
re-add support for legacy window titles (WM_NAME)
2010-04-13 17:46:54 +02:00
Michael Stapelberg
fd8735a6fd
correctly update/display window title/class
2010-04-13 17:22:34 +02:00
Michael Stapelberg
bcfb0d2505
more reformatting
2010-04-13 16:48:42 +02:00
Michael Stapelberg
4206db2839
workspace.c: update header, reformat
2010-04-13 16:43:08 +02:00
Michael Stapelberg
6aa6fa0af0
correctly focus workspaces
2010-04-13 16:41:23 +02:00
Michael Stapelberg
c145f7e529
first step of the big refactoring ("tree" branch).
...
From here on, we can track changes. It made no sense to put the
development up to this point into git.
2010-04-13 13:17:39 +02:00
Michael Stapelberg
41b6631f68
Bugfix: null-terminate buffer
2010-03-26 03:04:54 +01:00
Michael Stapelberg
a542515f9e
Fix memory leaks
2010-03-26 01:52:39 +01:00
Michael Stapelberg
7bd4ea3699
randr: Don’t enable outputs with mode 0x0
...
Just a sanity check for some possibly broken drivers.
2010-03-26 01:52:08 +01:00
Michael Stapelberg
a151fd95a8
remove newlines
2010-03-26 00:28:30 +01:00
Michael Stapelberg
6fd56757f0
Bugfix: Assign all workspace to new outputs as new outputs get available (Thanks badboy)
2010-03-26 00:13:28 +01:00
Michael Stapelberg
1b8299002e
Bugfix: Translate keysyms to keycodes before entering mode (Thanks fallen)
2010-03-25 21:18:46 +01:00
Michael Stapelberg
6699d54640
Fix rendering of workspace names after "reload" (Thanks fallen)
2010-03-25 19:08:37 +01:00
Michael Stapelberg
469f22caeb
Bugfix: Correctly switch workspace when using the "jump" command (Thanks fallen)
2010-03-25 18:07:40 +01:00
Michael Stapelberg
2c42c0c760
Bugfix: Correctly check bitmask for floating_modifier
2010-03-25 02:53:53 +01:00
Michael Stapelberg
46e7cf5fe1
Handle destroy notify events like unmap notify events
...
This helps for windows which are immediately destroyed instead of
unmapped, like when starting i3status | ./foobar | dzen2 -dock
and foobar does not exist (i3status and dzen2 will get a SIGPIPE).
2010-03-24 16:52:16 +01:00
Michael Stapelberg
e90e80c87d
Bugfix: fix state of keypresses in sighandler (like in i3-input)
2010-03-24 16:10:47 +01:00
Michael Stapelberg
7eea1067f8
Bugfix: correctly translate coordinates for floating windows when outputs change
2010-03-24 16:09:43 +01:00
Michael Stapelberg
0f7ac09c7b
Bugfix: Don’t unmap windows when current workspace gets reassigned
...
Steps to reproduce were:
1) xrandr --output VGA1 --auto --left-of LVDS1
2) open a terminal on VGA1
3) xrandr --output VGA1 --off
2010-03-24 16:06:21 +01:00
Michael Stapelberg
56139f3656
Bugfix: only restore focus if the workspace is focused, not if it is visible
2010-03-23 14:43:35 +01:00
Michael Stapelberg
42b638eac0
Bugfix: Don’t enter BIND_A2WS_COND state too early (Thanks fallen)
2010-03-22 15:12:37 +01:00
Michael Stapelberg
77efb29d9f
ipc: send a workspace event when the urgency flag changes
2010-03-20 03:09:42 +01:00
Michael Stapelberg
35a791f7e6
ipc: also send workspace event when initializing a workspace for an output
2010-03-20 02:56:23 +01:00
Michael Stapelberg
46bd9ac58a
Bugfix: correctly re-assign dock clients when output goes inactive
2010-03-20 02:52:06 +01:00
Michael Stapelberg
aec40126b4
ipc: implement output event
2010-03-19 22:40:43 +01:00
Michael Stapelberg
4ce0d6f014
ipc: implement GET_OUTPUTS
2010-03-19 22:24:52 +01:00
Michael Stapelberg
a607eae53a
ipc: include the urgent flag in the workspaces reply
2010-03-19 22:01:21 +01:00
Michael Stapelberg
fdcbec248a
Start dock clients on the output they request to be started on according to their geometry
...
Use dzen2’s -xs option to use this, or specify the coordinates using
-x manually.
2010-03-19 21:44:36 +01:00
Michael Stapelberg
3c8c426011
Disable RandR if no outputs are found (Thanks fallen)
2010-03-19 18:51:19 +01:00
Michael Stapelberg
ee76b2ebf6
Bugfix: When disabling RandR/Xinerama, give a name to the pseudo-output (Thanks fallen)
2010-03-19 18:51:01 +01:00
Michael Stapelberg
af00df9321
Use DLOG for debug messages instead of printf (Thanks kruM)
2010-03-19 18:48:36 +01:00
Michael Stapelberg
0bb1b718d1
Fix compilation with the old xcb keysyms api
2010-03-19 16:02:33 +01:00
Michael Stapelberg
91b6c69eae
little style fix for the last commit
2010-03-19 01:43:11 +01:00
Helgi Kristvin Sigurbjarnarson
62c4532329
Bugfix: Take window out of fullscreen before entering floating mode.
2010-03-19 01:24:33 +01:00
Michael Stapelberg
1680071555
randr: use effective CRTC width/height, not its mode (Thanks moemoe)
...
This fixes setups which use panning and cloning.
2010-03-17 15:56:26 +01:00
Michael Stapelberg
a604af6340
make pointer follow the focus when moving to a different screen also for floating windows
2010-03-17 03:18:13 +01:00
Michael Stapelberg
b47d0a8932
Bugfix: configure floating windows above tiling windows when moving them to another workspaces (Thanks Sasha)
2010-03-17 00:36:08 +01:00
Michael Stapelberg
f7a1a9fb20
ipc: correctly shutdown IPC sockets when exiting/restarting
2010-03-16 02:44:47 +01:00
Michael Stapelberg
f9e6f8ba4b
Bugfix: Correctly stack windows when new windows are opened while in fullscreen mode
...
This fixes ticket #195 .
2010-03-15 22:17:00 +01:00
Michael Stapelberg
c738b2e454
Don’t use SYNC key bindings for Mode_switch but re-grab keys
...
Before this commit, i3 used key bindings in SYNC mode for bindings
like Mode_switch + <a> and replayed the key if the current state
did not include Mode_switch. This had some problems:
1) The WM needed to acknowledge much more key presses than you
actually had bindings for, thus making the system a bit laggy
sometimes.
2) Users of layouts who constantly type in the third level (like
russian layouts) did not get their cyrillic symbols correctly
(they were not replayed right), neither did the keybindings
work in both modes.
So, the current implementation uses the following approach: XKB
provides an event which contains the current state (including
the current level). i3 signs up for this event and upon receival,
it re-maps the bindings using Mode_switch (enables them when the
level goes to the third level and disables them as soon as the
level goes back to normal). This fixes both problems.
2010-03-14 22:40:58 +01:00
Michael Stapelberg
2df1fb8ac8
Implement disabling the internal workspace bar
2010-03-14 12:59:45 +01:00
Michael Stapelberg
2df374ca4c
Add configuration option to turn off workspace bar
2010-03-13 19:15:28 +01:00
Michael Stapelberg
b6088b803e
ipc: correctly set "focused" for workspaces
...
Didn’t work on empty workspaces before
2010-03-13 16:27:03 +01:00
Axel Wagner
9cb35383a8
Implement proportional floating-resize.
2010-03-13 13:22:39 +01:00
Michael Stapelberg
3db4890683
ipc: implement events, cleanup the code a bit
2010-03-12 21:05:05 +01:00
Michael Stapelberg
d86531b958
ipc: return logical workspace numbers, not internal ones
2010-03-12 15:59:38 +01:00
Michael Stapelberg
d6f726283c
ipc: also send a reply for COMMAND messages
2010-03-12 15:29:44 +01:00
Michael Stapelberg
5a3d1b38e8
ipc: Correctly deal with SIGPIPE/failing write()s
...
If a client disconnects while i3 still wants to write the reply, this
could lead to exits of i3 before.
2010-03-12 15:02:00 +01:00
Axel Wagner
0f5256dc72
Floating resize uses arbitrary corners
...
This closes ticket #121
2010-03-12 03:11:20 +01:00
Michael Stapelberg
9ed5e00107
ipc: change active to visible, introduce focused
...
visible == currently visible on the output it is on
(multiple workspaces can be visible at the same time)
focused == has the focus (only one workspace can be focused)
2010-03-12 03:01:34 +01:00
Michael Stapelberg
7c1be83692
Update comment (Thanks Merovius)
2010-03-12 02:59:16 +01:00
Michael Stapelberg
5f370b494c
bugfix: don’t remap stack windows errnously when changing workspaces
...
This fixes ticket #193 (long-standing rendering bug).
2010-03-12 00:41:40 +01:00
Michael Stapelberg
93a9f3c244
Bugfix: Don’t mess up x/y coordinates in configurerequests for floating windows
...
This was the cause for ticket #93 , which actually has a false
conclusion for the reason of this bug.
This code needs to be refactored.
2010-03-11 23:34:29 +01:00
Michael Stapelberg
e11ca75407
ipc: add active flag
2010-03-11 16:48:48 +01:00
Michael Stapelberg
9a9ba1b859
ipc: implement GET_WORKSPACES message type
...
This is the foundation to use dzen2 or similar as a complete
replacement for the internal workspaces bar.
A testcase is included, more documentation about the IPC interface
will follow.
2010-03-11 15:58:39 +01:00
Michael Stapelberg
f7c8e76782
Select containers above or near the whole snapped width/height
...
This fixes ticket #100 , and is best explained using a little example.
Consider the following layout:
+---+---+
| | X |
+---+---+
| X |
+---+---+
Where X marks a window, so you have an empty container in the upper
left, the container on the bottom is snapped to the right. Before
this commit, nothing would happen when focusing "above". After
this commit, the upper window gets focused.
2010-03-11 00:15:34 +01:00
Michael Stapelberg
a70f4353b7
Fix predict_text_width by using xcb_query_text_extents
...
This fixes ticket #173 , at least for the rendering errors.
I don’t really know why I implemented predict_text_width like it
was before (querying the whole table and pulling out information
one by one). Maybe I have overlooked xcb_query_text_extents. In
any case, it works better now.
2010-03-10 23:27:24 +01:00
Michael Stapelberg
bd76e994b8
Re-add old Xinerama code for the poor nvidia users
...
Add --force-xinerama when starting i3 to use Xinerama instead of RandR.
This should *ONLY* be done if you have no other choice (nvidia’s
binary driver uses twinview and does not expose the monitor information
through RandR).
2010-03-09 21:25:54 +01:00
Michael Stapelberg
4dfe61c2d4
Fixes for the last commit: check outputs instead of workspaces, correctly reset state when switching workspaces, little style fixes
2010-03-08 11:15:31 +01:00
Axel Wagner
9c77b0f9a1
Implement screen-spanning fullscreen-mode (command: 'fg')
...
This closes ticket #188
2010-03-08 11:15:31 +01:00
Michael Stapelberg
85308715ea
Turn nested functions into real functions or macros
...
This enables compilation with llvm-clang and thus closes ticket #101 .
While it makes the code more ugly, I don’t see a beautiful solution
which would enable us to stay with the more elegant solution of
nested functions and still allow compilation with any other compiler
than gcc.
2010-03-07 19:00:34 +01:00
Michael Stapelberg
46642d0e45
For num_clients == 0, the last fix is also valid
2010-03-06 16:58:20 +01:00
Michael Stapelberg
afc922ef57
Avoid more errors by not trying to re-create a stack win with height == 0
2010-03-06 16:51:17 +01:00
Michael Stapelberg
e9ef672c36
Don’t render if no stack_window has been opened
...
This could happen when you have only one client in a stacking/tabbed
container. While not being a critical bug, this avoids X errors.
2010-03-06 16:34:07 +01:00
Michael Stapelberg
6be76e4c56
Remove trailing whitespace
2010-03-05 23:26:45 +01:00
Thorsten Töpper
4e9c6515f3
Changing to stacking/tabbing toggles mode to default if already in stacking/tiling.
2010-03-05 23:25:34 +01:00
Michael Stapelberg
f1a011c014
Clear urgency hints set by i3 (see HEAD~2)
2010-03-05 20:03:38 +01:00
Michael Stapelberg
c367eaa369
put windows with WM_CLIENT_LEADER on the workspace of their leader
...
This fixes ticket #163
2010-03-05 18:01:32 +01:00
Michael Stapelberg
40475b250f
Allow unsetting WM_CLIENT_LEADER (XCB_NONE is not an invalid value)
2010-03-05 17:42:50 +01:00
Michael Stapelberg
8d648b4e37
Update function names, variable names and documentation for the RandR changes
2010-03-05 16:18:41 +01:00
Michael Stapelberg
8b192ac7ed
Bugfix: Correctly hide/show workspaces when enabling new outputs, correctly handle focus (Thanks Merovius)
2010-03-05 15:22:12 +01:00
Michael Stapelberg
718d62a3cd
Bugfix: Fix clone mode with new RandR code (Thanks Merovius)
2010-03-05 14:32:48 +01:00
Michael Stapelberg
d73f1748db
Remove superfluous definitions (Thanks Merovius)
2010-03-05 01:59:52 +01:00
Michael Stapelberg
85437877e8
fix comment (Thanks Merovius)
2010-03-05 00:09:52 +01:00
Michael Stapelberg
3cfe1b35e0
Update fullscreen client position/size when an output changes (Thanks Merovius)
...
This fixes #187 .
2010-03-03 09:32:31 +01:00
Michael Stapelberg
0ec3481c69
draw consistent borders for each frame in a tabbed/stacked container
...
The condition was a relict from older rendering code, I think.
This fixes #172 .
2010-03-03 08:49:07 +01:00
Michael Stapelberg
187c72fa96
sighandler: only display on active outputs
2010-03-03 08:48:57 +01:00
Michael Stapelberg
e5f222e03e
Save a resize_client() when handling the size hints
2010-03-03 01:23:38 +01:00
Michael Stapelberg
7839b7a4fe
Bugfix: checked for wrong flag in size hints
2010-03-03 01:23:38 +01:00
Michael Stapelberg
5dbcb0158f
When in fullscreen mode, focus whole screens instead of denying to focus (Thanks dothebart)
...
This fixes ticket #169 .
2010-03-02 15:45:48 +01:00
Michael Stapelberg
e3e7ebe23a
Bugfix: only return active screens in get_screen_most
2010-03-02 15:45:03 +01:00
Michael Stapelberg
4e69bd65c0
Move autostart after creating the IPC socket in start process (Thanks Sasha)
...
This fixes ticket #179 .
2010-03-02 15:30:23 +01:00
Michael Stapelberg
b53c5861a2
Restore geometry of all windows before exiting/restarting (Thanks Sasha)
...
This fixes ticket #185
2010-03-02 15:25:08 +01:00
Michael Stapelberg
d08ec00329
use scalloc instead of some places where calloc was still used
2010-03-02 14:42:24 +01:00
Michael Stapelberg
aae824b1f3
Change workspace assignments to use the RandR output name instead of <screen>
2010-03-02 13:35:43 +01:00
Michael Stapelberg
818e02ef35
huge change: implement RandR instead of Xinerama
...
Thanks to Merovius for doing a proof of concept on this one and
being a driving force behind the idea.
Using RandR instead of Xinerama means that we are now able to use
the full potential of the modern way of configuring screens. That
means, i3 now has an idea of the outputs your graphic driver
provides, which allowed us to get rid of the ugly way of detecting
changes in the screen configuration which we used before. Now, your
workspaces should not be confused when changing output modes anymore.
Also, instead of having ugly heuristics to assign your workspaces
to (the screen at position X or the second screen in the list of
screens) you will be able to just specify an output name.
As this change basically touches everything, you should be prepared
for bugs. Please test and report them!
2010-03-02 12:47:21 +01:00
Michael Stapelberg
6f72970ece
add xcb_set_window_rect which configures a window according to a Rect
2010-02-28 20:35:30 +01:00
Michael Stapelberg
7caf98dd18
Move update_if_necessary to util.c, will be necessary later
2010-02-28 18:39:11 +01:00
Michael Stapelberg
e209fd7d3a
docs: the comparison is size and position, not only size (Thanks Merovius)
2010-02-22 07:09:17 +01:00
Michael Stapelberg
4fcbb7980e
work around clients setting 0xFFFF as resize increments
...
I am not sure if behaviour is specified for this case, but as the
workaround is not really a big deal, why bother…
2010-02-20 20:32:43 +01:00
Michael Stapelberg
432f06a21e
Add missing carriage return (Thanks fallen)
2010-02-16 19:55:04 +01:00
Michael Stapelberg
e225742415
Make the warning about $terminal being deprecated an error (Thanks fallen)
2010-02-16 19:25:07 +01:00
Michael Stapelberg
e78bb02082
parser: ignore errors
2010-02-14 16:59:22 +01:00
Michael Stapelberg
2af2bc36c9
Document the new options
2010-02-13 19:58:43 +01:00
Michael Stapelberg
64cf88403d
lexer/parser: proper error messages
...
Error messages now look like this:
13.02.2010 19:42:30 - ERROR:
13.02.2010 19:42:30 - ERROR: CONFIG: syntax error, unexpected <word>,
expecting default/stacking/tabbed or stack-limit
13.02.2010 19:42:30 - ERROR: CONFIG: in file "inv", line 15:
13.02.2010 19:42:30 - ERROR: CONFIG: new_container foobar
13.02.2010 19:42:30 - ERROR: CONFIG: ^^^^^^
13.02.2010 19:42:30 - ERROR:
2010-02-13 19:42:54 +01:00
Michael Stapelberg
79a4e30488
parser: enable verbose error messages, add aliases to tokens
2010-02-13 15:27:43 +01:00
Michael Stapelberg
e446747812
Also warp the pointer when moving a window to a another visible workspace (Thanks Thomas)
2010-02-12 16:19:58 +01:00
Michael Stapelberg
87f8c501da
Bugfix: Correctly do boundary checking/moving to other workspaces when moving floating clients via keyboard (Thanks sasha)
2010-02-12 13:06:59 +01:00
Michael Stapelberg
0b6b8e8380
Bugfix: Use both parts of WM_CLASS (it contains instance and class) (Thanks fallen)
...
Actually, WM_CLASS contains two null-terminated strings, so we cannot
use asprintf() to get its value but rather use strdup() to get both
of them. Both values are compared when a client is matched against
a wm_class/title combination (for assignments for example).
2010-02-12 12:12:25 +01:00
Michael Stapelberg
88b9700cdb
Invert logic for the last commit
...
This makes it more clear that the option is meant to be a special
case (it *disables* part of the focus handling). Also, when
initializing the config data structure with zeros, it will get
initialized with the right value.
Furthermore, the config file parser now also accepts various values
which represent "true", not only numbers.
2010-01-29 21:58:50 +01:00
Kim Silkebækken (lokaltog)
7f10970fc7
Added focus_follows_mouse config option
2010-01-29 21:58:50 +01:00
Kim Silkebækken (lokaltog)
36909c6e3b
Fixed cursor code in create_window(), allowing the cursor to be changed
2010-01-26 11:28:38 +01:00
Kim Silkebækken (lokaltog)
148547c765
Fixed cursor orientation when resizing
2010-01-26 11:28:37 +01:00
Michael Stapelberg
7270b74732
Implement resize command for floating clients
2010-01-23 18:57:29 +01:00
Michael Stapelberg
fde11f9a5c
Bugfix: Don’t leak IPC socket to launched processes
2010-01-23 00:34:29 +01:00
Cedric Staub
c606d93630
Feature: Cycle through workspaces
...
On command pw/nw, cycle through all workspaces (starting from
previous/next one) until we reach the current one again.
2010-01-19 12:10:45 +01:00
Michael Stapelberg
d949a335e6
bugfix: lexer: return to INITIAL state (Thanks dirkson)
...
'floating_modifier' after 'workspace' did not work because of wrong
state
2010-01-08 18:56:01 +01:00
Michael Stapelberg
af0b33bcc3
Bugfix: if a font provides no per-char info for width, fall back to the default (Thanks Ciprian)
2010-01-07 14:38:00 +01:00
Michael Stapelberg
b6de565445
Bugfix: Use ev_loop_new instead of ev_default_loop because the latter one blocks SIGCHLD (Thanks Ciprian)
...
SIGCHLD was inherited to child processes started by i3 and not
all of them unblocked it (shells generally did, though), leading to
zombie processes.
2010-01-07 13:36:52 +01:00
Michael Stapelberg
44191d5ffc
sighandler: last little style fixes
2010-01-03 22:07:39 +01:00
Michael Stapelberg
2b1a132c39
grab the pointer inside the signal handler popup
2010-01-03 22:02:07 +01:00
Michael Stapelberg
be33c8e599
Check return code of sigaction()
2010-01-03 21:55:22 +01:00
Michael Stapelberg
a69dfb3f06
Remove expose event mask, expose events will not be generated in any case
2010-01-03 21:55:02 +01:00
Michael Stapelberg
7b2363776a
Use DLOG instead of LOG, remove unnecessary debug statement
2010-01-03 21:54:47 +01:00
Michael Stapelberg
0c35573e51
some little style changes
2010-01-03 21:54:26 +01:00
Michael Stapelberg
8afdf54078
Update copyright to 2010
2010-01-03 21:53:30 +01:00
Jan-Erik Rediger
614b360bd4
added popup for handling SIGSEGV or SIGFPE
...
the popup is placed on each of the virtual screens
the user can decide to restart or quit i3
in case of an exit a core-dump is generated
2010-01-03 21:32:50 +01:00
Michael Stapelberg
715983024d
ewmh: Don’t push workspaces with width=0 and height=0 (Thanks Atsutane, badboy)
...
Even though i3 cannot know the width/height of some workspaces as
long as they are not initialized (say you used workspace 1 and 3,
but not workspace 2), some applications require this information.
In this case, it was Firefox which intersects the available workareas
(see mozilla/gfx/src/gtk/nsScreenGtk.cpp) and did not position some
windows correctly when being confronted with zero-width/height
workspaces.
2010-01-03 18:36:50 +01:00
Michael Stapelberg
7c130fb540
Obey the XDG Base Directory Specification for config file paths
...
This means you can now put your i3 config into
$XDG_CONFIG_HOME/i3/config, which probably is ~/.config/i3/config
if not set otherwise.
2010-01-03 16:58:41 +01:00
Michael Stapelberg
ba2dd3a3eb
Bugfix: Containers could lose their snap state (Thanks Atsutane)
...
When being on a different workspace than the one where the snapped
container is, the function to cleanup cols/rows would clean up too
much.
2010-01-01 22:40:50 +01:00
Michael Stapelberg
092f3139d8
Remove superfluous #include <assert.h> (Thanks badboy)
2010-01-01 17:30:27 +01:00
Michael Stapelberg
65cae2cad1
Bugfix: Don’t put dock clients into floating mode (Thanks xeen)
2010-01-01 16:19:42 +01:00
Michael Stapelberg
75aac5bc02
ewmh: implement support for _NET_WORKAREA (rdesktop can use that)
...
Please note that rdesktop’s -g workarea option will not work on
64-bit systems at the moment because of a bug in rdesktop (see the
rdesktop-devel mailing list).
2009-12-31 17:48:41 +01:00
Michael Stapelberg
e7e9e8e49d
ewmh: correctly set _NET_ACTIVE_WINDOW
2009-12-25 15:19:39 +01:00
Michael Stapelberg
0641e6a1a3
ewmh: correctly set _NET_CURRENT_DESKTOP to the number of the active workspace
2009-12-25 15:05:17 +01:00
Michael Stapelberg
ba82a3e63b
Bugfix: Fix NULL pointer dereference in workspaces which have preferred screens but were not used yet (Thanks badboy)
2009-12-23 00:39:03 +01:00
Michael Stapelberg
3e53ecf69e
retab! src/container.c
2009-12-22 23:43:05 +01:00
Michael Stapelberg
848d9c1b01
Make containers containing exactly one window behave like default containers
...
Starting from this commit, a borderless window will always be
borderless if it is the only window in a container. For example,
you can have Firefox borderless in a tabbed container and as soon
as the download manager or a viewer gets opened, the container
will be rendered like a normal tabbed container.
This solves the user-interface dilemma of borderless/1-px-border
windows inside stacked/tabbed containers, at least for this special
case. Thanks to Merovius for this suggestion.
2009-12-22 23:40:06 +01:00
Michael Stapelberg
9df64a8d0a
Correctly exit when another window manager is already running
...
This is implemented by checking if setting the redirect mask returned
an error or not.
2009-12-22 11:29:24 +01:00
Michael Stapelberg
e900a8d23d
xinerama: correctly put windows which are assigned to a specific screen on that screen when it becomes available (Thanks badboy)
2009-12-21 22:30:08 +01:00
Michael Stapelberg
0b5554c762
xinerama: change some log messages to errors
2009-12-21 20:41:02 +01:00
Michael Stapelberg
6ef0d1fa79
Touch each log message and classify it as DLOG (debug), ELOG (error) or LOG (verbose)
2009-12-19 22:40:23 +01:00
Michael Stapelberg
37d795c81d
Add new options -V for verbose mode and -d <loglevel> for debug log levels
2009-12-19 22:40:23 +01:00
Michael Stapelberg
4226cc61de
add log.c/log.h which contain all the log related macros and functions
2009-12-19 22:40:23 +01:00
Michael Stapelberg
937048d47b
Distribute rest space between windows as long as possible. (Thanks msi)
...
When having 8 windows in a container which has 766 px available,
you ended up losing 0,75 px per window which would quickly sum up.
Now, the rest space (6 px in this example) is distributed in units
of one pixel to as many windows as possible.
2009-12-13 17:02:22 +01:00
Michael Stapelberg
f87b98e0a7
Take into account the window’s base_{width,height} when resizing (Thanks Mirko)
2009-12-12 22:27:57 +01:00
Michael Stapelberg
8d8804221b
Partly revert 4ba26659
, it was just wrong.
2009-12-12 21:42:56 +01:00
Michael Stapelberg
c6c0862e24
Bugfix: Correctly check for fullscreen windows when mapping new clients
...
CUR_CELL only works if you currently are in that container (not for
windows which are assigned to invisible workspaces, for example).
2009-12-12 21:31:41 +01:00
Michael Stapelberg
4afe65eea2
Bugfix: Correctly place new windows below fullscreen windows (Thanks Moredread)
...
This bug could happen if you have floating and tiling windows (for
example Firefox in tiling mode and its Open dialog in autmatically
floating mode) and you opened a new tiling window while in fullscreen.
i3 would then place the window below the floating windows, but
floating clients are above fullscreen windows. Thus, the client
would be placed above the fullscreen window.
2009-12-12 21:29:07 +01:00
Michael Stapelberg
ffe925f733
Bugfix: Fix assignments to not yet visible workspaces
...
This was broken by commit 5a1668db3
2009-12-12 18:43:30 +01:00
Michael Stapelberg
17082ef5b7
Bugfix: close file handle after parsing
2009-12-11 17:57:42 +01:00
Michael Stapelberg
e5c4fa6c1c
Include unistd.h for usleep()
2009-12-08 20:55:17 +01:00
Michael Stapelberg
ddf3119552
Bugfix: Don’t resize client after base_height changes if client is in fullscreen mode
2009-12-08 20:52:19 +01:00
Michael Stapelberg
befd7f6f22
Bugfix: Use more precise floating point arithmetic (Thanks helgiks)
...
This prevents errors in rounding leading to an unoccupied space of
-1 which in turn leads to infinity when calculating the new size
of a container after resizing.
2009-12-08 11:48:25 +01:00
Michael Stapelberg
1a53cc067b
When no screens are found, don’t hog the CPU. Also, wait longer for screens (10 seconds).
...
Instead of just going on, i3 will exit cleanly now, putting an
appropriate message into the logfile.
2009-12-07 16:31:49 +01:00
Michael Stapelberg
ec2e5e8364
Bugfix: Fix two problems in resizing floating windows with right mouse button (Thanks Mirko)
...
Minimum width/height was not consistent with the limit for grabbing
and resizing a window at its border.
If one of both was violated (width < min_width for example), none
of them were updated.
2009-11-26 22:17:38 +01:00
Michael Stapelberg
5a1668db36
Bugfix: Render containers after setting the client active (Thanks Mirko)
...
This lead to race conditions when the window did not change its title
after mapping and was displayed in a tabbed container.
2009-11-26 21:32:53 +01:00
Michael Stapelberg
5329ed0158
Bugfix: Resize client after updating base_height/base_width (Thanks Merovius)
...
This fixes the problem that urxvt/xterm "lost" a line of space before
being resized the first time.
2009-11-23 09:42:38 +01:00
Michael Stapelberg
d2a88f7089
Bugfix: Don’t ignore urgency flag when the client wants to clean it (Thanks Syntropy)
2009-11-23 08:35:40 +01:00
Michael Stapelberg
4ba26659fd
Bugfix: Fix stack-limit cols, handle stack-limit cols on tabbed containers (Thanks jace)
2009-11-22 22:48:08 +01:00
Michael Stapelberg
4ace0d2138
config: delete old parser, new lexer/parser is the default by now
2009-11-22 20:25:33 +01:00
Michael Stapelberg
52945486fd
Bugfix: Also fix horizontal resizing
...
The same problem as in the commit before this one was present. Additionally,
the dock_clients and internal bar were not taken into account everywhere.
2009-11-22 14:32:40 +01:00
Michael Stapelberg
2c8b041500
Bugfix: Correctly calculate width when resizing (Thanks Merovius)
2009-11-22 14:05:35 +01:00
Michael Stapelberg
29464dc791
Bugfix: Don’t set the urgency flag if the window is currently active
2009-11-20 15:55:54 +01:00
Michael Stapelberg
c0256edd2e
Bugfix: Accept underscores in bindsym (Thanks jace)
2009-11-20 15:33:38 +01:00
Michael Stapelberg
c5da7bd266
Bugfix: Fix resizing of floating windows in borderless/1-px-border mode (Thanks Grauwolf)
...
Calculations were wrong (they simply didn’t take into account that
there is more than one border style, the code was from before we
implemented that…). We cannot directly set child_rect to the coordinates
as resize_client takes rect and calculates the child_rect, so we need
the new lines of code for this bugfix in any case (rect needs to be
updated).
2009-11-18 22:53:17 +01:00
Michael Stapelberg
82c32616e1
Bugfix: Correctly clear the urgency hint if a window gets unmapped without clearing the hint
2009-11-18 20:20:54 +01:00
Michael Stapelberg
6a5bdf6f8e
Bugfix: Also allow WORDs as workspace names (Thanks Grauwolf)
2009-11-18 19:53:57 +01:00
Michael Stapelberg
fb04388289
Bugfix: Don’t hide window titles in tabbing mode (Thanks badboy)
2009-11-15 17:35:15 +01:00
Michael Stapelberg
d266474f97
Remove the terminal option from config.
...
The welcome message is displayed using xmessage(1), not using your
terminal. Thus, it makes no sense to have this option anymore. Also,
the new lex/yacc parser cannot correctly handle the situation:
normal variables are expanded before parsing the file. As a replacement,
you can use:
set $terminal /usr/bin/urxvt
2009-11-13 20:36:59 +01:00
Michael Stapelberg
aa2e0d7d14
Bugfix: Correctly replay pointer if the click handler does not trigger (Thanks merovius)
2009-11-13 20:22:23 +01:00
Michael Stapelberg
d48a515752
Bugfix: Correctly switch border types for floating windows (Thanks msi)
2009-11-13 19:55:34 +01:00
Michael Stapelberg
51b937741d
Bugfix: Don’t draw window title when titlebar is disabled (Thanks msi)
2009-11-13 19:46:07 +01:00
Michael Stapelberg
c0c4dd2978
Disable XKB instead of quitting with an error (Thanks sur5r)
...
This is necessary for running i3 in Xvnc for example.
2009-11-13 00:30:42 +01:00
Michael Stapelberg
4b1bb7d19a
Add ctrl as synonym for control
2009-11-12 20:28:09 +01:00
Michael Stapelberg
47ebb9e1dd
Fix compilation warning on OpenBSD (Thanks bapt)
2009-11-10 00:07:40 +01:00
Michael Stapelberg
bf728be09b
parser: Use right parameter, suppress warning about expected shift/reduce conflict
2009-11-09 22:36:26 +01:00
Michael Stapelberg
f2dcc36333
Bugfix: WHITESPACE was missing in front of the workspace name (Thanks Mirko)
2009-11-08 21:43:47 +01:00
Michael Stapelberg
316f62dfda
Fix rendering of 1-px-border windows which require background filling
2009-11-08 13:04:14 +01:00
Michael Stapelberg
f1ecf08df5
s/for(/for (/
2009-11-08 12:45:33 +01:00
Michael Stapelberg
64c99cb235
Implement configuration setting to change the default border of windows
2009-11-08 12:43:01 +01:00
Michael Stapelberg
876417f49d
Bugfix: Don’t access wrong parameter (Thanks atsutane)
2009-11-07 16:51:10 +01:00
Michael Stapelberg
037605e34c
Use nicer colors for focused_inactive by default
2009-11-06 18:41:17 +01:00
Michael Stapelberg
5583dfa5e4
parser: Solve last shift/reduce conflicts
2009-11-06 17:26:17 +01:00
Michael Stapelberg
8e1945a990
parser: solve shift/reduce conflict by moving WHITESPACE token to the right place
2009-11-06 17:19:01 +01:00
Michael Stapelberg
6aab45e7a4
configfile: make whitespace optional for modes (Thanks tsdh)
2009-11-06 15:42:03 +01:00
Michael Stapelberg
3b05d9df60
Bugfix: Cleanup stack window also when in tabbing mode (Thanks litemotiv)
2009-11-04 22:37:43 +01:00
Michael Stapelberg
dd086864ce
Apply fix of the previous commit also for columns
2009-11-04 22:12:15 +01:00
Michael Stapelberg
2a0278b519
Bugfix: Switch layout mode after initializing all containers in a new row
2009-11-04 22:10:26 +01:00
Michael Stapelberg
2a0b1adab9
Also support xcb-keysyms < 0.3.4 when using bindsym (Thanks ch3ka)
2009-11-02 23:15:08 +01:00
Michael Stapelberg
0d327b7d17
Fix compilation warning
2009-11-02 23:14:21 +01:00
Michael Stapelberg
de3ca5c600
Bugfix: Ignore trailing/leading whitespaces when defining a mode (Thanks badboy)
...
…and shame on you for trailing/leading whitespace :).
2009-11-02 23:13:22 +01:00
Michael Stapelberg
a817519c0d
Bugfix: Prevent a division through zero (Thanks xeen)
2009-10-29 00:33:20 +01:00
Michael Stapelberg
16d33ec9df
Bugfix: Correctly re-assign dock_clients to the first screen when their screen disappears
...
This could lead to a null-pointer dereference when closing dock
clients that got lost.
2009-10-28 15:37:34 +01:00
Michael Stapelberg
fe2e4991d8
Bugfix: Use the right pointer for bar.* colors (Thanks shatter)
2009-10-23 23:13:38 +02:00
Michael Stapelberg
15d83d472b
Fix debug message in cfgparse.y (Thanks shatter)
2009-10-23 22:57:35 +02:00
Michael Stapelberg
80551834d2
Bugfix: Allow dock clients to reconfigure their height (Thanks Grauwolf)
2009-10-23 16:07:03 +02:00
Michael Stapelberg
da97b89b31
Bugfix: Don’t allow moving/resizing of fullscreen windows (Thanks xeen)
2009-10-13 08:26:35 +02:00
Michael Stapelberg
04884ab8cd
Bugfix: Fix NULL pointer dereference when reconfiguring screens
...
This did not happen all the time. It seems like you need to have a
container which is in stacking/tabbing mode on the screen which
is being reconfigured. (when doing xrandr --output VGA1 --off for
example)
2009-10-12 18:31:31 +02:00
Michael Stapelberg
2b679c6b9e
Fix HEAD^
2009-10-11 14:30:57 +02:00
Michael Stapelberg
d4ff702f19
Bugfix: Also apply the fix of 74ccdb4
when re-querying xinerama screens (Thanks Scytale)
2009-10-11 14:28:27 +02:00
Michael Stapelberg
3779f9292f
Bugfix: IPC: Correctly handle the case when multiple messages get received at once via the socket
...
When the sending application was so fast (*cough*) that the messages
could get queued by the kernel, it may happen that we receive multiple
messages at once.
2009-10-07 21:49:24 +02:00
Michael Stapelberg
ad84c07c8a
Bugfix: Correctly position bar window when using xrandr --below or --above (Thanks Mirko, dirkson)
2009-10-07 20:52:53 +02:00
Michael Stapelberg
44c4c9d5a6
Bugfix: Go to the target workspace before changing focus on goto command (Thanks yurifury)
2009-10-07 20:41:21 +02:00
Michael Stapelberg
df58981b57
Bugfix: Correctly restore the focus to the root screen after unmapping the last client (Thanks Rasi)
...
Sometimes, it may happen that the focus is "nowhere" and thus the
user is stuck. This was often the case with opera, sometimes with
pcmanfm. See ticket #118 .
2009-10-07 20:26:13 +02:00
Michael Stapelberg
f72161d0c2
Bugfix: parser: Correctly generate colorpixels from hex codes
2009-10-01 12:29:27 +02:00
Michael Stapelberg
6aa0f965d2
Fix warnings in lexer/parser
2009-09-29 22:47:37 +02:00
Michael Stapelberg
c4df9f1d95
Bugfix: Correctly initialize workspaces when initializing > 1 workspace (Thanks Mirko)
2009-09-29 22:25:08 +02:00
Michael Stapelberg
2b70e05ee9
Refactor workspaces to be stored in a TAILQ instead of an array
...
This fixes many problems we were having with a dynamically growing
array because of the realloc (pointers inside the area which was
allocated were no longer valid as soon as the realloc moved the
memory to another address).
Again, this is a rather big change, so expect problems and enable
core-dumps.
2009-09-29 19:45:41 +02:00
Michael Stapelberg
5a77081c55
Bugfix: When rendering, skip containers which are not yet initialized
...
This is necessary now, because when creating a new row, several
containers have to be created. Since the implementation of the default
mode for containers, this also involves rendering the layout. However,
when rendering the layout, all of the containers are potentially
accessed…
2009-09-29 12:26:53 +02:00
Michael Stapelberg
9ec6ea61de
Bugfix: Don’t crash when changing workspace when there is more than one column
2009-09-29 12:21:07 +02:00
Michael Stapelberg
ff0e9bb954
Bugfix: Fix parsing symbols which contain numbers, like F1 or 1 for bindsym (Thanks Rasi)
2009-09-29 11:32:57 +02:00
Michael Stapelberg
095de9eaab
Bugfix: partly revert f3880928
, client->workspace was not updated (Thanks msi)
2009-09-29 01:07:51 +02:00
Michael Stapelberg
bfd704c523
Fix syntax for resize command
2009-09-29 00:54:27 +02:00
Michael Stapelberg
d230b2bb1a
Bugfix: Create new workspace when there are no free existing ones to assign (Thanks msi)
...
As the workspaces are now created dynamically, we cannot rely on
the workspaces to be there when we need them without creating them.
On the other hand, this eliminates the case that there are no workspaces
to assign to a new screen, because now we can just create one.
2009-09-28 18:02:11 +02:00
Michael Stapelberg
e101940c5e
Implement options to change the default mode of containers
...
The following new directives have been implemented for the configuration
file:
new_container <default|stacking|tabbed>
new_container stack-limit <cols|rows> <value>
Note that they require using the new lexer/parser, which you can
do by passing -l to i3 when starting.
2009-09-27 23:08:27 +02:00
Michael Stapelberg
fa868ed61c
Bugfix: parser: limit of 10 workspaces is gone
2009-09-27 23:05:07 +02:00
Michael Stapelberg
226664d288
Remove debug message
2009-09-27 23:04:41 +02:00
Michael Stapelberg
058d9cc3a2
Handle ipc_socket like ipc-socket
...
We should use underscores to be consistent
2009-09-27 20:44:24 +02:00
Michael Stapelberg
8f67eba044
Implement modes. Modes allow you to use different keybindings and switch between them.
...
For example, you can create a mode which will let you resize windows
with some easy to use keys. So, instead of binding a combination
of your homerow and modifiers to resize, like this:
bind Mod4+44 resize right +10
bind Mod4+45 resize right -10
...
You can instead define a new mode:
mode "resize" {
bind 44 resize right +10
bind 45 resize right -10
...
bind 36 mode default
}
bindsym Mod4+r mode resize
So, if you press Mod4+r now, your keybindings will be set to the ones
defined in your resize mode above. You can then use your homerow
(without any other modifier) to resize the current column/row and
press enter to go back to the default mode when you are done.
Note that using this option requires you to enable the new lexer/parser
by passing the -l flag to i3 when starting.
2009-09-27 18:45:39 +02:00
Michael Stapelberg
97d949d16c
Bugfix: Correctly re-grab keys when using the new lexer
2009-09-27 18:45:17 +02:00
Michael Stapelberg
d916e075c3
parser: Implement parsing mode sections
...
Wait for further commits before they are actually used.
2009-09-27 17:02:13 +02:00
Michael Stapelberg
051caf571d
retab! cfgparse.y
2009-09-27 17:02:05 +02:00
Michael Stapelberg
55f4e5ab68
Add vim modeline to lexer/parser
2009-09-27 17:01:06 +02:00
Michael Stapelberg
c2a42dd503
lexer: Allow whitespace before comments
2009-09-27 17:00:37 +02:00
Michael Stapelberg
9b1699f4c4
Add documentation for workspace_get()
2009-09-27 15:20:47 +02:00
Michael Stapelberg
f38809288a
Make number of workspaces dynamic (no longer limited by 10)
...
Warning: This is not yet thoroughly tested, so be prepared to
encounter some segfaults. Please enable logging and coredumps,
so we can fix bugs quickly.
2009-09-27 14:00:54 +02:00
Michael Stapelberg
a55d0b77fe
Implement resize command
...
Syntax: resize <left|right|up|down> [+|-]<pixels>
2009-09-26 17:18:50 +02:00
Michael Stapelberg
7be41492c6
Obey the client’s border_width setting (Thanks shatter)
...
xterm by default sets a border_width of 2. This was not taken into
account when determining the size of the window by i3. Still, you
probably want to set this to 0 in your .Xresources as the pixels
are just lost.
2009-09-26 13:47:48 +02:00
Michael Stapelberg
b898058105
Fix some compilation warnings (Thanks mxf)
2009-09-26 13:30:32 +02:00
Michael Stapelberg
2493c4b232
Bugfix: Fix resizing on second monitor (Thanks litemotiv)
...
We now use the virtual screen’s size/position instead of the X root
window for the grabwin (grabwin = the area in which the pointer may
move when resizing).
2009-09-25 18:08:37 +02:00
Michael Stapelberg
f4ec7fdfe9
Implement stack-limit for further defining how stack windows should look
...
Using this command, you can limit the amount of columns or rows for
a stacking container. This allows for better usage of screen estate
when using stacking containers with many clients.
Examples:
i3-msg "stack-limit cols 2"
You will now have a stack window which has two columns of windows.
2009-09-22 18:07:59 +02:00
Michael Stapelberg
d3752007ed
Remove old code
2009-09-22 18:07:48 +02:00
Michael Stapelberg
d9ca8e8d1a
Move handler for clicking to its own file
2009-09-22 18:07:25 +02:00
Michael Stapelberg
3ada8f326c
Implement vim-like marks
...
Commands are 'mark' and 'goto'. Both can be used either directly,
like 'mark a' and 'goto a', or interactively (just 'mark'). For
interactive mode, i3-input must be installed and in your PATH.
2009-09-20 16:54:29 +02:00
Michael Stapelberg
0e8b87e9da
lexer: Implement workspace <number> "<name>"
2009-09-19 19:39:06 +02:00
Michael Stapelberg
0ed2d62263
lexer: return HEX instead of NUMBER when parsing colors
2009-09-19 19:34:02 +02:00
Michael Stapelberg
b1ebbde153
Merge branch 'lex' into next
2009-09-19 19:06:57 +02:00
Michael Stapelberg
ca472559b9
Finish configfile parsing with lexer, implement -l to use the lexer.
...
Every user is encouraged to use -l to switch to the new lexer and
see if there are any problems.
2009-09-19 19:05:15 +02:00
Michael Stapelberg
775d3a0d91
Make gcc happy about some possibly uninitialized variables (Thanks badboy)
...
This warning only showed up with CFLAGS=-O2.
The variables in question could never be uninitialized because
they were definitely set, have a look at the code. But anyways,
less warnings is always a good thing ;-).
2009-09-15 16:58:10 +02:00
Michael Stapelberg
207ad0a7df
Implement most code to actually set the configuration settings
2009-09-13 22:13:28 +02:00
Michael Stapelberg
7fda4a2c32
Make variable expansion work with the new parsing
2009-09-13 21:32:58 +02:00
Michael Stapelberg
2986636e03
Fix some parsing problems, retab!
2009-09-13 18:40:35 +02:00
Michael Stapelberg
268bf71222
Implement option -p to test if the lexer/parser can parse your configfile (specify -c before)
2009-09-13 14:54:27 +02:00
Michael Stapelberg
9dd975e974
Add first version of lexer/parser to git, update Makefile
2009-09-13 14:16:39 +02:00
Michael Stapelberg
30ad7e93e7
Bugfix: Re-distribute free space when closing rows which were horizontally resized
2009-09-12 19:58:39 +02:00
Michael Stapelberg
ce40f79c47
Implement right mouse button + dragging to resize tiling clients aswell
2009-09-12 19:51:50 +02:00
Michael Stapelberg
6f2638f526
Bugfix: Correctly warp pointer *after* rendering the layout
...
This is necessary because otherwise the window into which the
pointer is warped still is at its old position, so that the pointer
will effectively be warped onto the wrong screen in case of moving
a window to another screen.
2009-09-12 18:46:52 +02:00
Michael Stapelberg
739f4f35aa
Compilation fix for the last commit
2009-09-12 18:34:03 +02:00
Michael Stapelberg
3b59f5829f
Bugfix: Correctly initialize workspaces for floating clients, too
2009-09-12 18:18:41 +02:00
Michael Stapelberg
4d01a02dba
Bugfix: Correctly initialize workspace when moving clients (Thanks tsdh)
2009-09-12 18:15:32 +02:00
Michael Stapelberg
cef5778097
Bugfix: Fix clicking on stack windows in tabbed mode (Thanks Atsutane)
2009-09-10 21:05:29 +02:00
Michael Stapelberg
bf043cd2bd
Some little style adjustments for badboy’s patch
2009-09-10 18:48:16 +02:00
Jan-Erik Rediger
40bc7c93d0
Implement command to toggle border style
...
Use 'bt' to toggle from normal to 1-px, borderless and back.
2009-09-10 18:44:27 +02:00
Michael Stapelberg
ff1ae52e6b
Fix compilation warning because of missing braces
2009-09-10 16:29:23 +02:00
Michael Stapelberg
9f02fb7a3a
Bugfix: Don’t handle WM_HINTS if it is not set (Thanks mxf)
2009-09-10 16:27:50 +02:00
Michael Stapelberg
e4813d009a
Bugfix: Correctly handle unmap-notify events when resizing (Thanks Mirko)
2009-09-07 21:18:44 +02:00
Michael Stapelberg
2ff2a6a315
Implement the urgency hint for windows/workspaces
...
Thanks to Mikael for bringing it to my mind. This change introduces
two new color classes, client.urgent and bar.urgent. By default,
urgent clients are drawn in red (colors by Atsutane).
2009-09-06 22:40:11 +02:00
Michael Stapelberg
e893902585
Implement horizontal resize
2009-09-06 16:50:45 +02:00
Michael Stapelberg
a81108c527
Bugfix: Initialize screens correctly when not using Xinerama (Thanks Mikael)
2009-09-05 19:17:59 +02:00
Michael Stapelberg
ca8a194c56
Bugfix: Correctly grab the right mouse button for resizing windows (Thanks xeen)
2009-09-05 17:32:26 +02:00
Michael Stapelberg
a8352a8988
Merge patches for OpenBSD compatibility
2009-09-02 22:25:50 +02:00
Michael Stapelberg
ae2371ee58
Implement long options (--version, --no-autostart, --help, --config)
2009-09-02 22:14:09 +02:00
Michael Stapelberg
67dcd9df28
Bugfix: In stacked/tabbed mode we need the regular border color (Thanks badboy)
2009-09-02 21:59:31 +02:00
Michael Stapelberg
100cc6b717
Bugfix: If the pointer is outside of the screen when starting, fall back to the first screen (Thanks mxf)
2009-08-31 20:27:44 +02:00
Michael Stapelberg
2b49c6086d
Bugfix: Don’t display unnamed workspaces with %d: (Thanks Mirko)
2009-08-29 11:06:34 +02:00
Michael Stapelberg
d333b8534d
Bugfix: Draw black border instead of background-color around clients with {width,height}_increment (Thanks xeen)
2009-08-29 11:03:14 +02:00
Michael Stapelberg
39457338e4
Bugfix: Don’t crash if the numlock symbol cannot be found (Thanks xeen)
2009-08-27 21:34:07 +02:00
Michael Stapelberg
39f002e0b1
Bugfix: Don’t call resize_client if the width/height increment properties did not change
...
This avoids an endless loop, preventing clients to go to fullscreen
2009-08-25 23:16:17 +02:00
Michael Stapelberg
55b1bf4582
Bugfix: Correctly use base_width/base_height and size increment hints, correctly send fake configure notify events
2009-08-23 21:49:38 +02:00
Michael Stapelberg
8c4e2e48f4
Don’t round up if the corrected height/width is the same as the old one
2009-08-23 20:30:17 +02:00
Michael Stapelberg
d9d4d9fff1
Implement tabbing
...
Use command "T" to switch to tabbing
2009-08-22 09:07:23 +02:00
Michael Stapelberg
c7ba95e79d
Implement resizing floating clients with Mod1 + right mouse button
2009-08-22 07:49:28 +02:00
Michael Stapelberg
012f618c85
Bugfix: Map window when it got the fullscreen hint set
2009-08-21 12:19:04 +02:00
Michael Stapelberg
0b7a27ea79
initialize last_keycode
2009-08-19 14:37:34 +02:00
Michael Stapelberg
4b3ea4d524
Bugfix: Don’t crash when clients set an invalid leader hint
2009-08-19 10:56:42 +02:00
Michael Stapelberg
44d9111d65
More log cleanups
2009-08-11 15:23:58 +02:00
Michael Stapelberg
556f180290
Bugfix: Fix screen wrapping, cleanup some log messages
...
Before this fix, you could go upwards and select the screen which
was at the rightmost because it also was the one topmost (if all
screen’s top position is equal).
2009-08-11 15:02:30 +02:00
Michael Stapelberg
dd134a74ef
Implement support for width_inc and height_inc of size hints
...
This fixes the problem where you saw old window contents when resizing
a window (due to opening new windows or similar), especially in terminals.
2009-08-11 14:08:04 +02:00
Michael Stapelberg
d8380c6101
Bugfix: Don’t initialize screen twice when not using Xinerama (Thanks badboy)
2009-08-11 12:38:52 +02:00
Michael Stapelberg
b9636ceeec
Set WM_STATE_WITHDRAWN when unmapping, unmap windows when destroying (Thanks xeen)
...
Seems like java apps need it. Also, you probably want to use XToolkit,
when you have to work with java apps:
export AWT_TOOLKIT=XToolkit
2009-08-11 12:16:10 +02:00
Michael Stapelberg
51df900312
Bugfix: Fix focused but inactive window color when using multiple monitors
2009-08-08 21:45:29 +02:00
Michael Stapelberg
ceb3670d65
Reduce number of configuration requests and thus flickering
...
This reduces flickering when opening new windows and especially moving
existing windows in tiling mode. Especially noticable on multi-monitor
setups.
2009-08-08 21:31:42 +02:00
Michael Stapelberg
f72576a290
Fix rendering of window decorations in stacking mode (there was a 1px-line too much)
2009-08-08 20:20:06 +02:00
Michael Stapelberg
47a798ac4a
Implement assignments of workspaces to screens, big cleanup of workspace code
...
Please test this! Plug in screens, unplug them, use your video projector,
change resolutions, etc.
To use the assignments, use the following syntax:
workspace <number> [screen <screen>] [name]
Where screen can be one of:
<number> (It is not provided that these numbers stay constant, so use with care)
<x>x<y> (Coordinates where the screen starts, so 1280 will be fine to match the
screen right of the main screen if your main screen is 1280 pixels
width. However, 1281 will not match)
<x>
x<y>
Some examples follow:
workspace 1 screen 0
workspace 1 screen 1
workspace 1 screen 1280x0
workspace 2 screen 1280
workspace 3 screen x0
workspace 3 screen 1 www
workspace 4 screen 0 mail
2009-08-08 19:51:51 +02:00
Michael Stapelberg
6192975a04
Bugfix: Don’t crash when the font is specified after the workspace names in configfile (Thanks xiaodong)
2009-08-07 15:48:13 +02:00
Michael Stapelberg
7cdaa1b277
Implement support for using key symbols in configuration file
...
Use "bindsym" instead of "bind". You have to use the names of keys
as in xmodmap. To get a list of currently bounud symbols, use
xmodmap -pke
Technical quirk: Xlib generated MappingNotify events upon
XkbMapNotify events (from XKB, as the name says). XCB does not yet
have support for XKB, thus we need to select and handle the event
by ourself. Hopefully, this will change in the future.
2009-08-07 15:35:12 +02:00
Michael Stapelberg
3bd724f08d
Bugfix: Track the user’s pointer over the root window and update current workspace (Thanks xeen)
...
When not having any windows on the first workspace, switching to the
second workspace using your mouse was not registered by i3.
2009-08-06 00:59:48 +02:00
Michael Stapelberg
20875494ee
Bugfix: Correctly unmap stack windows and don’t re-map them too early
2009-08-06 00:38:12 +02:00
Michael Stapelberg
35d811db82
Bugfix: Change to default mode if there was no client selected
...
Another bug fixed by having testcases :-)
2009-08-06 00:16:58 +02:00
Michael Stapelberg
5d14dca41d
Implement correct rendering of floating windows (decoration color)
2009-08-05 19:59:58 +02:00
Michael Stapelberg
78b9e7f5ce
Bugfix: dock clients need to have borderless = true
2009-08-05 19:28:21 +02:00
Michael Stapelberg
22e4f03553
Implement ws (with screen) to focus the next screen (wsl for example)
2009-08-05 19:24:21 +02:00
Michael Stapelberg
9222bea3b2
Implement borderless / 1-px-bordered windows
...
Use bn (normal), bp (1-px), bb (borderless) as commands to change the
border style of the currently focused window. Feel free to use i3-msg
to do this.
2009-08-05 18:33:44 +02:00
Michael Stapelberg
3114d6821d
Add support for WM_CLIENT_LEADER, put floating windows mapping to (0x0) to center of leader/workspace
2009-08-05 00:39:55 +02:00
Michael Stapelberg
af3972aa9f
Bugfix: Recognize clicks as client clicks (opposed to border_clicks) when clients send them for their parent window
...
See comment, happened for example with xfontsel. You normally got
to see the resize bar (when having >1 column, of course).
2009-08-04 22:47:42 +02:00
Michael Stapelberg
4c373c2128
Fix clicking on workspaces in internal bar (with named workspaces) (Thanks bapt)
2009-08-04 22:27:01 +02:00
Michael Stapelberg
19abb63393
s/Mod1/floating_modifier (Thanks badboy)
2009-08-02 22:58:23 +02:00
Michael Stapelberg
7cfe520755
Bugfix: Don’t hide assigned clients to inactive but visible workspaces (Thanks xeen)
2009-08-02 22:31:52 +02:00
Michael Stapelberg
a753684ac5
cache text_width for named workspaces, fix memory leak
2009-08-02 21:32:35 +02:00
Michael Stapelberg
e7bf93163d
Make path configurable
2009-07-28 22:09:53 +02:00
Michael Stapelberg
a43846ea27
Initial implementation of IPC via UNIX domain sockets
2009-07-28 20:51:29 +02:00
Michael Stapelberg
1befbb2a50
Use errx() instead of an own die() function
2009-07-28 14:03:50 +02:00
Michael Stapelberg
e6198ad6c8
Some little fixes for bapt’s patch, use predict_text_width, support UTF8, pre-render workspace names
2009-07-28 13:55:09 +02:00
Bapt
ddcb11baba
Implements configurable named workspaces
2009-07-28 13:08:03 +02:00
Michael Stapelberg
33e536113d
Bugfix: Fix NULL-pointer dereferencing introduced by commit 874941 (Thanks tsdh)
2009-07-28 00:44:57 +02:00
Michael Stapelberg
76664df3df
Bugfix: Make assignments work again (Thanks badboy)
2009-07-26 02:12:45 +02:00
Michael Stapelberg
270922bf61
Bugfix: Don’t crash on floating windows, set focus correctly
2009-07-25 22:53:33 +02:00
Michael Stapelberg
1e095ece84
Merge branch 'next' of zekjur:/git/i3 into next
2009-07-25 22:31:01 +02:00
Michael Stapelberg
163c9ad7db
Map window/its decoration *after* calling render_layout()
...
Thus, no more flickering because the window was first mapped and then
moved. Especially users of multiple monitors should be happy now ;-).
Rather radical change, though, so be prepared for problems.
2009-07-25 22:29:28 +02:00
Michael Stapelberg
ed60b31fd0
Implement predict_text_width, which will be needed for named workspaces
2009-07-24 19:49:06 +02:00
Michael Stapelberg
ce501c9de9
Some fixes/reformatting for bapt’s patch
2009-07-23 20:36:48 +02:00
bapt
40750e227d
Implements a reload command
2009-07-23 18:46:21 +02:00
Michael Stapelberg
9db8535b4c
Some little fixes (mostly formatting) for bapt’s patch
2009-07-22 00:16:16 +02:00
Bapt
3e262913e8
Implements next-previous workspace
2009-07-21 23:50:08 +02:00
Michael Stapelberg
ffcc8bbc3a
Implement putting clients into floating mode at a specific workspace
...
This changes syntax of the assign command a bit. Old configurations
will continue to work. See the userguide.
2009-07-21 16:43:20 +02:00
Michael Stapelberg
008a2665c1
Bugfix: Strip trailing whitespace when parsing assignments (Thanks bapt)
2009-07-21 16:05:43 +02:00
Michael Stapelberg
b893ec9987
Bugfix: Repeatedly try to find screens if none are available (Thanks mxf)
...
When rotating your screens (xrandr --output LVDS1 --rotate right), sometimes
the X server returned no screens which lead to an exit(1) of i3. Now, i3
tries to find screens for up to 5 seconds and only quits afterwards.
2009-07-21 15:59:11 +02:00
Michael Stapelberg
87494107b3
Bugfix: Correctly redecorate clients when changing focus (Thanks msi)
...
When moving your cursor from one tiling window to another tiling
window via a floating client, the old tiling window was not re-
decorated correctly
2009-07-21 15:49:08 +02:00
Michael Stapelberg
5b51c8c6f0
optimization: Render on pixmaps and copy the result on Stack_Wins
...
This should speed up the rendering of Stack_Wins with many window
decorations and it should considerably reduce flicker.
2009-07-17 18:32:40 +02:00
Michael Stapelberg
0434b6ea3d
Bugfix: That last push was one step too fast. Forgot to check parameter.
2009-06-29 22:23:24 +02:00
Michael Stapelberg
91aeed0442
Resolve documentation FIXMEs, remove an unnecessary struct
2009-06-29 22:20:35 +02:00
Michael Stapelberg
0305c1dc0e
Bugfix: Use ->workspace instead of ->container
2009-06-28 01:58:00 +02:00
Michael Stapelberg
acf1eb0c92
Don’t allow floating clients to reconfigure themselves when in fullscreen (Thanks Volker)
2009-06-28 01:52:06 +02:00
Michael Stapelberg
eae0b18dbd
Use better error messages for s* (Thanks Curtis)
2009-06-27 10:54:34 +02:00
Michael Stapelberg
28c4b045d6
Merge branch 'next' (3.β is stable now)
2009-06-26 13:27:06 +02:00
Michael Stapelberg
aaccc0e62c
Bugfix: Correctly check coordinates for resizing floating windows (Thanks Mirko)
2009-06-26 12:14:20 +02:00
Michael Stapelberg
dd053c254b
Bugfix: When a window is fullscreen, put new windows after that one in focus stack (Thanks Volker)
2009-06-26 04:39:59 +02:00
Michael Stapelberg
ab48d714cf
Bugfix: Don’t lose focus when putting windows into floating
2009-06-26 04:34:36 +02:00
Michael Stapelberg
8f87c212be
Bugfix: When moving, first check boundaries, then check for col-/rowspan (Thanks Mirko)
2009-06-26 04:21:30 +02:00
Michael Stapelberg
27a418f454
Bugfix: Correctly remove fullscreen floating clients when unmapping (Thanks Volker)
2009-06-26 04:15:21 +02:00
Michael Stapelberg
8659419ef6
Bugfix: Correctly handle moving fullscreen client onto another screen (Thanks dirkson)
2009-06-25 13:46:47 +02:00
Michael Stapelberg
aa2f20ce26
Bugfix: Correctly handle floating windows when unmapping, fix focus bug when moving
2009-06-25 13:31:58 +02:00
Michael Stapelberg
b16ab02cc7
Bugfix: Correctly initialize screens when Xinerama is disabled (Thanks Moredread)
2009-06-24 23:50:04 +02:00
Michael Stapelberg
777eedf0f4
Bugfix: Fix selecting col-/rowspanned containers
2009-06-24 21:10:12 +02:00
Michael Stapelberg
62c8d58d82
Implement the configuration option floating_modifier and document it
2009-06-24 20:31:00 +02:00
Michael Stapelberg
675d28dd54
Bugfix: Check screen for NULL, free client memory correctly (Thanks dirkson)
2009-06-24 19:22:09 +02:00
Michael Stapelberg
61b1279f67
Bugfix: Don’t invalidate container pointer and access it when unmapping
2009-06-24 19:05:33 +02:00
Michael Stapelberg
7773a3e5dd
Ensure a minimum size of 25px when resizing windows
2009-06-24 18:31:43 +02:00
Michael Stapelberg
607b1d071e
Use drag_pointer from floating.c for the resize handler
2009-06-24 17:40:34 +02:00
Michael Stapelberg
ee217523f1
Bugfix: resizing: boundary checking (Thanks Mirko)
2009-06-24 17:24:09 +02:00
Michael Stapelberg
07bebdf841
Correctly re-assign floating clients to the destination workspace when moving
2009-06-24 17:12:12 +02:00
Michael Stapelberg
7ed967c96f
Ensure that the focus is set correctly when moving floating clients
2009-06-24 00:35:05 +02:00
Michael Stapelberg
125faef1f4
Correctly move floating clients to other workspaces on visible screens
2009-06-24 00:34:03 +02:00
Michael Stapelberg
0aed552bae
Bugfix: Remove/add floating clients to workspace->floating_clients when moving to other workspaces
2009-06-23 23:17:06 +02:00
Michael Stapelberg
81e9d8282a
Bugfix: load current_col/current_row from workspace when setting focus (Thanks Mirko)
...
In the case of floating clients which have no container, the values
were still the ones from your old workspace, which was a problem if
your dimensions didn’t match…
2009-06-23 23:10:04 +02:00
Michael Stapelberg
4f31709b1d
floating: enforce minimum size of 50x20 when resizing (Thanks Mirko)
2009-06-23 22:42:54 +02:00
Michael Stapelberg
cba36914a8
Implement selecting the next tiling/floating window (using "focus")
...
Also update documentation (manpage, userguide).
To make the code easier to read/write when checking if a client is
floating, introduce client_is_floating().
2009-06-21 16:14:15 +02:00
Michael Stapelberg
a5489d6546
Use a nested event loop which polls and saves motion notify events for later
...
This should speed up resizing/dragging quite a bit, thus fixing ticket #51
2009-06-21 13:44:44 +02:00
Michael Stapelberg
8140619d5b
Implement reconfiguration of floating clients
2009-06-21 13:29:48 +02:00
Michael Stapelberg
0e8b3c3401
Bugfix: floating: open windows with correct width/height
2009-06-21 13:18:54 +02:00
Michael Stapelberg
2751eedae5
Bugfix: Floating: open windows at their requested position
2009-06-21 13:12:42 +02:00
Michael Stapelberg
6ca9210335
Bugfix: Properly integrate libxcb’s event loop into libev.
...
Fixes a race condition with GIMP (where it configured its window,
sent the map request and waited for the window to get mapped, but
i3 didn’t get the event until another one was sent (key binding for
example)).
The new solution is much better as it properly hands off all
the work to xcb_poll_for_event.
Inspired by awesome, which uses the same mechanism. Thanks.
2009-06-21 13:05:54 +02:00
Michael Stapelberg
ce97e23913
Remove getting colorpixels from the X server, saves code and round-trips. Requires truecolor displays.
...
If anyone has a serious (!) use for non-truecolor displays and
problems with i3’s colors after this commit, please send a mail.
2009-06-20 18:05:24 +02:00
Michael Stapelberg
83d3146b65
Bugfix: Correctly raise the currently focused client when going into stack mode
2009-06-20 00:31:57 +02:00
Michael Stapelberg
8e19f8dabf
floating: Don’t let clients become hidden under stack windows or fulscreen clients (Thanks Mirko)
2009-06-19 23:18:43 +02:00
Michael Stapelberg
5c0496a3ef
Bugfix: Make sure floating clients are alwalys above tiling clients (Thanks Mirko)
2009-06-19 22:57:19 +02:00
Michael Stapelberg
589a73c8ea
Bugfix: Correctly check for floating mode in the buttonpress handler (Thanks Mirko)
2009-06-19 22:48:18 +02:00
Michael Stapelberg
ba070fcc6c
Bugfix: Obey colspan/rowspan when checking if containers can be snapped to the right/bottom (Thanks Mirko)
...
This fixes ticket #54 .
2009-06-19 22:40:25 +02:00
Michael Stapelberg
93ff4159c1
Bugfix: Obey colspan/rowspan when checking if containers can be snapped to the right/bottom (Thanks Mirko)
...
This fixes ticket #54 .
2009-06-19 22:39:03 +02:00
Michael Stapelberg
325d1b301f
Implement the special workspace ~ for assignments, which will set clients floating automatically
2009-06-19 20:20:00 +02:00
Michael Stapelberg
bcd479ca92
floating: nested functions make the callbacks a lot more easier & beautiful
2009-06-19 19:43:01 +02:00
Michael Stapelberg
89c0caaec4
Implement a command for hiding all floating windows (and showing them again)
2009-06-19 13:59:29 +02:00
Michael Stapelberg
5c48444b4e
Implement the possibility to set a workspace open clients automatically in floating mode
...
Use "wwt" (with workspace: toggle floating) in your configuration file
2009-06-19 13:20:10 +02:00
Michael Stapelberg
4135aaad7c
Implement moving of floating clients
2009-06-19 12:57:21 +02:00
Michael Stapelberg
51402b05f5
Bugfix: Correctly initialize automatically floating clients (some rendering issues)
2009-06-19 12:34:31 +02:00
Michael Stapelberg
a6d7f5451d
Also set DIALOG, UTILITY and SPLASH windows floating automatically
2009-06-19 12:05:55 +02:00
Michael Stapelberg
a2a8cd85d6
Bugfix: Don’t crash when programs set NULL hints (xev(1) for example)
...
This only happened if you had some assignment configured
2009-06-19 11:05:00 +02:00
Michael Stapelberg
1c02ddb4a7
Bugfix: Fix assignment of clients to other workspaces (Thanks badboy)
...
The problem was that the old_focused pointer was pointing to an element
of a different list. Using CIRCLEQ_APPEND_AFTER is not a good idea on
with such an element…
2009-06-18 01:25:46 +02:00
Michael Stapelberg
00c6bdeb0b
Implement changing focus via keyboard between floating clients, fix several floating bugs
2009-06-14 01:04:59 +02:00
Michael Stapelberg
e6d9c7bb9e
Bugfix: Don’t use the minimum amount of pixels for dock clients which don’t set size hints
2009-06-13 12:30:28 +02:00
Michael Stapelberg
56af58eb0b
Bugfix: Put floating clients into the focus stack (Thanks Mirko)
2009-06-13 12:20:39 +02:00
Michael Stapelberg
02fa3c2cb8
Bugfix: Correctly initialize the new atom, don’t float dock windows
2009-06-13 12:18:16 +02:00
Michael Stapelberg
13002dc04e
Bugfix: Actually reconfigure unmapped windows when they request it
...
Before, we only sent a fake message. While this was sufficient for the
client side most of the time, it didn’t allow us to open floating
windows with the correct size.
2009-06-12 23:47:04 +02:00
Michael Stapelberg
052190ad05
Handle transient hint and window class dialog to mark clients as floating
2009-06-12 22:59:23 +02:00
Michael Stapelberg
cb12e205d9
Bugfix: When toggling floating, the copied size is the client’s size, not the total size
2009-06-12 22:55:56 +02:00
Michael Stapelberg
6e5406167c
Bugfix: Use the correct size for the modifiers (Thanks Moredread!)
2009-06-11 03:30:56 +02:00
Michael Stapelberg
70be57352c
Fix memleak in config parsing (variables weren’t freed)
2009-06-11 03:30:42 +02:00
Michael Stapelberg
55f0aa8f28
Add a proper error message if connection to the X server can’t be established
2009-06-11 03:30:26 +02:00
Michael Stapelberg
d70ea03356
Remove some dead code, add default paths to switch() to make static analyzers happy
...
Check was done with scan-build from the LLVM suite. The remaining reports are false
positives and have been reported to llvm:
http://llvm.org/bugs/show_bug.cgi?id=4358
http://llvm.org/bugs/show_bug.cgi?id=4359
2009-06-10 19:59:36 +02:00
Michael Stapelberg
2f334c3f59
Bugfix: Don’t set focus when unmapping clients if the workspace is not active (Thanks Mirko)
...
This fixes ticket #53 because current workspace was set to the
workspace which was deleted.
2009-06-07 19:09:39 +02:00
Michael Stapelberg
fb63c2ed58
Implement moving floating clients using Mod1+Left mouse button
2009-06-03 13:54:13 +02:00
Michael Stapelberg
036728c4d7
Use the size when mapping the window as size for floating (correct size for tool windows)
2009-06-02 14:24:37 +02:00
Michael Stapelberg
3f925a56d3
Fix warning about dereferencing type-punned pointers
2009-06-01 21:12:13 +02:00
Michael Stapelberg
553db28664
Switch to libev for the event loop to build a base for IPC stuff. Please test!
2009-06-01 20:59:40 +02:00
Michael Stapelberg
e689be983b
Implement variables in configfile.
...
This implements ticket #42 .
Syntax is "set $key value". All further instances of $key will be
replaced with value before parsing each line of the configfile.
2009-06-01 16:19:06 +02:00
Michael Stapelberg
170ba60191
Bugfix: Rendering of the bottom border line was still off by one
2009-06-01 15:35:59 +02:00
Michael Stapelberg
2a67630aa6
Optimization: Get the colorpixels when loading configuration, make use of the new config struct
...
Instead of building arrays of colorpixels we can simply use a pointer
to a struct Colortriple. Furthermore, by getting the colorpixels when
loading the configuration, we save a lot of function calls in the
main code.
2009-06-01 15:14:45 +02:00
Michael Stapelberg
c73bb1feaa
Draw the border lines in the window decoration correctly
2009-05-31 18:37:47 +02:00
Michael Stapelberg
517c47ca95
Don’t check twice for client.focused, change all places were colorcodes are used
2009-05-31 17:18:49 +02:00
Michael Stapelberg
0cb5d7448d
Implement clients going automatically into floating
2009-05-31 00:31:18 +02:00
Michael Stapelberg
706c44509e
retab! src/config.c
2009-05-30 22:24:05 +02:00
Michael Stapelberg
cbc3880007
Use a more efficient struct for storing colors, validate/parse them more easily
2009-05-30 22:20:32 +02:00
Atsutane
65bcf170ed
Introduced color setting.
2009-05-30 17:59:04 +02:00
Michael Stapelberg
2d5b1f0a37
Bugfix: Send fake configure notify events when moving clients (Thanks Volker)
...
This fixes ticket #47
2009-05-30 11:49:50 +02:00
Michael Stapelberg
fccbdea925
Bugfix: Correctly set focus when switching to a workspace with floating clients
...
This fixes ticket #45
2009-05-30 11:41:49 +02:00
Michael Stapelberg
b1eb93326f
Bugfix: Correctly cleanup stack_windows when setting clients to floating
...
This fixes ticket #44
2009-05-30 11:35:32 +02:00
Michael Stapelberg
ac6561019b
Don’t kill workspaces on which you currently are when changing screen configuration
2009-05-27 18:46:58 +02:00
Michael Stapelberg
d4fb34abdd
Bugfix: Don’t ignore enter_notify events for clients on different screens (Thanks Mirko)
...
This fixes ticket #41 .
2009-05-27 18:19:14 +02:00
Michael Stapelberg
2ed621aec9
Bugfix: Forgot to update client’s workspace pointer (Thanks Mirko)
2009-05-27 12:28:51 +02:00
Michael Stapelberg
94ee39d1ce
Bugfix: Forgot to update client’s workspace pointer (Thanks Mirko)
2009-05-27 12:27:29 +02:00
Michael Stapelberg
bcd68d9ca1
Bugfix: Fix crash when focusing/moving on an empty workspace (Thanks Mirko)
2009-05-27 12:15:23 +02:00
Michael Stapelberg
b0cf3ec026
Document binding on Mode_switch in userguide, be more verbose in config
2009-05-26 17:37:56 +02:00
Michael Stapelberg
9c3b37f2d1
Bugfix: Cleanup the table after putting clients into floating mode
2009-05-26 17:16:51 +02:00
Michael Stapelberg
94cead993c
Don’t process autostart when restarting (new parameter -a)
2009-05-26 17:09:34 +02:00
Michael Stapelberg
b58e2fa8ed
Move toggle_fullscreen to client.c
2009-05-26 16:49:57 +02:00
Michael Stapelberg
ac5c2fcf19
Bugfix: Fix fullscreen for floating clients, fix window name updates for floating clients
2009-05-26 16:46:50 +02:00
Michael Stapelberg
5b8e2ecb18
Implement floating (please test and find bugs)
...
Details which are missing: A command to hide/show all floating clients,
moving/resizing clients with your mouse holding Mod1 (click anywhere
in the client, not just on its borders), resize/move by keyboard, select
next/previous client by keyboard
2009-05-23 16:34:03 +02:00
Michael Stapelberg
7fde55578d
Bugfix: Correctly handle mode_switch state bit, more debugging output for states
...
We abuse (1 << 8) as mode_switch bit, which is in the range of the
filtered state bits (see previous commit). Therefore, we need to
filter first and then check for mode_switch.
Furthermore, we used 0x2 before, which was just wrong. So, use our
bitmask, not the normal one (0x2).
2009-05-19 15:24:17 +02:00
Michael Stapelberg
d98c514f82
Bugfix: Correctly handle mode_switch state bit, more debugging output for states
...
We abuse (1 << 8) as mode_switch bit, which is in the range of the
filtered state bits (see previous commit). Therefore, we need to
filter first and then check for mode_switch.
Furthermore, we used 0x2 before, which was just wrong. So, use our
bitmask, not the normal one (0x2).
2009-05-19 15:22:50 +02:00
Michael Stapelberg
5038b3c592
Bugfix: keypress: Only use the lower 8 bits of the mask so that mouse buttons are filtered out (Thanks Mirko)
...
Sometimes, when the mouse button gets stuck, state contains the bit for
BUTTON_MASK_1 (or other buttons). We filter them out to continue processing
keys correctly.
2009-05-19 13:52:23 +02:00
Michael Stapelberg
77ab4c0b10
Bugfix: keypress: Only use the lower 8 bits of the mask so that mouse buttons are filtered out (Thanks Mirko)
...
Sometimes, when the mouse button gets stuck, state contains the bit for
BUTTON_MASK_1 (or other buttons). We filter them out to continue processing
keys correctly.
2009-05-19 13:51:03 +02:00
Michael Stapelberg
1089fb7311
Bugfix: Don’t crash when above dock windows (Thanks Mirko)
2009-05-17 10:54:12 +02:00
Michael Stapelberg
b35599004a
Move the manage_*-functions into their own file as they got quite large
2009-05-16 18:25:04 +02:00
Michael Stapelberg
d5d44e66a2
Bugfix: Re-assign dock windows to different workspaces when a workspace is deleted
...
Killing a dock client and having destroyed workspace 1 before (or the workspace
on which the dock client was started when it was not auto-started) crashed i3 before
this bugfix.
2009-05-16 18:12:35 +02:00
Michael Stapelberg
e79cca8f72
Implement putting clients onto specific workspaces ("assign" in the configfile)
...
This closes ticket #39
2009-05-16 17:32:36 +02:00
Michael Stapelberg
610fabf873
Bugfix: Correctly handle col-/rowspanned containers when setting focus (Thanks Ned)
...
This fixes ticket #34
2009-05-09 20:00:20 +02:00
Michael Stapelberg
4cc8d53706
Bugfix: Correctly handle col-/rowspanned containers when setting focus (Thanks Ned)
...
This fixes ticket #34
2009-05-09 19:59:36 +02:00
Michael Stapelberg
b7f94e9b5d
Fix a bug in window placement introduced by the last commit
2009-05-09 19:13:37 +02:00
Michael Stapelberg
3c6c5dff92
Fix a bug in window placement introduced by the last commit
2009-05-09 19:13:14 +02:00
Michael Stapelberg
1256730b4b
Bugfix: Fix display/resizing of colspanned containers
2009-05-09 18:43:50 +02:00
Michael Stapelberg
3ccc0d7794
Bugfix: Fix display/resizing of colspanned containers
2009-05-09 18:43:02 +02:00
Michael Stapelberg
5b4f10eaca
Bugfix: Store width_factor/height_factor per workspace, not per container
...
This is a relatively big change, however all cases should be handled by
now.
Because the function to do graphical resizing got rather large, I’ve created
a new file src/resize.c for it.
This fixes ticket #35 .
2009-05-09 17:50:51 +02:00
Michael Stapelberg
8e1990f058
Bugfix: Store width_factor/height_factor per workspace, not per container
...
This is a relatively big change, however all cases should be handled by
now.
Because the function to do graphical resizing got rather large, I’ve created
a new file src/resize.c for it.
This fixes ticket #35 .
2009-05-09 17:48:35 +02:00
Michael Stapelberg
18da0a3017
Bugfix: Force reconfiguration of all windows on workspaces which needed to be re-assigned (Thanks Mirko)
...
When you disable a Xinerama screen (think of removing a video projector),
the workspaces of that screen need to be re-assigned to another screen.
Previously, the clients affected by this re-assignment did not get re-
configured, which made them appear on the next screen which got configured
at the position of the old one again if you did not switch to the reassigned
workspace before.
So, to reproduce it:
xrandr --output VGA --mode 1280x1024 --right-of LVDS
move windows to the new workspace
xrandr --output VGA --off
xrandr --output VGA --mode 1280x1024 --right-of LVDS
This fixes ticket #36
2009-05-09 13:04:34 +02:00
Michael Stapelberg
d24e47a0f3
Bugfix: Force reconfiguration of all windows on workspaces which needed to be re-assigned (Thanks Mirko)
...
When you disable a Xinerama screen (think of removing a video projector),
the workspaces of that screen need to be re-assigned to another screen.
Previously, the clients affected by this re-assignment did not get re-
configured, which made them appear on the next screen which got configured
at the position of the old one again if you did not switch to the reassigned
workspace before.
So, to reproduce it:
xrandr --output VGA --mode 1280x1024 --right-of LVDS
move windows to the new workspace
xrandr --output VGA --off
xrandr --output VGA --mode 1280x1024 --right-of LVDS
This fixes ticket #36
2009-05-09 13:01:23 +02:00
Michael Stapelberg
8c6c4270a9
Bugfix: Don’t raise clients in fullscreen mode, send correct position to clients in fullscreen mode (Thanks ch3ka, mist)
...
This fixes #38 which only happened for clients which actively tried
to reconfigure themselves.
2009-05-08 23:23:47 +02:00
Michael Stapelberg
89076ea7cf
Bugfix: Don’t raise clients in fullscreen mode, send correct position to clients in fullscreen mode (Thanks ch3ka, mist)
...
This fixes #38 which only happened for clients which actively tried
to reconfigure themselves.
2009-05-08 23:22:40 +02:00
Michael Stapelberg
4b77d93c2e
Bugfix: Resize all containers in the column instead of only the active one (Thanks Ned)
...
This fixes ticket #33 .
2009-05-07 13:51:34 +02:00
Michael Stapelberg
a2ac022208
Bugfix: Resize all containers in the column instead of only the active one (Thanks Ned)
...
This fixes ticket #33 .
2009-05-07 13:46:34 +02:00
Michael Rudolf
3400f0e6bd
Implement autostart using "exec" in config
...
Syntax is "exec <application>", like when creating a binding.
Multiple entries are possible, applications are started in
the specified order.
2009-05-05 20:14:02 +02:00
Michael Stapelberg
3a2b546c9e
Implement a command to travel the focusstack. This can be used like a jumpback.
...
However, it is a bit more flexible obviously. You can specify the
offset of the window you want to go to, to implement workflows like
the following:
* Jump to mutt
* Jump to irssi
* Jump back ("focus 2" would be the command)
2009-05-05 17:25:56 +02:00
Michael Stapelberg
56d637a665
Add debug message for jumping
2009-05-05 16:57:21 +02:00
Michael Stapelberg
f72214725c
Implement jumping to windows by matching their class / title
2009-05-05 16:53:22 +02:00
Michael Stapelberg
e295ab302b
Implement storing WM_CLASS of each client
2009-05-05 16:53:22 +02:00
Michael Stapelberg
12fa69329a
Change syntax of jump to col,row instead of row,col to make it consistent with the internal data structures, document it in commandmode
2009-05-05 16:47:06 +02:00
Michael Stapelberg
79e5d5f29d
Some small style changes to make urs’ code consistent
2009-05-05 16:47:05 +02:00
Urs Ganse
efbe2dfeaa
Added a "jump" command to directly focus a container.
...
Syntax is "jump <ws> <row> <col>".
This is quite handy for clients that you always keep
in the same spot, and like to jump to quite often. The
irc client would be an example.
2009-05-05 16:47:05 +02:00
Michael Stapelberg
4a6a748561
Bugfix: Reconfigure bar window when changing resolutions (Thanks Mirko)
2009-05-03 22:59:50 +02:00
Michael Stapelberg
c3c05db579
Bugfix: Fix crash on new clients (Thanks Mirko)
2009-05-03 22:18:33 +02:00
Michael Stapelberg
d4642ac7d8
Fix a bug caused by not absolutely raising windows (revision 95f4085bc
)
2009-05-03 16:41:53 +02:00
Michael Stapelberg
c27c7fc020
Bugfix: Insert windows at correct position/set focus correctly when moving between containers
2009-05-03 16:24:12 +02:00
Michael Stapelberg
a0d23c53b3
Bugfix: Re-distribute free space when closing customly resized containers, re-evaluate for other containers
...
This fixes ticket #4
2009-05-03 14:29:58 +02:00
Michael Stapelberg
eab895ac9e
Bugfix: Correctly restore focus when leaving fullscreen mode
2009-05-03 02:13:11 +02:00
Michael Stapelberg
95f4085bcd
Raise clients only relatively to the one which was focused before.
...
This should fix ticket #31 .
2009-05-03 00:23:12 +02:00
Michael Stapelberg
99054fb50f
Bugfix: Fix drag&drop in GTK applications (firefox, thunderbird)
...
Thanks to Daniel Wäber’s contribution to wmii:
http://code.suckless.org/hg/wmii/rev/f4f25de0de54
2009-05-02 20:51:55 +02:00
Michael Stapelberg
e91f399609
Bugfix: Correctly restart i3 when not using its absolute path
2009-05-01 16:10:02 +02:00
Michael Stapelberg
c689b93bce
Bugfix: Don’t crash when asprintf() can’t print the window name (Thanks ch3ka)
...
Apparantly, under some conditions (using LANG=en_US.UTF-8, other locale
variables unset), asprintf() says "Invalid or incomplete multibyte or
wide character" when given a string in COMPOUND_TEXT encoding.
For now, we properly handle asprintf-errors (this should have been
before), but there might be a better solution.
2009-04-28 22:41:00 +02:00
Michael Stapelberg
aefae99a11
Bugfix: That should be xcb_keycode_t, not xcb_keysym_t
2009-04-19 21:40:49 +02:00
Michael Stapelberg
69c9db4016
Add conditional for the 0.3.3 → 0.3.4 API fix in libxcb-keysyms
2009-04-19 21:37:34 +02:00
Michael Stapelberg
982e453251
Don’t rely on libxcb-wm any longer, as it got removed in libxcb 0.3.4
...
See http://cgit.freedesktop.org/xcb/util/commit/?id=4c9a707f472e49bc3005354db265a0214071d46b
2009-04-19 20:44:34 +02:00
Michael Stapelberg
6ccee82368
Fix for the fix: Don’t substract height twice
2009-04-18 01:13:57 +02:00
Michael Stapelberg
49d5bdbb08
Bugfix: Correctly adjust state when transferring fullscreen windows to other workspaces (Thanks Mirko)
...
This fixes ticket #27 .
Furthermore, it is ensured that only one client at a time is in fullscreen mode.
2009-04-17 21:01:33 +02:00
Michael Stapelberg
12cc8b78af
Bugfix: Calculation of width in fake_absoute_configure_notify was wrong for windows with aspect ratio (Thanks Mirko)
2009-04-17 19:08:38 +02:00
Michael Stapelberg
36bacc151e
Bugfix: Fullscreen configure notifies mustn’t use absolute position/size
2009-04-16 11:08:11 +02:00
Michael Stapelberg
65b858b9c5
Bugfix: Fix unmapping of dock windows (Thanks Mirko)
2009-04-13 23:27:47 +02:00
Michael Stapelberg
a2d20b6848
Bugfix: Send clients their absolute position/size in generated configure events, not relative
...
This fixes ticket #26 .
2009-04-11 22:37:48 +02:00
Michael Stapelberg
b7e8a63474
Bugfix: Fix warping of cursor when only switching screen, not workspace
2009-04-11 20:55:16 +02:00
Michael Stapelberg
7133974306
Bugfix: Don’t only check for the currently active screen, but check for all screens (Thanks Mirko)
2009-04-11 19:06:26 +02:00
Michael Stapelberg
bb8727cf27
Bugfix: Perform some bounds checking for snapped containers in fix_colrowspan (Thanks jchome)
...
This fixes ticket #22
2009-04-11 14:52:11 +02:00
Michael Stapelberg
bcbe800720
Bugfix: Store dock clients per screen, not per workspace.
...
This fixes ticket #12
2009-04-11 14:29:15 +02:00
Michael Stapelberg
8cc1fcf536
General small cleanups
2009-04-11 14:08:19 +02:00
Michael Stapelberg
e3516d72f5
Bugfix: Don’t change to workspaces on different screens when scrolling through them (Thanks Mirko)
...
This fixes ticket #19
2009-04-11 11:54:30 +02:00
Michael Stapelberg
0216e84327
Bugfix: Warp pointer to the right window
...
This fixes ticket #20
2009-04-11 11:36:58 +02:00
Michael Stapelberg
aace42cd7a
Bugfix: Don’t crash anymore when moving focus to another screen (Thanks, Mirko!)
...
This fixes ticket #24 . The crash appeared only under special conditions:
- The screen on which you switch to must be empty or at least not as
full as the screen on which you were before.
- You switch focus using your mouse.
- You previously selected a column/row which is not availably on the
destination screen (for example (1,1) and switching to an empty
screen).
2009-04-10 21:29:25 +02:00
Michael Stapelberg
ee5cb143c0
Oops. Don’t kill the current workspace
2009-04-09 12:13:14 +02:00
Michael Stapelberg
72d82f3993
Bugfix: Delete empty workspaces even when they’re not the active workspace
...
This fixes ticket #23
2009-04-09 11:19:56 +02:00
Michael Stapelberg
4bd7667445
Bugfix: Correctly set focus when switching between screens
2009-04-08 13:48:37 +02:00
Michael Stapelberg
bd9de8189b
Put documentation for each function in the header files, doxygen-compatible
...
Thanks to psychoschlumpf for the hint. Having comments in the headers
makes it easier to get the big picture when not being interested in the
source.
The doxygen file extracts as much as it can into HTML files. Please note
that this is not official/supported documentation, but rather being nice
to people who have to/want to use doxygen (I don’t).
Let me paste the header of the doxygen file:
You can use this file with doxygen to create a pseudo-documentation
automatically from source. doxygen-comments are not used very extensively
in i3, mostly for the reason that it clutters the source code and has no
real use (doxygen’s output looks really ugly).
So, if you want to use it, here you go. This is however not a supported
document, and I recommend you have a look at the docs/ folder or at
http://i3.zekjur.net/ for more, real documentation.
2009-04-07 19:02:07 +02:00
Michael Stapelberg
cb7b7a73d2
Bugfix: Set focus to the client which was previously focused instead of the next client when moving windows
...
This fixes ticket #21
2009-04-07 16:48:42 +02:00
Michael Stapelberg
28aa13d831
Bugfix: Don’t set focus if it is not necessary.
...
This fixes ticket #13
2009-04-01 12:50:42 +02:00
Michael Stapelberg
755540817e
Implement scrolling on stack windows and on the bar. This implements ticket #18
2009-04-01 12:31:13 +02:00
Michael Stapelberg
75a35319c9
Bugfix: Correctly remove client from container when moving to another workspace
...
This fixes ticket #16
2009-04-01 12:02:22 +02:00
Michael Stapelberg
0520714aa0
Remove comment as popup menus in dzen2 get triggered by enter notify and focus is not needed
2009-04-01 11:51:11 +02:00
Michael Stapelberg
b4e337027e
Bugfix: Apply workspaces to screens when Xinerama is turned off (Thanks Igor, Urs)
2009-03-31 19:17:31 +02:00
Michael Stapelberg
fcc5ce516b
Bugfix: Don’t free xinerama-reply if it is NULL, implement FREE()-macro (Thanks Igor)
2009-03-30 08:27:53 +02:00
Michael Stapelberg
a8478efa34
Bugfix: Correctly filter out the numlock state bit (doesn’t get cleared for some reason)
...
This fixes ticket #14
2009-03-27 15:24:52 +01:00
Michael Stapelberg
9077831ed3
Bugfix: When entering a stack window with the mouse, set the focus to the active client
...
Fixes ticket #17
2009-03-26 23:00:26 +01:00
Michael Stapelberg
e0f7e253ff
Bugfix: Fix memory leak
2009-03-20 17:31:34 +01:00
Michael Stapelberg
eb2ceb95bf
Cleanup makefiles, add version to i3 -v and i3 startup
2009-03-15 23:15:16 +01:00
Michael Stapelberg
21f7b7a724
Disable horizontal resizing for the release version, it still has bugs
2009-03-15 21:31:35 +01:00
Michael Stapelberg
3d260f8e50
Bugfix: re-decorate old client when switching screens
2009-03-15 21:13:15 +01:00
Michael Stapelberg
74465a562a
Bugfix: Only actively change focus if this is the current container
2009-03-15 20:52:43 +01:00
Michael Stapelberg
3a994e4bf7
Implement clicking on the bar to switch workspaces
2009-03-15 17:49:25 +01:00
Michael Stapelberg
76effaf29a
Bugfix: Fix rounding problems when positioning proportional windows
2009-03-15 17:35:16 +01:00
Michael Stapelberg
c02dd93bcc
Bugfix: Query WM_NORMAL_HINTS when managing a window to handle proportional hints which were set before mapping
2009-03-15 12:24:49 +01:00
Michael Stapelberg
cb9c7078be
Implement kill-command to kill the current window, document it
2009-03-14 22:09:36 +01:00
Michael Stapelberg
cc0b060628
Implement exit command, document it in manpage, add it to defaultconfig (Mod1+Shift+e)
2009-03-14 21:31:22 +01:00
Michael Stapelberg
80e2bf708d
Send configure notify after putting a client into fullscreen mode, log at a central place
2009-03-14 17:37:11 +01:00
Michael Stapelberg
4ad1edc5eb
Remove unused variable (fixes warning)
2009-03-13 11:20:21 +01:00
Michael Stapelberg
e3085b4f75
Fix fullscreen for xpdf (at least on debian, with proper _NET_WM_STATE hints)
...
xpdf sets the _NET_WM_STATE before actually mapping the window. i3 only checked
for changes of this hint, but not if it is already set when intially managing
the window.
Note that you need to patch your xpdf to support _NET_WM_STATE, because, while
only being reported at 2004, upstream still did not merge the patch *grrr*
See this debian bug report:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=247602
Or directly download the patch from:
http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=61;filename=31_fullscreen.dpatch;att=1;bug=247602
2009-03-13 04:51:17 +01:00
Michael Stapelberg
9c755dcb0d
Fix compilation
2009-03-13 04:51:09 +01:00
Michael Stapelberg
14834c3530
Fake more configure notifies (makes xpdf work better)
2009-03-13 00:39:16 +01:00
Michael Stapelberg
755709c86d
Bugfix: Completely ignore legacy hints as soon as the client uses _NET_WM_NAME
2009-03-12 16:44:44 +01:00
Michael Stapelberg
e1252b51da
Move i3lock in its own repository
2009-03-11 22:21:50 +01:00
Michael Stapelberg
cc2c63b860
Handle legacy window titles by rendering them not unicode-compatible.
2009-03-11 21:31:54 +01:00
Michael Stapelberg
17bcdd8b0f
Implement cleaning up the list of ignored events
2009-03-11 20:06:30 +01:00
Michael Stapelberg
12970211c4
Fix misnomer (window_type_handler → handle_window_type), resolve TODO
2009-03-11 19:39:32 +01:00
Michael Stapelberg
969d6f202e
Move i3lock to src/i3lock, import dmenu-3.9 as i3menu
2009-03-11 19:03:24 +01:00
Michael Stapelberg
c0aa9cac61
Implement moving containers, implement moving windows to the top if top-most, change config to use Mod3
2009-03-11 18:56:31 +01:00
Michael Stapelberg
49b56166dc
Implement moving clients to the left if they are leftmost
2009-03-11 01:55:10 +01:00
Michael Stapelberg
9c0d5b6e5e
Bugfix: Redecorate the last focused window of the container we are switching into
2009-03-11 00:56:39 +01:00
Michael Stapelberg
ec290cbfa9
Bugfix: Don’t handle mouse click events inside the titlebar
2009-03-11 00:45:49 +01:00
Michael Stapelberg
38c8541807
Bugfix: Change the event mask to ignore enter notifies when rendering the layout and changing workspaces
2009-03-11 00:20:56 +01:00
Michael Stapelberg
408b2bdb39
Bugfix: Eliminate race condition, fix dock windows
...
There was a race condition when mapping a window and not setting the event mask
before. Therefore, the ReparentNotify and (more important) the UnmapNotify generated
by reparenting were not received, thus leaving the awaiting_useless_unmap variable
of the client "true". To just make it work, in previous commits the DestroyNotify
handler was introduced. Fortunately, with fixing this race condition by first
setting the event mask and mapping the window afterwards, we can remove this handler.
As for the dock windows, there were quite some occurences were client->container
was used without checking if the client is inside a container at all.
Furthermore, the client’s strut containing the space to reserve at the screen edge
is now checked and the desired height is set to the window’s height if the strut
contains 0 or if no strut was specified at all.
2009-03-10 20:56:25 +01:00
Michael Stapelberg
434345aa30
Ignore notify events which are not in mode XCB_NOTIFY_MODE_NORMAL
2009-03-10 11:26:52 +01:00
Michael Stapelberg
441f406a4b
Fix warning (typecast)
2009-03-10 09:51:00 +01:00
Michael Stapelberg
c025678177
Major change: Redirect events instead of handle the notifies.
...
By specifying XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, the window manager
will get map request events instead of map notify events, and therefore
can act sooner (the window won’t be positioned on the screen and moved
afterwards).
Furthermore, this fixes some problems with GIMP/VLC (and probably others)
which caused endless loops.
Also, events which should be ignored are now saved in a queue rather than
saving just the last event. This should eliminate race conditions.
Note that there is a new FIXME in src/handlers.c. Some windows generate
unmap notify events when reparenting while others don’t. We need to
understand, document and implement a more correct way to handle this.
2009-03-10 00:51:15 +01:00
Michael Stapelberg
d38636439c
Fix warning
2009-03-09 17:50:00 +01:00
Michael Stapelberg
b800408a97
Bugfix: Handle all events when dragging to resize, correctly set OVERRIDE_REDIRECT
2009-03-09 08:50:33 +01:00
Michael Stapelberg
3a34cfc603
Bugfix: Draw bar at the correct position, handle expose events for bars
2009-03-09 08:24:05 +01:00
Michael Stapelberg
00f08cba75
Bugfix: Correctly free containers, the bug was not freeing when not moving
2009-03-09 08:14:00 +01:00
Michael Stapelberg
71993c9b48
Implement wrapping left/right/up/down across screens
2009-03-09 07:39:19 +01:00
Michael Stapelberg
38d903aea5
Update comment
2009-03-09 07:18:04 +01:00
Michael Stapelberg
cc78664f9d
Bugfix: Use memcmp() instead of strcmp(), use new_len * 2 to check all bytes
2009-03-09 07:02:47 +01:00
Michael Stapelberg
2cf3a9dd96
Bugfix: Correctly free containers when shrinking the table
2009-03-09 06:49:11 +01:00
Michael Stapelberg
65595c61a8
Bugfix: Don’t strcmp() if client->name == NULL
2009-03-09 06:41:04 +01:00
Michael Stapelberg
6df039c3b5
Convert window title to UCS-2 when updating it, don’t update it if it didn’t change
2009-03-09 06:26:32 +01:00
Michael Stapelberg
4f8e704017
s/atomar/atomic
2009-03-08 21:01:06 +01:00
Michael Stapelberg
cefc1dabac
Bugfix: Use a new variable called new_position and initialize it correctly when resizing
2009-03-08 20:59:49 +01:00
Michael Stapelberg
71221baca0
Fix race condition when updating client->name
2009-03-08 20:04:01 +01:00
Michael Stapelberg
9e74378dd0
Bugfix: Use _NET_WM_NAME (UTF-8) rather than WM_NAME (COMPOUND_TEXT). Only render client titles, if they are set
2009-03-08 19:07:33 +01:00
Michael Stapelberg
4e12c9b39c
Fix the warning on SUS-compatible systems (char**) and on NetBSD (const char**)
2009-03-08 17:47:45 +01:00
Michael Stapelberg
f85990b27a
Fix warnings, update DEPENDS, update Makefile for NetBSD
2009-03-08 17:30:17 +01:00
Michael Stapelberg
6f630a3335
Implement UTF-8-clean window titles
2009-03-08 00:49:11 +01:00
Michael Stapelberg
35c04b448a
Don’t start a terminal on startup
2009-03-07 05:50:19 +01:00
Michael Stapelberg
1f3ce94027
Bugfix: Correctly place new windows while other windows are in fullscreen mode
2009-03-07 05:49:13 +01:00
Michael Stapelberg
6abcc5f656
Fix some bugs found by using raster’s wm_torture
2009-03-07 02:44:46 +01:00
Michael Stapelberg
a411ed24cb
Bugfix: Correctly check for empty containers and unmap the stack_win
2009-03-06 19:08:59 +01:00
Michael Stapelberg
017a0c0d08
Don’t set focus outside of the current container
2009-03-06 17:13:20 +01:00
Michael Stapelberg
97f23f549b
Bugfix: decorate_window() needs a flush of course
2009-03-06 17:02:43 +01:00
Michael Stapelberg
bf92a0c617
Don’t switch focus when in fullscreen mode
2009-03-06 16:53:47 +01:00
Michael Stapelberg
4259e58655
Bugfix: One warning was left
2009-03-06 16:36:05 +01:00
Michael Stapelberg
ee1f64a94e
Bugfix: return value was missing
2009-03-06 16:21:39 +01:00
Michael Stapelberg
fc3338d3c1
Bugfix: Missing flush after render_container()
2009-03-06 06:56:13 +01:00
Michael Stapelberg
96ac9f9066
Implement slog() and the LOG() macro, convert printf() to LOG()
2009-03-06 06:46:43 +01:00
Michael Stapelberg
0831f3e129
Implement handling the size hints so that aspect ratio is used correctly, fix rendering on stacks
2009-03-06 06:06:19 +01:00
Michael Stapelberg
3684abec1a
Bugfix: Fix rendering (needed a flush)
2009-03-05 20:07:57 +01:00
Michael Stapelberg
d2d6c0de12
Enable switching to containers when the current container has only one client
2009-03-05 19:47:16 +01:00
Michael Stapelberg
c5dffde101
Bugfix: Correct boundary checking for increasing col/rowspan
2009-03-05 17:24:04 +01:00
Michael Stapelberg
906914fe61
Bugfix: Rendering of colspan/rowspan was wrong
2009-03-05 17:17:37 +01:00
Michael Stapelberg
76c201f940
Bugfix: Correctly set currently_focused when clients are destroyed
2009-03-05 17:08:57 +01:00
Michael Stapelberg
841ad55f4a
Move HAS_CHANGED into a function
2009-03-05 16:23:26 +01:00
Michael Stapelberg
e643d34ddc
Use unchecked versions for more speed
2009-03-05 03:33:15 +01:00
Michael Stapelberg
56393c823e
Make colorpixels independent from clients
2009-03-05 02:58:12 +01:00
Michael Stapelberg
e4627bcaed
Don’t re-initialize Xinerama on every configurenotify. This needs to be fixed properly.
2009-03-05 02:17:10 +01:00
Michael Stapelberg
1343b77dbb
Bugfix: Some memory leaks / invalid accesses
2009-03-05 01:48:30 +01:00
Michael Stapelberg
17bca23a8c
Implement a focus stack, correctly free table columns/rows
2009-03-05 01:20:13 +01:00
Michael Stapelberg
bde67a179e
Implement wrapping, selecting containers is now Mod1+Ctrl+h/j/k/l
2009-03-04 23:45:44 +01:00
Michael Stapelberg
91f98cc597
Implement auto-destroying of empty workspaces
2009-03-04 22:52:36 +01:00
Michael Stapelberg
8b34eb5fc2
Bugfix: Reconfigure all clients in stacking, correctly ignore events, event when for the root window
2009-03-04 22:41:04 +01:00
Michael Stapelberg
0344ca3f36
Bugfix: Border presses weren’t correctly handled
2009-03-04 21:56:27 +01:00
Michael Stapelberg
03e48b8bfe
Bugfix: Reconfigure x/y of stack_windows when necessary
2009-03-04 21:49:29 +01:00
Michael Stapelberg
8fe84697f3
Bugfix: Correctly destroy and remove stack_windows when the container is cleaned up
2009-03-04 21:30:02 +01:00
Michael Stapelberg
0ce298250b
Bugfix: Correctly initialize new containers
2009-03-04 21:00:32 +01:00
Michael Stapelberg
3090f03ed2
Bugfix: Fix several bugs in table_cleanup()
2009-03-04 20:41:54 +01:00
Michael Stapelberg
a3f47fa6f0
Bugfix: Rendering error when resizing a column near a stacked column
2009-03-04 18:50:52 +01:00
Michael Stapelberg
bd9b90d285
Fix datatype for cursor
2009-03-04 18:09:04 +01:00
Michael Stapelberg
f90563011f
Implement option parsing (-c <configfile>)
2009-03-04 16:06:39 +01:00
Michael Stapelberg
a02b861826
Use "conn" for xcb_connection and "event" for xcb_event_* variables everywhere
2009-03-04 15:45:12 +01:00
Michael Stapelberg
45827607dc
Use default cursor (XC_left_ptr) for all windows
2009-03-04 15:28:50 +01:00
Michael Stapelberg
f45e706c48
Merge font.c into xcb.c
2009-03-04 14:52:04 +01:00
Michael Stapelberg
bb83dd6727
Implement switching to different screens when focusing left/right/up/down at the edge of a screen
2009-03-04 13:06:14 +01:00
Michael Stapelberg
05747c4a1c
Implement an internal bar which displays the workspaces
2009-03-04 12:09:43 +01:00
Michael Stapelberg
3d774ba021
Implement clicking on titlebars in stack windows to focus
2009-03-04 09:31:00 +01:00
Michael Stapelberg
415b5cc0e8
Load configuration file from ~/.i3/config or /etc/i3/config
2009-03-04 09:16:18 +01:00
Michael Stapelberg
3c6d4f7663
Don’t put the client’s X11 ID into the titlebar
2009-03-04 09:02:49 +01:00
Michael Stapelberg
3911d18982
Implement moving windows to other workspaces
2009-03-04 08:59:03 +01:00
Michael Stapelberg
6653c3a686
Save unnecessary redecorations
2009-03-04 08:05:49 +01:00
Michael Stapelberg
3b50615a71
Implement Xinerama screen changes
2009-03-03 23:51:02 +01:00
Michael Stapelberg
1157229888
Bugfix: Don’t raise the active window when there is a fullscreen client
2009-03-03 04:25:32 +01:00
Michael Stapelberg
a12ca34d1c
Bugfixes: Various fixes when cleaning up the table/rendering
2009-03-03 03:40:57 +01:00
Michael Stapelberg
16a514b9c1
Use a different color for focused windows in not focused containers, includes bugfixes for re-decoration
2009-03-03 02:28:26 +01:00
Michael Stapelberg
1d9dc05b91
Little cleanups
2009-03-03 02:05:35 +01:00
Michael Stapelberg
dd325879d1
Bugfix: Override client’s moves/resizes in configure_notify_event
2009-03-03 01:14:11 +01:00
Michael Stapelberg
be21e784d9
Bugfix: Don’t crash when we’re already in stacking mode and go into stacking
2009-03-02 03:33:29 +01:00
Michael Stapelberg
ac6567c0a6
Documentation update: Make some comments more understandable, more docs
2009-03-01 22:00:54 +01:00
Michael Stapelberg
6868534fcb
Draw stacking borders correctly
2009-03-01 03:55:29 +01:00
Michael Stapelberg
df402bacf7
Bugfix: Use HAS_CHANGED on all occurences
2009-03-01 01:56:20 +01:00
Michael Stapelberg
cb6ea9861d
Bugfix: Fix various bugs when switching workspaces
2009-02-28 22:11:48 +01:00
Michael Stapelberg
4ad7f8fb1a
Bugfix: Correctly reconfigure clients when it’s necessary
2009-02-28 15:47:51 +01:00
Michael Stapelberg
327a53c849
More Debug-output
2009-02-28 13:44:43 +01:00
Michael Stapelberg
61c089e982
Bugfix: Raise the stack win when its size changes
2009-02-28 13:03:44 +01:00
Michael Stapelberg
b651b132bc
Update TODO, fix parsing in commandmode for moving windows to workspaces vs. switching
2009-02-28 02:46:36 +01:00
Michael Stapelberg
d8d4d0182d
Revert 43d471b9ab
and apply correct bugfix:
...
Before, all clients were reconfigured to just raise them, when focus should
be set. However, this generated lots of notify events, which in turn lead
to an endless loop of setting focus, reconfiguring, setting focus, …
2009-02-28 02:40:07 +01:00
Michael Stapelberg
74c973e8c6
Bugfix: Insert the new client after the currently active one, not always at the end
2009-02-28 02:24:38 +01:00
Michael Stapelberg
cdb92e6a49
Correctly disable buffering for stdout
2009-02-28 02:17:55 +01:00
Michael Stapelberg
43d471b9ab
Bugfix: Raise clients only when needed
2009-02-28 02:15:14 +01:00
Michael Stapelberg
67fbec2061
Bugfix: Correctly unmap/remap the stack_win when a container becomes empty
2009-02-28 01:38:53 +01:00
Michael Stapelberg
30d386138b
Bugfix: Correctly update window titles when in stacking
2009-02-28 01:23:09 +01:00
Michael Stapelberg
4fb4c579f8
Bugfix: Only ignore enter_notify events for the parent windows when in stacking
2009-02-28 01:19:50 +01:00
Michael Stapelberg
d8a6f41e39
Bugfix: Set focus when table was shrinked and CUR_CELL might have been shrinked
2009-02-28 01:12:05 +01:00
Michael Stapelberg
e4b637b67b
Bugfix: Fix two bugs in fullscreen mode
2009-02-28 01:01:06 +01:00
Michael Stapelberg
10c5702a78
Implement restart-command to restart i3 without having to end your session
2009-02-27 22:40:48 +01:00
Michael Stapelberg
248b2e27b9
Bugfix: Boundary checking for current_row and current_col when shrinking table
2009-02-26 22:23:41 +01:00
Michael Stapelberg
aea8cb9c25
Bugfix: Unset fullscreen_client when closed
2009-02-26 01:10:41 +01:00
Michael Stapelberg
1335e4a4c9
Grab XCB_GRAB_SYNC and replay the event so it doesn’t get lost
2009-02-25 19:11:49 +01:00
Michael Stapelberg
c859174965
Bugfix: Don’t call set_focus when to_focus is NULL
2009-02-25 17:44:17 +01:00
Michael Stapelberg
cb71af7dc2
Bugfix: Free()d wrong variable
2009-02-25 17:35:33 +01:00
Michael Stapelberg
0edc523885
Bugfix: Correctly map/unmap stack windows
2009-02-25 02:05:08 +01:00
Michael Stapelberg
90fa720c6f
Bugfix: when a window is unmapped, correctly pass focus to the next one and cleanup the table
2009-02-25 01:44:34 +01:00
Michael Stapelberg
e77ebb6c71
Implement configuration file parsing
2009-02-25 00:50:30 +01:00
Michael Stapelberg
dadace2fa3
Implement automatic cleaning of the table
2009-02-24 20:29:30 +01:00
Michael Stapelberg
aa18ca0889
More documentation, cleanups, and a cache for get_colorpixel()
2009-02-24 14:18:08 +01:00
Michael Stapelberg
2dcf4ad62f
Bugfix: That has to be _reply
2009-02-24 13:35:35 +01:00
Michael Stapelberg
36aec13860
Cleanups, documentation
2009-02-24 01:24:28 +01:00
Michael Stapelberg
0e3a378c39
Implement stacking
2009-02-24 00:30:04 +01:00
Michael Stapelberg
6e81d1c5e4
s/…/./ where it makes sense
2009-02-23 17:23:57 +01:00
Michael Stapelberg
07b92c2792
Don’t assign ->container for dock-windows
2009-02-23 03:44:10 +01:00
Michael Stapelberg
8b0bc8c3ff
Implement vertical resize
2009-02-23 03:27:59 +01:00
Michael Stapelberg
404f19a376
Beautify handle_key_press
2009-02-23 02:55:10 +01:00
Michael Stapelberg
656bdc5090
Implement colspan for resizing
2009-02-23 02:23:16 +01:00
Michael Stapelberg
695494606d
Fix: Calculation of unoccupied space has to depend on current row/col
2009-02-23 02:09:24 +01:00
Michael Stapelberg
fe0485f9e5
Fix some movement/rendering bugs
2009-02-23 01:41:26 +01:00
Michael Stapelberg
1a0817eb39
Correctly handle _NET_WM_WINDOW_TYPE == _NET_WM_WINDOW_TYPE_DOCK (for dzen2 -dock)
2009-02-23 00:18:13 +01:00
Michael Stapelberg
62c2848211
Document save set
2009-02-18 22:44:14 +01:00
Michael Stapelberg
d88c49682f
Linux needs -D_GNU_SOURCE for some functions, so enable it in Makefile
2009-02-16 03:35:16 +01:00
Michael Stapelberg
6b1069cd47
Implement horizontal resizing
2009-02-16 03:28:07 +01:00
Michael Stapelberg
7216738778
Implement exit_if_null using variadic macros, fix compilation
2009-02-15 22:52:33 +01:00
Michael Stapelberg
28ea379c10
Update TODO and header-comments
2009-02-15 03:07:29 +01:00
Michael Stapelberg
9595ead9d4
OK, it could still be improved ;-)
2009-02-15 02:56:59 +01:00
Michael Stapelberg
742cef2881
Finalize font.c
2009-02-15 02:52:52 +01:00
Michael Stapelberg
0917cdda36
Cleanup load_font(), make it caching
2009-02-15 02:40:03 +01:00
Michael Stapelberg
26944bea99
Use c99
2009-02-15 02:30:18 +01:00
Michael Stapelberg
658c302031
Bugfix: Correctly disable Xinerama, use TAILQ_HEAD_INITIALIZER where possible
2009-02-15 02:12:14 +01:00
Michael Stapelberg
09cd7bd2d0
Implement Xinerama (workspaces have a specific screen)
2009-02-15 01:58:09 +01:00
Michael Stapelberg
18543c6bce
Implement fullscreen mode (Mod1+f)
2009-02-14 20:12:50 +01:00
Michael Stapelberg
d06fe8bc9e
Bugfix: Correctly handle unmap, don’t apply attribute XCB_EVENT_MASK_BUTTON_PRESS
...
Those two fix problems seen with mplayer
2009-02-14 19:55:18 +01:00
Michael Stapelberg
9e4b7f35ca
Don’t use current workspace
2009-02-14 08:39:50 +01:00
Michael Stapelberg
df7621d5a5
Implement fullscreen (_NET_WM_STATE_FULLSCREEN)
2009-02-14 08:38:07 +01:00
Michael Stapelberg
031cf4ccda
More error checking, bugfix for mplayer (use visual CopyFromParent)
2009-02-14 03:46:20 +01:00
Michael Stapelberg
fb4c851e2a
Add vim hints, copyright notice to each file, add LICENSE, retab! everything
2009-02-14 02:33:31 +01:00
Michael Stapelberg
8881068dc3
Various code improvements
2009-02-14 02:19:04 +01:00
Michael Stapelberg
4589c26558
Environment filtering is not needed. Instead, open applications through SHELL, double-fork
2009-02-14 01:36:12 +01:00
Michael Stapelberg
651bcc375f
Adjust RFC/TODO, forgot _GNU_SOURCE in layout.c
2009-02-13 19:15:32 +01:00
Michael Stapelberg
82dd64ff24
Move stuff to include/ and src/
2009-02-13 19:09:25 +01:00