Commit Graph

3037 Commits

Author SHA1 Message Date
Michael Stapelberg 5257a1268f Bugfix: don’t change tabbed/stacked cons to splitv/splith layout (Thanks Merovius)
To automagically do the right thing when rotating monitors with regards
to splith/splitv layout (depending on width/height of the monitor), we
change the orientation of existing workspaces and the first child.

If that first child happens to be a stacked/tabbed con, we cannot change
the layout unconditionally (previously, the orientation was not in the
layout, so we never noticed this problem).

fixes #768
2012-08-17 01:55:31 +02:00
Michael Stapelberg d7b11bde28 i3 --moreversion: use readlink /proc/$pid/exe instead of realpath(argv[0])
The latter is actually wrong. For example, when running i3
--moreversion, it will print $(pwd)/i3 instead of $(which i3). In my
previous tests, this coincidentally was the same.
2012-08-13 13:38:04 +02:00
Fernando Tarlá Cardoso Lemos 6ff3f7abad libi3: Implement Pango rendering 2012-08-13 11:39:30 +02:00
Fernando Tarlá Cardoso Lemos ec17a26b0e libi3: Rework font to support multiple backends 2012-08-13 11:39:29 +02:00
Quentin Glidic 210fc6dfed libi3: Rework predict_text_width
predict_text_width now takes an i3String as argument
2012-08-13 11:37:23 +02:00
Quentin Glidic 53365fa887 libi3: Rework draw_text
We now have two versions of draw_text
draw_text: Now takes an i3String
draw_text_ascii: Designed for static strings in plain ASCII
2012-08-13 11:37:21 +02:00
Quentin Glidic bf177da17d i3/sighandler: Pre-compute i3Strings for text 2012-08-13 11:30:08 +02:00
Quentin Glidic b6c705a1a4 i3/window: Port window names to i3String 2012-08-13 11:30:08 +02:00
Quentin Glidic b01545b131 Makefile: Always link libi3 first 2012-08-13 02:00:01 +02:00
Michael Stapelberg a7569e6a98 implement error messages when moving to another ws fails (Thanks eeemsi)
fixes #769
2012-08-13 01:57:39 +02:00
Michael Stapelberg 4eff386439 remove obsolete branch reference "(tree)" from starting line 2012-08-13 01:57:23 +02:00
Michael Stapelberg e68a8dd86c shm-logging: implement i3-dump-log -f (follow)
This changes the SHM log format, it doesn’t use 0-bytes to separate
entries anymore. Instead of using lots of printf() calls in i3-dump-log,
we now do precisely one big write().

So, to be clear: i3-dump-log and i3 both need to be upgraded.
Mismatching versions will lead to garbage output (no crashes of i3, just
garbage output).

The -f flag uses an inter-process pthread_cond_t in the shared memory
header to broadcast the arrival of new messages to all i3-dump-log
processes. This internally uses futexes and thus doesn’t even mean a
kernel call in most cases. inter-process pthread_cond_ts require NPTL
(the Native Posix Thread Library, introduce in Linux 2.6).
2012-08-13 01:06:09 +02:00
Michael Stapelberg dbe406641f use errx() instead of err() for custom error message 2012-08-12 18:34:03 +02:00
Michael Stapelberg 68a23b9577 Bugfix: only honor _NET_ACTIVE_WINDOW for visible windows (+test) (Thanks Tucos)
fixes #774
2012-08-12 16:08:53 +02:00
Michael Stapelberg 1e49f1b08a Implement i3 --moreversion
From the code:

    Connects to i3 to find out the currently running version. Useful since it
    might be different from the version compiled into this binary (maybe the
    user didn’t correctly install i3 or forgot te restart it).

Here is an example output:

    $ ./i3 --moreversion
    Binary i3 version:  4.2-202-gb8e782c (2012-08-12, branch "next") © 2009-2012 Michael Stapelberg and contributors
    Running i3 version: 4.2-202-gb8e782c (2012-08-12, branch "next") (pid 14804)

    The i3 binary you just called: /home/michael/i3/i3
    RUNNING BINARY DIFFERENT FROM BINARY ON DISK!
    The i3 binary you are running: /home/michael/i3/i3

    $ i3 restart
    2012-08-12 15:05:28 - Additional arguments passed. Sending them as a command to i3.
    IPC: received EOF instead of reply

    $ ./i3 --moreversion
    Binary i3 version:  4.2-202-gb8e782c (2012-08-12, branch "next") © 2009-2012 Michael Stapelberg and contributors
    Running i3 version: 4.2-202-gb8e782c (2012-08-12, branch "next") (pid 14804)

    The i3 binary you just called: /home/michael/i3/i3
    The i3 binary you are running: /home/michael/i3/i3
2012-08-12 15:10:13 +02:00
Michael Stapelberg 394b395455 set I3_PID atom on the root window 2012-08-12 13:51:47 +02:00
Michael Stapelberg 884627ef20 use I3__FILE__ for DLOG, leave __FILE__ as is
See also commit 0e752070ac, which broke
source code listings in gdb unless you cd into i3/src. This should give
us best of both :-).
2012-08-12 12:19:47 +02:00
Philipp Middendorf 6225a8983d Bugfix: Properly resize transient floating windows with a decoration
fixes #770
2012-08-12 00:36:26 +02:00
Michael Stapelberg 91786c3801 typo: s/transiert/transient/ 2012-08-11 22:53:40 +02:00
Julius Plenz 70ec3867fe clean up zero-byte logfile on immediate exit
Otherwise, a zero-byte log file stays behind after every call to `i3
--get-socketpath`. Also, replace "return" calls with more explicit "exit"
calls.

Before:

$ ls -ld /tmp/i3* | wc -l; \
  repeat 10 i3 --get-socketpath >/dev/null; \
  ls -ld /tmp/i3* | wc -l
1
11

Now:

$ ls -ld /tmp/i3* | wc -l; \
  repeat 10 i3 --get-socketpath >/dev/null; \
  ls -ld /tmp/i3* | wc -l
1
1

Signed-off-by: Julius Plenz <julius@plenz.com>
2012-08-11 02:23:03 +02:00
Michael Stapelberg 6ba0944430 scratchpad: fix moving scratchpad window
From the source:

    When starting i3 initially (and after each change to the connected
    outputs), this function fixes the resolution of the __i3
    pseudo-output. When that resolution is not set to a function which
    shares a common divisor with every active output’s resolution,
    floating point calculation errors will lead to the scratchpad window
    moving when shown repeatedly.

fixes #632
2012-08-08 18:45:40 +02:00
Michael Stapelberg 95cdfe5cb6 makefile: remove the old loglevels.tmp and loglevels.h on 'make clean' 2012-08-07 10:03:10 +02:00
Michael Stapelberg 0e752070ac explicitly set filenames to $(basename __FILE__)
This makes the debug log a bit more readable, especially since commit
48f1e383ca
2012-08-07 09:55:52 +02:00
Michael Stapelberg fa4894fbaa Support _NET_ACTIVE_WINDOW ClientMessages
Since we advertise _NET_ACTIVE_WINDOW support (but only set the
corresponding atom currently), it makes sense to also support the
ClientMessage. Apps such as Gajim use it to set focus to the roster
window when clicking on the tray icon for example.

fixes #767
2012-08-07 09:50:47 +02:00
Michael Stapelberg 122130d868 handlers.c: don’t call x_push_changes(croot), tree_render() already does 2012-08-07 09:50:25 +02:00
Michael Stapelberg 1a62c398ac Bugfix: Attach con to nc before calling con_border_style_rect() 2012-08-07 01:13:37 +02:00
Philipp Middendorf 9d9a1d9d29 Bugfix: Add deco_height only when in "normal" border mode.
Also, use con_border_style_rect instead of hard-coded values to
determine the border size.
2012-08-07 01:05:16 +02:00
Michael Stapelberg 506b7f4004 Bugfix for previous commit: Don’t crash with dock windows 2012-08-06 03:11:11 +02:00
Axel Wagner 57effd65b2 Make horizontal edge-borders hidable too 2012-08-06 03:03:00 +02:00
Michael Stapelberg 1b2d222449 Properly report errors in 'focus parent' (Thanks eeemsi)
Also, make X11 errors debug log level only. They are harmless usually.

fixes #762
2012-08-05 20:57:20 +02:00
Michael Stapelberg afc16953b9 correctly store last_split_layout when we are dealing with a workspace-level layout change (Thanks aksr)
fixes #763
2012-08-05 20:52:42 +02:00
Iakov Davydov f27735f620 create hide_edge_borders option 2012-08-05 20:26:15 +02:00
Michael Stapelberg 48f1e383ca makefile: canonicalize path when compiling
Compilers store the path with which they were called in the debug
symbols. Therefore, this will make backtraces show something like
../i3-4.2/src/main.c instead of src/main.c.

See also http://stackoverflow.com/questions/6473561/
2012-08-05 17:00:24 +02:00
Michael Stapelberg 952e5b6059 pre-compile all.h, saves quite some build time
before:

$ time CC=clang make -j16
CC=clang make -j16  6,04s user 0,86s system 468% cpu 1,471 total
CC=clang make -j16  6,05s user 0,87s system 468% cpu 1,477 total
CC=clang make -j16  6,15s user 0,86s system 464% cpu 1,510 total
CC=clang make -j16  6,05s user 0,93s system 467% cpu 1,493 total
CC=clang make -j16  6,10s user 0,84s system 461% cpu 1,507 total

$ time CC=gcc make -j16
CC=gcc make -j16  9,91s user 1,43s system 508% cpu 2,231 total
CC=gcc make -j16  10,02s user 1,37s system 500% cpu 2,275 total
CC=gcc make -j16  9,80s user 1,60s system 507% cpu 2,245 total
CC=gcc make -j16  10,02s user 1,44s system 506% cpu 2,264 total
CC=gcc make -j16  9,99s user 1,45s system 505% cpu 2,261 total

after:

$ time CC=clang make -j16
CC=clang make -j16  3,41s user 0,83s system 375% cpu 1,131 total
CC=clang make -j16  3,29s user 0,90s system 373% cpu 1,122 total
CC=clang make -j16  3,35s user 0,77s system 369% cpu 1,116 total
CC=clang make -j16  3,36s user 0,78s system 374% cpu 1,105 total
CC=clang make -j16  3,46s user 0,75s system 373% cpu 1,126 total

$ time CC=gcc make -j16
CC=gcc make -j16  10,74s user 1,44s system 494% cpu 2,462 total
CC=gcc make -j16  10,68s user 1,54s system 497% cpu 2,453 total
CC=gcc make -j16  10,60s user 1,60s system 488% cpu 2,499 total
CC=gcc make -j16  10,63s user 1,51s system 485% cpu 2,502 total
CC=gcc make -j16  10,70s user 1,51s system 497% cpu 2,453 total

Therefore, we enable pre-compiled headers only when CC=clang.
2012-08-05 16:44:11 +02:00
Michael Stapelberg 8a1c8115ca fix a few warnings/places where the clang static analyzer complains 2012-08-05 16:34:38 +02:00
Michael Stapelberg 78f5f2204d ipc: implement GET_VERSION to find out the i3 version
This is useful for third-party scripts which require certain features
and want to error out cleanly when they are run with an old i3 version.

Additionally, i3 --version might be different from what’s actually
running (an old version of the binary), so i3-msg -t get_version will be
the best way to figure out the i3 version you are actually running from
this commit on.
2012-08-05 14:30:05 +02:00
Michael Stapelberg ac8b2f637f cleanup i3 sync protocol messages 2012-08-04 16:34:57 +02:00
Michael Stapelberg 1d95d296a5 parser: remove debug messages
The new parser is proven by now (v4.2 was released 4 months ago), so
removing these messages will make the logfile more readable.
2012-08-04 16:31:57 +02:00
Michael Stapelberg fb4ee17b05 Merge branch 'master' into next 2012-08-04 16:10:37 +02:00
Michael Stapelberg 74510c59c7 floating_fix_coordinates: properly deal with negative positions 2012-08-04 16:09:16 +02:00
Michael Stapelberg d57d51da6d Bugfix: Properly fix floating coordinates when disabling outputs (Thanks Tucos)
Since the content containers are not yet updated (they will be when
rendering), we need to use the output containers’s rects instead.
2012-08-04 16:09:16 +02:00
Michael Stapelberg e867fd8105 Bugfix: fix floating coordinates when moving assigned workspaces 2012-08-04 16:09:10 +02:00
Michael Stapelberg e36674c5b8 Fix a crash when the current output cannot be determined (Thanks Tucos)
This is only a cosmetical change though, the fix for the root cause can
be found in the commits following this one.
2012-08-04 15:19:11 +02:00
Michael Stapelberg 79083f3b34 ensure the layout is not L_DEFAULT anymore, even if last_split_layout is not initialized (Thanks eeemsi) 2012-08-04 03:43:12 +02:00
Michael Stapelberg de94f6da1a Introduce splith/splitv layouts, remove orientation
With this commit, the "default" layout is replaced by the splith and
splitv layouts. splith is equivalent to default with orientation
horizontal and splitv is equivalent to default with orientation
vertical.

The "split h" and "split v" commands continue to work as before, they
split the current container and you will end up in a split container
with layout splith (after "split h") or splitv (after "split v").

To change a splith container into a splitv container, use either "layout
splitv" or "layout toggle split". The latter command is used in the
default config as mod+l (previously "layout default"). In case you have
"layout default" in your config file, it is recommended to just replace
it by "layout toggle split", which will work as "layout default" did
before when pressing it once, but toggle between horizontal/vertical
when pressing it repeatedly.

The rationale behind this commit is that it’s cleaner to have all
parameters that influence how windows are rendered in the layout itself
rather than having a special parameter in combination with only one
layout. This enables us to change existing split containers in all cases
without breaking existing features (see ticket #464). Also, users should
feel more confident about whether they are actually splitting or just
changing an existing split container now.

As a nice side-effect, this commit brings back the "layout toggle"
feature we once had in i3 version 3 (see the userguide).

AFAIK, it is safe to use in-place restart to upgrade into versions
after this commit (switching to an older version will break your layout,
though).

Fixes #464
2012-08-04 03:13:24 +02:00
Michael Stapelberg 1b3435807a add missing \n in debug message 2012-08-04 03:12:06 +02:00
Michael Stapelberg cc7f16007a Display i3-nagbar when commands lead to an error
e.g. pressing Mod1+x when having the following in your configfile:

    bindsym Mod1+x some invalid command

will lead to an i3-nagbar instance popping up, offering you to view the
error log (which will contain parser errors from this commit on).
2012-08-02 17:45:09 +02:00
Michael Stapelberg 9f05354c1f cfgparse: Write custom scripts for i3-sensible-terminal
This workaround is necessary for terminal emulators which parse -e in a
different way: some accept a list of arguments (-e command arg1 arg2 …),
some accept only one argument (-e "command arg1 arg2 …"). Therefore, we
just create a script and pass that as the one and only argument.
2012-08-02 15:17:10 +02:00
Quentin Glidic 0b4ee7a1da common.mk: Split XCB common flags 2012-07-23 00:12:55 +02:00
Quentin Glidic 5e0cd52f10 common.mk: Split XCB keyboard flags 2012-07-23 00:06:37 +02:00
Quentin Glidic 51a0f312f2 common.mk: Split WM XCB flags 2012-07-23 00:04:01 +02:00
Quentin Glidic fde8c0dd85 common.mk: Split Xlib flags 2012-07-23 00:04:01 +02:00
Quentin Glidic 5cf3751482 common.mk: Move -lm to i3_LIBS 2012-07-22 23:53:51 +02:00
Quentin Glidic 60bc6b0400 common.mk: Split Xcursor flags 2012-07-22 23:53:51 +02:00
Quentin Glidic 85b261c162 common.mk: Split yajl flags 2012-07-22 23:53:51 +02:00
Quentin Glidic 30934ea316 common.mk: Split libev flags 2012-07-22 23:53:51 +02:00
Quentin Glidic 79fc8462c0 common.mk: Split libpcre flags 2012-07-22 23:53:51 +02:00
Quentin Glidic e232c06885 common.mk: Split libstartup-notification flags 2012-07-22 23:53:51 +02:00
Quentin Glidic c7029a5e21 common.mk: Introduce I3_*FLAGS
CPPFLGES, CFLAGS and LDFLAGS should be user variables
We now provide default flags but use I3_*FLAGS flags for our own needed
flags

Also reoder lib flags a bit
2012-07-22 23:53:49 +02:00
Quentin Glidic 3b1b72ecbb *.mk: Support passing specific CFLAGS/LIBS 2012-07-22 23:53:13 +02:00
Michael Stapelberg ac7278eb1a resizing: traverse containers up properly (+test) (Thanks oblique)
In certain situations (when you have a h-split within a h-split) you
couldn’t properly resize previously. This commit makes the resize
command properly traverse up the containers.

fixes #754
2012-07-22 21:37:26 +02:00
Michael Stapelberg a97e70d483 Merge branch 'master' into next 2012-07-22 21:26:00 +02:00
Michael Stapelberg 83dc5d5cb6 Bugfix: Fix duplicate return value for 'resize' command 2012-07-22 21:25:38 +02:00
Quentin Glidic e452acb30e Add stub Makefiles to allow subdir make calls 2012-07-22 19:57:48 +02:00
Quentin Glidic e3b9ffe381 Move libi3 to the new Makefile layout 2012-07-22 19:57:21 +02:00
Quentin Glidic 8853334bbe New Makefile layout, move i3 to it 2012-07-22 19:57:18 +02:00
Quentin Glidic bdc078914b i3: Replace loglevels by a global debug logging
File-limited were not used nor really useful
Besides, they are painful to maintain in Makefile rules compared to the
benefit
2012-07-22 18:41:12 +02:00
Michael Stapelberg c5d0472158 Explicitly disconnect in the 'exit' command
This fixes a race condition when running the tests. I think that the X11
server has more time to clean up the resources when we do an explicit
disconnect. The symptom I was seeing was that sometimes, i3 couldn’t
become the window manager on one of the Xdummy instances.
2012-06-29 23:13:25 +02:00
Michael Stapelberg 072daa94b3 Merge branch 'master' into next 2012-06-27 17:49:36 +02:00
Michael Stapelberg 6e9bbe67ce Bugfix: fix reload crashes in rare cases (Thanks Tucos)
Depending on the memory layout, it could happen that bind->command was
exchanged with something else while the parser still accessed it.

Therefore, we now copy the command and let the parser use that copy.
2012-06-27 17:48:22 +02:00
Michael Stapelberg 7afb33d8f8 Merge branch 'master' into next 2012-06-25 21:44:20 +02:00
Michael Stapelberg 6146f39b8a when using i3 -C, don’t send remaining arguments via IPC (Thanks Somelauw) 2012-06-25 21:43:41 +02:00
Michael Stapelberg ecd238b65e ignore "current" when searching for named workspaces 2012-06-03 19:44:42 +02:00
Pavel Löbl 2afecaf355 Add a new command 'move to workspace current'
Added a new command 'move to workspace current' which can be used
with criteria to move a window to the current workspace.
2012-06-03 19:42:56 +02:00
Pavel Löbl 51173baf28 Fix 'move to workspace' when used with criteria
When moving window from other (not current) workspace to another
workspace with criteria we should stay on current workspace.

And we should exit early when criteria was specified but didn't
match any window.
2012-06-03 19:41:45 +02:00
Pavel Löbl 4611f875ff Fix a mistake in comment 2012-06-03 19:38:43 +02:00
Fernando Tarlá Cardoso Lemos fffc53c246 Restrict "move to workspace" commands in fullscreen. 2012-06-03 16:24:53 +02:00
Fernando Tarlá Cardoso Lemos 4452bfb942 Prevent moving out of fullscreen containers. 2012-06-03 16:24:53 +02:00
Fernando Tarlá Cardoso Lemos 8bf4e9e059 Restrict directional focus in fullscreen.
This reuses the same fullscreen focus logic to ensure that focus
doesn't escape a fullscreen container.
2012-06-03 16:24:53 +02:00
Fernando Tarlá Cardoso Lemos 250c260eaa Allow focus child/parent when in fullscreen.
This is now restricted according to the already defined fullscreen
focus constraints. Test case 157 was removed, as we don't prevent
level up/down in fullscreen anymore. Those commands are properly
tested in fullscreen by test case 156.

Fixes: #612
2012-06-03 16:24:53 +02:00
Fernando Tarlá Cardoso Lemos da1e232757 Refined the fullscreen focus constraints.
Basically, a focus change can't escape a fullscreen container. The
only exception is per-output fullscreen containers, as you should
be able to focus a container in a different workspace in this case.

This is an improvement on 4eab046e, now considering the difference
between global and per-output fullscreen and taking the tree
structure into account to determine what escaping the fullscreen
container means. It only affects targeted focus commands in the
form "for_window [...] focus", but it lays the foundation for
forthcoming fixes to all other focus commands.
2012-06-03 16:24:53 +02:00
Michael Stapelberg e969ed502b Merge branch 'master' into next 2012-05-16 06:24:53 +02:00
Michael Stapelberg ec4e6d1cdf Fix stray workspaces "number 1" being created when having workspace number 1 in your config 2012-05-16 06:24:16 +02:00
Michael Stapelberg ed957d60a7 Merge branch 'master' into next 2012-05-09 21:08:28 +02:00
Fernando Tarlá Cardoso Lemos 4eab046e8f Allow focus w/ target when in fs in some cases.
If the target is in a different workspace, there's no reason why
we wouldn't allow the user to focus it. We already allow this when
focusing a workspace, for example.
2012-05-09 21:08:19 +02:00
Michael Stapelberg eab9f46c33 Merge branch 'master' into next 2012-05-09 20:39:26 +02:00
Ondrej Grover edae08a4d9 maybe_back_and_forth now sets render_tree 2012-05-09 20:38:41 +02:00
Michael Stapelberg 42dcb4e8c4 make maybe_back_and_forth static 2012-05-09 20:34:40 +02:00
Ondrej Grover b88ab981fd bugfix: less differentiation between named and numbered workspaces
calling workspace by number now also checks for switching back and forth
and creates a new workspace if no workspace starting with that number is
found

also removed the obsolete tree_render() in favor of setting
cmd_output->needs_tree_render to true
2012-05-09 20:33:59 +02:00
Michael Stapelberg 1c0b542c07 Merge branch 'master' into next 2012-05-09 20:06:45 +02:00
Michael Stapelberg 62d3329906 remove dead code
This was a left-over of commit 9d68d780e2
2012-05-09 20:00:46 +02:00
Michael Stapelberg a9b57a44a9 Remove set but never read variable
This was due to the changes in commit d25e77ce75
2012-05-09 19:56:21 +02:00
Michael Stapelberg 2a0fb1db69 Merge branch 'master' into next 2012-05-09 19:47:19 +02:00
Michael Stapelberg eeb6ff9237 Move is_debug_build() to libi3/ 2012-05-09 19:12:20 +02:00
Pavel Löbl d13ba7ca53 Fix floating precision bug
When calculating coordinates we should multiply at first otherwise
we lose precision when i3 is compiled without sse2 support.

The following code prints "Res1: 348 Res2: 349" when compiled with
-O0 -mno-sse2 and "Res1: 349 Res2: 349" with -O0 -msee2.

Note that -msse2 is default flag on 64bit OSes.

int main() {
  double a = 349.0 / 768;
  double b = 349.0 * 768;
  int res1 = a * 768;
  int res2 = b / 768;
  printf("Res1: %d Res2: %d\n", res1, res2);
  return 0;
}

Thanks guys for helping me to hunt down this one.
2012-05-06 14:13:59 +02:00
Michael Stapelberg bbe607899c Send proper error messages upon parser failures, use yajl for generating command replies
Fixes: #693
2012-05-02 22:01:50 +02:00
Michael Stapelberg 5a29eb20e0 Fix spelling of success
Fixes: #695
2012-05-02 20:20:45 +02:00
Michael Stapelberg 280a35717b log.c: len is always positive, remove useless check (Thanks Marcus) 2012-05-02 20:07:59 +02:00
Michael Stapelberg eedd1a64d7 Make log.c figure out the physical amount of memory on Mac OS X (Thanks Marcus) 2012-05-02 20:05:07 +02:00
Michael Stapelberg cc9f0ab353 bump copyright in --version (Thanks joepd) 2012-04-22 13:04:24 +02:00
Michael Stapelberg 2c23eb4c75 cfgparse: accept force-xinerama as a synonym of force_xinerama 2012-04-21 12:48:34 +02:00
Michael Stapelberg 1bb165a29a tests: warp the pointer to in multi-monitor tests to avoid flaky tests 2012-04-09 14:48:57 +02:00
Michael Stapelberg 0f10ccdf12 Implement fake-outputs option (cmdline, cfg) for multi-monitor testing
This kills the dependency on xdmx and makes the testsuite simpler
and more flexible (in the output sizes / configurations).
2012-04-09 14:28:36 +02:00
Michael Stapelberg fa6a3d57d2 Only resize when the left/right mouse button is used, not when scrolling (Thanks eeemsi) 2012-04-08 21:04:21 +02:00
Michael Stapelberg eec41d1276 Fix warning: properly initialize 'workspace' variable 2012-04-08 20:45:49 +02:00
Michael Stapelberg 373b4ad74a Implement 'rename workspace <old_name> to <new_name>' 2012-04-08 20:40:00 +02:00
Michael Stapelberg ad513b4799 Implement 'move [container|window] to workspace number <number>' 2012-04-08 20:33:46 +02:00
Michael Stapelberg 72078c704e Implement 'workspace number <number>' to switch to named workspaces 2012-04-08 19:17:46 +02:00
Michael Stapelberg 42bbdbdfc1 Prevent changing focus outside a container when scrolling on the decorations
Fixes: #557
2012-04-08 18:33:45 +02:00
Michael Stapelberg 849e06f21e Replace the old fullscreen container when requesting fullscreen
Fixes: #510
2012-04-08 17:53:37 +02:00
Michael Stapelberg 2d110c90e6 Implement resize <grow|shrink> <width|height>, use it in the default config
Fixes: #576
2012-04-08 16:00:15 +02:00
Michael Stapelberg 250577da36 Force WM_TAKE_FOCUS event to be sent when clicking
This fixes more problems with Eclipse.
See also commit 1962c30dfb
2012-04-07 16:24:53 +02:00
Peter Bui a29eece9dc Bug 676: if scratchpad window is active on a non-visible workspace, then "scratchpad show" should move it to the current visible workspace. 2012-04-05 18:10:45 +02:00
Jose Pereira 9a58c1fcaa Added option to select primary display on tray_output 2012-04-05 14:42:07 +02:00
Michael Stapelberg 206b96202c Use (void) instead of () for functions without args (Thanks fernandotcl)
See also:
http://article.gmane.org/gmane.linux.kernel/1268792

The C compiler will handle (void) as "no arguments" and () as "variadic
function" (equivalent to (...)) which might lead to subtle errors, such
as the one which was fixed with commit 0ea64ae4.
2012-03-31 10:53:04 +02:00
Michael Stapelberg e19c7b7bae A few style fixes for the previous commit 2012-03-26 17:00:35 +02:00
darkraven 9d68d780e2 Use 32bit visual only when needed. Thus we could drop the --enable-32bit-visual option. 2012-03-26 16:50:44 +02:00
Pavel Löbl f78f137ed0 Extends move command for floating windows 2012-03-25 11:06:49 +02:00
Michael Stapelberg d4523de6c8 Merge branch 'master' into next 2012-03-21 22:30:08 +01:00
Michael Stapelberg 1962c30dfb Force WM_TAKE_FOCUS event to be sent again upon EnterNotify
This fixes focus problems with Eclipse. Apparently, Eclipse waits for getting
notified about the focus, and since it used non-managed windows, i3 didn’t care
to update the focus.

Fixes: #621, #675
2012-03-21 22:27:31 +01:00
Michael Stapelberg 36fdab7b6a Merge branch 'master' into next 2012-03-21 21:41:13 +01:00
Michael Stapelberg 1f6fbaf240 cfgparse: leave EAT_WHITESPACE and BINDSYM_COND states on EOL (Thanks dothebart)
Fixes: #642
2012-03-21 21:40:44 +01:00
Michael Stapelberg 4172e43c9c debugging trick: keep a symbol pointing to I3_VERSION around
This way, gdb will include the i3 version in backtraces.
2012-03-21 20:48:00 +01:00
Michael Stapelberg e09e077b76 Merge branch 'master' into next 2012-03-21 20:24:29 +01:00
Michael Stapelberg afed6da0e5 Bugfix: Fix restart with for_window floating configuration (Thanks garga)
Fixes: #668

Calling tree_close with dont_kill_parent=true will avoid it from closing the
workspace if it’s empty (and it’s temporarily empty, because 'floating disable'
detaches, then re-attaches the window).
2012-03-21 20:14:50 +01:00
Michael Stapelberg 2abfb5a88b Bugfix: Also clear the command parser’s stack upon invalid commands (Thanks helgikrs)
Fixes: #652
2012-03-21 17:20:07 +01:00
Michael Stapelberg ab9ba6fcf9 Use gettimeofday() and struct timevals instead of time()
Initially I thought using the second precision time() function is good enough,
but to make t/113-urgent.t considerably faster (>2s vs. 0.08s), we put in a
little more effort and use gettimeofday. Otherwise, this test blocks the whole
testsuite from completing much faster on modern machines :).
2012-02-21 13:38:49 +01:00
Michael Stapelberg d78da44ad1 cfgparse: also accept negative numbers 2012-02-16 18:41:48 +00:00
D Thompson 82146fcebf Implement support for user configuration of constraints on floating window dimensions. 2012-02-16 18:31:28 +00:00
Michael Stapelberg 5edacf4943 Merge branch 'master' into next 2012-02-15 22:05:28 +00:00
Simon Kämpe 51e6e48992 Highlight i3bar ws when changing output w/ mouse. 2012-02-15 22:05:01 +00:00
Michael Stapelberg 3827d3758c Render only once for all matching assignments (Thanks rami)
Fixes: #608
2012-02-15 21:02:40 +00:00
Michael Stapelberg e114b3dba2 Refactor the interface of commands.c
This change has two implications:

