Website profiles · Technology insights · Alternatives

i3wm.org

i3 is a tiling window manager with clean, readable and documented code, featuring extended Xinerama support, usage of libxcb instead of xlib and several improvements over wmii

No paid content found
Visit website
Profile views 4 Outbound visits 0 Normal
i3 — i3: improved tiling X11 window manager Full homepage screenshot

At a glance

Category
Development
Language
English
Paid-content signal
No paid content foundObserved
Registered
2011
Hosting
Init7 (Switzerland) Ltd.Inferred
HTTPS certificate trusted
PassedObserved
Last updated

Website review

This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.

What is i3?

i3 is a tiling window manager for X11 on GNU/Linux and BSD. Instead of letting windows overlap and float freely, it arranges them automatically to fill the screen, and you move between them with keyboard shortcuts. It is written from scratch, released under the BSD license, and aimed primarily at advanced users and developers.

Its defining traits, according to the project itself:

  • Tiling with a tree structure. Windows are arranged in a hierarchy rather than simple columns, which allows more flexible layouts.
  • Multi-monitor support. Each workspace is assigned to a virtual screen, so attaching or detaching a monitor (such as a projector) works while the system is running, and rotated monitors are supported.
  • Modal keybindings. Like vim, i3 has modes, so the same keys can do different things in a "resize" mode than in the default mode.
  • An IPC interface. Other programs can subscribe to events and send commands, without depending on a separate core process.
  • Clean, documented code. The stated goals include readable, well-documented source and UTF-8 correctness, using xcb rather than Xlib.
  • Deliberate restraint. Simple borders are the extent of decoration; the project says it is happy with its feature set and focuses on bug fixes and stability rather than new features.

Who it suits: people who prefer keyboard-driven control, want predictable window placement, and are comfortable editing a text configuration file. If you prefer dragging windows around by hand or want heavy visual decoration, a floating desktop environment will feel more natural.

A concrete next step: read the User's Guide on i3 and watch the screencast before installing. It will show you the default keybindings and the tree-based layout in action, which is the fastest way to judge whether the workflow fits how you work.

How does i3's tree-based window layout work compared to column-based tiling?

i3 arranges windows in a tree, not in a fixed set of columns. Each container in that tree is either split horizontally or vertically, and new windows are placed into the focused container according to that split. A workspace can therefore mix rows, columns and nested groups: one side of the screen might be a vertical stack while the other side is split horizontally, without forcing every window into the same column count.

Column-based tiling, as found in simpler managers, treats the workspace as a sequence of columns. You add or remove columns, and windows occupy a slot in one of them. It is predictable and quick to learn, but layouts tend to be uniform. To get a 2x2 grid in a pure column model, you often need a separate stacking or grid mode, or you accept that one column contains two windows.

The practical difference is how you think about a layout:

  • Tree-based (i3): you choose a split direction for the focused container, then open windows into it. Nesting lets you express asymmetric layouts directly.
  • Column-based: you manage a row of columns; each column usually holds one visible window or a stack. Layouts are flatter and more regular.

A useful scenario: you want a wide editor on the left, and on the right a terminal above a browser. In i3 you split the workspace vertically, open the editor, move focus right, split horizontally, then open the terminal and browser. The result is a nested tree: vertical split at the root, horizontal split in the right child. A column manager would typically need an extra layout mode or manual resizing to approximate this.

The trade-off is cognitive overhead. Tree layouts reward users who internalise split direction, focus movement and container manipulation; they can feel fiddly if you just want two or three equal columns. Column layouts are easier to predict but less flexible for mixed arrangements. i3 also uses modes, so resize and other operations can have their own keybindings, which suits users who want many layout commands without dedicating the default mode to all of them.

If you are deciding between them, ask what your typical screen looks like. If it is mostly one window per column and occasional stacking, a column-based manager may be enough. If you regularly want nested, asymmetric arrangements across multiple monitors, i3's tree model is the more direct fit. The project is aimed at advanced users and developers, and its documentation and source are part of the intended experience, so expect to read the User's Guide rather than rely on a graphical settings panel. You can start at i3.

