This DIY tutorial teaches you to share mouse and keyboard between multiple computers using open source software Barrier.

I have a multi-monitor setup where my Dell XPS running Ubuntu is connected to two external monitors. I recently got a Raspberry Pi 4 that has the capability to double up as a desktop. I bought a new screen so that I could set it up for monitoring the performance of my cloud servers.

Now the problem is that I have fours screens and one pair of keyboard and mouse. I could use a new keyboard-mouse pair but my desk doesn’t have enough free space and it’s not very convenient to switch keyboards and mouse all the time.

One way to tackle this problem would be to buy a kvm switch. This is a handy gadget that allows you to use same display screen, keyboard and mouse between several computers running various operating systems. You can easily find one for around $30 on Amazon.

But I didn’t go for the hardware solution. I opted for a software based approach to share the keyboard and mouse between computers.

I used Barrier, an open source fork of the now proprietary software Synergy. Synergy Core is still open source but you can’t get encryption option in its GUI. With all its limitation, Barrier works fine for me.

Let’s see how you can use Barrier to share mouse and keyboard with multiple computers. Did I mention that you can even share clipboard and thus copy paste text between the computers?

Set up Barrier to share keyboard and mouse between Linux and Raspberry Pi or other devices

I have prepared this tutorial with Ubuntu 18.04.3 and Raspbian 10. Some installation instructions may differ based on your distribution and version but you’ll get the idea of what you need to do here.

Step 1: Install Barrier

The first step is obvious. You need to install Barrier in your computer.

Barrier is available in the universe repository starting Ubuntu 19.04 so you can easily install it using apt command.

You’ll have to use the snap version of Barrier in Ubuntu 18.04. Open Software Center and search for Barrier. I recommend using barrier-maxiberta

Install this Barrier version

On other distributions, you should enable Snap first and then use this command:

sudo snap install barrier-maxiberta

Barrier is available in Debian 10 repositories. So installing barrier on Raspbian was easy with the apt command:

sudo apt install barrier

Once you have installed the software, it’s time to configure it.

Step 2: Configure Barrier server

Barrier works on server-client model. You should configure your main computer as server and the secondary computer as client.

In my case, my Ubuntu 18.04 is my main system so I set it up as the server. Search for Barrier in menu and start it.

Setup Barrier as server

You should see an IP address and an SSL fingerprint. It’s not entirely done because you have to configure the server a little. Click on Configure Server option.

Configure the Barrier server

In here, you should see your own system in the center. Now you have to drag and drop the computer icon from the top right to a suitable position. The position is important because that’s how your mouse pointer will move between screens.

Setup Barrier server with client screens

Do note that you should provide the hostname of the client computer. In my case, it was raspberrypi. It won’t work if the hostname is not correct. Don’t know the client’s hostname? Don’t worry, you can get it from the client system.

Step 3: Setup barrier client

On the second computer, start Barrier and choose to use it as client.

Setup Barrier Client on Raspberry Pi

You need to provide the IP address of Barrier server. You can find this IP address on the Barrier application running on the main system (see the screenshots in previous section).

Setup Barrier Client on Raspberry Pi

If you see an option to accept secure connection from another computer, accept it.

You should be now able to move your mouse pointer between the screens connected to two different computers running two different operating systems. How cool is that!

Optional: Autostart Barrier [Intermediate to Advanced Users]

Now that you have setup Barrier and enjoying by using the same mouse and keyboard for more than one computers, what happens when you reboot your system? You need to start Barrier in both the systems again, right? This means that you need to connect keyboard-mouse to the second computer as well.

Since I use Wireless mouse and keyboard, this is still easier as all I need to do is to take the adapter from my laptop and plug it in the Raspberry Pi. This works but I don’t want to do this extra step. This is why I made Barrier running at the start on both systems so that I could use the same mouse and keyboard without any additional step.

There is no autostart option in the Barrier application. But it’s easy to add an application to autostart in Ubuntu. Just open the Startup Applications program and add the command barrier-maxiberta.barrier here.

Adding Barrier To Startup applications in Ubuntu

That was the easy part. It’s not the same in Raspberry Pi though. Since Raspbian uses systemd, you can use it to create a new service that will run at the boot time.

Open a terminal and create a new file named barrier.service in /etc/systemd/system directory. If this directory doesn’t exist, create it. You can use your favorite command line text editor for this task. I used Vim here.

sudo vim /etc/systemd/system/barrier.service

Now add lines like these to your file. You must replace 192.168.0.109 with your barrier server’s IP address.

[Unit] Description=Barrier Client mouse/keyboard share Requires=display-manager.service After=display-manager.service StartLimitIntervalSec=0 [Service] Type=forking ExecStart=/usr/bin/barrierc --no-restart --name raspberrypi --enable-crypto 192.168.0.109 Restart=always RestartSec=10 User=pi [Install] WantedBy=multi-user.target

Save your file. I would advise to run the command mentioned in ExecStart line manually to see if it works or not. This will save you some headache later.

Reload the systemd daemon:

sudo systemctl daemon-reload

Now start this new service

systemctl start barrier.service

Check its status to see if its running fine:

systemctl status barrier.service

If it works, add it to startup services:

systemctl enable barrier.service

This should take care of things for you. Now you should be able to control the Raspberry Pi (or any other second computer) with a single keyboard mouse pair.

I know that these DIY stuff may not work straightforward for everyone so if you face issues, let me know in the comments and I’ll try to help you out.

If it worked for you or if you use some other solution to share the mouse and keyboard between the computers, do mention it in the comments.