Use variables in your i3 config to simplify workspace name accessability.
Problem with i3 Workspace Names
I got the configuration bug this morning and decided to change my i3 window manager setup. I have used the i3 tiling window manager for years but never bothered setting up workspace names, relying instead on the default numbering system.
The i3 documentation claims that you can use a quoted number prefix to associate a name to a number using a colon (ie "1: www"). Maybe I mis-interpreted this as I fumbled repeatedly trying to configure names using this syntax.
Use Variables to Identify Workspaces
Instead of trying to use the confusing and non-functional combination of strings and numbers I instead decided that variables were a better solution: allowing me to rename them from one location.
Assigning a variable in the i3 configuration is simple:
set $<variable_name> <variable_content>
I created ten workspace name variables to identify them. Some of them are not strings, as I rarely use them, and don't mind leaving them as numbers for now.
set $wksp1 "1: VSCode" set $wksp2 "2: Firefox" set $wksp3 "3: Terminal" set $wksp4 "4: Debug" set $wksp5 5 set $wksp6 "6: Misc" set $wksp7 7 set $wksp8 "8: Krusader" set $wksp9 "9: Spotify" set $wksp10 "10: Kate"
Reconfigure Keyboard Bindings
After creating the workspace variables at the top of the
config file I then changed the references to them in the keyboard binding sections.
# switch to workspace bindsym $mod+1 workspace $wksp1 bindsym $mod+2 workspace $wksp2 ... bindsym $mod+9 workspace $wksp9 bindsym $mod+0 workspace $wksp10
# move focused container to workspace bindsym $mod+Shift+1 move container to workspace $wksp1 bindsym $mod+Shift+2 move container to workspace $wksp2 ... bindsym $mod+Shift+9 move container to workspace $wksp9 bindsym $mod+Shift+0 move container to workspace $wksp10
Note: These changes did not appear after I ran the standard i3 reload (Mod + Shift + r). I had to logout and log back in to get the changes to appear.