1) tree_render() will now be called precisely once for input which consists of
   multiple commands (like "focus left; focus right"). Also, the caller of
   parse_command() has to call it. This makes us able to fix tickets such as
   ticket #608 (where multiple tree_render() calls are noticable).

2) The output of a command is now a JSON array of return values of the
   individual subcommands. In the case of "focus left; focus right", this is:

   [{"success":true}, {"success":true}]

   While this is incompatible with what i3 returned before, the return value of
   commands was undocumented and therefore not subject to our API stability.
2012-02-15 20:57:25 +00:00
Michael Stapelberg 58ecd14900 Implement support for chosing a 32 bit visual (necessary for pseudo-transparency) (Thanks darkraven)
You need to specify the --enable-32bit-visual flag when starting i3. This is
done because everything feels sluggish on my system when using a 32 bit visual
instead of a 24 bit visual. Fast > fancy.
2012-02-15 18:56:07 +00:00
Fernando Tarlá Cardoso Lemos 36a1a8282f Fix the coords of floating cons when moving workspaces.
Fixes floating containers seemingly showing up in the wrong
workspace after moving workspaces containing floating containers.

We must *always* fix the coordinates of floating containers when
moving workspaces across outputs. That's because the coordinates
of floating containers are *not* relative to the workspaces.
2012-02-15 18:03:37 +00:00
Fernando Tarlá Cardoso Lemos a22f161ab5 If moving the last ws, create a new one in its place.
This seems better than refusing to move the last workspace.
2012-02-15 17:59:33 +00:00
Jeremy O'Brien 53541817ef Implement urgency flag matcher
Currently it supports the following options:
"oldest": match the first window that triggered an urgent event
"latest": match the last window that triggered an urgent event
2012-02-14 22:47:10 +00:00
Michael Stapelberg 82247fd0ab Bugfix: Correctly handle missing ending double quotes (+test) (Thanks mxf) 2012-02-10 19:49:38 +00:00
Michael Stapelberg 2f8d3d3390 Bugfix: Properly handle workspace names with double quotes (+test) (Thanks kvapen) 2012-02-07 22:50:27 +00:00
Michael Stapelberg ed2bcc15e3 Merge branch 'master' into next 2012-02-07 17:42:58 -05:00
Michael Stapelberg 0fc459892e Bugfix: Properly split when the current container is alone within a stacked/tabbed con (+test) (Thanks aksr)
Fixes: #630
2012-02-07 17:42:35 -05:00
Michael Stapelberg 4fe974408d Merge branch 'master' into next 2012-02-07 17:41:36 -05:00
Michael Stapelberg 4f98bbf5ff Bugfix: Obey workspace_layout when re-inserting floating containers (+test) (Thanks aksr)
The code wasn’t using con_attach and therefore didn’t obey workspace_layout.

Fixes: #631
2012-02-07 17:41:00 -05:00
Michael Stapelberg e04628e581 Error message was missing a slash 2012-02-07 17:38:45 -05:00
Michael Stapelberg c1e0c38b27 randr: Skip workspaces which are assigned to a different output when creating a new workspace
If you had workspace 1, 2, 3, 4 on LVDS1 and you enabled HDMI2 (where workspace
1 to workspace 5 are assigned to HDMI2), i3 would look for a new workspace for
LVDS1 (since all workspaces were moved), create workspace 5, move that over due
to assignment and then create workspace 6. Effectively, you would end up with
an empty workspace 5.
2012-02-07 21:10:16 +00:00
Fernando Tarlá Cardoso Lemos 8cffde232f Don't migrate unfocused empty workspaces when disabling output.
This is more similar to what happens when you close the last client
of an unfocused workspace (the workspace gets reaped).
2012-02-07 20:45:14 +00:00
Michael Stapelberg 36464c7a54 Merge branch 'master' into next 2012-01-29 18:02:48 +00:00
Fernando Tarlá Cardoso Lemos 55525015cc Fix coords of floating containers when the output is disabled.
This prevents floating containers from "disappearing" when their
associated output is disabled. Thanks Michael for the advice.
2012-01-29 18:02:27 +00:00
Michael Stapelberg 29aa28b623 commands_parser: use safewrapper functions 2012-01-28 10:35:18 +00:00
Michael Stapelberg 7cdddc6524 add comments to src/commands.c 2012-01-27 22:32:40 +00:00
Michael Stapelberg 3229f7677f Rip out the old command parser, remove migration code 2012-01-27 22:11:03 +00:00
Michael Stapelberg 76ad5dac63 Bugfix: Free old criteria matching window list (Thanks piroko) 2012-01-27 21:47:55 +00:00
Michael Stapelberg 19dc92a9a5 new parser: correctly handle leading/trailing newlines (+test) (Thanks helgikrs) 2012-01-25 22:00:32 +00:00
Fernando Tarlá Cardoso Lemos d579992528 Force redrawing the indicators after a move.
Fixes a bug where splitting then moving in the other orientation
(e.g. v-splitting and moving right) would result in the old
indicators not disappearing.
2012-01-22 17:25:08 +00:00
Michael Stapelberg ae049449af force rendering in more cases 2012-01-22 17:24:55 +00:00
Michael Stapelberg ef522b4dc1 Force re-rendering after changing the orientation of a split container 2012-01-22 13:19:37 +00:00
Michael Stapelberg f9bc434e2a Implement highlighting right/bottom borders of splitted windows
Fixes #299
2012-01-22 11:22:15 +00:00
Michael Stapelberg 318d4fdeef make in-place restarts use socket activation, too (for faster/less flaky tests) 2012-01-21 23:03:09 +00:00
Michael Stapelberg 3b7f4d428e Correctly restore focus after in-place restarts
Note: This change requires two in-place restarts when you are upgrading
in-place from an old version.

Fixes #611
2012-01-21 18:35:15 +00:00
Michael Stapelberg fabcd7d911 Merge branch 'master' into next 2012-01-21 15:08:36 +00:00
Michael Stapelberg 077d2433a7 Bugfix: Fix coordinates when the rect of an output changes (Thanks Paul)
Fixes #623
2012-01-21 15:07:53 +00:00
Michael Stapelberg fc27c19761 Merge branch 'master' into next
Conflicts:
	testcases/t/005-floating.t
2012-01-21 14:22:29 +00:00
Michael Stapelberg cb4c9b9d27 Bugfix: Position floating windows exactly where their geometry specified (Thanks B-Con)
Fixes #619
2012-01-21 14:20:55 +00:00
Michael Stapelberg 6ffc0f94cb Ignore aspect ratio during fullscreen mode (fixes MPlayer subtitles) (Thanks mxf, alexander)
Fixes: #594
2012-01-21 13:29:06 +00:00
Michael Stapelberg 8d72a77c7a Merge branch 'master' into next
Conflicts:
	src/handlers.c
2012-01-21 11:50:22 +00:00
Michael Stapelberg 7a4d8ed6ed Bugfix: Force a new sequence number after UnmapNotify
This should fix the problem where (legitimate) EnterNotifys arrived with the
same sequence as the UnmapNotify and was ignored.

Fixes: #609
2012-01-21 11:49:46 +00:00
Michael Stapelberg 27b089e430 Fix prototype 2012-01-21 11:49:35 +00:00
Michael Stapelberg 47fd15649a Bugfix: Only ignore EnterNotify events after UnmapNotifies from managed windows
This should fix (some?) focus follows mouse problems.

Conflicts:

	src/handlers.c
2012-01-21 11:46:23 +00:00
Michael Stapelberg fa83b46dfa Draw a separator line after each tab (doesn’t use extra space) (by Aaron Small) 2012-01-21 11:07:10 +00:00
Michael Stapelberg 1784b3858d Bugfix: Redraw right border after rendering the window title (Thanks fernandotcl)
Fixes #368
2012-01-21 11:03:57 +00:00
Michael Stapelberg 45b4d71a0b handle the old bar color config syntax in a backwards-compatible way 2012-01-20 22:26:17 +00:00
Michael Stapelberg 31b7ec29fd Re-implement bar borders (by Angelo Haller)
This re-introduces borders around the workspace buttons in i3bar.
No additional pixels will be consumed (you will not lose any space for your
windows).
2012-01-20 21:36:50 +00:00
Michael Stapelberg 759ed0b6e3 Merge branch 'master' into next 2012-01-20 18:10:52 +00:00
Michael Stapelberg 4f26d6f2a1 Bugfix: Setup the _NET_SUPPORTING_WM_CHECK atom in a standards-compliant way
This makes chrome (and probably other apps, too) receive changes of the
_NET_ACTIVE_WINDOW and thus show its bookmark dialog properly.

Fixes: #544
2012-01-20 18:09:53 +00:00
Michael Stapelberg a2823d3aeb Bugfix: Don’t increment 'walk' before checking it (Thanks MasterofJOKers) 2012-01-19 19:01:47 +00:00
Michael Stapelberg fd8e1c98c9 Merge branch 'master' into next
Conflicts:
	src/handlers.c
2012-01-18 19:18:22 +00:00
Michael Stapelberg 2d14ced024 Bugfix: Respect WM_HINTS.input for WM_TAKE_FOCUS clients
This fixes problems with Qt apps (like Quassel) and apparently Eclipse since
the last commit.
2012-01-18 19:16:57 +00:00
Michael Stapelberg f32cc6f4ae Merge branch 'master' into next 2012-01-17 23:39:04 +00:00
Michael Stapelberg 21a2971b24 Bugfix: Either use SetInputFocus *or* send WM_TAKE_FOCUS, not both
This fixes problems with the Oracle JRE7, which checks the current focus after
receiving WM_TAKE_FOCUS and just does nothing when the focus is on one of its
windows. Hopefully it doesn’t introduce any regressions :).
2012-01-17 23:33:33 +00:00
Michael Stapelberg 62cde927a5 Bugfix: Only ignore EnterNotify events after UnmapNotifies from managed windows
This should fix (some?) focus follows mouse problems.
2012-01-17 20:37:36 +00:00
Michael Stapelberg a532f5ac39 Implement a new parser for commands. (+test)
On the rationale of using a custom parser instead of a lex/yacc one, see this
quote from src/commands_parser.c:
     We use a hand-written parser instead of lex/yacc because our commands are
     easy for humans, not for computers. Thus, it’s quite hard to specify a
     context-free grammar for the commands. A PEG grammar would be easier, but
     there’s downsides to every PEG parser generator I have come accross so far.

     This parser is basically a state machine which looks for literals or strings
     and can push either on a stack. After identifying a literal or string, it
     will either transition to the current state, to a different state, or call a
     function (like cmd_move()).

     Special care has been taken that error messages are useful and the code is
     well testable (when compiled with -DTEST_PARSER it will output to stdout
     instead of actually calling any function).

During the migration phase (I plan to completely switch to this parser before
4.2 will be released), the new parser will parse every command you send to
i3 and save the resulting call stack. Then, the old parser will parse your
input and actually execute the commands. Afterwards, both call stacks will be
compared and any differences will be logged.

The new parser works with 100% of the test suite and produces identical call
stacks.
2012-01-14 21:29:57 +00:00
Michael Stapelberg f81c89ac28 Refactor the code out of src/cmdparse.y to src/commands.c
This is the first step towards our new parser.
2012-01-14 16:59:52 +00:00
Michael Stapelberg 608def6c6e cmdparse.l: [^t] is enough (Thanks f8l) 2012-01-10 23:09:00 +00:00
Michael Stapelberg 814695d8bb Implement 'move workspace to output <output>'
Fixes: #541
2012-01-10 22:16:50 +00:00
Michael Stapelberg df9b338175 Introduce synonyms: 'move to workspace' and 'move container to workspace' and 'move window to workspace'
This makes the new 'move workspace to output' command much more clear
2012-01-10 22:16:09 +00:00
Michael Stapelberg 6df971d5d5 Ignore next_on_output/prev_on_output when looking for the first workspace 2012-01-08 16:31:07 +00:00
Max Alexander Busse fba2582b2e Switch and Move to next workspace on the same Output. As requested in \#554 2012-01-08 16:24:21 +00:00
dbp a3081c488a Allow different modifier keys for showing hidden i3bar. 2012-01-08 12:47:41 +00:00
Michael Stapelberg f88c779457 Merge branch 'master' into next 2012-01-08 12:30:41 +00:00
Michael Stapelberg 96c491a488 Bugfix: Fix assignments of floating windows to (yet) unused workspaces (Thanks zeus)
The problem was that the workspace was considered empty for a brief period of
time when entering floating mode. This happened when you assigned Gimp to a
workspace which is not in use yet.
2012-01-08 12:28:49 +00:00
Michael Stapelberg 47a25aa883 bump copyright 2012-01-08 12:00:19 +00:00
Michael Stapelberg 5c3077bc78 wrap 'focus output': when on the right-most output and focusing right, it will focus the left-most output 2012-01-08 11:58:45 +00:00
Michael Stapelberg e3051629d1 remove trailing whitespace and empty lines 2012-01-08 11:44:01 +00:00
Max Alexander Busse d0b3a943f0 Feature: focus the output right/left/above/below 2012-01-08 11:43:31 +00:00
Michael Stapelberg 470ee00012 Merge branch 'master' into next 2012-01-07 18:50:46 +00:00
Michael Stapelberg d4238c778a Bugfix: Open new windows in the correct place when assignments match (+test) (Thanks Don) 2012-01-07 18:50:00 +00:00
Michael Stapelberg 6345124049 Merge branch 'master' into next
Conflicts:
	src/con.c
2012-01-07 18:21:12 +00:00
Michael Stapelberg f78caf8c58 Bugfix: Don’t lose focus on fullscreen windows when another window gets moved to that workspace (+test) (Thanks rami)
Fixes: #606
2012-01-07 18:18:36 +00:00
Michael Stapelberg 0e1b1dd984 Bugfix: Correctly handle 'move scratchpad' on workspace level (+test) (Thanks mseed)
Fixes: #597
2012-01-07 17:36:30 +00:00
Michael Stapelberg 3254188cda Bugfix: Show scratchpad on the correct output (+test)
Fixes: #596
2012-01-07 16:53:37 +00:00
Michael Stapelberg dee7c07ad2 shmlog: store meta information in the buffer itself, store path as X11 atom
This makes i3-dump-log completely independent of a running i3 instance.
2012-01-06 23:40:07 +00:00
Michael Stapelberg 91499ed2c7 properly serialize floating/scratchpad state when restarting 2012-01-05 21:41:20 +00:00
Michael Stapelberg fca57ed077 Change prototype of handlers to static void, remove a bit of old code 2011-12-30 11:30:56 +01:00
Michael Stapelberg 68544a519e Handle vsnprintf overflows (Thanks Han) 2011-12-30 01:26:36 +01:00
Michael Stapelberg a2031a8894 Log the configfile name in verbose log, not only debug log (Thanks Han) 2011-12-29 00:04:48 +01:00
Michael Stapelberg 8a67f15ef4 add missing scratchpad.{c,h} 2011-12-21 23:17:52 +00:00
Michael Stapelberg 08986a1798 Implement scratchpad functionality (see userguide) 2011-12-21 23:15:32 +00:00
Michael Stapelberg 622b94f176 Merge branch 'master' into next 2011-12-20 18:44:26 +00:00
Michael Stapelberg d963018990 Bugfix: Don’t close workspace when there are still floating windows on it (Thanks noxxun) (+test)
Fixes: #595
2011-12-20 18:44:15 +00:00
Michael Stapelberg 1f2c9306a2 Merge branch 'master' into next
Conflicts:
	testcases/t/159-socketpaths.t
2011-12-18 18:02:08 +00:00
Michael Stapelberg c21172a6f6 Create a secure temp path instead of a predictable one (Thanks Han)
With this commit, i3 will now use either $XDG_RUNTIME_DIR/i3 (XDG_RUNTIME_DIR
is only writable by the user, so this is not a problem) or a secure temporary
location in /tmp, following the pattern /tmp/i3-<user>.XXXXXX
2011-12-18 17:59:31 +00:00
Michael Stapelberg c4298b9311 Merge branch 'master' into next 2011-12-18 17:25:15 +00:00
Michael Stapelberg 4fba2d5f91 Bugfix: Correctly check boundaries and reassign floating windows when moving (Thanks xpt)
Fixes: #592
2011-12-18 17:24:27 +00:00
Fernando Tarlá Cardoso Lemos fbf6d20e05 Fix the signal handler popup text.
Thanks to Michael for the heads-up.
2011-12-18 15:43:00 +00:00
Michael Stapelberg 2ba09f5419 Merge branch 'master' into next 2011-12-18 15:19:09 +00:00
Michael Stapelberg ec28f3b982 Bugfix: Fix floating resize for floating split containers (+test)
Fixes: #588
2011-12-18 15:18:20 +00:00
Michael Stapelberg 4412ccbe5a Merge branch 'master' into next 2011-12-17 22:35:13 +00:00
Michael Stapelberg 7a80d903a5 keygrabbing: only look in the appropriate columns when resolving keysyms
Fixes: #585

This commit fixes the problem of i3 wrongly grabbing/interpreting (!) some key
bindings. Basically, when you have, say, "bindsym Mod1+4 workspace 4", but you
also have "bindsym Mod1+semicolon focus right" (both are default), and your
keyboard layout has semicolon on Mode_switch + 4, the "workspace 4" keybinding
was shadowed by the "focus right" keybinding, because that also resolves to
semicolon.

So, from now on, i3 will only consider column 0 and 1 for normal bindings and
column 2 and 3 for bindings using Mode_switch (columns as seen in xmodmap
-pke).
2011-12-17 22:31:21 +00:00
Michael Stapelberg 76202a824d re-indent translate_keysyms() 2011-12-17 22:28:28 +00:00
Michael Stapelberg 0d210277f0 x: Handle expose-events by only copying the requested region from our pixmap
This is faster than always updating the whole pixmap and should be safe.
2011-12-17 20:08:56 +00:00
Michael Stapelberg 6f8b284586 Merge branch 'master' into next 2011-12-17 18:48:14 +00:00
Michael Stapelberg 664e30903c Bugfix: Don’t change focus after (graphical) resizing 2011-12-17 18:47:29 +00:00
Michael Stapelberg a930994dc9 Merge branch 'master' into next 2011-12-17 17:16:39 +00:00
Michael Stapelberg 75c57c4eef Bugfix: Ignore ConfigureRequests with out-of-bound coordinates (+test)
JDownloader seems to use these for its captcha popups when focus is not on the
same workspace, for some weird reason.
2011-12-17 17:15:52 +00:00
Michael Stapelberg db174234ce Merge branch 'master' into next
Conflicts:
	debian/changelog
2011-12-17 15:28:51 +00:00
Michael Stapelberg 1ff321bc3f Bugfix: Disallow focusing other windows when in fullscreen mode (Thanks aksr)
Fixes: #579
2011-12-17 15:28:17 +00:00
Michael Stapelberg ef224cdb98 Merge branch 'master' into next
Conflicts:
	testcases/t/173-get-marks.t
2011-12-17 14:22:57 +00:00
Michael Stapelberg b46ab649f5 Bugfix: Fix setting the same mark repeatedly on different windows (+test)
Fixes: #582
2011-12-17 14:22:23 +00:00
Michael Stapelberg 5a345db18b Merge branch 'master' into next 2011-12-17 13:55:45 +00:00
Michael Stapelberg 87b6bf7a54 Bugfix: Make resizing work when pressing floating_modifier + right mouse button on window decorations
Fixes: #583
2011-12-17 13:55:16 +00:00
Michael Stapelberg 9e688a2277 Merge branch 'master' into next 2011-12-17 12:21:13 +00:00
Michael Stapelberg f6c0a1e161 Bugfix: Make resizing of tiling windows with floating_modifier use absolute coordinates
Fixes: #580
2011-12-17 12:20:27 +00:00
Michael Stapelberg 9cec9e09ed Merge branch 'master' into next 2011-12-17 11:18:35 +00:00
Michael Stapelberg acb3bdd05e Bugfix: Skip leading whitespace in variable assignments (Thanks ben)
Fixes: #577
2011-12-17 11:16:34 +00:00
Michael Stapelberg 966c654112 implement the GET_LOG_MARKERS IPC request/reply 2011-12-10 11:16:32 +00:00
Michael Stapelberg f7a73f4a68 fix the SHM log size 2011-12-10 11:15:57 +00:00
Michael Stapelberg d034248de0 sighandler: handle all "Core" signals 2011-12-10 11:05:37 +00:00
Michael Stapelberg aa82adb5c0 Introduce --shmlog-size flag, unlink SHM log when exiting 2011-12-10 10:51:55 +00:00
Michael Stapelberg e65ee63763 Implement logging to a SHM ringbuffer
This feature is automatically enabled when running a debug version of i3.
The logfile will use 1% of your physical RAM size, but at max 25 MiB.
2011-12-10 10:50:33 +00:00
Michael Stapelberg 6c112f2a9a Merge branch 'master' into next 2011-11-30 20:34:54 +00:00
Michael Stapelberg d25e77ce75 Don’t set the _NET_WM_WORKAREA hint at all (Thanks cg)
Fixes: #539
2011-11-30 20:33:07 +00:00
Michael Stapelberg fb90a556c8 Merge branch 'master' into next 2011-11-30 20:10:45 +00:00
Michael Stapelberg fb0ad1e8f9 display i3 version in errors, make conversion message an error 2011-11-30 20:09:32 +00:00
Michael Stapelberg 0f9fbcbd25 Merge branch 'master' into next 2011-11-29 22:37:11 +00:00
Michael Stapelberg 626e3efb48 Bugfix: Fix 'resize' command in nested containers (Thanks mseed)
Fixes: #559
2011-11-29 22:36:40 +00:00
Michael Stapelberg f2b73b64be Merge branch 'master' into next 2011-11-29 21:24:05 +00:00
Michael Stapelberg 0e56fcb971 add a few more keywords to make i3 recognize configs as v4 2011-11-29 21:20:42 +00:00
Michael Stapelberg df2236c5ee Merge branch 'master' into next 2011-11-29 20:50:11 +00:00
Michael Stapelberg 59283cce93 Bugfix: Fix resizing for (e.g.) v-split containers in h-split containers
Fixes: #562
2011-11-29 20:48:59 +00:00
Michael Stapelberg 752b101916 Merge branch 'master' into next 2011-11-28 23:28:03 +00:00
Michael Stapelberg bd4b240d56 Bugfix: Ignore EnterNotify events to prevent wrong focus in complex tabbed/stacked layouts (Thanks Phlogistique)
Fixes #560

