The Everything Setup
My desktop setup is built around a simple idea: two computers, one workspace, shared peripherals.
It combines a desktop PC running Linux and Windows with a Windows work laptop. A KVM switch connects both machines to the same monitors and peripherals, allowing me to switch between environments without rearranging cables or duplicating equipment.
The setup also integrates dedicated networking, an external audio interface and an electric guitar rig.
1. Compute and networking
The desktop PC and work laptop are the two primary hosts.
The desktop connects directly to an Ethernet switch, while the KVM also has a network connection. The switch uplinks to the router, providing network connectivity to the workspace.
flowchart TB ISP["Network Provider"] <--> ROUTER["Router"]
ROUTER <--> SWITCH["8-Port Ethernet Switch"]
subgraph HOSTS["COMPUTE HOSTS"] direction LR PC["Desktop PC<br/>Linux / Windows"] LAPTOP["Work Laptop<br/>Windows"] end
SWITCH <--> PC SWITCH <--> KVM["KVM Switch"] LAPTOP <--> KVM
classDef host fill:#dce9ff,stroke:#3465a4,color:#172b4d classDef network fill:#e4fcd6,stroke:#7a7a43,color:#163316 classDef switch fill:#fff0c2,stroke:#b58a20,color:#493600
class PC,LAPTOP host class ROUTER,ISP network class SWITCH,KVM switch2. KVM, video and shared peripherals
The KVM is the central component of the workspace.
It handles USB and video switching between the desktop and laptop. Both computers share two monitors and the same set of peripherals:
- Keyboard and mouse
- Webcam and headset
- Stream Deck
- Behringer UMC204HD audio interface
The desktop uses dedicated DisplayPort and HDMI connections. The laptop connects through USB-C with DisplayPort Alt Mode.
flowchart TB subgraph HOSTS["COMPUTERS"] direction LR PC["Desktop PC"] LAPTOP["Work Laptop"] end
subgraph KVM["KVM SWITCH"] direction TB
VIDEO["Video Switch"] USB["USB Switch"]
PC -->|"DisplayPort + HDMI"| VIDEO LAPTOP -->|"USB-C / DP Alt Mode"| VIDEO
PC <-->|"USB"| USB LAPTOP <-->|"USB-C"| USB end
VIDEO --> MON1["Monitor 1"] VIDEO --> MON2["Monitor 2"]
USB <--> PERIPHERALS["Shared USB Peripherals"]
classDef host fill:#dce9ff,stroke:#3465a4,color:#172b4d classDef switch fill:#fff0c2,stroke:#b58a20,color:#493600 classDef display fill:#e2f0f5,stroke:#45869e,color:#163c4b classDef peripheral fill:#dff3e4,stroke:#418653,color:#173e24
class PC,LAPTOP host class VIDEO,USB switch class MON1,MON2 display class PERIPHERALS peripheral3. Audio and guitar signal chain
Audio is handled by a Behringer UMC204HD USB audio interface.
The electric guitar connects to an effects pedal chain. The processed instrument signal is then routed to both the guitar amplifier and the audio interface.
The interface handles analog-to-digital conversion and connects to the active computer over USB. This allows the guitar signal to be used in computer-based audio workflows while retaining the traditional amplifier setup.
flowchart LR GUITAR["Electric Guitar"] PEDALS["Effects Pedals"]
AMP["Guitar Amplifier"]
subgraph UMC["BEHRINGER UMC204HD"] direction TB
INPUT["Analog Inputs"] ADC["USB Audio Conversion"] OUTPUT["Analog Outputs"] USB["USB-B Connection"]
INPUT --> ADC ADC --> OUTPUT ADC <--> USB end
PC["Active Computer"]
GUITAR -->|"1/4 inch TS"| PEDALS
PEDALS -->|"Processed signal"| AMP PEDALS -->|"Direct instrument signal"| INPUT
USB <-->|"USB"| PC
classDef audio fill:#f2e1ff,stroke:#8753aa,color:#43235c classDef host fill:#dce9ff,stroke:#3465a4,color:#172b4d
class GUITAR,PEDALS,AMP,INPUT,ADC,OUTPUT,USB audio class PC host4. Complete architecture
The focused diagrams provide a closer look at individual subsystems. The following diagram brings everything together, documenting the complete physical connectivity of the workspace.
flowchart TB
%% ===================================================== %% COMPUTE HOSTS %% =====================================================
subgraph HOSTS["COMPUTE HOSTS"] direction LR
subgraph PC["DESKTOP PC"] direction TB
PC_USB["USB Ports"] PC_RJ45["ETH"]
subgraph GPU["Desktop GPU"] direction LR
PC_HDMI["GPU HDMI"] PC_DP1["GPU DisplayPort 1"] PC_DP2["GPU DisplayPort 2"] PC_DP3["GPU DisplayPort 3"] end
subgraph OS["Operating Systems"] direction LR LINUX["Linux"] WINDOWS["Windows"] end
PC_MB["Motherboard"] PC_PCIE["PCIe"]
PC_PCIE <--> PC_HDMI & PC_DP1 & PC_DP2 & PC_DP3 PC_USB & PC_RJ45 & PC_PCIE <--> PC_MB PC_MB <--> LINUX & WINDOWS end
subgraph LAPTOP["WORK LAPTOP"] direction TB
LAP_USB["USB-C Port<br>DP Alt Mode"] LAP_USB_A["USB-A Ports"] LAP_AUDIO["Onboard Audio"]
LAP_MB["Motherboard"]
LAP_WINDOWS["Windows"]
LAP_USB & LAP_USB_A & LAP_AUDIO <--> LAP_MB LAP_MB <--> LAP_WINDOWS end end
%% ===================================================== %% NETWORKING %% =====================================================
subgraph NETWORK_SWITCH["SWITCH"] direction LR
SW_RJ45_1["ETH1"] SW_RJ45_2["ETH2"] SW_RJ45_3["ETH3"] SW_RJ45_4["ETH4"] SW_RJ45_5["ETH5"] SW_RJ45_6["ETH6"] SW_RJ45_7["ETH7"] SW_RJ45_8["ETH8"]
SW_SWBOARD["Switch"]
SW_RJ45_1 & SW_RJ45_2 & SW_RJ45_3 & SW_RJ45_4 & SW_RJ45_5 & SW_RJ45_6 & SW_RJ45_7 & SW_RJ45_8 <--> SW_SWBOARD end
subgraph NETWORK_ROUTER["ROUTER"] direction LR
RT_RJ45_1["ETH1"] RT_RJ45_2["ETH2"] RT_RJ45_3["ETH3"] RT_RJ45_4["ETH4"]
RT_SWBOARD["Switch"]
RT_RJ45_1 & RT_RJ45_2 & RT_RJ45_3 & RT_RJ45_4 <--> RT_SWBOARD end
RT_RJ45_1 <--> NETWORK_PROVIDER["Network Provider"] RT_RJ45_2 <--> SW_RJ45_8 SW_RJ45_1 <--> PC_RJ45 SW_RJ45_2 <--> KVM_RJ45
%% ===================================================== %% KVM %% =====================================================
subgraph KVM["KVM SWITCH"] direction TB
KVM_RJ45["ETH"]
subgraph KVM_HOSTS["HOST CONNECTIONS"] direction LR
KVM_PC_USB["PC USB Upstream"] KVM_LAP_USB["Laptop USB Upstream"] end
subgraph KVM_VIDEO["VIDEO CONNECTIONS"] direction LR
KVM_DP1["DP Input 1"] KVM_HDMI1["HDMI Input 1"]
KVM_MON1["Monitor Output 1"] KVM_MON2["Monitor Output 2"]
KVM_VIDEO_SWBOARD["Video Switch"]
KVM_DP1 & KVM_HDMI1 --> KVM_VIDEO_SWBOARD KVM_VIDEO_SWBOARD --> KVM_MON1 & KVM_MON2 end
subgraph KVM_USB["USB PERIPHERAL CONNECTIONS"] direction LR
KVM_USB1["USB Port 1"] KVM_USB2["USB Port 2"] KVM_USB3["USB Port 3"] KVM_USB4["USB Port 4"] KVM_USB5["USB Port 5"] KVM_USB6["USB Port 6"]
KVM_USB_SWBOARD["USB Switch"]
KVM_USB1 & KVM_USB2 & KVM_USB3 & KVM_USB4 & KVM_USB5 & KVM_USB6 --> KVM_USB_SWBOARD end
KVM_SWBOARD["Main Switch"]
KVM_SWBOARD --> KVM_PC_USB KVM_SWBOARD --> KVM_LAP_USB
KVM_VIDEO_SWBOARD & KVM_USB_SWBOARD & KVM_RJ45 --> KVM_SWBOARD end
%% ===================================================== %% VIDEO CONNECTIONS %% =====================================================
PC_DP1 -->|"DisplayPort"| KVM_DP1 PC_HDMI -->|"HDMI"| KVM_HDMI1
KVM_MON1 -->|"HDMI"| MON1 KVM_MON2 -->|"HDMI"| MON2
subgraph DISPLAYS["DISPLAYS"] direction LR
MON1["Monitor 1<br/>HDMI Input"] MON2["Monitor 2<br/>HDMI Input"] end
%% ===================================================== %% HOST USB CONNECTIONS %% =====================================================
PC_USB <-->|"USB"| KVM_PC_USB LAP_USB <-->|"USB-C<br/>DP Alt Mode"| KVM_LAP_USB
%% ===================================================== %% SHARED PERIPHERALS %% =====================================================
subgraph PERIPHERALS["SHARED PERIPHERALS"] direction TB
subgraph KEYBOARD["KEYBOARD"] direction LR PS2["PS/2 Keyboard Connector"] PS2_ADAPTER["PS/2 to USB Adapter"] PS2 --> PS2_ADAPTER end
MOUSE["USB Mouse<br/>USB Connector"] WEBCAM["USB Webcam<br/>USB Connector"] HEADSET["USB Headset<br/>USB Connector"] STREAM_DECK["STREAM DECK"] end
PS2_ADAPTER --> KVM_USB1 MOUSE --> KVM_USB2 WEBCAM --> KVM_USB3 HEADSET --> KVM_USB4 STREAM_DECK --> KVM_USB5 UMC_USB --> KVM_USB6
%% ===================================================== %% GUITAR AND AUDIO %% =====================================================
subgraph GUITAR_RIG["GUITAR RIG"] direction LR
GUITAR["Electric Guitar<br/>1/4 inch TS Output"] PEDALS["Effects Pedals<br/>Input / Output"] AMP["Guitar Amplifier"]
GUITAR -->|"1/4 inch TS"| PEDALS PEDALS -->|"1/4 inch TS"| AMP end
subgraph AUDIO_INTERFACE["BEHRINGER UMC204HD"] direction TB
subgraph AUDIO_INPUTS["ANALOG INPUTS"] direction LR
UMC_IN1["Input 1<br/>Combo XLR / 1/4 inch"] UMC_IN2["Input 2<br/>Combo XLR / 1/4 inch"] end
subgraph AUDIO_USB["DIGITAL CONNECTION"] direction TB
UMC_USB["USB-B Port"] UMC_ADC["USB Audio Conversion"] end
subgraph AUDIO_OUTPUTS["ANALOG OUTPUTS"] direction LR
UMC_OUT1["Main Output 1<br/>1/4 inch TRS"] UMC_OUT2["Main Output 2<br/>1/4 inch TRS"] UMC_HP["Headphone Output<br/>1/4 inch TRS"] end
UMC_IN1 --> UMC_ADC UMC_IN2 --> UMC_ADC UMC_ADC --> UMC_USB UMC_ADC --> UMC_OUT1 UMC_ADC --> UMC_OUT2 UMC_ADC --> UMC_HP end
PEDALS -->|"1/4 inch TS<br/>Direct instrument signal"| UMC_IN1
%% ===================================================== %% STYLING %% =====================================================
classDef host fill:#dce9ff,stroke:#3465a4,color:#172b4d classDef switch fill:#fff0c2,stroke:#b58a20,color:#493600 classDef peripheral fill:#dff3e4,stroke:#418653,color:#173e24 classDef audio fill:#f2e1ff,stroke:#8753aa,color:#43235c classDef display fill:#e2f0f5,stroke:#45869e,color:#163c4b classDef software fill:#fce4d6,stroke:#c47a43,color:#603316 classDef network_switch fill:#e4fcd6,stroke:#c47a7a,color:#606016 classDef network_router fill:#d6fcd6,stroke:#7a7a43,color:#163316
class PC_PCIE,LAP_WINDOWS,LAP_MB,PC_MB,PC_USB,PC_DP1,PC_DP2,PC_DP3,PC_HDMI,PC_AUDIO,LINUX,WINDOWS,NVME,LAP_USB,LAP_DP,LAP_USB_A,LAP_AUDIO,PC_RJ45 host class KVM_USB_UPSTREAM,KVM_SWBOARD,KVM_USB_SWBOARD,KVM_VIDEO_SWBOARD,KVM_PC_USB,KVM_LAP_USB,KVM_DP1,KVM_DP2,KVM_HDMI1,KVM_HDMI2,KVM_MON1,KVM_MON2,KVM_USB1,KVM_USB2,KVM_USB3,KVM_USB4,KVM_USB5,KVM_USB6,AUDIO_USB_SWITCH,AUDIO_PC,AUDIO_LAP,KVM_RJ45 switch class PS2,PS2_ADAPTER,KB_USB,MOUSE,WEBCAM,HEADSET,STREAM_DECK peripheral class UMC_IN1,UMC_IN2,UMC_USB,UMC_ADC,UMC_OUT1,UMC_OUT2,UMC_HP,GUITAR,PEDALS,AMP,SPEAKERS,HEADPHONES audio class MON1,MON2 display class SD_BUTTONS,BASH,TASKS software class SW_SWBOARD,SW_RJ45_1,SW_RJ45_2,SW_RJ45_3,SW_RJ45_4,SW_RJ45_5,SW_RJ45_6,SW_RJ45_7,SW_RJ45_8 network_switch class RT_SWBOARD,RT_RJ45_1,RT_RJ45_2,RT_RJ45_3,RT_RJ45_4,NETWORK_PROVIDER network_router