Operations 9 min read

My Cross‑Platform Development Setup: Windows, Mac, ChromeOS, and Essential Tools

The article details a developer's personal workstation ecosystem, covering hardware choices, operating systems, and a suite of cross‑platform tools such as Barrier, WezTerm, zsh, Neovim, Tmux, Tmuxinator, and Ddev, illustrating how they integrate to streamline PHP, JavaScript, and Docker workflows.

21CTO
21CTO
21CTO
My Cross‑Platform Development Setup: Windows, Mac, ChromeOS, and Essential Tools

My primary programming work involves PHP, JavaScript (including Node), CSS, HTML, and shell scripts, with occasional use of other languages.

Hardware

I write this article on my main machine, a Windows 11 PC primarily for gaming.

The company provides me with a MacBook Pro for VPN access and video meetings, but I mainly use it as a Docker host and network proxy, preferring a mouse over the Apple keyboard.

I also have a ChromeOS laptop that I sometimes use on the kitchen table; I may switch it to Linux in the future.

Operating System

All work is done via Ubuntu under WSL on Windows 11, SSH from the ChromeOS laptop, or Barrier on the MacBook Pro.

WSL2 works well, allowing X server usage, though I rarely need X applications.

Desktop – Barrier

Barrier, a fork of the closed‑source Synergy, acts as a software KVM, letting me move the mouse and keyboard seamlessly between the PC and the MacBook.

Terminal – WezTerm

I recently adopted WezTerm because it is cross‑platform, configurable in Lua, and avoids the limitations of other terminals.

Shell – zsh

I use zsh for its compatibility with bash and its POSIX‑compliant scripts, avoiding oh‑my‑zsh and aliases.

Editor – Neovim

After years with Vim, I switched to Neovim for its asynchronous features, LSP support, and embedded terminal, despite some plugin instability.

Productivity

Tmux

Tmux is a terminal multiplexer that lets me detach and reattach sessions across machines.

Tmuxinator

Tmuxinator wraps tmux to manage multiple projects. Example output:

❯ tmuxinator ls
 tmuxinator projects:
 bc           biascan      ec           fabric       gce          ifpma
 leith        leith-2023   msgan        chickenland  ngs          ngs-new
 ods          ren          renaissance  scramble     sf           sf-cms
 sf-forms     sf-myplans   sgh          srn

Sample project configuration:

windows:
  - cms:
    - ddev start
  - storybook:
    panes:
      - watcher:
        - cd web/storybook
        - yarn watch
  - middleware:
    - workon mw8
  - logs:
    panes:
      - cms:
        - workon ngs
        - docker exec -it ngs-cms-php drush -y --uri=ngs-cms.shore.signal.sh -r /shore_site/web ws --tail --full --extended --count=1
      - new-cms:
        - workon ngs-cms-2022
        - docker exec -it ngs-cms-2022-app vendor/drush/drush/drush ws --extended
      - middleware:
        - workon mw8
        - docker exec -it ngs-middleware-app vendor/drush/drush/drush ws --extended
  - build-services:
    panes:
      - new-cms:
        - workon ngs-cms-2022
        - cd web/storybook
        - yarn storybook

Ddev

Ddev creates containerized development environments for PHP, Node, and experimental Python projects, simplifying stack management and version switching.

Uses Mutagen for fast file syncing on macOS.

Easy reconfiguration of PHP and Node versions.

Can launch third‑party GUI apps (e.g., TablePlus, DBeaver) from the command line.

Supports community‑maintained add‑ons.

Cross-PlatformDevelopment EnvironmentProductivity ToolstmuxNeoVim
21CTO
Written by

21CTO

21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.