Commit Graph

693 Commits

Author SHA1 Message Date
Michael Stapelberg
68542f3c22 When assigning children to containers, reset their x window state 2010-04-17 16:41:20 +02:00
Michael Stapelberg
53dcebfd8a put container in fullscreen mode if the fullscreen state is set when mapping 2010-04-17 14:21:34 +02:00
Michael Stapelberg
c56867792a handle client messages (fullscreen window state) 2010-04-17 13:54:45 +02:00
Michael Stapelberg
22f38ebde4 clear current_match when dropping state 2010-04-17 12:57:06 +02:00
Michael Stapelberg
77ec4219c9 make floating an enum (we need three states, not only two) 2010-04-16 22:57:21 +02:00
Michael Stapelberg
8d05039b04 move match_* to match.c 2010-04-16 22:51:25 +02:00
Michael Stapelberg
bb220b27d7 check for empty matches 2010-04-16 22:50:20 +02:00
Michael Stapelberg
e0b7ae872e move con_focus to con.c 2010-04-16 21:04:36 +02:00
Michael Stapelberg
4796798074 better debug messages 2010-04-16 21:02:34 +02:00
Michael Stapelberg
138a790cd0 clean up old workspace when switching (makes test 2 of t/16-*.t pass) 2010-04-16 20:59:21 +02:00
Michael Stapelberg
2534f21940 ignore sequence of unmapnotify events (generates enternotify events) 2010-04-16 20:56:49 +02:00
Michael Stapelberg
93600ce0fd implement con_id for matching containers, extend testcase 2010-04-16 15:30:07 +02:00
Michael Stapelberg
769501420d add first version of a new flex/bison based command parser 2010-04-14 20:26:56 +02:00
Michael Stapelberg
24725cd94a re-add fullscreen mode 2010-04-13 20:51:43 +02:00
Michael Stapelberg
8959c5005f cleanups 2010-04-13 19:33:40 +02:00
Michael Stapelberg
8e5a831e27 re-add focus follows mouse handling 2010-04-13 18:43:37 +02:00
Michael Stapelberg
eec762ea8f more reformatting/cleanups 2010-04-13 17:52:23 +02:00
Michael Stapelberg
dd7acf73e9 re-add support for legacy window titles (WM_NAME) 2010-04-13 17:46:54 +02:00
Michael Stapelberg
fd8735a6fd correctly update/display window title/class 2010-04-13 17:22:34 +02:00
Michael Stapelberg
bcfb0d2505 more reformatting 2010-04-13 16:48:42 +02:00
Michael Stapelberg
4206db2839 workspace.c: update header, reformat 2010-04-13 16:43:08 +02:00
Michael Stapelberg
6aa6fa0af0 correctly focus workspaces 2010-04-13 16:41:23 +02:00
Michael Stapelberg
c145f7e529 first step of the big refactoring ("tree" branch).
From here on, we can track changes. It made no sense to put the
development up to this point into git.
2010-04-13 13:17:39 +02:00
Michael Stapelberg
41b6631f68 Bugfix: null-terminate buffer 2010-03-26 03:04:54 +01:00
Michael Stapelberg
a542515f9e Fix memory leaks 2010-03-26 01:52:39 +01:00
Michael Stapelberg
7bd4ea3699 randr: Don’t enable outputs with mode 0x0
Just a sanity check for some possibly broken drivers.
2010-03-26 01:52:08 +01:00
Michael Stapelberg
a151fd95a8 remove newlines 2010-03-26 00:28:30 +01:00
Michael Stapelberg
6fd56757f0 Bugfix: Assign all workspace to new outputs as new outputs get available (Thanks badboy) 2010-03-26 00:13:28 +01:00
Michael Stapelberg
1b8299002e Bugfix: Translate keysyms to keycodes before entering mode (Thanks fallen) 2010-03-25 21:18:46 +01:00
Michael Stapelberg
6699d54640 Fix rendering of workspace names after "reload" (Thanks fallen) 2010-03-25 19:08:37 +01:00
Michael Stapelberg
469f22caeb Bugfix: Correctly switch workspace when using the "jump" command (Thanks fallen) 2010-03-25 18:07:40 +01:00
Michael Stapelberg
2c42c0c760 Bugfix: Correctly check bitmask for floating_modifier 2010-03-25 02:53:53 +01:00
Michael Stapelberg
46e7cf5fe1 Handle destroy notify events like unmap notify events
This helps for windows which are immediately destroyed instead of
unmapped, like when starting i3status | ./foobar | dzen2 -dock
and foobar does not exist (i3status and dzen2 will get a SIGPIPE).
2010-03-24 16:52:16 +01:00
Michael Stapelberg
e90e80c87d Bugfix: fix state of keypresses in sighandler (like in i3-input) 2010-03-24 16:10:47 +01:00
Michael Stapelberg
7eea1067f8 Bugfix: correctly translate coordinates for floating windows when outputs change 2010-03-24 16:09:43 +01:00
Michael Stapelberg
0f7ac09c7b Bugfix: Don’t unmap windows when current workspace gets reassigned
Steps to reproduce were:
1) xrandr --output VGA1 --auto --left-of LVDS1
2) open a terminal on VGA1
3) xrandr --output VGA1 --off
2010-03-24 16:06:21 +01:00
Michael Stapelberg
56139f3656 Bugfix: only restore focus if the workspace is focused, not if it is visible 2010-03-23 14:43:35 +01:00
Michael Stapelberg
42b638eac0 Bugfix: Don’t enter BIND_A2WS_COND state too early (Thanks fallen) 2010-03-22 15:12:37 +01:00
Michael Stapelberg
77efb29d9f ipc: send a workspace event when the urgency flag changes 2010-03-20 03:09:42 +01:00
Michael Stapelberg
35a791f7e6 ipc: also send workspace event when initializing a workspace for an output 2010-03-20 02:56:23 +01:00
Michael Stapelberg
46bd9ac58a Bugfix: correctly re-assign dock clients when output goes inactive 2010-03-20 02:52:06 +01:00
Michael Stapelberg
aec40126b4 ipc: implement output event 2010-03-19 22:40:43 +01:00
Michael Stapelberg
4ce0d6f014 ipc: implement GET_OUTPUTS 2010-03-19 22:24:52 +01:00
Michael Stapelberg
a607eae53a ipc: include the urgent flag in the workspaces reply 2010-03-19 22:01:21 +01:00
Michael Stapelberg
fdcbec248a Start dock clients on the output they request to be started on according to their geometry
Use dzen2’s -xs option to use this, or specify the coordinates using
-x manually.
2010-03-19 21:44:36 +01:00
Michael Stapelberg
3c8c426011 Disable RandR if no outputs are found (Thanks fallen) 2010-03-19 18:51:19 +01:00
Michael Stapelberg
ee76b2ebf6 Bugfix: When disabling RandR/Xinerama, give a name to the pseudo-output (Thanks fallen) 2010-03-19 18:51:01 +01:00
Michael Stapelberg
af00df9321 Use DLOG for debug messages instead of printf (Thanks kruM) 2010-03-19 18:48:36 +01:00
Michael Stapelberg
0bb1b718d1 Fix compilation with the old xcb keysyms api 2010-03-19 16:02:33 +01:00
Michael Stapelberg
91b6c69eae little style fix for the last commit 2010-03-19 01:43:11 +01:00
Helgi Kristvin Sigurbjarnarson
62c4532329 Bugfix: Take window out of fullscreen before entering floating mode. 2010-03-19 01:24:33 +01:00
Michael Stapelberg
1680071555 randr: use effective CRTC width/height, not its mode (Thanks moemoe)
This fixes setups which use panning and cloning.
2010-03-17 15:56:26 +01:00
Michael Stapelberg
a604af6340 make pointer follow the focus when moving to a different screen also for floating windows 2010-03-17 03:18:13 +01:00
Michael Stapelberg
b47d0a8932 Bugfix: configure floating windows above tiling windows when moving them to another workspaces (Thanks Sasha) 2010-03-17 00:36:08 +01:00
Michael Stapelberg
f7a1a9fb20 ipc: correctly shutdown IPC sockets when exiting/restarting 2010-03-16 02:44:47 +01:00
Michael Stapelberg
f9e6f8ba4b Bugfix: Correctly stack windows when new windows are opened while in fullscreen mode
This fixes ticket #195.
2010-03-15 22:17:00 +01:00
Michael Stapelberg
c738b2e454 Don’t use SYNC key bindings for Mode_switch but re-grab keys
Before this commit, i3 used key bindings in SYNC mode for bindings
like Mode_switch + <a> and replayed the key if the current state
did not include Mode_switch. This had some problems:

1) The WM needed to acknowledge much more key presses than you
   actually had bindings for, thus making the system a bit laggy
   sometimes.
2) Users of layouts who constantly type in the third level (like
   russian layouts) did not get their cyrillic symbols correctly
   (they were not replayed right), neither did the keybindings
   work in both modes.

So, the current implementation uses the following approach: XKB
provides an event which contains the current state (including
the current level). i3 signs up for this event and upon receival,
it re-maps the bindings using Mode_switch (enables them when the
level goes to the third level and disables them as soon as the
level goes back to normal). This fixes both problems.
2010-03-14 22:40:58 +01:00
Michael Stapelberg
2df1fb8ac8 Implement disabling the internal workspace bar 2010-03-14 12:59:45 +01:00
Michael Stapelberg
2df374ca4c Add configuration option to turn off workspace bar 2010-03-13 19:15:28 +01:00
Michael Stapelberg
b6088b803e ipc: correctly set "focused" for workspaces
Didn’t work on empty workspaces before
2010-03-13 16:27:03 +01:00
Axel Wagner
9cb35383a8 Implement proportional floating-resize. 2010-03-13 13:22:39 +01:00
Michael Stapelberg
3db4890683 ipc: implement events, cleanup the code a bit 2010-03-12 21:05:05 +01:00
Michael Stapelberg
d86531b958 ipc: return logical workspace numbers, not internal ones 2010-03-12 15:59:38 +01:00
Michael Stapelberg
d6f726283c ipc: also send a reply for COMMAND messages 2010-03-12 15:29:44 +01:00
Michael Stapelberg
5a3d1b38e8 ipc: Correctly deal with SIGPIPE/failing write()s
If a client disconnects while i3 still wants to write the reply, this
could lead to exits of i3 before.
2010-03-12 15:02:00 +01:00
Axel Wagner
0f5256dc72 Floating resize uses arbitrary corners
This closes ticket #121
2010-03-12 03:11:20 +01:00
Michael Stapelberg
9ed5e00107 ipc: change active to visible, introduce focused
visible == currently visible on the output it is on
(multiple workspaces can be visible at the same time)
focused == has the focus (only one workspace can be focused)
2010-03-12 03:01:34 +01:00
Michael Stapelberg
7c1be83692 Update comment (Thanks Merovius) 2010-03-12 02:59:16 +01:00
Michael Stapelberg
5f370b494c bugfix: don’t remap stack windows errnously when changing workspaces
This fixes ticket #193 (long-standing rendering bug).
2010-03-12 00:41:40 +01:00
Michael Stapelberg
93a9f3c244 Bugfix: Don’t mess up x/y coordinates in configurerequests for floating windows
This was the cause for ticket #93, which actually has a false
conclusion for the reason of this bug.

