Skip to content


Repository files navigation


tag_spaces is an extension to herbstluftwm that adds a new concept called tag spaces.

A Tag Space is a group of tags along with keybindings that only operate on the currently selected tag space.

The current / active tag space is selected by using keybinds and can be specified by name, relative or cardinal array index.

By switching to a new tag space, the default Mod+[0-9] keybinds are remapped to the selected tag space and it's first N tags are automatically displayed on your first N monitors.


First, get the extension's files:

git clone $HOME/.config/herbstluftwm/tag_spaces

Make any changes you wish inside of tag_spaces/tag_spaces.conf

Adjust the keybinds in tag_spaces/

Then at last, call the initialization script inside of your herbstluftwm autostart script:

#create and keybind tag_spaces
source $HOME/.config/herbstluftwm/tag_spaces/

Why tag_spaces?

Having a long running history with other WMs like Gnome, Cinnamon and KDE Plasma, I'm a big fan of the traditional Ctrl-Alt-[left/right] and Ctrl-Alt-Shift-[left/right] to navigate and move windows between virtual desktops, updating multiple monitors at once. This extension recreates that feel, along with a new set of 0-9 tags for each tag space. It's like having multiple instances of herbstluftwm in a way.

There are also default keybinds for Mod+slash and Mod+backslash for navigating to a specific tag_space and toggling back to the default un-tag_spaced tags.

Script Functionality

This script will allow you to navigate and move between tag_spaces using:

  • The tag_space name (first argument, optional)
  • Move focused window (second argument as "move", optional)
# switch to tag_space_1
./ tag_space_1

# moves the current focused window (focused monitor aware) and switches to tag_space_1
./ tag_space_1 move

This script will allow you to navigate and move between tag_spaces using:

  • The relative index (+1, -2) or absolute index (0, 1, 2, 3...) of the tag_spaces array (first argument, required)
  • Move focused window (second argument as 'move', optional)
# switch to the next tag_space
./ +1

# switch to the next tag_space and move the currently focused window
./ +1 move

# switch to the previous tag_space
./ -1

# switch to the first tag_space in the tag_spaces array (defined in tag_spaces.conf)
./switch_tag_space_by_index 0


herbstluftwm tag spaces extension







No releases published


No packages published