Finally we have a good explanation and example for why we need to ignore
EnterNotify events which were caused by an Unmap :).
2011-11-28 23:26:45 +00:00
Jan-Erik Rediger f23d675de9 Implement new "i3bar_command" option for bar.
This allows you to specify an alternate path to the i3bar binary.
The userguide docu is included.
2011-11-27 21:40:57 +00:00
Michael Stapelberg 1a3b82eb02 Merge branch 'master' into next 2011-11-26 22:25:06 +00:00
Michael Stapelberg d686f2f873 Bugfix: Don’t create a workspace named "back_and_forth" on startup
Fixes #565
2011-11-26 22:24:30 +00:00
Michael Stapelberg f5dce848b8 Merge branch 'master' into next 2011-11-26 22:18:01 +00:00
Michael Stapelberg 31acb91d90 Bugfix: Fix crash on '[class="i3bar"] focus' (+test) (Thanks f8l)
Fixes #575
2011-11-26 22:17:34 +00:00
Fernando Tarlá Cardoso Lemos 340592a532 Invalidate cached pixmaps on reload and redraw.
After a reload, the drawing parameters for the decorations might
have changed, so we need to invalidate the cache and force a redraw
of the currently visible decorations. Also, don't leak the previous
font when reloading by freeing it before parsing the config.
2011-11-26 21:51:49 +00:00
Michael Stapelberg 67c2c03f76 Merge branch 'master' into next 2011-11-26 21:30:44 +00:00
Michael Stapelberg eeab1f0659 Fix comment for the previous commit 2011-11-26 21:30:26 +00:00
Michael Stapelberg 555dd48f09 Merge branch 'master' into next 2011-11-26 21:19:30 +00:00
Michael Stapelberg 970d11709e Bugfix: Retain absolute window position and size when changing floating borders (Thanks binzter)
Fixes: #561
2011-11-26 21:18:23 +00:00
Michael Stapelberg d805d1bbea Merge branch 'master' into next 2011-11-24 23:50:11 +00:00
Michael Stapelberg 227a58b0c3 Bugfix: Fix startup when RandR is not present 2011-11-24 23:49:35 +00:00
Michael Stapelberg af810df8da Merge branch 'master' into next 2011-11-21 23:10:09 +00:00
Michael Stapelberg 61b8a62132 Bugfix: fix fullscreen with floating windows
Fixes: #564
2011-11-21 23:04:49 +00:00
Michael Stapelberg 561cf3719f little style fixes 2011-11-21 21:48:24 +00:00
Fernando Tarlá Cardoso Lemos 344c04af12 Implement set_font_colors.
This paves the way for other font rendering backends. Fonts and
colors shouldn't be specified manually from now on.
2011-11-21 20:52:32 +00:00
Fernando Tarlá Cardoso Lemos eafc7af606 Make all programs use draw_text. 2011-11-21 20:52:29 +00:00
Fernando Tarlá Cardoso Lemos 5c2088c87e Enhance libi3 and use it in i3bar.
Abstracted draw_text and predict_text_width into libi3. Use
predict_text_width from libi3 in i3 too. This required tracking
xcb_connection in a xcb_connection_t *conn variable that libi3
expects to be available in i3bar.
2011-11-21 20:52:26 +00:00
Michael Stapelberg 70151ea238 Merge branch 'master' into next 2011-11-21 19:56:03 +00:00
Michael Stapelberg 5f8d719835 Bugfix: Skip dock clients when handling FocusIn events (Thanks cradle) 2011-11-21 19:55:41 +00:00
Michael Stapelberg b6e859787e clarify comments about socket activation (Thanks mxf) 2011-11-16 23:14:57 +00:00
Michael Stapelberg 84cf3ec3cb ipc: set CLOEXEC on client file descriptors (Thanks biiter) 2011-11-16 21:42:48 +00:00
Fernando Tarlá Cardoso Lemos fb11cc2d14 Consolidate all convert_* functions into libi3.
Some minor fixes along the way as well. Very minor stuff, unlikely
to ever be visible to the user.
2011-11-16 20:54:30 +00:00
Michael Stapelberg 7498ddd12f ipc: set CLOEXEC on client file descriptors (Thanks biiter) 2011-11-15 23:39:43 +00:00
Michael Stapelberg 1e5cd4b769 Bugfix: Only go to the parent container in resizing if that is actually a split container
(as opposed to a workspace)

This fixes a regression in resizing. We do need testcases for these things.
2011-11-11 19:19:14 +00:00
Michael Stapelberg 60bfc3a600 Bugfix: Correctly handle --no-startup-id with quoted exec commands (Thanks aksr)
Parser changes shortly before a release. What could possibly go wrong.
2011-11-11 00:28:04 +00:00
Michael Stapelberg b808cc5d18 Bugfix: Render floating windows after rendering all outputs (Thanks mw)
Fixes #548

See the comment on why this is necessary.
2011-11-10 20:30:51 +00:00
Michael Stapelberg df095f9d68 Bugfix: Fix tabbed container resizing check (Thanks julien)
Fixes: #534

Turns out that my check was wrong. We actually just need to make sure we are
dealing with the split container.
2011-11-10 19:35:36 +00:00
Michael Stapelberg ed66a30410 mark parameters const 2011-11-10 19:17:36 +00:00
Michael Stapelberg bebd2fceb6 Bugfix: Correctly return to initial state after prev/next/back_and_forth (Thanks Brian)
Fixes: #552
2011-11-10 18:42:24 +00:00
Michael Stapelberg 62f0a9e21d s/1/true 2011-11-10 18:38:29 +00:00
Michael Stapelberg 6bdd12a584 Bugfix: Correctly fill the buffer with zeros 2011-11-09 22:23:33 +00:00
Michael Stapelberg 332dbfe9c1 Enable (unlimited) core dumps when running i3 development versions
Also prints out useful stuff:

    CORE DUMPS: You are running a development version of i3, so coredumps were
    automatically enabled (ulimit -c unlimited).
    CORE DUMPS: Your current working directory is "/home/michael/i3".
    CORE DUMPS: Your core_pattern is: /tmp/%e.core.%p
    i3 (tree) version 4.0.2-479-g26ab2ac (2011-11-08, branch "next") starting

This does not affect child processes of i3.

The intention of this change is to make debugging easier – it’s one less thing
users of the development version have to worry about when trying to help with
debugging.
2011-11-08 22:49:25 +00:00
Michael Stapelberg 26ab2ac008 Bugfix: Insert container at the correct position on workspace-level when workspace_layout == default
Fixes #533

The problem was that the code was always executed. While it *attaches* the new
container to the workspace container, it also sets current = NULL and thus
always appends the container instead of inserting it after the currently
focused child. So now, we just don’t execute that code at all for
workspace_layout == default.
2011-11-08 20:37:24 +00:00
Michael Stapelberg 2a78a5f2b6 ipc: fix memory leaks when clients disconnect 2011-11-07 21:34:39 +00:00
Fernando Tarlá Cardoso Lemos d5613905c8 Plug minor leaks in string conversion routines. 2011-11-07 19:57:11 +00:00
Michael Stapelberg 2b6504d310 Bugfix: RandR: Correctly keep focus on the focused workspace when an output disappears (Thanks AlexanderB, xeen) 2011-10-31 12:11:34 +00:00
Michael Stapelberg 8e3cef33d9 Error out early if there is nothing to move
Fixes: #532
2011-10-27 23:27:33 +01:00
Michael Stapelberg 5227b29b0f Make named workspace assignments work again
Please note that you need a quoted string for the workspace name.
Example:
    workspace "1: www" output HDMI2

Fixes: #456
2011-10-27 22:43:53 +01:00
Michael Stapelberg a4cb4a64d4 Bugfix: warp pointer during the EnterNotify-disabled phase
Following bug:
1) Assign workspace 9 to output HDMI2
2) On HDMI2, be on workspace 1
3) Focus a different output, say LVDS1
4) Execute i3 'workspace 9'
5) Something happens, but you end up back on ws 1

(this is due to an EnterNotify being generated when warping)
2011-10-27 22:29:47 +01:00
Michael Stapelberg df980bffa4 Make 'move' handle floating windows properly
This means you can now specify an amount of pixels for the move command. The
default is 10. Note that this of course only works for floating windows.

Example:
  move left 20 px
