1) option1 : If you dont want acticate option , simply handle it via ACL by removing replicate access.
2) Option2: If you want the button to be shown, then overlay the libs/* node corresponding to libs and then write custom js to handle this. Custom js can directly call a servlet , which in-turn can initiate a model or directly invoke workflow (i am not sure whether this option will work or not.)
An additional non-hacky solution from the all of the other answers listed for this question is to edit ACL (group users); remove the "replicate" permission, which will remove the publish button from the UI. Next, give the "specific workflow" allow permission, so users can choose the workflow when they click on the +create button.
When the ACLs are configured properly, authors will be forced to run the workflow whenever they are trying to publish a page.
I assume you are able to select the custom workflow that you have created while activating the workflow. Is so simply activating a page won’t trigger your custom workflow. You need to add your custom workflow as part of activation trigger by going to properties.