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