2011-10-27 21:46:15 +01:00
Michael Stapelberg e25991f538 Bugfix: Don’t invoke resizing when clicking on the decoration in a > 1 child split con (Thanks julien)
Fixes: #534
2011-10-27 20:36:55 +01:00
Michael Stapelberg af1871e414 Bugfix: Only fallback on the font if it’s actually set (Thanks phnom) 2011-10-26 21:21:55 +01:00
Michael Stapelberg ee804a0635 Also call workspace_show() when moving cursor to an empty output (Thanks mw) 2011-10-25 23:41:52 +01:00
Michael Stapelberg 38447c4b47 Bugfix: Correctly use workspace_show() when focus changes to a different output via EnterNotify or FocusIn (Thanks pnutzh4x0r)
This makes i3bar show the correct workspace when you move your mouse from one
output to another.
2011-10-25 23:04:10 +01:00
Michael Stapelberg e710477a07 Bugfix: properly handle comments in colors {} blocks of bar config (+test) (Thanks fernandotcl) 2011-10-25 22:31:57 +01:00
Michael Stapelberg bbfbd28dfa Add a --no-startup-id flag for exec (command), exec (config), exec_always (config) 2011-10-25 22:18:17 +01:00
Michael Stapelberg 726f2a1e5a normalize file headers across **/*.{h,c} 2011-10-25 21:19:38 +01:00
Michael Stapelberg 8660ae4e12 bar config: fall back to the i3 font (Thanks pl) 2011-10-25 20:50:57 +01:00
Fernando Tarlá Cardoso Lemos d490bae8a2 Close empty workspaces if they're not visible.
Previously, we'd only close an empty workspace when we moved away
from it. Now we also close it when the last client exits, as long
as that workspace is not visible anymore.
2011-10-24 00:12:14 +01:00
Michael Stapelberg a58018cf66 Add libi3/load_font, use it everywhere
…except for i3bar, which needs slightly more information about the font
2011-10-23 22:37:11 +01:00
Michael Stapelberg 6d01d37b03 remove unused cached_fonts TAILQ 2011-10-23 22:03:20 +01:00
Michael Stapelberg 8da6049ca9 Actually make load_font only fallback if 'fallback' is true 2011-10-23 22:02:11 +01:00
Michael Stapelberg 3e7f941b83 Fix comment in run_assignments (Thanks xeen) 2011-10-23 21:45:12 +01:00
Michael Stapelberg 91134f75c0 Move get_mod_mask to libi3, use it in i3 and i3-config-wizard
Also, the API changed a bit. There are two functions now, both assume you
already got the keysyms (which is the case for i3 and i3-config-wizard),
one gets the modifier mapping for you (aio_get_mod_mask_for) while the other
assumes you also got that. No roundtrips are required for the latter.
2011-10-23 21:26:15 +01:00
Michael Stapelberg a512b99a51 Introduce --get_socketpath and --force_xinerama as synonyms for --get-socketpath and --force-xinerama 2011-10-23 19:41:40 +01:00
Michael Stapelberg 6dc6ba11fc Eliminate xcb_change_gc_single everywhere with C99 2011-10-23 18:06:25 +01:00
Michael Stapelberg 9eda7fb6fb move strndup to libi3 2011-10-23 18:02:01 +01:00
Michael Stapelberg ada4857ad2 Fix colors in i3bar (Thanks julien)
i3bar previously used get_colorpixel on strings without the leading # (ff0000
instead of #ff0000). Since it uses libi3’s get_colorpixel now we needed to
update a few places.
2011-10-23 17:48:44 +01:00
Michael Stapelberg cb9bbcfccf Move get_colorpixel to libi3, use it everywhere else 2011-10-23 17:38:21 +01:00
Michael Stapelberg 31cb3dda8d cfgparse: use different literal strings for ambiguous keywords in bar context 2011-10-23 16:41:23 +01:00
Michael Stapelberg 9d15a00ba8 introduce sasprintf() in libi3, use it everywhere 2011-10-23 13:16:56 +01:00
Michael Stapelberg 10d3281b0f remove/shorten a lot of debugging messages
Some of them are useless nowadays, others very unlikely to be a problem.
Those which might still be interesting somewhen in the future are just
commented out.
2011-10-23 00:15:13 +01:00
Michael Stapelberg 42d355f2b7 normalize modelines/headers across src/*.c 2011-10-22 23:40:02 +01:00
Michael Stapelberg 753d67fb64 migration from exec i3bar to bar config: i3 substitutes exec with a bar block, shows nagbar 2011-10-22 16:33:00 +01:00
Michael Stapelberg 9b84348201 Bugfix: fix off by one when copying the hex colorcode (Thanks fernandotcl) 2011-10-21 23:22:48 +01:00
Michael Stapelberg 77961ad9c8 cfgparse: Don’t use asprintf when parsing hex colors 2011-10-21 23:09:57 +01:00
Michael Stapelberg 3baeeb1834 Bugfix: properly transition in and out of the COLOR_COND state (Thanks fernandotcl) 2011-10-21 22:58:53 +01:00
Michael Stapelberg caee0a0fda cfgparse: eliminate absolute states, use yy_push_state/yy_pop_state
This fixes a problem with workspace assignments.
I tested i3 -C with three user configs (Thanks SardemFF7, julien, xeen)
and did not notice any problems.
2011-10-20 22:38:46 +01:00
Michael Stapelberg 12d866e4f6 Don’t start i3-nagbar when using -C to validate the config 2011-10-20 22:25:59 +01:00
Michael Stapelberg 230b238870 Actually start i3bar instances for each configured bar 2011-10-20 19:03:40 +01:00
Michael Stapelberg ad0f13a0a9 Clean bars before reloading the config (+test)
While the configuration gets updated in i3, the i3bar processes will not pick
up these changes. We have to think about a good way to do that.
2011-10-20 18:47:09 +01:00
Michael Stapelberg 15bface10d Create different IDs for each bar (+test) 2011-10-19 19:57:39 +01:00
Michael Stapelberg 063b124e35 Implement parsing bar {} config blocks 2011-10-18 22:16:04 +01:00
Michael Stapelberg 149b05aacf ipc: when requesting the bar config without a payload, return an array of available bar IDs 2011-10-18 22:12:46 +01:00
Michael Stapelberg e3cbdea1fc Bugfix: Correctly close the colors map in the IPC bar config reply 2011-10-18 22:11:44 +01:00
Michael Stapelberg c2c6ca25d5 Make the barconfig list a TAILQ 2011-10-18 22:11:27 +01:00
Michael Stapelberg 24ede1c834 add an IPC request to get the bar configuration (by ID) 2011-10-18 19:05:49 +01:00
Michael Stapelberg 4898f78e5e add a data structure for 'bar' configuration 2011-10-18 19:05:49 +01:00
Peter Bui 9d67ae2202 Focus new window only if it is on a visible workspace on the current focused output. 2011-10-18 18:56:39 +01:00
Michael Stapelberg a506e59b3c Bugfix: Fix segfault when starting i3 (Thanks pnutzh4x0r) 2011-10-18 18:47:07 +01:00
Michael Stapelberg f09d9a4c37 log: use localtime_r instead of localtime
localtime_r does not have the side-effect of behaving like it called tzset(),
in particular it will save one stat(/etc/localtime) syscall. This is not a big
deal, but it makes the strace output cleaner and thus more useful :).
2011-10-18 18:32:47 +01:00
Michael Stapelberg 178be03fa6 Implement 'workspace back_and_forth' (Patch by Michael Walle) 2011-10-17 23:17:56 +01:00
Michael Stapelberg 914ca6cfe7 Bugfix: Use _exit in forking to avoid calling the libev cleanup handler (Thanks xeen) 2011-10-15 16:56:47 +01:00
Michael Stapelberg 32b97745ec Don’t call ev_destroy_loop with ev < 4 in atexit (Thanks xeen) 2011-10-15 16:56:32 +01:00
Michael Stapelberg 5f52c78aa0 Change the root window cursor to 'watch' during startups 2011-10-10 15:54:18 +01:00
Michael Stapelberg 2ad4fbb34a startup: delete the startup sequence upon completion, make the timeout complete it 2011-10-10 15:54:18 +01:00
Michael Stapelberg 997a539a8a Implement timeouts for startup notifications 2011-10-10 15:54:17 +01:00
Michael Stapelberg 6ac098a45e support _NET_STARTUP_ID on the client leader window
(necessary for GIMP, geeqie, …)
2011-10-10 15:54:17 +01:00
Michael Stapelberg 4204b8e2b0 Get the _NET_STARTUP_ID in manage_window, get the corresponding workspace 2011-10-10 15:54:17 +01:00
Michael Stapelberg 499d89bdb0 Keep track of startup notifications in a TAILQ, save workspace 2011-10-10 15:54:17 +01:00
Michael Stapelberg f4f4d782bb implement a startup monitor, move code to src/startup.c 2011-10-10 15:54:17 +01:00
Michael Stapelberg c812cdcf9a make handle_client_message not return anything
The function returned an int for historical reasons.
2011-10-10 15:54:17 +01:00
Michael Stapelberg d1d4f39f9e save the last timestamp received by X11 in last_timestamp
We need it for startup notifications (to generate a unique id)

Conflicts:

	include/i3.h
	src/main.c
2011-10-10 15:54:17 +01:00
Michael Stapelberg b9db72dc8a Implement support for startup notifications
This only sets up startup notifications for the 'exec' commands and directives.

Monitoring startups follows later.
2011-10-10 15:54:17 +01:00
Michael Stapelberg 2a29d9c2c1 Make conn_screen available outside of main()
Will be used in other parts of the code for startup notification
2011-10-10 15:54:17 +01:00
Michael Stapelberg 0f74f9b921 remove left-over type definition for mode_info 2011-10-09 18:25:21 +01:00
Michael Stapelberg 18991a65c7 log WM_NAME (non-utf-8 window titles) 2011-10-09 14:45:34 +01:00
Michael Stapelberg 29c185dd0b Move fake_configure_notify to libi3 2011-10-09 13:40:15 +01:00
Michael Stapelberg 658bf5adff Bugfix: Warp pointer to the correct window when using the 'focus' command
Comment in the code makes the fix clear, I think.

Steps to reproduce the issue:
1) On the right monitor, open two terminals (h-split workspace)
2) 'i3 mark foo' on the right terminal
3) Focus the left terminal
4) Switch to the left monitor
5) i3 '[con_mark="foo"] focus'
6) the left window will contain the pointer (and is focused for a short period
   of time, or even permanently due to race conditions)
2011-10-03 21:54:36 +01:00
Noe Rubinstein 1eab86b916 add "move workspace next" and "move workspace prev"
some factorization would be better here, however I don't really know my
way around bison
2011-10-02 22:03:47 +01:00
Michael Stapelberg b2ad9a77c8 rename the internal function to _workspace_show, add a comment to workspace_show_by_name 2011-10-02 22:03:16 +01:00
Noe Rubinstein 92cc4494aa refactor workspace_show and friends 2011-10-02 21:57:00 +01:00
Michael Stapelberg b755397687 Make i3 send arguments as command to a running i3 instance (like i3-msg)
From i3 --help:

If you pass plain text arguments, i3 will interpret them as a command
to send to a currently running i3 (like i3-msg). This allows you to
use nice and logical commands, such as:

	i3 border none
	i3 floating toggle
	i3 kill window
2011-10-02 19:20:43 +01:00
Michael Stapelberg 4243a4053e Cleanup i3 --help 2011-10-02 18:55:15 +01:00
Michael Stapelberg 046cf99585 Move ipc_send_message and ipc_recv_message to libi3
Make i3-msg and src/ipc.c use it
2011-10-02 18:33:36 +01:00
Michael Stapelberg 501dc36b98 move sstrdup, scalloc, smalloc, srealloc to libi3, improve error messages 2011-10-02 18:09:30 +01:00
Michael Stapelberg 23796ea900 Implement i3 --get-socketpath, useful for IPC scripts
In order to not depend on X11 just for getting the socket paths, scripts or
other programs can now use i3 --get-socketpath. Since i3 must be present on the
computer anyways, this saves one dependency :).
2011-10-02 16:12:10 +01:00
Michael Stapelberg 679bceccc4 remove obsolete comment 2011-10-02 13:18:12 +01:00
Michael Stapelberg 0482dc7546 Merge branch 'master' into next 2011-10-01 17:44:46 +01:00
Michael Walle 8adcf3e5d1 set close-on-exec flag on errorlogfile
Make sure the file descriptor is closed within the child after forking.

Signed-off-by: Michael Walle <michael@walle.cc>
2011-10-01 17:44:22 +01:00
Michael Stapelberg 3629934b0a Check for PCRE version and disable PCRE_UCP for <= 8.10 2011-09-30 20:31:32 +01:00
Michael Stapelberg db33da2258 Merge branch 'master' into next 2011-09-26 20:12:07 +01:00
Michael Stapelberg abaa8c2356 Bugfix: IPC: Correctly dump the 'focus' array 2011-09-26 20:11:47 +01:00
Michael Stapelberg 6420b2b102 Introduce the i3-sensible-{pager,editor,terminal} scripts
The former two provide fallbacks in case $PAGER or $EDITOR is not set (which
might be more common than you think, because they have to be set in
~/.xsession, not in the shell configuration!) while the latter tries to launch
a terminal emulator. The scripts are most prominently used in i3-nagbar, which
alerts the user when the configuration is broken for some reason. Also,
i3-sensible-terminal is used in the default configuration.

This commit does not rely on the shell supporting ${PAGER:-less} anymore, which
is not the case for 'fish'.
2011-09-25 18:46:37 +01:00
Michael Stapelberg 1481cd95c9 Implement the I3_SYNC client protocol
This is mainly useful for the testsuite. The tests can wait until i3 processed
all X11 events and then continue. This eliminates sleep() calls which leads to
a more robust and faster testsuite.
2011-09-22 23:13:12 +01:00
Michael Stapelberg daebe28b09 Merge branch 'master' into next 2011-09-22 23:11:14 +01:00
Yves Fischer 0c367f9e4c Skip dragging of floating cons in fullscreen mode 2011-09-22 23:10:48 +01:00
Michael Stapelberg 1717b88174 Merge branch 'master' into next 2011-09-22 20:11:44 +01:00
Michael Stapelberg 4dbda73114 Bugfix: Correctly revert focus to other floating windows when closing a floating window
Uncovered by the testsuite \o/
2011-09-22 20:10:51 +01:00
Michael Stapelberg 143663f031 Merge branch 'master' into next 2011-09-20 22:37:08 +01:00
Michael Stapelberg 77ae3cd8f7 Bugfix: use bufcopy instead of buf when boundary checking (Thanks thomasba)
Also replace the useless (bufcopy + (next - bufcopy)) with next
2011-09-20 22:36:23 +01:00
Michael Stapelberg de7c2841ed Merge branch 'master' into next 2011-09-20 21:42:51 +01:00
Michael Stapelberg cd6c3fedcb A bit more boundary-checking when replacing variables.
Makes valgrind happy
2011-09-20 21:42:26 +01:00
Michael Stapelberg e1949aa694 Bugfix: Correctly split key/value when parsing variables (Thanks xeen) 2011-09-20 21:42:09 +01:00
Michael Walle 5aa43d61f8 Add force_xinerama configuration option
The configuration option does the same as the commandline parameter, except
it can be easily set by the user (e.g. you are using KDM and can't start a
session through ~/.xsession).

Signed-off-by: Michael Walle <michael@walle.cc>
2011-09-19 23:10:38 +01:00
Michael Stapelberg 05c0a8985b Merge branch 'master' into next 2011-09-18 17:44:00 +01:00
Michael Stapelberg 2fe0949abd Bugfix: Only change focus in tree_close() when the container was focused before
Fixes: #441

I’m not sure if that’s really all there is to it. Seems a bit too simple :).
We’ll see if I missed some corner cases in the next few days…
2011-09-18 17:43:02 +01:00
Michael Stapelberg 46409ad656 Merge branch 'master' into next 2011-09-18 17:02:52 +01:00
Michael Stapelberg a82f5750de Bugfix: Avoid out of bounds coordinates when moving floating windows (Thanks eeemsi)
This commit makes the coordinates proportional when moving floating windows.
That is, if you have a window at the bottom of your 1920 px monitor and move it
to your 800 px monitor, it will be at the bottom of the 800 px monitor (and not
out of bounds).
2011-09-18 17:00:29 +01:00
Michael Stapelberg b3adaa2983 Implement the window_role criterion (checks WM_WINDOW_ROLE)
Closes: #446

This is handy for matching specific windows of a multi-window application, for
example only Pidgin’s buddy list window.
2011-09-18 16:05:10 +01:00
Michael Stapelberg c88425147e Merge branch 'master' into next 2011-09-18 14:39:33 +01:00
Michael Stapelberg 7a2e92a116 Bugfix: Use con_orientation(). Fixes switching between different outputs
Fixes: #518

For stacking containers, direct access using con->orientation is wrong, we need
to use con_orientation().
2011-09-18 14:38:39 +01:00
Michael Stapelberg 0bc44ffc37 Merge branch 'master' into next 2011-09-18 00:40:42 +01:00
Peter Bui a5012f6021 fix-bug-515: always adjust floating position when moving to another output
Floating con position needs to be adjusted when moving to another
output, regardless of whether or not the target workspace is visible.
2011-09-18 00:38:32 +01:00
Michael Stapelberg b4ab4703c9 Merge branch 'master' into next 2011-09-17 20:55:13 +01:00
Michael Stapelberg 755c618cd4 Bugfix: Don’t warp the pointer if it already is on the target output (Thanks cls, pnutzh4x0r)
My testcase was putting a floating window on the left output, but overlapping a
little to the right output. Then switch to a workspace on the right output.
2011-09-17 20:53:24 +01:00
Michael Stapelberg e6a854a742 Remove obsolete code for floating focus 2011-09-17 19:29:06 +01:00
Michael Stapelberg 172f3563f7 Implement focus switching (focus left/right) for floating windows
Fixes: #475
2011-09-17 19:28:41 +01:00
Michael Stapelberg fe35c80741 Also make compilation possible on systems with libev 3
From the source:

    We need ev >= 4 for the following code. Since it is not *that* important
    (it only makes sure that there are no i3-nagbar instances left behind) we
    still support old systems with libev 3.
2011-09-17 17:55:36 +01:00
Michael Stapelberg 7a38d8ac56 Merge branch 'master' into next 2011-09-17 14:13:05 +01:00
Michael Stapelberg deab3ac338 Send the correct X11 border_width in faked ConfigureNotifys 2011-09-17 14:11:55 +01:00
Michael Stapelberg f2f636f9e7 Bugfix: Honor the X11 window border in ConfigureRequests 2011-09-17 14:11:01 +01:00
Michael Stapelberg 983a679537 Bugfix: Honor the X11 window border when calculating dimensions for floating windows 2011-09-17 14:10:35 +01:00
Michael Stapelberg f6eaa8a580 Bugfix: Don’t use top border height twice when calculating dimensions for floating windows 2011-09-17 14:09:57 +01:00
Michael Stapelberg 5a85c9efd2 fix build in 'next' (Thanks thomasba) 2011-09-14 23:16:23 +01:00
Michael Stapelberg ad568aa8c1 Merge branch 'master' into next 2011-09-14 23:00:02 +01:00
Michael Stapelberg b1aa8107b3 Bugfix: Correctly handle ConfigureRequests for floating windows in multi-monitor setups (Thanks thomasba)
Fixes #519
2011-09-14 22:59:19 +01:00
Michael Stapelberg 6b541d382b Bugfix: Don’t fix floating coordinates when reassigning (fixes flickering)
This fixes flickering when moving floating windows between different monitors.
2011-09-14 22:58:51 +01:00
Michael Stapelberg dc790cfa32 Bugfix: Correctly free old assignments when reloading
Fixes #516
2011-09-11 23:41:46 +01:00
Michael Stapelberg f3716e45cf re-indent load_configuration() 2011-09-11 23:31:06 +01:00
Michael Stapelberg 2c7148c46e Same bugfix as 2a215fd, but for assignments with invalid criteria 2011-09-11 22:54:41 +01:00
Michael Stapelberg 717ae819c5 Merge branch 'master' into next 2011-09-11 22:52:44 +01:00
Michael Stapelberg 2a215fd7e2 Bugfix: Ignore for_window commands with empty (invalid) criteria (+test) (Thanks aksr) 2011-09-11 22:52:33 +01:00
Michael Stapelberg a41bfba47a finally remove the deprecated 'screen' keyword from cfgparse.l 2011-09-11 22:27:31 +01:00
Michael Stapelberg d82698efa7 make the old assign syntax trigger an i3-nagbar warning (it’s deprecated), adjust test 2011-09-11 22:01:36 +01:00
Michael Stapelberg e47e100819 Introduce a new syntax for the 'assign' command:
Instead of using a quoted string to specify the class / title, the assign
command now uses criteria, just like the for_window command or the command
scopes.

An example comes here:

    # Assign all Chromium windows (including popups) to workspace 1: www
    assign [class="^Chromium$"] → 1: www

    # Make the main browser window borderless
    for_window [class="^Chromium$" title=" - Chromium$"] border none

This gives you more control over the matching process due to various reasons:

1) Criteria work case-sensitive by default. Use the (?i) option if you want a
   case-insensitive match, like this:
   assign [class="(?i)^ChroMIUM$"] → 1

2) class and instance of WM_CLASS can now be matched separately. For example,
   when starting urxvt -name irssi, xprop will report this:
   WM_CLASS(STRING) = "irssi", "URxvt"
   The first part of this is the instance ("irssi"), the second part is the
   class ("URxvt").
   An appropriate assignment looks like this:
   assign [class="^URxvt$" instance="irssi"] → 2

3) You can now freely use a forward slash (/) in all strings since that is no
   longer used to separate class from title (in-band signaling is bad, mhkay?).
2011-09-11 21:54:13 +01:00
Michael Stapelberg d03dffe012 Kill left-over i3-nagbar processes on 'exit' 2011-09-11 21:49:35 +01:00
Michael Stapelberg b3e1fb1f3b Make the old 'assign' case-insensitive again (+test) (Thanks aksr) 2011-09-11 21:16:45 +01:00
Michael Stapelberg c1c1730516 pcre: enable UCP, UTF-8 (if available), extend t/19-match 2011-09-11 11:40:51 +01:00
Michael Stapelberg 2fc54aadf1 Implement support for PCRE regular expressions for all criteria (for_window, commands, assignments) 2011-09-10 23:53:11 +01:00
Michael Stapelberg 77ae771476 Restrict 'resize' command to left/right for horizontal cons, up/down for vertical cons
This makes the interface much clearer and avoids confusion about which key to
press in which situation.
2011-09-05 22:36:04 +02:00
Michael Stapelberg 8928b5f55d Bugfix: Correctly handle workspace names which do not start with a zero 2011-09-05 22:21:10 +02:00
Michael Stapelberg b4809e9ba7 Merge branch 'master' into next 2011-08-31 14:45:14 +02:00
Michael Stapelberg e1631d6320 properly free memory/close fd upon errors (Thanks xeen)
Found with the static analyzer cppcheck
2011-08-31 14:44:48 +02:00
Michael Stapelberg dfda878272 Bugfix: Correctly assign a number to workspaces starting with '0: ' (Thanks SardemFF7) 2011-08-28 18:17:02 +02:00
Michael Stapelberg 57e7266da4 Merge branch 'master' into next 2011-08-28 17:41:23 +02:00
Peter Bui 6e59d693d2 Use name_json if available, rather than non-descriptive name. 2011-08-28 17:36:16 +02:00
Michael Stapelberg 16188af8bf Merge branch 'master' into next 2011-08-28 15:47:35 +02:00
Michael Stapelberg 5618875df8 Bugfix: Make 'floating enable' check for dock windows (Thanks edelkind)
Fixes #501
2011-08-28 15:46:50 +02:00
Michael Stapelberg 8114ecda47 Merge branch 'master' into next 2011-08-27 13:47:57 +02:00
Michael Stapelberg e97a7e34f7 Bugfix: Re-implement reconfiguring height of dock windows (+test) (Thanks thomasba) 2011-08-27 13:47:10 +02:00
Michael Stapelberg 6c42a179ec Merge branch 'master' into next 2011-08-27 13:03:20 +02:00
Michael Stapelberg 4c01dbd726 Bugfix: Don’t always focus floating windows (fixes focus stealing with assignments) (+test) (Thanks aksr) 2011-08-27 13:02:44 +02:00
stfn 8e8b9b93f4 ipc.c: Fix warning 2011-08-26 23:33:11 +02:00
Michael Stapelberg 7d2978ead4 Merge branch 'master' into next 2011-08-26 19:18:16 +02:00
Michael Stapelberg f53f954a33 Bugfix: Re-enable X11 Eventmask *after* pushing all the X11 changes
This should fix focus problems where EnterNotify events were generated while
moving windows. Hopefully it does not trigger any regressions :).

Fixes #500
2011-08-26 19:17:52 +02:00
Michael Stapelberg afff328c59 Merge branch 'master' into next 2011-08-26 12:37:04 +02:00
Michael Stapelberg 12e15609ef Bugfix: Correctly recognize duplicate workspace assignments (Thanks Moredread)
Example of a faulty config:

    workspace 5 VGA1
    workspace 5 LVDS1

Fixes #498, #499
2011-08-26 12:35:42 +02:00
Michael Stapelberg 53a9ace3a6 Merge branch 'master' into next 2011-08-26 03:24:14 +02:00
Michael Stapelberg 7bf465af9f Fix prototype of con_inside_focused 2011-08-26 03:23:57 +02:00
Michael Stapelberg a57a2b9ccb Merge branch 'master' into next 2011-08-26 03:18:16 +02:00
Michael Stapelberg 7fca7f029f Correctly render containers when a split container is focused 2011-08-26 03:17:41 +02:00
Michael Stapelberg 6d91a6248e Merge branch 'master' into next 2011-08-26 02:02:50 +02:00
Michael Stapelberg 7741608a9d Bugfix: Only consider tiling windows when attaching tiling windows to workspaces (Thanks Tucos)
Fixes #436
2011-08-26 02:01:06 +02:00
Michael Stapelberg 4984b81282 Merge branch 'master' into next 2011-08-25 21:59:19 +02:00
Michael Stapelberg f06059ec94 Bugfix: Accept '\t' in the 'set' command, don’t die but ELOG in case of errors (Thanks atsutane) 2011-08-25 21:58:03 +02:00
Michael Stapelberg 4fcca74e2b Merge branch 'master' into next 2011-08-25 00:24:12 +02:00
Michael Stapelberg 4f22e12c5c Bugfix: Correctly render non-leaf containers (Thanks eeemsi, mseed)
Fixes #465
2011-08-25 00:23:33 +02:00
Michael Stapelberg 2acbf4d4a4 Compilation fix: Add dont_warp=false 2011-08-24 23:06:49 +02:00
Michael Stapelberg 75c11cb894 Merge branch 'master' into next 2011-08-24 23:00:12 +02:00
Michael Stapelberg 698d97cd02 Bugfix: Correctly warp floating windows when using the 'move' command 2011-08-24 22:59:46 +02:00
Michael Stapelberg cd2d7ef484 Bugfix: Correctly keep focus when moving non-leaf windows 2011-08-24 22:55:56 +02:00
Michael Stapelberg 1d9a2abc05 Bugfix: Fix coordinates when moving a floating window to a different output 2011-08-24 22:54:10 +02:00
Michael Stapelberg 37a40671c9 Merge branch 'master' into next 2011-08-24 22:43:31 +02:00
Michael Stapelberg 62e9eab4e5 Merge branch 'master' into next
Conflicts:
	src/floating.c
2011-08-24 22:43:15 +02:00
Michael Stapelberg 7558c1ddbd Bugfix: Correctly handle current_output == NULL
Fixes t/66-assign.t
2011-08-24 22:41:17 +02:00
Peter Bui a33bfa81d2 Move centering code to before sanity check 2011-08-24 22:27:15 +02:00
Michael Stapelberg c527497a4b Merge branch 'master' into next 2011-08-24 16:58:47 +02:00
Michael Stapelberg 247e115835 Bugfix: Correctly place floating windows on their appropriate output (Thanks kraM)
Fixes #452

This might also fix problems with Firefox where Firefox only displays a white
window (my guess is that it mapped a floating window outside of the actually
visible area for some reason).
2011-08-24 16:57:35 +02:00
Michael Stapelberg ff85023b08 Merge branch 'master' into next 2011-08-24 15:14:53 +02:00
Michael Stapelberg 0d35feb71b Bugfix: Make the 'resize' command work inside tabbed/stacked cons (+test) (Thanks sbedivere)
Fixes #461
2011-08-24 15:14:04 +02:00
Michael Stapelberg 642a745004 Merge branch 'master' into next 2011-08-24 00:57:36 +02:00
Michael Stapelberg 0848844f2d Bugfix: Fix 'focus mode_toggle' on an empty workspace (Thanks BeF)
Fixes #487
2011-08-24 00:55:11 +02:00
Michael Stapelberg 2cd8231fce Merge branch 'master' into next 2011-08-20 17:48:49 +02:00
Michael Stapelberg f15559eb1f Don’t die, but ELOG and fallback when the pointer cannot be queried (Thanks Niklas) 2011-08-20 17:48:07 +02:00
Michael Stapelberg 22e30061f3 Merge branch 'master' into next 2011-08-17 16:37:09 +02:00
Michael Stapelberg f172359ba5 Bugfix: Don’t change focus when assigned windows start on invisible workspaces (+test) (Thanks ioflag)
Fixes #468
2011-08-17 16:36:19 +02:00
Michael Stapelberg ec317e78c1 use 'break' instead of 'return', the generated code will end up in a switch statement 2011-08-17 16:12:48 +02:00
Peter Bui 7ddba4995f BUG-396: Implement move output <RANDR-OUTPUT> command
Also add support for move output <up|down|left|right> and update
userguide about the new command.
2011-08-17 16:10:11 +02:00
Michael Stapelberg 4cf2cab626 Merge branch 'master' into next 2011-08-17 13:37:33 +02:00
Michael Stapelberg 09ad9808f6 Bugfix: Set focus to where the mouse pointer is when starting (Thanks nutron)
Fixes #477
2011-08-17 13:37:08 +02:00
Michael Stapelberg 2eab8d7f20 Merge branch 'master' into next 2011-08-17 12:29:15 +02:00
Michael Stapelberg 7c6f693c8a Bugfix: Don’t consider the workspace next/prev command when looking for named workspaces
Fixes #469
2011-08-17 12:28:45 +02:00
Michael Stapelberg 7eacf8dd04 Merge branch 'master' into next 2011-08-17 12:17:29 +02:00
Michael Stapelberg 22882f4e89 Bugfix: Initialize verbose to 'false' (Thanks tilman)
Verbosity was set to 'true' when we started the tree branch.
We forgot to set it back to 'false' :-).
2011-08-17 12:16:32 +02:00
Michael Stapelberg 7a22bd1cf3 Merge branch 'master' into next 2011-08-17 12:14:17 +02:00
Peter Bui 36224f86d1 Only warp pointer once during x_push_changes()
- Introduce warp_to static variable in x.c that stores the coordinates
  to warp to as a Rect.

- Add x_set_warp_to function to set this variable.  Use in _tree_next,
  workspace_show, and con_move_to_workspace.

- In x_push_chanages, if warp_to is set, then call xcb_warp_pointer_rect
  and then reset it to NULL.

This fixes all know bugs for pointer warping for me.
2011-08-17 12:12:40 +02:00
Michael Stapelberg 2abe23d6ff Merge branch 'master' into next 2011-08-17 01:52:45 +02:00
Michael Stapelberg 7951445849 xcb: use predefined XCB_ATOM_ atoms, don’t request them 2011-08-17 01:41:19 +02:00
Michael Stapelberg d3efa73dd7 Merge branch 'master' into next 2011-08-11 22:22:44 +02:00
Valentin Voigt bf0c67b2af Warp cursor when changing workspace. 2011-08-11 22:13:50 +02:00
Michael Stapelberg 3af7692a92 Merge branch 'tests-optimize' into next 2011-08-10 15:57:28 +02:00
Michael Stapelberg 10f871b57b implement "socket activation": passing IPC sockets to i3 2011-08-10 15:55:27 +02:00
Michael Stapelberg 016ecb65fb Merge branch 'master' into next 2011-08-09 10:02:55 +02:00
Peter Bui d8cf36ce83 Fix two focus issues when switching/moving workspaces
1. Fix focus when moving to same workspace.

If we have a single window on a workspace and we switch to the same
worksapce, focus_next will be the workspace container, rather than the
current window, so simply call con_descend_focused to ensure we set the
focus to a window.

2. Fix focus when moving a container to a visible workspace.

Call workspace_show before we attaching to new visible workspace, so we
don't get in the weird situation where target workspace has focused
window, but it isn't considered focused.
2011-08-09 10:01:08 +02:00
Mateusz Poszwa 42db9de7ec Add new_float config option.
This option sets the default border style for containers automatically put into floating mode.

Fixes #264
2011-08-09 09:29:53 +02:00
Mateusz Poszwa cd5ebc2dca src/manage.c: properly set automatic flag when calling floating_enable() 2011-08-09 09:29:47 +02:00
Michael Stapelberg eb0a56fad1 Merge branch 'get-marks' into next 2011-08-09 09:28:06 +02:00
Michael Stapelberg 4253aa4ba2 Merge branch 'master' into next 2011-08-09 09:27:55 +02:00
Michael Stapelberg cd1add1f3c Bugfix: don’t free the old json_output, the caller does that 2011-08-09 09:27:28 +02:00
Michael Stapelberg 95416175cd Bugfix: use FREE to correctly handle NULL replies 2011-08-09 09:27:24 +02:00
Peter Bui 5e06b1b21d Fix some potential memory leaks 2011-08-09 09:27:15 +02:00
Helgi Kristvin Sigurbjarnarson 3cc22dcbe4 Preserve marks between restarts. 2011-08-09 08:19:31 +02:00
Helgi Kristvin Sigurbjarnarson 35d7ef0ddd Feature: implement GET_MARKS 2011-08-09 08:04:33 +02:00
Michael Stapelberg e304902874 Merge branch 'master' into next 2011-08-07 20:45:20 +02:00
Michael Stapelberg 6fb5d6e313 initialize most to NULL, fixes warning 2011-08-07 20:45:06 +02:00
Michael Stapelberg 9260cd7e12 Merge branch 'master' into next 2011-08-07 17:56:37 +02:00
Michael Stapelberg d39261a1f0 rewrite con_descend_orientation
It now uses the container orientation (if it is appropriate, the last focused
one otherwise) to recurse. This works better if the target workspace is in
vertical orientation when you use right/left or if it is in horizontal
orientation but you use up/down.
2011-08-07 15:57:36 +02:00
Michael Stapelberg 99ba193ce7 Bugfix: the up/down directions were swapped
Also compare 'output' and 'current' in the same order in both parts of the
condition to make the comparison more clear.
2011-08-07 15:46:24 +02:00
Michael Stapelberg 692d65b0fd little style fixes 2011-08-07 15:24:51 +02:00
Peter Bui a547365a88 Implement switching focus across screens.
Modify _tree_next() so that when we reach the workspace container:

1. Find the next corresponding output (screen) using the added
get_output_next().

2. If there is another output, find the visible workspace.

3. Call workspace_show on found workspace.

4. Find the appropriate window to focus (leftmost/rightmost, etc.) using
con_descend_direction, and then focus it.

I've only tested on horizontal monitors (left/right).
2011-08-07 14:33:07 +02:00
Michael Stapelberg 94ba655794 Merge branch 'master' into next 2011-08-06 18:54:50 +02:00
Michael Stapelberg cd5e74bd8e Bugfix: Call tree_render() before starting the dragging when dragging a floating window (Thanks eeemsi)
Fixes #462
2011-08-06 18:53:39 +02:00
Michael Stapelberg 2631ad4c07 Merge branch 'master' into next 2011-08-05 01:04:28 +02:00
Michael Stapelberg ec0d67410a Fix border rendering (Thanks Paride Legovini) 2011-08-05 01:03:56 +02:00
Michael Stapelberg 6e95004d6c Merge branch 'master' into next 2011-08-04 23:37:40 +02:00
Michael Stapelberg f2e1e220a4 Bugfix: Use the right format string (Thanks pnutzh4x0r) 2011-08-04 23:34:23 +02:00
Michael Stapelberg 7e0cbf18f9 Bugfix: Correctly parse the 'focused' (it’s a bool, no longer int) when restoring layout (Thanks andi) 2011-08-04 22:58:19 +02:00
Michael Stapelberg 93c3596619 Merge branch 'master' into next 2011-08-04 22:21:42 +02:00
Michael Stapelberg 1d50cff7ca Bugfix: Fix stacking order
The commit 192dbdabd6 introduced a regression
here (open three floating windows and try to raise them with clicking to see
what i mean)
2011-08-04 22:19:30 +02:00
Michael Stapelberg ecc2cae3f7 Bugfix: use ELOG to actually get the error message into the logfile shown by i3-nagbar 2011-08-04 21:43:55 +02:00
Michael Stapelberg 4e350664ae Bugfix: Check that ->symbol != NULL before using strcasecmp() 2011-08-04 21:38:13 +02:00
Michael Stapelberg 787dd4059f little style fixes for the previous patch 2011-08-04 21:25:47 +02:00
Radek Tříška 9d101d8473 check_for_duplicate_bindings 2011-08-04 20:37:01 +02:00
Michael Stapelberg e9395149b9 Merge branch 'master' into next 2011-08-04 20:11:44 +02:00
Mateusz Poszwa 1913bf0e5c Add "instance" to matching criteria 2011-08-04 20:10:31 +02:00
Simon Kampe 837bb50826 Parsing workspace name so if the first part is a number, the workspace will get this number. If no number is found it will default to -1. 2011-08-04 00:30:07 +02:00
Peter Bui 1750192f63 Modify workspace next/prev to account for workspaces on all outputs.
Generally, the traversal goes: numbered workspaces in order, and then
named workspaces in the order in which they appear in the tree.

Example:
    Output 1:       Output 2:
	1 3 D C         2 4 B A

Traversal: 1, 2, 3, 4, D, C, B, A, 1, ...

Note, after the numbered workspaces, we traverse the named workspaces
from output 1, and then output 2, etc.
2011-08-04 00:12:09 +02:00
Michael Stapelberg d0741975f1 Bugfix: Use the appropriate number when assigning numbered workspaces in randr.c 2011-08-04 00:10:23 +02:00
Michael Stapelberg c883e7050a Include <limits.h> in all.h 2011-08-04 00:10:04 +02:00
Michael Stapelberg 92481b133c docs/userguide: the correct command is 'floating enable', not 'mode floating' (Thanks Sander)
Fixes: #453
2011-08-03 20:48:28 +02:00
Michael Stapelberg e616b45c83 Bugfix: realloc() with size == 0 works like free() and returns NULL, so don’t die() 2011-08-03 20:43:08 +02:00
Michael Stapelberg 192dbdabd6 Bugfix: Correctly set the _NET_CLIENT_LIST_STACKING hint (fixes chromium tabbar)
Fixes #287
2011-08-03 20:07:03 +02:00
Michael Stapelberg cc5f3ce95a Bugfix: Fix 'resize' with direction != 'up' for floating windows
Fixes #447
2011-08-03 14:48:52 +02:00
Michael Stapelberg 9800d5286f Bugfix: Correctly check if the workspace already exists 2011-08-03 12:18:30 +02:00
Michael Stapelberg dcba8024de also handle quoted workspace names, extend t/72 for that 2011-08-03 03:33:12 +02:00
Michael Stapelberg 0092b245a1 Bugfix: When looking for an unused workspace, try the named workspaces first
Fixes: #449
2011-08-03 03:08:59 +02:00
Michael Stapelberg 719022d80a Bugfix: Ensure that the percentage is > 0.05 when using the 'resize' cmd (Thanks rogutes)
Fixes #437
2011-08-02 22:31:45 +02:00
Michael Stapelberg 554a43ca4a Bugfix: Make the criteria rules recursive in src/cfgparse.y, too (Thanks f8l) 2011-08-02 19:46:14 +02:00
Michael Stapelberg c9194b4297 Bugfix: Correctly bind on multiple keycodes if a symbol has more than one (Thanks ubitux) 2011-08-02 10:47:03 +02:00
Michael Stapelberg 3204caa98d i3-migrate-config-to-v4: drop the .pl suffix
As lintian (a Debian package checker) mentions, it is more clever to install it
without the extension, since the implementation language might change.
2011-07-31 23:11:05 +02:00
Michael Stapelberg bc98185f85 Bugfix: Handle (and free) the last_motion_notify 2011-07-31 21:21:45 +02:00
Michael Stapelberg 7180dca3b2 Bugfix: Correctly free the xcb_get_geometry reply when not managing a window 2011-07-31 20:39:33 +02:00
Michael Stapelberg 22de7593c5 Bugfix: free() the grab_pointer reply 2011-07-31 19:52:58 +02:00
Michael Stapelberg 6c35a0b93b handle the xcb_grab_pointer reply 2011-07-31 19:48:39 +02:00
Michael Stapelberg ffbcfa2c97 Bugfix: also free() X11 errors in the main loop 2011-07-31 19:41:57 +02:00
Michael Stapelberg fdfa88586d Forgot free(event) 2011-07-31 19:34:55 +02:00
Michael Stapelberg fa1fe3cfed Bugfix: Same xcb_send_event fix as 1e0033bce4 2011-07-31 19:33:56 +02:00
Michael Stapelberg 5bfc89f733 Bugfix: Correctly pass the pointer to xcb_send_event 2011-07-31 19:26:38 +02:00
Michael Stapelberg 52b3646ecc xcb: don’t use the _unchecked variant for requests which have a reply 2011-07-31 18:19:41 +02:00
Michael Stapelberg 7f3f7c26b6 Bugfix: free replies after using them 2011-07-31 18:17:56 +02:00
Michael Stapelberg d9ff172d36 Bugfix: load_font: free reply after using it 2011-07-31 17:57:11 +02:00
Michael Stapelberg cbfcf5bd8b Bugfix: free font string after using it 2011-07-31 17:54:53 +02:00
Michael Stapelberg ee83df9684 Bugfix: cfgparse: correctly free parser/lexer 2011-07-31 17:50:54 +02:00
Michael Stapelberg 088681c781 Bugfix: property handlers: correctly free replies in all cases 2011-07-31 17:46:41 +02:00
Michael Stapelberg 1e0033bce4 Bugfix: Allocate 32 bytes for xcb_send_event, it always copies 32 bytes
Fixes an 'uninitialized memory' error in valgrind
2011-07-31 17:46:01 +02:00
Michael Stapelberg 4875868689 Bugfix: Free property replies in their handlers 2011-07-31 17:12:37 +02:00
Michael Stapelberg d3e3339a05 Bugfix: Fix small memory leak when initializing output Cons 2011-07-31 17:11:51 +02:00
Michael Stapelberg f2fc523de7 Bugfix: fix memory leak in src/cmdparse.y 2011-07-31 17:11:28 +02:00
Michael Stapelberg 3721c598bd Bugfix: Set the cursor via the Xlib connection if XCursor is supported
This fixes a race where we created cursors on the Xlib connection, flushed,
then used the cursor on the XCB connection. Even though we flushed, the X
server did not process the requests yet and therefore returned a BadCursor
error.

This bugfix uses the Xlib connection for setting the root window cursor which
will ensure that the requests are properly serialized.

An easy test for this (on my machine) is the following ~/.xsession:
    xsetroot -cursor_name cross
    exec i3
If you see a cross cursor instead of the pointer, the race happens. You’ll see
a error_code=6 error in your ~/.xsession-errors.
2011-07-29 13:13:51 +02:00
Michael Stapelberg bc7dec6a4c X11 errors: also log the error_code (see X Protocol, Appendix B, Errors) 2011-07-29 13:11:02 +02:00
Fernando Tarlá Cardoso Lemos ae9c90ba19 Don't leak the cursor_id.
Fixes a server-side leak. The cursor_id is not needed when we're
using themed cursors (we never freed it either).
2011-07-29 12:38:44 +02:00
Fernando Tarlá Cardoso Lemos 7a18dcc89e Set the root window cursor. Fixes #442. 2011-07-29 12:38:24 +02:00
Michael Stapelberg ed30043950 Bugfix: Also abort drag_pointer after XCB_KEY_PRESS / XCB_KEY_RELEASE (Thanks eeemsi) 2011-07-28 21:01:34 +02:00
Michael Stapelberg f84264ae41 remove _NET_WM_WORKAREA from _NET_SUPPORTED for now
See ticket #301, this is a problem with Qt apps on your second monitor.

We should implement better EWMH support, but not before the release :).
2011-07-27 12:51:38 +02:00
Michael Stapelberg 18513e1638 x.c: fix warning by removing unused variable 2011-07-25 00:32:14 +02:00
Michael Stapelberg 7a7764a0d9 handlers.c: fix warnings 2011-07-25 00:32:03 +02:00
Michael Stapelberg 797ba5f7c8 remove unnecessary close, because fclose already closes the file descriptor 2011-07-24 18:42:46 +02:00
Michael Stapelberg 34eb9b2664 ipc: make 'focused' a bool 2011-07-24 15:00:09 +02:00
Michael Stapelberg b09bb0fc2a ipc: make 'urgent' a bool 2011-07-24 14:54:30 +02:00
Michael Stapelberg 36fde6dbe1 ipc: send 'percent': null when percent is not relevant for the container 2011-07-24 14:47:28 +02:00
Michael Stapelberg a05a9f8dae Set some more atoms for _NET_SUPPORTED (Thanks lexszero) 2011-07-23 22:40:47 +02:00
Michael Stapelberg 3f7c7c2e38 remove left-over wordexp.h include 2011-07-23 22:37:41 +02:00
Michael Stapelberg ffe297f5e5 Bugfix: use the global root variable, don’t get the first one (Thanks quaec) 2011-07-23 22:29:01 +02:00
Michael Stapelberg fdd098b010 secure strscpy by replacing with strncpy 2011-07-23 22:22:36 +02:00
Michael Stapelberg 370715d1a8 Bugfix: Don’t leak file descriptor 2011-07-23 22:11:01 +02:00
Michael Stapelberg 062ce3ef03 Bugfix: Correctly resize when clicking on the border of a stacked con
Runs the same code as for non-stacked / non-tabbed containers, but on the
parent of the container (which is the stacked / tabbed con, since route_click
gets called with the child).
2011-07-23 21:48:14 +02:00
Michael Stapelberg 02dfb8e891 use memmem and strndup from FreeBSD on Darwin (Thanks Marcus) 2011-07-17 15:18:45 +02:00
Michael Stapelberg 2d71102796 Bugfix: Switch to appropriate workspace when using 'focus' (+test) (Thanks rogutes)
Fixes #432
2011-07-14 23:45:36 +02:00
Michael Stapelberg 8c1a242f5f reload the config after editing it through i3-nagbar 2011-07-13 18:47:08 +02:00
Claudio Marforio cc24a96e96 patch to allow exec_always in configure file
fixed indentation, updated docs
2011-07-12 18:23:14 +02:00
Michael Stapelberg 5555c0fd3b Bugfix: Don’t raise the stacked/tabbed decoration when border != BS_NONE and children == 1 (Thanks smartass)
Otherwise a black area would cover the top of the child window.
2011-07-11 23:17:56 +02:00
Michael Stapelberg 06054642fe debug.c: remove handle_event 2011-07-11 18:21:25 +02:00
Michael Stapelberg 897b53f1c2 Bugfix: run nagbar commands through sh(1) (Thanks Tucos) 2011-07-11 16:51:57 +02:00
Michael Stapelberg 429d310011 nagbar: use less / vi as fallbacks for PAGER / EDITOR 2011-07-11 16:40:10 +02:00
Michael Stapelberg 05e39c1c48 Ignore X11 errors caused by ReparentWindow / ChangeProperty on already destroyed windows
These errors can happen because a DestroyWindow request by a client will
trigger an UnmapNotify, then a DestroyNotify. We cannot distinguish this
UnmapNotify from an UnmapNotify not followed by a DestroyNotify, so we just try
to send the ReparentWindow / ChangeProperty and ignore the errors, if any.
2011-07-10 23:44:13 +02:00
Michael Stapelberg 48f5166daf log: display time in microseconds when DEBUG_TIMING is set 2011-07-10 23:11:21 +02:00
Michael Stapelberg 937a80511a x: only configure window coordinates when height > 0
Fixes some X11 errors
2011-07-10 22:59:04 +02:00
Michael Stapelberg d9038cdb80 x: Only render / copy pixmap when the pixmap was actually created
Fixes some X11 errors
2011-07-10 22:58:49 +02:00
Michael Stapelberg 85d851de5f x: disable GraphicsExposure events on our pixmap graphics contexts
Gets rid of GraphicsExposure and NoExpose events, which we don’t use anyways.
2011-07-10 22:27:51 +02:00
Michael Stapelberg 78d25c4cd9 expose event handler: use x_deco_recurse 2011-07-10 22:06:16 +02:00
Michael Stapelberg 7d9ba707b3 x: Don’t pre-render the decoration for windows inside a stack which are not visible
Saves n-1 decoration renderings for n windows in a stack whenever a new window
gets added or removed.
2011-07-10 21:55:29 +02:00
Michael Stapelberg d7f9700ba4 x: use PolySegment instead of two PolyLine requests 2011-07-10 21:19:31 +02:00
Michael Stapelberg 8f4b95dccd x: change EnterNotify event mask only for mapped windows
Saves a few ChangeWindowAttributes requests.
2011-07-10 20:18:06 +02:00
Michael Stapelberg 37e0cf8346 x: copy the pre-rendered pixmap contents to a decoration window immediately after mapping
Reduces flickering.
2011-07-10 20:15:22 +02:00
Michael Stapelberg afef42a4ac x: set the contents of a decoration window immediately after changing its size
Reduces flickering. A window loses its contents when being resized, so we have
to restore them as fast as possible.
2011-07-10 20:08:40 +02:00
Michael Stapelberg 517833569d x: raise the stack decoration above the stack windows (reduces flickering)
This reduces flickering when opening new windows in a stack, see the comment.
2011-07-10 20:05:49 +02:00
Michael Stapelberg 0d8dd571f8 x: when rendering stacked/tabbed cons, only update decoration once, saves some CopyAreas 2011-07-10 20:01:29 +02:00
Michael Stapelberg 8be26c9a22 x: Don’t set background color on frame windows, reduces flickering 2011-07-10 19:58:46 +02:00
Michael Stapelberg 64cfb2dbb1 Revert "x: Set pixmap as background window, saves a lot of CopyAreas"
This reverts commit 84b804cda6.
Turns out that it triggered graphic corruptions on ATI graphics cards (Thanks
aniou) with certain drivers.
2011-07-10 16:22:09 +02:00
Michael Stapelberg c55abca115 add i3-nagbar. tells you about config file errors (for example) 2011-07-10 14:33:19 +02:00
Michael Stapelberg 0add563448 Bugfix: multiple criteria should use a logical AND (+test) (Thanks f8l) 2011-07-08 00:21:29 +02:00
Michael Stapelberg 0ca229ceb3 migrate-config: also make force_focus_wrapping a v4-only statement 2011-07-08 00:17:48 +02:00
Michael Stapelberg ac335fcffa Automatically call the migration script when the config does not look like v4 2011-07-06 20:43:00 +02:00
Michael Stapelberg c408fef021 Implement 'focus floating', 'focus tiling' and 'focus mode_toggle' (+test +docs) 2011-07-04 17:09:52 +02:00
Michael Stapelberg 71741d7620 Bugfix: Only set ENTER_WINDOW event mask for mapped windows (fixes focus problems)
Fixes focus problems when switching to empty workspaces or when going in/out of
fullscreen.
2011-07-04 13:41:02 +02:00
Michael Stapelberg 23d4917e43 Bugfix: Correctly revert floating focus when killing the last floating window (+test) 2011-07-01 01:10:43 +02:00
Michael Stapelberg e5c811248f Bugfix: Fix floating assignments, extend test for the assign command (Thanks Tucos) 2011-06-13 17:42:59 +02:00
Michael Stapelberg d641e1da3b Don’t force wrapping when focusing in a direction would work (+test)
Think of the following layout:

 -------------
 | tab |     |
 | con | win |
 |     |     |
 -------------

The tabbed container on the left has two children. Assume you have focused the
second/right child in the tabbed container. i3 used to focus the first/left
container of the tabbed container when using 'focus right' (it wrapped focus).

With this commit, the default behaviour is to instead focus the window on the
right of the screen.

The intention is to make focus switching more intuitive, especially with tabbed
containers supporting 'focus left'/'focus right' in tree. You should end up
using less 'focus parent' :).

You can force the old behaviour with 'force_focus_wrapping true' in your
config.

Code coverage is 62.5% with this commit.
2011-06-12 12:56:50 +02:00
Michael Stapelberg b35ff6a7c9 Bugfix: Correctly attach new output cons to the root con (Thanks mseed) 2011-06-11 14:36:09 +02:00
Michael Stapelberg fb9d77305e Implement 'fullscreen global' 2011-06-10 18:27:20 +02:00
Michael Stapelberg bef25d72aa Implement 'border toggle' (+test) 2011-06-10 16:15:52 +02:00
Michael Stapelberg 60ae26c19d Implement 'workspace next/prev' (+test) 2011-06-10 16:03:59 +02:00
Michael Stapelberg 39b1c1bf75 Re-implement the 'mode' command 2011-06-10 02:38:07 +02:00
Michael Stapelberg df0b7bed48 cmdparse: s/direction/split_direction to be more clear 2011-06-10 02:25:14 +02:00
Michael Stapelberg f1385ba3d5 CONFIG BREAK: Rename 'restore' to 'append_layout' 2011-06-10 02:15:31 +02:00
Michael Stapelberg bd49c80d5f CONFIG BREAK: rename 'mode floating/tiling' to 'floating enable/disable'
The three different variants now:
   floating enable
   floating disable
   floating toggle
2011-06-10 02:06:47 +02:00
Michael Stapelberg 9bbb37bb55 BREAKS CONFIG: rename 'level up' to 'focus parent'
…and 'level down' to 'focus child'. More intuitive than the old command names.
2011-06-10 01:36:33 +02:00
Michael Stapelberg 9aa7e5fbd6 Parse multiple criteria in commands (+test), better error message for 'focus' 2011-06-08 23:34:08 +02:00
Michael Stapelberg d68e4710fe CONFIG BREAK: kick the 'next'/'prev' commands, introduce 'focus left' etc.
Instead of the cryptic next/prev commands, we now provide an argument to the
focus command. Userguide and default config is updated.
2011-06-08 20:49:49 +02:00
Michael Stapelberg 58e02e84e2 Bugfix: Don’t break focus stack when inplace restarting with fullscreen windows (Thanks mike) 2011-06-03 01:48:55 +02:00
Michael Stapelberg 1585d942ea Make workspace_layout handle all cons at workspace level, not only the first one (+test)
This makes opening new windows on workspace level and moving windows to the
right/left more like in the old i3.
2011-06-02 17:21:38 +02:00
Michael Stapelberg 51bfdbf0a8 ipc: make 'layout' a string 2011-06-02 17:12:18 +02:00
Michael Stapelberg 97e45b9cfc Bugfix: RandR: Correctly assign focused workspaces to outputs
Fixes: #399
2011-05-29 14:39:41 +02:00
Michael Stapelberg 1fc15d270e Bugfix: rendering cache also needs to consider con->pixmap_recreated for borders 2011-05-29 13:20:41 +02:00
Michael Stapelberg 18ec15b0f9 x: fix race condition where the new event mask was not set directly after reparenting 2011-05-29 13:20:41 +02:00
Michael Stapelberg 8acea3d34c call tree_render() only after commands which require it
Saves one call of tree_render for exec, for example
2011-05-29 13:20:34 +02:00
Michael Stapelberg 446c9b7313 Bugfix: Set pixmap_recreated before rendering the decoration 2011-05-29 12:20:09 +02:00
Michael Stapelberg f680c8841f x: only re-render the tree in handle_normal_hints when they actually changed 2011-05-29 11:46:01 +02:00
Michael Stapelberg b49874dcb8 x: first create/render pixmap, then change window sizes (reduces flickering for new windows)
Especially in stacked cons.
2011-05-29 11:31:22 +02:00
Michael Stapelberg 7ae0c9c973 Bugfix: Check swallows before assignments when managing windows (Thanks julien)
Fixes #395 (empty containers on restart when assigned windows are visible)
2011-05-25 21:00:53 +02:00
Michael Stapelberg 7208d01048 remove unused code from manage.c 2011-05-25 20:47:47 +02:00
Michael Stapelberg 2c68c234ea Implement assignments for (named) workspaces, with '~' compatibility (floating) 2011-05-23 18:41:17 +02:00
Michael Stapelberg 272a86745e Bugfix: Free pixmaps when killing windows (Thanks Mike) 2011-05-22 23:32:59 +02:00
Michael Stapelberg 4c1392d8ab retab! cfgparse.l 2011-05-22 22:15:43 +02:00
Michael Stapelberg c23f3b45fc cfgparse.l: kill a few states by using the stack 2011-05-22 22:08:40 +02:00
Michael Stapelberg 1d6447187c cleanup cfgparse lexer/parser (ignore whitespace, solves conflicts) 2011-05-22 21:48:25 +02:00
Michael Stapelberg e27a8597d8 forgot to remove unused TOK_ATTACH token from lexer 2011-05-22 21:42:34 +02:00
Michael Stapelberg 08f64f011d cleanup cmdparse lexer/parser (ignore whitespace, solves conflicts) 2011-05-22 21:26:50 +02:00
Michael Stapelberg 03cc490f0e Bugfix: fix crash when disabling floating mode 2011-05-16 20:51:29 +02:00
Michael Stapelberg 5ae4620a24 Time Lord technology: for_window config directive to run arbitrary cmds
An example to set all XTerms floating:
    for_window [class="XTerm"] mode floating

To make all urxvts use a 1-pixel border:
    for_window [class="urxvt"] border 1pixel

A less useful, but rather funny example:
    for_window [title="x200: ~/work"] mode floating

The commands are not completely arbitrary. The commands above were tested,
others may need some fixing. Internally, windows are compared against your
criteria (class, title, …) when they are initially managed and whenever one of
the relevant values change. Then, the specified command is run *once* (per
window). It gets prefixed with a criteria to make it match only the specific
window that triggered it. So, if you configure "mode floating", i3 runs
something like '[id="8393923"] mode floating'.
2011-05-15 20:10:25 +02:00
Michael Stapelberg ca2e4199b5 Introduce HANDLE_EMPTY_MATCH macro to simplify command handlers in cmdparse.y 2011-05-15 19:43:35 +02:00
Michael Stapelberg d3e458bc78 Remove old code from randr.c and workspace.c 2011-05-14 22:38:19 +02:00
Michael Stapelberg 5db97dc473 Bugfix: Fix initialization / assignments when RandR is missing 2011-05-14 22:34:34 +02:00
Michael Stapelberg 3f45d3c447 re-implement assignments of workspace to specific outputs 2011-05-14 22:19:58 +02:00
Michael Stapelberg 443753bea6 x.c: disable some of the debug output 2011-05-14 20:04:34 +02:00
Michael Stapelberg 0bfab98a7f Correctly re-implement scrolling on window decorations
Got lost when refactoring the click handling in 24463718cc

Fixes: #390
2011-05-13 21:58:17 +02:00
Michael Stapelberg aea445b690 Bugfix: Attach new cons at the correct place when a floating con is focused (+test) (Thanks fernandotcl)
New containers were previously attached directly to the workspace instead of to
the previously focused place in the workspace (for example a stacked con).

Fixes: #376
2011-05-13 21:30:37 +02:00
Michael Stapelberg 3d2cd6abaa Fix kill command with trailing whitespace 2011-05-13 21:18:20 +02:00
Michael Stapelberg 167bdd26b7 Argument for 'kill' for killing a specific window (now default) or the whole client (+test)
Use 'kill window' to kill a specific window (for example only one specific
popup), use 'kill client' to kill the whole application (or X11 connection to
be specific).
2011-05-13 20:41:03 +02:00
Michael Stapelberg 44c2555e67 Bugfix: When focusing the next floating window, descend the CT_FLOATING_CON
makes t/35-floating-focus.t pass again
2011-05-13 19:53:19 +02:00
Michael Stapelberg 836a3ad615 Bugfix: set WM_STATE to WITHDRAWN when an app unmaps their window(s) (+test)
Fixes: #362
2011-05-13 17:04:55 +02:00
Michael Stapelberg 62e977102b Bugfix: Fix the WANT_QSTRING state 2011-05-13 17:03:15 +02:00
Michael Stapelberg b0e871e0cf Bugfix: Fix focus follows mouse for non-default layout cons (Thanks phnom)
Fixes: #361
2011-05-12 22:24:52 +02:00
Michael Stapelberg 6e32e6123d Bugfix: Ignore focus when attaching cons while restoring the layout
Fixes: #369
2011-05-12 07:22:17 +02:00
Michael Stapelberg 94646190aa Bugfix: Correct string/quoted string parsing for the commands exec, workspace, nop, restore and mark (Thanks SardemFF7)
Fixes: #380
2011-05-12 07:09:06 +02:00
Michael Stapelberg 2e75d934a4 Bugfix: Don’t append the --restart parameter on each restart (Thanks aniou)
Fixes: #384
2011-05-12 06:58:09 +02:00
Michael Stapelberg c62f70856f Bugfix: Don’t crash when dock clients set the urgency hint (+testcase) 2011-05-11 22:45:20 +02:00
Michael Stapelberg 4be3178d4d Bugfix: Don’t fill split cons etc. with client background color (fixes nested decoration rendering)
Fixes: #359
2011-05-11 22:01:09 +02:00
Michael Stapelberg 4da6fc7ba3 Bugfix: Restore border_style when restarting inplace (Thanks aniou)
Fixes #385.
2011-05-11 20:45:56 +02:00
Michael Stapelberg 9c05c18156 ipc: change border_style to human-readable string instead of enum value 2011-05-11 20:39:18 +02:00
Michael Stapelberg eb8ad348b2 Bugfix: Don’t run into an endless loop when killing con with children (Thanks mseed)
When a tabbed container had more than one child and at least the first one
supported WM_DELETE, i3 entered an endless loop when killing that tabbed
container. This was due to tree_close only sending WM_DELETE without actually
removing the child, while the loop in tree_close assumed that with every call
of tree_close one child would be removed.
2011-05-11 20:22:47 +02:00
Michael Stapelberg e73c171e0d Bugfix: assign BORDER_BOTTOM instead of BORDER_RIGHT (Thanks Jan) 2011-05-06 13:09:50 +02:00
Michael Stapelberg 1fe5c58764 cfgparse.y: define types (Thanks Merovius) 2011-05-05 21:58:28 +02:00
Michael Stapelberg bd73275771 re-indent cfgparse.y 2011-05-05 21:19:47 +02:00
Michael Stapelberg a075fd4ee2 cmdparse.y: set type on the tokens/non-terminals (Thanks Merovius) 2011-05-05 20:39:05 +02:00
Michael Stapelberg 3d1acd6c2f re-implement assigning windows to workspaces 2011-05-02 23:29:26 +02:00
Michael Stapelberg 7e51f626ef Bugfix: Before rendering, attach the con to its floating_con
Otherwise, the rendering will produce negative coordinates.
2011-05-02 11:06:13 +02:00
Michael Stapelberg b2754fd679 Bugfix: When re-assigning floating windows to a different output, use the last focused workspace, not the first 2011-05-02 11:05:50 +02:00
Michael Stapelberg 79323a0be0 Bugfix: Fix the client background rectangle calculation (Thanks Mike)
Really fixes #364.
2011-05-01 22:27:06 +02:00
Michael Stapelberg b401e08a5d Bugfix: For fullscreen cons, use a deco_height of 0 to correctly render the background color
This should fix #364.
2011-05-01 19:46:41 +02:00
Michael Stapelberg d28008aa63 Bugfix: Correctly render decorations in tabbed containers (don’t overlap)
This fixes a regression introduced in b644fb5f26.
2011-05-01 18:48:30 +02:00
Michael Stapelberg 8b21812bbd Bugfix: Add missing tree_render() when handling the urgency hint (Thanks mxf) 2011-04-30 00:37:03 +02:00
Michael Stapelberg a149283964 Fix unaligned memory access on sparc (Thanks David Coppa) 2011-04-28 21:44:29 +02:00
Michael Stapelberg 2c6508a6a3 remove useless checks, size_t != ssize_t :) 2011-04-28 20:24:16 +02:00
Michael Stapelberg 528f486eee Make code compatible with yajl 2.0 *and* 1.0 2011-04-27 19:52:53 +02:00
Michael Stapelberg 28b9ed6eb3 Bugfix: Ensure that all outputs have a ->con before handling disabled outputs (Thanks JimdiGriz)
Steps to reproduce:
• xrandr --output VGA1 --auto
• xrandr --output LVDS1 --off
2011-04-27 10:18:46 +02:00
Sardem FF7 8a40dc0011 Use XDG_RUNTIME_DIR when available
XDG_RUNTIME_DIR is the volatile runtime data dir provided by modern
session manager such as systemd
2011-04-26 18:39:11 +02:00
Michael Stapelberg 3721bcb868 Bugfix: Ignore EnterNotifies generated by UnmapNotifies
Actually, commit 1c5adc6c35 commented out code
without ever fixing it. I think this was responsible for the 'workspace
switching sometimes does not work' bug. My observations:

Had it again today and analyzed a log of it. Looks like after unmapping the
windows on one workspace (in my case: chromium, eclipse, urxvt, focus on
eclipse) we get UnmapNotify events for chromium and eclipse, but then we get an
EnterNotify for the terminal (due to unmapping the other windows and therefore
mapping the terminal under the cursor), only afterwards the UnmapNotify
follows.

So, there are two things wrong with that:

• We handle EnterNotifys for unmapped windows

• Unmapping windows sometimes works in a sequence, sometimes the sequence gets
  split. Not sure why (if unmapping can take longer for some windows or if our
  syncing is wrong -- but i checked the latter briefly and it looks correct).
  Maybe GrabServer helps?

• We don’t ignore EnterNotify events caused by UnmapNotifies. We used to, but
  then there was a different problem and we decided to solve the EnterNotify
  problem in another way, which actually never happened (commit
  1c5adc6c35).
2011-04-19 21:50:56 +02:00
Sardem FF7 cd6f93be3f Rename bind to bindcode
Also fallback when using just 'bind' to be backward-compatible
2011-04-18 23:52:45 +02:00
Michael Stapelberg 84b804cda6 x: Set pixmap as background window, saves a lot of CopyAreas 2011-04-18 21:10:50 +02:00
Michael Stapelberg 3d5af35fa4 Bugfix: Center floating windows with invalid coordinates on current ws 2011-04-18 19:36:10 +02:00
Michael Stapelberg f613df48d2 Bugfix: Check if a floating window’s coordinates are within a different workspace when managing (Thanks Merovius)
Fixes: #297
2011-04-18 19:28:03 +02:00
Michael Stapelberg 60532a90e7 Bugfix: Assign floating cons to correct workspace when moving between monitors (Thanks dothebart)
Fixes: #371
2011-04-18 18:44:39 +02:00
Michael Stapelberg 36583ec6ee Bugfix: When moving floating cons to other workspaces, attach them to the workspace 2011-04-18 18:44:18 +02:00
Michael Stapelberg 02acf426d3 Bugfix: Don’t set the layout when it’s default layout anyways
Fixes some nasty side-effects
2011-04-02 22:08:38 +02:00
Michael Stapelberg c3b4006f6b Rename new_container to workspace_layout 2011-04-02 21:49:35 +02:00
Simon Kampe 650eebc347 Implemented config key 'new_container' 2011-04-02 21:43:49 +02:00
Michael Stapelberg 21c7a69812 optimization: when moving floating windows, render/push only the floatingcon 2011-04-01 22:40:12 +02:00
Michael Stapelberg d8bf633e56 Bugfix: Flush the Xlib connection after creating cursors
Fixes a race condition where the cursors were created after we were already
using them.
2011-04-01 21:57:08 +02:00
Michael Stapelberg 26635a7595 x: skip creating pixmaps when the rect is actually invisible
This fixes a few X11 errors.
2011-04-01 21:54:45 +02:00
Michael Stapelberg 6419e42f6d bugfix: fix race condition where window titles were not correctly updated
Fixes: #351
2011-04-01 21:39:58 +02:00
Michael Stapelberg 57447112ba x: skip x_draw_decoration when con is not mapped
This commit makes workspace switching completely free of cache misses, so
decorations are not re-rendered when switching workspaces.
2011-04-01 20:41:08 +02:00
Michael Stapelberg b644fb5f26 x: recurse x_push_node in focus order. reduces flickering when switching workspaces 2011-04-01 20:40:32 +02:00
Michael Stapelberg 20b1fd4293 Skip FocusIn events with mode == NOTIFY_MODE_GRAB or NOTIFY_MODE_UNGRAB
According to the Xlib Programming Manual section 10.7.2 [1], these events are
generated when keyboard grabs activate/deactivate, while we are only interested
in focus changes which are done by other programs independend from the
keyboard.

[1] http://tronche.com/gui/x/xlib/events/input-focus/grab.html
2011-03-30 23:00:48 +02:00
Michael Stapelberg 4fd4e619ec little coding style fixes, fix compilation warning 2011-03-21 23:54:13 +01:00
Fernando Tarlá Cardoso Lemos f0f7cb7478 If the socket path isn't specified, write it to /tmp. 2011-03-21 23:49:39 +01:00
Michael Stapelberg 39ee97fd82 FREE() already nulls the pointer 2011-03-21 23:49:16 +01:00
Fernando Tarlá Cardoso Lemos 6d8784af98 Set the I3_SOCKET_PATH atom to the expanded path. 2011-03-21 23:46:03 +01:00
Michael Stapelberg 99ce340fea Focus cons when moving to a visible workspace on a different output (Thanks mseed)
Fixes: #355
2011-03-20 19:32:00 +01:00
Michael Stapelberg 67b37551d8 Bugfix: Fix switching workspaces on multi-monitor setups (Thanks mseed)
Fixes #356
2011-03-20 18:27:14 +01:00
Michael Stapelberg 38173749f8 Bugfix: Also invalidate caches of the following cons in a split con on cache miss (Thanks fernandotcl) 2011-03-20 18:17:18 +01:00
Michael Stapelberg b3ee50b184 Bugfix: Also update pixmaps when the position of the deco_rect has changed (Thanks fernandotcl) 2011-03-20 18:07:07 +01:00
Michael Stapelberg e913e519f2 refactor handlers.{c,h}: declare the handlers static, remove unnecessary parameters 2011-03-20 16:53:12 +01:00
Michael Stapelberg c130cefa93 Handle FocusIn events generated by clients and update decoration accordingly (Thanks mseed) 2011-03-20 16:26:36 +01:00
Michael Stapelberg 144deaaaf6 Remove debugging syncs 2011-03-20 14:29:48 +01:00
Michael Stapelberg b25477b15e Re-implement rendering to pixmaps (double-buffering) and caching decorations 2011-03-20 14:25:09 +01:00
Michael Stapelberg e835888a9e Bugfix: Actually re-attach dock clients when outputs get disabled (Thanks phnom)
Fixes: #348
2011-03-20 01:07:21 +01:00
Michael Stapelberg e9a9a46795 Bugfix: Don’t use the workspace where focus is for deleting workspaces when switching (Thanks mseed)
Fixes: #353
2011-03-19 23:19:42 +01:00
Michael Stapelberg 03ea7cea28 Bugfix: also invalidate focused_id when the to_focus window is not mapped
This fixes a bug where focus might not be set correctly when changing workspaces
2011-03-19 22:54:53 +01:00
Michael Stapelberg b342d387a8 Handle saved_configpath in get_config_path, fix memleak in current_configpath handling, update atoms after reloading (Thanks fernandotcl) 2011-03-19 22:26:15 +01:00
Michael Stapelberg 626c65b0d8 Bugfix: correctly store the config path for using it for I3_CONFIG_PATH later 2011-03-19 21:50:13 +01:00
Michael Stapelberg 9344b9790c Bugfix: fix null-pointer dereference when IPC is disabled (Thanks Merovius) 2011-03-19 21:37:27 +01:00
Michael Stapelberg 65a3259b3c Set the I3_SOCKET_PATH and I3_CONFIG_PATH atoms on the X11 root window 2011-03-19 21:20:38 +01:00
Michael Stapelberg 8b9aedd2bf Bugfix: When there’s nothing to focus, focus the root window (Thanks fernandotcl, ThePub) 2011-03-19 20:43:06 +01:00
Michael Stapelberg fd7e4b08f3 rendering: correctly draw background rect (Thanks phnom)
Fixes #347
2011-03-18 20:47:59 +01:00
Michael Stapelberg 3282bb4069 remove obsolete comment 2011-03-18 17:08:48 +01:00
Michael Stapelberg 82e286ed7c Only send WM_TAKE_FOCUS when the client supports it in the protocols atom
Fixes opening xterm, for example
2011-03-18 17:07:56 +01:00
Michael Stapelberg 0639a7d95b Make i3 compatible with the very latest xcb
This involves:
 • Compiling with xcb-util instead of xcb-{atom,aux} (they merged the libraries)
 • Not using xcb-{event,property} anymore (code removed upstream)
 • Not using the predefined WINDOW, CARDINEL, … atoms (removed upstream)
 • Using the new xcb_icccm_* data types/functions instead of just xcb_*
   (for example xcb_icccm_get_wm_hints instead of xcb_get_wm_hints)

Also I refactored the atoms to use x-macros.
2011-03-18 14:39:27 +01:00
Michael Stapelberg 36664c6289 Send WM_TAKE_FOCUS to clients when setting focus (fixes java swing problems) 2011-03-17 22:27:59 +01:00
Michael Stapelberg 65b05169d3 change the config parser to use default_orientation instead of new_container_orientation
It’s a shorter and probably more meaningful description as it is not
immediately clear what a container exactly is when first installing i3.
2011-03-17 17:55:53 +01:00
Michael Stapelberg eeb5bdd66f cleanup code of workspace rotation on output changes 2011-03-17 17:53:56 +01:00
Simon Kampe 2f992f5c0e Added config key for default orientation of containers (new_container_orientation) and added support in randr.c for automatically changing the orientation when user does a xrandr rotate. 2011-03-17 17:43:35 +01:00
Michael Stapelberg b484ed5f9d When making floating cons tiling, re-insert next to the next focused *tiling* con (Thanks mseed)
Fixes: #337 and #350
2011-03-14 23:50:29 +01:00
Michael Stapelberg 76e978bfb3 fix small warnings when compiling with DEBUG=0 2011-03-14 23:17:52 +01:00
Michael Stapelberg 7100d32971 cmdparse: correctly parse con_id/id (fixes warning) 2011-03-14 23:14:40 +01:00
Michael Stapelberg b21137b2c0 cmdparse: expect 4 shift/reduce conflicts 2011-03-14 23:08:33 +01:00
Michael Stapelberg f900fab453 cmdparse: don’t allow empty operations 2011-03-14 23:03:25 +01:00
Michael Stapelberg 627683c053 cmdparse: don’t allow empty commands 2011-03-14 23:03:13 +01:00
Michael Stapelberg 8928823e07 remove usless 'operation' token, already handled by 'operation optwhitespace' 2011-03-14 22:29:07 +01:00
Michael Stapelberg 18215445f8 remove unused current_bindings (left-over from cfgparse.y) 2011-03-14 22:28:55 +01:00
Michael Stapelberg 89ef41dadf re-implement support for MappingNotifys 2011-03-14 17:20:04 +01:00
Michael Stapelberg 01365edb30 ewmh: bump copyright 2011-03-14 17:15:18 +01:00
Michael Stapelberg fb9978b975 ewmh: add comment to describe why we count 2011-03-14 17:15:04 +01:00
Fernando Tarlá Cardoso Lemos c0563af3e2 Bring back some more EWMH support. 2011-03-14 17:11:33 +01:00
Fernando Tarlá Cardoso Lemos b4e3dfd76b Add the "created" parameter to workspace_get.
If created is not NULL, *created is set to whether or not the
workspace has been just created.
2011-03-14 17:07:53 +01:00
Fernando Tarlá Cardoso Lemos b8a716c370 Reload the same config file specified in the command line.
Fixes: #346
2011-03-14 16:48:45 +01:00
Michael Stapelberg cdeb49127f Bugfix: restore focus to the correct window when a non-focused window gets destroyed (+testcase) 2011-03-14 16:34:35 +01:00
Michael Stapelberg f162e7efaa refactor font caching to just save the ID instead of mainting a cache with pattern→id-mapping 2011-03-10 23:20:17 +01:00
Simon Kampe 6e4a2b0b96 Fallback fonts for when requesting a erronous font with load_font (e.g. user have specified a font which does not exist in the config file). 2011-03-10 21:46:31 +01:00
Michael Stapelberg 86637d2e07 Bugfix: Make level up a noop during fullscreen mode (+testcase) (Thanks dothebart)
Fixes #341
2011-03-09 18:37:05 +01:00
Michael Stapelberg 74b90cd83f Bugfix: Send WM_DELETE / kill window the right way (Thanks dothebart)
Fixes #336
2011-03-09 18:08:26 +01:00
Michael Stapelberg 0a24057241 When leaving fullscreen, set focus to con which was opened during fullscreen (+testcase) (Thanks dothebart) 2011-03-07 00:06:27 +01:00
Michael Stapelberg 287d7f9527 Bugfix: Don’t focus new cons when there is a fullscreen con (Thanks dothebart)
Also, remove the focus_it parameter from tree_open_con, it makes more sense to
call con_focus outside of the function.
2011-03-06 23:26:02 +01:00
Michael Stapelberg 8ce5f2a21b Bugfix: Fix crash with transient dock clients caused by 7154fecbb 2011-03-06 22:02:02 +01:00
Michael Stapelberg c17b3b7560 remove left-over xcb_aux_sync (debugging code) 2011-03-06 21:56:15 +01:00
Michael Stapelberg b0b195318c rendering: bugfix: stack child windows of stacked/tabbed cons according to their focus
fixes focusing the wrong window after closing a con
2011-03-06 21:49:17 +01:00
Michael Stapelberg 4f26316aaa x: disable all events while re-stacking windows, prevents unwanted EnterNotifys 2011-03-06 21:48:49 +01:00
Michael Stapelberg 0689f6d8f1 Bugfix: use tree_render() instead of x_push_changes() to re-render and update the stack 2011-03-06 20:45:03 +01:00
Michael Stapelberg 7154fecbbf Implement the popup_during_fullscreen option, set default to leave_fullscreen
Fixes #333
2011-03-06 15:46:06 +01:00
Michael Stapelberg 51ff0f80a6 Obey minimum size when resizing floating windows
Fixes #285
2011-03-06 14:15:46 +01:00
Michael Stapelberg 1891a385ad Bugfix: also stop searching for resize cons when reaching a floatingcon (Thanks julien) 2011-03-06 13:35:07 +01:00
Michael Stapelberg 4514146ed9 Use the combined geometry of children when setting a split container to floating (+testcase) (Thanks mseed)
Fixes #332
2011-03-06 02:39:15 +01:00
Michael Stapelberg 88ab66e742 Bugfix: don’t focus dock clients with new click handling code (Thanks mseed) 2011-03-06 02:06:05 +01:00
Michael Stapelberg 24463718cc refactor the click handling completely
Also re-implements floating modifier on tiling cons.

Fixes: #288 and a lot of headache :)
2011-03-05 20:23:29 +01:00
Michael Stapelberg 0a2ee1d2aa Bugfix: Focus workspace after closing one of multiple dock clients (+testcase) (Thanks mseed) 2011-03-04 15:21:18 +01:00
Michael Stapelberg f6a21994bf Re-implement focus follows mouse for outputs
That is, moving your mouse pointer to a different workspace which does not have
any windows on it yet will correctly update the focus.
2011-03-03 16:36:18 +01:00
Michael Stapelberg caa1ac1a9f Use the original geometry for floating windows 2011-03-03 16:22:22 +01:00
Michael Stapelberg b484b9ab32 Don’t create floating containers from whole workspaces when they are empty (Thanks mseed)
This fixes #327
2011-03-03 14:55:02 +01:00
Michael Stapelberg a038d2674b Bugfix: 'level up' needs to stop at the workspace con + testcase (Thanks mseed) 2011-03-03 14:30:13 +01:00
Michael Stapelberg 62362a464d fix invalid memory access in xcb_reply_contains_atom (Thanks ys) 2011-03-03 14:14:35 +01:00
Michael Stapelberg 77640da9e7 Bugfix: don’t focus the dockarea when closing a dock client 2011-03-03 14:03:06 +01:00
Michael Stapelberg e0647b7fc2 Bugfix: don’t focus dock clients (Thanks mseed, mist)
Fixes #321 and #323
2011-03-03 13:59:42 +01:00
Michael Stapelberg 33c2b4e582 Bugfix: Correctly fix the percent values for resizing when making a floating con tiling (Thanks mseed) (+testcase) 2011-02-28 23:59:56 +01:00
Michael Stapelberg b595ff05c5 Fix regression: Don’t add floating nodes twice when restoring layout (+testcase) 2011-02-28 20:44:23 +01:00
Michael Stapelberg d80105103c Bugfix: Re-attach floating cons to the right container (Thanks mseed)
This fixes #315.
2011-02-28 17:23:50 +01:00
Fernando Tarlá Cardoso Lemos beaa85ceb9 Don't leak this descriptor (thanks dothebart).
Note that fclose closes the file descriptor frees the stream.
2011-02-28 16:49:10 +01:00
Fernando Tarlá Cardoso Lemos 269d360f30 Some assertions to make the static analyzer happy.
Assertions give hints to the static analyzer about code paths
where we make assumptions. Used the Clang Static Analyzer.
2011-02-28 16:49:03 +01:00
Fernando Tarlá Cardoso Lemos f4ec0bceff Very minor issues found with statical analysis.
The Clang Static Analyzer uncovered those issues:

- The variable "changed" in handlers.c is written to, but it's
  never read since that specific write, so the write is not
  necessary.

- In util.c, "tail" may be NULL. In that case, we shouldn't pass
  it to strlen because strlen's behavior is not defined when s is
  NULL.

- In util.c, "write_index" is incremented twice. It's never used
  anymore after being incremented once, so the second increment is
  not necessary.
2011-02-28 16:48:22 +01:00
Michael Stapelberg ffc71859a3 Implement support for top/bottom dock clients (according to _NET_WM_STRUT_PARTIAL or requested position) 2011-02-21 14:27:32 +01:00
Michael Stapelberg b6f81fe43c Bugfix: restore the original width/height with X11 border when restarting (Thanks Merovius) 2011-02-21 03:13:27 +01:00
Michael Stapelberg f34b045619 Fix dock client handling for inplace restarts 2011-02-21 03:01:55 +01:00
Michael Stapelberg 3dfe5c8a9a bugfix: fix clicking on dock clients (Thanks mseed) 2011-02-21 01:58:57 +01:00
Michael Stapelberg 9719b21243 refactor some places to use output_get_content() 2011-02-21 01:55:36 +01:00
Michael Stapelberg a92b9dca73 Bugfix: fix disabling RandR outputs 2011-02-21 01:43:39 +01:00
Michael Stapelberg 35e79c87c8 Place dock clients on the output corresponding to their geometry request 2011-02-21 01:28:29 +01:00
Michael Stapelberg a33d869885 Bugfix: Correctly open workspaces on additional outputs 2011-02-21 01:12:22 +01:00
Michael Stapelberg 6b272fea55 Bugfix: in get_workspaces, only consider the CT_CON, not the CT_DOCKAREAs (Thanks fernandotcl) 2011-02-21 00:54:29 +01:00
Michael Stapelberg 272ab840c7 Fix fullscreen mode with dock clients 2011-02-21 00:40:35 +01:00
Michael Stapelberg 9a0bc77baf bugfix: dock clients cannot be floating 2011-02-21 00:23:07 +01:00
Michael Stapelberg 7f89c71689 Implement dock mode, update testsuite
Currently, dock clients are only possible at the top.
2011-02-20 23:43:03 +01:00
Michael Stapelberg c5ab16c00d same fix, but for moving (search above the current con when moving is not possible in this direction) 2011-02-19 20:11:47 +01:00
Michael Stapelberg 86500c5b88 Skip containers which got only one child when looking for the next/previous one to focus 2011-02-19 19:50:09 +01:00
Michael Stapelberg 6a6746b967 revert the replacement of a single h/v-split with its child container
Makes more problems than it creates. Will use a different fix suggested by
Merovius.
2011-02-19 18:30:26 +01:00
Michael Stapelberg 53d9072ca7 implement TAILQ_SWAP (only for consecutive elements, order relevant) and use it 2011-02-15 02:21:23 +01:00
Michael Stapelberg 834f4d7bc2 add missing function documentation 2011-02-14 23:17:30 +01:00
Michael Stapelberg 26a416e016 refactor tree_move() into src/move.c, change config (!), change testcase
Due to lots of cases which were added and added to tree_move(), the function
was not really easy to understand. For this refactoring, I wrote tree_move()
from scratch, thinking about (hopefully) all cases. The testsuite still passes.

The move command also has different parameters now. Instead of the hard to
understand 'before v' stuff, we use 'move [left|right|up|down]'.
2011-02-14 23:05:20 +01:00
Michael Stapelberg 28dd226259 refactor code for removing children from a con
Let’s see how this callback stuff will work out. If it doesn’t work out well,
we will remove it.
2011-02-14 18:08:36 +01:00
Michael Stapelberg a5e075c154 Automatically close empty parent cons when making their last child floating (Thanks mseed)
This fixes #313
2011-02-14 16:43:41 +01:00
Michael Stapelberg b800555161 Bugfix: check ->layout, not ->type for L_STACKED 2011-02-14 16:35:48 +01:00
Michael Stapelberg 305eac0e71 Bugfix: Correctly check asprintf() return value 2011-02-14 16:33:42 +01:00
Fernando Tarlá Cardoso Lemos 9cf48f17bb Fix libxcursor -> xcb cursors fallback. 2011-02-06 17:47:28 +01:00
Michael Stapelberg 07381ccb7b fix a rendering problem for split cons inside tabbed cons (Thanks julien)
This fixes #280.
2011-02-02 17:56:29 +01:00
Michael Stapelberg 4d0106b00f bugfix: don’t crash when moving windows out of a floating con (Thanks mseed) 2011-02-01 17:53:15 +01:00
Michael Stapelberg d855bea215 Bugfix: Correctly focus con when moving to another workspace (Thanks mseed)
This fixes #310.
2011-02-01 17:17:50 +01:00
Michael Stapelberg 97ab44b3d8 disable workspace-level move operations (not yet implemented) (Thanks mseed) 2011-02-01 16:59:02 +01:00
Michael Stapelberg 9b01b1a7a6 Bugfix: When the container which was just closed is focused, we *do* need to focus another one (Thanks mseed) 2011-02-01 16:42:59 +01:00
Michael Stapelberg dad7c0da00 Don’t create a split container if no other cons are on a workspace (Thanks mseed)
This fixes #306.
2011-02-01 16:08:47 +01:00
Michael Stapelberg 0238ce3c73 fix some compiler warnings 2011-02-01 15:43:59 +01:00
Fernando Tarlá Cardoso Lemos 8f4b9ddaa4 Fix the choice of the right containers for resizing.
Also fixes #311, which was an assertion failure that uncovered
this problem. Thanks mseed, Merovius.
2011-01-30 18:52:32 +01:00
Fernando Tarlá Cardoso Lemos ac8fb2399d Don't mess with sizes when moving to other ws. 2011-01-29 15:19:41 +01:00
Fernando Tarlá Cardoso Lemos 8be40932f2 Fix assertion when moving out of a floating container. 2011-01-28 01:25:06 +01:00
Fernando Tarlá Cardoso Lemos f465b3c11d Don't mess with the focus if we're not killing.
If we're not killing the mapped window and we're not killing the
parent window either in tree_close, then there's no reason to try
to change the focus. This fixes focus issues when moving a
container around another container (move up, left, bottom, right).
2011-01-28 01:25:03 +01:00
Michael Stapelberg 5b6ef3e665 make the sighandler handle SIGABRT 2011-01-28 00:47:49 +01:00
Michael Stapelberg f395c141c8 bugfix: initialize root variable earlier 2011-01-28 00:42:55 +01:00
Michael Stapelberg 7b01bc5eb7 Bugfix: use the global root variable, don’t get the first one (Thanks quaec)
The case of an X11 server having multiple displays is handled correctly by the
code in src/mainx.c. However, due to some functions not being correctly
refactored and still getting the first screen (and also the first root window)
from the XCB connection, i3 was operating on the wrong root window.
2011-01-28 00:41:53 +01:00
Michael Stapelberg 79bbde8766 add a flag to disable the signalhandler 2011-01-28 00:31:26 +01:00
Fernando Tarlá Cardoso Lemos b29af954f6 Don't mess with the percentages in tree_flatten. 2011-01-28 00:12:26 +01:00
Fernando Tarlá Cardoso Lemos 5f4123f842 Fix some resizing issues (thanks mseed). 2011-01-27 23:42:37 +01:00
Michael Stapelberg 676afce540 bugfix: correctly move cons out of floating cons when the workspace has no other tiling cons (Thanks mseed) 2011-01-27 16:51:41 +01:00
Michael Stapelberg 334e41daa4 bugfix: don’t assume a workspace always has tiling cons when focusing (Thanks mseed) 2011-01-27 16:51:16 +01:00
Michael Stapelberg 3e08ceaff9 bugfix: resizing problem when resizing vertically on the top border (Thanks julien) 2011-01-27 16:26:19 +01:00
Michael Stapelberg 3383437705 refactor some places to use con_descend_focused instead of duplicating code 2011-01-27 16:09:14 +01:00
Michael Stapelberg f462a9a215 re-insert floating cons next to the currently focused con of the appropriate workspace 2011-01-27 16:04:17 +01:00
Michael Stapelberg 2f5d111936 when re-inserting a floating con, start with a more fair percent value 2011-01-27 15:53:14 +01:00
Michael Stapelberg fe851b85f0 RandR: respect primary output 2011-01-27 15:40:02 +01:00
Fernando Tarlá Cardoso Lemos 432563d6e7 Fix the percentages when moving containers. 2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos 07eb20851f Fix floating mode according to the new requirements.
At all times any given non-leaf container should have the sum of
the percentages of its children == 1.0, otherwise we'll crash on
an assertion failure.
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos 568cafd4ec Fix the resize algorithm I broke earlier.
The reason it was broken was that it was ok for the sum of the
percentages to be something other than 1.0. Now this is no longer
the case, the sum of the percentages must always be 1.0 or an
assertion will fail when we render the containers.
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos bc82fc7e9f This parameter is no longer needed.
The algorithm is now always the same, doesn't matter if we're
adding or removing a container to/from its parent.
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos 45227fba54 A new logic to calculate the percentages.
It's slower, but this way we make sure that the resulting
percentages *ALWAYS* sum up to 1.0 (or as close to that as we get
with double math).
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos a93f4643ec Only fix the percentages after we insert the container.
This is what floating.c does and it allows us to unify the logic that
calculates those percentages.
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos 89917976c7 Crash when we get the percentages wrong.
Better to crash with an assertion than to get into an infinite loop.
We cold work around this, but there's a bug here and it's not a
rounding bug, so it's better not to conceal it.
2011-01-27 13:00:14 +01:00
Fernando Tarlá Cardoso Lemos 485555ef72 Round up as well if needed (thanks Merovius). 2011-01-23 13:21:33 +01:00
Michael Stapelberg d9bfd8843f Bugfix: fix restoring the orientation (Thanks Merovius/fernandotcl) 2011-01-21 22:58:22 +01:00
Michael Stapelberg ad95d5bb1f bugfix: you can’t unfullscreen workspaces (Thanks Merovius) 2011-01-21 22:09:04 +01:00
Michael Stapelberg cbf4fcb9b5 Bugfix: Fix focus problems when switching workspaces by pushing the window stack before mapping 2011-01-21 21:49:56 +01:00
Michael Stapelberg 81ff1f976d Bugfix: Don’t send fake configure notify with not yet rendered rect for floating windows
This fixes a bug where opening the Xpdf find dialog when Xpdf is in fullscreen
mode would crash Xpdf due to a zero-width and zero-height ConfigureNotify rect.
2011-01-21 21:01:02 +01:00
Michael Stapelberg 1fecbb3e5a Bugfix: also close empty split containers when the clients are moved away (Thanks mseed)
Also update the testcase (which used only 'kill' before).
2011-01-20 10:09:43 +01:00
Michael Stapelberg 3fe4146e24 Bugfix: fix crash in tree_flatten (Thanks mseed) 2011-01-19 09:31:31 +01:00
Michael Stapelberg 0eb5eb34cd When in stacking mode with only one child, respect border styles 1pixel and none (Thanks Merovius) 2011-01-17 14:38:16 +01:00
Michael Stapelberg ae4331113e re-implement xkb support for detecting keyboard layout changes 2011-01-17 14:27:49 +01:00
Michael Stapelberg d6d4c962f4 Bugfix: Call mark_unmapped() on floating nodes aswell (Thanks mseed)
This fixes #292.
2011-01-17 14:11:56 +01:00
Axel Wagner 92a038dd25 Save environment-variable AFTER reading the configfile 2011-01-12 10:16:11 +01:00
Axel Wagner 4caf85aa0b Use I3SOCK-environment-variable 2011-01-12 10:15:48 +01:00
Michael Stapelberg cd2ee61ee8 fix some memory leaks when user passes command line arguments twice (Thanks Tiago) 2011-01-12 10:12:24 +01:00
Michael Stapelberg a6f0dcd250 Fix switching to a workspace on a different output 2011-01-08 12:03:03 +01:00
Michael Stapelberg 83f6e445a0 Bugfix: Don’t use ->old_parent for floating cons (Thanks eelvex)
Instead, we attach them to their workspace when toggling back to tiling. This
makes more sense; afterall, floating clients are always directly below a
CT_WORKSPACE container.
2011-01-08 00:44:03 +01:00
Michael Stapelberg 0ea15ed962 fix a problem with workspace switching when the focus got to the target workspace
This could explain some strange effects where workspaces would just stay blank.
We’ll see.
2011-01-08 00:38:10 +01:00
Michael Stapelberg 54b9549713 Bugfix: Look for cons to focus *starting* at the ws, not beneath the ws (Thanks mseed)
This should fix #286.
2011-01-08 00:10:49 +01:00
Michael Stapelberg e4bb6d859e Bugfix: Correctly maintain focus when setting a workspace to floating 2011-01-08 00:10:30 +01:00
Michael Stapelberg b660769fe0 Bugfix: Correctly move to other workspaces when a floating window is focused on the target ws (Thanks mseed) 2011-01-07 23:56:32 +01:00
Michael Stapelberg 115462f103 Implement tree flattening to automatically solve situations of redundant chains of split containers
This should fix the move problems. See comment of tree_flatten() for a little
example.
2011-01-07 22:21:41 +01:00
Michael Stapelberg 228b5c51ff change many LOG/printf messages to use DLOG 2011-01-07 20:58:58 +01:00
Michael Stapelberg 186d2c7bfa ipc: change 'orientation' to human readable string instead of raw integer value 2011-01-07 20:48:01 +01:00
Michael Stapelberg 5ccd7b01e7 Bugfix: fix fullscreen mode for floating windows 2011-01-07 02:50:35 +01:00
Michael Stapelberg 55b6d31e4a Bugfix: randr: Don’t close container if it was not initialized before 2011-01-06 14:35:04 +01:00
Michael Stapelberg 2312187439 RandR: use the next unused workspace instead of fixed counting 2011-01-05 00:26:23 +01:00
Michael Stapelberg f73c02ce92 Also initialize output->con when using neither RandR nor Xinerama 2011-01-05 00:19:51 +01:00
Michael Stapelberg 5098e45f23 Re-Implement support for RandR changes 2011-01-05 00:16:10 +01:00
Michael Stapelberg f54ce1ddda retab! randr.c 2011-01-04 22:51:42 +01:00
Michael Stapelberg 1fb9b7c431 Bugfix: Correctly change focus after closing floating containers (Thanks litemotiv!) 2011-01-04 22:40:05 +01:00
Michael Stapelberg 0416be18df fix memleak: free struct Window members 2011-01-04 22:39:45 +01:00
Michael Stapelberg bf2c18cc33 fix memleak: free X state structure 2011-01-04 22:39:24 +01:00
Michael Stapelberg 545566e6ba use sstrdup() instead of strdup() 2011-01-04 22:39:13 +01:00
Michael Stapelberg 80ecd157f6 fix memleak: free con->name before overwriting it 2011-01-04 22:38:33 +01:00
Michael Stapelberg bdbda20293 cmdparse: free strings 2011-01-04 22:37:50 +01:00
Michael Stapelberg fa44383cc6 fix small memory leak (unused ->name) 2011-01-04 22:15:52 +01:00
Michael Stapelberg 9713419327 Bugfix: Also change focus when the killed container was focused (Thanks fernandotcl) 2011-01-02 18:08:45 +01:00
Axel Wagner aa422c07c4 Add forgetful restart to sighandler 2010-12-31 19:36:35 +01:00
Axel Wagner 6ec468ba1e Retab sighandler.c 2010-12-31 19:36:32 +01:00
Axel Wagner fb6d117c42 Port sighandler to tree-branch 2010-12-31 19:36:29 +01:00
Michael Stapelberg 2d05c3a37d Fix dragging floating containers / click handling 2010-12-31 01:38:17 +01:00
Michael Stapelberg daf00a932f For floating mode on workspace level, create a container around the content (Thanks Merovius)
Like when setting a workspace to stacked, we need to create a new container
around the content and set *that* to floating.
2010-12-30 23:09:18 +01:00
Michael Stapelberg 50914e0483 Bugfix: Correctly change focus when closing a split-container
The problem was i3 leaving an invalid focus pointer valid (after killing the
container) because the container itself is not mapped (if it has no x11 window,
for example split containers).
2010-12-30 23:01:58 +01:00
Michael Stapelberg f65e4f5b16 Bugfix: Don’t redistribute resize percentage values when closing floating (!) windows (Thanks Merovius) (+testcase) 2010-12-30 02:39:14 +01:00
Michael Stapelberg 307c59bde6 Bugfix: Fix closing windows in tabbed mode with border_style == 1pixel / none 2010-12-28 19:54:56 +01:00
Michael Stapelberg 028f7d2ca7 Fix resize handling on click on borders (did not correctly use orientation) 2010-12-28 16:26:42 +01:00
Michael Stapelberg d184587959 Bugfix: Don’t focus next window if the window was not mapped at the moment (on a different ws) 2010-12-28 02:27:11 +01:00
Michael Stapelberg dc3c633ee4 Bugfix: store and properly load workspace order when restarting 2010-12-27 22:28:59 +01:00
Fernando Tarlá Cardoso Lemos c88c3e3ab2 Default to a file in /tmp for the restart state.
The file is now created in /tmp using the process PID and the
username of the user running i3. The restart state file is only
loaded when restarting (the --restart option is appended to the
command line prior to the restart). That means that renaming the
old state file with the ".old" extension is no longer needed.

This "--restart" switch is supposed to be only used by i3. The
"-L" switch can be used to load a layout (and not delete it
afterwards). We unlink the state file after we load it so that
we don't keep cruft in /tmp or try to restart from an old config
file if restart_state is set.
2010-12-27 13:33:03 +01:00
Fernando Tarlá Cardoso Lemos 68f906f278 util.c is the proper place for those functions. 2010-12-27 13:28:17 +01:00
Fernando Tarlá Cardoso Lemos 3669bcbd5f Remove some commented out code. 2010-12-27 13:27:14 +01:00
Fernando Tarlá Cardoso Lemos a1dd74da5a Implement default border styles (thanks litemotiv). 2010-12-27 13:10:45 +01:00
Michael Stapelberg 41eb810531 Bugfix: Don’t update focus when container is not mapped 2010-12-11 17:07:20 +01:00
Michael Stapelberg 8d5421e6a4 Bugfix: Invalidate focused_id to correctly focus new windows with the same ID 2010-12-11 17:03:53 +01:00
Fernando Tarlá Cardoso Lemos d046fa446d Fix possible rounding errors. 2010-11-30 13:59:34 +01:00
Michael Stapelberg 3412e12602 xinerama.c: fix indention 2010-11-29 22:35:46 +01:00
Michael Stapelberg a05b185701 xcb.c: fix indenting 2010-11-29 22:35:07 +01:00
Michael Stapelberg 1a40641462 workspace.{c,h}: remove obsolete code 2010-11-29 22:32:19 +01:00
Michael Stapelberg 5625a2f17f log.c: fix indenting 2010-11-29 22:28:23 +01:00
Michael Stapelberg 38b231b848 handlers.c: remove obsolete code 2010-11-29 22:25:55 +01:00
Michael Stapelberg 529bdf833f floating.c: remove obsolete code, fix indenting 2010-11-29 22:23:49 +01:00
Fernando Tarlá Cardoso Lemos 371ec037b8 Fix click to focus. 2010-11-29 22:09:05 +01:00
Michael Stapelberg b0e41cb0a2 Bugfix: Don’t attach floating clients to 'nodes' when restoring (Thanks EelVex) 2010-11-29 21:46:00 +01:00
Michael Stapelberg 0f0d01336b Bugfix: Correctly attach floating Cons to a different workspace, extend testcase 2010-11-29 20:39:56 +01:00
Michael Stapelberg ad825913b4 Bugfix: Fix crash when moving a floating Con to a different workspace, add testcase (Thanks EelVex) 2010-11-29 20:20:44 +01:00
Michael Stapelberg b0068de3d7 Bugfix: Transfer 'percent' factor when splitting, add testcase for resizing 2010-11-29 11:24:12 +01:00
Michael Stapelberg a0cd3c2bab Include 'percent' in tree JSON, use C-locale when dumping, update testcase 2010-11-29 11:10:17 +01:00
Michael Stapelberg ee45c92564 Implement resizing (still buggy)
Committing basic resizing functionality. We need testcases for the bugs and
then eliminate them.
2010-11-29 10:56:16 +01:00
Michael Stapelberg a86d8ab329 use con_num_children() 2010-11-28 22:45:39 +01:00
Michael Stapelberg 85b7e60bac Bugfix: Use separate child_mapped instead of checking state->initial (makes t/02-fullscreen.t pass)
This is necessary for windows which are mapped later, for example when there is
a fullscreen window in front of everything.
2010-11-28 22:09:26 +01:00
Michael Stapelberg 17caaf1159 Correctly update the _NET_WM_STATE hint when *not* going into fullscreen (when already in fullscreen) 2010-11-28 22:07:54 +01:00
Michael Stapelberg 49308d5026 Bugfix: don’t update focus when moving mouse over stacked/tabbed decorations (Thanks fernandotcl) 2010-11-28 21:07:08 +01:00
Michael Stapelberg 61e3415ddc Bugfix: Add deco_height to bsr.y (to configure the floatingcon correctly). Fixes t/12-floating-resize.t 2010-11-28 20:43:35 +01:00
Michael Stapelberg 2dba7ec1ec Bugfix for the last commit (broke some moving situations), update testcase 2010-11-28 20:15:47 +01:00
Michael Stapelberg 780b0ddbbc look & feel: when moving, descend if the container in target direction is a split-container 2010-11-28 18:35:11 +01:00
Michael Stapelberg 4fcd2f6e7e Bugfix: Fix focus when moving Cons
When having two v-splits on a horizontal desktop:
----------------
|  t1   |  t3  |
|-------|------|
|  t2   |  t4  |
----------------
…focus is on t2, and you move it into the right v-split (move after h), the
focus was not properly updated. That is, inside the right v-split, focus was
correct, but the workspace focus was still pointing to the left v-split.
2010-11-28 18:05:53 +01:00
Michael Stapelberg 4f1260ffe8 Also store/load window_rect when restarting 2010-11-28 17:20:29 +01:00
Michael Stapelberg 871da48b56 Bugfix: Only set to_focus when focused is actually 1 2010-11-28 17:20:16 +01:00
Michael Stapelberg 511cbec49b look and feel: when moving a Con is not possible, split a workspace level
This allows you to open three cons, then move the last one to the right (like
in previous i3 releases).
2010-11-28 14:45:14 +01:00
Michael Stapelberg 81044a7104 Correctly restore focus when restarting (Thanks fernandotcl) 2010-11-28 14:27:44 +01:00
Michael Stapelberg f7fff5cec1 update indenting of src/util.c 2010-11-28 14:14:34 +01:00
Michael Stapelberg 32cc7134aa re-enable ipc_shutdown() when restarting 2010-11-28 14:11:44 +01:00
Michael Stapelberg ab8400fff9 Bugfix: Use setsid() to avoid SIGINT for child processes 2010-11-28 14:03:43 +01:00
Michael Stapelberg 02b786509b Upon ConfigureRequests, send a generated ConfigureNotify (Thanks fernandotcl)
This fixes problems with GVim in stacking mode for example.
2010-11-28 13:19:49 +01:00
Michael Stapelberg d60e8c56dc little style fixes, add vim modeline 2010-11-28 13:02:29 +01:00
Fernando Tarlá Cardoso Lemos 69fc6449dc libXcursor support (themed cursors). 2010-11-28 13:01:45 +01:00
Michael Stapelberg 3bab222aa7 Bugfix: Re-attach windows in correct order when switching layout (Thanks fernandotcl) 2010-11-28 01:51:16 +01:00
Michael Stapelberg d0de3f403d Bugfix: Restore focus after changing layout (Thanks fernandotcl) 2010-11-28 01:39:47 +01:00
Michael Stapelberg 2c157283ea fix third argument to strncat(), use smalloc(), use strlen(".old")+1 2010-11-28 01:22:10 +01:00
Fernando Tarlá Cardoso Lemos 0a17fe973c Make the restart path configurable. 2010-11-28 01:18:10 +01:00
Michael Stapelberg 622b51a1ea Fix switching containers by moving the mouse over their decorations when in the same container 2010-11-28 01:13:18 +01:00
Michael Stapelberg 6fe0e58a64 Bugfix: Also render decorations of nearby cons when getting an ExposeEvent (Thanks fernandotcl) 2010-11-28 00:52:24 +01:00
Michael Stapelberg 0cfebcb5b6 remove some debug messages 2010-11-27 18:05:45 +01:00
Michael Stapelberg 2c3e5dbc65 Bugfix: unmap windows in a separate step to avoid focus problems with fullscreen windows
This fixes an ugly bug with Adobe Flash in fullscreen mode, for example on
YouTube. See comments in the diff for some explanation.
2010-11-27 17:45:23 +01:00
Michael Stapelberg d47a1edf22 Bugfix: configure windows before mapping, correctly store window_rect instead of rect 2010-11-27 16:44:45 +01:00
Michael Stapelberg 3f3fa08b15 more debug for ClientMessages 2010-11-27 16:44:32 +01:00
Michael Stapelberg 6431d3d187 fix indention 2010-11-27 16:44:20 +01:00
Fernando Tarlá Cardoso Lemos 1d52bf179b Run the autostart commands. 2010-11-26 23:30:27 +01:00
Fernando Tarlá Cardoso Lemos 2faac65237 Always add to the focus list, fixes crash. 2010-11-26 23:26:53 +01:00
Michael Stapelberg 77d0d42ed2 look and feel: create split container when switching workspace layout
Quote from the source:
  When the container type is CT_WORKSPACE, the user wants to change the
  whole workspace into stacked/tabbed mode. To do this and still allow
  intuitive operations (like level-up and then opening a new window), we
  need to create a new split container. */
