Skip to main content

Navigate i3wm named containers

Project description


  • Create i3 workspaces with custom names on the fly

  • Type a few letters to jump to a target workspace using fuzzy matching

  • Quick toggle between the two most recently used workspaces

  • Bring/send containers to workspaces while doing any of the above



You need this installed for fluidspaces to be useful, of course.

pacman -S i3  # to install on Arch

Refer to the i3 repository docs to install on Ubuntu.

rofi (optional)

Can be used as a replacement for dmenu. Has a nicer looking menu, displays different prompts for different actions, etc. Not required for fluidspaces to function.

sudo pacman -S rofi  # to install on Arch
sudo apt install rofi  # to install on Ubuntu

Installing Fluidspaces

From PyPi:

pip install fluidspaces

From source:

git clone
cd fluidspaces
pip install .

Argument Reference

-h, --help

show this help message and exit

-b, --bring-to

bring focused container with you to workspace

-s, --send-to

send focused container away to workspace


program to render the menu {dmenu,rofi} (default: dmenu)

-t, --toggle

skip menu & choose workspace 2 (default: False)

-V, --version

show program’s version number and exit

Example i3 configurations

Using defaults:

bindsym $mod+c            exec "fluidspaces"
bindsym $mod+Shift+c      exec "fluidspaces --send-to"
bindsym $mod+Ctrl+Shift+c exec "fluidspaces --bring-to"

bindsym $mod+Tab          exec "fluidspaces --toggle"
bindsym $mod+Shift+Tab    exec "fluidspaces --toggle --send-to"

Using rofi instead of dmenu:

bindsym $mod+c            exec "fluidspaces --menu=rofi"
bindsym $mod+Shift+c      exec "fluidspaces --menu=rofi --send-to"
bindsym $mod+Ctrl+Shift+c exec "fluidspaces --menu=rofi --bring-to"

# note that toggling bypasses the menu entirely, so no need to define it
bindsym $mod+Tab          exec "fluidspaces --toggle"
bindsym $mod+Shift+Tab    exec "fluidspaces --toggle --send-to"


All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.



  • Added missing quotes to sample i3 configuration lines in README



  • -m/--menu flags taking the values dmenu or rofi. The named program is used to render the menu - so passing --menu=rofi results in the behavior that was default in version 0.2.4.


  • Now defaults to using dmenu to generate the menu instead of rofi. This means fluidspaces can be used with just the tools included with basic i3.

  • Made some of the helptext more concise and mentioned default values for --menu and --toggle.



  • Simpler README and CHANGELOG formats to get them to render nicely on PyPi and Github



  • An actually useful README file


  • README and CHANGELOG files now use reStructuredText format instead of Markdown

  • Package’s long description now includes the contents of CHANGELOG at the end

  • All argument descriptions now start with small letters to match argparse’s built-in descriptions for --help and --version



  • Crash on startup if not run from an intact git repository (i.e. if run using a sdist build, a github archive, a pypi archive, or literally anything but a dev evironment)



  • Navigating to / bringing a container to a new workspace promotes that workspace (the new workspace used to stay at the back where it was created - with a numberless name - until it was navigated to again)



  • -V/--version flag prints program version and exits


  • Now using setuptools_scm to get the package version from git tags instead of keeping a VERSION file



  • This CHANGELOG file, to keep track of changes in this project over time.

  • Project URL now included in information.

  • MIT license (from Choose a License) now included in LICENSE and in information.

  • -t/--toggle instead of prompting the user for which workspace to use as the target for going/sending/bringing actions, use the first workspace whose title contains 2: as the target. Can be used to implement quick toggling between the top two workspaces.



  • fluidspaces script navigates to the workspace chosen by the user from a list of the current i3 workspaces.

  • -s/--send-to send the currently focused i3 container to the chosen workspace.

  • -b/--bring-to navigate to the chosen workspace and bring the currently focused i3 container to it at the same time.

  • Every execution of fluidspaces (i.e., with/without flags, user selects workspace / user exits early, etc.) re-numbers all existing i3 workspaces such that the top one is 1, the next is 2, and so on with no gaps. Existing workspace ordering is maintained.

  • Navigating to a workspace with any form of fluidspaces “promotes” the chosen workspace to position 1 and renumbers the rest of the workspaces to remove the just-created gap.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fluidspaces-0.3.1.tar.gz (14.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page