C-h f start-process
start-process is a compiled Lisp function in `subr.el'.
(start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS)
Probably introduced at or before Emacs version 17.
Start a program in a subprocess. Return the process object for it.
NAME is name for process. It is modified if necessary to make it unique.
BUFFER is the buffer (or buffer name) to associate with the process.
Process output (both standard output and standard error streams)
goes at end of BUFFER, unless you specify a filter function to
handle the output. BUFFER may also be nil, meaning that this
process is not associated with any buffer.
PROGRAM is the program file name. It is searched for in `exec-path'
(which see). If nil, just associate a pty with the buffer. Remaining
arguments PROGRAM-ARGS are strings to give program as arguments.
So PROGRAM has to be the name of your executable, and then you pass its arguments as individual strings:
(start-process "" nil "/usr/bin/sudo" "su" "joe" "-s" "/usr/bin/prime-run" "/usr/bin/firefox")
In this case you might be better off using
allows you to just pass in a commmand+args as a single string.