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