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