From 25aae13331a42e8c1a8aa64ee49384dd3eacf132 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Fri, 23 Oct 2009 19:53:36 +0200 Subject: [PATCH] Update userguide --- docs/modes.png | Bin 0 -> 5826 bytes docs/stacklimit.png | Bin 0 -> 4988 bytes docs/userguide | 158 +++++++++++++++++++++++++++++++++++++++----- 3 files changed, 140 insertions(+), 18 deletions(-) create mode 100644 docs/modes.png create mode 100644 docs/stacklimit.png diff --git a/docs/modes.png b/docs/modes.png new file mode 100644 index 0000000000000000000000000000000000000000..656a6dbb91d284b849aedf214a7c494baf031d16 GIT binary patch literal 5826 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 literal 0 HcmV?d00001 diff --git a/docs/stacklimit.png b/docs/stacklimit.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5bed7a6c4a424bdf7f1ed5607d875f99668dcf GIT binary patch literal 4988 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 literal 0 HcmV?d00001 diff --git a/docs/userguide b/docs/userguide index 0789f56d1..bc73c5b9f 100644 --- a/docs/userguide +++ b/docs/userguide @@ -46,13 +46,22 @@ image:two_columns.png[Two columns] === Changing mode of containers -A container can be in two modes at the moment (more to be implemented later): -+default+ or +stacking+. In default mode, clients are sized so that every client -gets an equal amount of space of the container. In stacking mode, only one -focused client of the container is displayed and you get a list of windows -at the top of the container. +A container can be in different modes: -To switch the mode, press +Mod1+h+ for stacking and +Mod1+e+ for default. +default:: +Windows are sized so that every window gets an equal amount of space of the +container. +stacking:: +Only the focused client of the container is displayed and you get a list of +windows at the top of the container. +tabbed:: +The same principle as +stacking+, but the list of windows at the top is only +a single line which will be vertically split. + +To switch the mode, press +Mod1+e+ for default, +Mod1+h+ for stacking and ++Mod1+w+ for tabbed. + +image:modes.png[Container modes] === Toggling fullscreen mode for a window @@ -102,12 +111,14 @@ To move a window to another workspace, simply press +Mod1+Shift+num+ where Similarly to switching workspaces, the target workspace will be created if it does not yet exist. -=== Resizing columns +=== Resizing columns/rows -To resize columns just grab the border between the two columns and move it to -the wanted size. +To resize columns or rows just grab the border between the two columns/rows +and move it to the wanted size. Please keep in mind that each cell of the table +holds a +container+ and thus you cannot horizontally resize single windows. -A command for doing this via keyboard will be implemented soon. +See <> for how to configure i3 to be able to resize +columns/rows with your keyboard. === Restarting i3 inplace @@ -246,6 +257,22 @@ floating_modifier floating_modifier Mod1 -------------------------------- +=== Layout mode for new containers + +This option is only available when using the new lexer/parser (pass +-l+ to i3 +when starting). It determines in which mode new containers will start. See also +<>. + +*Syntax*: +--------------------------------------------- +new_container +new_container stack-limit +--------------------------------------------- + +*Examples*: +--------------------- +new_container tabbed +--------------------- === Variables @@ -420,20 +447,21 @@ section. === Manipulating layout -To change the layout of the current container to stacking or back to default -layout, use +s+ or +d+. To make the current client (!) fullscreen, use +f+, to -make it floating (or tiling again) use +t+: +To change the layout of the current container to stacking, use +s+, for default +use +d+ and for tabbed, use +T+. To make the current client (!) fullscreen, +use +f+, to make it floating (or tiling again) use +t+: *Examples*: -------------- -bind Mod1+s s -bind Mod1+l d +bindsym Mod1+s s +bindsym Mod1+l d +bindsym Mod1+w T # Toggle fullscreen -bind Mod1+f f +bindsym Mod1+f f # Toggle floating/tiling -bind Mod1+t t +bindsym Mod1+t t -------------- === Focussing/Moving/Snapping clients/containers/screens @@ -494,6 +522,39 @@ bindsym Mod1+o nw bindsym Mod1+p pw ------------------------- +[[resizingconfig]] + +=== Resizing columns/rows + +If you want to resize columns/rows using your keyboard, you can use the ++resize+ command, I recommend using it a +mode+ (you need to use the new +lexer/parser for that, so pass +-l+ to i3 when starting): + +.Example: Configuration file, defining a mode for resizing +---------------------------------------------------------------------- +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # They resize the border in the direction you pressed, e.g. + # when pressing left, the window is resized so that it has + # more space on its left + + bindsym n resize left -10 + bindsym Shift+n resize left +10 + + bindsym r resize bottom +10 + bindsym Shift+r resize bottom -10 + + bindsym t resize top -10 + bindsym Shift+t resize top +10 + + bindsym d resize right +10 + bindsym Shift+d resize right -10 + + bind 36 mode default +} +---------------------------------------------------------------------- + === Jumping to specific windows Especially when in a multi-monitor environment, you want to quickly jump to a specific @@ -517,6 +578,37 @@ or you can specify the position of the client if you always use the same layout. bindsym Mod1+a jump "urxvt/VIM" -------------------------------------- +=== VIM-like marks (mark/goto) + +This feature is like the jump feature: It allows you to directly jump to a +specific window (this means switching to the appropriate workspace and setting +focus to the windows). However, you can directly mark a specific window with +an arbitrary label and use it afterwards, that is, you do not need to ensure +that your windows have unique classes or titles and you do not need to change +your configuration file. + +As the command needs to include the label with which you want to mark the +window, you cannot simply bind it to a key (or, you could bind it to a key and +only use the set of labels for which you created bindings). +i3-input+ is a +tool created 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. + +*Syntax*: +----------------- +mark +goto +----------------- + +*Examples*: +--------------------------------------- +# Read 1 character and mark the current window with this character +bindsym Mod1+m exec i3-input -p 'mark ' -l 1 -P 'Mark: ' + +# Read 1 character and go to the window with the character +bindsym Mod1+g exec i3-input -p 'goto ' -l 1 -P 'Goto: ' +--------------------------------------- + === Traveling the focus stack This mechanism can be thought of as the opposite of the +jump+ command. It travels @@ -544,7 +636,8 @@ ft:: To change the border of the current client, you can use +bn+ to use the normal border (including window title), +bp+ to use a 1-pixel border (no window title) -and +bb+ to make the client borderless. +and +bb+ to make the client borderless. There also is +bt+ which will toggle +the different border styles. *Examples*: ------------------ @@ -553,6 +646,35 @@ bindsym Mod1+y bp bindsym Mod1+u bb ------------------ +[[stack-limit]] + +=== Changing the stack-limit of a container + +If you have a single container with a lot of windows inside (say, more than +10), the default layout of a stacking container can get a little unhandy. +Depending on your screen’s size, you might end up only using half of the +titlebars of each window in the container. + +Using the +stack-limit+ command, you can limit the amount of rows or columns +in a stacking container. i3 will create columns or rows (depending on what +you limited) automatically as needed. + +*Syntax*: +-------------------------------- +stack-limit +-------------------------------- + +*Examples*: +------------------- +# I always want to have two window titles in one line +stack-limit cols 2 + +# Not more than 5 rows in this stacking container +stack-limit rows 5 +------------------- + +image:stacklimit.png[Container limited to two columns] + === Reloading/Restarting/Exiting You can make i3 reload its configuration file with +reload+. You can also