i3-workspace-groups

Adds the ability to group i3 (and Sway) workspaces for easier workspace management and navigation when working on independent projects that each take up multiple workspaces. Provides functions that add the ability to:

The name of the group is prepended to the name of each of its workspaces for clarity.

Uses Rofi to query for group names.

Port/rewrite of infokiller/i3-workspace-groups.

Installation

Requires Rofi.

Install from Cargo with:

shell cargo install i3-workspace-groups

Configuration

Keybinds

i3 config:

``` bindsym $mod+1 exec i3-workspace-groups focus-workspace 1 bindsym $mod+2 exec i3-workspace-groups focus-workspace 2 bindsym $mod+3 exec i3-workspace-groups focus-workspace 3 bindsym $mod+4 exec i3-workspace-groups focus-workspace 4 bindsym $mod+5 exec i3-workspace-groups focus-workspace 5 bindsym $mod+6 exec i3-workspace-groups focus-workspace 6 bindsym $mod+7 exec i3-workspace-groups focus-workspace 7 bindsym $mod+8 exec i3-workspace-groups focus-workspace 8 bindsym $mod+9 exec i3-workspace-groups focus-workspace 9 bindsym $mod+0 exec i3-workspace-groups focus-workspace 10

bindsym $mod+Shift+1 exec i3-workspace-groups move-container-to-workspace 1 bindsym $mod+Shift+2 exec i3-workspace-groups move-container-to-workspace 2 bindsym $mod+Shift+3 exec i3-workspace-groups move-container-to-workspace 3 bindsym $mod+Shift+4 exec i3-workspace-groups move-container-to-workspace 4 bindsym $mod+Shift+5 exec i3-workspace-groups move-container-to-workspace 5 bindsym $mod+Shift+6 exec i3-workspace-groups move-container-to-workspace 6 bindsym $mod+Shift+7 exec i3-workspace-groups move-container-to-workspace 7 bindsym $mod+Shift+8 exec i3-workspace-groups move-container-to-workspace 8 bindsym $mod+Shift+9 exec i3-workspace-groups move-container-to-workspace 9 bindsym $mod+Shift+0 exec i3-workspace-groups move-container-to-workspace 10

bindsym $mod+Control+1 workspace number 1 bindsym $mod+Control+2 workspace number 2 bindsym $mod+Control+3 workspace number 3 bindsym $mod+Control+4 workspace number 4 bindsym $mod+Control+5 workspace number 5 bindsym $mod+Control+6 workspace number 6 bindsym $mod+Control+7 workspace number 7 bindsym $mod+Control+8 workspace number 8 bindsym $mod+Control+9 workspace number 9 bindsym $mod+Control+0 workspace number 10

bindsym $mod+Shift+Control+1 move container to workspace number 1 bindsym $mod+Shift+Control+2 move container to workspace number 2 bindsym $mod+Shift+Control+3 move container to workspace number 3 bindsym $mod+Shift+Control+4 move container to workspace number 4 bindsym $mod+Shift+Control+5 move container to workspace number 5 bindsym $mod+Shift+Control+6 move container to workspace number 6 bindsym $mod+Shift+Control+7 move container to workspace number 7 bindsym $mod+Shift+Control+8 move container to workspace number 8 bindsym $mod+Shift+Control+9 move container to workspace number 9 bindsym $mod+Shift+Control+0 move container to workspace number 10

bindsym $mod+g exec i3-workspace-groups focus-group bindsym $mod+Shift+g exec i3-workspace-groups move-container-to-group bindsym $mod+Shift+Control+g exec i3-workspace-groups rename-group ```

sxhkd:

``` alt + {_, shift +} {0-9} i3-workspace-groups {focus-workspace,move-container-to-workspace} {10,1-9}

alt + ctrl + {_, shift +} {0-9} i3-msg {workspace number,move to workspace number} {10,1-9}

alt + {_, shift +, ctrl + shift +} g i3-workspace-groups {focus-group,move-container-to-group,rename-group} ```

Status bar

i3status:

bar { strip_workspace_numbers yes }

polybar:

```dosini [module/i3] type = internal/i3

strip-wsnumbers = true ```

waybar:

"sway/workspaces": { "format": "{name}" }

Limitations