2010-11-26 23:08:12 +01:00
Michael Stapelberg c3981e12d3 Bugfix: use bufcopy instead of buf (Thanks fernando) 2010-11-26 22:38:05 +01:00
Michael Stapelberg 65bd71b213 remove some obsolete code 2010-11-26 22:15:09 +01:00
Michael Stapelberg b2db9ac797 Bugfix: always reset state->initial to false, not only for different stacking order
As initial may be set to true again after initializing the window, we need to
ensure that it is properly cleared. Otherwise, this leads to ghost windows when
unmapping (such as the Xpdf about dialog) due to i3 issuing MapWindow after an
Unmap happened but before i3 actually received/handled the UnmapNotify.
2010-11-26 20:15:08 +01:00
Michael Stapelberg 97bc8f4b86 Bugfix: Don’t draw decorations of CT_FLOATING_CONs 2010-11-26 19:24:14 +01:00
Michael Stapelberg db3002fce0 Implement click on stack/tab decoration to focus 2010-11-26 18:57:15 +01:00
Michael Stapelberg df7788386d re-indent click function 2010-11-26 18:48:27 +01:00
Michael Stapelberg 962fe075b9 Bugfix: Upon ExposEvents, redraw decoration also for the window itself
In the meantime, windows can have decorations (borders) on their own frame, too.
2010-11-26 18:37:34 +01:00
Michael Stapelberg e744b48b30 Bugfix: When handling an EnterNotify for a child window, access the correct con->layout 2010-11-26 18:18:40 +01:00
Michael Stapelberg 4d7c24b92c Bugfix: Correctly count variables when parsing the configfile (Thanks dbp) 2010-11-26 11:25:51 +01:00
Michael Stapelberg 1de97a1f1f correctly sort numbered workspaces (+testcase)
Numbered workspaces (workspaces with a name containing only digits) will be
inserted in the correct order now. Named workspaces are always sorted after
numbered workspaces and in the order of creation.
2010-11-21 23:35:49 +01:00
Michael Stapelberg fab8b84db7 ipc: fix current_workspace 2010-11-21 22:12:34 +01:00
Michael Stapelberg a71d782da9 fix indention of src/ipc.c 2010-11-21 22:03:55 +01:00
Fernando Tarlá Cardoso Lemos ae22fe065f Send change:empty too. 2010-11-21 21:36:33 +01:00
Fernando Tarlá Cardoso Lemos e2517bd48c Unlink the resolved path. 2010-11-21 21:36:30 +01:00
Fernando Tarlá Cardoso Lemos 767dcea7ba Send the workspace focus change event. 2010-11-21 21:36:28 +01:00
Fernando Tarlá Cardoso Lemos 5d830e7a27 Ported over some message types from -next. 2010-11-21 21:36:19 +01:00
Michael Stapelberg 2d280469af Bugfix: Don’t draw borders for fullscreen windows 2010-11-21 17:00:10 +01:00
Michael Stapelberg 09b5b17830 Bugfix: Don’t attach tiling containers to floating containers
This bug happened when there were only floating containers on a workspace and a
new tiling window was to be opened.
2010-11-21 16:49:59 +01:00
Michael Stapelberg f53fafe100 ipc: s/floating-nodes/floating_nodes for consistency 2010-11-21 16:34:45 +01:00
Michael Stapelberg 39fa1d724a bugfix: don’t treat workspace as empty if they only have floating windows (+testcase) 2010-11-20 20:16:15 +01:00
Michael Stapelberg db651679c5 Bugfix: Properly ignore UnmapNotify events (especially for floating windows)
This fixes the bug which caused floating windows to be visible even when
switching to a different workspace.

