Commit Graph

522 Commits

Author SHA1 Message Date
Michael Stapelberg d9d4d9fff1 Implement tabbing
Use command "T" to switch to tabbing
2009-08-22 09:07:23 +02:00
Michael Stapelberg c7ba95e79d Implement resizing floating clients with Mod1 + right mouse button 2009-08-22 07:49:28 +02:00
Michael Stapelberg 36a7f46c51 Bugfix: Map window when it got the fullscreen hint set 2009-08-21 12:19:46 +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 ec0113f631 Merge branch 'next'
Conflicts:
	src/manage.c
	src/util.c
	src/xinerama.c
2009-08-19 15:13:27 +02:00
Michael Stapelberg 0b7a27ea79 initialize last_keycode 2009-08-19 14:37:34 +02:00
Michael Stapelberg 4b3ea4d524 Bugfix: Don’t crash when clients set an invalid leader hint 2009-08-19 10:56:42 +02:00
Michael Stapelberg 44d9111d65 More log cleanups 2009-08-11 15:23:58 +02:00
Michael Stapelberg 556f180290 Bugfix: Fix screen wrapping, cleanup some log messages
Before this fix, you could go upwards and select the screen which
was at the rightmost because it also was the one topmost (if all
screen’s top position is equal).
2009-08-11 15:02:30 +02:00
Michael Stapelberg dd134a74ef Implement support for width_inc and height_inc of size hints
This fixes the problem where you saw old window contents when resizing
a window (due to opening new windows or similar), especially in terminals.
2009-08-11 14:08:04 +02:00
Michael Stapelberg d8380c6101 Bugfix: Don’t initialize screen twice when not using Xinerama (Thanks badboy) 2009-08-11 12:38:52 +02:00
Michael Stapelberg b9636ceeec Set WM_STATE_WITHDRAWN when unmapping, unmap windows when destroying (Thanks xeen)
Seems like java apps need it. Also, you probably want to use XToolkit,
when you have to work with java apps:

export AWT_TOOLKIT=XToolkit
2009-08-11 12:16:10 +02:00
Michael Stapelberg 51df900312 Bugfix: Fix focused but inactive window color when using multiple monitors 2009-08-08 21:45:29 +02:00
Michael Stapelberg ceb3670d65 Reduce number of configuration requests and thus flickering
This reduces flickering when opening new windows and especially moving
existing windows in tiling mode. Especially noticable on multi-monitor
setups.
2009-08-08 21:31:42 +02:00
Michael Stapelberg f72576a290 Fix rendering of window decorations in stacking mode (there was a 1px-line too much) 2009-08-08 20:20:06 +02:00
Michael Stapelberg 47a798ac4a Implement assignments of workspaces to screens, big cleanup of workspace code
Please test this! Plug in screens, unplug them, use your video projector,
change resolutions, etc.

To use the assignments, use the following syntax:
workspace <number> [screen <screen>] [name]

Where screen can be one of:
<number> (It is not provided that these numbers stay constant, so use with care)
<x>x<y> (Coordinates where the screen starts, so 1280 will be fine to match the
	 screen right of the main screen if your main screen is 1280 pixels
	 width. However, 1281 will not match)
<x>
x<y>

Some examples follow:

 workspace 1 screen 0
 workspace 1 screen 1
 workspace 1 screen 1280x0
 workspace 2 screen 1280
 workspace 3 screen x0
 workspace 3 screen 1 www
 workspace 4 screen 0 mail
2009-08-08 19:51:51 +02:00
Michael Stapelberg 6192975a04 Bugfix: Don’t crash when the font is specified after the workspace names in configfile (Thanks xiaodong) 2009-08-07 15:48:13 +02:00
Michael Stapelberg 7cdaa1b277 Implement support for using key symbols in configuration file
Use "bindsym" instead of "bind". You have to use the names of keys
as in xmodmap. To get a list of currently bounud symbols, use
xmodmap -pke

