GNU делает (и возможно другие реализации также) имеет-j аргумент, который управляет, сколько заданий это будет работать сразу. Когда задание завершается, составьте завещание, запускают другой.
Реализуйте applicationDockMenu:
в делегате приложения, чтобы вернуть меню, которое вы хотите использовать.