How do I install and configure i3 on GNU/Linux or BSD?

Install i3 from your distribution's package manager, then write a small config file that defines your modifier key, terminal and keybindings. On GNU/Linux, i3 is packaged almost everywhere (Debian/Ubuntu i3, Fedora i3, Arch i3-wm); on BSD, use the ports/pkgsrc package or build from source. i3 is Free and Open Source software under the BSD license, written from scratch, and targets GNU/Linux and BSD — see i3. The project also publishes a User's Guide and a screencast, which are the fastest way to see the intended workflow before you commit to a config.

A practical first run:

  1. Install the package, then log out and pick the "i3" session at your display manager, or run i3 from a TTY with startx.
  2. On first launch i3 offers to create a config; accept it, or copy the shipped default from /etc/i3/config to ~/.config/i3/config.
  3. Reload with your reload binding (default $mod+Shift+r) after each edit, and use i3-msg reload or i3-msg restart if you prefer the command line.

H3 What to configure first

  • Modifier key. The default $mod is the Super/Windows key. If you remap it, change the single set $mod Mod4 line rather than every binding.
  • Terminal and launcher. Point bindsym $mod+Return at the terminal you actually have installed; the default may not be present on a minimal system.
  • Workspaces and monitors. i3 assigns workspaces to virtual screens, so multi-monitor setups work by default. Workspace-to-output bindings let you send a workspace to a specific monitor, and rotated monitors are supported.
  • Modes. i3 implements vim-style modes, so bindings in a resize mode can differ from the default mode.
  • Status bar and IPC. i3bar is configured in the same file, and the IPC interface lets other programs subscribe to events and send commands — useful for scripts, status generators and automation.

H3 Choosing between a default and a hand-built config

Approach Best for Trade-off
Wizard-generated default First install, learning the keybindings Generic; you replace terminal and launcher entries anyway
Distribution example config A known-good base to trim Carries bindings you may never use
Written from scratch Advanced users who want only their own bindings More upfront work; you must cover reload, restart, exit and lock

i3 is explicitly aimed at advanced users and developers, and its stated goals include readable, documented code and a tree structure for arranging windows, which gives more flexible layouts than a purely column-based approach. That matters if you routinely want split directions, tabbed or stacked containers, or floating exceptions for dialogs — not just side-by-side columns. The trade-off is that tiling is a different mental model: expect to learn containers and the tree rather than dragging windows.

Next step: open the User's Guide on i3, copy the default config, and change exactly one thing — your terminal binding — then reload and confirm it works before customising further. Growing the config in small, tested increments is far less frustrating than pasting a large config you don't yet understand.

What are i3's different modes, such as resize mode, and how do I switch between them?

i3's modes are named sets of keybindings that change what your keys do without restarting the window manager. The default mode handles normal window management; other modes exist so that keys which normally launch applications or move focus can instead adjust windows. The resize mode is the standard example: while it is active, the arrow or h/j/k/l keys change the size of the focused window instead of moving focus.

The general switching pattern has three parts:

  • A binding in the default mode enters the named mode, e.g. bindsym $mod+r mode "resize".
  • Bindings inside that mode perform the mode-specific actions, such as resize grow width 10 px or 10 ppt.
  • A binding returns to the default mode, usually Escape or Return, e.g. bindsym Escape mode "default".

Modes are defined in your i3 config, so the exact key that enters resize mode is whatever you choose. i3 ships a default configuration that already includes a resize mode, and the User's Guide on i3 documents the syntax if you want to add your own, such as a mode for launching applications or for moving windows between workspaces.

A practical way to decide whether you need a custom mode: if a task needs repeated keypresses with a temporarily different meaning (resizing, moving floating windows, media controls), a mode keeps those keys from cluttering the default bindings. If a task is a one-shot action, a normal binding is simpler.

One caveat: i3 modes are not modal in the sense of blocking everything else. The mode name is shown in the bar, and any binding not defined in the current mode does nothing until you return to default, so always include a clearly documented exit binding.

Next step: copy the resize mode block from the default config, change the entry key, and test it with i3-msg -t get_binding_modes or by watching the mode indicator in your bar.

How does i3 handle multiple monitors and workspace assignment?

i3 treats each monitor as a separate virtual screen and assigns workspaces to those screens. In practice, every workspace lives on one output, so switching to a workspace moves focus to the monitor that owns it rather than stretching the workspace across all displays.

Key mechanics:

  • Workspace-to-output binding. Workspaces are attached to a specific monitor. If you move a workspace to another monitor, it relocates there and stays associated with that output.
  • Per-monitor workspace switching. Each monitor shows its own active workspace, so you can have different workspaces visible on different screens at the same time.
  • Hotplug handling. The page evidence states that i3 aims to handle attaching and detaching monitors—such as projectors—during operation and to do the right thing, including support for rotated monitors.
  • Tree-based layout per workspace. Windows inside a workspace are arranged in a tree structure, which allows more flexible layouts than a purely column-based approach. That layout logic operates within the workspace, while the monitor assignment decides where the workspace appears.

For a concrete scenario: you might keep workspace 1 on a laptop screen and workspace 2 on an external monitor. When you unplug the external display, i3 needs to reassign the workspaces that were on it; when you plug it back in, those workspaces can return. This is the behavior the project explicitly targets, though the exact result depends on your configuration and the version you run.

A useful next step is to read the i3 User’s Guide and check the workspace and multi-monitor sections, then test hotplugging with your own displays. If you want to compare approaches, i3 documents its own model, while other tiling window managers may handle multi-monitor workspaces differently—some use dynamic workspace creation per monitor, others use static assignments. The trade-off is control versus predictability: explicit workspace-to-output rules give you a stable setup, but they require more configuration when your monitor arrangement changes.

How can I use i3's IPC interface to script or control the window manager?

i3's IPC interface lets external programs talk to the running window manager over a Unix socket. You can send commands (the same ones you'd bind to keys) and subscribe to events such as workspace changes, window focus, or mode changes. The page_evidence confirms i3 implements an IPC interface for other programs, providing event subscription and command acceptance, and notes this design is more lightweight than wmii's 9P approach and keeps core functionality independent of a separate helper program.

H3 Practical uses

  • Scripting layouts: Send commands to move, resize, or reassign windows without touching config files.
  • Status bars: Subscribe to events and render the current workspace, focused window title, or mode in a custom bar.
  • Automation: Trigger actions when a specific window appears, such as moving it to a named workspace.
  • External controls: Drive i3 from a script, a launcher, or another program that speaks to the socket.

H3 How the pieces fit

Piece What it does Typical use
Command channel Accepts i3 commands Change layout, focus, workspaces
Event subscription Pushes state changes Status bars, reactive scripts
Socket transport Local Unix socket Any language with socket support

H3 A concrete scenario

Suppose you want a script that, when you plug in a projector, moves your browser to a workspace on the new output. Your script subscribes to output or workspace events, detects the change, then sends a command over IPC to move the window. Because i3 supports multi-monitor by assigning each workspace to a virtual screen, the script can target the right output by name. The page_evidence describes this multi-monitor behavior and rotated-monitor support, which matters when you script workspace placement.

H3 Next step

Read the official i3 documentation at i3 for the IPC socket path, message format, and the list of subscribable events. Start with a small script that sends one command, then add event subscription once the basics work. If you prefer a higher-level language binding, check the i3 wiki or community projects, but verify they match your i3 version before relying on them.

Related questions

More questions →
What Does a Postal Code API Return? Fields, Formats, and Common Use Cases

A postal code API returns structured location data for a given ZIP Code or Canadian postal code. A typical response includes the code itself, city, state or province, county, latitude/longitude, and — where available — ZIP+4 detail. More complete services add time zone, area codes, boundary geometry, and demographic fields. You send a code (or an address), and the API sends back a machine-readable record you can store, validate, or display.

This article explains what those responses contain, how requests are usually shaped, and where postal code data fits into real applications.

First, clear up the word "code"

The keyword "code" is overloaded, and that causes real confusion for developers:

  • Postal code — the ZIP Code (U.S.) or postal code (Canada) that identifies a delivery area.
  • API key — the credential you use to authenticate your requests. It is not postal data.
  • Source code — the program you write to call the API.

When someone searches for "postal code API code," they usually want example request/response code for a postal code service. The rest of this article treats it that way.

What a postal code API actually returns

Response fields vary by provider and endpoint, but the core set is fairly consistent. A single-code lookup commonly returns:

Field Example Notes
Postal code 90210 The code you queried
City Beverly Hills May be one of several acceptable place names
State / Province CA Two-letter abbreviation
County Los Angeles Useful for tax, territory, and reporting logic
Latitude / Longitude 34.0901, -118.4065 Usually the centroid of the area
ZIP+4 90210-1234 Present only when a specific delivery segment is known
Time zone America/Los_Angeles Helps with scheduling and display
Area codes 310, 424 Regional phone context

Richer datasets add 90+ fields: boundaries, population, income, elevation, and more. You rarely need all of them — request only what your application uses.

A representative JSON response

{
  "postal_code": "90210",
  "city": "Beverly Hills",
  "state": "CA",
  "county": "Los Angeles",
  "latitude": 34.0901,
  "longitude": -118.4065,
  "timezone": "America/Los_Angeles",
  "area_codes": ["310", "424"]
}

XML responses carry the same information in tag form. Choose based on what your stack parses most easily; JSON is the common default.

Common request patterns

Most postal code APIs support four patterns. Knowing which one you need prevents wasted calls.

1. Lookup by code

You have a code and want its details. This is the simplest and fastest call.

GET /lookup?code=90210

2. Reverse lookup by address

You have a street address and want to confirm or complete the code. This is the pattern behind checkout address validation.

GET /validate?street=...&city=...&state=...

3. Radius search

You have a center point and want all codes within a distance. Useful for store locators and delivery zones.

GET /radius?code=90210&miles=10

4. Batch validation

You have a file of addresses and want them cleaned in bulk. Batch endpoints trade latency for throughput and usually have their own limits.

Handling missing and ambiguous matches

Real data is messy. Plan for these cases:

  • No match — the code doesn't exist or the address is malformed. Return a clear error rather than a silent empty object.
  • Multiple matches — a city name may map to several codes, or a code may span several acceptable city names. Decide whether to pick the primary or return a list.
  • Partial match — the street is valid but the ZIP+4 isn't. Fall back to the 5-digit code.
  • Stale data — codes are added, retired, and reassigned. Refresh your dataset on a regular schedule.

A practical rule: validate at the point of entry, store the normalized result, and never re-derive it later from raw user input.

Practical use cases

  • Checkout address validation — catch typos before shipping, reduce failed deliveries.
  • Shipping zone lookup — map a code to a zone, carrier route, or rate table.
  • Data enrichment — append county, coordinates, or demographics to existing records.
  • Store and service locators — radius search to find nearby branches or coverage areas.
  • Territory and tax logic — county and boundary data drive jurisdiction rules.

Licensing and data-source considerations

Postal code data originates with national authorities — USPS in the United States and Canada Post in Canada. Providers license and repackage it, which is why accuracy, update frequency, and field coverage differ between services. Before committing:

  • Confirm the data source and how often it refreshes.
  • Check whether ZIP+4 and boundary data are included or sold separately.
  • Review usage limits and whether batch processing is allowed.
  • Read the license terms for redistribution and storage.

Pricing and plan details change, so check the provider's current documentation rather than relying on secondhand figures.

Getting started

  1. Decide which request pattern you need (lookup, reverse, radius, or batch).
  2. Pick the fields you'll actually store.
  3. Write a small test call and inspect the raw response.
  4. Add error handling for no-match and ambiguous cases.
  5. Cache results where the same codes repeat.

A postal code API is ultimately a translation layer: you give it a code or an address, and it gives back structured location facts. Understand the fields, match them to your use case, and handle the messy edges — that's most of the work.

How i3 Differs from wmii and Other Window Managers

i3 was written from scratch after its authors tried to hack and fix wmii, and the differences follow directly from that experience. Compared with wmii, i3 uses libxcb instead of Xlib, replaces wmii's 9P filesystem interface with a lighter IPC interface, arranges windows in a tree rather than columns, and assigns each workspace to a virtual screen so multi-monitor setups (including hot-plugged projectors and rotated monitors) behave correctly. It keeps the minimal-window-manager ethos — simple borders, no bloat — but deliberately does not cap its own size in lines of code when a feature needs the room.

The starting point: lessons from wmii

The i3 project began with a concrete frustration: wanting to hack or fix wmii. Rather than patch around that codebase, the authors agreed on a set of goals and wrote a new tiling window manager. Those goals are the clearest statement of how i3 positions itself against wmii and similar minimal window managers.

Design differences at a glance

Dimension wmii (as described by i3's authors) i3
X11 binding Xlib xcb (libxcb)
External control 9P filesystem IPC interface with event subscription and commands
Window arrangement Column-based Tree structure
Multi-monitor — Each workspace assigned to a virtual screen; attach/detach and rotation handled at runtime
Modes — Vim-style modes (e.g. separate keybindings in resize mode)
Code size — No enforced line limit; grows if needed

The xcb choice is justified on two grounds: a cleaner API and expected speed gains in many situations. The IPC choice is justified as more lightweight than wmii's 9P approach, and because core functionality does not depend on a separate program — which matters most when the system is under load.

What the tree structure changes

Most tiling window managers arrange windows in columns. i3 instead uses a tree structure to arrange windows, which the project describes as enabling more flexible layouts than the column-based approach used by other window managers. If your workflow involves nesting splits — a horizontal pair inside a vertical stack, for instance — that is the structural difference you will feel day to day.

Multi-monitor behavior

i3's stated goal is to implement multi-monitor support correctly by assigning each workspace to a virtual screen. The specific cases called out are attaching and detaching new monitors, such as video projectors, during operation, plus support for rotated monitors. If you move between a laptop panel and an external display regularly, this is the design area to evaluate first.

Modes and IPC

Two features have no counterpart in the wmii description:

  • Modes, modeled on vim. You can bind different keys in a resize mode than in the default mode, so destructive or rarely used commands do not need to occupy your main keymap.
  • IPC, aimed at other programs. It supports subscribing to certain events and accepting commands.

Who i3 is aimed at

i3 states it is primarily targeted at advanced users and developers. The project also commits to well-readable, well-documented code and to documentation explaining internal workings, so that people who can program but are not familiar with all of X11 internals can still follow why and when things happen. That documentation goal is itself a differentiator from window managers you are expected to read purely as source.

Trade-offs to weigh

  • Minimalism with an escape hatch. i3 keeps the usual minimal-window-manager stance — no bloat, no fancy decoration beyond simple borders — but explicitly refuses to enforce limits such as a maximum number of source lines. If a feature needs more code, it gets more code.
  • Stability over new features. The project says it is generally happy with the feature set and now focuses on fixing bugs and maintaining stability; new features are considered only when the benefit justifies them. If you need a rapidly expanding feature list, that is a mismatch.
  • Licensing and platforms. i3 is Free and Open Source Software under the BSD license, targeting GNU/Linux and BSD operating systems.

Practical next step

To judge the differences yourself rather than from a feature table, the project points to three entry points on i3wm.org: watch the screencast, read the User's Guide, and install i3. The current version listed there is 4.25.1. Running it against your own monitor arrangement and keybinding habits will tell you more about the tree layout and mode system than any comparison can.

Where to Download i3 and Find Its Documentation

i3wm.org is the official home of i3, a tiling window manager for GNU/Linux and BSD. From that site you can download the latest version (the page currently lists 4.25.1), read the User's Guide, and watch a screencast. The project is Free and Open Source Software under the BSD license, and it is primarily aimed at advanced users and developers.

What you can get from i3wm.org

The site presents three main entry points, each matching a different stage of getting started:

Resource What it is for When to use it
Download the latest version Get the current release (page shows 4.25.1) When you are ready to install i3
User's Guide Written documentation on how to use i3 When you need to learn configuration and daily operation
Screencast A visual demonstration of i3 in action When you want to see the workflow before installing

The page's own framing is "Do What I Mean. Good Docs. Clean Code. Sounds good?" — which reflects the project's stated priorities rather than a marketing claim.

Before you install: what i3 actually is

i3 is a tiling window manager written completely from scratch. Its target platforms are GNU/Linux and BSD operating systems. If you are coming from a stacking window manager, the behavior will be different: windows are arranged by a tree structure rather than overlapping freely.

Two design points are worth knowing before you commit:

  • Tree structure for layouts. i3 arranges windows in a tree, which allows more flexible layouts than the column-based approach used by other window managers.
  • Modes, like in vim. You can use different keybindings in a 'resize' mode than in the default mode, for example.

Documentation and code as first-class resources

The project states that it wants well readable, well documented code, and that it documents how to extend i3 by explaining its internal workings. That documentation is intended to be usable by people who know how to program but are not necessarily familiar with all of X11's internals — it explains why things happen and when they happen, so a reader can build a picture of the whole process a window manager is responsible for.

If your goal is only to use i3, the User's Guide is the relevant document. If your goal is to modify i3, the source-level documentation is the one the project points to.

Multi-monitor and rotated screens

If you use more than one display, this is a documented area of focus rather than an afterthought. i3 implements multi-monitor support by assigning each workspace to a virtual screen. The project specifically calls out making sure that attaching and detaching new monitors — such as video projectors — works during operation and does the right thing. Support for rotated monitors is also provided.

How i3 relates to wmii

i3 was informed by the experience of wanting to hack on and fix wmii. The stated goals that came out of that experience include using xcb instead of Xlib (a cleaner API, and faster in many situations) and implementing an IPC interface for other programs, with subscription to certain events and acceptance of commands. The project describes this IPC approach as more lightweight than wmii's use of the 9P filesystem, and notes that core functionality does not depend on a separate program, so i3 runs faster, especially when the system is under load.

A note on project direction

The page states that the maintainers are generally happy with the feature set of i3 and instead focus on fixing bugs and maintaining it for stability. New features will therefore only be considered if the benefit — the sentence is cut off at that point on the page — so if you are choosing i3 expecting rapid feature expansion, that is not the stated direction.

Practical next step

Go to i3wm.org, download the latest version listed there, and read the User's Guide before your first session. If you want to see the interaction model first, watch the screencast. The download page is the authoritative source for the current version number, so check it rather than relying on a version quoted elsewhere.

What is i3wm.org and what is the i3 window manager?

i3wm.org is the official website for i3, a tiling window manager written from scratch for GNU/Linux and BSD operating systems. It is free and open source software under the BSD license, aimed primarily at advanced users and developers. The site serves as the project's home for downloads, documentation, and demonstration material.

What i3 is

i3 is a tiling window manager — rather than letting windows float and overlap, it arranges them automatically so they fill the screen without gaps or wasted space. The project describes itself as completely written from scratch, with the target platforms being GNU/Linux and BSD.

The stated design goals, as listed on the site, include:

  • Readable, well-documented code — documentation covers how to extend i3 and explains its internal workings, so users can understand the whole process a window manager is responsible for just by reading the source.
  • xcb instead of Xlib — chosen for a cleaner API and better performance in many situations.
  • Correct multi-monitor support — each workspace is assigned to a virtual screen, with support for attaching and detaching monitors (such as projectors) during operation, plus rotated monitors.
  • A tree structure for arranging windows — enabling more flexible layouts than the column-based approach used by other window managers.
  • Modes, like in vim — for example, different keybindings in a "resize" mode than in the default mode.
  • An IPC interface — other programs can subscribe to events and send commands, described as more lightweight than wmii's use of the 9P filesystem, with core functionality not depending on a separate program.
  • UTF-8 clean handling.

On the visual side, the project takes a deliberately minimal stance: simple borders are described as the most decoration wanted, and the team states it is generally happy with the current feature set, focusing on bug fixes and stability rather than new features.

Who it is for

The site states i3 is primarily targeted at advanced users and developers. If you want a window manager that stays out of the way, is keyboard-driven, and whose behavior you can understand and modify from the source, i3 fits that profile. If you prefer a conventional desktop with floating windows and heavy visual decoration, i3's minimal, tiling approach is a different model.

What you can find on i3wm.org

The homepage points to three main entry points:

  • A screencast — to see i3 in action before installing.
  • The User's Guide — the documentation for learning how to use it.
  • Download — the latest version listed on the page is 4.25.1.

Getting started

  1. Watch the screencast to confirm the tiling workflow suits you.
  2. Read the User's Guide to learn the default keybindings and configuration.
  3. Download the latest version (4.25.1 as listed) and install it on GNU/Linux or BSD.

Because i3 is FOSS under the BSD license, you can read, modify, and redistribute the code. The project's emphasis on documented internals means that even users who are not familiar with all of X11's internals are intended to be able to follow how and why things happen.

How i3 Handles Multiple Monitors and Rotated Screens

i3 treats each monitor as a separate X virtual screen and assigns workspaces to those screens, so multi-monitor support is built into its core design rather than bolted on. According to the project's own description, i3 implements multi-monitor support "correctly, that is by assigning each workspace to a virtual screen," and it explicitly aims to make attaching and detaching monitors — such as video projectors — work during operation. Rotated monitors are also listed as supported. This applies to i3 on GNU/Linux and BSD, where the window manager runs on top of X11.

The core mechanism: one workspace, one screen

i3's model is straightforward:

  • Each physical monitor is exposed to i3 as a virtual screen.
  • Each workspace belongs to exactly one screen at a time.
  • When you switch to a workspace, i3 displays it on the screen that workspace is assigned to.

This is why i3's multi-monitor behavior feels predictable: you are not stretching one desktop across several displays, you are moving whole workspaces between them. The project describes this as the "correct" approach and contrasts it with window managers that handle multiple monitors less cleanly.

Dynamic attach and detach

The project states that i3 is designed so that "attaching and detaching new monitors like video projectors works during operation and does the right thing." In practice this means you can plug in a projector or an external display while your session is running, and i3 will account for the new screen without requiring a restart of the window manager.

The same applies in reverse: unplugging a monitor is handled at runtime. Because workspaces are tied to screens, the important question after a detach is where the workspaces that lived on the removed screen end up — i3's screen-to-workspace assignment is what governs this.

Rotated monitors

Rotated monitors are listed among i3's supported features. Rotation itself is typically configured at the X level (for example through your display configuration), and i3 then treats the rotated output as a screen with the corresponding dimensions. The project's stated goal is that rotated monitors are supported alongside the normal multi-monitor case.

Extended Xinerama support

i3's description highlights "extended Xinerama support." Xinerama is the X11 mechanism for presenting multiple physical displays as separate screens to applications. i3 builds its multi-monitor behavior on this model, which is why each monitor maps to a virtual screen and why workspace-to-screen assignment is the central concept.

What this means for you

Situation i3's documented behavior
Multiple monitors connected Each monitor is a virtual screen; workspaces are assigned to screens
Plug in a projector mid-session Attaching a new monitor during operation is handled
Unplug a monitor mid-session Detaching during operation is handled
Rotated display Supported
Underlying X11 mechanism Extended Xinerama support

If your workflow depends on moving whole workspaces between displays, keeping a fixed layout per monitor, or connecting and disconnecting external screens without restarting your session, i3's design targets exactly those cases. The project positions itself as aimed primarily at advanced users and developers, so expect to configure display and workspace behavior yourself rather than relying on a graphical setup wizard.

For the authoritative details on configuring outputs and assigning workspaces to specific screens, the i3 User's Guide linked from i3wm.org is the reference to follow; the current release listed on the site is 4.25.1.

Website Overview

Identifiable technologies and additional version or configuration signals make the service easier to fingerprint, which may help targeted scanners narrow their checks. An established domain and managed infrastructure suggest continuity of operations and may support dependable delivery, although neither guarantees service quality.

Domain and Registration

Registered in 2011, this domain has about 15 years of history. That suggests continuity, although ownership and purpose may have changed. Transfer-protection status is present, helping reduce the risk of unauthorized domain transfers. The domain uses the common .org extension, which is not an independent safety signal.

DNS and Email

The observed email authentication setup is incomplete: DMARC is missing. Nameservers are provided by inwx.de, indicating managed DNS hosting. MX records point to the Google Workspace email service. No CNAME was found; the observed records resolve directly to addresses. TXT records include verification markers for Google. Such markers may also remain after a service stops being used.

TLS and Certificates

The public key uses EC with 256 bits. The server supplied a complete certificate chain. No organization name is present in the certificate; the available fields are consistent with domain validation. The certificate was issued by Let's Encrypt, commonly associated with automated certificate services. The certificate's total validity is about 89 days, consistent with a short renewal cycle.

HTTP and Browser Security

The checked browser-security headers were not detected, leaving fewer explicit browser-side safeguards. No X-Powered-By header was found, reducing one common source of backend fingerprinting information. No obvious internal addresses or debug information were found in the headers. The Server header contains the custom value Caddy. No explicit CDN or WAF marker was found in the response headers.

Technology Stack Analysis

The public page identifies Hugo 0.152.2, with exact versions exposed for 1 technologies. These details can narrow vulnerability checks, although exposure alone is not a vulnerability.

Search and Social Sharing

The meta description has 175 characters and may be shortened in search results. The Generator tag identifies Hugo 0.152.2, making the publishing system easier to fingerprint. No homepage canonical URL was detected. If duplicate URLs exist, consolidation may be less explicit. No Open Graph metadata was detected, so social previews may depend on platform inference. The title has 43 characters, within a common display range.

Hosting and Email

DNSinwx.de
HostingInit7 (Switzerland) Ltd.
EmailGoogle Workspace
Approximate IP geolocation (inferred; a CDN or proxy may differ from the origin server) Switzerland flagZurich, Switzerland Inferred 81.6.44.38

Registration details

RDAP / WHOIS

RegistrarINWX GmbH
Registered2011-01-17
Expires2030-01-17
Domain statusclient transfer prohibited
Nameserversns.inwx.de、ns2.inwx.de、ns3.inwx.eu
DNSSECunsigned

DNS records

DNS

TypeNameValueTTLPriority
Ai3wm.org81.6.44.38300—
AAAAi3wm.org2a02:168:4a00::d1d13600—
MXi3wm.orgaspmx.l.google.com36001
MXi3wm.orgalt1.aspmx.l.google.com36005
MXi3wm.orgalt2.aspmx.l.google.com36005
MXi3wm.orgaspmx2.googlemail.com360010
MXi3wm.orgaspmx3.googlemail.com360010
NSi3wm.orgns.inwx.de86400—
NSi3wm.orgns2.inwx.de86400—
NSi3wm.orgns3.inwx.eu86400—
TXTi3wm.orggoogle-site-verification=V_QNYO1tOq1IR9pPz_ya2eHId_w-55AhOufyoGv0Sz03600—
TXTi3wm.orgv=spf1 include:_spf.google.com ~all3600—

TLS and certificates

TLS / SSL

AssessmentNormal configuration
Supported protocolsTLSv1.2、TLSv1.3
Negotiated protocolTLSv1.3
Certificate subjecti3wm.org
IssuerLet's Encrypt
Valid until2026-12-11T02:42 · Remaining when checked: 70 days
Verification detailsCertificate trust: Passed · Hostname match: Passed

HTTP response headers

HTTP

HeaderValue
content-typetext/html; charset=utf-8
serverCaddy

Identified technologies

Hugo 0.152.2

Pages, Search and Sharing

Meta descriptioni3 is a tiling window manager with clean, readable and documented code, featuring extended Xinerama support, usage of libxcb instead of xlib and several improvements over wmii
Canonical URLNot detected
LanguageEnglish (default)
Twitter CardNot detected

Unknown

All bots 0 allowed · 1 disallowed
  • Disallow/bugs/

User reviews (0)

  • No reviews yet.