94 lines
4.1 KiB
YAML
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: { }
|