oliverdavies.uk/content/node.4a206e60-833c-4abd-bcc4-b97d8617f3ee.yml

94 lines
4.1 KiB
YAML

uuid:
- value: 4a206e60-833c-4abd-bcc4-b97d8617f3ee
langcode:
- value: en
type:
- target_id: daily_email
target_type: node_type
target_uuid: 8bde1f2f-eef9-4f2d-ae9c-96921f8193d7
revision_timestamp:
- value: '2025-06-09T19:58:56+00:00'
revision_uid:
- target_type: user
target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849
revision_log: { }
status:
- value: true
uid:
- target_type: user
target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849
title:
- value: 'tmux is my session manager'
created:
- value: '2025-06-09T19:42:40+00:00'
changed:
- value: '2025-06-09T19:58:56+00:00'
promote:
- value: false
sticky:
- value: false
default_langcode:
- value: true
revision_translation_affected:
- value: true
path:
- alias: /daily/2025/06/09/tmux-my-session-manager
langcode: en
body:
- value: |-
If you're subscribed to my mailing list, listened to a podcast episode or watched any of my presentations or live streams, you'll probably know that I use a command line-based approach to software development.
I use NixOS as my operating system, Neovim and tmux for coding, and various other command-line tools as part of my daily workflow.
tmux is a terminal multiplexer - a tool to run multiple sessions, windows and panes within the same terminal.
I have one session per project or directory, each with its own windows and panes to run Neovim and other tools to work on that project.
YouTube and Twitch streamer rwxrob said that tmux was his window manager, based on how he used it to organise his desktop.
tmux is my session manager.
As well as being able to easily switch between codebases, each has it's own startup script that bootstraps the project for me.
This is the script for my website:
```bash
PATH="${PATH}:./vendor/bin"
tmux new-window -dn scratch
tmux new-window -dn server
tmux new-window -dn tailwindcss -c "themes/opdavies"
tmux send-keys -t server "drush runserver" Enter
tmux send-keys -t tailwindcss "tailwindcss --input css/tailwind.css --output build/tailwind.css --watch" Enter
nvim .
```
It creates windows for scratch commands, starts a web server with Drush, starts Tailwind CSS to generate any new styles and opens Neovim.
Some are simpler and some are more complex, but it reduces the friction between switching projects and makes it quick and simple.
format: markdown
processed: |
<p>If you're subscribed to my mailing list, listened to a podcast episode or watched any of my presentations or live streams, you'll probably know that I use a command line-based approach to software development.</p>
<p>I use NixOS as my operating system, Neovim and tmux for coding, and various other command-line tools as part of my daily workflow.</p>
<p>tmux is a terminal multiplexer - a tool to run multiple sessions, windows and panes within the same terminal.</p>
<p>I have one session per project or directory, each with its own windows and panes to run Neovim and other tools to work on that project.</p>
<p>YouTube and Twitch streamer rwxrob said that tmux was his window manager, based on how he used it to organise his desktop.</p>
<p>tmux is my session manager.</p>
<p>As well as being able to easily switch between codebases, each has it's own startup script that bootstraps the project for me.</p>
<p>This is the script for my website:</p>
<pre><code>PATH="${PATH}:./vendor/bin"
tmux new-window -dn scratch
tmux new-window -dn server
tmux new-window -dn tailwindcss -c "themes/opdavies"
tmux send-keys -t server "drush runserver" Enter
tmux send-keys -t tailwindcss "tailwindcss --input css/tailwind.css --output build/tailwind.css --watch" Enter
nvim .
</code></pre><p>It creates windows for scratch commands, starts a web server with Drush, starts Tailwind CSS to generate any new styles and opens Neovim.</p>
<p>Some are simpler and some are more complex, but it reduces the friction between switching projects and makes it quick and simple.</p>
summary: ''
field_daily_email_cta: { }