I3

i3 is Article description::a minimalist [[window manager, focusing on keyboard commands to manipulate windows.]] By default all windows are in full-screen in order to best maximize the use of the screen and have less fiddling with positioning. Even with the  USE flag enabled its installed size is less than 1.6 MB. It also uses less than 10 MB of RAM under normal operating conditions.

dmenu
It is also assumed that dmenu will be emerged. Available USE flags include:

i3status
i3status provides status information that can be used by i3bar which, by default, sits at the bottom of the screen. Available USE flags include:

i3blocks
A more (relative to the more popular i3status) advanced, extensively-customizable status (for the i3bar config to use) is provided by i3block.

i3lock
i3lock is an i3 compatible screen locker.

Configuration
i3 can be extensively customized by editing its config. The main user config file for i3 can be either in or. By default when i3 is run for the first time a new config file is added to and a dialog asks what the modifier key should be set to. The default modifier key is and a popular alternative is the  (Windows) key (referred to as   in ). A popular starting point for writing the config file is copying the system config file to one of the user config locations if one is not already generated.

Starting i3
Most users will probably want i3 started via the X server's file:

After this code has been added to a user's file, running  will start i3.

It should be noted that when not using a login manager, security issues arise when relying on a screen lock program such as. While locking the screen will prevent someone from accessing the running X session, it does not prevent them from going to the tty where X was launched, killing X, and gaining access to the logged in user's account. To prevent this, simply use the following:

This will ensure that if X is terminated for any reason, the user will be logged out.

Default keybinding
Additional keybinding information can be found on upstream's website.

Basics

 * Spawn a new terminal: +


 * Kill the focused window: ++

Moving around

 * Move the focus: +


 * Alternative ( like) way of moving the focus: +,,,


 * Switch to workplace num: +


 * Set vertical split mode for the focused container: +


 * Set horizontal split mode for the focused container: +

Moving windows

 * Toggle floating for focused window: ++


 * Move focused window: +


 * Resize focused window: +


 * Resize focused windows in tiled mode: +


 * Open focused window in fullscreen: +

Utilities keybinding

 * Open (or an alternative application launcher): +

Administrative keybinding

 * Exit i3: ++


 * Restart i3: ++

Adding commands
In the user config file, adding a keyboard command is as simple as adding a line. For example, adding the following to the end of the config will open the utility when ++ is pressed:

You can also have it use the default key that all other commands use by using the built-in variable:

You can also set you own variable names or override values of variables. It works by replacing text, like the c pre-processor, and has no concept other than strings.

Changing default terminal
Default terminal can be configured in by changing   on terminal of your choice. Alternatively, you can set the TERMINAL environment variable.

Adding modes
You can also add in what is called a mode. An example is the resize mode for floating windows. This changes what keyboard commands are bound and will be able to run. This is useful if there is a large set of commands often run together, or that override the keys on the keyboard as in the example below which takes over the arrow keys and the vim-style movement keys.

Enabling multimedia keys
You can add multimedia key bindings in your i3 config. Below are example of working multimedia keys with i3wm.

For a complete reference, visit the i3 official user guide.

Tips and tricks
Section for I3 users to share their tips and tricks.

Setting a wallpaper
A wallpaper can be easily set using Feh. Example configuration line:.

Adding Alt+Tab functionality
Add the first 2 lines to your i3 config file to enable +  to switch to next open workspace and  +  +  to switch to the previous one. The third line uses +  to jump back to your last used workspace:

The Scratchpad (i3's solution to minimising windows)
The i3 wm has an invisible workspace called the Scratchpad workspace. Users can move windows to and from it to hide them from the main workspaces. The i3 commands  and   hide and show windows respectively. It may be useful to bind these to keys within your config:

Configuring gaps between tiled windows (i3-gaps only)
A detailed description of can be found on the [Github page].

The following lines remove the window decorations and add gaps between the windows. will disable the gaps if only one window is present on a workspace.

Change the values for preference. This will put a 5px gap between all containers and the edge of the screen.

sets the distance between adjacent containers. sets the distance between containers and the edge of the screen. It is worth noting that the actual distance from the containers to the edge of the screen is the sum of the  and   values. The actual distance between adjacent containers is the  value alone.

i3 softbricks if xrandr with scale is used
i3 softbricks if (or any scale above 1.1x1.1) is invoked.

Partially solved? , resolving on https://github.com/i3/i3/issues/3392

1. xrandr with --scale is still unable to work correctly (results in softbrick with GPU glitches if used) with multiple outputs. Temporary solution is to invoke xorg-server for each output, but it will make them independant from each other meaning that you can NOT drag windows through multiple outputs.

2. xrandr with --scale sometimes work and sometimes it doesn't...

Reported by Kreyren (talk) 14:47, 15 September 2018 (UTC)

Changing kill command on Alt+F4 does not affect terminal.
Changing  section   on   does not affect terminal emulator -> unable to close terminal emulator.

If anyone knows the solution please share it. Kreyren (talk) 18:26, 8 September 2018 (UTC)

Troubleshooting
This section was created to help users diagnose their i3.

Error: status_command not found or is missing a library dependency (exit 127)
The default setting of  in the  expects installed i3status. This error could be resolved by either emerging or changing the.

Error while emerging: fatal error: GENERATED_config_enums.h: No such file or directory
Check the value of MAKEOPTS environment variable. If the amount of make jobs is set to higher than  – set it to   value for the duration of compilation:

To permanently use this configuration for emerging i3 – set up /etc/portage/package.env for i3.

External resources

 * i3 official user guide
 * i3 reddit
 * Online Colorscheme Configurator for i3