Technical quirk: Xlib generated MappingNotify events upon
XkbMapNotify events (from XKB, as the name says). XCB does not yet
have support for XKB, thus we need to select and handle the event
by ourself. Hopefully, this will change in the future.
2009-08-07 15:35:12 +02:00
Michael Stapelberg 3bd724f08d Bugfix: Track the user’s pointer over the root window and update current workspace (Thanks xeen)
When not having any windows on the first workspace, switching to the
second workspace using your mouse was not registered by i3.
2009-08-06 00:59:48 +02:00
Michael Stapelberg 20875494ee Bugfix: Correctly unmap stack windows and don’t re-map them too early 2009-08-06 00:38:12 +02:00
Michael Stapelberg 35d811db82 Bugfix: Change to default mode if there was no client selected
Another bug fixed by having testcases :-)
2009-08-06 00:16:58 +02:00
Michael Stapelberg 5d14dca41d Implement correct rendering of floating windows (decoration color) 2009-08-05 19:59:58 +02:00
Michael Stapelberg 78b9e7f5ce Bugfix: dock clients need to have borderless = true 2009-08-05 19:28:21 +02:00
Michael Stapelberg 22e4f03553 Implement ws (with screen) to focus the next screen (wsl for example) 2009-08-05 19:24:21 +02:00
Michael Stapelberg 9222bea3b2 Implement borderless / 1-px-bordered windows
Use bn (normal), bp (1-px), bb (borderless) as commands to change the
border style of the currently focused window. Feel free to use i3-msg
to do this.
2009-08-05 18:33:44 +02:00
Michael Stapelberg 3114d6821d Add support for WM_CLIENT_LEADER, put floating windows mapping to (0x0) to center of leader/workspace 2009-08-05 00:39:55 +02:00
Michael Stapelberg af3972aa9f Bugfix: Recognize clicks as client clicks (opposed to border_clicks) when clients send them for their parent window
See comment, happened for example with xfontsel. You normally got
to see the resize bar (when having >1 column, of course).
2009-08-04 22:47:42 +02:00
Michael Stapelberg 4c373c2128 Fix clicking on workspaces in internal bar (with named workspaces) (Thanks bapt) 2009-08-04 22:27:01 +02:00
Michael Stapelberg 19abb63393 s/Mod1/floating_modifier (Thanks badboy) 2009-08-02 22:58:23 +02:00
Michael Stapelberg 51ad4baa41 Bugfix: Don’t hide assigned clients to inactive but visible workspaces (Thanks xeen) 2009-08-02 22:33:25 +02:00
Michael Stapelberg 7cfe520755 Bugfix: Don’t hide assigned clients to inactive but visible workspaces (Thanks xeen) 2009-08-02 22:31:52 +02:00
Michael Stapelberg a753684ac5 cache text_width for named workspaces, fix memory leak 2009-08-02 21:32:35 +02:00
Michael Stapelberg e7bf93163d Make path configurable 2009-07-28 22:09:53 +02:00
Michael Stapelberg a43846ea27 Initial implementation of IPC via UNIX domain sockets 2009-07-28 20:51:29 +02:00
Michael Stapelberg 1befbb2a50 Use errx() instead of an own die() function 2009-07-28 14:03:50 +02:00
Michael Stapelberg e6198ad6c8 Some little fixes for bapt’s patch, use predict_text_width, support UTF8, pre-render workspace names 2009-07-28 13:55:09 +02:00
Bapt ddcb11baba Implements configurable named workspaces 2009-07-28 13:08:03 +02:00
Michael Stapelberg fee5add721 Bugfix: Fix NULL-pointer dereferencing introduced by commit 874941 (Thanks tsdh) 2009-07-28 12:23:13 +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 98121e1684 Bugfix: Strip trailing whitespace when parsing assignments (Thanks bapt) 2009-07-21 16:06:16 +02:00
Michael Stapelberg 008a2665c1 Bugfix: Strip trailing whitespace when parsing assignments (Thanks bapt) 2009-07-21 16:05:43 +02:00
Michael Stapelberg 09c1248571 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 16:00:14 +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 af4d2e6d4e 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:50:39 +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