Michael Stapelberg
42d355f2b7
normalize modelines/headers across src/*.c
2011-10-22 23:40:02 +01:00
Peter Bui
9d67ae2202
Focus new window only if it is on a visible workspace on the current focused output.
2011-10-18 18:56:39 +01:00
Michael Stapelberg
4204b8e2b0
Get the _NET_STARTUP_ID in manage_window, get the corresponding workspace
2011-10-10 15:54:17 +01:00
Michael Stapelberg
b3adaa2983
Implement the window_role criterion (checks WM_WINDOW_ROLE)
...
Closes : #446
This is handy for matching specific windows of a multi-window application, for
example only Pidgin’s buddy list window.
2011-09-18 16:05:10 +01:00
Michael Stapelberg
6d91a6248e
Merge branch 'master' into next
2011-08-26 02:02:50 +02:00
Michael Stapelberg
7741608a9d
Bugfix: Only consider tiling windows when attaching tiling windows to workspaces (Thanks Tucos)
...
Fixes #436
2011-08-26 02:01:06 +02:00
Michael Stapelberg
22e30061f3
Merge branch 'master' into next
2011-08-17 16:37:09 +02:00
Michael Stapelberg
f172359ba5
Bugfix: Don’t change focus when assigned windows start on invisible workspaces (+test) (Thanks ioflag)
...
Fixes #468
2011-08-17 16:36:19 +02:00
Michael Stapelberg
2abe23d6ff
Merge branch 'master' into next
2011-08-17 01:52:45 +02:00
Michael Stapelberg
7951445849
xcb: use predefined XCB_ATOM_ atoms, don’t request them
2011-08-17 01:41:19 +02:00
Mateusz Poszwa
cd5ebc2dca
src/manage.c: properly set automatic flag when calling floating_enable()
2011-08-09 09:29:47 +02:00
Michael Stapelberg
7180dca3b2
Bugfix: Correctly free the xcb_get_geometry reply when not managing a window
2011-07-31 20:39:33 +02:00
Michael Stapelberg
52b3646ecc
xcb: don’t use the _unchecked variant for requests which have a reply
2011-07-31 18:19:41 +02:00
Michael Stapelberg
7f3f7c26b6
Bugfix: free replies after using them
2011-07-31 18:17:56 +02:00
Michael Stapelberg
71741d7620
Bugfix: Only set ENTER_WINDOW event mask for mapped windows (fixes focus problems)
...
Fixes focus problems when switching to empty workspaces or when going in/out of
fullscreen.
2011-07-04 13:41:02 +02:00
Michael Stapelberg
fb9d77305e
Implement 'fullscreen global'
2011-06-10 18:27:20 +02:00
Michael Stapelberg
58e02e84e2
Bugfix: Don’t break focus stack when inplace restarting with fullscreen windows (Thanks mike)
2011-06-03 01:48:55 +02:00
Michael Stapelberg
1585d942ea
Make workspace_layout handle all cons at workspace level, not only the first one (+test)
...
This makes opening new windows on workspace level and moving windows to the
right/left more like in the old i3.
2011-06-02 17:21:38 +02:00
Michael Stapelberg
18ec15b0f9
x: fix race condition where the new event mask was not set directly after reparenting
2011-05-29 13:20:41 +02:00
Michael Stapelberg
7ae0c9c973
Bugfix: Check swallows before assignments when managing windows (Thanks julien)
...
Fixes #395 (empty containers on restart when assigned windows are visible)
2011-05-25 21:00:53 +02:00
Michael Stapelberg
7208d01048
remove unused code from manage.c
2011-05-25 20:47:47 +02:00
Michael Stapelberg
2c68c234ea
Implement assignments for (named) workspaces, with '~' compatibility (floating)
2011-05-23 18:41:17 +02:00
Michael Stapelberg
5ae4620a24
Time Lord technology: for_window config directive to run arbitrary cmds
...
An example to set all XTerms floating:
for_window [class="XTerm"] mode floating
To make all urxvts use a 1-pixel border:
for_window [class="urxvt"] border 1pixel
A less useful, but rather funny example:
for_window [title="x200: ~/work"] mode floating
The commands are not completely arbitrary. The commands above were tested,
others may need some fixing. Internally, windows are compared against your
criteria (class, title, …) when they are initially managed and whenever one of
the relevant values change. Then, the specified command is run *once* (per
window). It gets prefixed with a criteria to make it match only the specific
window that triggered it. So, if you configure "mode floating", i3 runs
something like '[id="8393923"] mode floating'.
2011-05-15 20:10:25 +02:00
Michael Stapelberg
3d1acd6c2f
re-implement assigning windows to workspaces
2011-05-02 23:29:26 +02:00
Michael Stapelberg
6419e42f6d
bugfix: fix race condition where window titles were not correctly updated
...
Fixes : #351
2011-04-01 21:39:58 +02:00
Michael Stapelberg
82e286ed7c
Only send WM_TAKE_FOCUS when the client supports it in the protocols atom
...
Fixes opening xterm, for example
2011-03-18 17:07:56 +01:00
Michael Stapelberg
0639a7d95b
Make i3 compatible with the very latest xcb
...
This involves:
• Compiling with xcb-util instead of xcb-{atom,aux} (they merged the libraries)
• Not using xcb-{event,property} anymore (code removed upstream)
• Not using the predefined WINDOW, CARDINEL, … atoms (removed upstream)
• Using the new xcb_icccm_* data types/functions instead of just xcb_*
(for example xcb_icccm_get_wm_hints instead of xcb_get_wm_hints)
Also I refactored the atoms to use x-macros.
2011-03-18 14:39:27 +01:00
Fernando Tarlá Cardoso Lemos
b4e3dfd76b
Add the "created" parameter to workspace_get.
...
If created is not NULL, *created is set to whether or not the
workspace has been just created.
2011-03-14 17:07:53 +01:00
Michael Stapelberg
0a24057241
When leaving fullscreen, set focus to con which was opened during fullscreen (+testcase) (Thanks dothebart)
2011-03-07 00:06:27 +01:00
Michael Stapelberg
287d7f9527
Bugfix: Don’t focus new cons when there is a fullscreen con (Thanks dothebart)
...
Also, remove the focus_it parameter from tree_open_con, it makes more sense to
call con_focus outside of the function.
2011-03-06 23:26:02 +01:00
Michael Stapelberg
8ce5f2a21b
Bugfix: Fix crash with transient dock clients caused by 7154fecbb
2011-03-06 22:02:02 +01:00
Michael Stapelberg
7154fecbbf
Implement the popup_during_fullscreen option, set default to leave_fullscreen
...
Fixes #333
2011-03-06 15:46:06 +01:00
Michael Stapelberg
caa1ac1a9f
Use the original geometry for floating windows
2011-03-03 16:22:22 +01:00
Michael Stapelberg
ffc71859a3
Implement support for top/bottom dock clients (according to _NET_WM_STRUT_PARTIAL or requested position)
2011-02-21 14:27:32 +01:00
Michael Stapelberg
b6f81fe43c
Bugfix: restore the original width/height with X11 border when restarting (Thanks Merovius)
2011-02-21 03:13:27 +01:00
Michael Stapelberg
35e79c87c8
Place dock clients on the output corresponding to their geometry request
2011-02-21 01:28:29 +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
228b5c51ff
change many LOG/printf messages to use DLOG
2011-01-07 20:58:58 +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
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
33eb00d6ae
automatically set windows with client_leader to floating
2010-11-14 20:15:51 +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
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
Michael Stapelberg
57e602a97c
respect position in geometry of floating windows
2010-11-12 20:55:26 +01:00
Michael Stapelberg
5c2758af26
Implement support for size hints (including test case)
2010-10-11 21:32:29 +02:00
Michael Stapelberg
160c12ed9a
recognize dock windows (and support matching them)
2010-08-15 12:18:27 +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
14a312c152
more debug output
2010-06-02 17:04: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
8c5d824fa8
Ignore UnmapNotify events generated by reparenting
2010-05-14 23:37:56 +02:00
Michael Stapelberg
b0f47b25a0
throw out some old code from manage.c, cleanups
2010-04-17 18:26:46 +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
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
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
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
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
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
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
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
e7e9e8e49d
ewmh: correctly set _NET_ACTIVE_WINDOW
2009-12-25 15:19:39 +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
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
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
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
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
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
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
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
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
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
ca8a194c56
Bugfix: Correctly grab the right mouse button for resizing windows (Thanks xeen)
2009-09-05 17:32:26 +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
44d9111d65
More log cleanups
2009-08-11 15:23:58 +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
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
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
78b9e7f5ce
Bugfix: dock clients need to have borderless = true
2009-08-05 19:28:21 +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
7cfe520755
Bugfix: Don’t hide assigned clients to inactive but visible workspaces (Thanks xeen)
2009-08-02 22:31:52 +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
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
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
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
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
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
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
8e19f8dabf
floating: Don’t let clients become hidden under stack windows or fulscreen clients (Thanks Mirko)
2009-06-19 23:18:43 +02:00