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.cfgmatches 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