Instead of ignoring a specific sequence, we now set an ignore_unmap counter for
each container. (So, should containers be closed too early or stay open even if
they should be closed, we probably need to have a closer look at the counter.
At the moment, it is increased by one on reparenting and unmapping (for
workspace changes) and decremented by one on each UnmapNotify event).

This system is better because a sequence does not describe a single unmap or
reparent request but a request to X11 on the network layer -- which can contain
multiple requests.
2010-11-20 19:11:43 +01:00
Michael Stapelberg 131a2f8765 debugging: implement a NOP command which just spits out its argument
You can use this in testcases to mark specific sections:
  $i3->command('nop before trying to crash')->recv;
leads to the following output in the i3 logfile:
  -------------------------------------------------
    NOP: before trying to crash
  -------------------------------------------------
2010-11-20 18:40:25 +01:00
Michael Stapelberg 576de246d8 Bugfix: when no windows to focus, return the workspace instead of NULL 2010-11-20 18:38:24 +01:00
Fernando Tarlá Cardoso Lemos 5ebb3b4832 Port the IPC socket creation code from -next. 2010-11-15 14:00:48 +01:00
Fernando Tarlá Cardoso Lemos bfa12a5819 Port the path resolution and config loading code from -next. 2010-11-15 14:00:46 +01:00
Michael Stapelberg c0c7d04264 When in tabbed mode, nail the orientation to horizontal
This is intuitive for the user as he can use the left/right keys to switch.
Also, we need to nail the orientation because you can be in either vertical or
horizontal mode when you enter the tabbed layout (like with the stacking
layout).
2010-11-15 13:55:10 +01:00
Fernando Tarlá Cardoso Lemos 8048cb2e12 Render the tabbed mode correctly. 2010-11-15 12:27:16 +01:00
Fernando Tarlá Cardoso Lemos ea1e9b20be Get rid of the remaining hardcoded height. 2010-11-15 12:25:06 +01:00
Fernando Tarlá Cardoso Lemos 69f29b2b8e Use the configured font to draw the decorations. 2010-11-15 12:24:16 +01:00
Michael Stapelberg cbd53e8a7f bugfix: check if the client leader is a managed window (Thanks fernandotcl) 2010-11-14 23:55:53 +01:00
Michael Stapelberg 76c07900c2 take into account x11 border_width settings (fixes uxterm border issue) 2010-11-14 23:44:13 +01:00
Michael Stapelberg 39b378b0a4 don’t allow useless splits, change orientation of existing split container instead 2010-11-14 23:18:39 +01:00
Michael Stapelberg e8b5a802e2 Bugfix: only set clients to floating which have a leader that is not their own window (Thanks fernandotcl) 2010-11-14 22:49:05 +01:00
Michael Stapelberg a27af52706 fix floating focus behaviour, extend testcase 2010-11-14 22:35:44 +01:00
Michael Stapelberg d401703135 Bugfix: use rectangles instead of a polygon to avoid strange rendering errors
With the polygon, when using pidgin, having the buddy list in the middle of the
screen, 200 px width, full screen high, then opening the manage accounts
window, the decorations of the buddy list were visible on the accounts window.
2010-11-14 21:17:27 +01:00
Michael Stapelberg 33eb00d6ae automatically set windows with client_leader to floating 2010-11-14 20:15:51 +01:00
Michael Stapelberg 055bd18142 Bugfix: after the first UnmapNotify, unignore the event 2010-11-14 20:15:12 +01:00
Michael Stapelberg d760a1c7b2 Bugfix: don’t kill parent when currently in tree_close() for a child of this parent 2010-11-14 20:14:09 +01:00
Michael Stapelberg f0efb3737e don’t remove floating container twice (it’s already removed in con_detach) 2010-11-14 20:11:46 +01:00
Michael Stapelberg 5d7344af8a resize/unmap container x11 windows on demand (makes background images visible again) 2010-11-14 18:52:40 +01:00
Michael Stapelberg 945632ddcb Implement setting the WM_NAME of i3 container windows for debugging 2010-11-14 16:41:46 +01:00
Michael Stapelberg e85bb09017 set withdrawn/normal state when unmapping/mapping (for xprop/java) 2010-11-14 13:53:47 +01:00
Michael Stapelberg a415d56048 parser: return a proper JSON reply on parse errors 2010-11-14 01:45:05 +01:00
Michael Stapelberg 7c6f2dbfc6 Rendering fixes for stacking mode 2010-11-13 22:39:59 +01:00
Michael Stapelberg 4cd6dd0303 port fernando’s custom background color patch 2010-11-13 20:07:49 +01:00
Fernando Tarlá Cardoso Lemos 53b98fdc7e Paint the window decorations using the theme. 2010-11-13 19:17:08 +01:00
Michael Stapelberg dc10c67060 Bugfix: Close containers which are empty due to a move (Thanks fernando) 2010-11-13 14:55:11 +01:00
Michael Stapelberg 432073dbe5 implement support for WM_TRANSIENT_FOR, expand testcase 2010-11-13 01:19:21 +01:00
Michael Stapelberg ad9be5402a Implement support for WM_CLIENT_LEADER 2010-11-12 23:46:03 +01:00
Baptiste Daroussin 1bb6906c56 Fix build on freebsd (uint32_t unknown if stdint.h not
included)
2010-11-12 23:11:36 +01:00
Michael Stapelberg 8f7bd538d8 implement configure requests, adapt testcase
testcase does not pass 100% due to clients not being reparented correctly yet.
2010-11-12 21:41:10 +01:00
Michael Stapelberg 0723876429 only re-position floating clients mapped to (0, 0), add pixels for decoration 2010-11-12 20:55:43 +01:00
Michael Stapelberg 57e602a97c respect position in geometry of floating windows 2010-11-12 20:55:26 +01:00
Michael Stapelberg e07fee4472 parser: don’t exit(1) on invalid command, use better error message 2010-11-12 20:22:55 +01:00
Michael Stapelberg 0e264cb5c4 implement different border styles
Wow, that actually was easy :).
2010-11-12 19:37:43 +01:00
Michael Stapelberg 66dc8883fd make borders around every container configurable for debugging 2010-11-12 19:37:32 +01:00
Michael Stapelberg d248f35267 include border style in ipc tree dump 2010-11-12 19:16:38 +01:00
Michael Stapelberg ea4e3e7682 parser: bugfix: initialize match when parsing new command 2010-11-12 19:07:48 +01:00
Michael Stapelberg 6eb7f2a01d lexer/parser: implement 'border' command 2010-11-12 18:41:54 +01:00
Michael Stapelberg c6c084faa5 don’t close workspaces which are still visible (multi-monitor) 2010-11-12 17:34:13 +01:00
Michael Stapelberg c1d574f84e enumerate workspaces when initializing outputs 2010-11-12 17:33:59 +01:00
Michael Stapelberg 5c2758af26 Implement support for size hints (including test case) 2010-10-11 21:32:29 +02:00
Michael Stapelberg 0925e8b7dc Implement sticky windows
The implementation works like this:
Containers can have a 'sticky-group' attribute. Imagine two different
containers (on two different workspaces) which have the same sticky-group.
Now you open a window in the first container. When you switch to the
other workspace, the window will be re-assigned to the other container.

