Can we have syntactic sugar for functors?

That’s quite a simple proposal. Not necessarily a good one. This:

module Path1 = Path ~x:1 ~y:2 ~color:"red"

Will get translated to

module Path1 = Path (
  struct
    let x = 1
    let y = 2
    let color = "red"
  end )

My motivation for wanting it is to be able to later open Path1 do stuff without explicitly mentioning
x, y, or color

Path1.(
  line_to 80 20;
  arc_to 20 30 50;
 
  (* and so on *)
)

The above is not a real example, btw

You can use first-class modules and a function, but I’m not sure I would recommend it (I don’t quite understand what your case is):

module type T = sig val x : int val y : int val color : string end

let f ~x ~y ~color =
  let module M = struct
    let x = x and y = y and color = color
  end in
  (module M : T)

module Path1 = Path (val (f ~x:1 ~y:2 ~color:"red"))