Michael Stapelberg
e7bf93163d
Make path configurable
2009-07-28 22:09:53 +02:00
Michael Stapelberg
a43846ea27
Initial implementation of IPC via UNIX domain sockets
2009-07-28 20:51:29 +02:00
Michael Stapelberg
1befbb2a50
Use errx() instead of an own die() function
2009-07-28 14:03:50 +02:00
Michael Stapelberg
e6198ad6c8
Some little fixes for bapt’s patch, use predict_text_width, support UTF8, pre-render workspace names
2009-07-28 13:55:09 +02:00
Bapt
ddcb11baba
Implements configurable named workspaces
2009-07-28 13:08:03 +02:00
Michael Stapelberg
33e536113d
Bugfix: Fix NULL-pointer dereferencing introduced by commit 874941 (Thanks tsdh)
2009-07-28 00:44:57 +02:00
Michael Stapelberg
76664df3df
Bugfix: Make assignments work again (Thanks badboy)
2009-07-26 02:12:45 +02:00
Michael Stapelberg
270922bf61
Bugfix: Don’t crash on floating windows, set focus correctly
2009-07-25 22:53:33 +02:00
Michael Stapelberg
1e095ece84
Merge branch 'next' of zekjur:/git/i3 into next
2009-07-25 22:31:01 +02:00
Michael Stapelberg
163c9ad7db
Map window/its decoration *after* calling render_layout()
...
Thus, no more flickering because the window was first mapped and then
moved. Especially users of multiple monitors should be happy now ;-).
Rather radical change, though, so be prepared for problems.
2009-07-25 22:29:28 +02:00
Michael Stapelberg
ed60b31fd0
Implement predict_text_width, which will be needed for named workspaces
2009-07-24 19:49:06 +02:00
Michael Stapelberg
ce501c9de9
Some fixes/reformatting for bapt’s patch
2009-07-23 20:36:48 +02:00
bapt
40750e227d
Implements a reload command
2009-07-23 18:46:21 +02:00
Michael Stapelberg
9db8535b4c
Some little fixes (mostly formatting) for bapt’s patch
2009-07-22 00:16:16 +02:00
Bapt
3e262913e8
Implements next-previous workspace
2009-07-21 23:50:08 +02:00
Michael Stapelberg
ffcc8bbc3a
Implement putting clients into floating mode at a specific workspace
...
This changes syntax of the assign command a bit. Old configurations
will continue to work. See the userguide.
2009-07-21 16:43:20 +02:00
Michael Stapelberg
008a2665c1
Bugfix: Strip trailing whitespace when parsing assignments (Thanks bapt)
2009-07-21 16:05:43 +02:00
Michael Stapelberg
b893ec9987
Bugfix: Repeatedly try to find screens if none are available (Thanks mxf)
...
When rotating your screens (xrandr --output LVDS1 --rotate right), sometimes
the X server returned no screens which lead to an exit(1) of i3. Now, i3
tries to find screens for up to 5 seconds and only quits afterwards.
2009-07-21 15:59:11 +02:00
Michael Stapelberg
87494107b3
Bugfix: Correctly redecorate clients when changing focus (Thanks msi)
...
When moving your cursor from one tiling window to another tiling
window via a floating client, the old tiling window was not re-
decorated correctly
2009-07-21 15:49:08 +02:00
Michael Stapelberg
5b51c8c6f0
optimization: Render on pixmaps and copy the result on Stack_Wins
...
This should speed up the rendering of Stack_Wins with many window
decorations and it should considerably reduce flicker.
2009-07-17 18:32:40 +02:00
Michael Stapelberg
0434b6ea3d
Bugfix: That last push was one step too fast. Forgot to check parameter.
2009-06-29 22:23:24 +02:00
Michael Stapelberg
91aeed0442
Resolve documentation FIXMEs, remove an unnecessary struct
2009-06-29 22:20:35 +02:00
Michael Stapelberg
0305c1dc0e
Bugfix: Use ->workspace instead of ->container
2009-06-28 01:58:00 +02:00
Michael Stapelberg
acf1eb0c92
Don’t allow floating clients to reconfigure themselves when in fullscreen (Thanks Volker)
2009-06-28 01:52:06 +02:00
Michael Stapelberg
eae0b18dbd
Use better error messages for s* (Thanks Curtis)
2009-06-27 10:54:34 +02:00
Michael Stapelberg
28c4b045d6
Merge branch 'next' (3.β is stable now)
2009-06-26 13:27:06 +02:00
Michael Stapelberg
aaccc0e62c
Bugfix: Correctly check coordinates for resizing floating windows (Thanks Mirko)
2009-06-26 12:14:20 +02:00
Michael Stapelberg
dd053c254b
Bugfix: When a window is fullscreen, put new windows after that one in focus stack (Thanks Volker)
2009-06-26 04:39:59 +02:00
Michael Stapelberg
ab48d714cf
Bugfix: Don’t lose focus when putting windows into floating
2009-06-26 04:34:36 +02:00
Michael Stapelberg
8f87c212be
Bugfix: When moving, first check boundaries, then check for col-/rowspan (Thanks Mirko)
2009-06-26 04:21:30 +02:00
Michael Stapelberg
27a418f454
Bugfix: Correctly remove fullscreen floating clients when unmapping (Thanks Volker)
2009-06-26 04:15:21 +02:00
Michael Stapelberg
8659419ef6
Bugfix: Correctly handle moving fullscreen client onto another screen (Thanks dirkson)
2009-06-25 13:46:47 +02:00
Michael Stapelberg
aa2f20ce26
Bugfix: Correctly handle floating windows when unmapping, fix focus bug when moving
2009-06-25 13:31:58 +02:00
Michael Stapelberg
b16ab02cc7
Bugfix: Correctly initialize screens when Xinerama is disabled (Thanks Moredread)
2009-06-24 23:50:04 +02:00
Michael Stapelberg
777eedf0f4
Bugfix: Fix selecting col-/rowspanned containers
2009-06-24 21:10:12 +02:00
Michael Stapelberg
62c8d58d82
Implement the configuration option floating_modifier and document it
2009-06-24 20:31:00 +02:00
Michael Stapelberg
675d28dd54
Bugfix: Check screen for NULL, free client memory correctly (Thanks dirkson)
2009-06-24 19:22:09 +02:00
Michael Stapelberg
61b1279f67
Bugfix: Don’t invalidate container pointer and access it when unmapping
2009-06-24 19:05:33 +02:00
Michael Stapelberg
7773a3e5dd
Ensure a minimum size of 25px when resizing windows
2009-06-24 18:31:43 +02:00
Michael Stapelberg
607b1d071e
Use drag_pointer from floating.c for the resize handler
2009-06-24 17:40:34 +02:00
Michael Stapelberg
ee217523f1
Bugfix: resizing: boundary checking (Thanks Mirko)
2009-06-24 17:24:09 +02:00
Michael Stapelberg
07bebdf841
Correctly re-assign floating clients to the destination workspace when moving
2009-06-24 17:12:12 +02:00
Michael Stapelberg
7ed967c96f
Ensure that the focus is set correctly when moving floating clients
2009-06-24 00:35:05 +02:00
Michael Stapelberg
125faef1f4
Correctly move floating clients to other workspaces on visible screens
2009-06-24 00:34:03 +02:00
Michael Stapelberg
0aed552bae
Bugfix: Remove/add floating clients to workspace->floating_clients when moving to other workspaces
2009-06-23 23:17:06 +02:00
Michael Stapelberg
81e9d8282a
Bugfix: load current_col/current_row from workspace when setting focus (Thanks Mirko)
...
In the case of floating clients which have no container, the values
were still the ones from your old workspace, which was a problem if
your dimensions didn’t match…
2009-06-23 23:10:04 +02:00
Michael Stapelberg
4f31709b1d
floating: enforce minimum size of 50x20 when resizing (Thanks Mirko)
2009-06-23 22:42:54 +02:00
Michael Stapelberg
cba36914a8
Implement selecting the next tiling/floating window (using "focus")
...
Also update documentation (manpage, userguide).
To make the code easier to read/write when checking if a client is
floating, introduce client_is_floating().
2009-06-21 16:14:15 +02:00
Michael Stapelberg
a5489d6546
Use a nested event loop which polls and saves motion notify events for later
...
This should speed up resizing/dragging quite a bit, thus fixing ticket #51
2009-06-21 13:44:44 +02:00
Michael Stapelberg
8140619d5b
Implement reconfiguration of floating clients
2009-06-21 13:29:48 +02:00
Michael Stapelberg
0e8b3c3401
Bugfix: floating: open windows with correct width/height
2009-06-21 13:18:54 +02:00
Michael Stapelberg
2751eedae5
Bugfix: Floating: open windows at their requested position
2009-06-21 13:12:42 +02:00
Michael Stapelberg
6ca9210335
Bugfix: Properly integrate libxcb’s event loop into libev.
...
Fixes a race condition with GIMP (where it configured its window,
sent the map request and waited for the window to get mapped, but
i3 didn’t get the event until another one was sent (key binding for
example)).
The new solution is much better as it properly hands off all
the work to xcb_poll_for_event.
Inspired by awesome, which uses the same mechanism. Thanks.
2009-06-21 13:05:54 +02:00
Michael Stapelberg
ce97e23913
Remove getting colorpixels from the X server, saves code and round-trips. Requires truecolor displays.
...
If anyone has a serious (!) use for non-truecolor displays and
problems with i3’s colors after this commit, please send a mail.
2009-06-20 18:05:24 +02:00
Michael Stapelberg
83d3146b65
Bugfix: Correctly raise the currently focused client when going into stack mode
2009-06-20 00:31:57 +02:00
Michael Stapelberg
8e19f8dabf
floating: Don’t let clients become hidden under stack windows or fulscreen clients (Thanks Mirko)
2009-06-19 23:18:43 +02:00
Michael Stapelberg
5c0496a3ef
Bugfix: Make sure floating clients are alwalys above tiling clients (Thanks Mirko)
2009-06-19 22:57:19 +02:00
Michael Stapelberg
589a73c8ea
Bugfix: Correctly check for floating mode in the buttonpress handler (Thanks Mirko)
2009-06-19 22:48:18 +02:00
Michael Stapelberg
ba070fcc6c
Bugfix: Obey colspan/rowspan when checking if containers can be snapped to the right/bottom (Thanks Mirko)
...
This fixes ticket #54 .
2009-06-19 22:40:25 +02:00
Michael Stapelberg
93ff4159c1
Bugfix: Obey colspan/rowspan when checking if containers can be snapped to the right/bottom (Thanks Mirko)
...
This fixes ticket #54 .
2009-06-19 22:39:03 +02:00
Michael Stapelberg
325d1b301f
Implement the special workspace ~ for assignments, which will set clients floating automatically
2009-06-19 20:20:00 +02:00
Michael Stapelberg
bcd479ca92
floating: nested functions make the callbacks a lot more easier & beautiful
2009-06-19 19:43:01 +02:00
Michael Stapelberg
89c0caaec4
Implement a command for hiding all floating windows (and showing them again)
2009-06-19 13:59:29 +02:00
Michael Stapelberg
5c48444b4e
Implement the possibility to set a workspace open clients automatically in floating mode
...
Use "wwt" (with workspace: toggle floating) in your configuration file
2009-06-19 13:20:10 +02:00
Michael Stapelberg
4135aaad7c
Implement moving of floating clients
2009-06-19 12:57:21 +02:00
Michael Stapelberg
51402b05f5
Bugfix: Correctly initialize automatically floating clients (some rendering issues)
2009-06-19 12:34:31 +02:00
Michael Stapelberg
a6d7f5451d
Also set DIALOG, UTILITY and SPLASH windows floating automatically
2009-06-19 12:05:55 +02:00
Michael Stapelberg
a2a8cd85d6
Bugfix: Don’t crash when programs set NULL hints (xev(1) for example)
...
This only happened if you had some assignment configured
2009-06-19 11:05:00 +02:00
Michael Stapelberg
1c02ddb4a7
Bugfix: Fix assignment of clients to other workspaces (Thanks badboy)
...
The problem was that the old_focused pointer was pointing to an element
of a different list. Using CIRCLEQ_APPEND_AFTER is not a good idea on
with such an element…
2009-06-18 01:25:46 +02:00
Michael Stapelberg
00c6bdeb0b
Implement changing focus via keyboard between floating clients, fix several floating bugs
2009-06-14 01:04:59 +02:00
Michael Stapelberg
e6d9c7bb9e
Bugfix: Don’t use the minimum amount of pixels for dock clients which don’t set size hints
2009-06-13 12:30:28 +02:00
Michael Stapelberg
56af58eb0b
Bugfix: Put floating clients into the focus stack (Thanks Mirko)
2009-06-13 12:20:39 +02:00
Michael Stapelberg
02fa3c2cb8
Bugfix: Correctly initialize the new atom, don’t float dock windows
2009-06-13 12:18:16 +02:00
Michael Stapelberg
13002dc04e
Bugfix: Actually reconfigure unmapped windows when they request it
...
Before, we only sent a fake message. While this was sufficient for the
client side most of the time, it didn’t allow us to open floating
windows with the correct size.
2009-06-12 23:47:04 +02:00
Michael Stapelberg
052190ad05
Handle transient hint and window class dialog to mark clients as floating
2009-06-12 22:59:23 +02:00
Michael Stapelberg
cb12e205d9
Bugfix: When toggling floating, the copied size is the client’s size, not the total size
2009-06-12 22:55:56 +02:00
Michael Stapelberg
6e5406167c
Bugfix: Use the correct size for the modifiers (Thanks Moredread!)
2009-06-11 03:30:56 +02:00
Michael Stapelberg
70be57352c
Fix memleak in config parsing (variables weren’t freed)
2009-06-11 03:30:42 +02:00
Michael Stapelberg
55f0aa8f28
Add a proper error message if connection to the X server can’t be established
2009-06-11 03:30:26 +02:00
Michael Stapelberg
d70ea03356
Remove some dead code, add default paths to switch() to make static analyzers happy
...
Check was done with scan-build from the LLVM suite. The remaining reports are false
positives and have been reported to llvm:
http://llvm.org/bugs/show_bug.cgi?id=4358
http://llvm.org/bugs/show_bug.cgi?id=4359
2009-06-10 19:59:36 +02:00
Michael Stapelberg
2f334c3f59
Bugfix: Don’t set focus when unmapping clients if the workspace is not active (Thanks Mirko)
...
This fixes ticket #53 because current workspace was set to the
workspace which was deleted.
2009-06-07 19:09:39 +02:00
Michael Stapelberg
fb63c2ed58
Implement moving floating clients using Mod1+Left mouse button
2009-06-03 13:54:13 +02:00
Michael Stapelberg
036728c4d7
Use the size when mapping the window as size for floating (correct size for tool windows)
2009-06-02 14:24:37 +02:00
Michael Stapelberg
3f925a56d3
Fix warning about dereferencing type-punned pointers
2009-06-01 21:12:13 +02:00
Michael Stapelberg
553db28664
Switch to libev for the event loop to build a base for IPC stuff. Please test!
2009-06-01 20:59:40 +02:00
Michael Stapelberg
e689be983b
Implement variables in configfile.
...
This implements ticket #42 .
Syntax is "set $key value". All further instances of $key will be
replaced with value before parsing each line of the configfile.
2009-06-01 16:19:06 +02:00
Michael Stapelberg
170ba60191
Bugfix: Rendering of the bottom border line was still off by one
2009-06-01 15:35:59 +02:00
Michael Stapelberg
2a67630aa6
Optimization: Get the colorpixels when loading configuration, make use of the new config struct
...
Instead of building arrays of colorpixels we can simply use a pointer
to a struct Colortriple. Furthermore, by getting the colorpixels when
loading the configuration, we save a lot of function calls in the
main code.
2009-06-01 15:14:45 +02:00
Michael Stapelberg
c73bb1feaa
Draw the border lines in the window decoration correctly
2009-05-31 18:37:47 +02:00
Michael Stapelberg
517c47ca95
Don’t check twice for client.focused, change all places were colorcodes are used
2009-05-31 17:18:49 +02:00
Michael Stapelberg
0cb5d7448d
Implement clients going automatically into floating
2009-05-31 00:31:18 +02:00
Michael Stapelberg
706c44509e
retab! src/config.c
2009-05-30 22:24:05 +02:00
Michael Stapelberg
cbc3880007
Use a more efficient struct for storing colors, validate/parse them more easily
2009-05-30 22:20:32 +02:00
Atsutane
65bcf170ed
Introduced color setting.
2009-05-30 17:59:04 +02:00
Michael Stapelberg
2d5b1f0a37
Bugfix: Send fake configure notify events when moving clients (Thanks Volker)
...
This fixes ticket #47
2009-05-30 11:49:50 +02:00
Michael Stapelberg
fccbdea925
Bugfix: Correctly set focus when switching to a workspace with floating clients
...
This fixes ticket #45
2009-05-30 11:41:49 +02:00
Michael Stapelberg
b1eb93326f
Bugfix: Correctly cleanup stack_windows when setting clients to floating
...
This fixes ticket #44
2009-05-30 11:35:32 +02:00
Michael Stapelberg
ac6561019b
Don’t kill workspaces on which you currently are when changing screen configuration
2009-05-27 18:46:58 +02:00
Michael Stapelberg
d4fb34abdd
Bugfix: Don’t ignore enter_notify events for clients on different screens (Thanks Mirko)
...
This fixes ticket #41 .
2009-05-27 18:19:14 +02:00
Michael Stapelberg
2ed621aec9
Bugfix: Forgot to update client’s workspace pointer (Thanks Mirko)
2009-05-27 12:28:51 +02:00
Michael Stapelberg
94ee39d1ce
Bugfix: Forgot to update client’s workspace pointer (Thanks Mirko)
2009-05-27 12:27:29 +02:00
Michael Stapelberg
bcd68d9ca1
Bugfix: Fix crash when focusing/moving on an empty workspace (Thanks Mirko)
2009-05-27 12:15:23 +02:00
Michael Stapelberg
b0cf3ec026
Document binding on Mode_switch in userguide, be more verbose in config
2009-05-26 17:37:56 +02:00
Michael Stapelberg
9c3b37f2d1
Bugfix: Cleanup the table after putting clients into floating mode
2009-05-26 17:16:51 +02:00
Michael Stapelberg
94cead993c
Don’t process autostart when restarting (new parameter -a)
2009-05-26 17:09:34 +02:00
Michael Stapelberg
b58e2fa8ed
Move toggle_fullscreen to client.c
2009-05-26 16:49:57 +02:00
Michael Stapelberg
ac5c2fcf19
Bugfix: Fix fullscreen for floating clients, fix window name updates for floating clients
2009-05-26 16:46:50 +02:00
Michael Stapelberg
5b8e2ecb18
Implement floating (please test and find bugs)
...
Details which are missing: A command to hide/show all floating clients,
moving/resizing clients with your mouse holding Mod1 (click anywhere
in the client, not just on its borders), resize/move by keyboard, select
next/previous client by keyboard
2009-05-23 16:34:03 +02:00
Michael Stapelberg
7fde55578d
Bugfix: Correctly handle mode_switch state bit, more debugging output for states
...
We abuse (1 << 8) as mode_switch bit, which is in the range of the
filtered state bits (see previous commit). Therefore, we need to
filter first and then check for mode_switch.
Furthermore, we used 0x2 before, which was just wrong. So, use our
bitmask, not the normal one (0x2).
2009-05-19 15:24:17 +02:00
Michael Stapelberg
d98c514f82
Bugfix: Correctly handle mode_switch state bit, more debugging output for states
...
We abuse (1 << 8) as mode_switch bit, which is in the range of the
filtered state bits (see previous commit). Therefore, we need to
filter first and then check for mode_switch.
Furthermore, we used 0x2 before, which was just wrong. So, use our
bitmask, not the normal one (0x2).
2009-05-19 15:22:50 +02:00
Michael Stapelberg
5038b3c592
Bugfix: keypress: Only use the lower 8 bits of the mask so that mouse buttons are filtered out (Thanks Mirko)
...
Sometimes, when the mouse button gets stuck, state contains the bit for
BUTTON_MASK_1 (or other buttons). We filter them out to continue processing
keys correctly.
2009-05-19 13:52:23 +02:00
Michael Stapelberg
77ab4c0b10
Bugfix: keypress: Only use the lower 8 bits of the mask so that mouse buttons are filtered out (Thanks Mirko)
...
Sometimes, when the mouse button gets stuck, state contains the bit for
BUTTON_MASK_1 (or other buttons). We filter them out to continue processing
keys correctly.
2009-05-19 13:51:03 +02:00
Michael Stapelberg
1089fb7311
Bugfix: Don’t crash when above dock windows (Thanks Mirko)
2009-05-17 10:54:12 +02:00
Michael Stapelberg
b35599004a
Move the manage_*-functions into their own file as they got quite large
2009-05-16 18:25:04 +02:00
Michael Stapelberg
d5d44e66a2
Bugfix: Re-assign dock windows to different workspaces when a workspace is deleted
...
Killing a dock client and having destroyed workspace 1 before (or the workspace
on which the dock client was started when it was not auto-started) crashed i3 before
this bugfix.
2009-05-16 18:12:35 +02:00
Michael Stapelberg
e79cca8f72
Implement putting clients onto specific workspaces ("assign" in the configfile)
...
This closes ticket #39
2009-05-16 17:32:36 +02:00
Michael Stapelberg
610fabf873
Bugfix: Correctly handle col-/rowspanned containers when setting focus (Thanks Ned)
...
This fixes ticket #34
2009-05-09 20:00:20 +02:00
Michael Stapelberg
4cc8d53706
Bugfix: Correctly handle col-/rowspanned containers when setting focus (Thanks Ned)
...
This fixes ticket #34
2009-05-09 19:59:36 +02:00
Michael Stapelberg
b7f94e9b5d
Fix a bug in window placement introduced by the last commit
2009-05-09 19:13:37 +02:00
Michael Stapelberg
3c6c5dff92
Fix a bug in window placement introduced by the last commit
2009-05-09 19:13:14 +02:00
Michael Stapelberg
1256730b4b
Bugfix: Fix display/resizing of colspanned containers
2009-05-09 18:43:50 +02:00
Michael Stapelberg
3ccc0d7794
Bugfix: Fix display/resizing of colspanned containers
2009-05-09 18:43:02 +02:00
Michael Stapelberg
5b4f10eaca
Bugfix: Store width_factor/height_factor per workspace, not per container
...
This is a relatively big change, however all cases should be handled by
now.
Because the function to do graphical resizing got rather large, I’ve created
a new file src/resize.c for it.
This fixes ticket #35 .
2009-05-09 17:50:51 +02:00
Michael Stapelberg
8e1990f058
Bugfix: Store width_factor/height_factor per workspace, not per container
...
This is a relatively big change, however all cases should be handled by
now.
Because the function to do graphical resizing got rather large, I’ve created
a new file src/resize.c for it.
This fixes ticket #35 .
2009-05-09 17:48:35 +02:00
Michael Stapelberg
18da0a3017
Bugfix: Force reconfiguration of all windows on workspaces which needed to be re-assigned (Thanks Mirko)
...
When you disable a Xinerama screen (think of removing a video projector),
the workspaces of that screen need to be re-assigned to another screen.
Previously, the clients affected by this re-assignment did not get re-
configured, which made them appear on the next screen which got configured
at the position of the old one again if you did not switch to the reassigned
workspace before.
So, to reproduce it:
xrandr --output VGA --mode 1280x1024 --right-of LVDS
move windows to the new workspace
xrandr --output VGA --off
xrandr --output VGA --mode 1280x1024 --right-of LVDS
This fixes ticket #36
2009-05-09 13:04:34 +02:00
Michael Stapelberg
d24e47a0f3
Bugfix: Force reconfiguration of all windows on workspaces which needed to be re-assigned (Thanks Mirko)
...
When you disable a Xinerama screen (think of removing a video projector),
the workspaces of that screen need to be re-assigned to another screen.
Previously, the clients affected by this re-assignment did not get re-
configured, which made them appear on the next screen which got configured
at the position of the old one again if you did not switch to the reassigned
workspace before.
So, to reproduce it:
xrandr --output VGA --mode 1280x1024 --right-of LVDS
move windows to the new workspace
xrandr --output VGA --off
xrandr --output VGA --mode 1280x1024 --right-of LVDS
This fixes ticket #36
2009-05-09 13:01:23 +02:00
Michael Stapelberg
8c6c4270a9
Bugfix: Don’t raise clients in fullscreen mode, send correct position to clients in fullscreen mode (Thanks ch3ka, mist)
...
This fixes #38 which only happened for clients which actively tried
to reconfigure themselves.
2009-05-08 23:23:47 +02:00
Michael Stapelberg
89076ea7cf
Bugfix: Don’t raise clients in fullscreen mode, send correct position to clients in fullscreen mode (Thanks ch3ka, mist)
...
This fixes #38 which only happened for clients which actively tried
to reconfigure themselves.
2009-05-08 23:22:40 +02:00
Michael Stapelberg
4b77d93c2e
Bugfix: Resize all containers in the column instead of only the active one (Thanks Ned)
...
This fixes ticket #33 .
2009-05-07 13:51:34 +02:00
Michael Stapelberg
a2ac022208
Bugfix: Resize all containers in the column instead of only the active one (Thanks Ned)
...
This fixes ticket #33 .
2009-05-07 13:46:34 +02:00
Michael Rudolf
3400f0e6bd
Implement autostart using "exec" in config
...
Syntax is "exec <application>", like when creating a binding.
Multiple entries are possible, applications are started in
the specified order.
2009-05-05 20:14:02 +02:00
Michael Stapelberg
3a2b546c9e
Implement a command to travel the focusstack. This can be used like a jumpback.
...
However, it is a bit more flexible obviously. You can specify the
offset of the window you want to go to, to implement workflows like
the following:
* Jump to mutt
* Jump to irssi
* Jump back ("focus 2" would be the command)
2009-05-05 17:25:56 +02:00
Michael Stapelberg
56d637a665
Add debug message for jumping
2009-05-05 16:57:21 +02:00
Michael Stapelberg
f72214725c
Implement jumping to windows by matching their class / title
2009-05-05 16:53:22 +02:00
Michael Stapelberg
e295ab302b
Implement storing WM_CLASS of each client
2009-05-05 16:53:22 +02:00
Michael Stapelberg
12fa69329a
Change syntax of jump to col,row instead of row,col to make it consistent with the internal data structures, document it in commandmode
2009-05-05 16:47:06 +02:00
Michael Stapelberg
79e5d5f29d
Some small style changes to make urs’ code consistent
2009-05-05 16:47:05 +02:00
Urs Ganse
efbe2dfeaa
Added a "jump" command to directly focus a container.
...
Syntax is "jump <ws> <row> <col>".
This is quite handy for clients that you always keep
in the same spot, and like to jump to quite often. The
irc client would be an example.
2009-05-05 16:47:05 +02:00
Michael Stapelberg
4a6a748561
Bugfix: Reconfigure bar window when changing resolutions (Thanks Mirko)
2009-05-03 22:59:50 +02:00
Michael Stapelberg
c3c05db579
Bugfix: Fix crash on new clients (Thanks Mirko)
2009-05-03 22:18:33 +02:00
Michael Stapelberg
d4642ac7d8
Fix a bug caused by not absolutely raising windows (revision 95f4085bc
)
2009-05-03 16:41:53 +02:00
Michael Stapelberg
c27c7fc020
Bugfix: Insert windows at correct position/set focus correctly when moving between containers
2009-05-03 16:24:12 +02:00
Michael Stapelberg
a0d23c53b3
Bugfix: Re-distribute free space when closing customly resized containers, re-evaluate for other containers
...
This fixes ticket #4
2009-05-03 14:29:58 +02:00
Michael Stapelberg
eab895ac9e
Bugfix: Correctly restore focus when leaving fullscreen mode
2009-05-03 02:13:11 +02:00
Michael Stapelberg
95f4085bcd
Raise clients only relatively to the one which was focused before.
...
This should fix ticket #31 .
2009-05-03 00:23:12 +02:00
Michael Stapelberg
99054fb50f
Bugfix: Fix drag&drop in GTK applications (firefox, thunderbird)
...
Thanks to Daniel Wäber’s contribution to wmii:
http://code.suckless.org/hg/wmii/rev/f4f25de0de54
2009-05-02 20:51:55 +02:00
Michael Stapelberg
e91f399609
Bugfix: Correctly restart i3 when not using its absolute path
2009-05-01 16:10:02 +02:00
Michael Stapelberg
c689b93bce
Bugfix: Don’t crash when asprintf() can’t print the window name (Thanks ch3ka)
...
Apparantly, under some conditions (using LANG=en_US.UTF-8, other locale
variables unset), asprintf() says "Invalid or incomplete multibyte or
wide character" when given a string in COMPOUND_TEXT encoding.
For now, we properly handle asprintf-errors (this should have been
before), but there might be a better solution.
2009-04-28 22:41:00 +02:00
Michael Stapelberg
aefae99a11
Bugfix: That should be xcb_keycode_t, not xcb_keysym_t
2009-04-19 21:40:49 +02:00
Michael Stapelberg
69c9db4016
Add conditional for the 0.3.3 → 0.3.4 API fix in libxcb-keysyms
2009-04-19 21:37:34 +02:00
Michael Stapelberg
982e453251
Don’t rely on libxcb-wm any longer, as it got removed in libxcb 0.3.4
...
See http://cgit.freedesktop.org/xcb/util/commit/?id=4c9a707f472e49bc3005354db265a0214071d46b
2009-04-19 20:44:34 +02:00
Michael Stapelberg
6ccee82368
Fix for the fix: Don’t substract height twice
2009-04-18 01:13:57 +02:00
Michael Stapelberg
49d5bdbb08
Bugfix: Correctly adjust state when transferring fullscreen windows to other workspaces (Thanks Mirko)
...
This fixes ticket #27 .
Furthermore, it is ensured that only one client at a time is in fullscreen mode.
2009-04-17 21:01:33 +02:00
Michael Stapelberg
12cc8b78af
Bugfix: Calculation of width in fake_absoute_configure_notify was wrong for windows with aspect ratio (Thanks Mirko)
2009-04-17 19:08:38 +02:00
Michael Stapelberg
36bacc151e
Bugfix: Fullscreen configure notifies mustn’t use absolute position/size
2009-04-16 11:08:11 +02:00
Michael Stapelberg
65b858b9c5
Bugfix: Fix unmapping of dock windows (Thanks Mirko)
2009-04-13 23:27:47 +02:00
Michael Stapelberg
a2d20b6848
Bugfix: Send clients their absolute position/size in generated configure events, not relative
...
This fixes ticket #26 .
2009-04-11 22:37:48 +02:00
Michael Stapelberg
b7e8a63474
Bugfix: Fix warping of cursor when only switching screen, not workspace
2009-04-11 20:55:16 +02:00
Michael Stapelberg
7133974306
Bugfix: Don’t only check for the currently active screen, but check for all screens (Thanks Mirko)
2009-04-11 19:06:26 +02:00
Michael Stapelberg
bb8727cf27
Bugfix: Perform some bounds checking for snapped containers in fix_colrowspan (Thanks jchome)
...
This fixes ticket #22
2009-04-11 14:52:11 +02:00
Michael Stapelberg
bcbe800720
Bugfix: Store dock clients per screen, not per workspace.
...
This fixes ticket #12
2009-04-11 14:29:15 +02:00
Michael Stapelberg
8cc1fcf536
General small cleanups
2009-04-11 14:08:19 +02:00
Michael Stapelberg
e3516d72f5
Bugfix: Don’t change to workspaces on different screens when scrolling through them (Thanks Mirko)
...
This fixes ticket #19
2009-04-11 11:54:30 +02:00
Michael Stapelberg
0216e84327
Bugfix: Warp pointer to the right window
...
This fixes ticket #20
2009-04-11 11:36:58 +02:00
Michael Stapelberg
aace42cd7a
Bugfix: Don’t crash anymore when moving focus to another screen (Thanks, Mirko!)
...
This fixes ticket #24 . The crash appeared only under special conditions:
- The screen on which you switch to must be empty or at least not as
full as the screen on which you were before.
- You switch focus using your mouse.
- You previously selected a column/row which is not availably on the
destination screen (for example (1,1) and switching to an empty
screen).
2009-04-10 21:29:25 +02:00
Michael Stapelberg
ee5cb143c0
Oops. Don’t kill the current workspace
2009-04-09 12:13:14 +02:00
Michael Stapelberg
72d82f3993
Bugfix: Delete empty workspaces even when they’re not the active workspace
...
This fixes ticket #23
2009-04-09 11:19:56 +02:00
Michael Stapelberg
4bd7667445
Bugfix: Correctly set focus when switching between screens
2009-04-08 13:48:37 +02:00
Michael Stapelberg
bd9de8189b
Put documentation for each function in the header files, doxygen-compatible
...
Thanks to psychoschlumpf for the hint. Having comments in the headers
makes it easier to get the big picture when not being interested in the
source.
The doxygen file extracts as much as it can into HTML files. Please note
that this is not official/supported documentation, but rather being nice
to people who have to/want to use doxygen (I don’t).
Let me paste the header of the doxygen file:
You can use this file with doxygen to create a pseudo-documentation
automatically from source. doxygen-comments are not used very extensively
in i3, mostly for the reason that it clutters the source code and has no
real use (doxygen’s output looks really ugly).
So, if you want to use it, here you go. This is however not a supported
document, and I recommend you have a look at the docs/ folder or at
http://i3.zekjur.net/ for more, real documentation.
2009-04-07 19:02:07 +02:00
Michael Stapelberg
cb7b7a73d2
Bugfix: Set focus to the client which was previously focused instead of the next client when moving windows
...
This fixes ticket #21
2009-04-07 16:48:42 +02:00
Michael Stapelberg
28aa13d831
Bugfix: Don’t set focus if it is not necessary.
...
This fixes ticket #13
2009-04-01 12:50:42 +02:00
Michael Stapelberg
755540817e
Implement scrolling on stack windows and on the bar. This implements ticket #18
2009-04-01 12:31:13 +02:00
Michael Stapelberg
75a35319c9
Bugfix: Correctly remove client from container when moving to another workspace
...
This fixes ticket #16
2009-04-01 12:02:22 +02:00
Michael Stapelberg
0520714aa0
Remove comment as popup menus in dzen2 get triggered by enter notify and focus is not needed
2009-04-01 11:51:11 +02:00
Michael Stapelberg
b4e337027e
Bugfix: Apply workspaces to screens when Xinerama is turned off (Thanks Igor, Urs)
2009-03-31 19:17:31 +02:00
Michael Stapelberg
fcc5ce516b
Bugfix: Don’t free xinerama-reply if it is NULL, implement FREE()-macro (Thanks Igor)
2009-03-30 08:27:53 +02:00
Michael Stapelberg
a8478efa34
Bugfix: Correctly filter out the numlock state bit (doesn’t get cleared for some reason)
...
This fixes ticket #14
2009-03-27 15:24:52 +01:00
Michael Stapelberg
9077831ed3
Bugfix: When entering a stack window with the mouse, set the focus to the active client
...
Fixes ticket #17
2009-03-26 23:00:26 +01:00
Michael Stapelberg
e0f7e253ff
Bugfix: Fix memory leak
2009-03-20 17:31:34 +01:00
Michael Stapelberg
eb2ceb95bf
Cleanup makefiles, add version to i3 -v and i3 startup
2009-03-15 23:15:16 +01:00
Michael Stapelberg
21f7b7a724
Disable horizontal resizing for the release version, it still has bugs
2009-03-15 21:31:35 +01:00
Michael Stapelberg
3d260f8e50
Bugfix: re-decorate old client when switching screens
2009-03-15 21:13:15 +01:00
Michael Stapelberg
74465a562a
Bugfix: Only actively change focus if this is the current container
2009-03-15 20:52:43 +01:00
Michael Stapelberg
3a994e4bf7
Implement clicking on the bar to switch workspaces
2009-03-15 17:49:25 +01:00
Michael Stapelberg
76effaf29a
Bugfix: Fix rounding problems when positioning proportional windows
2009-03-15 17:35:16 +01:00
Michael Stapelberg
c02dd93bcc
Bugfix: Query WM_NORMAL_HINTS when managing a window to handle proportional hints which were set before mapping
2009-03-15 12:24:49 +01:00
Michael Stapelberg
cb9c7078be
Implement kill-command to kill the current window, document it
2009-03-14 22:09:36 +01:00
Michael Stapelberg
cc0b060628
Implement exit command, document it in manpage, add it to defaultconfig (Mod1+Shift+e)
2009-03-14 21:31:22 +01:00
Michael Stapelberg
80e2bf708d
Send configure notify after putting a client into fullscreen mode, log at a central place
2009-03-14 17:37:11 +01:00
Michael Stapelberg
4ad1edc5eb
Remove unused variable (fixes warning)
2009-03-13 11:20:21 +01:00
Michael Stapelberg
e3085b4f75
Fix fullscreen for xpdf (at least on debian, with proper _NET_WM_STATE hints)
...
xpdf sets the _NET_WM_STATE before actually mapping the window. i3 only checked
for changes of this hint, but not if it is already set when intially managing
the window.
Note that you need to patch your xpdf to support _NET_WM_STATE, because, while
only being reported at 2004, upstream still did not merge the patch *grrr*
See this debian bug report:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=247602
Or directly download the patch from:
http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=61;filename=31_fullscreen.dpatch;att=1;bug=247602
2009-03-13 04:51:17 +01:00
Michael Stapelberg
9c755dcb0d
Fix compilation
2009-03-13 04:51:09 +01:00
Michael Stapelberg
14834c3530
Fake more configure notifies (makes xpdf work better)
2009-03-13 00:39:16 +01:00
Michael Stapelberg
755709c86d
Bugfix: Completely ignore legacy hints as soon as the client uses _NET_WM_NAME
2009-03-12 16:44:44 +01:00
Michael Stapelberg
e1252b51da
Move i3lock in its own repository
2009-03-11 22:21:50 +01:00
Michael Stapelberg
cc2c63b860
Handle legacy window titles by rendering them not unicode-compatible.
2009-03-11 21:31:54 +01:00
Michael Stapelberg
17bcdd8b0f
Implement cleaning up the list of ignored events
2009-03-11 20:06:30 +01:00
Michael Stapelberg
12970211c4
Fix misnomer (window_type_handler → handle_window_type), resolve TODO
2009-03-11 19:39:32 +01:00
Michael Stapelberg
969d6f202e
Move i3lock to src/i3lock, import dmenu-3.9 as i3menu
2009-03-11 19:03:24 +01:00
Michael Stapelberg
c0aa9cac61
Implement moving containers, implement moving windows to the top if top-most, change config to use Mod3
2009-03-11 18:56:31 +01:00
Michael Stapelberg
49b56166dc
Implement moving clients to the left if they are leftmost
2009-03-11 01:55:10 +01:00
Michael Stapelberg
9c0d5b6e5e
Bugfix: Redecorate the last focused window of the container we are switching into
2009-03-11 00:56:39 +01:00
Michael Stapelberg
ec290cbfa9
Bugfix: Don’t handle mouse click events inside the titlebar
2009-03-11 00:45:49 +01:00
Michael Stapelberg
38c8541807
Bugfix: Change the event mask to ignore enter notifies when rendering the layout and changing workspaces
2009-03-11 00:20:56 +01:00
Michael Stapelberg
408b2bdb39
Bugfix: Eliminate race condition, fix dock windows
...
There was a race condition when mapping a window and not setting the event mask
before. Therefore, the ReparentNotify and (more important) the UnmapNotify generated
by reparenting were not received, thus leaving the awaiting_useless_unmap variable
of the client "true". To just make it work, in previous commits the DestroyNotify
handler was introduced. Fortunately, with fixing this race condition by first
setting the event mask and mapping the window afterwards, we can remove this handler.
As for the dock windows, there were quite some occurences were client->container
was used without checking if the client is inside a container at all.
Furthermore, the client’s strut containing the space to reserve at the screen edge
is now checked and the desired height is set to the window’s height if the strut
contains 0 or if no strut was specified at all.
2009-03-10 20:56:25 +01:00
Michael Stapelberg
434345aa30
Ignore notify events which are not in mode XCB_NOTIFY_MODE_NORMAL
2009-03-10 11:26:52 +01:00
Michael Stapelberg
441f406a4b
Fix warning (typecast)
2009-03-10 09:51:00 +01:00
Michael Stapelberg
c025678177
Major change: Redirect events instead of handle the notifies.
...
By specifying XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, the window manager
will get map request events instead of map notify events, and therefore
can act sooner (the window won’t be positioned on the screen and moved
afterwards).
Furthermore, this fixes some problems with GIMP/VLC (and probably others)
which caused endless loops.
Also, events which should be ignored are now saved in a queue rather than
saving just the last event. This should eliminate race conditions.
Note that there is a new FIXME in src/handlers.c. Some windows generate
unmap notify events when reparenting while others don’t. We need to
understand, document and implement a more correct way to handle this.
2009-03-10 00:51:15 +01:00
Michael Stapelberg
d38636439c
Fix warning
2009-03-09 17:50:00 +01:00
Michael Stapelberg
b800408a97
Bugfix: Handle all events when dragging to resize, correctly set OVERRIDE_REDIRECT
2009-03-09 08:50:33 +01:00
Michael Stapelberg
3a34cfc603
Bugfix: Draw bar at the correct position, handle expose events for bars
2009-03-09 08:24:05 +01:00
Michael Stapelberg
00f08cba75
Bugfix: Correctly free containers, the bug was not freeing when not moving
2009-03-09 08:14:00 +01:00
Michael Stapelberg
71993c9b48
Implement wrapping left/right/up/down across screens
2009-03-09 07:39:19 +01:00
Michael Stapelberg
38d903aea5
Update comment
2009-03-09 07:18:04 +01:00
Michael Stapelberg
cc78664f9d
Bugfix: Use memcmp() instead of strcmp(), use new_len * 2 to check all bytes
2009-03-09 07:02:47 +01:00
Michael Stapelberg
2cf3a9dd96
Bugfix: Correctly free containers when shrinking the table
2009-03-09 06:49:11 +01:00
Michael Stapelberg
65595c61a8
Bugfix: Don’t strcmp() if client->name == NULL
2009-03-09 06:41:04 +01:00
Michael Stapelberg
6df039c3b5
Convert window title to UCS-2 when updating it, don’t update it if it didn’t change
2009-03-09 06:26:32 +01:00
Michael Stapelberg
4f8e704017
s/atomar/atomic
2009-03-08 21:01:06 +01:00
Michael Stapelberg
cefc1dabac
Bugfix: Use a new variable called new_position and initialize it correctly when resizing
2009-03-08 20:59:49 +01:00
Michael Stapelberg
71221baca0
Fix race condition when updating client->name
2009-03-08 20:04:01 +01:00
Michael Stapelberg
9e74378dd0
Bugfix: Use _NET_WM_NAME (UTF-8) rather than WM_NAME (COMPOUND_TEXT). Only render client titles, if they are set
2009-03-08 19:07:33 +01:00
Michael Stapelberg
4e12c9b39c
Fix the warning on SUS-compatible systems (char**) and on NetBSD (const char**)
2009-03-08 17:47:45 +01:00
Michael Stapelberg
f85990b27a
Fix warnings, update DEPENDS, update Makefile for NetBSD
2009-03-08 17:30:17 +01:00
Michael Stapelberg
6f630a3335
Implement UTF-8-clean window titles
2009-03-08 00:49:11 +01:00
Michael Stapelberg
35c04b448a
Don’t start a terminal on startup
2009-03-07 05:50:19 +01:00
Michael Stapelberg
1f3ce94027
Bugfix: Correctly place new windows while other windows are in fullscreen mode
2009-03-07 05:49:13 +01:00
Michael Stapelberg
6abcc5f656
Fix some bugs found by using raster’s wm_torture
2009-03-07 02:44:46 +01:00
Michael Stapelberg
a411ed24cb
Bugfix: Correctly check for empty containers and unmap the stack_win
2009-03-06 19:08:59 +01:00
Michael Stapelberg
017a0c0d08
Don’t set focus outside of the current container
2009-03-06 17:13:20 +01:00
Michael Stapelberg
97f23f549b
Bugfix: decorate_window() needs a flush of course
2009-03-06 17:02:43 +01:00
Michael Stapelberg
bf92a0c617
Don’t switch focus when in fullscreen mode
2009-03-06 16:53:47 +01:00
Michael Stapelberg
4259e58655
Bugfix: One warning was left
2009-03-06 16:36:05 +01:00
Michael Stapelberg
ee1f64a94e
Bugfix: return value was missing
2009-03-06 16:21:39 +01:00
Michael Stapelberg
fc3338d3c1
Bugfix: Missing flush after render_container()
2009-03-06 06:56:13 +01:00
Michael Stapelberg
96ac9f9066
Implement slog() and the LOG() macro, convert printf() to LOG()
2009-03-06 06:46:43 +01:00
Michael Stapelberg
0831f3e129
Implement handling the size hints so that aspect ratio is used correctly, fix rendering on stacks
2009-03-06 06:06:19 +01:00
Michael Stapelberg
3684abec1a
Bugfix: Fix rendering (needed a flush)
2009-03-05 20:07:57 +01:00
Michael Stapelberg
d2d6c0de12
Enable switching to containers when the current container has only one client
2009-03-05 19:47:16 +01:00
Michael Stapelberg
c5dffde101
Bugfix: Correct boundary checking for increasing col/rowspan
2009-03-05 17:24:04 +01:00
Michael Stapelberg
906914fe61
Bugfix: Rendering of colspan/rowspan was wrong
2009-03-05 17:17:37 +01:00
Michael Stapelberg
76c201f940
Bugfix: Correctly set currently_focused when clients are destroyed
2009-03-05 17:08:57 +01:00
Michael Stapelberg
841ad55f4a
Move HAS_CHANGED into a function
2009-03-05 16:23:26 +01:00
Michael Stapelberg
e643d34ddc
Use unchecked versions for more speed
2009-03-05 03:33:15 +01:00
Michael Stapelberg
56393c823e
Make colorpixels independent from clients
2009-03-05 02:58:12 +01:00
Michael Stapelberg
e4627bcaed
Don’t re-initialize Xinerama on every configurenotify. This needs to be fixed properly.
2009-03-05 02:17:10 +01:00
Michael Stapelberg
1343b77dbb
Bugfix: Some memory leaks / invalid accesses
2009-03-05 01:48:30 +01:00
Michael Stapelberg
17bca23a8c
Implement a focus stack, correctly free table columns/rows
2009-03-05 01:20:13 +01:00
Michael Stapelberg
bde67a179e
Implement wrapping, selecting containers is now Mod1+Ctrl+h/j/k/l
2009-03-04 23:45:44 +01:00
Michael Stapelberg
91f98cc597
Implement auto-destroying of empty workspaces
2009-03-04 22:52:36 +01:00