The old comments gave the impression that you had to define workspace names upfront, which is not true. This also keeps the overall config as brief as possible.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym Mod1+minus scratchpad show
-# Define workspaces along with their labels
-#
-# Customize your workspace labels here.
-# Example:
-#
-# set $ws1 "Terminals"
-#
-# or
-#
-# set $ws1 "1: Terminals"
-#
+# Define names for default workspaces for which we configure key bindings later on.
+# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
# focus the child container
#bindsym $mod+d focus child
-# Define workspaces along with their labels
-#
-# Customize your workspace labels here.
-# Example:
-#
-# set $ws1 "Terminals"
-#
-# or
-#
-# set $ws1 "1: Terminals"
-#
+# Define names for default workspaces for which we configure key bindings later on.
+# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"