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