Michael Stapelberg
7adf921bc3
use the new parser for handling keybindings
2010-05-11 23:04:47 +02:00
Michael Stapelberg
5eae706427
grammar: s/layout_mode/window_mode
2010-05-11 23:04:21 +02:00
Michael Stapelberg
c75a6732bf
Implement 'restore' in new parser
2010-05-11 23:00:31 +02:00
Michael Stapelberg
a0e33c1d68
implement 'move' command in the new parser
2010-05-11 22:46:49 +02:00
Michael Stapelberg
98dbe63e35
Implement exec, exit, level, restart (without testcases for now)
2010-05-10 10:12:35 +02:00
Michael Stapelberg
6a1c34d2c5
Implement 'split'
2010-05-10 09:33:10 +02:00
Michael Stapelberg
145ebc7584
Implement 'prev', extend testcase
2010-05-10 09:08:31 +02:00
Michael Stapelberg
d8307f4b4a
implement 'next' in the new command parser (testcase unfinished)
2010-05-10 00:06:24 +02:00
Michael Stapelberg
f10a3d9b75
bugfix: really return focus list in IPC tree dump (instead of nodes list)
2010-05-10 00:00:43 +02:00
Michael Stapelberg
09523f36f5
also re-render the tree for commands using the new parser
2010-05-09 23:24:03 +02:00
Michael Stapelberg
65e9036837
bugfix: don’t clean up workspace when switching to the same workspace
2010-05-09 23:20:49 +02:00
Michael Stapelberg
0ea85c1b9d
implement 'fullscreen' command
2010-04-17 19:29:44 +02:00
Michael Stapelberg
b0f47b25a0
throw out some old code from manage.c, cleanups
2010-04-17 18:26:46 +02:00
Michael Stapelberg
7f3a77ac6a
loglevel bitmasks needs to be larger because we got more than 32 files
2010-04-17 17:46:11 +02:00
Michael Stapelberg
b93413ca49
remove old fullscreen code
2010-04-17 17:43:50 +02:00
Michael Stapelberg
6bf55dc356
implement con_toggle_fullscreen
2010-04-17 17:40:41 +02:00
Michael Stapelberg
c4d87e2f81
handle destroynotify events
2010-04-17 17:27:53 +02:00
Michael Stapelberg
d973f30fc2
push X11 changes after a window is mapped
2010-04-17 16:43:34 +02:00
Michael Stapelberg
68542f3c22
When assigning children to containers, reset their x window state
2010-04-17 16:41:20 +02:00
Michael Stapelberg
53dcebfd8a
put container in fullscreen mode if the fullscreen state is set when mapping
2010-04-17 14:21:34 +02:00
Michael Stapelberg
c56867792a
handle client messages (fullscreen window state)
2010-04-17 13:54:45 +02:00
Michael Stapelberg
22f38ebde4
clear current_match when dropping state
2010-04-17 12:57:06 +02:00
Michael Stapelberg
77ec4219c9
make floating an enum (we need three states, not only two)
2010-04-16 22:57:21 +02:00
Michael Stapelberg
8d05039b04
move match_* to match.c
2010-04-16 22:51:25 +02:00
Michael Stapelberg
bb220b27d7
check for empty matches
2010-04-16 22:50:20 +02:00
Michael Stapelberg
e0b7ae872e
move con_focus to con.c
2010-04-16 21:04:36 +02:00
Michael Stapelberg
4796798074
better debug messages
2010-04-16 21:02:34 +02:00
Michael Stapelberg
138a790cd0
clean up old workspace when switching (makes test 2 of t/16-*.t pass)
2010-04-16 20:59:21 +02:00
Michael Stapelberg
2534f21940
ignore sequence of unmapnotify events (generates enternotify events)
2010-04-16 20:56:49 +02:00
Michael Stapelberg
93600ce0fd
implement con_id for matching containers, extend testcase
2010-04-16 15:30:07 +02:00
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
Michael Stapelberg
d08ec00329
use scalloc instead of some places where calloc was still used
2010-03-02 14:42:24 +01:00
Michael Stapelberg
aae824b1f3
Change workspace assignments to use the RandR output name instead of <screen>
2010-03-02 13:35:43 +01:00
Michael Stapelberg
818e02ef35
huge change: implement RandR instead of Xinerama
...
Thanks to Merovius for doing a proof of concept on this one and
being a driving force behind the idea.
Using RandR instead of Xinerama means that we are now able to use
the full potential of the modern way of configuring screens. That
means, i3 now has an idea of the outputs your graphic driver
provides, which allowed us to get rid of the ugly way of detecting
changes in the screen configuration which we used before. Now, your
workspaces should not be confused when changing output modes anymore.
Also, instead of having ugly heuristics to assign your workspaces
to (the screen at position X or the second screen in the list of
screens) you will be able to just specify an output name.
As this change basically touches everything, you should be prepared
for bugs. Please test and report them!
2010-03-02 12:47:21 +01:00
Michael Stapelberg
6f72970ece
add xcb_set_window_rect which configures a window according to a Rect
2010-02-28 20:35:30 +01:00
Michael Stapelberg
7caf98dd18
Move update_if_necessary to util.c, will be necessary later
2010-02-28 18:39:11 +01:00
Michael Stapelberg
e209fd7d3a
docs: the comparison is size and position, not only size (Thanks Merovius)
2010-02-22 07:09:17 +01:00
Michael Stapelberg
4fcbb7980e
work around clients setting 0xFFFF as resize increments
...
I am not sure if behaviour is specified for this case, but as the
workaround is not really a big deal, why bother…
2010-02-20 20:32:43 +01:00
Michael Stapelberg
432f06a21e
Add missing carriage return (Thanks fallen)
2010-02-16 19:55:04 +01:00
Michael Stapelberg
e225742415
Make the warning about $terminal being deprecated an error (Thanks fallen)
2010-02-16 19:25:07 +01:00
Michael Stapelberg
e78bb02082
parser: ignore errors
2010-02-14 16:59:22 +01:00
Michael Stapelberg
2af2bc36c9
Document the new options
2010-02-13 19:58:43 +01:00
Michael Stapelberg
64cf88403d
lexer/parser: proper error messages
...
Error messages now look like this:
13.02.2010 19:42:30 - ERROR:
13.02.2010 19:42:30 - ERROR: CONFIG: syntax error, unexpected <word>,
expecting default/stacking/tabbed or stack-limit
13.02.2010 19:42:30 - ERROR: CONFIG: in file "inv", line 15:
13.02.2010 19:42:30 - ERROR: CONFIG: new_container foobar
13.02.2010 19:42:30 - ERROR: CONFIG: ^^^^^^
13.02.2010 19:42:30 - ERROR:
2010-02-13 19:42:54 +01:00
Michael Stapelberg
79a4e30488
parser: enable verbose error messages, add aliases to tokens
2010-02-13 15:27:43 +01:00
Michael Stapelberg
e446747812
Also warp the pointer when moving a window to a another visible workspace (Thanks Thomas)
2010-02-12 16:19:58 +01:00
Michael Stapelberg
87f8c501da
Bugfix: Correctly do boundary checking/moving to other workspaces when moving floating clients via keyboard (Thanks sasha)
2010-02-12 13:06:59 +01:00
Michael Stapelberg
0b6b8e8380
Bugfix: Use both parts of WM_CLASS (it contains instance and class) (Thanks fallen)
...
Actually, WM_CLASS contains two null-terminated strings, so we cannot
use asprintf() to get its value but rather use strdup() to get both
of them. Both values are compared when a client is matched against
a wm_class/title combination (for assignments for example).
2010-02-12 12:12:25 +01:00
Michael Stapelberg
88b9700cdb
Invert logic for the last commit
...
This makes it more clear that the option is meant to be a special
case (it *disables* part of the focus handling). Also, when
initializing the config data structure with zeros, it will get
initialized with the right value.
Furthermore, the config file parser now also accepts various values
which represent "true", not only numbers.
2010-01-29 21:58:50 +01:00
Kim Silkebækken (lokaltog)
7f10970fc7
Added focus_follows_mouse config option
2010-01-29 21:58:50 +01:00
Kim Silkebækken (lokaltog)
36909c6e3b
Fixed cursor code in create_window(), allowing the cursor to be changed
2010-01-26 11:28:38 +01:00
Kim Silkebækken (lokaltog)
148547c765
Fixed cursor orientation when resizing
2010-01-26 11:28:37 +01:00
Michael Stapelberg
7270b74732
Implement resize command for floating clients
2010-01-23 18:57:29 +01:00
Michael Stapelberg
fde11f9a5c
Bugfix: Don’t leak IPC socket to launched processes
2010-01-23 00:34:29 +01:00
Cedric Staub
c606d93630
Feature: Cycle through workspaces
...
On command pw/nw, cycle through all workspaces (starting from
previous/next one) until we reach the current one again.
2010-01-19 12:10:45 +01:00
Michael Stapelberg
d949a335e6
bugfix: lexer: return to INITIAL state (Thanks dirkson)
...
'floating_modifier' after 'workspace' did not work because of wrong
state
2010-01-08 18:56:01 +01:00
Michael Stapelberg
af0b33bcc3
Bugfix: if a font provides no per-char info for width, fall back to the default (Thanks Ciprian)
2010-01-07 14:38:00 +01:00
Michael Stapelberg
b6de565445
Bugfix: Use ev_loop_new instead of ev_default_loop because the latter one blocks SIGCHLD (Thanks Ciprian)
...
SIGCHLD was inherited to child processes started by i3 and not
all of them unblocked it (shells generally did, though), leading to
zombie processes.
2010-01-07 13:36:52 +01:00
Michael Stapelberg
44191d5ffc
sighandler: last little style fixes
2010-01-03 22:07:39 +01:00
Michael Stapelberg
2b1a132c39
grab the pointer inside the signal handler popup
2010-01-03 22:02:07 +01:00
Michael Stapelberg
be33c8e599
Check return code of sigaction()
2010-01-03 21:55:22 +01:00
Michael Stapelberg
a69dfb3f06
Remove expose event mask, expose events will not be generated in any case
2010-01-03 21:55:02 +01:00
Michael Stapelberg
7b2363776a
Use DLOG instead of LOG, remove unnecessary debug statement
2010-01-03 21:54:47 +01:00
Michael Stapelberg
0c35573e51
some little style changes
2010-01-03 21:54:26 +01:00
Michael Stapelberg
8afdf54078
Update copyright to 2010
2010-01-03 21:53:30 +01:00
Jan-Erik Rediger
614b360bd4
added popup for handling SIGSEGV or SIGFPE
...
the popup is placed on each of the virtual screens
the user can decide to restart or quit i3
in case of an exit a core-dump is generated
2010-01-03 21:32:50 +01:00
Michael Stapelberg
715983024d
ewmh: Don’t push workspaces with width=0 and height=0 (Thanks Atsutane, badboy)
...
Even though i3 cannot know the width/height of some workspaces as
long as they are not initialized (say you used workspace 1 and 3,
but not workspace 2), some applications require this information.
In this case, it was Firefox which intersects the available workareas
(see mozilla/gfx/src/gtk/nsScreenGtk.cpp) and did not position some
windows correctly when being confronted with zero-width/height
workspaces.
2010-01-03 18:36:50 +01:00
Michael Stapelberg
7c130fb540
Obey the XDG Base Directory Specification for config file paths
...
This means you can now put your i3 config into
$XDG_CONFIG_HOME/i3/config, which probably is ~/.config/i3/config
if not set otherwise.
2010-01-03 16:58:41 +01:00
Michael Stapelberg
ba2dd3a3eb
Bugfix: Containers could lose their snap state (Thanks Atsutane)
...
When being on a different workspace than the one where the snapped
container is, the function to cleanup cols/rows would clean up too
much.
2010-01-01 22:40:50 +01:00
Michael Stapelberg
092f3139d8
Remove superfluous #include <assert.h> (Thanks badboy)
2010-01-01 17:30:27 +01:00
Michael Stapelberg
65cae2cad1
Bugfix: Don’t put dock clients into floating mode (Thanks xeen)
2010-01-01 16:19:42 +01:00
Michael Stapelberg
75aac5bc02
ewmh: implement support for _NET_WORKAREA (rdesktop can use that)
...
Please note that rdesktop’s -g workarea option will not work on
64-bit systems at the moment because of a bug in rdesktop (see the
rdesktop-devel mailing list).
2009-12-31 17:48:41 +01:00
Michael Stapelberg
e7e9e8e49d
ewmh: correctly set _NET_ACTIVE_WINDOW
2009-12-25 15:19:39 +01:00
Michael Stapelberg
0641e6a1a3
ewmh: correctly set _NET_CURRENT_DESKTOP to the number of the active workspace
2009-12-25 15:05:17 +01:00
Michael Stapelberg
ba82a3e63b
Bugfix: Fix NULL pointer dereference in workspaces which have preferred screens but were not used yet (Thanks badboy)
2009-12-23 00:39:03 +01:00
Michael Stapelberg
3e53ecf69e
retab! src/container.c
2009-12-22 23:43:05 +01:00
Michael Stapelberg
848d9c1b01
Make containers containing exactly one window behave like default containers
...
Starting from this commit, a borderless window will always be
borderless if it is the only window in a container. For example,
you can have Firefox borderless in a tabbed container and as soon
as the download manager or a viewer gets opened, the container
will be rendered like a normal tabbed container.
This solves the user-interface dilemma of borderless/1-px-border
windows inside stacked/tabbed containers, at least for this special
case. Thanks to Merovius for this suggestion.
2009-12-22 23:40:06 +01:00
Michael Stapelberg
9df64a8d0a
Correctly exit when another window manager is already running
...
This is implemented by checking if setting the redirect mask returned
an error or not.
2009-12-22 11:29:24 +01:00
Michael Stapelberg
e900a8d23d
xinerama: correctly put windows which are assigned to a specific screen on that screen when it becomes available (Thanks badboy)
2009-12-21 22:30:08 +01:00
Michael Stapelberg
0b5554c762
xinerama: change some log messages to errors
2009-12-21 20:41:02 +01:00
Michael Stapelberg
6ef0d1fa79
Touch each log message and classify it as DLOG (debug), ELOG (error) or LOG (verbose)
2009-12-19 22:40:23 +01:00
Michael Stapelberg
37d795c81d
Add new options -V for verbose mode and -d <loglevel> for debug log levels
2009-12-19 22:40:23 +01:00
Michael Stapelberg
4226cc61de
add log.c/log.h which contain all the log related macros and functions
2009-12-19 22:40:23 +01:00
Michael Stapelberg
937048d47b
Distribute rest space between windows as long as possible. (Thanks msi)
...
When having 8 windows in a container which has 766 px available,
you ended up losing 0,75 px per window which would quickly sum up.
Now, the rest space (6 px in this example) is distributed in units
of one pixel to as many windows as possible.
2009-12-13 17:02:22 +01:00
Michael Stapelberg
f87b98e0a7
Take into account the window’s base_{width,height} when resizing (Thanks Mirko)
2009-12-12 22:27:57 +01:00
Michael Stapelberg
8d8804221b
Partly revert 4ba26659
, it was just wrong.
2009-12-12 21:42:56 +01:00
Michael Stapelberg
c6c0862e24
Bugfix: Correctly check for fullscreen windows when mapping new clients
...
CUR_CELL only works if you currently are in that container (not for
windows which are assigned to invisible workspaces, for example).
2009-12-12 21:31:41 +01:00
Michael Stapelberg
4afe65eea2
Bugfix: Correctly place new windows below fullscreen windows (Thanks Moredread)
...
This bug could happen if you have floating and tiling windows (for
example Firefox in tiling mode and its Open dialog in autmatically
floating mode) and you opened a new tiling window while in fullscreen.
i3 would then place the window below the floating windows, but
floating clients are above fullscreen windows. Thus, the client
would be placed above the fullscreen window.
2009-12-12 21:29:07 +01:00
Michael Stapelberg
ffe925f733
Bugfix: Fix assignments to not yet visible workspaces
...
This was broken by commit 5a1668db3
2009-12-12 18:43:30 +01:00
Michael Stapelberg
17082ef5b7
Bugfix: close file handle after parsing
2009-12-11 17:57:42 +01:00
Michael Stapelberg
e5c4fa6c1c
Include unistd.h for usleep()
2009-12-08 20:55:17 +01:00
Michael Stapelberg
ddf3119552
Bugfix: Don’t resize client after base_height changes if client is in fullscreen mode
2009-12-08 20:52:19 +01:00
Michael Stapelberg
befd7f6f22
Bugfix: Use more precise floating point arithmetic (Thanks helgiks)
...
This prevents errors in rounding leading to an unoccupied space of
-1 which in turn leads to infinity when calculating the new size
of a container after resizing.
2009-12-08 11:48:25 +01:00
Michael Stapelberg
1a53cc067b
When no screens are found, don’t hog the CPU. Also, wait longer for screens (10 seconds).
...
Instead of just going on, i3 will exit cleanly now, putting an
appropriate message into the logfile.
2009-12-07 16:31:49 +01:00
Michael Stapelberg
ec2e5e8364
Bugfix: Fix two problems in resizing floating windows with right mouse button (Thanks Mirko)
...
Minimum width/height was not consistent with the limit for grabbing
and resizing a window at its border.
If one of both was violated (width < min_width for example), none
of them were updated.
2009-11-26 22:17:38 +01:00
Michael Stapelberg
5a1668db36
Bugfix: Render containers after setting the client active (Thanks Mirko)
...
This lead to race conditions when the window did not change its title
after mapping and was displayed in a tabbed container.
2009-11-26 21:32:53 +01:00
Michael Stapelberg
5329ed0158
Bugfix: Resize client after updating base_height/base_width (Thanks Merovius)
...
This fixes the problem that urxvt/xterm "lost" a line of space before
being resized the first time.
2009-11-23 09:42:38 +01:00
Michael Stapelberg
d2a88f7089
Bugfix: Don’t ignore urgency flag when the client wants to clean it (Thanks Syntropy)
2009-11-23 08:35:40 +01:00
Michael Stapelberg
4ba26659fd
Bugfix: Fix stack-limit cols, handle stack-limit cols on tabbed containers (Thanks jace)
2009-11-22 22:48:08 +01:00
Michael Stapelberg
4ace0d2138
config: delete old parser, new lexer/parser is the default by now
2009-11-22 20:25:33 +01:00
Michael Stapelberg
52945486fd
Bugfix: Also fix horizontal resizing
...
The same problem as in the commit before this one was present. Additionally,
the dock_clients and internal bar were not taken into account everywhere.
2009-11-22 14:32:40 +01:00
Michael Stapelberg
2c8b041500
Bugfix: Correctly calculate width when resizing (Thanks Merovius)
2009-11-22 14:05:35 +01:00
Michael Stapelberg
29464dc791
Bugfix: Don’t set the urgency flag if the window is currently active
2009-11-20 15:55:54 +01:00
Michael Stapelberg
c0256edd2e
Bugfix: Accept underscores in bindsym (Thanks jace)
2009-11-20 15:33:38 +01:00
Michael Stapelberg
c5da7bd266
Bugfix: Fix resizing of floating windows in borderless/1-px-border mode (Thanks Grauwolf)
...
Calculations were wrong (they simply didn’t take into account that
there is more than one border style, the code was from before we
implemented that…). We cannot directly set child_rect to the coordinates
as resize_client takes rect and calculates the child_rect, so we need
the new lines of code for this bugfix in any case (rect needs to be
updated).
2009-11-18 22:53:17 +01:00
Michael Stapelberg
82c32616e1
Bugfix: Correctly clear the urgency hint if a window gets unmapped without clearing the hint
2009-11-18 20:20:54 +01:00
Michael Stapelberg
6a5bdf6f8e
Bugfix: Also allow WORDs as workspace names (Thanks Grauwolf)
2009-11-18 19:53:57 +01:00
Michael Stapelberg
fb04388289
Bugfix: Don’t hide window titles in tabbing mode (Thanks badboy)
2009-11-15 17:35:15 +01:00
Michael Stapelberg
d266474f97
Remove the terminal option from config.
...
The welcome message is displayed using xmessage(1), not using your
terminal. Thus, it makes no sense to have this option anymore. Also,
the new lex/yacc parser cannot correctly handle the situation:
normal variables are expanded before parsing the file. As a replacement,
you can use:
set $terminal /usr/bin/urxvt
2009-11-13 20:36:59 +01:00
Michael Stapelberg
aa2e0d7d14
Bugfix: Correctly replay pointer if the click handler does not trigger (Thanks merovius)
2009-11-13 20:22:23 +01:00
Michael Stapelberg
d48a515752
Bugfix: Correctly switch border types for floating windows (Thanks msi)
2009-11-13 19:55:34 +01:00
Michael Stapelberg
51b937741d
Bugfix: Don’t draw window title when titlebar is disabled (Thanks msi)
2009-11-13 19:46:07 +01:00
Michael Stapelberg
c0c4dd2978
Disable XKB instead of quitting with an error (Thanks sur5r)
...
This is necessary for running i3 in Xvnc for example.
2009-11-13 00:30:42 +01:00
Michael Stapelberg
4b1bb7d19a
Add ctrl as synonym for control
2009-11-12 20:28:09 +01:00
Michael Stapelberg
47ebb9e1dd
Fix compilation warning on OpenBSD (Thanks bapt)
2009-11-10 00:07:40 +01:00
Michael Stapelberg
bf728be09b
parser: Use right parameter, suppress warning about expected shift/reduce conflict
2009-11-09 22:36:26 +01:00
Michael Stapelberg
f2dcc36333
Bugfix: WHITESPACE was missing in front of the workspace name (Thanks Mirko)
2009-11-08 21:43:47 +01:00
Michael Stapelberg
316f62dfda
Fix rendering of 1-px-border windows which require background filling
2009-11-08 13:04:14 +01:00
Michael Stapelberg
f1ecf08df5
s/for(/for (/
2009-11-08 12:45:33 +01:00
Michael Stapelberg
64c99cb235
Implement configuration setting to change the default border of windows
2009-11-08 12:43:01 +01:00
Michael Stapelberg
876417f49d
Bugfix: Don’t access wrong parameter (Thanks atsutane)
2009-11-07 16:51:10 +01:00
Michael Stapelberg
037605e34c
Use nicer colors for focused_inactive by default
2009-11-06 18:41:17 +01:00
Michael Stapelberg
5583dfa5e4
parser: Solve last shift/reduce conflicts
2009-11-06 17:26:17 +01:00
Michael Stapelberg
8e1945a990
parser: solve shift/reduce conflict by moving WHITESPACE token to the right place
2009-11-06 17:19:01 +01:00
Michael Stapelberg
6aab45e7a4
configfile: make whitespace optional for modes (Thanks tsdh)
2009-11-06 15:42:03 +01:00
Michael Stapelberg
3b05d9df60
Bugfix: Cleanup stack window also when in tabbing mode (Thanks litemotiv)
2009-11-04 22:37:43 +01:00
Michael Stapelberg
dd086864ce
Apply fix of the previous commit also for columns
2009-11-04 22:12:15 +01:00
Michael Stapelberg
2a0278b519
Bugfix: Switch layout mode after initializing all containers in a new row
2009-11-04 22:10:26 +01:00
Michael Stapelberg
2a0b1adab9
Also support xcb-keysyms < 0.3.4 when using bindsym (Thanks ch3ka)
2009-11-02 23:15:08 +01:00
Michael Stapelberg
0d327b7d17
Fix compilation warning
2009-11-02 23:14:21 +01:00
Michael Stapelberg
de3ca5c600
Bugfix: Ignore trailing/leading whitespaces when defining a mode (Thanks badboy)
...
…and shame on you for trailing/leading whitespace :).
2009-11-02 23:13:22 +01:00
Michael Stapelberg
a817519c0d
Bugfix: Prevent a division through zero (Thanks xeen)
2009-10-29 00:33:20 +01:00
Michael Stapelberg
16d33ec9df
Bugfix: Correctly re-assign dock_clients to the first screen when their screen disappears
...
This could lead to a null-pointer dereference when closing dock
clients that got lost.
2009-10-28 15:37:34 +01:00
Michael Stapelberg
fe2e4991d8
Bugfix: Use the right pointer for bar.* colors (Thanks shatter)
2009-10-23 23:13:38 +02:00
Michael Stapelberg
15d83d472b
Fix debug message in cfgparse.y (Thanks shatter)
2009-10-23 22:57:35 +02:00
Michael Stapelberg
80551834d2
Bugfix: Allow dock clients to reconfigure their height (Thanks Grauwolf)
2009-10-23 16:07:03 +02:00
Michael Stapelberg
da97b89b31
Bugfix: Don’t allow moving/resizing of fullscreen windows (Thanks xeen)
2009-10-13 08:26:35 +02:00
Michael Stapelberg
04884ab8cd
Bugfix: Fix NULL pointer dereference when reconfiguring screens
...
This did not happen all the time. It seems like you need to have a
container which is in stacking/tabbing mode on the screen which
is being reconfigured. (when doing xrandr --output VGA1 --off for
example)
2009-10-12 18:31:31 +02:00
Michael Stapelberg
2b679c6b9e
Fix HEAD^
2009-10-11 14:30:57 +02:00
Michael Stapelberg
d4ff702f19
Bugfix: Also apply the fix of 74ccdb4
when re-querying xinerama screens (Thanks Scytale)
2009-10-11 14:28:27 +02:00
Michael Stapelberg
3779f9292f
Bugfix: IPC: Correctly handle the case when multiple messages get received at once via the socket
...
When the sending application was so fast (*cough*) that the messages
could get queued by the kernel, it may happen that we receive multiple
messages at once.
2009-10-07 21:49:24 +02:00
Michael Stapelberg
ad84c07c8a
Bugfix: Correctly position bar window when using xrandr --below or --above (Thanks Mirko, dirkson)
2009-10-07 20:52:53 +02:00
Michael Stapelberg
44c4c9d5a6
Bugfix: Go to the target workspace before changing focus on goto command (Thanks yurifury)
2009-10-07 20:41:21 +02:00
Michael Stapelberg
df58981b57
Bugfix: Correctly restore the focus to the root screen after unmapping the last client (Thanks Rasi)
...
Sometimes, it may happen that the focus is "nowhere" and thus the
user is stuck. This was often the case with opera, sometimes with
pcmanfm. See ticket #118 .
2009-10-07 20:26:13 +02:00
Michael Stapelberg
f72161d0c2
Bugfix: parser: Correctly generate colorpixels from hex codes
2009-10-01 12:29:27 +02:00
Michael Stapelberg
6aa0f965d2
Fix warnings in lexer/parser
2009-09-29 22:47:37 +02:00
Michael Stapelberg
c4df9f1d95
Bugfix: Correctly initialize workspaces when initializing > 1 workspace (Thanks Mirko)
2009-09-29 22:25:08 +02:00
Michael Stapelberg
2b70e05ee9
Refactor workspaces to be stored in a TAILQ instead of an array
...
This fixes many problems we were having with a dynamically growing
array because of the realloc (pointers inside the area which was
allocated were no longer valid as soon as the realloc moved the
memory to another address).
Again, this is a rather big change, so expect problems and enable
core-dumps.
2009-09-29 19:45:41 +02:00
Michael Stapelberg
5a77081c55
Bugfix: When rendering, skip containers which are not yet initialized
...
This is necessary now, because when creating a new row, several
containers have to be created. Since the implementation of the default
mode for containers, this also involves rendering the layout. However,
when rendering the layout, all of the containers are potentially
accessed…
2009-09-29 12:26:53 +02:00
Michael Stapelberg
9ec6ea61de
Bugfix: Don’t crash when changing workspace when there is more than one column
2009-09-29 12:21:07 +02:00
Michael Stapelberg
ff0e9bb954
Bugfix: Fix parsing symbols which contain numbers, like F1 or 1 for bindsym (Thanks Rasi)
2009-09-29 11:32:57 +02:00
Michael Stapelberg
095de9eaab
Bugfix: partly revert f3880928
, client->workspace was not updated (Thanks msi)
2009-09-29 01:07:51 +02:00
Michael Stapelberg
bfd704c523
Fix syntax for resize command
2009-09-29 00:54:27 +02:00
Michael Stapelberg
d230b2bb1a
Bugfix: Create new workspace when there are no free existing ones to assign (Thanks msi)
...
As the workspaces are now created dynamically, we cannot rely on
the workspaces to be there when we need them without creating them.
On the other hand, this eliminates the case that there are no workspaces
to assign to a new screen, because now we can just create one.
2009-09-28 18:02:11 +02:00
Michael Stapelberg
e101940c5e
Implement options to change the default mode of containers
...
The following new directives have been implemented for the configuration
file:
new_container <default|stacking|tabbed>
new_container stack-limit <cols|rows> <value>
Note that they require using the new lexer/parser, which you can
do by passing -l to i3 when starting.
2009-09-27 23:08:27 +02:00
Michael Stapelberg
fa868ed61c
Bugfix: parser: limit of 10 workspaces is gone
2009-09-27 23:05:07 +02:00
Michael Stapelberg
226664d288
Remove debug message
2009-09-27 23:04:41 +02:00
Michael Stapelberg
058d9cc3a2
Handle ipc_socket like ipc-socket
...
We should use underscores to be consistent
2009-09-27 20:44:24 +02:00
Michael Stapelberg
8f67eba044
Implement modes. Modes allow you to use different keybindings and switch between them.
...
For example, you can create a mode which will let you resize windows
with some easy to use keys. So, instead of binding a combination
of your homerow and modifiers to resize, like this:
bind Mod4+44 resize right +10
bind Mod4+45 resize right -10
...
You can instead define a new mode:
mode "resize" {
bind 44 resize right +10
bind 45 resize right -10
...
bind 36 mode default
}
bindsym Mod4+r mode resize
So, if you press Mod4+r now, your keybindings will be set to the ones
defined in your resize mode above. You can then use your homerow
(without any other modifier) to resize the current column/row and
press enter to go back to the default mode when you are done.
Note that using this option requires you to enable the new lexer/parser
by passing the -l flag to i3 when starting.
2009-09-27 18:45:39 +02:00
Michael Stapelberg
97d949d16c
Bugfix: Correctly re-grab keys when using the new lexer
2009-09-27 18:45:17 +02:00
Michael Stapelberg
d916e075c3
parser: Implement parsing mode sections
...
Wait for further commits before they are actually used.
2009-09-27 17:02:13 +02:00
Michael Stapelberg
051caf571d
retab! cfgparse.y
2009-09-27 17:02:05 +02:00
Michael Stapelberg
55f4e5ab68
Add vim modeline to lexer/parser
2009-09-27 17:01:06 +02:00
Michael Stapelberg
c2a42dd503
lexer: Allow whitespace before comments
2009-09-27 17:00:37 +02:00