Post

Configure Logitech MX Master 3S on Pop!_OS using LogiOps

Configure Logitech MX Master 3S on Pop!_OS using LogiOps

Configure Logitech MX Master 3S on Pop!_OS using LogiOps

The Logitech MX Master 3S is one of the best productivity mice around, but on Linux you don’t get access to Logitech Options+. Thankfully, the open-source LogiOps daemon brings almost everything back — smart scrolling, gestures, button remapping, and more.

This guide walks through the installation and configuration of LogiOps on Pop!_OS (or Ubuntu-based distributions) and provides a working configuration file tuned for the MX Master 3S.


🧭 Pop!_OS Shortcut Reference

Before we start, here’s a quick summary of the keyboard shortcuts Pop!_OS uses for workspace and window management. We’ll use these same key combinations inside our LogiOps config to make the mouse behave naturally with Pop!_OS.

Action Shortcut What It Does
Switch workspace up Super + Ctrl + ↑ Move to the workspace above
Switch workspace down Super + Ctrl + ↓ Move to the workspace below
Open workspace overview Super + D Show all workspaces
Snap window left Super + Ctrl + ← Snap current window to the left
Snap window right Super + Ctrl + → Snap current window to the right

These are the shortcuts we’ll simulate using the MX Master 3S buttons and gesture controls.


🧰 What you’ll get

After following this guide, you’ll be able to:

  • Use SmartShift (auto-switch between free-spin and ratchet scroll)
  • Customize DPI and high-resolution scrolling
  • Map the back/forward buttons to move between workspaces
  • Use the gesture button to trigger workspace view, snap windows, and move between workspaces

⚙️ Step 1: Install LogiOps

LogiOps isn’t in Ubuntu’s main repositories, so you’ll build it from source.

1
2
3
4
5
6
7
8
sudo apt update
sudo apt install git cmake build-essential libevdev-dev libudev-dev libconfig++-dev
git clone https://github.com/PixlOne/logiops.git
cd logiops
mkdir build && cd build
cmake ..
make
sudo make install

Once installed, verify the daemon binary exists:

1
which logid

You should see /usr/local/bin/logid.


🧩 Step 2: Create the configuration file

Create /etc/logid.cfg and paste the configuration below.

1
sudo nano /etc/logid.cfg

Example configuration for MX Master 3S

devices: (
{
    name: "MX Master 3S";

    // SmartShift toggles between free-spin and ratchet scroll
    smartshift: {
        on: true;
        threshold: 5;
    };

    hiresscroll: {
        hires: true;
        invert: false;
        target: false;
    };

    dpi: 1200; // max=4000

    // Leave thumb wheel default
    thumbwheel: {
        divert: false;
    };

    buttons: (
        // Forward button → Workspace up
        {
            cid: 0x56;
            action = {
                type: "Keypress";
                keys: ["KEY_LEFTMETA", "KEY_LEFTCTRL", "KEY_UP"];
            };
        },

        // Back button → Workspace down
        {
            cid: 0x53;
            action = {
                type: "Keypress";
                keys: ["KEY_LEFTMETA", "KEY_LEFTCTRL", "KEY_DOWN"];
            };
        },

        // Gesture button (hold + move)
        {
            cid: 0xc3;
            action = {
                type: "Gestures";
                gestures: (
                    {
                        direction: "None";
                        mode: "OnRelease";
                        action = {
                            type: "Keypress";
                            keys: ["KEY_LEFTMETA", "KEY_D"]; // open workspace view
                        };
                    },
                    {
                        direction: "Right";
                        mode: "OnRelease";
                        action = {
                            type: "Keypress";
                            keys: ["KEY_LEFTMETA", "KEY_LEFTCTRL", "KEY_RIGHT"]; // snap window right
                        };
                    },
                    {
                        direction: "Left";
                        mode: "OnRelease";
                        action = {
                            type: "Keypress";
                            keys: ["KEY_LEFTMETA", "KEY_LEFTCTRL", "KEY_LEFT"]; // snap window left
                        };
                    },
                    {
                        direction: "Up";
                        mode: "OnRelease";
                        action = {
                            type: "Keypress";
                            keys: ["KEY_LEFTMETA", "KEY_LEFTCTRL", "KEY_UP"]; // workspace up
                        };
                    },
                    {
                        direction: "Down";
                        mode: "OnRelease";
                        action = {
                            type: "Keypress";
                            keys: ["KEY_LEFTMETA", "KEY_LEFTCTRL", "KEY_DOWN"]; // workspace down
                        };
                    }
                );
            };
        }
    );
});

Save the file and exit.


🚀 Step 3: Enable and start the service

1
sudo systemctl enable --now logid

You can check if the daemon started correctly:

1
journalctl -u logid -f

You should see something like:

1
[INFO] Device found: MX Master 3S on /dev/hidraw4

If you see warnings about invalid keycodes, make sure you’re using kernel-level names like KEY_LEFTMETA rather than SUPER.


🧠 Step 4: Verify everything works

Now try the new shortcuts:

Mouse Action Expected Behavior
Forward button Switch workspace up
Back button Switch workspace down
Gesture button (tap) Open workspace overview
Gesture + Left/Right Snap window left or right
Gesture + Up/Down Move between workspaces

If something doesn’t trigger, restart the daemon:

1
sudo systemctl restart logid

🔍 Troubleshooting

  • No response from mouse? Ensure the device name in /etc/logid.cfg matches what appears in logs (journalctl -u logid). Common names include "MX Master 3S" or "Wireless Mouse MX Master 3S".

  • Invalid keycode warnings? Use kernel key names (KEY_LEFTMETA, KEY_LEFTCTRL, etc.) instead of symbolic ones (SUPER, CTRL).

  • Config changes not applied? Restart the service each time you edit the config:

    1
    
    sudo systemctl restart logid
    
This post is licensed under CC BY 4.0 by the author.