Tmux Application Startup Script
- One minute read - 207 wordsMy development environment depends on several processes running. Here’s how I’ve scripted this setup.
Whenever I boot up, I need at least these processes running:
- Sidekiq (jobs)
- Rails (API)
- Webpack (frontend)
- Docker (containers)
Here’s how I’ve scripted it:
#!/bin/bash
tmux new-window -n sidekiq
tmux send-keys -t sidekiq 'sidekiq' Enter
tmux new-window -n rails
tmux send-keys -t rails 'rails s' Enter
tmux new-window -n webpack
tmux send-keys -t webpack 'bin/webpack' Enter
tmux new-window -n docker
tmux send-keys -t docker 'bin/docker' Enter
open http://host.docker.internal:3000/
This starts each process in its own named Tmux window, then opens the application in my browser. That last step is a losing race condition with the other processes, which are still booting, but I just wait a few seconds and refresh the browser tab.
Something I tried previously was opening each window with a command, like this:
tmux new-window 'rails s'
This sends rails s
to the new window, helpfully naming the window rails s
.
The downside of this otherwise great command is that when the process
completes, the window closes. Kill your server once, and you lose the window.
Conclusion
There are more sophisticated approaches, but this gets the job done for a tricky dev environment. How do you script your application startup?