An obvious problem which is not covered with the code at the moment is
having two containers with the same sticky-group visible at the same time.
2010-09-01 18:11:01 +02:00
Michael Stapelberg 4d12e18571 remove proof-of-concept code in main.c 2010-08-21 18:36:51 +02:00
Lourens Rozema 8159ffaa06 Bugfix for the kill command (used a.o. in test 18). Call to match_init is to be used i.o. a simple memset() to zero. Otherwise the boolean dock field doesn't get initalized to -1. 2010-08-21 18:28:37 +02:00
Lourens Rozema ebe878d24c Indent clean up. 2010-08-21 18:27:12 +02:00
Michael Stapelberg 160c12ed9a recognize dock windows (and support matching them) 2010-08-15 12:18:27 +02:00
Michael Stapelberg d066341261 ipc/parser: commands can now return custom JSON replies
Also, finally add include/cmdparse.h
2010-07-17 15:15:37 +02:00
Michael Stapelberg 189635a5dc Bugfix: Even when not going one level up, we need to travel down the whole focus stack 2010-07-17 15:08:22 +02:00
Michael Stapelberg 099df7f438 Bugfix: Keep focus on the current workspace when moving containers, add testcase 2010-07-17 13:27:34 +02:00
Michael Stapelberg 49add4f3e4 Bugfix: Don’t go further when switching focus on a CT_WORKSPACE 2010-07-17 01:56:16 +02:00
Michael Stapelberg 69e5c0f6ce Treat stacking containers as if they are in vertical orientation, add testcase 2010-07-17 01:27:47 +02:00
Michael Stapelberg 09c6b587d3 close empty parent containers, add testcase 2010-07-17 00:54:47 +02:00
Michael Stapelberg 33572b8c4b s/con->parent/parent to make it more readable
(and necessary for the next commit)
2010-07-17 00:54:03 +02:00
Michael Stapelberg 7415f14448 Add more documentation to functions/header files 2010-07-13 11:35:05 +02:00
Michael Stapelberg 60bdf87862 Bugfix: Push all following window stacking orders to X11 when the order of a single pair changed 2010-07-11 23:41:02 +02:00
Michael Stapelberg 1459ae6bf2 Bugfix: raise fullscreen containers before rendering their content 2010-07-11 23:40:50 +02:00
Michael Stapelberg a79d33fc7f Remove some dead code (to be re-implemented), rename nc.c to main.c 2010-07-11 22:12:25 +02:00
Michael Stapelberg 61f9a79347 use decimal coordinates in debug message 2010-07-11 22:01:25 +02:00
Michael Stapelberg 1a0fcea48e ipc: add member 'focused' to every container 2010-07-04 22:17:18 +02:00
Michael Stapelberg 66480d3725 Bugfix: Don’t try to focus the container itself when closing 2010-07-04 22:16:54 +02:00
Michael Stapelberg b186446fb7 Bugfix: Correctly restore focus after close (and add testcase) 2010-07-04 19:50:44 +02:00
Michael Stapelberg 49ed703299 Bugfix: Insert new containers at the right position (and add testcase) 2010-07-03 17:42:36 +02:00
Michael Stapelberg 64306e813e Bugfix: Ignore sequences of mapping/unmapping windows to avoid getting enter_notifies 2010-07-02 20:33:26 +02:00
Michael Stapelberg 5d0f17d53d bugfix: correctly focus follow up window when closing floating windows 2010-06-30 22:37:57 +02:00
Michael Stapelberg 6d152103f5 parser: implement move 2010-06-30 22:23:32 +02:00
Michael Stapelberg 565ef78b12 parser: implement resize command 2010-06-30 19:47:23 +02:00
Michael Stapelberg bd9e5c0bc4 parser: implement explicit "mode floating"/"mode tiling" 2010-06-30 15:54:34 +02:00
Michael Stapelberg 2da4173144 parser: implement "reload" 2010-06-30 15:31:29 +02:00
Michael Stapelberg ea30fdc327 parser: call tree_close_con() instead of tree_close() when run interactively 2010-06-30 15:27:18 +02:00
Michael Stapelberg 4eace6f886 Go down the tree when moving windows, add testcase for moving 2010-06-29 19:05:31 +02:00
Michael Stapelberg 948378fa55 floating: correctly kill floating containers when closing 2010-06-28 22:37:35 +02:00
Michael Stapelberg 2f4210d3cf floating: use con_fix_percent 2010-06-28 22:36:08 +02:00
Michael Stapelberg 574e6b51d1 re-implement click to focus 2010-06-28 22:26:23 +02:00
Michael Stapelberg c33d352fd2 floating: re-implement floating_modifier + left/right mouse button to drag/resize 2010-06-28 22:23:32 +02:00
Michael Stapelberg 84e78c6dba automatically set dialog windows to floating 2010-06-28 21:40:36 +02:00
Michael Stapelberg 69e1975e29 split up toggle_floating_mode into floating_enable and floating_disable 2010-06-28 21:40:17 +02:00
Michael Stapelberg 6897e15e72 Implement mark/goto, modify testcase 2010-06-02 23:32:05 +02:00
Michael Stapelberg 780e773a6a split containers do not directly accepts windows (they only have children) 2010-06-02 22:35:37 +02:00
Michael Stapelberg 5bff638ea0 bugfix: the layout command needs to change the layout of the parent container 2010-06-02 18:58:52 +02:00
Michael Stapelberg 32be3af109 Re-implement support for the urgency hint, extend t/13-urgent.t
The actual rendering will follow
2010-06-02 17:55:10 +02:00
Michael Stapelberg 7c3e88ad93 parser: implement matching on the window id 2010-06-02 17:20:32 +02:00
Michael Stapelberg 14a312c152 more debug output 2010-06-02 17:04:26 +02:00
Michael Stapelberg 1c5adc6c35 Don’t ignore sequence in UnmapNotify, there might be multiple windows in one sequence
This would lead to i3 thinking that a new window was already managed if it
has the same X-ID as the old window. Instead, we need to fix the EnterNotify
problem in a different way.
2010-06-02 17:03:26 +02:00
Michael Stapelberg a7d2c5942a Clear event mask while reparenting
This way, we can avoid to ignore UnmapNotify events generated by reparenting.
It is generally considerable to have as little ignored events as possible
due to side-effects.
2010-06-02 17:02:10 +02:00
Michael Stapelberg cea8f91e18 parser: implement 'layout' 2010-06-01 23:20:57 +02:00
Michael Stapelberg b467242d69 Make splitting a container which was already split a noop 2010-06-01 22:45:18 +02:00
Michael Stapelberg 0ce62a755e "Re-parent" floating clients whose old_parent is being closed (makes t/27 pass) 2010-06-01 21:36:02 +02:00
Michael Stapelberg 712605e69f ipc: include floating-nodes in tree reply 2010-06-01 20:50:23 +02:00
Michael Stapelberg a25dc3e988 Implement focus command (and extend t/21-next-prev.t to test it) 2010-06-01 18:49:43 +02:00
Michael Stapelberg 67a6bd5589 bugfix: allocate one more zero-byte to definitely get a zero-terminated string 2010-06-01 18:46:14 +02:00
Michael Stapelberg 935b8e05ff Implement correct removal of floating containers 2010-05-31 23:16:20 +02:00
Michael Stapelberg b14fa457e7 fix: to always abort we need to assert(false) 2010-05-31 23:08:16 +02:00
Michael Stapelberg 143622d2d7 Reposition floating windows while dragging 2010-05-31 23:01:08 +02:00
Michael Stapelberg 246d4627be re-enable sending fake configure notifies 2010-05-31 23:00:36 +02:00
Michael Stapelberg 71e0e49c0e Implement mode toggle 2010-05-31 22:48:28 +02:00
Michael Stapelberg e67c712f31 cleanup: introduce CT_WORKSPACE as type to avoid having to check parent->type 2010-05-31 00:11:11 +02:00
Michael Stapelberg a45dc6b3ad Update _NET_WM_STATE after fullscreen state changes 2010-05-26 23:21:37 +02:00
Michael Stapelberg be357a1aaa Set up _NET_WM_SUPPORTED and window manager name again
This fixes MPlayer fullscreen mode
2010-05-15 00:28:10 +02:00
Michael Stapelberg 2d52ecf071 Add parameter to reparent windows instead of killing them when closing a container
Necessary because when windows are unmapped, they are not necessary to
be killed (an application can unmap it temporarily).
2010-05-15 00:16:59 +02:00
Michael Stapelberg def41582d1 re-render the three after calling parse_cmd 2010-05-14 23:41:17 +02:00
Michael Stapelberg 8c5d824fa8 Ignore UnmapNotify events generated by reparenting 2010-05-14 23:37:56 +02:00
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
Michael Stapelberg 9b1699f4c4 Add documentation for workspace_get() 2009-09-27 15:20:47 +02:00
Michael Stapelberg f38809288a Make number of workspaces dynamic (no longer limited by 10)
Warning: This is not yet thoroughly tested, so be prepared to
encounter some segfaults. Please enable logging and coredumps,
so we can fix bugs quickly.
2009-09-27 14:00:54 +02:00
Michael Stapelberg a55d0b77fe Implement resize command
Syntax: resize <left|right|up|down> [+|-]<pixels>
2009-09-26 17:18:50 +02:00
Michael Stapelberg 7be41492c6 Obey the client’s border_width setting (Thanks shatter)
xterm by default sets a border_width of 2. This was not taken into
account when determining the size of the window by i3. Still, you
probably want to set this to 0 in your .Xresources as the pixels
are just lost.
2009-09-26 13:47:48 +02:00
Michael Stapelberg b898058105 Fix some compilation warnings (Thanks mxf) 2009-09-26 13:30:32 +02:00
Michael Stapelberg 2493c4b232 Bugfix: Fix resizing on second monitor (Thanks litemotiv)
We now use the virtual screen’s size/position instead of the X root
window for the grabwin (grabwin = the area in which the pointer may
move when resizing).
2009-09-25 18:08:37 +02:00
Michael Stapelberg f4ec7fdfe9 Implement stack-limit for further defining how stack windows should look
Using this command, you can limit the amount of columns or rows for
a stacking container. This allows for better usage of screen estate
when using stacking containers with many clients.

