Imagine for example using dmenu: The user starts dmenu by pressing Mod+d, dmenu
gets started with PID 3390. The user then decides to launch Firefox, which
-takes a long time. So he enters firefox into dmenu and presses enter. Firefox
+takes a long time. So they enter firefox into dmenu and press enter. Firefox
gets started with PID 4001. When it finally finishes loading, it creates an X11
window and uses MapWindow to make it visible. This is the first time i3
actually gets in touch with Firefox. It decides to map the window, but it has
=== Blocks in detail
full_text::
- The most simple block you can think of is one which just includes the
- only required key, the +full_text+ key. i3bar will display the string
- value parsed as
- https://developer.gnome.org/pango/stable/PangoMarkupFormat.html[Pango markup].
+ The +full_text+ will be displayed by i3bar on the status line. This is the
+ only required key.
short_text::
Where appropriate, the +short_text+ (string) entry should also be
provided. It will be used in case the status line needs to be shortened
this gap, a separator line will be drawn unless +separator+ is
disabled. Normally, you want to set this to an odd value (the default
is 9 pixels), since the separator line is drawn in the middle.
+markup::
+ A string that indicates how the text of the block should be parsed. Set to
+ +"pango"+ to use https://developer.gnome.org/pango/stable/PangoMarkupFormat.html[Pango markup].
+ Set to +"none"+ to not use any markup (default).
If you want to put in your own entries into a block, prefix the key with an
underscore (_). i3bar will ignore all keys it doesn’t understand, and prefixing
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.
+
+== Troubleshooting
+
+=== Restoring a vertically split workspace
+
+When using +i3-save-tree+ with the +--workspace+ switch, only the *contents* of
+the workspace will be dumped. This means that properties of the workspace
+itself will be lost.
+
+This is relevant for, e.g., a vertically split container as the base container of
+a workspace. Since the split mode is a property of the workspace, it will not be
+stored. In this case, you will have to manually wrap your layout in such a
+container:
+
+--------------------------------------------------------------------------------
+// vim:ts=4:sw=4:et
+{
+ // this is a manually added container to restore the vertical split
+ "layout": "splitv",
+ "percent": 0.5,
+ "type": "con",
+ "nodes": [
+
+ // the dumped workspace layout goes here
+
+ ]
+}
+--------------------------------------------------------------------------------
}
--------------------------------------------------------------
+=== Custom separator symbol
+
+Specifies a custom symbol to be used for the separator as opposed to the vertical,
+one pixel thick separator. Note that you may have to adjust the +sep_block_width+
+property.
+
+*Syntax*:
+-------------------------
+separator_symbol <symbol>
+-------------------------
+
+*Example*:
+------------------------
+bar {
+ separator_symbol ":|:"
+}
+------------------------
+
=== Workspace buttons
Specifies whether workspace buttons should be shown or not. This is useful if
bindsym mod4+s [title="^Sup ::"] scratchpad show
------------------------------------------------
+=== Nop
+
+There is a no operation command +nop+ which allows you to override default
+behavior. This can be useful for, e.g., disabling a focus change on clicks with
+the middle mouse button.
+
+The optional +comment+ argument is ignored, but will be printed to the log file
+for debugging purposes.
+
+*Syntax*:
+---------------
+nop [<comment>]
+---------------
+
+*Example*:
+----------------------------------------------
+# Disable focus change for clicks on titlebars
+# with the middle mouse button
+bindsym button2 nop
+----------------------------------------------
+
=== i3bar control
There are two options in the configuration of each i3bar instance that can be
gets started in any way) and the window(s) which appear.</p></div>\r
<div class="paragraph"><p>Imagine for example using dmenu: The user starts dmenu by pressing Mod+d, dmenu\r
gets started with PID 3390. The user then decides to launch Firefox, which\r
-takes a long time. So he enters firefox into dmenu and presses enter. Firefox\r
+takes a long time. So they enter firefox into dmenu and press enter. Firefox\r
gets started with PID 4001. When it finally finishes loading, it creates an X11\r
window and uses MapWindow to make it visible. This is the first time i3\r
actually gets in touch with Firefox. It decides to map the window, but it has\r
</dt>\r
<dd>\r
<p>\r
- The most simple block you can think of is one which just includes the\r
- only required key, the <tt>full_text</tt> key. i3bar will display the string\r
- value parsed as\r
- <a href="https://developer.gnome.org/pango/stable/PangoMarkupFormat.html">Pango markup</a>.\r
+ The <tt>full_text</tt> will be displayed by i3bar on the status line. This is the\r
+ only required key.\r
</p>\r
</dd>\r
<dt class="hdlist1">\r
is 9 pixels), since the separator line is drawn in the middle.\r
</p>\r
</dd>\r
+<dt class="hdlist1">\r
+markup\r
+</dt>\r
+<dd>\r
+<p>\r
+ A string that indicates how the text of the block should be parsed. Set to\r
+ <tt>"pango"</tt> to use <a href="https://developer.gnome.org/pango/stable/PangoMarkupFormat.html">Pango markup</a>.\r
+ Set to <tt>"none"</tt> to not use any markup (default).\r
+</p>\r
+</dd>\r
</dl></div>\r
<div class="paragraph"><p>If you want to put in your own entries into a block, prefix the key with an\r
underscore (_). i3bar will ignore all keys it doesn’t understand, and prefixing\r
</div>\r
</div>\r
</div>\r
+<div class="sect1">\r
+<h2 id="_troubleshooting">4. Troubleshooting</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_restoring_a_vertically_split_workspace">4.1. Restoring a vertically split workspace</h3>\r
+<div class="paragraph"><p>When using <tt>i3-save-tree</tt> with the <tt>--workspace</tt> switch, only the <strong>contents</strong> of\r
+the workspace will be dumped. This means that properties of the workspace\r
+itself will be lost.</p></div>\r
+<div class="paragraph"><p>This is relevant for, e.g., a vertically split container as the base container of\r
+a workspace. Since the split mode is a property of the workspace, it will not be\r
+stored. In this case, you will have to manually wrap your layout in such a\r
+container:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>// vim:ts=4:sw=4:et\r
+{\r
+ // this is a manually added container to restore the vertical split\r
+ "layout": "splitv",\r
+ "percent": 0.5,\r
+ "type": "con",\r
+ "nodes": [\r
+\r
+ // the dumped workspace layout goes here\r
+\r
+ ]\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
</div>\r
<div id="footnotes"><hr /></div>\r
<div id="footer" lang="de">\r
</div></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_workspace_buttons">5.10. Workspace buttons</h3>\r
+<h3 id="_custom_separator_symbol">5.10. Custom separator symbol</h3>\r
+<div class="paragraph"><p>Specifies a custom symbol to be used for the separator as opposed to the vertical,\r
+one pixel thick separator. Note that you may have to adjust the <tt>sep_block_width</tt>\r
+property.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>separator_symbol <symbol></tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bar {\r
+ separator_symbol ":|:"\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_workspace_buttons">5.11. Workspace buttons</h3>\r
<div class="paragraph"><p>Specifies whether workspace buttons should be shown or not. This is useful if\r
you want to display a statusline-only bar containing additional information.</p></div>\r
<div class="paragraph"><p>The default is to show workspace buttons.</p></div>\r
</div></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_strip_workspace_numbers">5.11. Strip workspace numbers</h3>\r
+<h3 id="_strip_workspace_numbers">5.12. Strip workspace numbers</h3>\r
<div class="paragraph"><p>Specifies whether workspace numbers should be displayed within the workspace\r
buttons. This is useful if you want to have a named workspace that stays in\r
order on the bar according to its number without displaying the number prefix.</p></div>\r
</div></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_binding_mode_indicator">5.12. Binding Mode indicator</h3>\r
+<h3 id="_binding_mode_indicator">5.13. Binding Mode indicator</h3>\r
<div class="paragraph"><p>Specifies whether the current binding mode indicator should be shown or not.\r
This is useful if you want to hide the workspace buttons but still be able\r
to see the current binding mode indicator.\r
</div></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_colors">5.13. Colors</h3>\r
+<h3 id="_colors">5.14. Colors</h3>\r
<div class="paragraph"><p>As with i3, colors are in HTML hex format (#rrggbb). The following colors can\r
be configured at the moment:</p></div>\r
<div class="dlist"><dl>\r
</div></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_i3bar_control">6.16. i3bar control</h3>\r
+<h3 id="_nop">6.16. Nop</h3>\r
+<div class="paragraph"><p>There is a no operation command <tt>nop</tt> which allows you to override default\r
+behavior. This can be useful for, e.g., disabling a focus change on clicks with\r
+the middle mouse button.</p></div>\r
+<div class="paragraph"><p>The optional <tt>comment</tt> argument is ignored, but will be printed to the log file\r
+for debugging purposes.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>nop [<comment>]</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Disable focus change for clicks on titlebars\r
+# with the middle mouse button\r
+bindsym button2 nop</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_i3bar_control">6.17. i3bar control</h3>\r
<div class="paragraph"><p>There are two options in the configuration of each i3bar instance that can be\r
changed during runtime by invoking a command through i3. The commands <tt>bar\r
hidden_state</tt> and <tt>bar mode</tt> allow setting the current hidden_state\r