# debauchee/barrier

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/debauchee-barrier).**

30,222 stars · 1,600 forks · C · other · fork

## Links

- GitHub: https://github.com/debauchee/barrier
- awesome-repositories: https://awesome-repositories.com/repository/debauchee-barrier.md

## Topics

`barrier` `gplv2` `keyboard` `kvm` `mouse` `sharing`

## Description

Barrier is a network-based software utility that functions as a keyboard and mouse switch, allowing a single set of input peripherals to control multiple computers. By capturing raw hardware signals at the system level, it redirects input events across a local network to create a unified workspace across distinct physical displays and operating systems.

The project operates as a client-server system that maintains persistent network connections to route input data. It distinguishes itself by normalizing disparate hardware signals into a unified internal format, enabling consistent interaction regardless of the underlying operating system or hardware architecture. A centralized state machine manages focus and configuration, while virtual coordinate mapping allows the cursor to move seamlessly across screen boundaries as if the connected machines were a single desktop environment.

Beyond basic input redirection, the software includes clipboard synchronization to share text data between connected devices. It utilizes binary protocol serialization to minimize latency during high-frequency peripheral interaction, ensuring that input remains responsive across the network.

## Tags

### Development Tools & Productivity

- [Input Sharing Tools](https://awesome-repositories.com/f/development-tools-productivity/input-sharing-tools.md) — Controlling multiple computers with a single mouse and keyboard by moving the cursor seamlessly across screen boundaries.
- [Software KVM Switches](https://awesome-repositories.com/f/development-tools-productivity/software-kvm-switches.md) — Managing multiple physical workstations as a single cohesive workspace by routing input peripherals over a local network connection.
- [Clipboard Synchronization Utilities](https://awesome-repositories.com/f/development-tools-productivity/clipboard-synchronization-utilities.md) — Sharing text and data across multiple connected computers by automatically syncing clipboard content for seamless copy and paste operations.
- [Cross-Platform Input Multiplexers](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-input-multiplexers.md) — A background process that synchronizes peripheral signals across different operating systems to create a unified workspace experience on multiple physical displays.
- [Desktop Workflow Orchestrators](https://awesome-repositories.com/f/development-tools-productivity/desktop-workflow-orchestrators.md) — Streamlining productivity by managing multiple workstations as a single cohesive workspace without switching physical input devices.

### Miscellaneous Curated Lists

- [KVM Software](https://awesome-repositories.com/f/miscellaneous-curated-lists/kvm-software.md) — Provides software-based keyboard, video, and mouse sharing across multiple computers. ([source](https://github.com/debauchee/barrier))

### Networking & Communication

- [Software KVM Switches](https://awesome-repositories.com/f/networking-communication/software-kvm-switches.md) — A network-based utility that shares a single keyboard and mouse across multiple computers by routing input events over a local connection.
- [Input Event Routers](https://awesome-repositories.com/f/networking-communication/input-event-routers.md) — A communication engine that captures raw hardware signals and transmits them over a persistent connection to control remote computer systems.
- [Socket Communication](https://awesome-repositories.com/f/networking-communication/socket-communication.md) — Distributes input events to connected machines over persistent TCP network connections.
- [Virtual Peripheral Bridges](https://awesome-repositories.com/f/networking-communication/virtual-peripheral-bridges.md) — A software layer that emulates local hardware input on remote machines to enable seamless cursor movement and keystroke transmission between distinct systems.
- [Persistent Network Connections](https://awesome-repositories.com/f/networking-communication/persistent-network-connections.md) — Maintains continuous network connections to facilitate low-latency input data transmission.

### Operating Systems & Systems Programming

- [Input Event Interception](https://awesome-repositories.com/f/operating-systems-systems-programming/input-event-interception.md) — Captures raw keyboard and mouse signals at the system level to enable redirection.
- [Kernel-Level Input Hooks](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-level-input-hooks.md) — Captures raw hardware signals at the kernel level to redirect input events.

### Business & Productivity Software

- [Input Sharing Configuration](https://awesome-repositories.com/f/business-productivity-software/input-sharing-configuration.md) — Allows management of multiple machines via a single keyboard and mouse through custom layouts. ([source](https://github.com/debauchee/barrier/tree/master/doc/))
- [Peripheral Management](https://awesome-repositories.com/f/business-productivity-software/peripheral-management.md) — Enables interaction with multiple operating systems using a single set of input hardware.
- [Clipboard Synchronization](https://awesome-repositories.com/f/business-productivity-software/clipboard-synchronization.md) — Syncs clipboard contents across multiple connected computers for seamless copy-paste. ([source](https://cdn.jsdelivr.net/gh/debauchee/barrier@master/README.md))

### Programming Languages & Runtimes

- [Event Abstraction Layers](https://awesome-repositories.com/f/programming-languages-runtimes/event-abstraction-layers.md) — Normalizes disparate hardware signals into a unified internal format for cross-platform compatibility.
- [Input Abstraction Frameworks](https://awesome-repositories.com/f/programming-languages-runtimes/input-abstraction-frameworks.md) — Translates platform-specific hardware signals into a common format for cross-system transmission.

### Graphics & Multimedia

- [Coordinate Mapping Systems](https://awesome-repositories.com/f/graphics-multimedia/coordinate-mapping-systems.md) — Translates cursor movement across physical display boundaries into logical navigation events.
- [Display Coordinate Systems](https://awesome-repositories.com/f/graphics-multimedia/display-coordinate-systems.md) — Maps relative positions of multiple physical monitors to allow seamless cursor movement.

### System Administration & Monitoring

- [Input Routing Systems](https://awesome-repositories.com/f/system-administration-monitoring/input-routing-systems.md) — Connects disparate computer systems to share input peripherals regardless of the underlying operating system or hardware architecture.
- [State Machine Routing](https://awesome-repositories.com/f/system-administration-monitoring/state-machine-routing.md) — Manages active focus and configuration to route input events to the correct machine.
