From eee149f9ffa4fe019179bd14159eb0a4bd3762c0 Mon Sep 17 00:00:00 2001
From: Michael Stapelberg
Date: Sun, 15 Jun 2014 19:36:27 +0200
Subject: [PATCH] add the 4.8 release
---
_docs/Makefile | 5 +-
_docs/hacking-howto | 4 +
_docs/i3bar-protocol | 2 +-
_docs/ipc | 89 +-
_docs/layout-saving | 233 +++
_docs/refcard.html | 122 +-
_docs/userguide | 72 +-
docs/4.7/bigpicture.png | Bin 0 -> 9179 bytes
docs/4.7/buildbot.html | 1118 ++++++++++++
docs/4.7/debugging-release-version.html | 175 ++
docs/4.7/debugging.html | 172 ++
docs/4.7/gsoc2013-ideas.html | 199 ++
docs/4.7/hacking-howto.html | 1590 ++++++++++++++++
docs/4.7/i3-config-wizard.html | 96 +
docs/4.7/i3-migrate-config-to-v4.html | 87 +
docs/4.7/i3-msg.html | 100 +
docs/4.7/i3-nagbar.html | 90 +
docs/4.7/i3-sync-working.png | Bin 0 -> 25072 bytes
docs/4.7/i3-sync.png | Bin 0 -> 17308 bytes
docs/4.7/i3.html | 529 ++++++
docs/4.7/i3bar-protocol.html | 395 ++++
docs/4.7/i3status.html | 500 +++++
docs/4.7/index.html.mako | 118 ++
docs/4.7/ipc.html | 1310 +++++++++++++
docs/4.7/keyboard-layer1.png | Bin 0 -> 55821 bytes
docs/4.7/keyboard-layer1.svg | 969 ++++++++++
docs/4.7/keyboard-layer2.png | Bin 0 -> 49858 bytes
docs/4.7/keyboard-layer2.svg | 896 +++++++++
docs/4.7/logo-30.png | Bin 0 -> 2751 bytes
docs/4.7/manpage.html | 528 ++++++
docs/4.7/modes.png | Bin 0 -> 5826 bytes
docs/4.7/multi-monitor.html | 113 ++
docs/4.7/refcard.html | 186 ++
docs/4.7/refcard.pdf | Bin 0 -> 61582 bytes
docs/4.7/refcard_style.css | 45 +
docs/4.7/repositories.html | 155 ++
docs/4.7/single_terminal.png | Bin 0 -> 3382 bytes
docs/4.7/snapping.png | Bin 0 -> 4880 bytes
docs/4.7/stacklimit.png | Bin 0 -> 4988 bytes
docs/4.7/testsuite.html | 659 +++++++
docs/4.7/tree-layout1.png | Bin 0 -> 27856 bytes
docs/4.7/tree-layout2.png | Bin 0 -> 20101 bytes
docs/4.7/tree-migrating.html | 269 +++
docs/4.7/tree-shot1.png | Bin 0 -> 3665 bytes
docs/4.7/tree-shot2.png | Bin 0 -> 3383 bytes
docs/4.7/tree-shot3.png | Bin 0 -> 4001 bytes
docs/4.7/tree-shot4.png | Bin 0 -> 3050 bytes
docs/4.7/tshirts.html | 213 +++
docs/4.7/two_columns.png | Bin 0 -> 4624 bytes
docs/4.7/two_terminals.png | Bin 0 -> 4901 bytes
docs/4.7/userguide.html | 2235 +++++++++++++++++++++++
docs/4.7/wsbar.html | 141 ++
docs/4.7/wsbar.png | Bin 0 -> 14339 bytes
docs/4.7/wsbar.svg | 274 +++
docs/hacking-howto.html | 9 +
docs/i3bar-protocol.html | 8 +-
docs/index.html.mako | 8 +-
docs/ipc.html | 154 +-
docs/layout-saving-1.png | Bin 0 -> 14799 bytes
docs/layout-saving.html | 281 +++
docs/refcard.html | 122 +-
docs/userguide.html | 91 +-
downloads/RELEASE-NOTES-4.8.txt | 138 ++
downloads/i3-4.8.tar.bz2 | Bin 0 -> 939690 bytes
downloads/i3-4.8.tar.bz2.asc | 17 +
downloads/index.html.mako | 13 +-
index.html.mako | 2 +-
67 files changed, 14263 insertions(+), 269 deletions(-)
create mode 100644 _docs/layout-saving
create mode 100644 docs/4.7/bigpicture.png
create mode 100644 docs/4.7/buildbot.html
create mode 100644 docs/4.7/debugging-release-version.html
create mode 100644 docs/4.7/debugging.html
create mode 100644 docs/4.7/gsoc2013-ideas.html
create mode 100644 docs/4.7/hacking-howto.html
create mode 100644 docs/4.7/i3-config-wizard.html
create mode 100644 docs/4.7/i3-migrate-config-to-v4.html
create mode 100644 docs/4.7/i3-msg.html
create mode 100644 docs/4.7/i3-nagbar.html
create mode 100644 docs/4.7/i3-sync-working.png
create mode 100644 docs/4.7/i3-sync.png
create mode 100644 docs/4.7/i3.html
create mode 100644 docs/4.7/i3bar-protocol.html
create mode 100644 docs/4.7/i3status.html
create mode 100644 docs/4.7/index.html.mako
create mode 100644 docs/4.7/ipc.html
create mode 100644 docs/4.7/keyboard-layer1.png
create mode 100644 docs/4.7/keyboard-layer1.svg
create mode 100644 docs/4.7/keyboard-layer2.png
create mode 100644 docs/4.7/keyboard-layer2.svg
create mode 100644 docs/4.7/logo-30.png
create mode 100644 docs/4.7/manpage.html
create mode 100644 docs/4.7/modes.png
create mode 100644 docs/4.7/multi-monitor.html
create mode 100644 docs/4.7/refcard.html
create mode 100644 docs/4.7/refcard.pdf
create mode 100644 docs/4.7/refcard_style.css
create mode 100644 docs/4.7/repositories.html
create mode 100644 docs/4.7/single_terminal.png
create mode 100644 docs/4.7/snapping.png
create mode 100644 docs/4.7/stacklimit.png
create mode 100644 docs/4.7/testsuite.html
create mode 100644 docs/4.7/tree-layout1.png
create mode 100644 docs/4.7/tree-layout2.png
create mode 100644 docs/4.7/tree-migrating.html
create mode 100644 docs/4.7/tree-shot1.png
create mode 100644 docs/4.7/tree-shot2.png
create mode 100644 docs/4.7/tree-shot3.png
create mode 100644 docs/4.7/tree-shot4.png
create mode 100644 docs/4.7/tshirts.html
create mode 100644 docs/4.7/two_columns.png
create mode 100644 docs/4.7/two_terminals.png
create mode 100644 docs/4.7/userguide.html
create mode 100644 docs/4.7/wsbar.html
create mode 100644 docs/4.7/wsbar.png
create mode 100644 docs/4.7/wsbar.svg
create mode 100644 docs/layout-saving-1.png
create mode 100644 docs/layout-saving.html
create mode 100644 downloads/RELEASE-NOTES-4.8.txt
create mode 100644 downloads/i3-4.8.tar.bz2
create mode 100644 downloads/i3-4.8.tar.bz2.asc
diff --git a/_docs/Makefile b/_docs/Makefile
index 926ff5d..6d6f0d6 100644
--- a/_docs/Makefile
+++ b/_docs/Makefile
@@ -1,5 +1,5 @@
-all: hacking-howto.html debugging.html debugging-release-version.html i3bar-protocol.html repositories.html buildbot.html userguide.html ipc.html multi-monitor.html wsbar.html i3status.html i3.html i3-config-wizard.html i3-nagbar.html i3-migrate-config-to-v4.html i3-msg.html testsuite.html gsoc2013-ideas.html tshirts.html
+all: hacking-howto.html debugging.html debugging-release-version.html i3bar-protocol.html repositories.html buildbot.html userguide.html ipc.html multi-monitor.html wsbar.html i3status.html i3.html i3-config-wizard.html i3-nagbar.html i3-migrate-config-to-v4.html i3-msg.html testsuite.html gsoc2013-ideas.html tshirts.html layout-saving.html
gsoc2013-ideas.html: gsoc2013-ideas
asciidoc -a linkcss -a stylesdir=/css -a scriptsdir=/js --backend=xhtml11 -f conf/i3html.conf -a toc -n $<
@@ -34,6 +34,9 @@ ipc.html: ipc
multi-monitor.html: multi-monitor
asciidoc -a linkcss -a stylesdir=/css -a scriptsdir=/js --backend=xhtml11 -f conf/i3html.conf -a toc -n $<
+layout-saving.html: layout-saving
+ asciidoc -a linkcss -a stylesdir=/css -a scriptsdir=/js --backend=xhtml11 -f conf/i3html.conf -a toc -n $<
+
wsbar.html: wsbar
asciidoc -a linkcss -a stylesdir=/css -a scriptsdir=/js --backend=xhtml11 -f conf/i3html.conf -a toc -n $<
diff --git a/_docs/hacking-howto b/_docs/hacking-howto
index bc59eae..f4e3f03 100644
--- a/_docs/hacking-howto
+++ b/_docs/hacking-howto
@@ -172,6 +172,10 @@ values will later be pushed to X11 in +src/x.c+.
src/resize.c::
Contains the functions to resize containers.
+src/restore_layout.c::
+Everything for restored containers that is not pure state parsing (which can be
+found in load_layout.c).
+
src/sighandler.c::
Handles +SIGSEGV+, +SIGABRT+ and +SIGFPE+ by showing a dialog that i3 crashed.
You can chose to let it dump core, to restart it in-place or to restart it
diff --git a/_docs/i3bar-protocol b/_docs/i3bar-protocol
index bd8ea53..9276315 100644
--- a/_docs/i3bar-protocol
+++ b/_docs/i3bar-protocol
@@ -225,7 +225,7 @@ instance::
Instance of the block, if set
x, y::
X11 root window coordinates where the click occured
-button:
+button::
X11 button ID (for example 1 to 3 for left/middle/right mouse button)
*Example*:
diff --git a/_docs/ipc b/_docs/ipc
index 85e5e77..c976870 100644
--- a/_docs/ipc
+++ b/_docs/ipc
@@ -1,7 +1,7 @@
IPC interface (interprocess communication)
==========================================
Michael Stapelberg
-October 2012
+February 2014
This document describes how to interface with i3 from a separate process. This
is useful for example to remote-control i3 (to write test cases for example) or
@@ -140,12 +140,13 @@ VERSION (7)::
=== COMMAND reply
-The reply consists of a single serialized map. At the moment, the only
-property is +success (bool)+, but this will be expanded in future versions.
+The reply consists of a list of serialized maps for each command that was
+parsed. Each has the property +success (bool)+ and may also include a
+human-readable error message in the property +error (string)+.
*Example:*
-------------------
-{ "success": true }
+[{ "success": true }]
-------------------
=== WORKSPACES reply
@@ -227,9 +228,9 @@ name (string)::
The name of this output (as seen in +xrandr(1)+). Encoded in UTF-8.
active (boolean)::
Whether this output is currently active (has a valid mode).
-current_workspace (integer)::
- The current workspace which is visible on this output. +null+ if the
- output is not active.
+current_workspace (string)::
+ The name of the current workspace that is visible on this output. +null+ if
+ the output is not active.
rect (map)::
The rectangle of this output (equals the rect of the output it
is on), consists of x, y, width, height.
@@ -240,7 +241,7 @@ rect (map)::
{
"name": "LVDS1",
"active": true,
- "current_workspace": 4,
+ "current_workspace": "4",
"rect": {
"x": 0,
"y": 0,
@@ -251,7 +252,7 @@ rect (map)::
{
"name": "VGA1",
"active": true,
- "current_workspace": 1,
+ "current_workspace": "1",
"rect": {
"x": 1280,
"y": 0,
@@ -277,7 +278,12 @@ name (string)::
The internal name of this container. For all containers which are part
of the tree structure down to the workspace contents, this is set to a
nice human-readable name of the container.
+ For containers that have an X11 window, the content is the title
+ (_NET_WM_NAME property) of that window.
For all other containers, the content is not defined (yet).
+type (string)::
+ Type of this container. Can be one of "root", "output", "con",
+ "floating_con", "workspace" or "dockarea".
border (string)::
Can be either "normal", "none" or "1pixel", dependending on the
containerâs border style.
@@ -627,10 +633,11 @@ mode (2)::
Sent whenever i3 changes its binding mode.
window (3)::
Sent when a client's window is successfully reparented (that is when i3
- has finished fitting it into a container).
+ has finished fitting it into a container), when a window received input
+ focus or when certain properties of the window have changed.
barconfig_update (4)::
Sent when the hidden_state or mode field in the barconfig of any bar
- instance was updated.
+ instance was updated and when the config is reloaded.
*Example:*
--------------------------------------------------------------------
@@ -670,12 +677,12 @@ but will still be present in the "old" property.
"change": "focus",
"current": {
"id": 28489712,
- "type":4,
+ "type": "workspace",
...
}
"old": {
"id": 28489715,
- "type": 4,
+ "type": "workspace",
...
}
}
@@ -707,14 +714,18 @@ mode is simply named default.
=== window event
This event consists of a single serialized map containing a property
-+change (string)+ which currently can indicate only that a new window
-has been successfully reparented (the value will be "new").
++change (string)+ which indicates the type of the change
+
+* +new+ - the window has become managed by i3
+* +focus+ - the window has received input focus
+* +title+ - the window's title has changed
+* +fullscreen_mode+ - the window has entered or exited fullscreen mode
Additionally a +container (object)+ field will be present, which consists
-of the window's parent container. Be aware that the container will hold
-the initial name of the newly reparented window (e.g. if you run urxvt
-with a shell that changes the title, you will still at this point get the
-window title as "urxvt").
+of the window's parent container. Be aware that for the "new" event, the
+container will hold the initial name of the newly reparented window (e.g.
+if you run urxvt with a shell that changes the title, you will still at
+this point get the window title as "urxvt").
*Example:*
---------------------------
@@ -722,7 +733,7 @@ window title as "urxvt").
"change": "new",
"container": {
"id": 35569536,
- "type": 2,
+ "type": "con",
...
}
}
@@ -731,20 +742,8 @@ window title as "urxvt").
=== barconfig_update event
This event consists of a single serialized map reporting on options from the
-barconfig of the specified bar_id that were updated in i3. The map always
-consists of a property +id (string)+, which specifies to which bar instance the
-sent config update belongs, a property +hidden_state (string)+, which indicates
-the hidden_state of an i3bar instance, and a property +mode (string)+, which
-corresponds to the current mode.
-
-*Example:*
----------------------------
-{
- "id": "bar-0",
- "hidden_state": "hide"
- "mode": "hide"
-}
----------------------------
+barconfig of the specified bar_id that were updated in i3. This event is the
+same as a +GET_BAR_CONFIG+ reply for the bar with the given id.
== See also (existing libraries)
@@ -756,13 +755,19 @@ know):
C::
i3 includes a headerfile +i3/ipc.h+ which provides you all constants.
- However, there is no library yet.
-Ruby::
- http://github.com/badboy/i3-ipc
-Perl::
- https://metacpan.org/module/AnyEvent::I3
-Python::
- * https://github.com/whitelynx/i3ipc
- * https://github.com/ziberna/i3-py (includes higher-level features)
+
+ https://github.com/acrisci/i3ipc-glib
Go::
* https://github.com/proxypoke/i3ipc
+JavaScript::
+ * https://github.com/acrisci/i3ipc-gjs
+Lua::
+ * https:/github.com/acrisci/i3ipc-lua
+Perl::
+ * https://metacpan.org/module/AnyEvent::I3
+Python::
+ * https://github.com/acrisci/i3ipc-python
+ * https://github.com/whitelynx/i3ipc (not maintained)
+ * https://github.com/ziberna/i3-py (not maintained)
+Ruby::
+ http://github.com/badboy/i3-ipc
diff --git a/_docs/layout-saving b/_docs/layout-saving
new file mode 100644
index 0000000..2b798df
--- /dev/null
+++ b/_docs/layout-saving
@@ -0,0 +1,233 @@
+Layout saving in i3
+===================
+Michael Stapelberg
+April 2014
+
+Layout saving/restoring is a feature that was introduced in i3 v4.8.
+
+Layout saving/restoring allows you to load a JSON layout file so that you can
+have a base layout to start working with after powering on your computer.
+Dynamic use-cases also come to mind: if you frequently (but not always!) need a
+grid layout of terminals with ping/traceroute commands to diagnose network
+issues, you can easily automate opening these windows in just the right layout.
+
+== Saving the layout
+
+You can save the layout of either a single workspace or an entire output (e.g.
+LVDS1). Of course, you can repeat this step multiple times if you want to
+save/restore multiple workspaces/outputs.
+
++i3-save-tree(1)+ is a tool to save the layout. It will print a JSON
+representation of i3âs internal layout data structures to stdout. Typically,
+you may want to take a quick look at the output, then save it to a file and
+tweak it a little bit:
+
+---------------------------------------------------
+i3-save-tree --workspace 1 > ~/.i3/workspace-1.json
+---------------------------------------------------
+
+Please note that the output of +i3-save-tree(1)+ is *NOT useful* until you
+manually modify it â you need to tell i3 how to match/distinguish windows (for
+example based on their WM_CLASS, title, etc.). By default, all the different
+window properties are included in the output, but commented out. This is partly
+to avoid relying on heuristics and partly to make you aware how i3 works so
+that you can easily solve layout restoring problems.
+
+How to modify the file manually is described in <>.
+
+== Restoring the layout
+
+After restoring the example layout from <>, i3 will open
+placeholder windows for all the windows that were specified in the layout file.
+You can recognize the placeholder windows by the watch symbol
+footnote:[Depending on the font you are using, a placeholder symbol may show up
+instead of the watch symbol.] in the center of the window, and by the swallow
+criteria specification at the top of the window:
+
+image:layout-saving-1.png["Restored layout",width=400,link="layout-saving-1.png"]
+
+When an application opens a window that matches the specified swallow criteria,
+it will be placed in the corresponding placeholder window. We say it gets
+*swallowed* by the placeholder container, hence the term.
+
+Note: Swallowing windows into unsatisfied placeholder windows takes precedence
+over
+link:http://i3wm.org/docs/userguide.html#_automatically_putting_clients_on_specific_workspaces[assignment
+rules]. For example, if you assign all Emacs windows to workspace 1 in your i3
+configuration file, but there is a placeholder window on workspace 2 which
+matches Emacs as well, your newly started Emacs window will end up in the
+placeholder window on workspace 2.
+
+The placeholder windows are just regular windows, so feel free to move them
+around or close them, for example.
+
+=== append_layout command
+
+The +append_layout+ command is used to load a layout file into i3. It accepts a
+path (relative to i3âs current working directory or absolute) to a JSON file.
+
+*Syntax*:
+--------------------------------------------------------------------------------
+append_layout
+--------------------------------------------------------------------------------
+
+*Examples*:
+--------------------------------------------------------------------------------
+# From a terminal or script:
+i3-msg "workspace 1; append_layout /home/michael/.i3/workspace-1.json"
+
+# In your i3 configuration file, you can autostart i3-msg like this:
+# (Note that those lines will quickly become long, so typically you would store
+# them in a script with proper indentation.)
+exec --no-startup-id "i3-msg 'workspace 1; append_layout /home/michael/.i3/workspace-1.json'"
+--------------------------------------------------------------------------------
+
+== Editing layout files
+
+[[EditingLayoutFiles]]
+
+=== Anatomy of a layout file
+
+Here is an example layout file that weâll discuss:
+
+--------------------------------------------------------------------------------
+{
+ // splitv split container with 2 children
+ "layout": "splitv",
+ "percent": 0.4,
+ "type": "con",
+ "nodes": [
+ {
+ "border": "none",
+ "name": "irssi",
+ "percent": 0.5,
+ "type": "con",
+ "swallows": [
+ {
+ "class": "^URxvt$",
+ "instance": "^irssi$"
+ }
+ ]
+ },
+ {
+ // stacked split container with 2 children
+ "layout": "stacked",
+ "percent": 0.5,
+ "type": "con",
+ "nodes": [
+ {
+ "name": "notmuch",
+ "percent": 0.5,
+ "type": "con",
+ "swallows": [
+ {
+ "class": "^Emacs$",
+ "instance": "^notmuch$"
+ }
+ ]
+ },
+ {
+ "name": "midna: ~",
+ "percent": 0.5,
+ "type": "con"
+ }
+ ]
+ }
+ ]
+}
+
+{
+ // stacked split container with 1 children
+ "layout": "stacked",
+ "percent": 0.6,
+ "type": "con",
+ "nodes": [
+ {
+ "name": "chrome",
+ "type": "con",
+ "swallows": [
+ {
+ "class": "^Google-chrome$"
+ }
+ ]
+ }
+ ]
+}
+--------------------------------------------------------------------------------
+
+In this layout, the screen is divided into two columns. In the left column,
+which covers 40% of the screen, there is a terminal emulator running irssi on
+the top, and a stacked split container with an Emacs window and a terminal
+emulator on the bottom. In the right column, there is a stacked container with
+a Chrome window:
+
+image:layout-saving-1.png["Restored layout",width=400,link="layout-saving-1.png"]
+
+The structure of this JSON file looks a lot like the +TREE+ reply, see
+http://build.i3wm.org/docs/ipc.html#_tree_reply for documentation on that. Some
+properties are excluded because they are not relevant when restoring a layout.
+
+Most importantly, look at the "swallows" section of each window. This is where
+you need to be more or less specific. As an example, remember the section about
+the Emacs window:
+
+--------------------------------------------------------------------------------
+"swallows": [
+ {
+ "class": "^Emacs$",
+ "instance": "^notmuch$"
+ }
+]
+--------------------------------------------------------------------------------
+
+Here you can see that i3 will require both the class and the instance to match.
+Therefore, if you just start Emacs via dmenu, it will not get swallowed by that
+container. Only if you start Emacs with the proper instance name (+emacs24
+--name notmuch+), it will get swallowed.
+
+You can match on "class", "instance", "window_role" and "title". All values are
+case-sensitive regular expressions (PCRE). Use +xprop(1)+ and click into a
+window to see its properties:
+
+--------------------------------------------------------------------------------
+$ xprop
+WM_WINDOW_ROLE(STRING) = "gimp-toolbox-color-dialog"
+WM_CLASS(STRING) = "gimp-2.8", "Gimp-2.8"
+_NET_WM_NAME(UTF8_STRING) = "Change Foreground Color"
+--------------------------------------------------------------------------------
+
+The first part of +WM_CLASS+ is the "instance" (gimp-2.8 in this case), the
+second part is the "class" (Gimp-2.8 in this case). "title" matches against
++_NET_WM_NAME+ and "window_role" matches against +WM_WINDOW_ROLE+.
+
+In general, you should try to be as specific as possible in your swallow
+criteria. Try to use criteria that match one window and only one window, to
+have a reliable startup procedure.
+
+If you specify multiple swallow criteria, the placeholder will be replaced by
+the window which matches any of the criteria. As an example:
+
+--------------------------------------------------------------------------------
+// Matches either Emacs or Gvim, whichever one is started first.
+"swallows": [
+ {"class": "^Emacs$"},
+ {"class": "^Gvim$"}
+]
+--------------------------------------------------------------------------------
+
+=== JSON standard non-compliance
+
+A layout file as generated by +i3-save-tree(1)+ is not strictly valid JSON:
+
+1. Layout files contain multiple âJSON documentsâ on the top level, whereas the
+ JSON standard only allows precisely one âdocumentâ (array or hash).
+
+2. Layout files contain comments which are not standardized, but understood by
+ many parsers.
+
+Both deviations from the JSON standard are to make manual editing by humans
+easier. In case you are writing a more elaborate tool for manipulating these
+layouts, you can either use a JSON parser that supports these deviations (for
+example libyajl), transform the layout file to a JSON-conforming file, or
+link:http://cr.i3wm.org/[submit a patch] to make +i3-save-tree(1)+ optionally
+output standard-conforming JSON.
diff --git a/_docs/refcard.html b/_docs/refcard.html
index a4427f4..7156da3 100644
--- a/_docs/refcard.html
+++ b/_docs/refcard.html
@@ -42,95 +42,111 @@
+
Basics
-
+î ¶
+
+ î ¶
open new terminal
-
-
+j
+
+ j
focus left
-
+k
+
+ k
focus down
-
+l
+
+ l
focus up
-
+;
+
+ ;
focus right
+
+
+ î
+
toggle focus mode
-
-
Changing the container layout
+
Moving windows
-
+e
-
default
-
+
+ î ´ + j
+
move window left
-
+s
-
stacking
-
+
+ î ´ + k
+
move window down
-
+w
-
tabbed
+
+ î ´ + l
+
move window up
+
+
+ î ´ + ;
+
move window right
-
Fullscreen mode
+
Modifying windows
-
+f
+
+ f
toggle fullscreen
+
+
+ v
+
split a window vertically
+
+
+ h
+
split a window horizontally
+
+
+ r
+
resize mode
+
Look at the âResizing containers / windowsâ section of the user guide.
-
-
Opening other applications
+
Changing the container layout
-
+d
-
open application (with dmenu)
-
+
+ e
+
default
+
+
+ s
+
stacking
-
-
Closing windows
-
-
+î ´ + q
-
kill a window
+
+ w
+
tabbed
-
-
Using workspaces
+
Floating
-
+1â9
-
switch to another workspace
+
+ î ´ + î
+
toggle floating
+
+
+ îº
+
drag floating
-
Moving windows to workspaces
+
Using workspaces
-
+î ´ + 1â9
+
+ 0-9
+
switch to another workspace
+
+
+ î ´ + 0-9
move a window to another workspace
@@ -138,37 +154,33 @@
-
Resizing
-
Look at âResizing containers / windowsâ section of the user guide.
-
-
-
-
-
Restart / Exit
+
Opening applications / Closing windows
-
+î ´ + r
-
restart i3 inplace
-
+
+ d
+
open application launcher (dmenu)
-
+î ´ + e
-
-
exit i3
+
+ î ´ + q
+
kill a window
-
+
-
Floating
+
Restart / Exit
-
+î ´ + î
-
toggle floating
+
+ î ´ + c
+
reload the configuration file
+
+
+ î ´ + r
+
restart i3 inplace
-
+îº
-
drag floating
-
+
+ î ´ + e
+
exit i3
+
+
@@ -176,7 +188,7 @@
All rights reserved
- Designed by Zeus Panchenko
+ Designed by Zeus Panchenko, updated by Moritz Bandemer
Permission is granted to copy, distribute and/or modify this document provided
diff --git a/_docs/userguide b/_docs/userguide
index 666b962..ff46d62 100644
--- a/_docs/userguide
+++ b/_docs/userguide
@@ -166,7 +166,8 @@ hint and are opened in floating mode by default.
You can toggle floating mode for a window by pressing +$mod+Shift+Space+. By
dragging the windowâs titlebar with your mouse you can move the window
around. By grabbing the borders and moving them you can resize the window. You
-can also do that by using the <>.
+can also do that by using the <>. Another way to resize
+floating windows using the mouse is to right-click on the titlebar and drag.
For resizing floating windows with your keyboard, see <>.
@@ -203,7 +204,7 @@ orientation (horizontal, vertical or unspecified) and the orientation depends
on the layout the container is in (vertical for splitv and stacking, horizontal
for splith and tabbed). So, in our example with the workspace, the default
layout of the workspace +Container+ is splith (most monitors are widescreen
-nowadays). If you change the layout to splitv (+$mod+l+ in the default config)
+nowadays). If you change the layout to splitv (+$mod+v+ in the default config)
and *then* open two terminals, i3 will configure your windows like this:
image::tree-shot2.png["shot2",title="Vertical Workspace Orientation"]
@@ -249,13 +250,13 @@ single workspace on which you open three terminal windows. All these terminal
windows are directly attached to one node inside i3âs layout tree, the
workspace node. By default, the workspace nodeâs orientation is +horizontal+.
-Now you move one of these terminals down (+$mod+k+ by default). The workspace
-nodeâs orientation will be changed to +vertical+. The terminal window you moved
-down is directly attached to the workspace and appears on the bottom of the
-screen. A new (horizontal) container was created to accommodate the other two
-terminal windows. You will notice this when switching to tabbed mode (for
-example). You would end up having one tab called "another container" and the
-other one being the terminal window you moved down.
+Now you move one of these terminals down (+$mod+Shift+k+ by default). The
+workspace nodeâs orientation will be changed to +vertical+. The terminal window
+you moved down is directly attached to the workspace and appears on the bottom
+of the screen. A new (horizontal) container was created to accommodate the
+other two terminal windows. You will notice this when switching to tabbed mode
+(for example). You would end up having one tab called "another container" and
+the other one being the terminal window you moved down.
[[configuring]]
== Configuring i3
@@ -727,6 +728,9 @@ client.unfocused::
A client which is not the focused one of its container.
client.urgent::
A client which has its urgency hint activated.
+client.placeholder::
+ Background and text color are used to draw placeholder window contents
+ (when restoring layouts). Border and indicator are ignored.
You can also specify the color to be used to paint the background of the client
windows. This color will be used to paint the window on top of which the client
@@ -749,6 +753,7 @@ client.focused #4c7899 #285577 #ffffff #2e9ef4
client.focused_inactive #333333 #5f676a #ffffff #484e50
client.unfocused #333333 #222222 #888888 #292d2e
client.urgent #2f343a #900000 #ffffff #900000
+client.placeholder #000000 #0c0c0c #ffffff #000000
---------------------------------------------------------
Note that for the window decorations, the color around the child window is the
@@ -805,6 +810,26 @@ focus_follows_mouse
focus_follows_mouse no
----------------------
+=== Mouse warping
+
+By default, when switching focus to a window on a different output (e.g.
+focusing a window on workspace 3 on output VGA-1, coming from workspace 2 on
+LVDS-1), the mouse cursor is warped to the center of that window.
+
+With the +mouse_warping+ option, you can control when the mouse cursor should
+be warped. +none+ disables warping entirely, whereas +output+ is the default
+behavior described above.
+
+*Syntax*:
+---------------------------
+mouse_warping