i3

From ParabolaWiki
Jump to: navigation, search

i3 is a dynamic tiling window manager inspired by wmii that is primarily targeted at developers and advanced users.

1 Introduction

The developers' attempt to hack and fix wmii led to the creation of i3. At the time Wmii didn't provide certain features, like support for Xinerama, and lacked source code comments and documentation.

Clients within i3 are either allowed to float or placed into containers. Clients can be stacked or tabbed within containers.

2 Installation

i3 is located in the community repository. Installing i3 can be accomplished by choosing the i3 group, which includes the packages i3lock, i3status and i3-wm.

# pacman -S i3

Alternatively, you can install the window manager exclusively:

# pacman -S i3-wm

3 Running i3

Edit your ~/.xinitrc and add:

exec i3

If you want i3 to log its output (useful for debugging), add this line to ~/.xinitrc:

exec i3 -V >>~/.i3/i3log >&1
Note: Make sure you install a terminal emulator before running, or i3 may be unusable.

4 Basic Keybindings and Window Management

The default keybindings mostly depend on Mod1 (usually mapped to Alt) as the basic modifier key sometimes combined with Ctrl or Shift. Other binds use Mod3 as the base modifier (often the Windows-key). To identify the different Mod# keys on your system, use the command xmodmap without arguments.

The key combinations are configured in the file ~/.i3/config (or, if it does not exist, /etc/i3/config).

The default key combinations rely on key codes and not on the actual letters of your keyboard layout! You can replace the bind directives in the config with bindsym directives if you do not like this. For more info on configuration see the next section.

Some of the most important keybindings include the following:

  • Run a program: Mod1+v
  • Create a new terminal: Mod1+Enter
  • Switch between different windows: Mod1+ any of "jkl;" or cursor keys (somewhat Vim-like keybindings)
  • Move a window: Mod1+Shift+ any of "jkl;" or cursor keys
  • Switch to a different workspace: Mod1+ any number
  • Move window to a different workspace: Mod1+Shift+ any number

Note that i3 uses containers for window management. So in contrast to Wmii you can also tile windows horizontally. To do this, simply move a window up or down (with Mod1+Shift+DirectionKey) beyond the edge of the screen. A new row will appear. You can then use Mod4+Ctrl+DirectionKey to enlarge the window into the chosen direction. DirectionKey can be the arrow keys as well as "jkl;".

There are 3 container modes:

  • Normal (columns): Mod1+e
  • Tabbed: Mod1+w
  • Stacked: Mod1+s

Additionally, you can put a window into fullscreen mode with Mod1+f.

i3 keybinding cheatsheet (pdf)

5 Configuration

i3 is configured using a simple text file. It first looks for ~/.i3/config and if it doesn't exist, reads the default config at /etc/i3/config. So to start customizing, copy the config file to your home directory:

cp /etc/i3/config ~/.i3/config

The config allows you to change such things as:

  • Border colors
  • Font
  • Keybindings
  • Workspace names
  • Default container layout
  • Assignment of apps to specific workspaces

The i3 User's Guide gives a nice overview of the config settings.

For users seeking to convert their configuration to v4, i3-wm comes with a perl script for conversion:

mv config config.old #save the old file
i3-migrate-config-to-v4 config.old > config

Have a look at the changes!

6 Status bar

The internal status bar, i3-wsbar, was deprecated and replaced by i3bar in i3 v4.0.

6.1 New method: i3bar

Unlike i3-wsbar, which requires dzen2, i3bar does not have any dependecies other than i3-wm. It can be used to view information generated by conky or i3status. For example (as of version 4.1):

~/.i3/config
bar {
    output            LVDS1
    status_command    i3status
    position          top
    mode              hide
    workspace_buttons yes
    tray_output       none
    
    font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1

    colors {
        background #000000
        statusline #ffffff

        focused_workspace  #ffffff #285577
        active_workspace   #ffffff #333333
        inactive_workspace #888888 #222222
        urgent_workspace   #ffffff #900000
    }
}

For further information see the Configuring i3bar section of the official User Guide.

6.2 Old method: i3-wsbar and dzen

Dzen can be placed in the status bar at the bottom of the screen. Information for dzen2 can be generated using i3status

i3status | dzen2 &

or conky

conky | dzen2 &

The svn development version of dzen2 offers a -dock option, which puts dzen2 at the bottom of the screen and tells i3 not to manage it.

For further information see External workspace bars.

Note: Dzen color codes can be used in your conky configuration file.

6.3 Comparison of i3bar and dzen2

This comparison of i3bar and dzen2 only takes into account how well the two programs can handle the input from conky or i3status.

Program Color Codes Formatting Special Fonts Dock Trayer
i3bar No No, right aligned No (UTF8 only) Yes Yes (git)
dzen2 Yes No, left aligned Yes Yes (the svn version) No

Though development of i3bar is very active and support for custom formatting and fonts has been announced, dzen2-svn has an edge over i3bar (as of August 7th). From the i3bar man page:

i3bar does not yet support formatting in the displayed statusline. However it does support setting colors for the
bar, the workspace-buttons and the statusline.

7 Other tools

i3 currently uses dmenu as a application launcher, which is bound by default to Mod1+d.

8 Additional sources

9 Acknowledgement

This wiki article is based on ArchWiki. We may have removed non-FSDG bits from it.