update the userguide for tree (not complete yet)
This commit is contained in:
parent
7ae0c9c973
commit
a26a11c609
389
docs/userguide
389
docs/userguide
|
@ -1,12 +1,18 @@
|
||||||
i3 User’s Guide
|
i3 User’s Guide
|
||||||
===============
|
===============
|
||||||
Michael Stapelberg <michael+i3@stapelberg.de>
|
Michael Stapelberg <michael+i3@stapelberg.de>
|
||||||
March 2010
|
May 2011
|
||||||
|
|
||||||
|
*********************************************************************************
|
||||||
|
This document is not yet finished. The tree branch is still in development. The
|
||||||
|
information provided here should be correct, just not complete yet.
|
||||||
|
*********************************************************************************
|
||||||
|
|
||||||
This document contains all the information you need to configure and use the i3
|
This document contains all the information you need to configure and use the i3
|
||||||
window manager. If it does not, please contact me on IRC, Jabber or E-Mail and
|
window manager. If it does not, please contact us on IRC (preferred) or post your
|
||||||
I’ll help you out.
|
question(s) on the mailing list.
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
== Default keybindings
|
== Default keybindings
|
||||||
|
|
||||||
For the "too long; didn’t read" people, here is an overview of the default
|
For the "too long; didn’t read" people, here is an overview of the default
|
||||||
|
@ -26,42 +32,48 @@ you can also use keysymbols, see <<keybindings>>).
|
||||||
|
|
||||||
The red keys are the modifiers you need to press (by default), the blue keys
|
The red keys are the modifiers you need to press (by default), the blue keys
|
||||||
are your homerow.
|
are your homerow.
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
== Using i3
|
== Using i3
|
||||||
|
|
||||||
|
Throughout this guide, the keyword +mod+ will be used to refer to the
|
||||||
|
configured modifier. This is the windows key (mod4) by default, with alt (mod1)
|
||||||
|
being a popular alternative.
|
||||||
|
|
||||||
=== Opening terminals and moving around
|
=== Opening terminals and moving around
|
||||||
|
|
||||||
One very basic operation is opening a new terminal. By default, the keybinding
|
One very basic operation is opening a new terminal. By default, the keybinding
|
||||||
for this is Mod1+Enter, that is Alt+Enter in the default configuration. By
|
for this is mod+Enter, that is Win+Enter in the default configuration. By
|
||||||
pressing Mod1+Enter, a new terminal will be opened. It will fill the whole
|
pressing mod+Enter, a new terminal will be opened. It will fill the whole
|
||||||
space available on your screen.
|
space available on your screen.
|
||||||
|
|
||||||
image:single_terminal.png[Single terminal]
|
image:single_terminal.png[Single terminal]
|
||||||
|
|
||||||
It is important to keep in mind that i3 uses a table to manage your windows. At
|
If you now open another terminal, i3 will place it next to the current one,
|
||||||
the moment, you have exactly one column and one row which leaves you with one
|
splitting the screen size in half. Depending on your monitor, i3 will put the
|
||||||
cell. In this cell there is a container, which is where your new terminal is
|
new window right to the old window (for widescreen) or below the old window
|
||||||
opened.
|
(rotated displays).
|
||||||
|
|
||||||
If you now open another terminal, you still have only one cell. However, the
|
|
||||||
container in that cell holds both of your terminals. So, a container is just a
|
|
||||||
group of clients with a specific layout. Containers can be resized by adjusting
|
|
||||||
the size of the cell that holds them.
|
|
||||||
|
|
||||||
image:two_terminals.png[Two terminals]
|
image:two_terminals.png[Two terminals]
|
||||||
|
|
||||||
To move the focus between the two terminals, you use the direction keys which
|
To move the focus between the two terminals, you use the direction keys which
|
||||||
you may know from the editor +vi+. However, in i3, your homerow is used for
|
you may know from the editor +vi+. However, in i3, your homerow is used for
|
||||||
these keys (in +vi+, the keys are shifted to the left by one for compatibility
|
these keys (in +vi+, the keys are shifted to the left by one for compatibility
|
||||||
with most keyboard layouts). Therefore, +Mod1+J+ is left, +Mod1+K+ is down,
|
with most keyboard layouts). Therefore, +mod+J+ is left, +mod+K+ is down,
|
||||||
+Mod1+L+ is up and `Mod1+;` is right. So, to switch between the terminals,
|
+mod+L+ is up and `mod+;` is right. So, to switch between the terminals,
|
||||||
use +Mod1+K+ or +Mod1+L+.
|
use +mod+K+ or +mod+L+.
|
||||||
|
|
||||||
To create a new row/column (and a new cell), you can simply move a terminal (or
|
At the moment, your workspace is split (it contains two terminals) in a
|
||||||
any other window) in the direction you want to expand your table. So, let’s
|
specific direction (horizontal by default). Every window can be split
|
||||||
expand the table to the right by pressing `Mod1+Shift+;`.
|
horizontally or vertically again, just like the workspace. The terminology is
|
||||||
|
"window" for a container that actually contains an X11 window (like a terminal
|
||||||
|
or browser) and "split container" for containers that consist of one or more
|
||||||
|
windows.
|
||||||
|
|
||||||
image:two_columns.png[Two columns]
|
TODO: picture of the tree
|
||||||
|
|
||||||
|
To split a window vertically, press +mod+v+. To split it horizontally, press
|
||||||
|
+mod+h+.
|
||||||
|
|
||||||
=== Changing container modes
|
=== Changing container modes
|
||||||
|
|
||||||
|
@ -85,15 +97,19 @@ image:modes.png[Container modes]
|
||||||
=== Toggling fullscreen mode for a window
|
=== Toggling fullscreen mode for a window
|
||||||
|
|
||||||
To display a window fullscreen or to go out of fullscreen mode again, press
|
To display a window fullscreen or to go out of fullscreen mode again, press
|
||||||
+Mod1+f+.
|
+mod+f+.
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
TODO: not yet implemented
|
||||||
|
|
||||||
There is also a global fullscreen mode in i3 in which the client will use all
|
There is also a global fullscreen mode in i3 in which the client will use all
|
||||||
available outputs. To use it, or to get out of it again, press +Mod1+Shift+f+.
|
available outputs. To use it, or to get out of it again, press +mod+Shift+f+.
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
=== Opening other applications
|
=== Opening other applications
|
||||||
|
|
||||||
Aside from opening applications from a terminal, you can also use the handy
|
Aside from opening applications from a terminal, you can also use the handy
|
||||||
+dmenu+ which is opened by pressing +Mod1+v+ by default. Just type the name
|
+dmenu+ which is opened by pressing +mod+p+ by default. Just type the name
|
||||||
(or a part of it) of the application which you want to open. The application
|
(or a part of it) of the application which you want to open. The application
|
||||||
typed has to be in your +$PATH+ for this to work.
|
typed has to be in your +$PATH+ for this to work.
|
||||||
|
|
||||||
|
@ -115,7 +131,7 @@ depends on the application.
|
||||||
|
|
||||||
Workspaces are an easy way to group a set of windows. By default, you are on
|
Workspaces are an easy way to group a set of windows. By default, you are on
|
||||||
the first workspace, as the bar on the bottom left indicates. To switch to
|
the first workspace, as the bar on the bottom left indicates. To switch to
|
||||||
another workspace, press +Mod1+num+ where +num+ is the number of the workspace
|
another workspace, press +mod+num+ where +num+ is the number of the workspace
|
||||||
you want to use. If the workspace does not exist yet, it will be created.
|
you want to use. If the workspace does not exist yet, it will be created.
|
||||||
|
|
||||||
A common paradigm is to put the web browser on one workspace, communication
|
A common paradigm is to put the web browser on one workspace, communication
|
||||||
|
@ -129,18 +145,15 @@ focus to that screen.
|
||||||
|
|
||||||
=== Moving windows to workspaces
|
=== Moving windows to workspaces
|
||||||
|
|
||||||
To move a window to another workspace, simply press +Mod1+Shift+num+ where
|
To move a window to another workspace, simply press +mod+Shift+num+ where
|
||||||
+num+ is (like when switching workspaces) the number of the target workspace.
|
+num+ is (like when switching workspaces) the number of the target workspace.
|
||||||
Similarly to switching workspaces, the target workspace will be created if
|
Similarly to switching workspaces, the target workspace will be created if
|
||||||
it does not yet exist.
|
it does not yet exist.
|
||||||
|
|
||||||
=== Resizing columns/rows
|
=== Resizing
|
||||||
|
|
||||||
To resize columns or rows, just grab the border between the two columns/rows
|
The easiest way to resize a container is by using the mouse: Grab the border
|
||||||
and move it to the wanted size. Please keep in mind that each cell of the table
|
and move it to the wanted size.
|
||||||
holds a +container+ and thus you cannot horizontally resize single windows. If
|
|
||||||
you need applications with different horizontal sizes, place them in seperate
|
|
||||||
cells one above the other.
|
|
||||||
|
|
||||||
See <<resizingconfig>> for how to configure i3 to be able to resize
|
See <<resizingconfig>> for how to configure i3 to be able to resize
|
||||||
columns/rows with your keyboard.
|
columns/rows with your keyboard.
|
||||||
|
@ -148,35 +161,21 @@ columns/rows with your keyboard.
|
||||||
=== Restarting i3 inplace
|
=== Restarting i3 inplace
|
||||||
|
|
||||||
To restart i3 inplace (and thus get into a clean state if there is a bug, or
|
To restart i3 inplace (and thus get into a clean state if there is a bug, or
|
||||||
to upgrade to a newer version of i3) you can use +Mod1+Shift+r+. Be aware,
|
to upgrade to a newer version of i3) you can use +mod+Shift+r+.
|
||||||
though, that this kills your current layout and all the windows you have opened
|
|
||||||
will be put in a default container in only one cell. Saving layouts will be
|
|
||||||
implemented in a later version.
|
|
||||||
|
|
||||||
=== Exiting i3
|
=== Exiting i3
|
||||||
|
|
||||||
To cleanly exit i3 without killing your X server, you can use +Mod1+Shift+e+.
|
To cleanly exit i3 without killing your X server, you can use +mod+Shift+e+.
|
||||||
|
|
||||||
=== Snapping
|
|
||||||
|
|
||||||
Snapping is a mechanism to increase/decrease the colspan/rowspan of a container.
|
|
||||||
Colspan/rowspan is the number of columns/rows a specific cell of the table
|
|
||||||
consumes. This is easier explained by giving an example, so take the following
|
|
||||||
layout:
|
|
||||||
|
|
||||||
image:snapping.png[Snapping example]
|
|
||||||
|
|
||||||
To use the full size of your screen, you can now snap container 3 downwards
|
|
||||||
by pressing +Mod1+Control+k+ (or snap container 2 rightwards).
|
|
||||||
|
|
||||||
=== Floating
|
=== Floating
|
||||||
|
|
||||||
Floating mode is the opposite of tiling mode. The position and size of a window
|
Floating mode is the opposite of tiling mode. The position and size of a window
|
||||||
are not managed by i3, but by you. Using this mode violates the tiling
|
are not managed by i3, but by you. Using this mode violates the tiling
|
||||||
paradigm but can be useful for some corner cases like "Save as" dialog
|
paradigm but can be useful for some corner cases like "Save as" dialog
|
||||||
windows, or toolbar windows (GIMP or similar).
|
windows, or toolbar windows (GIMP or similar). Those windows usually set the
|
||||||
|
appropriate hint and are opened in floating mode by default.
|
||||||
|
|
||||||
You can enable floating mode for a window by pressing +Mod1+Shift+Space+. By
|
You can enable floating mode for a window by pressing +mod+Shift+Space+. By
|
||||||
dragging the window’s titlebar with your mouse you can move the window
|
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
|
around. By grabbing the borders and moving them you can resize the window. You
|
||||||
can also do that by using the <<floating_modifier>>.
|
can also do that by using the <<floating_modifier>>.
|
||||||
|
@ -185,6 +184,74 @@ For resizing floating windows with your keyboard, see <<resizingconfig>>.
|
||||||
|
|
||||||
Floating windows are always on top of tiling windows.
|
Floating windows are always on top of tiling windows.
|
||||||
|
|
||||||
|
== Tree
|
||||||
|
|
||||||
|
The most important change and reason for the name is that i3 stores all
|
||||||
|
information about the X11 outputs, workspaces and layout of the windows on them
|
||||||
|
in a tree. The root node is the X11 root window, followed by the X11 outputs,
|
||||||
|
then workspaces and finally the windows themselve. In previous versions of i3
|
||||||
|
we had multiple lists (of outputs, workspaces) and a table for each workspace.
|
||||||
|
That approach turned out to be complicated to use (snapping), understand and
|
||||||
|
implement.
|
||||||
|
|
||||||
|
=== The tree consists of Containers
|
||||||
|
|
||||||
|
The building blocks of our tree are so called +Containers+. A +Container+ can
|
||||||
|
host a window (meaning an X11 window, one that you can actually see and use,
|
||||||
|
like a browser). Alternatively, it could contain one or more +Containers+. A
|
||||||
|
simple example is the workspace: When you start i3 with a single monitor, a
|
||||||
|
single workspace and you open two terminal windows, you will end up with a tree
|
||||||
|
like this:
|
||||||
|
|
||||||
|
image::tree-layout2.png["layout2",float="right"]
|
||||||
|
image::tree-shot4.png["shot4",title="Two terminals on standard workspace"]
|
||||||
|
|
||||||
|
=== Orientation and Split Containers
|
||||||
|
|
||||||
|
[[OrientationSplit]]
|
||||||
|
|
||||||
|
It is only natural to use so-called +Split Containers+ in order to build a
|
||||||
|
layout when using a tree as data structure. In i3, every +Container+ has an
|
||||||
|
orientation (horizontal, vertical or unspecified). So, in our example with the
|
||||||
|
workspace, the default orientation of the workspace +Container+ is horizontal
|
||||||
|
(most monitors are widescreen nowadays). If you change the orientation to
|
||||||
|
vertical (+Alt+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"]
|
||||||
|
|
||||||
|
An interesting new feature of the tree branch is the ability to split anything:
|
||||||
|
Let’s assume you have two terminals on a workspace (with horizontal
|
||||||
|
orientation), focus is on the right terminal. Now you want to open another
|
||||||
|
terminal window below the current one. If you would just open a new terminal
|
||||||
|
window, it would show up to the right due to the horizontal workspace
|
||||||
|
orientation. Instead, press +Alt+v+ to create a +Vertical Split Container+ (to
|
||||||
|
open a +Horizontal Split Container+, use +Alt+h+). Now you can open a new
|
||||||
|
terminal and it will open below the current one:
|
||||||
|
|
||||||
|
image::tree-layout1.png["Layout",float="right"]
|
||||||
|
image::tree-shot1.png["shot",title="Vertical Split Container"]
|
||||||
|
|
||||||
|
unfloat::[]
|
||||||
|
|
||||||
|
You probably guessed it already: There is no limit on how deep your hierarchy
|
||||||
|
of splits can be.
|
||||||
|
|
||||||
|
=== Level up
|
||||||
|
|
||||||
|
Let’s stay with our example from above. We have a terminal on the left and two
|
||||||
|
vertically split terminals on the right, focus is on the bottom right one. When
|
||||||
|
you open a new terminal, it will open below the current one.
|
||||||
|
|
||||||
|
So, how can you open a new terminal window to the *right* of the current one?
|
||||||
|
The solution is to use +level up+, which will focus the +Parent Container+ of
|
||||||
|
the current +Container+. In this case, you would focus the +Vertical Split
|
||||||
|
Container+ which is *inside* the horizontally oriented workspace. Thus, now new
|
||||||
|
windows will be opened to the right of the +Vertical Split Container+:
|
||||||
|
|
||||||
|
image::tree-shot3.png["shot3",title="Level Up, then open new terminal"]
|
||||||
|
|
||||||
|
|
||||||
== Configuring i3
|
== Configuring i3
|
||||||
|
|
||||||
This is where the real fun begins ;-). Most things are very dependant on your
|
This is where the real fun begins ;-). Most things are very dependant on your
|
||||||
|
@ -221,6 +288,9 @@ workspace bar. You can use +xfontsel(1)+ to generate such a font description.
|
||||||
To see special characters (Unicode), you need to use a font which supports
|
To see special characters (Unicode), you need to use a font which supports
|
||||||
the ISO-10646 encoding.
|
the ISO-10646 encoding.
|
||||||
|
|
||||||
|
If i3 cannot open the configured font, it will output an error in the logfile
|
||||||
|
and fall back to a working font.
|
||||||
|
|
||||||
*Syntax*:
|
*Syntax*:
|
||||||
------------------------------
|
------------------------------
|
||||||
font <X core font description>
|
font <X core font description>
|
||||||
|
@ -308,8 +378,12 @@ floating_modifier <Modifiers>
|
||||||
floating_modifier Mod1
|
floating_modifier Mod1
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
=== Layout mode for new containers
|
=== Layout mode for new containers
|
||||||
|
|
||||||
|
TODO: this is workspace_layout. but workspace_layout only works for the first
|
||||||
|
con, right?
|
||||||
|
|
||||||
This option determines in which mode new containers will start. See also
|
This option determines in which mode new containers will start. See also
|
||||||
<<stack-limit>>.
|
<<stack-limit>>.
|
||||||
|
|
||||||
|
@ -323,6 +397,7 @@ new_container stack-limit <cols|rows> <value>
|
||||||
---------------------
|
---------------------
|
||||||
new_container tabbed
|
new_container tabbed
|
||||||
---------------------
|
---------------------
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
=== Border style for new windows
|
=== Border style for new windows
|
||||||
|
|
||||||
|
@ -330,12 +405,12 @@ This option determines which border style new windows will have.
|
||||||
|
|
||||||
*Syntax*:
|
*Syntax*:
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
new_window <bp|bn|bb>
|
new_window <normal|1pixel|borderless>
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
|
||||||
*Examples*:
|
*Examples*:
|
||||||
---------------------
|
---------------------
|
||||||
new_window bp
|
new_window 1pixel
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
=== Variables
|
=== Variables
|
||||||
|
@ -380,21 +455,21 @@ not be put onto any workspace, but will be set floating on the current one.
|
||||||
|
|
||||||
*Syntax*:
|
*Syntax*:
|
||||||
------------------------------------------------------------
|
------------------------------------------------------------
|
||||||
assign ["]window class[/window title]["] [→] [~ | workspace]
|
assign ["]window class[/window title]["] [→] [workspace]
|
||||||
------------------------------------------------------------
|
------------------------------------------------------------
|
||||||
|
|
||||||
*Examples*:
|
*Examples*:
|
||||||
----------------------
|
----------------------
|
||||||
assign urxvt 2
|
assign urxvt 2
|
||||||
assign urxvt → 2
|
assign urxvt → 2
|
||||||
|
assign urxvt → work
|
||||||
assign "urxvt" → 2
|
assign "urxvt" → 2
|
||||||
assign "urxvt/VIM" → 3
|
assign "urxvt/VIM" → 3
|
||||||
assign "gecko" → ~4
|
assign "gecko" → 4
|
||||||
assign "xv/MPlayer" → ~
|
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
Note that the arrow is not required, it just looks good :-). If you decide to
|
Note that the arrow is not required, it just looks good :-). If you decide to
|
||||||
use it, it has to be a UTF-8 encoded arrow, not "->" or something like that.
|
use it, it has to be a UTF-8 encoded arrow, not `->` or something like that.
|
||||||
|
|
||||||
=== Automatically starting applications on i3 startup
|
=== Automatically starting applications on i3 startup
|
||||||
|
|
||||||
|
@ -409,7 +484,7 @@ exec command
|
||||||
|
|
||||||
*Examples*:
|
*Examples*:
|
||||||
--------------------------------
|
--------------------------------
|
||||||
exec sudo i3status | dzen2 -dock
|
exec i3status | dzen2 -dock
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
[[workspace_screen]]
|
[[workspace_screen]]
|
||||||
|
@ -437,26 +512,6 @@ workspace 1 output LVDS1
|
||||||
workspace 5 output VGA1
|
workspace 5 output VGA1
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
=== Named workspaces
|
|
||||||
|
|
||||||
If you always have a certain arrangement of workspaces, you might want to give
|
|
||||||
them names (of course UTF-8 is supported):
|
|
||||||
|
|
||||||
*Syntax*:
|
|
||||||
---------------------------------------
|
|
||||||
workspace <number> <name>
|
|
||||||
workspace <number> output <output> name
|
|
||||||
---------------------------------------
|
|
||||||
|
|
||||||
For more details about the 'output' part of this command, see above.
|
|
||||||
|
|
||||||
*Examples*:
|
|
||||||
--------------------------
|
|
||||||
workspace 1 www
|
|
||||||
workspace 2 work
|
|
||||||
workspace 3 i ♥ workspaces
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
=== Changing colors
|
=== Changing colors
|
||||||
|
|
||||||
You can change all colors which i3 uses to draw the window decorations and the
|
You can change all colors which i3 uses to draw the window decorations and the
|
||||||
|
@ -549,107 +604,73 @@ focus_follows_mouse <yes|no>
|
||||||
focus_follows_mouse no
|
focus_follows_mouse no
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
=== Internal workspace bar
|
|
||||||
|
|
||||||
The internal workspace bar (the thing at the bottom of your screen) is very
|
|
||||||
simple -- it does not provide a way to display custom text and it does not
|
|
||||||
offer advanced customization features. This is intended because we do not
|
|
||||||
want to duplicate functionality of tools like +dzen2+, +xmobar+ and so on
|
|
||||||
(they render bars, we manage windows). Instead, there is an option which will
|
|
||||||
turn off the internal bar completely, so that you can use a separate program to
|
|
||||||
display it (see +i3-wsbar+, a sample implementation of such a program):
|
|
||||||
|
|
||||||
*Syntax*:
|
|
||||||
----------------------
|
|
||||||
workspace_bar <yes|no>
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
*Examples*:
|
|
||||||
----------------
|
|
||||||
workspace_bar no
|
|
||||||
----------------
|
|
||||||
|
|
||||||
== List of commands
|
== List of commands
|
||||||
|
|
||||||
=== Manipulating layout
|
=== Manipulating layout
|
||||||
|
|
||||||
To change the layout of the current container to stacking, use +s+, for default
|
To change the layout of the current container to stacking, use +layout
|
||||||
use +d+ and for tabbed, use +T+. To make the current client (!) fullscreen,
|
stacking+, for default use +layout default+ and for tabbed, use +layout
|
||||||
use +f+, to make it span all outputs, use +fg+, to make it floating (or
|
tabbed+. To make the current client (!) fullscreen, use +fullscreen+, to make
|
||||||
tiling again) use +t+:
|
it floating (or tiling again) use +mode floating+ respectively +mode tiling+
|
||||||
|
(or +mode toggle+):
|
||||||
|
|
||||||
*Examples*:
|
*Examples*:
|
||||||
--------------
|
--------------
|
||||||
bindsym Mod1+s s
|
bindsym Mod1+s layout stacking
|
||||||
bindsym Mod1+l d
|
bindsym Mod1+l layout default
|
||||||
bindsym Mod1+w T
|
bindsym Mod1+w layout tabbed
|
||||||
|
|
||||||
# Toggle fullscreen
|
# Toggle fullscreen
|
||||||
bindsym Mod1+f f
|
bindsym Mod1+f fullscreen
|
||||||
|
|
||||||
# Toggle global fullscreen
|
|
||||||
bindsym Mod1+Shift+f fg
|
|
||||||
|
|
||||||
# Toggle floating/tiling
|
# Toggle floating/tiling
|
||||||
bindsym Mod1+t t
|
bindsym Mod1+t mode toggle
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
=== Focusing/Moving/Snapping clients/containers/screens
|
=== Focusing/Moving containers
|
||||||
|
|
||||||
To change the focus, use one of the +h+, +j+, +k+ and +l+ commands, meaning
|
To change the focus, use one of the +prev h+, +next v+, +prev v+ and +next h+
|
||||||
left, down, up, right (respectively). To focus a container, prefix it with
|
commands, meaning left, down, up, right (respectively).
|
||||||
+wc+. To focus a screen, prefix it with +ws+.
|
|
||||||
|
|
||||||
The same principle applies for moving and snapping: just prefix the command
|
For moving, use +move left+, +move right+, +move down+ and +move up+.
|
||||||
with +m+ when moving and with +s+ when snapping:
|
|
||||||
|
|
||||||
*Examples*:
|
*Examples*:
|
||||||
----------------------
|
----------------------
|
||||||
# Focus clients on the left, bottom, top, right:
|
# Focus clients on the left, bottom, top, right:
|
||||||
bindsym Mod1+j h
|
bindsym Mod1+j prev h
|
||||||
bindsym Mod1+k j
|
bindsym Mod1+k next v
|
||||||
bindsym Mod1+j k
|
bindsym Mod1+j prev v
|
||||||
bindsym Mod1+semicolon l
|
bindsym Mod1+semicolon next h
|
||||||
|
|
||||||
# Move client to the left, bottom, top, right:
|
# Move client to the left, bottom, top, right:
|
||||||
bindsym Mod1+j mh
|
bindsym Mod1+j move left
|
||||||
bindsym Mod1+k mj
|
bindsym Mod1+k move down
|
||||||
bindsym Mod1+j mk
|
bindsym Mod1+j move up
|
||||||
bindsym Mod1+semicolon ml
|
bindsym Mod1+semicolon move right
|
||||||
|
|
||||||
# Snap client to the left, bottom, top, right:
|
|
||||||
bindsym Mod1+j sh
|
|
||||||
bindsym Mod1+k sj
|
|
||||||
bindsym Mod1+j sk
|
|
||||||
bindsym Mod1+semicolon sl
|
|
||||||
|
|
||||||
# Focus container on the left, bottom, top, right:
|
|
||||||
bindsym Mod3+j wch
|
|
||||||
…
|
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
=== Changing workspaces/moving clients to workspaces
|
=== Changing workspaces/moving containers to workspaces
|
||||||
|
|
||||||
To change to a specific workspace, the command is just the number of the
|
To change to a specific workspace, use the +workspace+ command, followed by the
|
||||||
workspace, e.g. +1+ or +3+. To move the current client to a specific workspace,
|
number or name of the workspace. To move containers, use +move workspace+.
|
||||||
prefix the number with an +m+.
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
TODO: not yet implemented
|
||||||
|
|
||||||
You can also switch to the next and previous workspace with the commands +nw+
|
You can also switch to the next and previous workspace with the commands +nw+
|
||||||
and +pw+, which is handy, for example, if you have workspace 1, 3, 4 and 9 and
|
and +pw+, which is handy, for example, if you have workspace 1, 3, 4 and 9 and
|
||||||
you want to cycle through them with a single key combination.
|
you want to cycle through them with a single key combination.
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
*Examples*:
|
*Examples*:
|
||||||
-------------------------
|
-------------------------
|
||||||
bindsym Mod1+1 1
|
bindsym Mod1+1 workspace 1
|
||||||
bindsym Mod1+2 2
|
bindsym Mod1+2 workspace 2
|
||||||
...
|
...
|
||||||
|
|
||||||
bindsym Mod1+Shift+1 m1
|
bindsym Mod1+Shift+1 move workspace 1
|
||||||
bindsym Mod1+Shift+2 m2
|
bindsym Mod1+Shift+2 move workspace 2
|
||||||
...
|
...
|
||||||
|
|
||||||
bindsym Mod1+o nw
|
|
||||||
bindsym Mod1+p pw
|
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
[[resizingconfig]]
|
[[resizingconfig]]
|
||||||
|
@ -659,6 +680,8 @@ bindsym Mod1+p pw
|
||||||
If you want to resize columns/rows using your keyboard, you can use the
|
If you want to resize columns/rows using your keyboard, you can use the
|
||||||
+resize+ command, I recommend using it inside a so called +mode+:
|
+resize+ command, I recommend using it inside a so called +mode+:
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////
|
||||||
|
TODO: mode is not yet implemented
|
||||||
.Example: Configuration file, defining a mode for resizing
|
.Example: Configuration file, defining a mode for resizing
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
mode "resize" {
|
mode "resize" {
|
||||||
|
@ -668,17 +691,17 @@ mode "resize" {
|
||||||
# when pressing left, the window is resized so that it has
|
# when pressing left, the window is resized so that it has
|
||||||
# more space on its left
|
# more space on its left
|
||||||
|
|
||||||
bindsym n resize left -10
|
bindsym j resize shrink left
|
||||||
bindsym Shift+n resize left +10
|
bindsym Shift+j resize grow left
|
||||||
|
|
||||||
bindsym r resize bottom +10
|
bindsym k resize grow bottom
|
||||||
bindsym Shift+r resize bottom -10
|
bindsym Shift+k resize shrink bottom
|
||||||
|
|
||||||
bindsym t resize top -10
|
bindsym l resize shrink top
|
||||||
bindsym Shift+t resize top +10
|
bindsym Shift+l resize grow top
|
||||||
|
|
||||||
bindsym d resize right +10
|
bindsym semicolon resize grow right
|
||||||
bindsym Shift+d resize right -10
|
bindsym Shift+semicolon resize shrink right
|
||||||
|
|
||||||
bindcode 36 mode default
|
bindcode 36 mode default
|
||||||
}
|
}
|
||||||
|
@ -687,29 +710,28 @@ mode "resize" {
|
||||||
bindsym Mod1+r mode resize
|
bindsym Mod1+r mode resize
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
=== Jumping to specific windows
|
=== Jumping to specific windows
|
||||||
|
|
||||||
Often when in a multi-monitor environment, you want to quickly jump to a
|
Often when in a multi-monitor environment, you want to quickly jump to a
|
||||||
specific window. For example, while working on workspace 3 you may want to
|
specific window. For example, while working on workspace 3 you may want to
|
||||||
jump to your mail client to email your boss that you’ve achieved some
|
jump to your mail client to email your boss that you’ve achieved some
|
||||||
important goal. Instead of figuring out how to navigate to your mailclient,
|
important goal. Instead of figuring out how to navigate to your mailclient,
|
||||||
it would be more convenient to have a shortcut.
|
it would be more convenient to have a shortcut. You can use the +focus+ command
|
||||||
|
for that.
|
||||||
|
|
||||||
*Syntax*:
|
*Syntax*:
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
jump ["]window class[/window title]["]
|
[class="class"] focus
|
||||||
jump workspace [ column row ]
|
[title="title"] focus
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
|
|
||||||
You can either use the same matching algorithm as in the +assign+ command
|
|
||||||
(see above) or you can specify the position of the client if you always use
|
|
||||||
the same layout.
|
|
||||||
|
|
||||||
*Examples*:
|
*Examples*:
|
||||||
--------------------------------------
|
------------------------------------------------
|
||||||
# Get me to the next open VIM instance
|
# Get me to the next open VIM instance
|
||||||
bindsym Mod1+a jump "urxvt/VIM"
|
bindsym Mod1+a [class="urxvt" title="VIM"] focus
|
||||||
--------------------------------------
|
------------------------------------------------
|
||||||
|
|
||||||
=== VIM-like marks (mark/goto)
|
=== VIM-like marks (mark/goto)
|
||||||
|
|
||||||
|
@ -728,11 +750,13 @@ for this purpose: It lets you input a command and sends the command to i3. It
|
||||||
can also prefix this command and display a custom prompt for the input dialog.
|
can also prefix this command and display a custom prompt for the input dialog.
|
||||||
|
|
||||||
*Syntax*:
|
*Syntax*:
|
||||||
-----------------
|
------------------------------
|
||||||
mark <identifier>
|
mark <identifier>
|
||||||
goto <identifier>
|
[con_mark="identifier"] focus
|
||||||
-----------------
|
------------------------------
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////
|
||||||
|
TODO: make i3-input replace %s
|
||||||
*Examples*:
|
*Examples*:
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
# Read 1 character and mark the current window with this character
|
# Read 1 character and mark the current window with this character
|
||||||
|
@ -744,7 +768,10 @@ bindsym Mod1+g exec i3-input -p 'goto ' -l 1 -P 'Goto: '
|
||||||
|
|
||||||
Alternatively, if you do not want to mess with +i3-input+, you could create
|
Alternatively, if you do not want to mess with +i3-input+, you could create
|
||||||
seperate bindings for a specific set of labels and then only use those labels.
|
seperate bindings for a specific set of labels and then only use those labels.
|
||||||
|
///////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
TODO: not yet implemented
|
||||||
=== Traveling the focus stack
|
=== Traveling the focus stack
|
||||||
|
|
||||||
This mechanism can be thought of as the opposite of the +jump+ command.
|
This mechanism can be thought of as the opposite of the +jump+ command.
|
||||||
|
@ -767,29 +794,36 @@ tiling::
|
||||||
ft::
|
ft::
|
||||||
If the current window is floating, the next tiling window will be
|
If the current window is floating, the next tiling window will be
|
||||||
selected; and vice-versa.
|
selected; and vice-versa.
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
=== Changing border style
|
=== Changing border style
|
||||||
|
|
||||||
To change the border of the current client, you can use +bn+ to use the normal
|
To change the border of the current client, you can use +border normal+ to use the normal
|
||||||
border (including window title), +bp+ to use a 1-pixel border (no window title)
|
border (including window title), +border 1pixel+ to use a 1-pixel border (no window title)
|
||||||
and +bb+ to make the client borderless. There is also +bt+ which will toggle
|
and +border none+ to make the client borderless.
|
||||||
the different border styles.
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
TODO: not yet implemented
|
||||||
|
There is also +border toggle+ which will toggle the different border styles.
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
*Examples*:
|
*Examples*:
|
||||||
------------------
|
----------------------------
|
||||||
bindsym Mod1+t bn
|
bindsym Mod1+t border normal
|
||||||
bindsym Mod1+y bp
|
bindsym Mod1+y border 1pixel
|
||||||
bindsym Mod1+u bb
|
bindsym Mod1+u border none
|
||||||
------------------
|
----------------------------
|
||||||
|
|
||||||
[[stack-limit]]
|
[[stack-limit]]
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
TODO: not yet implemented
|
||||||
=== Changing the stack-limit of a container
|
=== Changing the stack-limit of a container
|
||||||
|
|
||||||
If you have a single container with a lot of windows inside it (say, more than
|
If you have a single container with a lot of windows inside it (say, more than
|
||||||
10), the default layout of a stacking container can get a little unhandy.
|
10), the default layout of a stacking container can get a little unhandy.
|
||||||
Depending on your screen’s size, you might end up seeing only half of the
|
Depending on your screen’s size, you might end up with only half of the title
|
||||||
titlebars for each window in the container.
|
lines being actually used, wasting a lot of screen space.
|
||||||
|
|
||||||
Using the +stack-limit+ command, you can limit the number of rows or columns
|
Using the +stack-limit+ command, you can limit the number of rows or columns
|
||||||
in a stacking container. i3 will create columns or rows (depending on what
|
in a stacking container. i3 will create columns or rows (depending on what
|
||||||
|
@ -810,6 +844,7 @@ stack-limit rows 5
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
image:stacklimit.png[Container limited to two columns]
|
image:stacklimit.png[Container limited to two columns]
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
=== Reloading/Restarting/Exiting
|
=== Reloading/Restarting/Exiting
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue