The Chaos of Floating Windows
Managing a complex project on a standard Ubuntu desktop often feels like fighting your own computer. I remember trying to balance three terminal windows, a documentation browser, Slack, and VS Code on a single 27-inch monitor. On GNOME, I spent half my day Alt-Tabbing through stacks of overlapping windows or dragging corners to resize them. My system idled at 1.5GB of RAM just to keep the desktop environment alive. It was a massive waste of screen real estate and mental energy.
Why Traditional Desktops Slow You Down
Ubuntu’s default environment uses a “stacking” paradigm. It treats windows like physical papers on a desk. They overlap, hide behind one another, and require constant manual adjustment. This creates three major friction points:
- Constant Mouse Reaching: You break your typing flow every time you need to resize a window.
- Cognitive Load: Searching for one specific window among 10 open apps kills your deep work state.
- Resource Bloat: Feature-heavy environments like GNOME or KDE run dozens of background processes that most developers never touch.
Choosing Your Tool: GNOME, Sway, or i3wm?
I looked at several alternatives before switching. GNOME is stable but difficult to strip down. Sway is a modern Wayland-based choice, but it often struggles with Nvidia drivers or specific screen-sharing tools.
i3wm (i3 Window Manager) remains the gold standard for the X11 display server. It is incredibly lightweight. It uses a plain-text configuration file and treats your windows as tiles in a tree structure. It doesn’t try to be a full desktop suite; it just manages windows. For a professional workflow, that’s exactly what you want.
The Safe Way to Switch
Don’t wipe your current setup yet. The smartest approach is to install i3wm alongside GNOME. This gives you a fallback while you tweak your configuration. After three years of managing production Linux servers, I’ve learned never to jump into a new environment without a safety net. Keep your current desktop until your i3 setup feels like home.
1. Installing the Essentials
Start by updating your repositories. You’ll need the i3 core plus rofi for launching apps, feh for wallpapers, and i3status for your system bar. Run this command:
sudo apt update
sudo apt install i3 i3status i3lock rofi feh xcompmgr
Once the installation finishes, log out. At the login screen, click the small gear icon and select “i3” before typing your password.
2. Mastering the Config File
On the first launch, i3 will offer to generate a default config. Accept it. When asked to choose a “Mod” key, pick the Windows Key (Mod4). Using Alt (Mod1) usually causes conflicts with shortcuts in IDEs like IntelliJ or VS Code.
Your configuration lives at ~/.config/i3/config. Open it in your editor. I use the following tweaks to make the environment immediately productive:
# Set Windows key as the primary modifier
set $mod Mod4
# Use rofi for a cleaner app launcher
bindsym $mod+d exec rofi -show run
# Navigate windows using Vim keys (h, j, k, l)
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# Move windows around the grid
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
# Launch your preferred terminal
bindsym $mod+Return exec gnome-terminal
3. Polishing the Interface
Out of the box, i3 looks like something from 1995. To modernize it, you need to handle transparency and backgrounds. Add these lines to your config to auto-start a compositor and set your wallpaper on login:
# Start xcompmgr for subtle shadows
exec_always --no-startup-id xcompmgr -c &
# Set your background image
exec_always --no-startup-id feh --bg-fill /home/user/pictures/wallpaper.jpg
Building a Professional Workflow
The real magic happens when you assign specific tasks to dedicated workspaces. I keep my terminal on Workspace 1, my browser on Workspace 2, and my editor on Workspace 3. This setup dropped my idle RAM usage from 1.5GB to just 320MB.
# Force apps to open on specific workspaces
assign [class="Firefox"] $ws2
assign [class="code-oss"] $ws3
assign [class="Slack"] $ws10
To find the exact “class” name of any app, run xprop in a terminal and click on the target window.
Multi-Monitor Efficiency
i3 handles multiple monitors better than any traditional desktop. Each screen gets its own independent workspace. You can swap workspaces between monitors instantly. I use this binding to move my current view to the secondary screen:
# Toss the current workspace to the next monitor
bindsym $mod+x move workspace to output next
Mistakes to Avoid
Many users waste days trying to make i3 look like macOS with heavy blurs and complex bars. Don’t fall into that trap. The goal is speed. Focus on internalizing the keybindings first. Keep a physical cheat sheet on your desk for the first week. If an app freezes, remember the “kill” command: $mod+Shift+q. It’s faster than any Task Manager.
The Bottom Line
Switching to i3wm is about reclaiming your focus. By removing the bloat of a traditional desktop, you gain back system resources and eliminate mouse-driven distractions. Start with a simple configuration and back it up in a Git repository. Once the muscle memory takes over, going back to floating windows feels like trying to run a marathon in hiking boots.