This code needs to be refactored.
2010-03-11 23:34:29 +01:00
Michael Stapelberg
e11ca75407 ipc: add active flag 2010-03-11 16:48:48 +01:00
Michael Stapelberg
9a9ba1b859 ipc: implement GET_WORKSPACES message type
This is the foundation to use dzen2 or similar as a complete
replacement for the internal workspaces bar.

A testcase is included, more documentation about the IPC interface
will follow.
2010-03-11 15:58:39 +01:00
Michael Stapelberg
f7c8e76782 Select containers above or near the whole snapped width/height
This fixes ticket #100, and is best explained using a little example.
Consider the following layout:

+---+---+
|   | X |
+---+---+
|   X   |
+---+---+

Where X marks a window, so you have an empty container in the upper
left, the container on the bottom is snapped to the right. Before
this commit, nothing would happen when focusing "above". After
this commit, the upper window gets focused.
2010-03-11 00:15:34 +01:00
Michael Stapelberg
a70f4353b7 Fix predict_text_width by using xcb_query_text_extents
This fixes ticket #173, at least for the rendering errors.
I don’t really know why I implemented predict_text_width like it
was before (querying the whole table and pulling out information
one by one). Maybe I have overlooked xcb_query_text_extents. In
any case, it works better now.
2010-03-10 23:27:24 +01:00
Michael Stapelberg
bd76e994b8 Re-add old Xinerama code for the poor nvidia users
Add --force-xinerama when starting i3 to use Xinerama instead of RandR.
This should *ONLY* be done if you have no other choice (nvidia’s
binary driver uses twinview and does not expose the monitor information
through RandR).
2010-03-09 21:25:54 +01:00
Michael Stapelberg
4dfe61c2d4 Fixes for the last commit: check outputs instead of workspaces, correctly reset state when switching workspaces, little style fixes 2010-03-08 11:15:31 +01:00
Axel Wagner
9c77b0f9a1 Implement screen-spanning fullscreen-mode (command: 'fg')
This closes ticket #188
2010-03-08 11:15:31 +01:00
Michael Stapelberg
85308715ea Turn nested functions into real functions or macros
This enables compilation with llvm-clang and thus closes ticket #101.
While it makes the code more ugly, I don’t see a beautiful solution
which would enable us to stay with the more elegant solution of
nested functions and still allow compilation with any other compiler
than gcc.
2010-03-07 19:00:34 +01:00
Michael Stapelberg
46642d0e45 For num_clients == 0, the last fix is also valid 2010-03-06 16:58:20 +01:00
Michael Stapelberg
afc922ef57 Avoid more errors by not trying to re-create a stack win with height == 0 2010-03-06 16:51:17 +01:00
Michael Stapelberg
e9ef672c36 Don’t render if no stack_window has been opened
This could happen when you have only one client in a stacking/tabbed
container. While not being a critical bug, this avoids X errors.
2010-03-06 16:34:07 +01:00
Michael Stapelberg
6be76e4c56 Remove trailing whitespace 2010-03-05 23:26:45 +01:00
Thorsten Töpper
4e9c6515f3 Changing to stacking/tabbing toggles mode to default if already in stacking/tiling. 2010-03-05 23:25:34 +01:00
Michael Stapelberg
f1a011c014 Clear urgency hints set by i3 (see HEAD~2) 2010-03-05 20:03:38 +01:00
Michael Stapelberg
c367eaa369 put windows with WM_CLIENT_LEADER on the workspace of their leader
This fixes ticket #163
2010-03-05 18:01:32 +01:00
Michael Stapelberg
40475b250f Allow unsetting WM_CLIENT_LEADER (XCB_NONE is not an invalid value) 2010-03-05 17:42:50 +01:00
Michael Stapelberg
8d648b4e37 Update function names, variable names and documentation for the RandR changes 2010-03-05 16:18:41 +01:00
Michael Stapelberg
8b192ac7ed Bugfix: Correctly hide/show workspaces when enabling new outputs, correctly handle focus (Thanks Merovius) 2010-03-05 15:22:12 +01:00
Michael Stapelberg
718d62a3cd Bugfix: Fix clone mode with new RandR code (Thanks Merovius) 2010-03-05 14:32:48 +01:00
Michael Stapelberg
d73f1748db Remove superfluous definitions (Thanks Merovius) 2010-03-05 01:59:52 +01:00
Michael Stapelberg
85437877e8 fix comment (Thanks Merovius) 2010-03-05 00:09:52 +01:00
Michael Stapelberg
3cfe1b35e0 Update fullscreen client position/size when an output changes (Thanks Merovius)
This fixes #187.
2010-03-03 09:32:31 +01:00
Michael Stapelberg
0ec3481c69 draw consistent borders for each frame in a tabbed/stacked container
The condition was a relict from older rendering code, I think.
This fixes #172.
2010-03-03 08:49:07 +01:00
Michael Stapelberg
187c72fa96 sighandler: only display on active outputs 2010-03-03 08:48:57 +01:00
Michael Stapelberg
e5f222e03e Save a resize_client() when handling the size hints 2010-03-03 01:23:38 +01:00
Michael Stapelberg
7839b7a4fe Bugfix: checked for wrong flag in size hints 2010-03-03 01:23:38 +01:00
Michael Stapelberg
5dbcb0158f When in fullscreen mode, focus whole screens instead of denying to focus (Thanks dothebart)
This fixes ticket #169.
2010-03-02 15:45:48 +01:00
Michael Stapelberg
e3e7ebe23a Bugfix: only return active screens in get_screen_most 2010-03-02 15:45:03 +01:00
Michael Stapelberg
4e69bd65c0 Move autostart after creating the IPC socket in start process (Thanks Sasha)
This fixes ticket #179.
2010-03-02 15:30:23 +01:00
Michael Stapelberg
b53c5861a2 Restore geometry of all windows before exiting/restarting (Thanks Sasha)
This fixes ticket #185
2010-03-02 15:25:08 +01:00