Examples:
  i3-msg "stack-limit cols 2"
You will now have a stack window which has two columns of windows.
2009-09-22 18:07:59 +02:00
Michael Stapelberg d3752007ed Remove old code 2009-09-22 18:07:48 +02:00
Michael Stapelberg d9ca8e8d1a Move handler for clicking to its own file 2009-09-22 18:07:25 +02:00
Michael Stapelberg 3ada8f326c Implement vim-like marks
Commands are 'mark' and 'goto'. Both can be used either directly,
like 'mark a' and 'goto a', or interactively (just 'mark'). For
interactive mode, i3-input must be installed and in your PATH.
2009-09-20 16:54:29 +02:00
Michael Stapelberg 0e8b87e9da lexer: Implement workspace <number> "<name>" 2009-09-19 19:39:06 +02:00
Michael Stapelberg 0ed2d62263 lexer: return HEX instead of NUMBER when parsing colors 2009-09-19 19:34:02 +02:00
Michael Stapelberg b1ebbde153 Merge branch 'lex' into next 2009-09-19 19:06:57 +02:00
Michael Stapelberg ca472559b9 Finish configfile parsing with lexer, implement -l to use the lexer.
Every user is encouraged to use -l to switch to the new lexer and
see if there are any problems.
2009-09-19 19:05:15 +02:00
Michael Stapelberg 775d3a0d91 Make gcc happy about some possibly uninitialized variables (Thanks badboy)
This warning only showed up with CFLAGS=-O2.
The variables in question could never be uninitialized because
they were definitely set, have a look at the code. But anyways,
less warnings is always a good thing ;-).
2009-09-15 16:58:10 +02:00
Michael Stapelberg 207ad0a7df Implement most code to actually set the configuration settings 2009-09-13 22:13:28 +02:00
Michael Stapelberg 7fda4a2c32 Make variable expansion work with the new parsing 2009-09-13 21:32:58 +02:00
Michael Stapelberg 2986636e03 Fix some parsing problems, retab! 2009-09-13 18:40:35 +02:00
Michael Stapelberg 268bf71222 Implement option -p to test if the lexer/parser can parse your configfile (specify -c before) 2009-09-13 14:54:27 +02:00
Michael Stapelberg 9dd975e974 Add first version of lexer/parser to git, update Makefile 2009-09-13 14:16:39 +02:00
Michael Stapelberg 30ad7e93e7 Bugfix: Re-distribute free space when closing rows which were horizontally resized 2009-09-12 19:58:39 +02:00
Michael Stapelberg ce40f79c47 Implement right mouse button + dragging to resize tiling clients aswell 2009-09-12 19:51:50 +02:00
Michael Stapelberg 6f2638f526 Bugfix: Correctly warp pointer *after* rendering the layout
This is necessary because otherwise the window into which the
pointer is warped still is at its old position, so that the pointer
will effectively be warped onto the wrong screen in case of moving
a window to another screen.
2009-09-12 18:46:52 +02:00
Michael Stapelberg 739f4f35aa Compilation fix for the last commit 2009-09-12 18:34:03 +02:00
Michael Stapelberg 3b59f5829f Bugfix: Correctly initialize workspaces for floating clients, too 2009-09-12 18:18:41 +02:00
Michael Stapelberg 4d01a02dba Bugfix: Correctly initialize workspace when moving clients (Thanks tsdh) 2009-09-12 18:15:32 +02:00
Michael Stapelberg cef5778097 Bugfix: Fix clicking on stack windows in tabbed mode (Thanks Atsutane) 2009-09-10 21:05:29 +02:00
Michael Stapelberg bf043cd2bd Some little style adjustments for badboy’s patch 2009-09-10 18:48:16 +02:00
Jan-Erik Rediger 40bc7c93d0 Implement command to toggle border style
Use 'bt' to toggle from normal to 1-px, borderless and back.
2009-09-10 18:44:27 +02:00
Michael Stapelberg ff1ae52e6b Fix compilation warning because of missing braces 2009-09-10 16:29:23 +02:00
Michael Stapelberg 9f02fb7a3a Bugfix: Don’t handle WM_HINTS if it is not set (Thanks mxf) 2009-09-10 16:27:50 +02:00
Michael Stapelberg e4813d009a Bugfix: Correctly handle unmap-notify events when resizing (Thanks Mirko) 2009-09-07 21:18:44 +02:00
Michael Stapelberg 2ff2a6a315 Implement the urgency hint for windows/workspaces
Thanks to Mikael for bringing it to my mind. This change introduces
two new color classes, client.urgent and bar.urgent. By default,
urgent clients are drawn in red (colors by Atsutane).
2009-09-06 22:40:11 +02:00
Michael Stapelberg e893902585 Implement horizontal resize 2009-09-06 16:50:45 +02:00
Michael Stapelberg a81108c527 Bugfix: Initialize screens correctly when not using Xinerama (Thanks Mikael) 2009-09-05 19:17:59 +02:00
Michael Stapelberg ca8a194c56 Bugfix: Correctly grab the right mouse button for resizing windows (Thanks xeen) 2009-09-05 17:32:26 +02:00
Michael Stapelberg a8352a8988 Merge patches for OpenBSD compatibility 2009-09-02 22:25:50 +02:00
Michael Stapelberg ae2371ee58 Implement long options (--version, --no-autostart, --help, --config) 2009-09-02 22:14:09 +02:00
Michael Stapelberg 67dcd9df28 Bugfix: In stacked/tabbed mode we need the regular border color (Thanks badboy) 2009-09-02 21:59:31 +02:00
Michael Stapelberg 100cc6b717 Bugfix: If the pointer is outside of the screen when starting, fall back to the first screen (Thanks mxf) 2009-08-31 20:27:44 +02:00
Michael Stapelberg 2b49c6086d Bugfix: Don’t display unnamed workspaces with %d: (Thanks Mirko) 2009-08-29 11:06:34 +02:00
Michael Stapelberg d333b8534d Bugfix: Draw black border instead of background-color around clients with {width,height}_increment (Thanks xeen) 2009-08-29 11:03:14 +02:00
Michael Stapelberg 39457338e4 Bugfix: Don’t crash if the numlock symbol cannot be found (Thanks xeen) 2009-08-27 21:34:07 +02:00
Michael Stapelberg 39f002e0b1 Bugfix: Don’t call resize_client if the width/height increment properties did not change
This avoids an endless loop, preventing clients to go to fullscreen
2009-08-25 23:16:17 +02:00
Michael Stapelberg 55b1bf4582 Bugfix: Correctly use base_width/base_height and size increment hints, correctly send fake configure notify events 2009-08-23 21:49:38 +02:00
Michael Stapelberg 8c4e2e48f4 Don’t round up if the corrected height/width is the same as the old one 2009-08-23 20:30:17 +02:00
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 012f618c85 Bugfix: Map window when it got the fullscreen hint set 2009-08-21 12:19:04 +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 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 33e536113d Bugfix: Fix NULL-pointer dereferencing introduced by commit 874941 (Thanks tsdh) 2009-07-28 00:44:57 +02:00
Michael Stapelberg 76664df3df Bugfix: Make assignments work again (Thanks badboy) 2009-07-26 02:12:45 +02:00
Michael Stapelberg 270922bf61 Bugfix: Don’t crash on floating windows, set focus correctly 2009-07-25 22:53:33 +02:00
Michael Stapelberg 1e095ece84 Merge branch 'next' of zekjur:/git/i3 into next 2009-07-25 22:31:01 +02:00
Michael Stapelberg 163c9ad7db Map window/its decoration *after* calling render_layout()
Thus, no more flickering because the window was first mapped and then
moved. Especially users of multiple monitors should be happy now ;-).
Rather radical change, though, so be prepared for problems.
2009-07-25 22:29:28 +02:00
Michael Stapelberg ed60b31fd0 Implement predict_text_width, which will be needed for named workspaces 2009-07-24 19:49:06 +02:00
Michael Stapelberg ce501c9de9 Some fixes/reformatting for bapt’s patch 2009-07-23 20:36:48 +02:00
bapt 40750e227d Implements a reload command 2009-07-23 18:46:21 +02:00
Michael Stapelberg 9db8535b4c Some little fixes (mostly formatting) for bapt’s patch 2009-07-22 00:16:16 +02:00
Bapt 3e262913e8 Implements next-previous workspace 2009-07-21 23:50:08 +02:00
Michael Stapelberg ffcc8bbc3a Implement putting clients into floating mode at a specific workspace
This changes syntax of the assign command a bit. Old configurations
will continue to work. See the userguide.
2009-07-21 16:43:20 +02:00
Michael Stapelberg 008a2665c1 Bugfix: Strip trailing whitespace when parsing assignments (Thanks bapt) 2009-07-21 16:05:43 +02:00
Michael Stapelberg b893ec9987 Bugfix: Repeatedly try to find screens if none are available (Thanks mxf)
When rotating your screens (xrandr --output LVDS1 --rotate right), sometimes
the X server returned no screens which lead to an exit(1) of i3. Now, i3
tries to find screens for up to 5 seconds and only quits afterwards.
2009-07-21 15:59:11 +02:00
Michael Stapelberg 87494107b3 Bugfix: Correctly redecorate clients when changing focus (Thanks msi)
When moving your cursor from one tiling window to another tiling
window via a floating client, the old tiling window was not re-
decorated correctly
2009-07-21 15:49:08 +02:00
Michael Stapelberg 5b51c8c6f0 optimization: Render on pixmaps and copy the result on Stack_Wins
This should speed up the rendering of Stack_Wins with many window
decorations and it should considerably reduce flicker.
2009-07-17 18:32:40 +02:00
Michael Stapelberg 0434b6ea3d Bugfix: That last push was one step too fast. Forgot to check parameter. 2009-06-29 22:23:24 +02:00
Michael Stapelberg 91aeed0442 Resolve documentation FIXMEs, remove an unnecessary struct 2009-06-29 22:20:35 +02:00
Michael Stapelberg 0305c1dc0e Bugfix: Use ->workspace instead of ->container 2009-06-28 01:58:00 +02:00
Michael Stapelberg acf1eb0c92 Don’t allow floating clients to reconfigure themselves when in fullscreen (Thanks Volker) 2009-06-28 01:52:06 +02:00
Michael Stapelberg eae0b18dbd Use better error messages for s* (Thanks Curtis) 2009-06-27 10:54:34 +02:00
Michael Stapelberg 28c4b045d6 Merge branch 'next' (3.β is stable now) 2009-06-26 13:27:06 +02:00
Michael Stapelberg aaccc0e62c Bugfix: Correctly check coordinates for resizing floating windows (Thanks Mirko) 2009-06-26 12:14:20 +02:00
Michael Stapelberg dd053c254b Bugfix: When a window is fullscreen, put new windows after that one in focus stack (Thanks Volker) 2009-06-26 04:39:59 +02:00
Michael Stapelberg ab48d714cf Bugfix: Don’t lose focus when putting windows into floating 2009-06-26 04:34:36 +02:00
Michael Stapelberg 8f87c212be Bugfix: When moving, first check boundaries, then check for col-/rowspan (Thanks Mirko) 2009-06-26 04:21:30 +02:00
Michael Stapelberg 27a418f454 Bugfix: Correctly remove fullscreen floating clients when unmapping (Thanks Volker) 2009-06-26 04:15:21 +02:00
Michael Stapelberg 8659419ef6 Bugfix: Correctly handle moving fullscreen client onto another screen (Thanks dirkson) 2009-06-25 13:46:47 +02:00
Michael Stapelberg aa2f20ce26 Bugfix: Correctly handle floating windows when unmapping, fix focus bug when moving 2009-06-25 13:31:58 +02:00
Michael Stapelberg b16ab02cc7 Bugfix: Correctly initialize screens when Xinerama is disabled (Thanks Moredread) 2009-06-24 23:50:04 +02:00
Michael Stapelberg 777eedf0f4 Bugfix: Fix selecting col-/rowspanned containers 2009-06-24 21:10:12 +02:00
Michael Stapelberg 62c8d58d82 Implement the configuration option floating_modifier and document it 2009-06-24 20:31:00 +02:00
Michael Stapelberg 675d28dd54 Bugfix: Check screen for NULL, free client memory correctly (Thanks dirkson) 2009-06-24 19:22:09 +02:00
Michael Stapelberg 61b1279f67 Bugfix: Don’t invalidate container pointer and access it when unmapping 2009-06-24 19:05:33 +02:00
Michael Stapelberg 7773a3e5dd Ensure a minimum size of 25px when resizing windows 2009-06-24 18:31:43 +02:00
Michael Stapelberg 607b1d071e Use drag_pointer from floating.c for the resize handler 2009-06-24 17:40:34 +02:00
Michael Stapelberg ee217523f1 Bugfix: resizing: boundary checking (Thanks Mirko) 2009-06-24 17:24:09 +02:00
Michael Stapelberg 07bebdf841 Correctly re-assign floating clients to the destination workspace when moving 2009-06-24 17:12:12 +02:00
Michael Stapelberg 7ed967c96f Ensure that the focus is set correctly when moving floating clients 2009-06-24 00:35:05 +02:00
Michael Stapelberg 125faef1f4 Correctly move floating clients to other workspaces on visible screens 2009-06-24 00:34:03 +02:00
Michael Stapelberg 0aed552bae Bugfix: Remove/add floating clients to workspace->floating_clients when moving to other workspaces 2009-06-23 23:17:06 +02:00
Michael Stapelberg 81e9d8282a Bugfix: load current_col/current_row from workspace when setting focus (Thanks Mirko)
In the case of floating clients which have no container, the values
were still the ones from your old workspace, which was a problem if
your dimensions didn’t match…
2009-06-23 23:10:04 +02:00
Michael Stapelberg 4f31709b1d floating: enforce minimum size of 50x20 when resizing (Thanks Mirko) 2009-06-23 22:42:54 +02:00
Michael Stapelberg cba36914a8 Implement selecting the next tiling/floating window (using "focus")
Also update documentation (manpage, userguide).
To make the code easier to read/write when checking if a client is
floating, introduce client_is_floating().
2009-06-21 16:14:15 +02:00
Michael Stapelberg a5489d6546 Use a nested event loop which polls and saves motion notify events for later
This should speed up resizing/dragging quite a bit, thus fixing ticket #51
2009-06-21 13:44:44 +02:00