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